Skip to content

Releases: 514-labs/moosestack

v0.6.135

16 Oct 10:11
4d09e11

Choose a tag to compare

sanitize variable name for kafka pull (#2863)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Centralizes identifier sanitization and updates Kafka pull,
TypeScript, and Python codegen to generate valid, consistent names with
added tests.
> 
> - **Identifiers (shared)**:
> - Add `utilities/identifiers::sanitize_identifier` and export via
`utilities`.
> - **Kafka Pull (`cli/routines/kafka_pull.rs`)**:
> - Use `sanitize_typescript_identifier`, `map_to_python_class_name`,
and `map_to_python_snake_identifier` for schema-derived names and stream
vars.
> - TS stream consts now use `FooBarBazStream`; PY stream vars now use
`foo_bar_baz_stream`.
>   - Remove local `sanitize_pascal_ident`/`sanitize_py_ident` helpers.
>   - Add tests for dots/hyphens and leading digits.
> - **Python Codegen (`framework/python/generate.rs`)**:
> - Add `map_to_python_snake_identifier` and `map_to_python_class_name`
and use for enums/nested/named tuple/class and table var names.
> - Improve field name aliasing with keyword/identifier checks
(`sanitize_name`, `is_python_keyword`).
>   - Adjust tests (assertions/diagnostics).
> - **TypeScript Codegen (`framework/typescript/generate.rs`)**:
> - Add `sanitize_typescript_identifier` and use for enum/nested type
names and table const names.
>   - Quote property names more robustly; add `is_typescript_keyword`.
> - No API shape changes to emitted models except identifier
normalization.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
29245b3c808f2bd8a462bdc351129a02ead02fa6. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.134

16 Oct 04:15
f866825

Choose a tag to compare

Quickstart example (#2866)

This pull request updates the Moose documentation and code samples to
reflect a shift from the `Foo` model to a new `Bar` model, introduces
documentation for modeling ClickHouse views, and makes supporting
changes to metadata and code imports. The primary focus is on improving
clarity and providing examples for the new model and view functionality.

**Model and Documentation Updates:**

* Replaced the `Foo` model with the new `Bar` model in both TypeScript
(`app/ingest/models.ts`) and Python (`app/ingest/models.py`), updating
field names and types to reflect analyzed text metrics and introducing
an enum `Baz` in Python.
* Updated infrastructure change output examples in the quickstart docs
to reference the new `Bar` table and its fields, replacing previous
references to `Foo`.
[[1]](diffhunk://#diff-804517bbb2ecd91cd4fc282aaa3dd57e0da90d67b0308764d980ae486b64227bL437-R449)
[[2]](diffhunk://#diff-804517bbb2ecd91cd4fc282aaa3dd57e0da90d67b0308764d980ae486b64227bL446-R458)

**View Modeling Documentation:**

* Added a new documentation page `model-view.mdx` describing how to
define and use ClickHouse views with Moose in both TypeScript and
Python, including usage examples and best practices.

**Supporting Metadata and Imports:**

* Added metadata for the new "Modeling Views" documentation page to
`_meta.tsx` to ensure proper navigation and titling.
* Updated TypeScript imports in `app/views/barAggregated.ts` to include
the new `View` class from `@514labs/moose-lib`, supporting the expanded
view modeling functionality.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Updates quickstart to use `Bar` schema (replacing `Foo`), adds a new
“Modeling Views” doc, updates navigation, and includes a minor
TypeScript import tweak.
> 
> - **Docs**:
> - **Quickstart**: Replace `Foo` with `Bar` model in
`apps/framework-docs/src/pages/moose/getting-started/quickstart.mdx`;
update schema fields, Python enum `Baz`, and example infra outputs to
reference `Table Bar` and `newField/new_field`.
> - **OLAP**: Add
`apps/framework-docs/src/pages/moose/olap/model-view.mdx` documenting
`View` usage in TypeScript/Python (overview, basic usage, signature).
> - **Navigation**: Add `"model-view"` entry to
`apps/framework-docs/src/pages/moose/olap/_meta.tsx`.
> - **Templates**:
> - TypeScript: Import `View` alongside `MaterializedView` in
`templates/typescript/app/views/barAggregated.ts`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
15579076b6d216179a1fd40c31585903d96f0673. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.133

16 Oct 01:19
1defb13

Choose a tag to compare

test non declared type in TS (#2865)

the test should be failing before merging main


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Introduces a Drizzle ORM–inferred type/table `NonDeclaredType` in the
TS test template, exports it, updates e2e expected schemas, and adds the
`drizzle-orm` dependency.
> 
> - **TypeScript test template**:
> - Add `ingest/drizzleInfer.ts` defining Drizzle `KafkaCredentials` and
inferred type/table `NonDeclaredType` via `OlapTable` (MergeTree, order
by `id`).
>   - Export `./ingest/drizzleInfer` from `app/index.ts`.
> - **E2E Schemas**:
> - Extend `TYPESCRIPT_TEST_SCHEMAS` with table `NonDeclaredType` (`id
String`, `yes Bool`).
> - **Dependencies**:
>   - Add `drizzle-orm` to `templates/typescript-tests/package.json`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
8c3bde8e272babaea1d787f16ae2fb25c6d66565. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.132

15 Oct 23:20
c37372a

Choose a tag to compare

handle TS types that do not have a declaration (#2864)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Make `toColumns` robust when TS properties lack declarations by
falling back to `checker.getTypeOfSymbol` and guarding wrapper/default
detection with optional chaining.
> 
> - **packages/ts-moose-lib/src/dataModels/typeConvert.ts**:
>   - **`toColumns`**:
> - Handle properties with no declarations by falling back to
`checker.getTypeOfSymbol(prop)`.
> - Use optional chaining on `node?.type` for `Key`/`JWT` wrapping and
default handling.
> - Pass `node?.type` to `tsTypeToDataType` to avoid crashes when
declarations are absent.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
cfccacca69e6cc5486d5d3873582f9ede0ffcc77. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Copilot <[email protected]>

v0.6.131

15 Oct 22:00
1234c15

Choose a tag to compare

add simpleaggregatefunction (#2860)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Adds full-stack support for ClickHouse SimpleAggregateFunction with
parsing, mapping, SQL generation, codegen, library helpers, docs, tests,
and example templates.
> 
> - **OLAP/ClickHouse Core**:
> - Add `SimpleAggregateFunction` to `ClickHouseColumnType`, parser,
mapper, and SQL generator (stringify + tests).
> - Extract `SimpleAggregateFunction` from DB types into column
annotations during `list_tables`.
>   - Update alt client and type parser handling accordingly.
> - **Code Generation**:
> - TypeScript: detect `simpleAggregationFunction` annotation; import
`SimpleAggregated`; emit intersection type `SimpleAggregated<fn, T>`.
> - Python: detect `simpleAggregationFunction`; import/use
`simple_aggregated('fn', T)`.
> - **Libraries**:
> - TS: expose `SimpleAggregated` helper; extend type conversion to emit
`simpleAggregationFunction`.
> - Python: add `simple_aggregated()` helper and
`SimpleAggregateFunction` metadata; include in column annotations.
> - Add comprehensive tests in both TS and Python for conversions and
helpers.
> - **Docs**:
> - Document `SimpleAggregateFunction` usage for TS/Python with
examples.
> - **Templates & E2E**:
> - Add `SimpleAggTest` tables/models to TS/Python templates and
expected schemas.
> - **Misc**:
>   - Tweak CLI prompt message formatting.
> - Preserve additional fields in `TypescriptProject` (`package.json`)
via serde flatten.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
24ad2c86f7202e5db748201cd1d8b1a7b0d97c65. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.130

15 Oct 20:07
1c1b37d

Choose a tag to compare

remove moose managed topics from kafka pull (#2862)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Filters out topics managed by Moose (non-ExternallyManaged) when
pulling Kafka topics by loading the InfrastructureMap and retaining only
external topics.
> 
> - **CLI (kafka pull)**:
> - Load `InfrastructureMap` from user code and derive managed topic set
where `life_cycle != LifeCycle::ExternallyManaged`.
> - Filter fetched Kafka topics to exclude those managed by Moose; only
external topics remain for generation.
>   - Add concise error context when `InfrastructureMap` load fails.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6a44f8443ea25e36ec0209fc9f62792ae017a5d8. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.129

15 Oct 03:48
ff63bf4

Choose a tag to compare

fix: shutdown order of connected clients (#2851)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Gracefully shuts down HTTP servers and sync processes, flushes Kafka
producer, waits for librdkafka destruction, and refactors registries to
support coordinated process cleanup.
> 
> - **Shutdown Orchestration**:
> - Graceful HTTP shutdown with environment-specific timeouts;
user-facing shutdown messages.
> - Flush Kafka producer after HTTP drain; then drop services and add
brief grace periods.
> - In dev, stop workflows and optionally Docker containers; final
shutdown status message.
> - **Kafka/Librdkafka**:
> - Add `rdkafka-sys` and call `rd_kafka_wait_destroyed` with timeout to
await client teardown.
> - Keep/clone `ConfiguredProducer` for post-HTTP flush; import
`Producer` where needed.
> - **Sync Processes (Kafka→CH, Topic→Topic)**:
> - Introduce cancelable tasks via oneshot channels; graceful stop with
timeout and optional producer flush.
> - New structures (`TableSyncProcess`, `TopicSyncProcess`) and
`SyncingProcessesRegistry::stop_all()`.
>   - Loops now `select!` on cancel signals.
> - **Process Registry**:
> - Embed `syncing` registry into `ProcessRegistries`; `stop()` now
halts functions, consumption, orchestration, and syncing.
> - Update constructors and call sites; remove separate syncing registry
threading through APIs.
> - **API/Execution Refactors**:
> - `execute_initial_infra_change` now returns only `ProcessRegistries`;
`execute_online_change` no longer takes syncing registry.
>   - Adjust `routines.rs` and `watcher.rs` to new signatures.
> - **System Utilities**:
> - `kill_child` sends SIGTERM, waits up to 10s, escalates to SIGKILL if
needed; `RestartingProcess::stop` awaits clean exit.
> - **TypeScript Cluster Utils**:
> - On worker shutdown, skip `workerStop` if startup not completed to
avoid errors.
> - **Misc**:
>   - Tweak health/ready checks and log levels; minor cleanups.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
dce6f96c494e0227a6ccdb7e1a50c10e148eab59. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.128

13 Oct 22:49
2ec4217

Choose a tag to compare

feat: add docker compose extension (#2858)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Adds support for merging `docker-compose.dev.override.yaml` into dev
Compose with a usage log, plus unit/e2e tests and documentation.
> 
> - **CLI**:
> - Compose now includes optional override file
`docker-compose.dev.override.yaml` when present via `compose -f ... -f
...` in `utilities/docker.rs`.
>   - Logs when the override file is detected in `cli/routines/dev.rs`.
> - **Testing**:
> - Add e2e test
`apps/framework-cli-e2e/test/docker-compose-override.test.ts` to verify
custom service runs and is reachable.
> - Add Rust unit tests for compose command with/without override in
`utilities/docker.rs`.
> - **Docs**:
> - Extend `apps/framework-docs/src/pages/moose/local-dev.mdx` with a
new section on Docker Compose overrides, examples (Postgres, Grafana,
ClickHouse tweaks), and merge behavior notes.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
bc8a7b9bc66ff115761a20d711ac5559299ab8c0. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.127

13 Oct 17:57
bf77d09

Choose a tag to compare

ENG-976 Update notify package (#2853)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Upgrade `notify` to `8.2.0` in `apps/framework-cli/Cargo.toml`,
updating related lockfile entries (e.g., `inotify`, `mio`,
`windows-sys`) and adding `notify-types`.
> 
> - **Dependencies**:
> - **framework-cli**: Update `notify` to `8.2.0` (keep `macos_kqueue`
feature).
>   - **Transitive updates (Cargo.lock)**:
>     - Bump `inotify` to `0.11.0` (uses `bitflags 2.9.4`).
> - `notify` now depends on `mio 1.0.4` and `windows-sys 0.60.2`; adds
`notify-types 2.0.0`.
>     - `mio` adds a dependency on `log`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e50e49989f12436cbef2619a8436404d9426cccf. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

v0.6.126

13 Oct 09:08
79a9e7c

Choose a tag to compare

support geo types (#2838)

<!-- CURSOR_SUMMARY -->
> [!NOTE]
> Adds full support for ClickHouse geometry types (Point, Ring,
LineString, MultiLineString, Polygon, MultiPolygon) across core types,
mapping, SDKs, templates, tests, and docs.
> 
> - **Core/Infrastructure**:
> - Add geometry `ColumnType`s (`Point`, `Ring`, `LineString`,
`MultiLineString`, `Polygon`, `MultiPolygon`) with display/serde/proto
mapping and ClickHouse type mapping/parsing (`mapper.rs`, `model.rs`,
`queries.rs`, `type_parser.rs`).
> - Update Kafka→ClickHouse sync and passthrough validators to handle
geometry JSON shapes.
>   - Extend streaming codegen defaults for geometry fields.
>   - Protobuf: add geometry enums to `SimpleColumnType`.
> - **TypeScript SDK (`ts-moose-lib`)**:
> - Introduce geometry helper types
(`ClickHousePoint/Ring/LineString/MultiLineString/Polygon/MultiPolygon`)
and export them.
> - Type conversion validates geometry shapes; utilities handle tuple
stripping.
> - **Generators**:
>   - TS generator: map geometry to helper types and import them.
> - Python generator: map geometry to `Point/Ring/...` and import from
`moose_lib`.
> - **Python lib (`py-moose-lib`)**:
> - Define geometry type aliases and validate annotated shapes in
`py_type_to_column_type`.
> - **E2E/Templates/Tests**:
> - Add `GeoTypes` models/pipelines (TS/PY) and ingestion tests; add
schema expectations; add geo payload utilities.
> - **Docs**:
> - Document geometry types in Supported Types; remove “unsupported”
note from ClickHouse importing guide.
> - **Misc**:
> - Remove deprecated framework SDK ingest module export; minor
formatting/test tidy-ups.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
38a8aaf288a706c2f902ddffc46151353c563197. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->