From cbab8e60188ebdf3624af985b0706f63e030d8e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 09:47:26 +0000 Subject: [PATCH] chore: version packages --- .changeset/adr-0033-auto-app-package.md | 13 --- .../adr-0033-blueprint-openai-strict.md | 14 --- .changeset/adr-0033-list-drafts.md | 15 --- .changeset/adr-0033-package-consolidation.md | 34 ------ .changeset/adr-0033-publish-package-drafts.md | 22 ---- .changeset/ai-view-shape-binds-and-renders.md | 13 --- .changeset/fix-1530-date-formula-cel.md | 15 --- .changeset/get-metadata-schema-tool.md | 9 -- .changeset/normalize-view-write-path.md | 11 -- .../objectstack-dev-persist-by-default.md | 12 --- ...sh-object-table-sync-and-kanban-groupby.md | 13 --- .changeset/seed-reference-natural-key.md | 21 ---- apps/account/CHANGELOG.md | 2 + apps/account/package.json | 2 +- examples/app-crm/CHANGELOG.md | 13 +++ examples/app-crm/package.json | 2 +- examples/app-showcase/CHANGELOG.md | 23 ++++ examples/app-showcase/package.json | 2 +- examples/app-todo/CHANGELOG.md | 24 +++++ examples/app-todo/package.json | 2 +- packages/adapters/express/CHANGELOG.md | 10 ++ packages/adapters/express/package.json | 2 +- packages/adapters/fastify/CHANGELOG.md | 10 ++ packages/adapters/fastify/package.json | 2 +- packages/adapters/hono/CHANGELOG.md | 12 +++ packages/adapters/hono/package.json | 2 +- packages/adapters/nestjs/CHANGELOG.md | 10 ++ packages/adapters/nestjs/package.json | 2 +- packages/adapters/nextjs/CHANGELOG.md | 10 ++ packages/adapters/nextjs/package.json | 2 +- packages/adapters/nuxt/CHANGELOG.md | 10 ++ packages/adapters/nuxt/package.json | 2 +- packages/adapters/sveltekit/CHANGELOG.md | 10 ++ packages/adapters/sveltekit/package.json | 2 +- packages/cli/CHANGELOG.md | 68 ++++++++++++ packages/cli/package.json | 2 +- packages/client-react/CHANGELOG.md | 11 ++ packages/client-react/package.json | 2 +- packages/client/CHANGELOG.md | 10 ++ packages/client/package.json | 2 +- .../connectors/connector-mcp/CHANGELOG.md | 10 ++ .../connectors/connector-mcp/package.json | 2 +- .../connectors/connector-openapi/CHANGELOG.md | 10 ++ .../connectors/connector-openapi/package.json | 2 +- .../connectors/connector-rest/CHANGELOG.md | 10 ++ .../connectors/connector-rest/package.json | 2 +- .../connectors/connector-slack/CHANGELOG.md | 10 ++ .../connectors/connector-slack/package.json | 2 +- packages/console/CHANGELOG.md | 2 + packages/console/package.json | 2 +- packages/core/CHANGELOG.md | 9 ++ packages/core/package.json | 2 +- packages/create-objectstack/CHANGELOG.md | 2 + packages/create-objectstack/package.json | 2 +- packages/formula/CHANGELOG.md | 21 ++++ packages/formula/package.json | 2 +- packages/metadata-core/CHANGELOG.md | 9 ++ packages/metadata-core/package.json | 2 +- packages/metadata-fs/CHANGELOG.md | 6 ++ packages/metadata-fs/package.json | 2 +- packages/metadata/CHANGELOG.md | 14 +++ packages/metadata/package.json | 2 +- packages/objectql/CHANGELOG.md | 88 +++++++++++++++ packages/objectql/package.json | 2 +- packages/observability/CHANGELOG.md | 9 ++ packages/observability/package.json | 2 +- packages/platform-objects/CHANGELOG.md | 10 ++ packages/platform-objects/package.json | 2 +- packages/plugins/driver-memory/CHANGELOG.md | 10 ++ packages/plugins/driver-memory/package.json | 2 +- packages/plugins/driver-mongodb/CHANGELOG.md | 10 ++ packages/plugins/driver-mongodb/package.json | 2 +- packages/plugins/driver-sql/CHANGELOG.md | 10 ++ packages/plugins/driver-sql/package.json | 2 +- .../plugins/driver-sqlite-wasm/CHANGELOG.md | 11 ++ .../plugins/driver-sqlite-wasm/package.json | 2 +- packages/plugins/embedder-openai/CHANGELOG.md | 9 ++ packages/plugins/embedder-openai/package.json | 2 +- .../plugins/knowledge-memory/CHANGELOG.md | 11 ++ .../plugins/knowledge-memory/package.json | 2 +- .../plugins/knowledge-ragflow/CHANGELOG.md | 11 ++ .../plugins/knowledge-ragflow/package.json | 2 +- .../plugins/plugin-approvals/CHANGELOG.md | 14 +++ .../plugins/plugin-approvals/package.json | 2 +- packages/plugins/plugin-audit/CHANGELOG.md | 11 ++ packages/plugins/plugin-audit/package.json | 2 +- packages/plugins/plugin-auth/CHANGELOG.md | 12 +++ packages/plugins/plugin-auth/package.json | 2 +- packages/plugins/plugin-dev/CHANGELOG.md | 24 +++++ packages/plugins/plugin-dev/package.json | 2 +- packages/plugins/plugin-email/CHANGELOG.md | 11 ++ packages/plugins/plugin-email/package.json | 2 +- .../plugins/plugin-hono-server/CHANGELOG.md | 11 ++ .../plugins/plugin-hono-server/package.json | 2 +- .../plugins/plugin-mcp-server/CHANGELOG.md | 11 ++ .../plugins/plugin-mcp-server/package.json | 2 +- packages/plugins/plugin-msw/CHANGELOG.md | 17 +++ packages/plugins/plugin-msw/package.json | 2 +- .../plugins/plugin-org-scoping/CHANGELOG.md | 11 ++ .../plugins/plugin-org-scoping/package.json | 2 +- packages/plugins/plugin-reports/CHANGELOG.md | 11 ++ packages/plugins/plugin-reports/package.json | 2 +- packages/plugins/plugin-security/CHANGELOG.md | 11 ++ packages/plugins/plugin-security/package.json | 2 +- packages/plugins/plugin-sharing/CHANGELOG.md | 16 +++ packages/plugins/plugin-sharing/package.json | 2 +- .../plugin-trigger-record-change/CHANGELOG.md | 10 ++ .../plugin-trigger-record-change/package.json | 2 +- .../plugin-trigger-schedule/CHANGELOG.md | 10 ++ .../plugin-trigger-schedule/package.json | 2 +- packages/plugins/plugin-webhooks/CHANGELOG.md | 11 ++ packages/plugins/plugin-webhooks/package.json | 2 +- packages/rest/CHANGELOG.md | 22 ++++ packages/rest/package.json | 2 +- packages/runtime/CHANGELOG.md | 102 ++++++++++++++++++ packages/runtime/package.json | 2 +- packages/services/service-ai/CHANGELOG.md | 87 +++++++++++++++ packages/services/service-ai/package.json | 2 +- .../services/service-analytics/CHANGELOG.md | 10 ++ .../services/service-analytics/package.json | 2 +- .../services/service-automation/CHANGELOG.md | 12 +++ .../services/service-automation/package.json | 2 +- packages/services/service-cache/CHANGELOG.md | 11 ++ packages/services/service-cache/package.json | 2 +- .../service-cluster-redis/CHANGELOG.md | 10 ++ .../service-cluster-redis/package.json | 2 +- .../services/service-cluster/CHANGELOG.md | 10 ++ .../services/service-cluster/package.json | 2 +- .../services/service-datasource/CHANGELOG.md | 10 ++ .../services/service-datasource/package.json | 2 +- packages/services/service-feed/CHANGELOG.md | 10 ++ packages/services/service-feed/package.json | 2 +- packages/services/service-i18n/CHANGELOG.md | 10 ++ packages/services/service-i18n/package.json | 2 +- packages/services/service-job/CHANGELOG.md | 11 ++ packages/services/service-job/package.json | 2 +- .../services/service-knowledge/CHANGELOG.md | 10 ++ .../services/service-knowledge/package.json | 2 +- .../services/service-messaging/CHANGELOG.md | 10 ++ .../services/service-messaging/package.json | 2 +- .../services/service-package/CHANGELOG.md | 38 +++++++ .../services/service-package/package.json | 2 +- packages/services/service-queue/CHANGELOG.md | 11 ++ packages/services/service-queue/package.json | 2 +- .../services/service-realtime/CHANGELOG.md | 11 ++ .../services/service-realtime/package.json | 2 +- .../services/service-settings/CHANGELOG.md | 12 +++ .../services/service-settings/package.json | 2 +- .../services/service-storage/CHANGELOG.md | 11 ++ .../services/service-storage/package.json | 2 +- packages/spec/CHANGELOG.md | 41 +++++++ packages/spec/package.json | 2 +- packages/types/CHANGELOG.md | 9 ++ packages/types/package.json | 2 +- packages/vscode-objectstack/CHANGELOG.md | 2 + packages/vscode-objectstack/package.json | 2 +- 156 files changed, 1228 insertions(+), 264 deletions(-) delete mode 100644 .changeset/adr-0033-auto-app-package.md delete mode 100644 .changeset/adr-0033-blueprint-openai-strict.md delete mode 100644 .changeset/adr-0033-list-drafts.md delete mode 100644 .changeset/adr-0033-package-consolidation.md delete mode 100644 .changeset/adr-0033-publish-package-drafts.md delete mode 100644 .changeset/ai-view-shape-binds-and-renders.md delete mode 100644 .changeset/fix-1530-date-formula-cel.md delete mode 100644 .changeset/get-metadata-schema-tool.md delete mode 100644 .changeset/normalize-view-write-path.md delete mode 100644 .changeset/objectstack-dev-persist-by-default.md delete mode 100644 .changeset/publish-object-table-sync-and-kanban-groupby.md delete mode 100644 .changeset/seed-reference-natural-key.md diff --git a/.changeset/adr-0033-auto-app-package.md b/.changeset/adr-0033-auto-app-package.md deleted file mode 100644 index 88fa092bb..000000000 --- a/.changeset/adr-0033-auto-app-package.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@objectstack/service-ai": minor ---- - -feat(ai): zero-package app building — auto-home a blueprint's app in a writable package - -When the AI blueprint flow builds an **app**, it now silently gives that app a writable "home" package (one app ⇒ one `app.` package) and binds every drafted artifact (objects, views, dashboards, the app) to it — so a business user never has to create a "package" to start building (the mainstream AI-builder UX: Power Apps' default solution, Salesforce orgs). Packaging/versioning stays an opt-in, later concern. - -- `apply_blueprint` ensures the app package up front (idempotent: reuse if it exists, else create via the runtime `package` service) and threads its `packageId` through every `stageDraft` → `sys_metadata.package_id`. The result envelope gains `package: { id, name, created }`. -- The `package` service is resolved **lazily** (per call, not at plugin-init time) so it works regardless of service-init order and picks up the opt-in `marketplace` capability when present. -- **Best-effort, non-fatal:** if no `package` service is wired, drafting proceeds package-less exactly as before — the build never fails on packaging. - -Scope/caveats: this stamps the *legacy* `sys_metadata.package_id` (a real grouping + the foundation for later version/export/promote), not the sealed `sys_package_version` model — full cross-environment promotion and Studio package-selector visibility depend on finishing the runtime package subsystem (ADR-0027), tracked separately. (The showcase example enables the `marketplace` capability to exercise this.) diff --git a/.changeset/adr-0033-blueprint-openai-strict.md b/.changeset/adr-0033-blueprint-openai-strict.md deleted file mode 100644 index 319ab77ae..000000000 --- a/.changeset/adr-0033-blueprint-openai-strict.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@objectstack/spec": patch -"@objectstack/service-ai": patch ---- - -fix(ai): make ADR-0033 blueprint authoring work with OpenAI structured outputs - -Two bugs surfaced by a live end-to-end run (Studio chat → blueprint → draft → review → publish) against a real model (OpenAI via the Vercel AI Gateway) — both invisible to the existing unit tests: - -1. **`propose_blueprint` failed against OpenAI strict structured outputs.** `SolutionBlueprintSchema` uses optional fields and a free-form `seedData` record; OpenAI's strict mode requires every property listed in `required` and rejects open `additionalProperties`, so `generateObject` errored (`'required' … must include every key in properties`) and the agent silently fell back to free-text. Adds `SolutionBlueprintStrictSchema` — a strict-compatible mirror (optional → nullable, no `z.record`) used **only** as the `generateObject` output contract. The lenient `SolutionBlueprintSchema` (and every existing consumer/test) is unchanged; the blueprint tools strip the `null`s the strict contract emits so downstream stays clean. - -2. **Tool-only assistant turns failed to persist.** `ai_messages.content` is required, but an assistant turn that only calls a tool has no text, so the insert failed, the turn was dropped, and the next turn lost context (the agent re-proposed instead of applying the confirmed blueprint). `ObjectQLConversationService.addMessage` now synthesizes a readable placeholder from the tool names (`(called propose_blueprint)`) plus a defensive non-empty fallback. - -With both fixes the full plan-first loop runs end-to-end on OpenAI models: propose → confirm → batch-draft objects/views/dashboards/app → review/diff → publish. diff --git a/.changeset/adr-0033-list-drafts.md b/.changeset/adr-0033-list-drafts.md deleted file mode 100644 index 699f28a9e..000000000 --- a/.changeset/adr-0033-list-drafts.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@objectstack/objectql": minor -"@objectstack/rest": patch -"@objectstack/runtime": patch ---- - -feat(metadata): expose pending DRAFT metadata (ADR-0033 draft discoverability) - -AI-authored metadata lands as drafts (`sys_metadata` rows with `state='draft'`, bound to an app package), but the only list path — `getMetaItems` — reads the active registry, so drafts were invisible: a just-built app package looked empty and there was no "pending changes" surface. - -- `SysMetadataRepository.listDrafts({type?, packageId?})` lists draft rows (mirrors `list()` but scoped to `state='draft'`, optionally narrowed by package), returning a light header projection (no body) with `packageId`. -- `protocol.listDrafts({packageId?, type?, organizationId?})` exposes it over the overlay repo. -- `GET /api/v1/meta/_drafts?packageId=&type=` surfaces it to the console. Registered in the REST server before the greedy `/meta/:type` route (and mirrored in the dispatcher) so `_drafts` is never captured as a metadata type name. - -Read-only; no behavior change to existing list/publish paths. Powers the upcoming Studio "drafts/pending changes" view and draft-aware package contents. diff --git a/.changeset/adr-0033-package-consolidation.md b/.changeset/adr-0033-package-consolidation.md deleted file mode 100644 index e9cf44cbb..000000000 --- a/.changeset/adr-0033-package-consolidation.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -"@objectstack/objectql": minor -"@objectstack/runtime": patch -"@objectstack/service-package": patch -"@objectstack/service-ai": patch ---- - -feat(packages): consolidate the package subsystem so AI-built app packages surface in Studio - -The package subsystem was split across two stores that never met: the in-memory -`SchemaRegistry` (what the dispatcher's `/api/v1/packages` list/detail and -`getMetaItems({type:'package'})` read — i.e. Studio's package selector) and the durable -`sys_packages` table (where the AI's auto app package, and any `package`-service publish, -were written). Nothing reconciled the two, so an AI-created `app.` package never -appeared in Studio. - -This unifies them around one write primitive and one read source: - -- **`protocol.installPackage`** is now implemented (it was declared-but-missing). It is the - single canonical write path: it registers the package in the in-memory registry **and** - best-effort persists it to `sys_packages` via the `package` service. Non-fatal when no - `package` service is wired (registry write still succeeds). -- **Dispatcher `POST /api/v1/packages`** routes through `protocol.installPackage` (falling - back to the bare registry write when the protocol is unavailable), so HTTP installs are - durable too. -- **`@objectstack/service-package`** reconciles `sys_packages` back into the registry on - boot, without clobbering filesystem-registered packages — so persisted packages survive a - restart and stay visible in the registry-backed read paths. -- **`@objectstack/service-ai`** `apply_blueprint` now homes an app via - `protocol.installPackage` (falling back to the legacy `package`-service publish), so the - app package lands where Studio reads it. - -Still the *legacy* `package_id` plane — sealed `sys_package_version` versioning and -cross-environment promotion remain ADR-0027 follow-ups. diff --git a/.changeset/adr-0033-publish-package-drafts.md b/.changeset/adr-0033-publish-package-drafts.md deleted file mode 100644 index e6aef18a0..000000000 --- a/.changeset/adr-0033-publish-package-drafts.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -"@objectstack/objectql": minor -"@objectstack/runtime": patch ---- - -feat(metadata): publish a whole app's drafts in one shot (ADR-0033) - -After an AI builds an app, its metadata is drafted (bound to an app package) and -had to be published one item at a time. The package-level `POST /packages/:id/publish` -needs the `metadata` service (503 when absent, e.g. the showcase) and reads the -in-memory registry, not the drafts. - -- `protocol.publishPackageDrafts({ packageId })` promotes every `sys_metadata` - draft row bound to the package to active by reusing the per-item - `publishMetaItem` primitive (overridable/lock guards + runtime registry - refresh). Per-item failures are collected, not fatal. No `metadata`-service - dependency. -- `POST /api/v1/packages/:id/publish-drafts` exposes it (distinct from the - registry-based `/publish`), returning `{ success, publishedCount, failedCount, published, failed }`. - -Verified live: an AI-built `app.asset_management` (4 drafts) published in one call — -all 4 promoted to active, drafts cleared, draft objects became queryable. diff --git a/.changeset/ai-view-shape-binds-and-renders.md b/.changeset/ai-view-shape-binds-and-renders.md deleted file mode 100644 index b0143df55..000000000 --- a/.changeset/ai-view-shape-binds-and-renders.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@objectstack/service-ai': patch ---- - -fix(ai): AI-authored views now bind to their object and render (kanban as a board, not a list) - -An AI-built app's views (including kanban) appeared only as the default list and never as selectable tabs. Diagnosis (vs the working showcase kanban) showed it was a **metadata-shape** bug in the blueprint's `viewBody`, not the renderer or skill: it emitted a bare `{ list: {…} }` fragment instead of the canonical view record. Three things were missing/wrong: - -- no top-level **`name`** → `getMetaItems` only surfaces overlay rows whose body has `name`, so every AI view was silently dropped from the object's view list; -- no top-level **`object`** / **`viewKind`** → the console couldn't bind the view to its object; -- the view name wasn't **`.`**-prefixed (the convention the console keys view tabs off). - -`viewBody` now emits `{ name: '.', object, viewKind: 'list'|'form', config: }`, matching the shape the showcase's own views use (verified against the real `ViewSchema`). End-to-end verified: an AI-built kanban app surfaces 看板 + 列表 as tabs and renders the kanban as a board grouped by status. diff --git a/.changeset/fix-1530-date-formula-cel.md b/.changeset/fix-1530-date-formula-cel.md deleted file mode 100644 index 998f56f41..000000000 --- a/.changeset/fix-1530-date-formula-cel.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@objectstack/formula": patch ---- - -fix(formula): hydrate ISO date/datetime strings on CEL `no such overload` fault (#1530) - -Date-typed formula fields and date predicates always evaluated to `null`: -`Field.date`/`Field.datetime` serialize to ISO strings, and cel-js compared the -raw string against the `google.protobuf.Timestamp` from `today()`/`now()`/ -`daysFromNow()`, raising `no such overload` (swallowed to null). The existing -numeric-string fault-retry (#1534) is now extended to also coerce strict ISO-8601 -date/date-time strings to `Date` before retrying once, fixing every caller -(formula fields, flow conditions, validation/workflow predicates). Hydration runs -only after a fault, so clean expressions are never re-interpreted and genuine -non-temporal strings still fault loudly. diff --git a/.changeset/get-metadata-schema-tool.md b/.changeset/get-metadata-schema-tool.md deleted file mode 100644 index 39df253aa..000000000 --- a/.changeset/get-metadata-schema-tool.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@objectstack/service-ai': minor ---- - -feat(ai): add `get_metadata_schema` tool so the agent can read a type's contract before authoring - -The metadata-authoring agent never sees the real spec Zod schemas — it works against a simplified blueprint or sends a free-form `definition` and only learns the true shape from post-hoc validation errors. For complex types (view, dashboard, flow, …) that means guessing, e.g. a kanban view's required `kanban: { groupByField, columns }` block. - -New `get_metadata_schema` tool returns the JSON Schema (via Zod v4's `toJSONSchema`) derived from the SAME live schema `saveMetaItem` validates against (`getMetadataTypeSchema`). The `metadata_authoring` skill now instructs the agent to call it before authoring a non-trivial type, so it conforms first time instead of trial-and-error. Read-only; resolves plural type names; returns a graceful error for types that can't be serialized (e.g. `object`, which the dedicated `create_object` tools cover anyway). diff --git a/.changeset/normalize-view-write-path.md b/.changeset/normalize-view-write-path.md deleted file mode 100644 index 628425959..000000000 --- a/.changeset/normalize-view-write-path.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@objectstack/objectql': patch ---- - -fix(metadata): stamp a top-level `name` on `view` bodies at the write path so AI/hand-authored views surface - -`getMetaItems` only overlays a `sys_metadata` row when its parsed body has a top-level `name`. Some view producers — notably loose `{ list: }` / `{ form: … }` fragments that AI tools and hand-authoring emit — pass schema validation but carry no top-level `name`, so the view was silently dropped from the object's view list and never appeared as a tab ("validates ≠ surfaces"). - -`saveMetaItem` now guarantees a top-level `name` on every view body at the single write chokepoint, BEFORE validation + persistence, so a nameless view is auto-corrected regardless of which authoring path produced it. It deliberately does NOT reshape the document: both the `defineView` container form (`{ list, listViews, … }`, expanded by the loader) and the `{ name, object, viewKind, config }` record form are valid and the console consumes both — reshaping a container into a record risks producing an invalid record (e.g. a non-`.` name) and drops Studio-only fields (`isPinned`, `sortOrder`, …). Exported as `normalizeViewMetadata` and unit-tested. - -(Note for follow-up: the `view` metadata schema is itself a permissive union — it accepts an unknown `viewKind`, a kanban config missing `groupByField`, even `{}`. Tightening it correctly requires first consolidating the four legitimate view shapes — record / container / flat list / flat form — and is a separate spec change.) diff --git a/.changeset/objectstack-dev-persist-by-default.md b/.changeset/objectstack-dev-persist-by-default.md deleted file mode 100644 index 5f3ea7982..000000000 --- a/.changeset/objectstack-dev-persist-by-default.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -'@objectstack/cli': minor -'@objectstack/example-showcase': patch ---- - -fix(cli): `objectstack dev` persists data by default (no more `:memory:` wipe on restart) - -`objectstack dev` historically fell back to a `:memory:` SQLite database when no `--database` / `OS_DATABASE_URL` was given, so **every restart silently wiped all data and AI-authored metadata** — you'd build an app, restart, and it would be gone, which makes local app-building unusable. - -`dev` now defaults to a persistent, project-anchored SQLite file at `/.objectstack/data/dev.db` (gitignored, per-project). Existing opt-outs are unchanged and take precedence: `--fresh` (ephemeral temp DB), `--database `, `OS_DATABASE_URL`/`DATABASE_URL`, or an explicit in-memory driver (`--database-driver memory` / `OS_DATABASE_DRIVER=memory`). Resolution is extracted into the testable `resolveDefaultDevDbUrl()` helper. - -The **app-showcase** example drops its explicit `:memory:` datasource override (which would otherwise route data back to memory and defeat the new default), so it persists across restarts out of the box. diff --git a/.changeset/publish-object-table-sync-and-kanban-groupby.md b/.changeset/publish-object-table-sync-and-kanban-groupby.md deleted file mode 100644 index 2c93b9b42..000000000 --- a/.changeset/publish-object-table-sync-and-kanban-groupby.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@objectstack/objectql': minor -'@objectstack/spec': minor -'@objectstack/service-ai': minor ---- - -fix: AI-built apps are usable immediately — sync new object tables on publish + emit valid kanban config - -Two gaps found by end-to-end testing of an AI-built app: - -1. **A freshly-published object couldn't accept records until a server restart.** Publishing a drafted object registered it in the in-memory registry but never created its physical table (table sync only ran at boot), so inserts failed with `object_not_found` ("no such table"). Added `ObjectQL.syncObjectSchema(name)` (a targeted, idempotent single-object schema sync) and call it from the publish paths (`protocol.publishMetaItem` and `saveMetaItem` mode:'publish', via `ensureObjectStorage`). Best-effort + non-fatal. New objects are now CRUD-able the moment they're published. - -2. **AI-generated kanban views rendered as plain lists** (and sometimes failed validation). The blueprint `viewBody` emitted `list.type:'kanban'` with no `kanban` config; `KanbanConfigSchema` requires `groupByField` **and** `columns`. Added an optional `groupBy` to the blueprint view schema (lenient + strict) and have `apply_blueprint` set `list.kanban = { groupByField, columns }` — using the view's explicit `groupBy` when given, else inferring the object's first `select` field. AI-built kanban views now validate, publish, and carry a real group-by field. diff --git a/.changeset/seed-reference-natural-key.md b/.changeset/seed-reference-natural-key.md deleted file mode 100644 index 762e7628b..000000000 --- a/.changeset/seed-reference-natural-key.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -"@objectstack/spec": patch -"@objectstack/runtime": patch ---- - -fix(seed): reject object-wrapped relationship references and constrain them at compile time - -Seed datasets resolve `lookup` / `master_detail` references by matching the value -against the target record's externalId — so the value must be the plain natural-key -string (e.g. `account: 'Acme Corp'`), never a wrapper object like -`account: { externalId: 'Acme Corp' }`. The wrapper was silently skipped by the -loader, fell through unresolved, and reached the SQL driver as a non-bindable value — -masked on an always-empty `:memory:` DB but crashing on a persistent one with -"SQLite3 can only bind numbers, strings, bigints, buffers, and null" once seeds re-ran -as updates. - -- `defineDataset` now constrains reference fields to `string | null` at compile time - (derived from each field's `type`), so the object form is a type error. -- `SeedLoaderService` now fails loudly with an actionable message (and drops the value - instead of handing it to the driver) when a reference is an object — consistent - behavior across all drivers, no longer silently masked. diff --git a/apps/account/CHANGELOG.md b/apps/account/CHANGELOG.md index b06b2c532..5bca340e5 100644 --- a/apps/account/CHANGELOG.md +++ b/apps/account/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/account +## 7.8.0 + ## 7.7.0 ## 7.6.0 diff --git a/apps/account/package.json b/apps/account/package.json index d984431bb..9b2016b40 100644 --- a/apps/account/package.json +++ b/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "7.7.0", + "version": "7.8.0", "description": "ObjectStack Account - End-user account & organization self-service portal", "license": "Apache-2.0", "type": "module", diff --git a/examples/app-crm/CHANGELOG.md b/examples/app-crm/CHANGELOG.md index f5fda733c..33313b8f2 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/example-crm +## 4.0.36 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/runtime@7.8.0 + ## 4.0.35 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index 6130d7012..31cd1a6d8 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.35", + "version": "4.0.36", "description": "Minimal CRM example — a smoke-test workspace that exercises the metadata loading pipeline (objects → views → app → dashboard → hook → flow → seed). For a full-featured enterprise CRM see https://github.com/objectstack-ai/hotcrm.", "license": "Apache-2.0", "private": true, diff --git a/examples/app-showcase/CHANGELOG.md b/examples/app-showcase/CHANGELOG.md index 3056bb19c..93f0bd0c5 100644 --- a/examples/app-showcase/CHANGELOG.md +++ b/examples/app-showcase/CHANGELOG.md @@ -1,5 +1,28 @@ # @objectstack/example-showcase +## 0.1.6 + +### Patch Changes + +- 6b60068: fix(cli): `objectstack dev` persists data by default (no more `:memory:` wipe on restart) + + `objectstack dev` historically fell back to a `:memory:` SQLite database when no `--database` / `OS_DATABASE_URL` was given, so **every restart silently wiped all data and AI-authored metadata** — you'd build an app, restart, and it would be gone, which makes local app-building unusable. + + `dev` now defaults to a persistent, project-anchored SQLite file at `/.objectstack/data/dev.db` (gitignored, per-project). Existing opt-outs are unchanged and take precedence: `--fresh` (ephemeral temp DB), `--database `, `OS_DATABASE_URL`/`DATABASE_URL`, or an explicit in-memory driver (`--database-driver memory` / `OS_DATABASE_DRIVER=memory`). Resolution is extracted into the testable `resolveDefaultDevDbUrl()` helper. + + The **app-showcase** example drops its explicit `:memory:` datasource override (which would otherwise route data back to memory and defeat the new default), so it persists across restarts out of the box. + +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/runtime@7.8.0 + - @objectstack/connector-rest@7.8.0 + - @objectstack/connector-slack@7.8.0 + ## 0.1.5 ### Patch Changes diff --git a/examples/app-showcase/package.json b/examples/app-showcase/package.json index c3ced2605..79f2218c8 100644 --- a/examples/app-showcase/package.json +++ b/examples/app-showcase/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-showcase", - "version": "0.1.5", + "version": "0.1.6", "description": "Kitchen-sink showcase workspace — exercises every metadata type, every view type, every chart type, and the major end-to-end capability chains (security, automation, AI). Built for demonstration, debugging, and coverage-driven verification.", "license": "Apache-2.0", "private": true, diff --git a/examples/app-todo/CHANGELOG.md b/examples/app-todo/CHANGELOG.md index ffaacb93e..1a83ccbd9 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,29 @@ # @objectstack/example-todo +## 4.0.36 + +### Patch Changes + +- Updated dependencies [6b82e68] +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [328a7c4] +- Updated dependencies [4888ea2] +- Updated dependencies [6fc2678] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/service-ai@7.8.0 + - @objectstack/spec@7.8.0 + - @objectstack/objectql@7.8.0 + - @objectstack/runtime@7.8.0 + - @objectstack/client@7.8.0 + - @objectstack/metadata@7.8.0 + - @objectstack/driver-sqlite-wasm@7.8.0 + - @objectstack/knowledge-memory@7.8.0 + - @objectstack/service-knowledge@7.8.0 + ## 4.0.35 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index f8dcb9179..a59f1742d 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@example/app-todo", - "version": "4.0.35", + "version": "4.0.36", "description": "Example Todo App using ObjectStack Protocol", "license": "Apache-2.0", "private": true, diff --git a/packages/adapters/express/CHANGELOG.md b/packages/adapters/express/CHANGELOG.md index 1c0624834..fab6582e6 100644 --- a/packages/adapters/express/CHANGELOG.md +++ b/packages/adapters/express/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/express +## 7.8.0 + +### Patch Changes + +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [424ab26] + - @objectstack/runtime@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/adapters/express/package.json b/packages/adapters/express/package.json index fb54c56a5..00efd1616 100644 --- a/packages/adapters/express/package.json +++ b/packages/adapters/express/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/express", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/fastify/CHANGELOG.md b/packages/adapters/fastify/CHANGELOG.md index 48e302ed3..2a5577e9b 100644 --- a/packages/adapters/fastify/CHANGELOG.md +++ b/packages/adapters/fastify/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/fastify +## 7.8.0 + +### Patch Changes + +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [424ab26] + - @objectstack/runtime@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/adapters/fastify/package.json b/packages/adapters/fastify/package.json index e27d978a3..f432ceb86 100644 --- a/packages/adapters/fastify/package.json +++ b/packages/adapters/fastify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/fastify", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/hono/CHANGELOG.md b/packages/adapters/hono/CHANGELOG.md index e2e1d271a..351eec0f5 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/hono +## 7.8.0 + +### Patch Changes + +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [424ab26] + - @objectstack/runtime@7.8.0 + - @objectstack/plugin-hono-server@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index d17895bd1..e5a29da26 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nestjs/CHANGELOG.md b/packages/adapters/nestjs/CHANGELOG.md index cce8a2d9b..5f7cad490 100644 --- a/packages/adapters/nestjs/CHANGELOG.md +++ b/packages/adapters/nestjs/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/nestjs +## 7.8.0 + +### Patch Changes + +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [424ab26] + - @objectstack/runtime@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/adapters/nestjs/package.json b/packages/adapters/nestjs/package.json index 4297ae986..aed7a769c 100644 --- a/packages/adapters/nestjs/package.json +++ b/packages/adapters/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nestjs", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nextjs/CHANGELOG.md b/packages/adapters/nextjs/CHANGELOG.md index 6e1a07a93..547bf3459 100644 --- a/packages/adapters/nextjs/CHANGELOG.md +++ b/packages/adapters/nextjs/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/nextjs +## 7.8.0 + +### Patch Changes + +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [424ab26] + - @objectstack/runtime@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/adapters/nextjs/package.json b/packages/adapters/nextjs/package.json index 67a91b903..d7dc9c37d 100644 --- a/packages/adapters/nextjs/package.json +++ b/packages/adapters/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nextjs", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/nuxt/CHANGELOG.md b/packages/adapters/nuxt/CHANGELOG.md index 5547e14a3..12f90271a 100644 --- a/packages/adapters/nuxt/CHANGELOG.md +++ b/packages/adapters/nuxt/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/nuxt +## 7.8.0 + +### Patch Changes + +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [424ab26] + - @objectstack/runtime@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/adapters/nuxt/package.json b/packages/adapters/nuxt/package.json index af844a4fb..8ca612f3d 100644 --- a/packages/adapters/nuxt/package.json +++ b/packages/adapters/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nuxt", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/adapters/sveltekit/CHANGELOG.md b/packages/adapters/sveltekit/CHANGELOG.md index daf079642..d8b4b39bb 100644 --- a/packages/adapters/sveltekit/CHANGELOG.md +++ b/packages/adapters/sveltekit/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/sveltekit +## 7.8.0 + +### Patch Changes + +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [424ab26] + - @objectstack/runtime@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/adapters/sveltekit/package.json b/packages/adapters/sveltekit/package.json index d4764d71b..cd4d5e618 100644 --- a/packages/adapters/sveltekit/package.json +++ b/packages/adapters/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sveltekit", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index ae4e879b9..f6c73cc8c 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,73 @@ # @objectstack/cli +## 7.8.0 + +### Minor Changes + +- 6b60068: fix(cli): `objectstack dev` persists data by default (no more `:memory:` wipe on restart) + + `objectstack dev` historically fell back to a `:memory:` SQLite database when no `--database` / `OS_DATABASE_URL` was given, so **every restart silently wiped all data and AI-authored metadata** — you'd build an app, restart, and it would be gone, which makes local app-building unusable. + + `dev` now defaults to a persistent, project-anchored SQLite file at `/.objectstack/data/dev.db` (gitignored, per-project). Existing opt-outs are unchanged and take precedence: `--fresh` (ephemeral temp DB), `--database `, `OS_DATABASE_URL`/`DATABASE_URL`, or an explicit in-memory driver (`--database-driver memory` / `OS_DATABASE_DRIVER=memory`). Resolution is extracted into the testable `resolveDefaultDevDbUrl()` helper. + + The **app-showcase** example drops its explicit `:memory:` datasource override (which would otherwise route data back to memory and defeat the new default), so it persists across restarts out of the box. + +### Patch Changes + +- Updated dependencies [6b82e68] +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [328a7c4] +- Updated dependencies [f01f9fa] +- Updated dependencies [4888ea2] +- Updated dependencies [6fc2678] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/service-ai@7.8.0 + - @objectstack/spec@7.8.0 + - @objectstack/objectql@7.8.0 + - @objectstack/rest@7.8.0 + - @objectstack/runtime@7.8.0 + - @objectstack/service-package@7.8.0 + - @objectstack/formula@7.8.0 + - @objectstack/account@7.8.0 + - @objectstack/client@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/observability@7.8.0 + - @objectstack/platform-objects@7.8.0 + - @objectstack/driver-memory@7.8.0 + - @objectstack/driver-mongodb@7.8.0 + - @objectstack/driver-sql@7.8.0 + - @objectstack/driver-sqlite-wasm@7.8.0 + - @objectstack/plugin-approvals@7.8.0 + - @objectstack/plugin-audit@7.8.0 + - @objectstack/plugin-auth@7.8.0 + - @objectstack/plugin-email@7.8.0 + - @objectstack/plugin-hono-server@7.8.0 + - @objectstack/plugin-mcp-server@7.8.0 + - @objectstack/plugin-org-scoping@7.8.0 + - @objectstack/plugin-reports@7.8.0 + - @objectstack/plugin-security@7.8.0 + - @objectstack/plugin-sharing@7.8.0 + - @objectstack/plugin-trigger-record-change@7.8.0 + - @objectstack/plugin-trigger-schedule@7.8.0 + - @objectstack/plugin-webhooks@7.8.0 + - @objectstack/service-analytics@7.8.0 + - @objectstack/service-automation@7.8.0 + - @objectstack/service-cache@7.8.0 + - @objectstack/service-datasource@7.8.0 + - @objectstack/service-feed@7.8.0 + - @objectstack/service-job@7.8.0 + - @objectstack/service-messaging@7.8.0 + - @objectstack/service-queue@7.8.0 + - @objectstack/service-realtime@7.8.0 + - @objectstack/service-settings@7.8.0 + - @objectstack/service-storage@7.8.0 + - @objectstack/types@7.8.0 + - @objectstack/console@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index f1b4ff153..049600104 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "7.7.0", + "version": "7.8.0", "description": "Command Line Interface for ObjectStack Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/client-react/CHANGELOG.md b/packages/client-react/CHANGELOG.md index 2e790c726..1308d0a38 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/client-react +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/client@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index 2deb83b98..a2141b659 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "React hooks for ObjectStack Client SDK", "main": "dist/index.js", diff --git a/packages/client/CHANGELOG.md b/packages/client/CHANGELOG.md index 8026bf2a7..bfe78a893 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/client +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/client/package.json b/packages/client/package.json index b9ce4fe78..f428b5d58 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Official Client SDK for ObjectStack Protocol", "main": "dist/index.js", diff --git a/packages/connectors/connector-mcp/CHANGELOG.md b/packages/connectors/connector-mcp/CHANGELOG.md index 7fc63b490..9d5295e49 100644 --- a/packages/connectors/connector-mcp/CHANGELOG.md +++ b/packages/connectors/connector-mcp/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/connector-mcp +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/connectors/connector-mcp/package.json b/packages/connectors/connector-mcp/package.json index afd60428d..09d9a082b 100644 --- a/packages/connectors/connector-mcp/package.json +++ b/packages/connectors/connector-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-mcp", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Model Context Protocol (MCP) connector for ObjectStack — a generic adapter that turns any MCP server's tools into a connector's actions on the automation engine's connector registry (ADR-0024).", "main": "dist/index.js", diff --git a/packages/connectors/connector-openapi/CHANGELOG.md b/packages/connectors/connector-openapi/CHANGELOG.md index 00094e1d8..745fb27c9 100644 --- a/packages/connectors/connector-openapi/CHANGELOG.md +++ b/packages/connectors/connector-openapi/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/connector-openapi +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/connectors/connector-openapi/package.json b/packages/connectors/connector-openapi/package.json index 00682a3bd..4b784b9ab 100644 --- a/packages/connectors/connector-openapi/package.json +++ b/packages/connectors/connector-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-openapi", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "OpenAPI 3.x connector generator for ObjectStack — turns a declarative OpenAPI document into connector actions on the automation engine's registry, with a self-contained static-auth HTTP transport (ADR-0023).", "main": "dist/index.js", diff --git a/packages/connectors/connector-rest/CHANGELOG.md b/packages/connectors/connector-rest/CHANGELOG.md index 5d98f7617..c92e8824f 100644 --- a/packages/connectors/connector-rest/CHANGELOG.md +++ b/packages/connectors/connector-rest/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/connector-rest +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/connectors/connector-rest/package.json b/packages/connectors/connector-rest/package.json index b610dab99..9426a5340 100644 --- a/packages/connectors/connector-rest/package.json +++ b/packages/connectors/connector-rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-rest", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Generic REST connector for ObjectStack — the reference concrete connector that registers a `request` action on the automation engine's connector registry (ADR-0018 §Addendum).", "main": "dist/index.js", diff --git a/packages/connectors/connector-slack/CHANGELOG.md b/packages/connectors/connector-slack/CHANGELOG.md index 60765e0d8..002c1079f 100644 --- a/packages/connectors/connector-slack/CHANGELOG.md +++ b/packages/connectors/connector-slack/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/connector-slack +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/connectors/connector-slack/package.json b/packages/connectors/connector-slack/package.json index bde7e9751..feb5c2cc3 100644 --- a/packages/connectors/connector-slack/package.json +++ b/packages/connectors/connector-slack/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/connector-slack", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Slack Web API connector for ObjectStack — registers `chat.postMessage` / `chat.update` / `call` actions on the automation engine's connector registry (ADR-0018 §Addendum, ADR-0022).", "main": "dist/index.js", diff --git a/packages/console/CHANGELOG.md b/packages/console/CHANGELOG.md index c0c788b8e..da416e0f1 100644 --- a/packages/console/CHANGELOG.md +++ b/packages/console/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/console +## 7.8.0 + ## 7.7.0 ## 7.6.0 diff --git a/packages/console/package.json b/packages/console/package.json index 2efbd994a..65fc5ff84 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/console", - "version": "7.7.0", + "version": "7.8.0", "description": "Prebuilt Console SPA pinned to this @objectstack/framework release. Source of truth: @object-ui/console (https://github.com/objectstack-ai/objectui).", "license": "Apache-2.0", "homepage": "https://github.com/objectstack-ai/framework/tree/main/packages/console", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index ce7b3aaa3..fa68618bb 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/core +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index c6ee40e2e..9d87830fc 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Microkernel Core for ObjectStack", "type": "module", diff --git a/packages/create-objectstack/CHANGELOG.md b/packages/create-objectstack/CHANGELOG.md index 18e646527..46192e387 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # create-objectstack +## 7.8.0 + ## 7.7.0 ## 7.6.0 diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 8bf25adbe..af1683b68 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "7.7.0", + "version": "7.8.0", "description": "Create a new ObjectStack project — npx create-objectstack", "bin": { "create-objectstack": "./bin/create-objectstack.js" diff --git a/packages/formula/CHANGELOG.md b/packages/formula/CHANGELOG.md index cfada9ef0..b99860751 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,26 @@ # @objectstack/formula +## 7.8.0 + +### Patch Changes + +- f01f9fa: fix(formula): hydrate ISO date/datetime strings on CEL `no such overload` fault (#1530) + + Date-typed formula fields and date predicates always evaluated to `null`: + `Field.date`/`Field.datetime` serialize to ISO strings, and cel-js compared the + raw string against the `google.protobuf.Timestamp` from `today()`/`now()`/ + `daysFromNow()`, raising `no such overload` (swallowed to null). The existing + numeric-string fault-retry (#1534) is now extended to also coerce strict ISO-8601 + date/date-time strings to `Date` before retrying once, fixing every caller + (formula fields, flow conditions, validation/workflow predicates). Hydration runs + only after a fault, so clean expressions are never re-interpreted and genuine + non-temporal strings still fault loudly. + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index e38110639..222a9c320 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "ObjectStack canonical expression engine — CEL (cel-js) + ObjectStack stdlib + dialect registry", "main": "dist/index.js", diff --git a/packages/metadata-core/CHANGELOG.md b/packages/metadata-core/CHANGELOG.md index 86f9d96a6..3cf55f240 100644 --- a/packages/metadata-core/CHANGELOG.md +++ b/packages/metadata-core/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/metadata-core +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index ffe17440c..e1e3d73fe 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-core", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Metadata Repository contracts: types, canonicalization, errors, interface (ADR-0008).", "type": "module", diff --git a/packages/metadata-fs/CHANGELOG.md b/packages/metadata-fs/CHANGELOG.md index ea81c56f1..a482a44c3 100644 --- a/packages/metadata-fs/CHANGELOG.md +++ b/packages/metadata-fs/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/metadata-fs +## 7.8.0 + +### Patch Changes + +- @objectstack/metadata-core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index a6c987c84..6a7cf72f6 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-fs", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "FileSystemRepository: Node-only Repository implementation backed by JSON files and a JSONL change log (ADR-0008).", "type": "module", diff --git a/packages/metadata/CHANGELOG.md b/packages/metadata/CHANGELOG.md index 8b8bcda1a..b4a2a6118 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/metadata +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/metadata-core@7.8.0 + - @objectstack/platform-objects@7.8.0 + - @objectstack/types@7.8.0 + - @objectstack/metadata-fs@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index c83f7b588..96aac57e3 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Metadata loading, saving, and persistence for ObjectStack", "type": "module", diff --git a/packages/objectql/CHANGELOG.md b/packages/objectql/CHANGELOG.md index 93c1aa652..fc155909a 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,93 @@ # @objectstack/objectql +## 7.8.0 + +### Minor Changes + +- a75823a: feat(metadata): expose pending DRAFT metadata (ADR-0033 draft discoverability) + + AI-authored metadata lands as drafts (`sys_metadata` rows with `state='draft'`, bound to an app package), but the only list path — `getMetaItems` — reads the active registry, so drafts were invisible: a just-built app package looked empty and there was no "pending changes" surface. + + - `SysMetadataRepository.listDrafts({type?, packageId?})` lists draft rows (mirrors `list()` but scoped to `state='draft'`, optionally narrowed by package), returning a light header projection (no body) with `packageId`. + - `protocol.listDrafts({packageId?, type?, organizationId?})` exposes it over the overlay repo. + - `GET /api/v1/meta/_drafts?packageId=&type=` surfaces it to the console. Registered in the REST server before the greedy `/meta/:type` route (and mirrored in the dispatcher) so `_drafts` is never captured as a metadata type name. + + Read-only; no behavior change to existing list/publish paths. Powers the upcoming Studio "drafts/pending changes" view and draft-aware package contents. + +- 4fbb86a: feat(packages): consolidate the package subsystem so AI-built app packages surface in Studio + + The package subsystem was split across two stores that never met: the in-memory + `SchemaRegistry` (what the dispatcher's `/api/v1/packages` list/detail and + `getMetaItems({type:'package'})` read — i.e. Studio's package selector) and the durable + `sys_packages` table (where the AI's auto app package, and any `package`-service publish, + were written). Nothing reconciled the two, so an AI-created `app.` package never + appeared in Studio. + + This unifies them around one write primitive and one read source: + + - **`protocol.installPackage`** is now implemented (it was declared-but-missing). It is the + single canonical write path: it registers the package in the in-memory registry **and** + best-effort persists it to `sys_packages` via the `package` service. Non-fatal when no + `package` service is wired (registry write still succeeds). + - **Dispatcher `POST /api/v1/packages`** routes through `protocol.installPackage` (falling + back to the bare registry write when the protocol is unavailable), so HTTP installs are + durable too. + - **`@objectstack/service-package`** reconciles `sys_packages` back into the registry on + boot, without clobbering filesystem-registered packages — so persisted packages survive a + restart and stay visible in the registry-backed read paths. + - **`@objectstack/service-ai`** `apply_blueprint` now homes an app via + `protocol.installPackage` (falling back to the legacy `package`-service publish), so the + app package lands where Studio reads it. + + Still the _legacy_ `package_id` plane — sealed `sys_package_version` versioning and + cross-environment promotion remain ADR-0027 follow-ups. + +- e631f1e: feat(metadata): publish a whole app's drafts in one shot (ADR-0033) + + After an AI builds an app, its metadata is drafted (bound to an app package) and + had to be published one item at a time. The package-level `POST /packages/:id/publish` + needs the `metadata` service (503 when absent, e.g. the showcase) and reads the + in-memory registry, not the drafts. + + - `protocol.publishPackageDrafts({ packageId })` promotes every `sys_metadata` + draft row bound to the package to active by reusing the per-item + `publishMetaItem` primitive (overridable/lock guards + runtime registry + refresh). Per-item failures are collected, not fatal. No `metadata`-service + dependency. + - `POST /api/v1/packages/:id/publish-drafts` exposes it (distinct from the + registry-based `/publish`), returning `{ success, publishedCount, failedCount, published, failed }`. + + Verified live: an AI-built `app.asset_management` (4 drafts) published in one call — + all 4 promoted to active, drafts cleared, draft objects became queryable. + +- 36719db: fix: AI-built apps are usable immediately — sync new object tables on publish + emit valid kanban config + + Two gaps found by end-to-end testing of an AI-built app: + + 1. **A freshly-published object couldn't accept records until a server restart.** Publishing a drafted object registered it in the in-memory registry but never created its physical table (table sync only ran at boot), so inserts failed with `object_not_found` ("no such table"). Added `ObjectQL.syncObjectSchema(name)` (a targeted, idempotent single-object schema sync) and call it from the publish paths (`protocol.publishMetaItem` and `saveMetaItem` mode:'publish', via `ensureObjectStorage`). Best-effort + non-fatal. New objects are now CRUD-able the moment they're published. + + 2. **AI-generated kanban views rendered as plain lists** (and sometimes failed validation). The blueprint `viewBody` emitted `list.type:'kanban'` with no `kanban` config; `KanbanConfigSchema` requires `groupByField` **and** `columns`. Added an optional `groupBy` to the blueprint view schema (lenient + strict) and have `apply_blueprint` set `list.kanban = { groupByField, columns }` — using the view's explicit `groupBy` when given, else inferring the object's first `select` field. AI-built kanban views now validate, publish, and carry a real group-by field. + +### Patch Changes + +- 6fc2678: fix(metadata): stamp a top-level `name` on `view` bodies at the write path so AI/hand-authored views surface + + `getMetaItems` only overlays a `sys_metadata` row when its parsed body has a top-level `name`. Some view producers — notably loose `{ list: }` / `{ form: … }` fragments that AI tools and hand-authoring emit — pass schema validation but carry no top-level `name`, so the view was silently dropped from the object's view list and never appeared as a tab ("validates ≠ surfaces"). + + `saveMetaItem` now guarantees a top-level `name` on every view body at the single write chokepoint, BEFORE validation + persistence, so a nameless view is auto-corrected regardless of which authoring path produced it. It deliberately does NOT reshape the document: both the `defineView` container form (`{ list, listViews, … }`, expanded by the loader) and the `{ name, object, viewKind, config }` record form are valid and the console consumes both — reshaping a container into a record risks producing an invalid record (e.g. a non-`.` name) and drops Studio-only fields (`isPinned`, `sortOrder`, …). Exported as `normalizeViewMetadata` and unit-tested. + + (Note for follow-up: the `view` metadata schema is itself a permissive union — it accepts an unknown `viewKind`, a kanban config missing `groupByField`, even `{}`. Tightening it correctly requires first consolidating the four legitimate view shapes — record / container / flat list / flat form — and is a separate spec change.) + +- Updated dependencies [06f2bbb] +- Updated dependencies [f01f9fa] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/formula@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/metadata-core@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index db300ec47..166782498 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Isomorphic ObjectQL Engine for ObjectStack", "main": "dist/index.js", diff --git a/packages/observability/CHANGELOG.md b/packages/observability/CHANGELOG.md index 99f0646d4..f58788baf 100644 --- a/packages/observability/CHANGELOG.md +++ b/packages/observability/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/observability +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/observability/package.json b/packages/observability/package.json index 976cc065e..79da7967a 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/observability", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Observability contracts and exporters for ObjectStack — MetricsRegistry, ErrorReporter, Logger plus noop/console/OTLP-HTTP exporters. Deployment-target neutral; runtime and services depend on this so the same instrumentation works on Cloudflare Workers, Node, and self-hosted Kubernetes.", "type": "module", diff --git a/packages/platform-objects/CHANGELOG.md b/packages/platform-objects/CHANGELOG.md index dc112422b..7be3645a1 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/platform-objects +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/metadata-core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index a1dc9b03b..6eda82e65 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Core platform object schemas for ObjectStack — identity, security, audit, tenant, and metadata objects", "main": "dist/index.js", diff --git a/packages/plugins/driver-memory/CHANGELOG.md b/packages/plugins/driver-memory/CHANGELOG.md index ce0921dc9..23d99f89f 100644 --- a/packages/plugins/driver-memory/CHANGELOG.md +++ b/packages/plugins/driver-memory/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/driver-memory +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/driver-memory/package.json b/packages/plugins/driver-memory/package.json index ca03e5ac8..6cdb34e74 100644 --- a/packages/plugins/driver-memory/package.json +++ b/packages/plugins/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "In-Memory Driver for ObjectStack (Reference Implementation)", "main": "dist/index.js", diff --git a/packages/plugins/driver-mongodb/CHANGELOG.md b/packages/plugins/driver-mongodb/CHANGELOG.md index 9a1566c3b..df0e9ac61 100644 --- a/packages/plugins/driver-mongodb/CHANGELOG.md +++ b/packages/plugins/driver-mongodb/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/driver-mongodb +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/driver-mongodb/package.json b/packages/plugins/driver-mongodb/package.json index 57a7c8cd7..b7d2c7b47 100644 --- a/packages/plugins/driver-mongodb/package.json +++ b/packages/plugins/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "MongoDB Driver for ObjectStack - Native document database driver via official mongodb client", "main": "dist/index.js", diff --git a/packages/plugins/driver-sql/CHANGELOG.md b/packages/plugins/driver-sql/CHANGELOG.md index d1b5dc594..0d5a37d0c 100644 --- a/packages/plugins/driver-sql/CHANGELOG.md +++ b/packages/plugins/driver-sql/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/driver-sql +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/driver-sql/package.json b/packages/plugins/driver-sql/package.json index f8eabd057..5bdd81fd1 100644 --- a/packages/plugins/driver-sql/package.json +++ b/packages/plugins/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "SQL Driver for ObjectStack - Supports PostgreSQL, MySQL, SQLite via Knex", "main": "dist/index.js", diff --git a/packages/plugins/driver-sqlite-wasm/CHANGELOG.md b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md index 02dc1ecf3..553b00265 100644 --- a/packages/plugins/driver-sqlite-wasm/CHANGELOG.md +++ b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/driver-sqlite-wasm +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/driver-sql@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/driver-sqlite-wasm/package.json b/packages/plugins/driver-sqlite-wasm/package.json index ddd5b4d46..43bb6d684 100644 --- a/packages/plugins/driver-sqlite-wasm/package.json +++ b/packages/plugins/driver-sqlite-wasm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sqlite-wasm", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "WASM SQLite Driver for ObjectStack — runs in browser/WebContainer (StackBlitz) without native bindings", "keywords": [ diff --git a/packages/plugins/embedder-openai/CHANGELOG.md b/packages/plugins/embedder-openai/CHANGELOG.md index 1c7d691c0..988898e62 100644 --- a/packages/plugins/embedder-openai/CHANGELOG.md +++ b/packages/plugins/embedder-openai/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/embedder-openai +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/embedder-openai/package.json b/packages/plugins/embedder-openai/package.json index e6557cdcf..d2810df2f 100644 --- a/packages/plugins/embedder-openai/package.json +++ b/packages/plugins/embedder-openai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/embedder-openai", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "OpenAI-compatible embedder for ObjectStack — works against OpenAI, 阿里通义 DashScope, 智谱 BigModel, 硅基流动 SiliconFlow, 火山引擎 Doubao, MiniMax, Ollama, and any drop-in OpenAI-shape endpoint.", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-memory/CHANGELOG.md b/packages/plugins/knowledge-memory/CHANGELOG.md index 8da5b1117..d9711311f 100644 --- a/packages/plugins/knowledge-memory/CHANGELOG.md +++ b/packages/plugins/knowledge-memory/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/knowledge-memory +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/service-knowledge@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/knowledge-memory/package.json b/packages/plugins/knowledge-memory/package.json index 29ae29925..0fc2d56a8 100644 --- a/packages/plugins/knowledge-memory/package.json +++ b/packages/plugins/knowledge-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-memory", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "In-memory knowledge adapter for ObjectStack (dev / test reference implementation).", "main": "dist/index.js", diff --git a/packages/plugins/knowledge-ragflow/CHANGELOG.md b/packages/plugins/knowledge-ragflow/CHANGELOG.md index cbbec5368..247a428cb 100644 --- a/packages/plugins/knowledge-ragflow/CHANGELOG.md +++ b/packages/plugins/knowledge-ragflow/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/knowledge-ragflow +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/service-knowledge@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/knowledge-ragflow/package.json b/packages/plugins/knowledge-ragflow/package.json index a64c5be8c..139960c7b 100644 --- a/packages/plugins/knowledge-ragflow/package.json +++ b/packages/plugins/knowledge-ragflow/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/knowledge-ragflow", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "RAGFlow knowledge adapter for ObjectStack — production-grade RAG via the Apache 2.0 RAGFlow REST API.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-approvals/CHANGELOG.md b/packages/plugins/plugin-approvals/CHANGELOG.md index 3f1413c9f..ae73972b2 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,19 @@ # @objectstack/plugin-approvals +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [f01f9fa] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/formula@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/metadata-core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index 49fd3b358..e7888079d 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Multi-step approval engine for ObjectStack — sys_approval_process + sys_approval_request + sys_approval_action + IApprovalService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-audit/CHANGELOG.md b/packages/plugins/plugin-audit/CHANGELOG.md index e77811bc3..3654ca19d 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-audit +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index 1c07adab9..dddc50d1d 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Audit Plugin for ObjectStack — System audit log object and audit trail", "main": "dist/index.js", diff --git a/packages/plugins/plugin-auth/CHANGELOG.md b/packages/plugins/plugin-auth/CHANGELOG.md index 42265b383..9441fbcf3 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index 940f0885c..1fc8867f8 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Authentication & Identity Plugin for ObjectStack", "main": "dist/index.js", diff --git a/packages/plugins/plugin-dev/CHANGELOG.md b/packages/plugins/plugin-dev/CHANGELOG.md index fdb78a322..9fc40177d 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,29 @@ # @objectstack/plugin-dev +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [6fc2678] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/objectql@7.8.0 + - @objectstack/rest@7.8.0 + - @objectstack/runtime@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/driver-memory@7.8.0 + - @objectstack/plugin-auth@7.8.0 + - @objectstack/plugin-hono-server@7.8.0 + - @objectstack/plugin-org-scoping@7.8.0 + - @objectstack/plugin-security@7.8.0 + - @objectstack/service-i18n@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index b1ab52cc0..3be24c113 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Development Mode Plugin for ObjectStack — auto-enables all services with in-memory implementations", "main": "dist/index.js", diff --git a/packages/plugins/plugin-email/CHANGELOG.md b/packages/plugins/plugin-email/CHANGELOG.md index 2d03506e2..829381a41 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-email +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index 52bc52403..9fe7e60b6 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Email service plugin for ObjectStack — IEmailService + transport-pluggable outbound delivery with sys_email persistence.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-hono-server/CHANGELOG.md b/packages/plugins/plugin-hono-server/CHANGELOG.md index c1da58656..fe6b4206f 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-hono-server +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index 7ec5cd57e..4ae885245 100644 --- a/packages/plugins/plugin-hono-server/package.json +++ b/packages/plugins/plugin-hono-server/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-hono-server", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Standard Hono Server Adapter for ObjectStack Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-mcp-server/CHANGELOG.md b/packages/plugins/plugin-mcp-server/CHANGELOG.md index 37d8babd1..1f9275161 100644 --- a/packages/plugins/plugin-mcp-server/CHANGELOG.md +++ b/packages/plugins/plugin-mcp-server/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-mcp-server +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-mcp-server/package.json b/packages/plugins/plugin-mcp-server/package.json index a2ba33e3f..a3b57db81 100644 --- a/packages/plugins/plugin-mcp-server/package.json +++ b/packages/plugins/plugin-mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-mcp-server", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "MCP Runtime Server Plugin for ObjectStack — exposes AI tools, data resources, and agent prompts via the Model Context Protocol", "type": "module", diff --git a/packages/plugins/plugin-msw/CHANGELOG.md b/packages/plugins/plugin-msw/CHANGELOG.md index 36e45e6a7..752e4e2ab 100644 --- a/packages/plugins/plugin-msw/CHANGELOG.md +++ b/packages/plugins/plugin-msw/CHANGELOG.md @@ -1,5 +1,22 @@ # @objectstack/plugin-msw +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [6fc2678] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/objectql@7.8.0 + - @objectstack/runtime@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-msw/package.json b/packages/plugins/plugin-msw/package.json index 027bdef1b..f35c9dc94 100644 --- a/packages/plugins/plugin-msw/package.json +++ b/packages/plugins/plugin-msw/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-msw", - "version": "7.7.0", + "version": "7.8.0", "description": "MSW (Mock Service Worker) Plugin for ObjectStack Runtime", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/plugins/plugin-org-scoping/CHANGELOG.md b/packages/plugins/plugin-org-scoping/CHANGELOG.md index 61af114d3..9c13e697e 100644 --- a/packages/plugins/plugin-org-scoping/CHANGELOG.md +++ b/packages/plugins/plugin-org-scoping/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-org-scoping +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-org-scoping/package.json b/packages/plugins/plugin-org-scoping/package.json index 0a9456d6c..2985bee37 100644 --- a/packages/plugins/plugin-org-scoping/package.json +++ b/packages/plugins/plugin-org-scoping/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-org-scoping", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Organization-Scoping Plugin for ObjectStack — row-level Organization isolation, per-org seed replay, default-org bootstrap", "main": "dist/index.js", diff --git a/packages/plugins/plugin-reports/CHANGELOG.md b/packages/plugins/plugin-reports/CHANGELOG.md index 88c783402..4713d9a41 100644 --- a/packages/plugins/plugin-reports/CHANGELOG.md +++ b/packages/plugins/plugin-reports/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-reports +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-reports/package.json b/packages/plugins/plugin-reports/package.json index 84c461b5d..e3bb66f9c 100644 --- a/packages/plugins/plugin-reports/package.json +++ b/packages/plugins/plugin-reports/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-reports", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Saved reports + scheduled email digests for ObjectStack — sys_saved_report + sys_report_schedule + IReportService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-security/CHANGELOG.md b/packages/plugins/plugin-security/CHANGELOG.md index 3f840cd08..5fd476429 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-security +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index 47fd0c3c4..08ed6a896 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-security", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Security Plugin for ObjectStack — RBAC, RLS, and Field-Level Security Runtime", "main": "dist/index.js", diff --git a/packages/plugins/plugin-sharing/CHANGELOG.md b/packages/plugins/plugin-sharing/CHANGELOG.md index 7dd5571a8..2c75a31a5 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,21 @@ # @objectstack/plugin-sharing +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [6fc2678] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/objectql@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index acafba939..1b0f3a3bb 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-sharing", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Record-level sharing for ObjectStack — sys_record_share + middleware that enforces sharingModel + ISharingService.", "main": "dist/index.js", diff --git a/packages/plugins/plugin-trigger-record-change/CHANGELOG.md b/packages/plugins/plugin-trigger-record-change/CHANGELOG.md index 9fedd8195..7bb4ea24b 100644 --- a/packages/plugins/plugin-trigger-record-change/CHANGELOG.md +++ b/packages/plugins/plugin-trigger-record-change/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/plugin-trigger-record-change +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-trigger-record-change/package.json b/packages/plugins/plugin-trigger-record-change/package.json index 141d39d4b..865746a1b 100644 --- a/packages/plugins/plugin-trigger-record-change/package.json +++ b/packages/plugins/plugin-trigger-record-change/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-trigger-record-change", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Record-change flow trigger for ObjectStack — auto-launches flows on object insert/update/delete via ObjectQL lifecycle hooks (ADR-0018)", "main": "dist/index.js", diff --git a/packages/plugins/plugin-trigger-schedule/CHANGELOG.md b/packages/plugins/plugin-trigger-schedule/CHANGELOG.md index 5a8015d14..372cbea92 100644 --- a/packages/plugins/plugin-trigger-schedule/CHANGELOG.md +++ b/packages/plugins/plugin-trigger-schedule/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/plugin-trigger-schedule +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-trigger-schedule/package.json b/packages/plugins/plugin-trigger-schedule/package.json index a73358b1f..db36b8781 100644 --- a/packages/plugins/plugin-trigger-schedule/package.json +++ b/packages/plugins/plugin-trigger-schedule/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-trigger-schedule", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Schedule flow trigger for ObjectStack — auto-launches flows on a cron/interval/once schedule via the IJobService (ADR-0018)", "main": "dist/index.js", diff --git a/packages/plugins/plugin-webhooks/CHANGELOG.md b/packages/plugins/plugin-webhooks/CHANGELOG.md index 4b2d58305..5aa66a56e 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-webhooks +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/service-messaging@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index 5013ed93b..a2358bfc0 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Persistent, cluster-aware webhook dispatcher. Durable outbox + per-partition cluster.lock for exactly-once-ish delivery across nodes. See content/docs/concepts/webhook-delivery.mdx.", "type": "module", diff --git a/packages/rest/CHANGELOG.md b/packages/rest/CHANGELOG.md index 59bc8159d..9d52ef6d2 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,27 @@ # @objectstack/rest +## 7.8.0 + +### Patch Changes + +- a75823a: feat(metadata): expose pending DRAFT metadata (ADR-0033 draft discoverability) + + AI-authored metadata lands as drafts (`sys_metadata` rows with `state='draft'`, bound to an app package), but the only list path — `getMetaItems` — reads the active registry, so drafts were invisible: a just-built app package looked empty and there was no "pending changes" surface. + + - `SysMetadataRepository.listDrafts({type?, packageId?})` lists draft rows (mirrors `list()` but scoped to `state='draft'`, optionally narrowed by package), returning a light header projection (no body) with `packageId`. + - `protocol.listDrafts({packageId?, type?, organizationId?})` exposes it over the overlay repo. + - `GET /api/v1/meta/_drafts?packageId=&type=` surfaces it to the console. Registered in the REST server before the greedy `/meta/:type` route (and mirrored in the dispatcher) so `_drafts` is never captured as a metadata type name. + + Read-only; no behavior change to existing list/publish paths. Powers the upcoming Studio "drafts/pending changes" view and draft-aware package contents. + +- Updated dependencies [06f2bbb] +- Updated dependencies [4fbb86a] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/service-package@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index a6a17cba7..5dbb9d116 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "ObjectStack REST API Server - automatic REST endpoint generation from protocol", "type": "module", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index 385181dd5..fdf20a2f6 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,107 @@ # @objectstack/runtime +## 7.8.0 + +### Patch Changes + +- a75823a: feat(metadata): expose pending DRAFT metadata (ADR-0033 draft discoverability) + + AI-authored metadata lands as drafts (`sys_metadata` rows with `state='draft'`, bound to an app package), but the only list path — `getMetaItems` — reads the active registry, so drafts were invisible: a just-built app package looked empty and there was no "pending changes" surface. + + - `SysMetadataRepository.listDrafts({type?, packageId?})` lists draft rows (mirrors `list()` but scoped to `state='draft'`, optionally narrowed by package), returning a light header projection (no body) with `packageId`. + - `protocol.listDrafts({packageId?, type?, organizationId?})` exposes it over the overlay repo. + - `GET /api/v1/meta/_drafts?packageId=&type=` surfaces it to the console. Registered in the REST server before the greedy `/meta/:type` route (and mirrored in the dispatcher) so `_drafts` is never captured as a metadata type name. + + Read-only; no behavior change to existing list/publish paths. Powers the upcoming Studio "drafts/pending changes" view and draft-aware package contents. + +- 4fbb86a: feat(packages): consolidate the package subsystem so AI-built app packages surface in Studio + + The package subsystem was split across two stores that never met: the in-memory + `SchemaRegistry` (what the dispatcher's `/api/v1/packages` list/detail and + `getMetaItems({type:'package'})` read — i.e. Studio's package selector) and the durable + `sys_packages` table (where the AI's auto app package, and any `package`-service publish, + were written). Nothing reconciled the two, so an AI-created `app.` package never + appeared in Studio. + + This unifies them around one write primitive and one read source: + + - **`protocol.installPackage`** is now implemented (it was declared-but-missing). It is the + single canonical write path: it registers the package in the in-memory registry **and** + best-effort persists it to `sys_packages` via the `package` service. Non-fatal when no + `package` service is wired (registry write still succeeds). + - **Dispatcher `POST /api/v1/packages`** routes through `protocol.installPackage` (falling + back to the bare registry write when the protocol is unavailable), so HTTP installs are + durable too. + - **`@objectstack/service-package`** reconciles `sys_packages` back into the registry on + boot, without clobbering filesystem-registered packages — so persisted packages survive a + restart and stay visible in the registry-backed read paths. + - **`@objectstack/service-ai`** `apply_blueprint` now homes an app via + `protocol.installPackage` (falling back to the legacy `package`-service publish), so the + app package lands where Studio reads it. + + Still the _legacy_ `package_id` plane — sealed `sys_package_version` versioning and + cross-environment promotion remain ADR-0027 follow-ups. + +- e631f1e: feat(metadata): publish a whole app's drafts in one shot (ADR-0033) + + After an AI builds an app, its metadata is drafted (bound to an app package) and + had to be published one item at a time. The package-level `POST /packages/:id/publish` + needs the `metadata` service (503 when absent, e.g. the showcase) and reads the + in-memory registry, not the drafts. + + - `protocol.publishPackageDrafts({ packageId })` promotes every `sys_metadata` + draft row bound to the package to active by reusing the per-item + `publishMetaItem` primitive (overridable/lock guards + runtime registry + refresh). Per-item failures are collected, not fatal. No `metadata`-service + dependency. + - `POST /api/v1/packages/:id/publish-drafts` exposes it (distinct from the + registry-based `/publish`), returning `{ success, publishedCount, failedCount, published, failed }`. + + Verified live: an AI-built `app.asset_management` (4 drafts) published in one call — + all 4 promoted to active, drafts cleared, draft objects became queryable. + +- 424ab26: fix(seed): reject object-wrapped relationship references and constrain them at compile time + + Seed datasets resolve `lookup` / `master_detail` references by matching the value + against the target record's externalId — so the value must be the plain natural-key + string (e.g. `account: 'Acme Corp'`), never a wrapper object like + `account: { externalId: 'Acme Corp' }`. The wrapper was silently skipped by the + loader, fell through unresolved, and reached the SQL driver as a non-bindable value — + masked on an always-empty `:memory:` DB but crashing on a persistent one with + "SQLite3 can only bind numbers, strings, bigints, buffers, and null" once seeds re-ran + as updates. + + - `defineDataset` now constrains reference fields to `string | null` at compile time + (derived from each field's `type`), so the object form is a type error. + - `SeedLoaderService` now fails loudly with an actionable message (and drops the value + instead of handing it to the driver) when a reference is an object — consistent + behavior across all drivers, no longer silently masked. + +- Updated dependencies [06f2bbb] +- Updated dependencies [a75823a] +- Updated dependencies [4fbb86a] +- Updated dependencies [e631f1e] +- Updated dependencies [f01f9fa] +- Updated dependencies [6fc2678] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/objectql@7.8.0 + - @objectstack/rest@7.8.0 + - @objectstack/formula@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/metadata@7.8.0 + - @objectstack/observability@7.8.0 + - @objectstack/driver-memory@7.8.0 + - @objectstack/driver-sql@7.8.0 + - @objectstack/driver-sqlite-wasm@7.8.0 + - @objectstack/plugin-auth@7.8.0 + - @objectstack/plugin-org-scoping@7.8.0 + - @objectstack/plugin-security@7.8.0 + - @objectstack/service-cluster@7.8.0 + - @objectstack/service-i18n@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 398420444..2cac70fea 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "ObjectStack Core Runtime & Query Engine", "type": "module", diff --git a/packages/services/service-ai/CHANGELOG.md b/packages/services/service-ai/CHANGELOG.md index 0911eb88b..7af33a8a1 100644 --- a/packages/services/service-ai/CHANGELOG.md +++ b/packages/services/service-ai/CHANGELOG.md @@ -1,5 +1,92 @@ # @objectstack/service-ai +## 7.8.0 + +### Minor Changes + +- 6b82e68: feat(ai): zero-package app building — auto-home a blueprint's app in a writable package + + When the AI blueprint flow builds an **app**, it now silently gives that app a writable "home" package (one app ⇒ one `app.` package) and binds every drafted artifact (objects, views, dashboards, the app) to it — so a business user never has to create a "package" to start building (the mainstream AI-builder UX: Power Apps' default solution, Salesforce orgs). Packaging/versioning stays an opt-in, later concern. + + - `apply_blueprint` ensures the app package up front (idempotent: reuse if it exists, else create via the runtime `package` service) and threads its `packageId` through every `stageDraft` → `sys_metadata.package_id`. The result envelope gains `package: { id, name, created }`. + - The `package` service is resolved **lazily** (per call, not at plugin-init time) so it works regardless of service-init order and picks up the opt-in `marketplace` capability when present. + - **Best-effort, non-fatal:** if no `package` service is wired, drafting proceeds package-less exactly as before — the build never fails on packaging. + + Scope/caveats: this stamps the _legacy_ `sys_metadata.package_id` (a real grouping + the foundation for later version/export/promote), not the sealed `sys_package_version` model — full cross-environment promotion and Studio package-selector visibility depend on finishing the runtime package subsystem (ADR-0027), tracked separately. (The showcase example enables the `marketplace` capability to exercise this.) + +- 4888ea2: feat(ai): add `get_metadata_schema` tool so the agent can read a type's contract before authoring + + The metadata-authoring agent never sees the real spec Zod schemas — it works against a simplified blueprint or sends a free-form `definition` and only learns the true shape from post-hoc validation errors. For complex types (view, dashboard, flow, …) that means guessing, e.g. a kanban view's required `kanban: { groupByField, columns }` block. + + New `get_metadata_schema` tool returns the JSON Schema (via Zod v4's `toJSONSchema`) derived from the SAME live schema `saveMetaItem` validates against (`getMetadataTypeSchema`). The `metadata_authoring` skill now instructs the agent to call it before authoring a non-trivial type, so it conforms first time instead of trial-and-error. Read-only; resolves plural type names; returns a graceful error for types that can't be serialized (e.g. `object`, which the dedicated `create_object` tools cover anyway). + +- 36719db: fix: AI-built apps are usable immediately — sync new object tables on publish + emit valid kanban config + + Two gaps found by end-to-end testing of an AI-built app: + + 1. **A freshly-published object couldn't accept records until a server restart.** Publishing a drafted object registered it in the in-memory registry but never created its physical table (table sync only ran at boot), so inserts failed with `object_not_found` ("no such table"). Added `ObjectQL.syncObjectSchema(name)` (a targeted, idempotent single-object schema sync) and call it from the publish paths (`protocol.publishMetaItem` and `saveMetaItem` mode:'publish', via `ensureObjectStorage`). Best-effort + non-fatal. New objects are now CRUD-able the moment they're published. + + 2. **AI-generated kanban views rendered as plain lists** (and sometimes failed validation). The blueprint `viewBody` emitted `list.type:'kanban'` with no `kanban` config; `KanbanConfigSchema` requires `groupByField` **and** `columns`. Added an optional `groupBy` to the blueprint view schema (lenient + strict) and have `apply_blueprint` set `list.kanban = { groupByField, columns }` — using the view's explicit `groupBy` when given, else inferring the object's first `select` field. AI-built kanban views now validate, publish, and carry a real group-by field. + +### Patch Changes + +- 06f2bbb: fix(ai): make ADR-0033 blueprint authoring work with OpenAI structured outputs + + Two bugs surfaced by a live end-to-end run (Studio chat → blueprint → draft → review → publish) against a real model (OpenAI via the Vercel AI Gateway) — both invisible to the existing unit tests: + + 1. **`propose_blueprint` failed against OpenAI strict structured outputs.** `SolutionBlueprintSchema` uses optional fields and a free-form `seedData` record; OpenAI's strict mode requires every property listed in `required` and rejects open `additionalProperties`, so `generateObject` errored (`'required' … must include every key in properties`) and the agent silently fell back to free-text. Adds `SolutionBlueprintStrictSchema` — a strict-compatible mirror (optional → nullable, no `z.record`) used **only** as the `generateObject` output contract. The lenient `SolutionBlueprintSchema` (and every existing consumer/test) is unchanged; the blueprint tools strip the `null`s the strict contract emits so downstream stays clean. + + 2. **Tool-only assistant turns failed to persist.** `ai_messages.content` is required, but an assistant turn that only calls a tool has no text, so the insert failed, the turn was dropped, and the next turn lost context (the agent re-proposed instead of applying the confirmed blueprint). `ObjectQLConversationService.addMessage` now synthesizes a readable placeholder from the tool names (`(called propose_blueprint)`) plus a defensive non-empty fallback. + + With both fixes the full plan-first loop runs end-to-end on OpenAI models: propose → confirm → batch-draft objects/views/dashboards/app → review/diff → publish. + +- 4fbb86a: feat(packages): consolidate the package subsystem so AI-built app packages surface in Studio + + The package subsystem was split across two stores that never met: the in-memory + `SchemaRegistry` (what the dispatcher's `/api/v1/packages` list/detail and + `getMetaItems({type:'package'})` read — i.e. Studio's package selector) and the durable + `sys_packages` table (where the AI's auto app package, and any `package`-service publish, + were written). Nothing reconciled the two, so an AI-created `app.` package never + appeared in Studio. + + This unifies them around one write primitive and one read source: + + - **`protocol.installPackage`** is now implemented (it was declared-but-missing). It is the + single canonical write path: it registers the package in the in-memory registry **and** + best-effort persists it to `sys_packages` via the `package` service. Non-fatal when no + `package` service is wired (registry write still succeeds). + - **Dispatcher `POST /api/v1/packages`** routes through `protocol.installPackage` (falling + back to the bare registry write when the protocol is unavailable), so HTTP installs are + durable too. + - **`@objectstack/service-package`** reconciles `sys_packages` back into the registry on + boot, without clobbering filesystem-registered packages — so persisted packages survive a + restart and stay visible in the registry-backed read paths. + - **`@objectstack/service-ai`** `apply_blueprint` now homes an app via + `protocol.installPackage` (falling back to the legacy `package`-service publish), so the + app package lands where Studio reads it. + + Still the _legacy_ `package_id` plane — sealed `sys_package_version` versioning and + cross-environment promotion remain ADR-0027 follow-ups. + +- 328a7c4: fix(ai): AI-authored views now bind to their object and render (kanban as a board, not a list) + + An AI-built app's views (including kanban) appeared only as the default list and never as selectable tabs. Diagnosis (vs the working showcase kanban) showed it was a **metadata-shape** bug in the blueprint's `viewBody`, not the renderer or skill: it emitted a bare `{ list: {…} }` fragment instead of the canonical view record. Three things were missing/wrong: + + - no top-level **`name`** → `getMetaItems` only surfaces overlay rows whose body has `name`, so every AI view was silently dropped from the object's view list; + - no top-level **`object`** / **`viewKind`** → the console couldn't bind the view to its object; + - the view name wasn't **`.`**-prefixed (the convention the console keys view tabs off). + + `viewBody` now emits `{ name: '.', object, viewKind: 'list'|'form', config: }`, matching the shape the showcase's own views use (verified against the real `ViewSchema`). End-to-end verified: an AI-built kanban app surfaces 看板 + 列表 as tabs and renders the kanban as a board grouped by status. + +- Updated dependencies [06f2bbb] +- Updated dependencies [f01f9fa] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/formula@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Minor Changes diff --git a/packages/services/service-ai/package.json b/packages/services/service-ai/package.json index 98439bc53..258976c8a 100644 --- a/packages/services/service-ai/package.json +++ b/packages/services/service-ai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-ai", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "AI Service for ObjectStack — implements IAIService with LLM adapter layer, conversation management, tool registry, and REST/SSE routes", "type": "module", diff --git a/packages/services/service-analytics/CHANGELOG.md b/packages/services/service-analytics/CHANGELOG.md index 863e4910f..fcec80738 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog — @objectstack/service-analytics +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index da0ed50de..2fc9cb608 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Analytics Service for ObjectStack — implements IAnalyticsService with multi-driver strategy pattern (NativeSQL, ObjectQL, InMemory)", "type": "module", diff --git a/packages/services/service-automation/CHANGELOG.md b/packages/services/service-automation/CHANGELOG.md index a08ea4c4a..cd6a8c807 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-automation +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [f01f9fa] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/formula@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index 0a0d1fa70..71d22073e 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Automation Service for ObjectStack — implements IAutomationService with plugin-based DAG flow execution engine", "type": "module", diff --git a/packages/services/service-cache/CHANGELOG.md b/packages/services/service-cache/CHANGELOG.md index 69e32010b..f8afaafcd 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-cache +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/observability@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index 8cd1af68c..f09b39b04 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Cache Service for ObjectStack — implements ICacheService with in-memory and Redis adapters", "type": "module", diff --git a/packages/services/service-cluster-redis/CHANGELOG.md b/packages/services/service-cluster-redis/CHANGELOG.md index 77cacf848..e079166a0 100644 --- a/packages/services/service-cluster-redis/CHANGELOG.md +++ b/packages/services/service-cluster-redis/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-cluster-redis +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/service-cluster@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-cluster-redis/package.json b/packages/services/service-cluster-redis/package.json index 7c1a41f5e..ad3a3ecf2 100644 --- a/packages/services/service-cluster-redis/package.json +++ b/packages/services/service-cluster-redis/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster-redis", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Redis cluster driver for ObjectStack — implements IPubSub/ILock/IKV/ICounter against Redis using ioredis.", "type": "module", diff --git a/packages/services/service-cluster/CHANGELOG.md b/packages/services/service-cluster/CHANGELOG.md index a118f0af2..377876b71 100644 --- a/packages/services/service-cluster/CHANGELOG.md +++ b/packages/services/service-cluster/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-cluster +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-cluster/package.json b/packages/services/service-cluster/package.json index 692f98306..5a3f52194 100644 --- a/packages/services/service-cluster/package.json +++ b/packages/services/service-cluster/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Cluster Service for ObjectStack — pluggable PubSub/Lock/KV/Counter primitives. Memory driver included; postgres/redis drivers ship separately.", "type": "module", diff --git a/packages/services/service-datasource/CHANGELOG.md b/packages/services/service-datasource/CHANGELOG.md index e020eee55..7fdf71f81 100644 --- a/packages/services/service-datasource/CHANGELOG.md +++ b/packages/services/service-datasource/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-external-datasource +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-datasource/package.json b/packages/services/service-datasource/package.json index 689753b1a..da02d76ff 100644 --- a/packages/services/service-datasource/package.json +++ b/packages/services/service-datasource/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-datasource", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "The datasource service (ADR-0015): external-table federation (introspect/draft/import/validate) + runtime UI datasource lifecycle (list/test/create/update/remove + REST routes). Open-source mechanism; the tier line falls on which ICryptoProvider / driver factory a host injects.", "type": "module", diff --git a/packages/services/service-feed/CHANGELOG.md b/packages/services/service-feed/CHANGELOG.md index 633c1ce4d..2116c10fd 100644 --- a/packages/services/service-feed/CHANGELOG.md +++ b/packages/services/service-feed/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-feed +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-feed/package.json b/packages/services/service-feed/package.json index 648d7c8db..a0082e3c6 100644 --- a/packages/services/service-feed/package.json +++ b/packages/services/service-feed/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-feed", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Feed/Chatter Service for ObjectStack — implements IFeedService with in-memory adapter for comments, reactions, field changes, and record subscriptions", "type": "module", diff --git a/packages/services/service-i18n/CHANGELOG.md b/packages/services/service-i18n/CHANGELOG.md index 833aa0796..c61be64ed 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-i18n +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index 0431b6e71..5c6a85ba0 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "I18n Service for ObjectStack — implements II18nService with file-based locale loading", "type": "module", diff --git a/packages/services/service-job/CHANGELOG.md b/packages/services/service-job/CHANGELOG.md index b02dc2061..c1a5b3a86 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-job +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index acadca1c0..339ab2473 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Job Service for ObjectStack — implements IJobService with setInterval and cron scheduling", "type": "module", diff --git a/packages/services/service-knowledge/CHANGELOG.md b/packages/services/service-knowledge/CHANGELOG.md index 0e8897300..852510e83 100644 --- a/packages/services/service-knowledge/CHANGELOG.md +++ b/packages/services/service-knowledge/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-knowledge +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-knowledge/package.json b/packages/services/service-knowledge/package.json index 0665ea47e..fc883e8d6 100644 --- a/packages/services/service-knowledge/package.json +++ b/packages/services/service-knowledge/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-knowledge", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Knowledge Service for ObjectStack — orchestrator implementing IKnowledgeService over pluggable IKnowledgeAdapter backends (RAGFlow, LlamaIndex, Dify, in-memory).", "type": "module", diff --git a/packages/services/service-messaging/CHANGELOG.md b/packages/services/service-messaging/CHANGELOG.md index 8d990a6f5..dcb958e49 100644 --- a/packages/services/service-messaging/CHANGELOG.md +++ b/packages/services/service-messaging/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-messaging +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-messaging/package.json b/packages/services/service-messaging/package.json index d8943efc3..0c07176ef 100644 --- a/packages/services/service-messaging/package.json +++ b/packages/services/service-messaging/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-messaging", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Messaging Service for ObjectStack — outbound notification dispatch (ADR-0012). Ships the MessagingChannel registry, emit() fan-out, and the always-on inbox channel; other channels (email/webhook/push/IM) plug in.", "type": "module", diff --git a/packages/services/service-package/CHANGELOG.md b/packages/services/service-package/CHANGELOG.md index cd7f9213b..226572094 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,43 @@ # @objectstack/service-package +## 7.8.0 + +### Patch Changes + +- 4fbb86a: feat(packages): consolidate the package subsystem so AI-built app packages surface in Studio + + The package subsystem was split across two stores that never met: the in-memory + `SchemaRegistry` (what the dispatcher's `/api/v1/packages` list/detail and + `getMetaItems({type:'package'})` read — i.e. Studio's package selector) and the durable + `sys_packages` table (where the AI's auto app package, and any `package`-service publish, + were written). Nothing reconciled the two, so an AI-created `app.` package never + appeared in Studio. + + This unifies them around one write primitive and one read source: + + - **`protocol.installPackage`** is now implemented (it was declared-but-missing). It is the + single canonical write path: it registers the package in the in-memory registry **and** + best-effort persists it to `sys_packages` via the `package` service. Non-fatal when no + `package` service is wired (registry write still succeeds). + - **Dispatcher `POST /api/v1/packages`** routes through `protocol.installPackage` (falling + back to the bare registry write when the protocol is unavailable), so HTTP installs are + durable too. + - **`@objectstack/service-package`** reconciles `sys_packages` back into the registry on + boot, without clobbering filesystem-registered packages — so persisted packages survive a + restart and stay visible in the registry-backed read paths. + - **`@objectstack/service-ai`** `apply_blueprint` now homes an app via + `protocol.installPackage` (falling back to the legacy `package`-service publish), so the + app package lands where Studio reads it. + + Still the _legacy_ `package_id` plane — sealed `sys_package_version` versioning and + cross-environment promotion remain ADR-0027 follow-ups. + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index 9a773298f..9c2632db0 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Package management service for ObjectStack — publish, install, and manage packages", "type": "module", diff --git a/packages/services/service-queue/CHANGELOG.md b/packages/services/service-queue/CHANGELOG.md index c3c62f55f..843240bc1 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-queue +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index 2b2284d74..ee68e1fbb 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Queue Service for ObjectStack — implements IQueueService with in-memory and BullMQ adapters", "type": "module", diff --git a/packages/services/service-realtime/CHANGELOG.md b/packages/services/service-realtime/CHANGELOG.md index 42dafe72d..83a86e320 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-realtime +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index 0ea9e47ca..a6b4d3f45 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Realtime Service for ObjectStack — implements IRealtimeService with WebSocket and in-memory pub/sub", "type": "module", diff --git a/packages/services/service-settings/CHANGELOG.md b/packages/services/service-settings/CHANGELOG.md index 0bf9f0a78..9b81db0f7 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/service-settings +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/platform-objects@7.8.0 + - @objectstack/types@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index 056648d96..3f1038754 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Settings service for ObjectStack — manifest registry + K/V resolver (Env > Tenant > User > Default) + REST routes. See ADR-0007.", "type": "module", diff --git a/packages/services/service-storage/CHANGELOG.md b/packages/services/service-storage/CHANGELOG.md index f22047a23..97c942230 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-storage +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + - @objectstack/core@7.8.0 + - @objectstack/observability@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index 4acf61823..53c74ab84 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Storage Service for ObjectStack — implements IStorageService with local filesystem and S3 adapter skeleton", "type": "module", diff --git a/packages/spec/CHANGELOG.md b/packages/spec/CHANGELOG.md index 4df08d807..84d6b6d62 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,46 @@ # @objectstack/spec +## 7.8.0 + +### Minor Changes + +- 36719db: fix: AI-built apps are usable immediately — sync new object tables on publish + emit valid kanban config + + Two gaps found by end-to-end testing of an AI-built app: + + 1. **A freshly-published object couldn't accept records until a server restart.** Publishing a drafted object registered it in the in-memory registry but never created its physical table (table sync only ran at boot), so inserts failed with `object_not_found` ("no such table"). Added `ObjectQL.syncObjectSchema(name)` (a targeted, idempotent single-object schema sync) and call it from the publish paths (`protocol.publishMetaItem` and `saveMetaItem` mode:'publish', via `ensureObjectStorage`). Best-effort + non-fatal. New objects are now CRUD-able the moment they're published. + + 2. **AI-generated kanban views rendered as plain lists** (and sometimes failed validation). The blueprint `viewBody` emitted `list.type:'kanban'` with no `kanban` config; `KanbanConfigSchema` requires `groupByField` **and** `columns`. Added an optional `groupBy` to the blueprint view schema (lenient + strict) and have `apply_blueprint` set `list.kanban = { groupByField, columns }` — using the view's explicit `groupBy` when given, else inferring the object's first `select` field. AI-built kanban views now validate, publish, and carry a real group-by field. + +### Patch Changes + +- 06f2bbb: fix(ai): make ADR-0033 blueprint authoring work with OpenAI structured outputs + + Two bugs surfaced by a live end-to-end run (Studio chat → blueprint → draft → review → publish) against a real model (OpenAI via the Vercel AI Gateway) — both invisible to the existing unit tests: + + 1. **`propose_blueprint` failed against OpenAI strict structured outputs.** `SolutionBlueprintSchema` uses optional fields and a free-form `seedData` record; OpenAI's strict mode requires every property listed in `required` and rejects open `additionalProperties`, so `generateObject` errored (`'required' … must include every key in properties`) and the agent silently fell back to free-text. Adds `SolutionBlueprintStrictSchema` — a strict-compatible mirror (optional → nullable, no `z.record`) used **only** as the `generateObject` output contract. The lenient `SolutionBlueprintSchema` (and every existing consumer/test) is unchanged; the blueprint tools strip the `null`s the strict contract emits so downstream stays clean. + + 2. **Tool-only assistant turns failed to persist.** `ai_messages.content` is required, but an assistant turn that only calls a tool has no text, so the insert failed, the turn was dropped, and the next turn lost context (the agent re-proposed instead of applying the confirmed blueprint). `ObjectQLConversationService.addMessage` now synthesizes a readable placeholder from the tool names (`(called propose_blueprint)`) plus a defensive non-empty fallback. + + With both fixes the full plan-first loop runs end-to-end on OpenAI models: propose → confirm → batch-draft objects/views/dashboards/app → review/diff → publish. + +- 424ab26: fix(seed): reject object-wrapped relationship references and constrain them at compile time + + Seed datasets resolve `lookup` / `master_detail` references by matching the value + against the target record's externalId — so the value must be the plain natural-key + string (e.g. `account: 'Acme Corp'`), never a wrapper object like + `account: { externalId: 'Acme Corp' }`. The wrapper was silently skipped by the + loader, fell through unresolved, and reached the SQL driver as a non-bindable value — + masked on an always-empty `:memory:` DB but crashing on a persistent one with + "SQLite3 can only bind numbers, strings, bigints, buffers, and null" once seeds re-ran + as updates. + + - `defineDataset` now constrains reference fields to `string | null` at compile time + (derived from each field's `type`), so the object form is a type error. + - `SeedLoaderService` now fails loudly with an actionable message (and drops the value + instead of handing it to the driver) when a reference is an object — consistent + behavior across all drivers, no longer silently masked. + ## 7.7.0 ### Minor Changes diff --git a/packages/spec/package.json b/packages/spec/package.json index 6afaf514d..f52d01c1d 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "7.7.0", + "version": "7.8.0", "description": "ObjectStack Protocol & Specification - TypeScript Interfaces, JSON Schemas, and Convention Configurations", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/types/CHANGELOG.md b/packages/types/CHANGELOG.md index e568f996f..229f71342 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/types +## 7.8.0 + +### Patch Changes + +- Updated dependencies [06f2bbb] +- Updated dependencies [36719db] +- Updated dependencies [424ab26] + - @objectstack/spec@7.8.0 + ## 7.7.0 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index c8145fadb..3a2216fe0 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "7.7.0", + "version": "7.8.0", "license": "Apache-2.0", "description": "Shared interfaces describing the ObjectStack Runtime environment", "main": "dist/index.js", diff --git a/packages/vscode-objectstack/CHANGELOG.md b/packages/vscode-objectstack/CHANGELOG.md index 5f5a40b24..7c8a408ca 100644 --- a/packages/vscode-objectstack/CHANGELOG.md +++ b/packages/vscode-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # objectstack-vscode +## 7.8.0 + ## 7.7.0 ## 7.6.0 diff --git a/packages/vscode-objectstack/package.json b/packages/vscode-objectstack/package.json index a4baa9ea8..b415eaeae 100644 --- a/packages/vscode-objectstack/package.json +++ b/packages/vscode-objectstack/package.json @@ -2,7 +2,7 @@ "name": "objectstack-vscode", "displayName": "ObjectStack", "description": "ObjectStack Protocol — Autocomplete, validation, and inline diagnostics for .object.ts, .view.ts, and objectstack.config.ts files", - "version": "7.7.0", + "version": "7.8.0", "publisher": "objectstack", "license": "Apache-2.0", "repository": {