Releases: 514-labs/moosestack
Releases · 514-labs/moosestack
v0.6.135
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
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
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
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
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
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
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
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
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
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 -->