diff --git a/.changeset/v5-ai-protocol-focusing.md b/.changeset/v5-ai-protocol-focusing.md deleted file mode 100644 index c71777f035..0000000000 --- a/.changeset/v5-ai-protocol-focusing.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -"@objectstack/spec": major ---- - -# v1 AI Protocol focusing — remove application-template schemas - -The `@objectstack/spec/ai` protocol is reduced to **only the primitives -the runtime directly consumes**. Eight schemas that described -application templates or product features (not platform contracts) are -removed; three more are slimmed to their primitive cores. - -## Removed (8 files, ~4,700 lines) - -| File | Reason for removal | -|---|---| -| `ai/devops-agent.zod.ts` | A specific Agent template, not a primitive. Compose with `Agent + Skill + Tool`. | -| `ai/plugin-development.zod.ts` | Specific workflow; same reasoning. | -| `ai/runtime-ops.zod.ts` | AIOps is a vertical product, not a backend platform concern. | -| `ai/predictive.zod.ts` | ML pipeline product (DataRobot/H2O space), orthogonal to metadata-driven backend. | -| `ai/agent-action.zod.ts` | 100% conceptual overlap with `tool` + `flow`. | -| `ai/orchestration.zod.ts` | Multi-agent plans can be expressed as agents-as-tools. Premature. | -| `ai/nlq.zod.ts` | NLQ is LLM-native capability + a `query_data` tool over ObjectQL, not a protocol. | -| `ai/feedback-loop.zod.ts` | RLHF / training-side concern; not platform-owned. | - -## Slimmed (3 files) - -- **`ai/rag-pipeline.zod.ts` → `ai/embedding.zod.ts`** (318 → 80 lines). - Keeps `EmbeddingModelSchema` + `VectorStoreSchema` primitives. - Removed: chunking strategies, retrieval pipelines, rerankers, - document loaders, end-to-end RAG pipeline DSL. The `ragPipelines` - field on `defineStack()` is removed. -- **`ai/cost.zod.ts` → `ai/usage.zod.ts`** (431 → ~70 lines). - Keeps `TokenUsageSchema` + `AIUsageRecordSchema`. Model pricing is - the canonical `ModelPricingSchema` already exported from - `ai/model-registry.zod.ts`. Removed: budget definitions, - enforcement, alerts, allocation reports, optimization - recommendations. -- **`ai/mcp.zod.ts`** (629 → ~100 lines). Defines only how to - *reference* an external MCP server and *bind* its tools to an - agent. The MCP protocol itself is owned by Anthropic's published - spec and the `@modelcontextprotocol/sdk`; we no longer re-declare - transport/capability/resource/prompt/streaming/sampling shapes. - -## Migration - -No production code in this repository depended on the removed -schemas. Downstream consumers that imported any of the removed types -from `@objectstack/spec/ai` must: - -1. **Remove the import.** The platform no longer provides these types. -2. **Define your own application-level shape** in your project / plugin - if you still need the concept. The primitives (`Agent`, `Skill`, - `Tool`, `Conversation`, `Embedding`, `Usage`, `MCP{ServerRef,ToolBinding}`) - are sufficient to express every removed schema. -3. For RAG: replace `RAGPipelineConfig` with your own pipeline - description built on `EmbeddingModelSchema` + `VectorStoreSchema`. -4. For cost: replace budget enforcement with your own service built - on `AIUsageRecordSchema` records. - -## Why - -The platform's job is to define **primitives that any AI feature can -be built on top of**, leveraging the metadata-driven nature of -ObjectStack. The removed schemas described specific product features -(DevOps agent, AIOps, RAG pipeline DSL, budget enforcement) that -should live in plugins or applications — not in the canonical -protocol. Shipping a 6,245-line AI protocol where 80% of it has no -runtime implementation creates false promises to integrators. - -After this change the AI protocol is: - -``` -ai/ -├── agent.zod.ts ← who -├── skill.zod.ts ← when -├── tool.zod.ts ← what -├── conversation.zod.ts ← what to remember -├── model-registry.zod.ts ← which LLMs -├── embedding.zod.ts ← embedding + vector store primitives -├── usage.zod.ts ← token + cost accounting -└── mcp.zod.ts ← external ecosystem bridge -``` - -8 files, ~1,200 lines. Every schema has a runtime implementation in -`@objectstack/service-ai` or `@objectstack/plugin-mcp-server`. diff --git a/.changeset/v5-ai-v1-capabilities.md b/.changeset/v5-ai-v1-capabilities.md deleted file mode 100644 index 7f35d0e23d..0000000000 --- a/.changeset/v5-ai-v1-capabilities.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -'@objectstack/service-ai': minor -'@objectstack/spec': minor -'@example/app-todo': patch ---- - -feat(ai): v1 AI capabilities — ModelRegistry, structured output, tracing, schema retrieval, and `query_data` tool - -This release lights up the first concrete capabilities on the slimmed AI protocol. All additions are -non-breaking — new contract methods are optional and existing callers keep working unchanged. - -### What's new - -- **ModelRegistry** (`@objectstack/service-ai`): in-memory runtime registry for `AI.ModelConfig`. - Wire models via `AIServicePluginOptions.models` / `defaultModelId`. Exposes `get`, `getOrThrow`, - `getDefault`, `list`, and `estimateCost(modelId, usage)` for ex-post token cost computation. - -- **ai_traces object + auto-tracing**: every LLM call from `AIService` (`chat`, `complete`, - `stream_chat`, `chat_with_tools`, `generate_object`, `embed`) is now instrumented with latency, - token usage, status, and (when pricing is registered) cost. The default `ObjectQLTraceRecorder` - is auto-wired when the runtime exposes an `IDataEngine`, persisting rows to the new `ai_traces` - object. Drop in a custom `TraceRecorder` via `AIServicePluginOptions.traceRecorder`, or pass - `null` to opt out. - -- **Structured output (`IAIService.generateObject`)**: new optional method on `IAIService` and - `LLMAdapter` that returns a parsed, schema-validated object instead of free-form text. - Implemented end-to-end in `VercelLLMAdapter` (uses the AI SDK's `generateObject` — provider - strict-mode is automatic when supported). `MemoryLLMAdapter` ships a deterministic heuristic - implementation so tests and demos work without an API key. - -- **SchemaRetriever**: lightweight keyword-based retriever over `IMetadataService.listObjects()`. - Scores by object name (×3), label/plural (×2), description (×1), field name (×2), and field - label (×1) with English stop-word filtering. Tokenisation splits snake_case so `todo_task` in - a query matches `name: 'todo_task'`. `SchemaRetriever.renderSnippet()` produces a Markdown - block ready to inject into a system prompt — no embeddings, no extra infra. - -- **`query_data` tool**: auto-registered when AI + Metadata + Data engine are all present. Takes - a natural-language `request`, retrieves relevant schemas, asks the model for a structured - `QueryPlan` via `generateObject`, validates the plan targets a real object, and executes it - through `IDataEngine.find`. Returns `{ plan, count, records }`. The composed primitive that - closes the loop from "ask in English" → "validated SQL-shaped result". - -- **Working demo in `examples/app-todo`**: `pnpm --filter @example/app-todo test:ai` boots the - full Todo stack, invokes `query_data` against the seeded tasks, and verifies the call lands - in `ai_traces`. Zero API keys, ~3 seconds end-to-end. Serves as the canonical reference for - wiring AI into a real app. - -### Hardening - -- Strict tool schemas: nested `orderBy` and `aggregations` items in `data-tools` now declare - `additionalProperties: false` + `required`, matching the top-level contract and making them - safe for provider strict mode. - -### Breaking-ish - -- `TraceOperation` values are now snake_case (`stream_chat`, `chat_with_tools`, `generate_object`) - to match the project's data-value convention and so the `ai_traces.operation` select validates. - Custom `TraceRecorder` implementations that hard-code the old camelCase names need to be - updated. The values are an internal observability artefact — no public protocol surface - exposes them. - -### Notes - -- `zod` is now a direct dependency of `@objectstack/service-ai` (previously transitive via `ai`) - because contract signatures and the new tool definition use `z.ZodType` types directly. -- All new methods on `IAIService` / `LLMAdapter` are optional — existing custom adapters and - callers continue to work without changes. -- 12 new unit tests cover `ModelRegistry` (cost math, defaults, throwing lookups) and - `SchemaRetriever` (scoring, snake_case tokenisation, limits, snippet rendering). - Full suite: 323/323 ✓. - diff --git a/.changeset/v5-project-to-environment-rename.md b/.changeset/v5-project-to-environment-rename.md deleted file mode 100644 index 52ce0c7d90..0000000000 --- a/.changeset/v5-project-to-environment-rename.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -"@objectstack/cli": major -"@objectstack/runtime": major -"@objectstack/rest": major -"@objectstack/client": major -"@objectstack/spec": major -"@objectstack/metadata": major -"@objectstack/platform-objects": major ---- - -# v5.0 — `project` → `environment` hard rename - -The runtime concept previously called **"project"** (per-tenant business -workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, -per-project DB, per-project artifact) is now uniformly called -**"environment"**. - -This is a **hard rename with no aliases, deprecation shims, or compatibility -layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any -clients calling the REST API. - -> Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, -> tsconfig project references, vitest `projects` config) is **unchanged**. - -## Breaking changes - -### CLI - -- Flags renamed: - - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) - - `--project-id` → `--environment-id` (`os dev`) -- Default local env id: `proj_local` → `env_local`. -- Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. -- Command group renamed: `os projects ...` → `os environments ...` - (`bind`, `create`, `list`, `show`, `switch`). -- Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. - -### HTTP / REST - -- Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. -- Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` - (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, - `/cloud/environments/:id/credentials/rotate`, etc.). -- Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` - (`x-environment-id`). -- Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. -- Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. - -### Runtime / spec - -- Exported symbols (no aliases): - - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` - - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` - - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` - - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` - - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` - - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` -- Plugin identifier strings: - - `com.objectstack.runtime.objectos-project` → `objectos-environment` - - `com.objectstack.studio.single-project` → `single-environment` - - `com.objectstack.multi-project` → `multi-environment` - - `com.objectstack.runtime.system-project` → `system-environment` -- Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. - -### Database / schemas - -- Column renames on `sys_metadata` and `sys_metadata_history`: - `project_id` → `environment_id`. -- Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). -- Object renames in platform-objects metadata: `sys_project` → `sys_environment` - (lookup targets), `sys_project_member` → `sys_environment_member`, - `sys_project_credential` → `sys_environment_credential`. -- Auth-context field: `active_project_id` → `active_environment_id`. -- JSON schemas under `packages/spec/json-schema/system/`: - `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). - -### Automatic forward migration - -A new migration `migrateProjectIdToEnvironmentId` -(`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) -auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any -existing `project_id` column on `sys_metadata` / `sys_metadata_history` to -`environment_id` (idempotent, best-effort). Existing rows are preserved. - -The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim -for historical / disaster-recovery use; it is **not** auto-run. - -## Migration guide - -```diff --os publish --project proj_xyz -+os publish --environment env_xyz - --curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer -+curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer - --OS_PROJECT_ID=env_xyz os dev -+OS_ENVIRONMENT_ID=env_xyz os dev - --import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; -+import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; - --import { ProjectArtifactSchema } from "@objectstack/spec"; -+import { EnvironmentArtifactSchema } from "@objectstack/spec"; -``` - -If you maintain a Cloud control-plane deployment, the `cloud` repository must -be updated in lockstep to pick up the new plugin identifier strings -(`single-environment`, `multi-environment`, `objectos-environment`). diff --git a/apps/account/CHANGELOG.md b/apps/account/CHANGELOG.md index c08ef29705..08bcc0e367 100644 --- a/apps/account/CHANGELOG.md +++ b/apps/account/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/account +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/client@6.0.0 + - @objectstack/client-react@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/apps/account/package.json b/apps/account/package.json index 761894cf71..ed66d186ac 100644 --- a/apps/account/package.json +++ b/apps/account/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/account", - "version": "5.2.0", + "version": "6.0.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 deafb56956..82a03a67c4 100644 --- a/examples/app-crm/CHANGELOG.md +++ b/examples/app-crm/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/example-crm +## 4.0.12 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/runtime@6.0.0 + ## 4.0.11 ### Patch Changes diff --git a/examples/app-crm/package.json b/examples/app-crm/package.json index 6bf01f9e0d..3da1069cf7 100644 --- a/examples/app-crm/package.json +++ b/examples/app-crm/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/example-crm", - "version": "4.0.11", + "version": "4.0.12", "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-todo/CHANGELOG.md b/examples/app-todo/CHANGELOG.md index 6db1e4bc25..354a6a7d86 100644 --- a/examples/app-todo/CHANGELOG.md +++ b/examples/app-todo/CHANGELOG.md @@ -1,5 +1,85 @@ # @objectstack/example-todo +## 4.0.12 + +### Patch Changes + +- dbc4f7d: feat(ai): v1 AI capabilities — ModelRegistry, structured output, tracing, schema retrieval, and `query_data` tool + + This release lights up the first concrete capabilities on the slimmed AI protocol. All additions are + non-breaking — new contract methods are optional and existing callers keep working unchanged. + + ### What's new + + - **ModelRegistry** (`@objectstack/service-ai`): in-memory runtime registry for `AI.ModelConfig`. + Wire models via `AIServicePluginOptions.models` / `defaultModelId`. Exposes `get`, `getOrThrow`, + `getDefault`, `list`, and `estimateCost(modelId, usage)` for ex-post token cost computation. + + - **ai_traces object + auto-tracing**: every LLM call from `AIService` (`chat`, `complete`, + `stream_chat`, `chat_with_tools`, `generate_object`, `embed`) is now instrumented with latency, + token usage, status, and (when pricing is registered) cost. The default `ObjectQLTraceRecorder` + is auto-wired when the runtime exposes an `IDataEngine`, persisting rows to the new `ai_traces` + object. Drop in a custom `TraceRecorder` via `AIServicePluginOptions.traceRecorder`, or pass + `null` to opt out. + + - **Structured output (`IAIService.generateObject`)**: new optional method on `IAIService` and + `LLMAdapter` that returns a parsed, schema-validated object instead of free-form text. + Implemented end-to-end in `VercelLLMAdapter` (uses the AI SDK's `generateObject` — provider + strict-mode is automatic when supported). `MemoryLLMAdapter` ships a deterministic heuristic + implementation so tests and demos work without an API key. + + - **SchemaRetriever**: lightweight keyword-based retriever over `IMetadataService.listObjects()`. + Scores by object name (×3), label/plural (×2), description (×1), field name (×2), and field + label (×1) with English stop-word filtering. Tokenisation splits snake_case so `todo_task` in + a query matches `name: 'todo_task'`. `SchemaRetriever.renderSnippet()` produces a Markdown + block ready to inject into a system prompt — no embeddings, no extra infra. + + - **`query_data` tool**: auto-registered when AI + Metadata + Data engine are all present. Takes + a natural-language `request`, retrieves relevant schemas, asks the model for a structured + `QueryPlan` via `generateObject`, validates the plan targets a real object, and executes it + through `IDataEngine.find`. Returns `{ plan, count, records }`. The composed primitive that + closes the loop from "ask in English" → "validated SQL-shaped result". + + - **Working demo in `examples/app-todo`**: `pnpm --filter @example/app-todo test:ai` boots the + full Todo stack, invokes `query_data` against the seeded tasks, and verifies the call lands + in `ai_traces`. Zero API keys, ~3 seconds end-to-end. Serves as the canonical reference for + wiring AI into a real app. + + ### Hardening + + - Strict tool schemas: nested `orderBy` and `aggregations` items in `data-tools` now declare + `additionalProperties: false` + `required`, matching the top-level contract and making them + safe for provider strict mode. + + ### Breaking-ish + + - `TraceOperation` values are now snake_case (`stream_chat`, `chat_with_tools`, `generate_object`) + to match the project's data-value convention and so the `ai_traces.operation` select validates. + Custom `TraceRecorder` implementations that hard-code the old camelCase names need to be + updated. The values are an internal observability artefact — no public protocol surface + exposes them. + + ### Notes + + - `zod` is now a direct dependency of `@objectstack/service-ai` (previously transitive via `ai`) + because contract signatures and the new tool definition use `z.ZodType` types directly. + - All new methods on `IAIService` / `LLMAdapter` are optional — existing custom adapters and + callers continue to work without changes. + - 12 new unit tests cover `ModelRegistry` (cost math, defaults, throwing lookups) and + `SchemaRetriever` (scoring, snake_case tokenisation, limits, snippet rendering). + Full suite: 323/323 ✓. + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/service-ai@6.0.0 + - @objectstack/runtime@6.0.0 + - @objectstack/client@6.0.0 + - @objectstack/metadata@6.0.0 + - @objectstack/objectql@6.0.0 + - @objectstack/driver-sqlite-wasm@5.2.1 + ## 4.0.11 ### Patch Changes diff --git a/examples/app-todo/package.json b/examples/app-todo/package.json index 5096f1f3fd..e9a6f77d9b 100644 --- a/examples/app-todo/package.json +++ b/examples/app-todo/package.json @@ -1,6 +1,6 @@ { "name": "@example/app-todo", - "version": "4.0.11", + "version": "4.0.12", "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 bd3587c0aa..087f04137e 100644 --- a/packages/adapters/express/CHANGELOG.md +++ b/packages/adapters/express/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/express +## 6.0.0 + +### Patch Changes + +- Updated dependencies [944f187] + - @objectstack/runtime@6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/adapters/express/package.json b/packages/adapters/express/package.json index 9f467b0e0c..714952f8f8 100644 --- a/packages/adapters/express/package.json +++ b/packages/adapters/express/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/express", - "version": "5.2.0", + "version": "6.0.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 8b12bf77d6..2fcd3969dd 100644 --- a/packages/adapters/fastify/CHANGELOG.md +++ b/packages/adapters/fastify/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/fastify +## 6.0.0 + +### Patch Changes + +- Updated dependencies [944f187] + - @objectstack/runtime@6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/adapters/fastify/package.json b/packages/adapters/fastify/package.json index ac1a6b6557..dcf5d8e3f9 100644 --- a/packages/adapters/fastify/package.json +++ b/packages/adapters/fastify/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/fastify", - "version": "5.2.0", + "version": "6.0.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 9085e8920d..1c126cdc39 100644 --- a/packages/adapters/hono/CHANGELOG.md +++ b/packages/adapters/hono/CHANGELOG.md @@ -1,5 +1,13 @@ # @objectstack/hono +## 6.0.0 + +### Patch Changes + +- Updated dependencies [944f187] + - @objectstack/runtime@6.0.0 + - @objectstack/plugin-hono-server@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index 0eec1508cd..a09e8d5abd 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/hono", - "version": "5.2.0", + "version": "6.0.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 f843817e78..205a63d769 100644 --- a/packages/adapters/nestjs/CHANGELOG.md +++ b/packages/adapters/nestjs/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/nestjs +## 6.0.0 + +### Patch Changes + +- Updated dependencies [944f187] + - @objectstack/runtime@6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/adapters/nestjs/package.json b/packages/adapters/nestjs/package.json index 84df2c9f22..38ba2ea250 100644 --- a/packages/adapters/nestjs/package.json +++ b/packages/adapters/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nestjs", - "version": "5.2.0", + "version": "6.0.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 b8b0ecb1ae..bdc15d2ad0 100644 --- a/packages/adapters/nextjs/CHANGELOG.md +++ b/packages/adapters/nextjs/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/nextjs +## 6.0.0 + +### Patch Changes + +- Updated dependencies [944f187] + - @objectstack/runtime@6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/adapters/nextjs/package.json b/packages/adapters/nextjs/package.json index c6fcc76473..02d286d422 100644 --- a/packages/adapters/nextjs/package.json +++ b/packages/adapters/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nextjs", - "version": "5.2.0", + "version": "6.0.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 092a2e08c3..6f9c0375f9 100644 --- a/packages/adapters/nuxt/CHANGELOG.md +++ b/packages/adapters/nuxt/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/nuxt +## 6.0.0 + +### Patch Changes + +- Updated dependencies [944f187] + - @objectstack/runtime@6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/adapters/nuxt/package.json b/packages/adapters/nuxt/package.json index 96f656076a..090a62e9ec 100644 --- a/packages/adapters/nuxt/package.json +++ b/packages/adapters/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/nuxt", - "version": "5.2.0", + "version": "6.0.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 9c5aede6d5..68bea120b1 100644 --- a/packages/adapters/sveltekit/CHANGELOG.md +++ b/packages/adapters/sveltekit/CHANGELOG.md @@ -1,5 +1,12 @@ # @objectstack/sveltekit +## 6.0.0 + +### Patch Changes + +- Updated dependencies [944f187] + - @objectstack/runtime@6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/adapters/sveltekit/package.json b/packages/adapters/sveltekit/package.json index 7bcd4740f3..d1e9d2d5ea 100644 --- a/packages/adapters/sveltekit/package.json +++ b/packages/adapters/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/sveltekit", - "version": "5.2.0", + "version": "6.0.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 fed079b19c..b985e39fae 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,148 @@ # @objectstack/cli +## 6.0.0 + +### Major Changes + +- 944f187: # v5.0 — `project` → `environment` hard rename + + The runtime concept previously called **"project"** (per-tenant business + workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, + per-project DB, per-project artifact) is now uniformly called + **"environment"**. + + This is a **hard rename with no aliases, deprecation shims, or compatibility + layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any + clients calling the REST API. + + > Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, + > tsconfig project references, vitest `projects` config) is **unchanged**. + + ## Breaking changes + + ### CLI + + - Flags renamed: + - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) + - `--project-id` → `--environment-id` (`os dev`) + - Default local env id: `proj_local` → `env_local`. + - Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. + - Command group renamed: `os projects ...` → `os environments ...` + (`bind`, `create`, `list`, `show`, `switch`). + - Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. + + ### HTTP / REST + + - Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. + - Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` + (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, + `/cloud/environments/:id/credentials/rotate`, etc.). + - Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` + (`x-environment-id`). + - Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. + - Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. + + ### Runtime / spec + + - Exported symbols (no aliases): + - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` + - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` + - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` + - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` + - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` + - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` + - Plugin identifier strings: + - `com.objectstack.runtime.objectos-project` → `objectos-environment` + - `com.objectstack.studio.single-project` → `single-environment` + - `com.objectstack.multi-project` → `multi-environment` + - `com.objectstack.runtime.system-project` → `system-environment` + - Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. + + ### Database / schemas + + - Column renames on `sys_metadata` and `sys_metadata_history`: + `project_id` → `environment_id`. + - Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). + - Object renames in platform-objects metadata: `sys_project` → `sys_environment` + (lookup targets), `sys_project_member` → `sys_environment_member`, + `sys_project_credential` → `sys_environment_credential`. + - Auth-context field: `active_project_id` → `active_environment_id`. + - JSON schemas under `packages/spec/json-schema/system/`: + `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). + + ### Automatic forward migration + + A new migration `migrateProjectIdToEnvironmentId` + (`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) + auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any + existing `project_id` column on `sys_metadata` / `sys_metadata_history` to + `environment_id` (idempotent, best-effort). Existing rows are preserved. + + The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim + for historical / disaster-recovery use; it is **not** auto-run. + + ## Migration guide + + ```diff + -os publish --project proj_xyz + +os publish --environment env_xyz + + -curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer + +curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer + + -OS_PROJECT_ID=env_xyz os dev + +OS_ENVIRONMENT_ID=env_xyz os dev + + -import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; + +import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; + + -import { ProjectArtifactSchema } from "@objectstack/spec"; + +import { EnvironmentArtifactSchema } from "@objectstack/spec"; + ``` + + If you maintain a Cloud control-plane deployment, the `cloud` repository must + be updated in lockstep to pick up the new plugin identifier strings + (`single-environment`, `multi-environment`, `objectos-environment`). + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/service-ai@6.0.0 + - @objectstack/runtime@6.0.0 + - @objectstack/rest@6.0.0 + - @objectstack/client@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/objectql@6.0.0 + - @objectstack/observability@6.0.0 + - @objectstack/driver-memory@6.0.0 + - @objectstack/driver-mongodb@6.0.0 + - @objectstack/driver-sql@6.0.0 + - @objectstack/driver-sqlite-wasm@5.2.1 + - @objectstack/driver-turso@6.0.0 + - @objectstack/plugin-approvals@6.0.0 + - @objectstack/plugin-audit@6.0.0 + - @objectstack/plugin-auth@6.0.0 + - @objectstack/plugin-email@6.0.0 + - @objectstack/plugin-hono-server@6.0.0 + - @objectstack/plugin-mcp-server@6.0.0 + - @objectstack/plugin-reports@6.0.0 + - @objectstack/plugin-security@6.0.0 + - @objectstack/plugin-sharing@6.0.0 + - @objectstack/plugin-webhooks@6.0.0 + - @objectstack/service-analytics@6.0.0 + - @objectstack/service-automation@6.0.0 + - @objectstack/service-cache@6.0.0 + - @objectstack/service-feed@6.0.0 + - @objectstack/service-job@6.0.0 + - @objectstack/service-package@6.0.0 + - @objectstack/service-queue@6.0.0 + - @objectstack/service-realtime@6.0.0 + - @objectstack/service-settings@6.0.0 + - @objectstack/service-storage@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 378c35277d..6a97dde012 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/cli", - "version": "5.2.0", + "version": "6.0.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 de4334c0db..8076dfde32 100644 --- a/packages/client-react/CHANGELOG.md +++ b/packages/client-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/client-react +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/client@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/client-react/package.json b/packages/client-react/package.json index 1ad02e84f4..c0a3cfd961 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client-react", - "version": "5.2.0", + "version": "6.0.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 1d828455dd..3ddefaee75 100644 --- a/packages/client/CHANGELOG.md +++ b/packages/client/CHANGELOG.md @@ -1,5 +1,117 @@ # @objectstack/client +## 6.0.0 + +### Major Changes + +- 944f187: # v5.0 — `project` → `environment` hard rename + + The runtime concept previously called **"project"** (per-tenant business + workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, + per-project DB, per-project artifact) is now uniformly called + **"environment"**. + + This is a **hard rename with no aliases, deprecation shims, or compatibility + layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any + clients calling the REST API. + + > Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, + > tsconfig project references, vitest `projects` config) is **unchanged**. + + ## Breaking changes + + ### CLI + + - Flags renamed: + - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) + - `--project-id` → `--environment-id` (`os dev`) + - Default local env id: `proj_local` → `env_local`. + - Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. + - Command group renamed: `os projects ...` → `os environments ...` + (`bind`, `create`, `list`, `show`, `switch`). + - Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. + + ### HTTP / REST + + - Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. + - Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` + (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, + `/cloud/environments/:id/credentials/rotate`, etc.). + - Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` + (`x-environment-id`). + - Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. + - Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. + + ### Runtime / spec + + - Exported symbols (no aliases): + - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` + - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` + - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` + - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` + - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` + - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` + - Plugin identifier strings: + - `com.objectstack.runtime.objectos-project` → `objectos-environment` + - `com.objectstack.studio.single-project` → `single-environment` + - `com.objectstack.multi-project` → `multi-environment` + - `com.objectstack.runtime.system-project` → `system-environment` + - Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. + + ### Database / schemas + + - Column renames on `sys_metadata` and `sys_metadata_history`: + `project_id` → `environment_id`. + - Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). + - Object renames in platform-objects metadata: `sys_project` → `sys_environment` + (lookup targets), `sys_project_member` → `sys_environment_member`, + `sys_project_credential` → `sys_environment_credential`. + - Auth-context field: `active_project_id` → `active_environment_id`. + - JSON schemas under `packages/spec/json-schema/system/`: + `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). + + ### Automatic forward migration + + A new migration `migrateProjectIdToEnvironmentId` + (`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) + auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any + existing `project_id` column on `sys_metadata` / `sys_metadata_history` to + `environment_id` (idempotent, best-effort). Existing rows are preserved. + + The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim + for historical / disaster-recovery use; it is **not** auto-run. + + ## Migration guide + + ```diff + -os publish --project proj_xyz + +os publish --environment env_xyz + + -curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer + +curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer + + -OS_PROJECT_ID=env_xyz os dev + +OS_ENVIRONMENT_ID=env_xyz os dev + + -import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; + +import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; + + -import { ProjectArtifactSchema } from "@objectstack/spec"; + +import { EnvironmentArtifactSchema } from "@objectstack/spec"; + ``` + + If you maintain a Cloud control-plane deployment, the `cloud` repository must + be updated in lockstep to pick up the new plugin identifier strings + (`single-environment`, `multi-environment`, `objectos-environment`). + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/client/package.json b/packages/client/package.json index 05baa2f7f5..d4b160a49d 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/client", - "version": "5.2.0", + "version": "6.0.0", "license": "Apache-2.0", "description": "Official Client SDK for ObjectStack Protocol", "main": "dist/index.js", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index e1ee2df04b..48c667edc4 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/core +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 2a1a6151c1..27e1a04415 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/core", - "version": "5.2.0", + "version": "6.0.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 d31fc8a527..3ae81eea48 100644 --- a/packages/create-objectstack/CHANGELOG.md +++ b/packages/create-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # create-objectstack +## 6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index db87e9005a..c285e18620 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -1,6 +1,6 @@ { "name": "create-objectstack", - "version": "5.2.0", + "version": "6.0.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 6a7a7f23c5..2d8318dc64 100644 --- a/packages/formula/CHANGELOG.md +++ b/packages/formula/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/formula +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/formula/package.json b/packages/formula/package.json index ea7ed11902..b35af1b710 100644 --- a/packages/formula/package.json +++ b/packages/formula/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/formula", - "version": "5.2.0", + "version": "6.0.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 f3b629daf0..e1c598f4e2 100644 --- a/packages/metadata-core/CHANGELOG.md +++ b/packages/metadata-core/CHANGELOG.md @@ -1,5 +1,7 @@ # @objectstack/metadata-core +## 6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index 7fc5b5981f..09ae8f710d 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-core", - "version": "5.2.0", + "version": "6.0.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 df25e9eb07..0dc3f37188 100644 --- a/packages/metadata-fs/CHANGELOG.md +++ b/packages/metadata-fs/CHANGELOG.md @@ -1,5 +1,11 @@ # @objectstack/metadata-fs +## 6.0.0 + +### Patch Changes + +- @objectstack/metadata-core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index 5ea1644ffe..249635c2ff 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata-fs", - "version": "5.2.0", + "version": "6.0.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 e82f41957e..17a9422fed 100644 --- a/packages/metadata/CHANGELOG.md +++ b/packages/metadata/CHANGELOG.md @@ -1,5 +1,121 @@ # @objectstack/metadata +## 6.0.0 + +### Major Changes + +- 944f187: # v5.0 — `project` → `environment` hard rename + + The runtime concept previously called **"project"** (per-tenant business + workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, + per-project DB, per-project artifact) is now uniformly called + **"environment"**. + + This is a **hard rename with no aliases, deprecation shims, or compatibility + layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any + clients calling the REST API. + + > Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, + > tsconfig project references, vitest `projects` config) is **unchanged**. + + ## Breaking changes + + ### CLI + + - Flags renamed: + - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) + - `--project-id` → `--environment-id` (`os dev`) + - Default local env id: `proj_local` → `env_local`. + - Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. + - Command group renamed: `os projects ...` → `os environments ...` + (`bind`, `create`, `list`, `show`, `switch`). + - Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. + + ### HTTP / REST + + - Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. + - Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` + (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, + `/cloud/environments/:id/credentials/rotate`, etc.). + - Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` + (`x-environment-id`). + - Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. + - Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. + + ### Runtime / spec + + - Exported symbols (no aliases): + - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` + - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` + - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` + - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` + - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` + - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` + - Plugin identifier strings: + - `com.objectstack.runtime.objectos-project` → `objectos-environment` + - `com.objectstack.studio.single-project` → `single-environment` + - `com.objectstack.multi-project` → `multi-environment` + - `com.objectstack.runtime.system-project` → `system-environment` + - Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. + + ### Database / schemas + + - Column renames on `sys_metadata` and `sys_metadata_history`: + `project_id` → `environment_id`. + - Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). + - Object renames in platform-objects metadata: `sys_project` → `sys_environment` + (lookup targets), `sys_project_member` → `sys_environment_member`, + `sys_project_credential` → `sys_environment_credential`. + - Auth-context field: `active_project_id` → `active_environment_id`. + - JSON schemas under `packages/spec/json-schema/system/`: + `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). + + ### Automatic forward migration + + A new migration `migrateProjectIdToEnvironmentId` + (`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) + auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any + existing `project_id` column on `sys_metadata` / `sys_metadata_history` to + `environment_id` (idempotent, best-effort). Existing rows are preserved. + + The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim + for historical / disaster-recovery use; it is **not** auto-run. + + ## Migration guide + + ```diff + -os publish --project proj_xyz + +os publish --environment env_xyz + + -curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer + +curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer + + -OS_PROJECT_ID=env_xyz os dev + +OS_ENVIRONMENT_ID=env_xyz os dev + + -import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; + +import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; + + -import { ProjectArtifactSchema } from "@objectstack/spec"; + +import { EnvironmentArtifactSchema } from "@objectstack/spec"; + ``` + + If you maintain a Cloud control-plane deployment, the `cloud` repository must + be updated in lockstep to pick up the new plugin identifier strings + (`single-environment`, `multi-environment`, `objectos-environment`). + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/types@6.0.0 + - @objectstack/metadata-core@6.0.0 + - @objectstack/metadata-fs@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 6177ca86b3..1f3a28dfee 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/metadata", - "version": "5.2.0", + "version": "6.0.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 63ce46eab3..79c3c4fbc8 100644 --- a/packages/objectql/CHANGELOG.md +++ b/packages/objectql/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/objectql +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/formula@6.0.0 + - @objectstack/types@6.0.0 + - @objectstack/metadata-core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/objectql/package.json b/packages/objectql/package.json index ec21c95a51..e0cdf2d453 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/objectql", - "version": "5.2.0", + "version": "6.0.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 bbb9e156e7..48a7f762e0 100644 --- a/packages/observability/CHANGELOG.md +++ b/packages/observability/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/observability +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/observability/package.json b/packages/observability/package.json index 8802fe6bc4..7c92c623ec 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/observability", - "version": "5.2.0", + "version": "6.0.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 957cfa0f4c..8642464e8c 100644 --- a/packages/platform-objects/CHANGELOG.md +++ b/packages/platform-objects/CHANGELOG.md @@ -1,5 +1,116 @@ # @objectstack/platform-objects +## 6.0.0 + +### Major Changes + +- 944f187: # v5.0 — `project` → `environment` hard rename + + The runtime concept previously called **"project"** (per-tenant business + workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, + per-project DB, per-project artifact) is now uniformly called + **"environment"**. + + This is a **hard rename with no aliases, deprecation shims, or compatibility + layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any + clients calling the REST API. + + > Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, + > tsconfig project references, vitest `projects` config) is **unchanged**. + + ## Breaking changes + + ### CLI + + - Flags renamed: + - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) + - `--project-id` → `--environment-id` (`os dev`) + - Default local env id: `proj_local` → `env_local`. + - Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. + - Command group renamed: `os projects ...` → `os environments ...` + (`bind`, `create`, `list`, `show`, `switch`). + - Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. + + ### HTTP / REST + + - Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. + - Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` + (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, + `/cloud/environments/:id/credentials/rotate`, etc.). + - Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` + (`x-environment-id`). + - Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. + - Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. + + ### Runtime / spec + + - Exported symbols (no aliases): + - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` + - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` + - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` + - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` + - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` + - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` + - Plugin identifier strings: + - `com.objectstack.runtime.objectos-project` → `objectos-environment` + - `com.objectstack.studio.single-project` → `single-environment` + - `com.objectstack.multi-project` → `multi-environment` + - `com.objectstack.runtime.system-project` → `system-environment` + - Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. + + ### Database / schemas + + - Column renames on `sys_metadata` and `sys_metadata_history`: + `project_id` → `environment_id`. + - Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). + - Object renames in platform-objects metadata: `sys_project` → `sys_environment` + (lookup targets), `sys_project_member` → `sys_environment_member`, + `sys_project_credential` → `sys_environment_credential`. + - Auth-context field: `active_project_id` → `active_environment_id`. + - JSON schemas under `packages/spec/json-schema/system/`: + `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). + + ### Automatic forward migration + + A new migration `migrateProjectIdToEnvironmentId` + (`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) + auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any + existing `project_id` column on `sys_metadata` / `sys_metadata_history` to + `environment_id` (idempotent, best-effort). Existing rows are preserved. + + The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim + for historical / disaster-recovery use; it is **not** auto-run. + + ## Migration guide + + ```diff + -os publish --project proj_xyz + +os publish --environment env_xyz + + -curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer + +curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer + + -OS_PROJECT_ID=env_xyz os dev + +OS_ENVIRONMENT_ID=env_xyz os dev + + -import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; + +import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; + + -import { ProjectArtifactSchema } from "@objectstack/spec"; + +import { EnvironmentArtifactSchema } from "@objectstack/spec"; + ``` + + If you maintain a Cloud control-plane deployment, the `cloud` repository must + be updated in lockstep to pick up the new plugin identifier strings + (`single-environment`, `multi-environment`, `objectos-environment`). + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + ## 5.2.0 ### Minor Changes diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index 188cbe6d47..6067305ef3 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/platform-objects", - "version": "5.2.0", + "version": "6.0.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 c5fdc71a36..0370e3b0f1 100644 --- a/packages/plugins/driver-memory/CHANGELOG.md +++ b/packages/plugins/driver-memory/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/driver-memory +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/driver-memory/package.json b/packages/plugins/driver-memory/package.json index 028a50c8fd..3262b68756 100644 --- a/packages/plugins/driver-memory/package.json +++ b/packages/plugins/driver-memory/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-memory", - "version": "5.2.0", + "version": "6.0.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 c1cca5fa54..66bd1647d8 100644 --- a/packages/plugins/driver-mongodb/CHANGELOG.md +++ b/packages/plugins/driver-mongodb/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/driver-mongodb +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/driver-mongodb/package.json b/packages/plugins/driver-mongodb/package.json index 47be27e4c7..2faa9e9cff 100644 --- a/packages/plugins/driver-mongodb/package.json +++ b/packages/plugins/driver-mongodb/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-mongodb", - "version": "5.2.0", + "version": "6.0.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 dca17b27f1..c68d16c258 100644 --- a/packages/plugins/driver-sql/CHANGELOG.md +++ b/packages/plugins/driver-sql/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/driver-sql +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/driver-sql/package.json b/packages/plugins/driver-sql/package.json index a8f55fc8f9..f2b18f067d 100644 --- a/packages/plugins/driver-sql/package.json +++ b/packages/plugins/driver-sql/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-sql", - "version": "5.2.0", + "version": "6.0.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 new file mode 100644 index 0000000000..c1fcb58797 --- /dev/null +++ b/packages/plugins/driver-sqlite-wasm/CHANGELOG.md @@ -0,0 +1,12 @@ +# @objectstack/driver-sqlite-wasm + +## 5.2.1 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/driver-sql@6.0.0 diff --git a/packages/plugins/driver-sqlite-wasm/package.json b/packages/plugins/driver-sqlite-wasm/package.json index bff8dbfc4e..60073f31fc 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": "5.2.0", + "version": "5.2.1", "license": "Apache-2.0", "description": "WASM SQLite Driver for ObjectStack — runs in browser/WebContainer (StackBlitz) without native bindings", "keywords": [ diff --git a/packages/plugins/driver-turso/CHANGELOG.md b/packages/plugins/driver-turso/CHANGELOG.md index 8aadab9795..2e425f2283 100644 --- a/packages/plugins/driver-turso/CHANGELOG.md +++ b/packages/plugins/driver-turso/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/driver-turso +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/driver-sql@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/driver-turso/package.json b/packages/plugins/driver-turso/package.json index b1ece15145..c3b3b717c3 100644 --- a/packages/plugins/driver-turso/package.json +++ b/packages/plugins/driver-turso/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/driver-turso", - "version": "5.2.0", + "version": "6.0.0", "license": "Apache-2.0", "description": "Turso/libSQL Driver for ObjectStack — Edge-first SQLite with embedded replicas and multi-tenancy", "keywords": [ diff --git a/packages/plugins/plugin-approvals/CHANGELOG.md b/packages/plugins/plugin-approvals/CHANGELOG.md index f2561104a1..85537a56f1 100644 --- a/packages/plugins/plugin-approvals/CHANGELOG.md +++ b/packages/plugins/plugin-approvals/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-approvals +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/formula@6.0.0 + - @objectstack/metadata-core@6.0.0 + ## 5.2.0 ### Minor Changes diff --git a/packages/plugins/plugin-approvals/package.json b/packages/plugins/plugin-approvals/package.json index 92ceba270b..f30f4e3d20 100644 --- a/packages/plugins/plugin-approvals/package.json +++ b/packages/plugins/plugin-approvals/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-approvals", - "version": "5.2.0", + "version": "6.0.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 2ec4ec1f48..0965e4822a 100644 --- a/packages/plugins/plugin-audit/CHANGELOG.md +++ b/packages/plugins/plugin-audit/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-audit +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index 37941057d4..f3b61c18be 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-audit", - "version": "5.2.0", + "version": "6.0.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 525a236b51..c05f4b3d6e 100644 --- a/packages/plugins/plugin-auth/CHANGELOG.md +++ b/packages/plugins/plugin-auth/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index 8e84ea8129..2d0e0413ee 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-auth", - "version": "5.2.0", + "version": "6.0.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 686be1dfca..3b9080b99c 100644 --- a/packages/plugins/plugin-dev/CHANGELOG.md +++ b/packages/plugins/plugin-dev/CHANGELOG.md @@ -1,5 +1,23 @@ # @objectstack/plugin-dev +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/runtime@6.0.0 + - @objectstack/rest@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/objectql@6.0.0 + - @objectstack/driver-memory@6.0.0 + - @objectstack/plugin-auth@6.0.0 + - @objectstack/plugin-hono-server@6.0.0 + - @objectstack/plugin-security@6.0.0 + - @objectstack/service-i18n@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index 27ef14eca7..7959fb34a6 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-dev", - "version": "5.2.0", + "version": "6.0.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 5a201f5c35..b9b466620f 100644 --- a/packages/plugins/plugin-email/CHANGELOG.md +++ b/packages/plugins/plugin-email/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-email +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-email/package.json b/packages/plugins/plugin-email/package.json index d9e2026dc5..e71df60288 100644 --- a/packages/plugins/plugin-email/package.json +++ b/packages/plugins/plugin-email/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-email", - "version": "5.2.0", + "version": "6.0.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 256ec15366..9d26b93a18 100644 --- a/packages/plugins/plugin-hono-server/CHANGELOG.md +++ b/packages/plugins/plugin-hono-server/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/plugin-hono-server +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index 6a4d3736e6..d8f899d57e 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": "5.2.0", + "version": "6.0.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 fa2fd531fc..95268b3ad1 100644 --- a/packages/plugins/plugin-mcp-server/CHANGELOG.md +++ b/packages/plugins/plugin-mcp-server/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/plugin-mcp-server +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-mcp-server/package.json b/packages/plugins/plugin-mcp-server/package.json index 46d7abbcb4..de259840c0 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": "5.2.0", + "version": "6.0.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 cc7ea0d001..f35c67cfac 100644 --- a/packages/plugins/plugin-msw/CHANGELOG.md +++ b/packages/plugins/plugin-msw/CHANGELOG.md @@ -1,5 +1,18 @@ # @objectstack/plugin-msw +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/runtime@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/objectql@6.0.0 + - @objectstack/types@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-msw/package.json b/packages/plugins/plugin-msw/package.json index 4f0815adc2..afeea4939d 100644 --- a/packages/plugins/plugin-msw/package.json +++ b/packages/plugins/plugin-msw/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-msw", - "version": "5.2.0", + "version": "6.0.0", "description": "MSW (Mock Service Worker) Plugin for ObjectStack Runtime", "license": "Apache-2.0", "main": "dist/index.js", diff --git a/packages/plugins/plugin-reports/CHANGELOG.md b/packages/plugins/plugin-reports/CHANGELOG.md index b1452dd8e7..011f18f2df 100644 --- a/packages/plugins/plugin-reports/CHANGELOG.md +++ b/packages/plugins/plugin-reports/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-reports +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-reports/package.json b/packages/plugins/plugin-reports/package.json index 637421c8ce..cf845ed759 100644 --- a/packages/plugins/plugin-reports/package.json +++ b/packages/plugins/plugin-reports/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-reports", - "version": "5.2.0", + "version": "6.0.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 2db7d488b5..9780286bf4 100644 --- a/packages/plugins/plugin-security/CHANGELOG.md +++ b/packages/plugins/plugin-security/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/plugin-security +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index 5d15a1518e..8633384617 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-security", - "version": "5.2.0", + "version": "6.0.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 b51eaacac6..75ee002b04 100644 --- a/packages/plugins/plugin-sharing/CHANGELOG.md +++ b/packages/plugins/plugin-sharing/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/plugin-sharing +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/objectql@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-sharing/package.json b/packages/plugins/plugin-sharing/package.json index 545b80643e..b23c8032d2 100644 --- a/packages/plugins/plugin-sharing/package.json +++ b/packages/plugins/plugin-sharing/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-sharing", - "version": "5.2.0", + "version": "6.0.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-webhooks/CHANGELOG.md b/packages/plugins/plugin-webhooks/CHANGELOG.md index ad75f4c128..abe79306d7 100644 --- a/packages/plugins/plugin-webhooks/CHANGELOG.md +++ b/packages/plugins/plugin-webhooks/CHANGELOG.md @@ -1,5 +1,17 @@ # @objectstack/plugin-webhooks +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/service-cluster@5.1.2 + ## 5.2.0 ### Patch Changes diff --git a/packages/plugins/plugin-webhooks/package.json b/packages/plugins/plugin-webhooks/package.json index c41d7bc8f5..ae1331fcb6 100644 --- a/packages/plugins/plugin-webhooks/package.json +++ b/packages/plugins/plugin-webhooks/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/plugin-webhooks", - "version": "5.2.0", + "version": "6.0.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 ac47c95949..b2d6f033d1 100644 --- a/packages/rest/CHANGELOG.md +++ b/packages/rest/CHANGELOG.md @@ -1,5 +1,118 @@ # @objectstack/rest +## 6.0.0 + +### Major Changes + +- 944f187: # v5.0 — `project` → `environment` hard rename + + The runtime concept previously called **"project"** (per-tenant business + workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, + per-project DB, per-project artifact) is now uniformly called + **"environment"**. + + This is a **hard rename with no aliases, deprecation shims, or compatibility + layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any + clients calling the REST API. + + > Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, + > tsconfig project references, vitest `projects` config) is **unchanged**. + + ## Breaking changes + + ### CLI + + - Flags renamed: + - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) + - `--project-id` → `--environment-id` (`os dev`) + - Default local env id: `proj_local` → `env_local`. + - Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. + - Command group renamed: `os projects ...` → `os environments ...` + (`bind`, `create`, `list`, `show`, `switch`). + - Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. + + ### HTTP / REST + + - Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. + - Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` + (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, + `/cloud/environments/:id/credentials/rotate`, etc.). + - Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` + (`x-environment-id`). + - Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. + - Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. + + ### Runtime / spec + + - Exported symbols (no aliases): + - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` + - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` + - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` + - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` + - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` + - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` + - Plugin identifier strings: + - `com.objectstack.runtime.objectos-project` → `objectos-environment` + - `com.objectstack.studio.single-project` → `single-environment` + - `com.objectstack.multi-project` → `multi-environment` + - `com.objectstack.runtime.system-project` → `system-environment` + - Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. + + ### Database / schemas + + - Column renames on `sys_metadata` and `sys_metadata_history`: + `project_id` → `environment_id`. + - Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). + - Object renames in platform-objects metadata: `sys_project` → `sys_environment` + (lookup targets), `sys_project_member` → `sys_environment_member`, + `sys_project_credential` → `sys_environment_credential`. + - Auth-context field: `active_project_id` → `active_environment_id`. + - JSON schemas under `packages/spec/json-schema/system/`: + `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). + + ### Automatic forward migration + + A new migration `migrateProjectIdToEnvironmentId` + (`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) + auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any + existing `project_id` column on `sys_metadata` / `sys_metadata_history` to + `environment_id` (idempotent, best-effort). Existing rows are preserved. + + The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim + for historical / disaster-recovery use; it is **not** auto-run. + + ## Migration guide + + ```diff + -os publish --project proj_xyz + +os publish --environment env_xyz + + -curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer + +curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer + + -OS_PROJECT_ID=env_xyz os dev + +OS_ENVIRONMENT_ID=env_xyz os dev + + -import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; + +import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; + + -import { ProjectArtifactSchema } from "@objectstack/spec"; + +import { EnvironmentArtifactSchema } from "@objectstack/spec"; + ``` + + If you maintain a Cloud control-plane deployment, the `cloud` repository must + be updated in lockstep to pick up the new plugin identifier strings + (`single-environment`, `multi-environment`, `objectos-environment`). + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/service-package@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/rest/package.json b/packages/rest/package.json index 9c8cabe948..01e3fadc0f 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/rest", - "version": "5.2.0", + "version": "6.0.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 92f683a30f..8a99679f1f 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,125 @@ # @objectstack/runtime +## 6.0.0 + +### Major Changes + +- 944f187: # v5.0 — `project` → `environment` hard rename + + The runtime concept previously called **"project"** (per-tenant business + workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, + per-project DB, per-project artifact) is now uniformly called + **"environment"**. + + This is a **hard rename with no aliases, deprecation shims, or compatibility + layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any + clients calling the REST API. + + > Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, + > tsconfig project references, vitest `projects` config) is **unchanged**. + + ## Breaking changes + + ### CLI + + - Flags renamed: + - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) + - `--project-id` → `--environment-id` (`os dev`) + - Default local env id: `proj_local` → `env_local`. + - Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. + - Command group renamed: `os projects ...` → `os environments ...` + (`bind`, `create`, `list`, `show`, `switch`). + - Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. + + ### HTTP / REST + + - Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. + - Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` + (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, + `/cloud/environments/:id/credentials/rotate`, etc.). + - Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` + (`x-environment-id`). + - Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. + - Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. + + ### Runtime / spec + + - Exported symbols (no aliases): + - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` + - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` + - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` + - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` + - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` + - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` + - Plugin identifier strings: + - `com.objectstack.runtime.objectos-project` → `objectos-environment` + - `com.objectstack.studio.single-project` → `single-environment` + - `com.objectstack.multi-project` → `multi-environment` + - `com.objectstack.runtime.system-project` → `system-environment` + - Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. + + ### Database / schemas + + - Column renames on `sys_metadata` and `sys_metadata_history`: + `project_id` → `environment_id`. + - Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). + - Object renames in platform-objects metadata: `sys_project` → `sys_environment` + (lookup targets), `sys_project_member` → `sys_environment_member`, + `sys_project_credential` → `sys_environment_credential`. + - Auth-context field: `active_project_id` → `active_environment_id`. + - JSON schemas under `packages/spec/json-schema/system/`: + `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). + + ### Automatic forward migration + + A new migration `migrateProjectIdToEnvironmentId` + (`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) + auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any + existing `project_id` column on `sys_metadata` / `sys_metadata_history` to + `environment_id` (idempotent, best-effort). Existing rows are preserved. + + The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim + for historical / disaster-recovery use; it is **not** auto-run. + + ## Migration guide + + ```diff + -os publish --project proj_xyz + +os publish --environment env_xyz + + -curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer + +curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer + + -OS_PROJECT_ID=env_xyz os dev + +OS_ENVIRONMENT_ID=env_xyz os dev + + -import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; + +import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; + + -import { ProjectArtifactSchema } from "@objectstack/spec"; + +import { EnvironmentArtifactSchema } from "@objectstack/spec"; + ``` + + If you maintain a Cloud control-plane deployment, the `cloud` repository must + be updated in lockstep to pick up the new plugin identifier strings + (`single-environment`, `multi-environment`, `objectos-environment`). + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/rest@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/formula@6.0.0 + - @objectstack/observability@6.0.0 + - @objectstack/plugin-auth@6.0.0 + - @objectstack/plugin-security@6.0.0 + - @objectstack/service-cluster@5.1.2 + - @objectstack/service-i18n@6.0.0 + - @objectstack/types@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index cd533ed0e1..abb2aba39d 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/runtime", - "version": "5.2.0", + "version": "6.0.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 a7648813a3..dfcd770efa 100644 --- a/packages/services/service-ai/CHANGELOG.md +++ b/packages/services/service-ai/CHANGELOG.md @@ -1,5 +1,82 @@ # @objectstack/service-ai +## 6.0.0 + +### Minor Changes + +- dbc4f7d: feat(ai): v1 AI capabilities — ModelRegistry, structured output, tracing, schema retrieval, and `query_data` tool + + This release lights up the first concrete capabilities on the slimmed AI protocol. All additions are + non-breaking — new contract methods are optional and existing callers keep working unchanged. + + ### What's new + + - **ModelRegistry** (`@objectstack/service-ai`): in-memory runtime registry for `AI.ModelConfig`. + Wire models via `AIServicePluginOptions.models` / `defaultModelId`. Exposes `get`, `getOrThrow`, + `getDefault`, `list`, and `estimateCost(modelId, usage)` for ex-post token cost computation. + + - **ai_traces object + auto-tracing**: every LLM call from `AIService` (`chat`, `complete`, + `stream_chat`, `chat_with_tools`, `generate_object`, `embed`) is now instrumented with latency, + token usage, status, and (when pricing is registered) cost. The default `ObjectQLTraceRecorder` + is auto-wired when the runtime exposes an `IDataEngine`, persisting rows to the new `ai_traces` + object. Drop in a custom `TraceRecorder` via `AIServicePluginOptions.traceRecorder`, or pass + `null` to opt out. + + - **Structured output (`IAIService.generateObject`)**: new optional method on `IAIService` and + `LLMAdapter` that returns a parsed, schema-validated object instead of free-form text. + Implemented end-to-end in `VercelLLMAdapter` (uses the AI SDK's `generateObject` — provider + strict-mode is automatic when supported). `MemoryLLMAdapter` ships a deterministic heuristic + implementation so tests and demos work without an API key. + + - **SchemaRetriever**: lightweight keyword-based retriever over `IMetadataService.listObjects()`. + Scores by object name (×3), label/plural (×2), description (×1), field name (×2), and field + label (×1) with English stop-word filtering. Tokenisation splits snake_case so `todo_task` in + a query matches `name: 'todo_task'`. `SchemaRetriever.renderSnippet()` produces a Markdown + block ready to inject into a system prompt — no embeddings, no extra infra. + + - **`query_data` tool**: auto-registered when AI + Metadata + Data engine are all present. Takes + a natural-language `request`, retrieves relevant schemas, asks the model for a structured + `QueryPlan` via `generateObject`, validates the plan targets a real object, and executes it + through `IDataEngine.find`. Returns `{ plan, count, records }`. The composed primitive that + closes the loop from "ask in English" → "validated SQL-shaped result". + + - **Working demo in `examples/app-todo`**: `pnpm --filter @example/app-todo test:ai` boots the + full Todo stack, invokes `query_data` against the seeded tasks, and verifies the call lands + in `ai_traces`. Zero API keys, ~3 seconds end-to-end. Serves as the canonical reference for + wiring AI into a real app. + + ### Hardening + + - Strict tool schemas: nested `orderBy` and `aggregations` items in `data-tools` now declare + `additionalProperties: false` + `required`, matching the top-level contract and making them + safe for provider strict mode. + + ### Breaking-ish + + - `TraceOperation` values are now snake_case (`stream_chat`, `chat_with_tools`, `generate_object`) + to match the project's data-value convention and so the `ai_traces.operation` select validates. + Custom `TraceRecorder` implementations that hard-code the old camelCase names need to be + updated. The values are an internal observability artefact — no public protocol surface + exposes them. + + ### Notes + + - `zod` is now a direct dependency of `@objectstack/service-ai` (previously transitive via `ai`) + because contract signatures and the new tool definition use `z.ZodType` types directly. + - All new methods on `IAIService` / `LLMAdapter` are optional — existing custom adapters and + callers continue to work without changes. + - 12 new unit tests cover `ModelRegistry` (cost math, defaults, throwing lookups) and + `SchemaRetriever` (scoring, snake_case tokenisation, limits, snippet rendering). + Full suite: 323/323 ✓. + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-ai/package.json b/packages/services/service-ai/package.json index d842604201..e7f7e98297 100644 --- a/packages/services/service-ai/package.json +++ b/packages/services/service-ai/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-ai", - "version": "5.2.0", + "version": "6.0.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 8eb52f639b..e40d8e6086 100644 --- a/packages/services/service-analytics/CHANGELOG.md +++ b/packages/services/service-analytics/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog — @objectstack/service-analytics +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index d45acc790e..c0d612034f 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-analytics", - "version": "5.2.0", + "version": "6.0.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 1108f4fda8..084ee26ee3 100644 --- a/packages/services/service-automation/CHANGELOG.md +++ b/packages/services/service-automation/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-automation +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/formula@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index b2b51c7f10..310d3610e8 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-automation", - "version": "5.2.0", + "version": "6.0.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 a6c6d82f8f..5d53a75f53 100644 --- a/packages/services/service-cache/CHANGELOG.md +++ b/packages/services/service-cache/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-cache +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/observability@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index 81ebb68aef..ccadc2a06e 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cache", - "version": "5.2.0", + "version": "6.0.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 bf61aff822..d7ba64fbc9 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 +## 5.1.2 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/service-cluster@5.1.2 + ## 5.1.1 ### Patch Changes diff --git a/packages/services/service-cluster-redis/package.json b/packages/services/service-cluster-redis/package.json index dc438cd024..027fcde16e 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": "5.1.1", + "version": "5.1.2", "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 7f566cc5b7..e46ffe6c2e 100644 --- a/packages/services/service-cluster/CHANGELOG.md +++ b/packages/services/service-cluster/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-cluster +## 5.1.2 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.1.1 ### Patch Changes diff --git a/packages/services/service-cluster/package.json b/packages/services/service-cluster/package.json index bf72e75bec..d0cb89692d 100644 --- a/packages/services/service-cluster/package.json +++ b/packages/services/service-cluster/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-cluster", - "version": "5.1.1", + "version": "5.1.2", "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-feed/CHANGELOG.md b/packages/services/service-feed/CHANGELOG.md index aec2954907..96a87db60e 100644 --- a/packages/services/service-feed/CHANGELOG.md +++ b/packages/services/service-feed/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-feed +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-feed/package.json b/packages/services/service-feed/package.json index 3a96c4f62d..0b70ab5ac2 100644 --- a/packages/services/service-feed/package.json +++ b/packages/services/service-feed/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-feed", - "version": "5.2.0", + "version": "6.0.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 0f40d23ad4..832ee911c0 100644 --- a/packages/services/service-i18n/CHANGELOG.md +++ b/packages/services/service-i18n/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-i18n +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index c260e0b893..1448f2cb0e 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-i18n", - "version": "5.2.0", + "version": "6.0.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 b60d6f0644..c87359996a 100644 --- a/packages/services/service-job/CHANGELOG.md +++ b/packages/services/service-job/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-job +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index 2ac2278180..36099c6cae 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-job", - "version": "5.2.0", + "version": "6.0.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-package/CHANGELOG.md b/packages/services/service-package/CHANGELOG.md index e76f425875..0806196d36 100644 --- a/packages/services/service-package/CHANGELOG.md +++ b/packages/services/service-package/CHANGELOG.md @@ -1,5 +1,15 @@ # @objectstack/service-package +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index a5f4b539cf..a98092a056 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-package", - "version": "5.2.0", + "version": "6.0.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 baffaa431d..b47142084d 100644 --- a/packages/services/service-queue/CHANGELOG.md +++ b/packages/services/service-queue/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-queue +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index 7f5796e63e..2328c25dc8 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-queue", - "version": "5.2.0", + "version": "6.0.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 d4a2c77741..0b7a420337 100644 --- a/packages/services/service-realtime/CHANGELOG.md +++ b/packages/services/service-realtime/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-realtime +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index c64a00503a..4a8af164d9 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-realtime", - "version": "5.2.0", + "version": "6.0.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 5c7f97c165..3300074e4d 100644 --- a/packages/services/service-settings/CHANGELOG.md +++ b/packages/services/service-settings/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-settings +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/platform-objects@6.0.0 + - @objectstack/core@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index 05496707bd..67df6da0be 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-settings", - "version": "5.2.0", + "version": "6.0.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 4db122b7f6..09a2a91463 100644 --- a/packages/services/service-storage/CHANGELOG.md +++ b/packages/services/service-storage/CHANGELOG.md @@ -1,5 +1,16 @@ # @objectstack/service-storage +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + - @objectstack/core@6.0.0 + - @objectstack/observability@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index 421b58fe45..af22eeac05 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/service-storage", - "version": "5.2.0", + "version": "6.0.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 f644b27ee9..b9d7c03145 100644 --- a/packages/spec/CHANGELOG.md +++ b/packages/spec/CHANGELOG.md @@ -1,5 +1,258 @@ # @objectstack/spec +## 6.0.0 + +### Major Changes + +- 629a716: # v1 AI Protocol focusing — remove application-template schemas + + The `@objectstack/spec/ai` protocol is reduced to **only the primitives + the runtime directly consumes**. Eight schemas that described + application templates or product features (not platform contracts) are + removed; three more are slimmed to their primitive cores. + + ## Removed (8 files, ~4,700 lines) + + | File | Reason for removal | + | ------------------------------ | --------------------------------------------------------------------------------- | + | `ai/devops-agent.zod.ts` | A specific Agent template, not a primitive. Compose with `Agent + Skill + Tool`. | + | `ai/plugin-development.zod.ts` | Specific workflow; same reasoning. | + | `ai/runtime-ops.zod.ts` | AIOps is a vertical product, not a backend platform concern. | + | `ai/predictive.zod.ts` | ML pipeline product (DataRobot/H2O space), orthogonal to metadata-driven backend. | + | `ai/agent-action.zod.ts` | 100% conceptual overlap with `tool` + `flow`. | + | `ai/orchestration.zod.ts` | Multi-agent plans can be expressed as agents-as-tools. Premature. | + | `ai/nlq.zod.ts` | NLQ is LLM-native capability + a `query_data` tool over ObjectQL, not a protocol. | + | `ai/feedback-loop.zod.ts` | RLHF / training-side concern; not platform-owned. | + + ## Slimmed (3 files) + + - **`ai/rag-pipeline.zod.ts` → `ai/embedding.zod.ts`** (318 → 80 lines). + Keeps `EmbeddingModelSchema` + `VectorStoreSchema` primitives. + Removed: chunking strategies, retrieval pipelines, rerankers, + document loaders, end-to-end RAG pipeline DSL. The `ragPipelines` + field on `defineStack()` is removed. + - **`ai/cost.zod.ts` → `ai/usage.zod.ts`** (431 → ~70 lines). + Keeps `TokenUsageSchema` + `AIUsageRecordSchema`. Model pricing is + the canonical `ModelPricingSchema` already exported from + `ai/model-registry.zod.ts`. Removed: budget definitions, + enforcement, alerts, allocation reports, optimization + recommendations. + - **`ai/mcp.zod.ts`** (629 → ~100 lines). Defines only how to + _reference_ an external MCP server and _bind_ its tools to an + agent. The MCP protocol itself is owned by Anthropic's published + spec and the `@modelcontextprotocol/sdk`; we no longer re-declare + transport/capability/resource/prompt/streaming/sampling shapes. + + ## Migration + + No production code in this repository depended on the removed + schemas. Downstream consumers that imported any of the removed types + from `@objectstack/spec/ai` must: + + 1. **Remove the import.** The platform no longer provides these types. + 2. **Define your own application-level shape** in your project / plugin + if you still need the concept. The primitives (`Agent`, `Skill`, + `Tool`, `Conversation`, `Embedding`, `Usage`, `MCP{ServerRef,ToolBinding}`) + are sufficient to express every removed schema. + 3. For RAG: replace `RAGPipelineConfig` with your own pipeline + description built on `EmbeddingModelSchema` + `VectorStoreSchema`. + 4. For cost: replace budget enforcement with your own service built + on `AIUsageRecordSchema` records. + + ## Why + + The platform's job is to define **primitives that any AI feature can + be built on top of**, leveraging the metadata-driven nature of + ObjectStack. The removed schemas described specific product features + (DevOps agent, AIOps, RAG pipeline DSL, budget enforcement) that + should live in plugins or applications — not in the canonical + protocol. Shipping a 6,245-line AI protocol where 80% of it has no + runtime implementation creates false promises to integrators. + + After this change the AI protocol is: + + ``` + ai/ + ├── agent.zod.ts ← who + ├── skill.zod.ts ← when + ├── tool.zod.ts ← what + ├── conversation.zod.ts ← what to remember + ├── model-registry.zod.ts ← which LLMs + ├── embedding.zod.ts ← embedding + vector store primitives + ├── usage.zod.ts ← token + cost accounting + └── mcp.zod.ts ← external ecosystem bridge + ``` + + 8 files, ~1,200 lines. Every schema has a runtime implementation in + `@objectstack/service-ai` or `@objectstack/plugin-mcp-server`. + +- 944f187: # v5.0 — `project` → `environment` hard rename + + The runtime concept previously called **"project"** (per-tenant business + workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel, + per-project DB, per-project artifact) is now uniformly called + **"environment"**. + + This is a **hard rename with no aliases, deprecation shims, or compatibility + layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any + clients calling the REST API. + + > Note: "project" in the npm / monorepo sense (the framework itself, `package.json`, + > tsconfig project references, vitest `projects` config) is **unchanged**. + + ## Breaking changes + + ### CLI + + - Flags renamed: + - `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`) + - `--project-id` → `--environment-id` (`os dev`) + - Default local env id: `proj_local` → `env_local`. + - Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`. + - Command group renamed: `os projects ...` → `os environments ...` + (`bind`, `create`, `list`, `show`, `switch`). + - Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`. + + ### HTTP / REST + + - Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`. + - Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...` + (including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`, + `/cloud/environments/:id/credentials/rotate`, etc.). + - Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id` + (`x-environment-id`). + - Route param name in handlers: `req.params.projectId` → `req.params.environmentId`. + - Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end. + + ### Runtime / spec + + - Exported symbols (no aliases): + - `createSystemProjectPlugin` → `createSystemEnvironmentPlugin` + - `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID` + - `ProjectArtifactSchema` → `EnvironmentArtifactSchema` + - `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION` + - `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin` + - `createSingleProjectPlugin` → `createSingleEnvironmentPlugin` + - Plugin identifier strings: + - `com.objectstack.runtime.objectos-project` → `objectos-environment` + - `com.objectstack.studio.single-project` → `single-environment` + - `com.objectstack.multi-project` → `multi-environment` + - `com.objectstack.runtime.system-project` → `system-environment` + - Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`. + + ### Database / schemas + + - Column renames on `sys_metadata` and `sys_metadata_history`: + `project_id` → `environment_id`. + - Column renames on `sys_activity`: `project_id` → `environment_id` (plus index). + - Object renames in platform-objects metadata: `sys_project` → `sys_environment` + (lookup targets), `sys_project_member` → `sys_environment_member`, + `sys_project_credential` → `sys_environment_credential`. + - Auth-context field: `active_project_id` → `active_environment_id`. + - JSON schemas under `packages/spec/json-schema/system/`: + `ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build). + + ### Automatic forward migration + + A new migration `migrateProjectIdToEnvironmentId` + (`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`) + auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any + existing `project_id` column on `sys_metadata` / `sys_metadata_history` to + `environment_id` (idempotent, best-effort). Existing rows are preserved. + + The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim + for historical / disaster-recovery use; it is **not** auto-run. + + ## Migration guide + + ```diff + -os publish --project proj_xyz + +os publish --environment env_xyz + + -curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer + +curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer + + -OS_PROJECT_ID=env_xyz os dev + +OS_ENVIRONMENT_ID=env_xyz os dev + + -import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime"; + +import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime"; + + -import { ProjectArtifactSchema } from "@objectstack/spec"; + +import { EnvironmentArtifactSchema } from "@objectstack/spec"; + ``` + + If you maintain a Cloud control-plane deployment, the `cloud` repository must + be updated in lockstep to pick up the new plugin identifier strings + (`single-environment`, `multi-environment`, `objectos-environment`). + +### Minor Changes + +- dbc4f7d: feat(ai): v1 AI capabilities — ModelRegistry, structured output, tracing, schema retrieval, and `query_data` tool + + This release lights up the first concrete capabilities on the slimmed AI protocol. All additions are + non-breaking — new contract methods are optional and existing callers keep working unchanged. + + ### What's new + + - **ModelRegistry** (`@objectstack/service-ai`): in-memory runtime registry for `AI.ModelConfig`. + Wire models via `AIServicePluginOptions.models` / `defaultModelId`. Exposes `get`, `getOrThrow`, + `getDefault`, `list`, and `estimateCost(modelId, usage)` for ex-post token cost computation. + + - **ai_traces object + auto-tracing**: every LLM call from `AIService` (`chat`, `complete`, + `stream_chat`, `chat_with_tools`, `generate_object`, `embed`) is now instrumented with latency, + token usage, status, and (when pricing is registered) cost. The default `ObjectQLTraceRecorder` + is auto-wired when the runtime exposes an `IDataEngine`, persisting rows to the new `ai_traces` + object. Drop in a custom `TraceRecorder` via `AIServicePluginOptions.traceRecorder`, or pass + `null` to opt out. + + - **Structured output (`IAIService.generateObject`)**: new optional method on `IAIService` and + `LLMAdapter` that returns a parsed, schema-validated object instead of free-form text. + Implemented end-to-end in `VercelLLMAdapter` (uses the AI SDK's `generateObject` — provider + strict-mode is automatic when supported). `MemoryLLMAdapter` ships a deterministic heuristic + implementation so tests and demos work without an API key. + + - **SchemaRetriever**: lightweight keyword-based retriever over `IMetadataService.listObjects()`. + Scores by object name (×3), label/plural (×2), description (×1), field name (×2), and field + label (×1) with English stop-word filtering. Tokenisation splits snake_case so `todo_task` in + a query matches `name: 'todo_task'`. `SchemaRetriever.renderSnippet()` produces a Markdown + block ready to inject into a system prompt — no embeddings, no extra infra. + + - **`query_data` tool**: auto-registered when AI + Metadata + Data engine are all present. Takes + a natural-language `request`, retrieves relevant schemas, asks the model for a structured + `QueryPlan` via `generateObject`, validates the plan targets a real object, and executes it + through `IDataEngine.find`. Returns `{ plan, count, records }`. The composed primitive that + closes the loop from "ask in English" → "validated SQL-shaped result". + + - **Working demo in `examples/app-todo`**: `pnpm --filter @example/app-todo test:ai` boots the + full Todo stack, invokes `query_data` against the seeded tasks, and verifies the call lands + in `ai_traces`. Zero API keys, ~3 seconds end-to-end. Serves as the canonical reference for + wiring AI into a real app. + + ### Hardening + + - Strict tool schemas: nested `orderBy` and `aggregations` items in `data-tools` now declare + `additionalProperties: false` + `required`, matching the top-level contract and making them + safe for provider strict mode. + + ### Breaking-ish + + - `TraceOperation` values are now snake_case (`stream_chat`, `chat_with_tools`, `generate_object`) + to match the project's data-value convention and so the `ai_traces.operation` select validates. + Custom `TraceRecorder` implementations that hard-code the old camelCase names need to be + updated. The values are an internal observability artefact — no public protocol surface + exposes them. + + ### Notes + + - `zod` is now a direct dependency of `@objectstack/service-ai` (previously transitive via `ai`) + because contract signatures and the new tool definition use `z.ZodType` types directly. + - All new methods on `IAIService` / `LLMAdapter` are optional — existing custom adapters and + callers continue to work without changes. + - 12 new unit tests cover `ModelRegistry` (cost math, defaults, throwing lookups) and + `SchemaRetriever` (scoring, snake_case tokenisation, limits, snippet rendering). + Full suite: 323/323 ✓. + ## 5.2.0 ### Minor Changes diff --git a/packages/spec/package.json b/packages/spec/package.json index c09648e5c2..29229aaa77 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/spec", - "version": "5.2.0", + "version": "6.0.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 2cf509628c..db5803c1c4 100644 --- a/packages/types/CHANGELOG.md +++ b/packages/types/CHANGELOG.md @@ -1,5 +1,14 @@ # @objectstack/types +## 6.0.0 + +### Patch Changes + +- Updated dependencies [629a716] +- Updated dependencies [dbc4f7d] +- Updated dependencies [944f187] + - @objectstack/spec@6.0.0 + ## 5.2.0 ### Patch Changes diff --git a/packages/types/package.json b/packages/types/package.json index 67a31e324d..66a4272452 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@objectstack/types", - "version": "5.2.0", + "version": "6.0.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 941f117d24..1ddb8e6f40 100644 --- a/packages/vscode-objectstack/CHANGELOG.md +++ b/packages/vscode-objectstack/CHANGELOG.md @@ -1,5 +1,7 @@ # objectstack-vscode +## 6.0.0 + ## 5.2.0 ## 5.1.0 diff --git a/packages/vscode-objectstack/package.json b/packages/vscode-objectstack/package.json index 84bc02f13e..ac0405545b 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": "5.2.0", + "version": "6.0.0", "publisher": "objectstack", "license": "Apache-2.0", "repository": {