From d2dfdbcaf2d07796ca6d0ecf2c27d63c8f39dff0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 10 Sep 2026 00:37:37 +0000 Subject: [PATCH] chore: version packages --- .changeset/archive-before-retention.md | 5 -- .../fence-studio-connection-launches.md | 5 -- .changeset/mcp-alias-role-names.md | 20 ------- .changeset/order-studio-auth-transitions.md | 5 -- .changeset/pink-lions-normalize-input.md | 37 ------------ .../reconcile-studio-connection-removal.md | 6 -- .changeset/restart-stale-studio-sessions.md | 5 -- .changeset/session-config-cleanup.md | 5 -- .../studio-tenant-scoped-definition-list.md | 8 --- .changeset/template-harness-selection.md | 5 -- .changeset/trigger-kinds-webhook-event.md | 34 ----------- packages/agent-core/CHANGELOG.md | 40 +++++++++++++ packages/agent-core/package.json | 2 +- .../src/version-fallback.generated.ts | 2 +- packages/agent-runtime/CHANGELOG.md | 40 +++++++++++++ packages/agent-runtime/package.json | 2 +- packages/agent-studio/CHANGELOG.md | 15 +++++ packages/agent-studio/package.json | 2 +- packages/agent/CHANGELOG.md | 37 ++++++++++++ packages/agent/package.json | 2 +- packages/cli/CHANGELOG.md | 19 +++++++ packages/cli/package.json | 4 +- packages/harness-desktop/CHANGELOG.md | 15 +++++ packages/harness-desktop/package.json | 2 +- packages/harness/CHANGELOG.md | 42 ++++++++++++++ packages/harness/package.json | 2 +- packages/mcp/CHANGELOG.md | 56 +++++++++++++++++++ packages/mcp/package.json | 2 +- pnpm-lock.yaml | 2 +- 29 files changed, 275 insertions(+), 146 deletions(-) delete mode 100644 .changeset/archive-before-retention.md delete mode 100644 .changeset/fence-studio-connection-launches.md delete mode 100644 .changeset/mcp-alias-role-names.md delete mode 100644 .changeset/order-studio-auth-transitions.md delete mode 100644 .changeset/pink-lions-normalize-input.md delete mode 100644 .changeset/reconcile-studio-connection-removal.md delete mode 100644 .changeset/restart-stale-studio-sessions.md delete mode 100644 .changeset/session-config-cleanup.md delete mode 100644 .changeset/studio-tenant-scoped-definition-list.md delete mode 100644 .changeset/template-harness-selection.md delete mode 100644 .changeset/trigger-kinds-webhook-event.md diff --git a/.changeset/archive-before-retention.md b/.changeset/archive-before-retention.md deleted file mode 100644 index a78006df8..000000000 --- a/.changeset/archive-before-retention.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": patch ---- - -Limit archive backfill to 200 conversations per maintenance pass. Keep source events while work remains or archiving fails, and retry at the next scheduled cleanup. diff --git a/.changeset/fence-studio-connection-launches.md b/.changeset/fence-studio-connection-launches.md deleted file mode 100644 index 415afaf83..000000000 --- a/.changeset/fence-studio-connection-launches.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Surface when a running Claude session needs the current Sapiom connection, prevent prepared sessions or tasks from launching after it changes, and expose `MCP_CREDENTIAL_GENERATION_CHANGED` as a retryable conflict. diff --git a/.changeset/mcp-alias-role-names.md b/.changeset/mcp-alias-role-names.md deleted file mode 100644 index b85466cb6..000000000 --- a/.changeset/mcp-alias-role-names.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"@sapiom/mcp": patch -"@sapiom/harness": patch ---- - -Name the two Sapiom MCP servers by role in both offline fallbacks — "the local -authoring server" and "the hosted capability server" — instead of by registration -alias (SAP-3179). - -The two texts disagreed: the Studio prompt called the servers `sapiom` (hosted) and -`sapiom-dev` (local), which is what Studio registers; the authoring primer called them -`sapiom` (local) and `sapiom-direct` (hosted), which is what a plain Claude Code user is -told to register. A Studio session reads both, so "use the `sapiom` alias to author -agents" pointed it at the remote server the prompt had just said not to call while -authoring. Aliases now appear only inside the two `claude mcp add` commands, which are -unchanged. The Studio prompt also disambiguates the two same-named `sapiom_authenticate` -/ `sapiom_status` pairs, so a session signs in against the local server. - -Both digest pins move with the bodies. The paired backend content release -(sapiom/Sapiom#4884) must adopt the same two bodies for the cross-repo pins to agree. diff --git a/.changeset/order-studio-auth-transitions.md b/.changeset/order-studio-auth-transitions.md deleted file mode 100644 index 0ca22093f..000000000 --- a/.changeset/order-studio-auth-transitions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": patch ---- - -Keep overlapping Studio sign-in and sign-out transitions ordered while allowing a new sign-in to begin promptly after signing out. diff --git a/.changeset/pink-lions-normalize-input.md b/.changeset/pink-lions-normalize-input.md deleted file mode 100644 index da1252d20..000000000 --- a/.changeset/pink-lions-normalize-input.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -"@sapiom/agent": minor -"@sapiom/agent-runtime": patch ---- - -A defaulted field is no longer required at any depth in an input schema - -A step's published `inputSchema` listed a field as `required` even when it -carried a Zod `.default()`, as long as the field sat inside a nested object, an -array item, or a union/intersection branch. An AJV pre-gate then rejected a -**partial** input for those fields while an entirely omitted input validated — -so `{ opts: {} }` failed where `{}` passed, contradicting the authoring guidance -that a default makes a field omissible. A `.prefault()` field stayed required at -every depth for the same reason. - -`zodToJsonSchema` now converts in Zod's `io: "input"` mode — the mode that -describes what a caller may SEND — and runs the result through a new exported -`normalizeInputJsonSchema`, which drops defaulted keys from `required` and -strips `additionalProperties: false` on every schema node it can reach. - -**If you call `zodToJsonSchema` directly**, its output changes: a smaller -`required` set, no `additionalProperties: false` from `z.strictObject()`, a -`.pipe()`/`.transform()` described by its input type rather than its output -type, and a schema containing a `.transform()` now converting successfully where -it previously threw `Transforms cannot be represented in JSON Schema`. Every -change is in the "what may a caller send" direction. If you need the -value-a-parse-returns schema instead, call `z.toJSONSchema(schema)` yourself. - -Also: - -- `stepInputContract` / `workflowInputContract` return the same normalized - schema the manifest publishes, so a displayed contract (a Run form, inspect - tooling) agrees with what a pre-gate enforces. -- `@sapiom/agent-runtime`'s step-input pre-gate normalizes the manifest it is - handed, so an agent deployed on an earlier version accepts a partial nested - input without being redeployed. A `.prefault()` field still needs a redeploy — - the older schema records no `default` keyword for it to key off. diff --git a/.changeset/reconcile-studio-connection-removal.md b/.changeset/reconcile-studio-connection-removal.md deleted file mode 100644 index a6657950b..000000000 --- a/.changeset/reconcile-studio-connection-removal.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sapiom/harness": minor -"@sapiom/mcp": minor ---- - -Expose the shared credential-store path to authenticated local integrations and stop affected Studio-managed Claude sessions and background tasks when the current Sapiom connection is removed. diff --git a/.changeset/restart-stale-studio-sessions.md b/.changeset/restart-stale-studio-sessions.md deleted file mode 100644 index cc3bbbb9b..000000000 --- a/.changeset/restart-stale-studio-sessions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Offer an explicit MCP session restart API and UI action when the Sapiom connection changes, and export `McpSessionRestartUnavailableError` for programmatic handling. diff --git a/.changeset/session-config-cleanup.md b/.changeset/session-config-cleanup.md deleted file mode 100644 index b1404682d..000000000 --- a/.changeset/session-config-cleanup.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": patch ---- - -Prevent repeated exit-status broadcasts from deleting configuration regenerated during session resume, including sessions restored after restart or imported from history. Failed resume preparation also cleans up regenerated configuration. diff --git a/.changeset/studio-tenant-scoped-definition-list.md b/.changeset/studio-tenant-scoped-definition-list.md deleted file mode 100644 index e04b7c070..000000000 --- a/.changeset/studio-tenant-scoped-definition-list.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Resolve linked agents from one tenant-scoped definitions list per poll instead -of a by-id lookup per agent: definitions the signed-in account cannot see are -never requested and show as unavailable in Studio. `WorkflowInfo` gains an -optional, serve-time `definitionAccess` field (never persisted). diff --git a/.changeset/template-harness-selection.md b/.changeset/template-harness-selection.md deleted file mode 100644 index e4314ac6a..000000000 --- a/.changeset/template-harness-selection.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": patch ---- - -Preserve the selected coding agent when launching a template from the new-session composer or template gallery, including bundled starters. Codex selections no longer start Claude Code sessions. diff --git a/.changeset/trigger-kinds-webhook-event.md b/.changeset/trigger-kinds-webhook-event.md deleted file mode 100644 index 1125afb95..000000000 --- a/.changeset/trigger-kinds-webhook-event.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -"@sapiom/agent-core": minor -"@sapiom/mcp": minor ---- - -Expose all four backend trigger kinds from the local authoring MCP (SAP-3174). -`sapiom_dev_agents_schedule` now accepts `kind: "event"` (+ `eventType`) and -`kind: "webhook"` alongside `schedule_cron` / `schedule_once`. A webhook create -returns the public hook URL, the shown-once signing secret, and the signing -scheme in the tool result (HMAC-SHA256 over `timestamp.eventId.rawBody`, sent as -`X-Sapiom-Timestamp` / `X-Sapiom-Event-Id` / `X-Sapiom-Signature`), and the -description says when a webhook trigger fits versus an App Link `/hook/*` -receiver (third-party senders cannot produce our HMAC). `_schedule_inspect` and -`_schedule_cancel` describe every kind; the new `sapiom_dev_agents_schedule_secret` -tool rotates, completes a rotation of, or revokes a webhook secret. - -`@sapiom/agent-core` gains the matching `ScheduleKind` members, the webhook / -event fields on `ScheduleSummary`, `CreateScheduleResult`, and -`rotateScheduleSecret` / `completeScheduleSecretRotation` / `revokeScheduleSecret`. - -**Breaking (types only, `@sapiom/agent-core`):** `ScheduleFireRecord.scheduledFor` -is now `string | null` — an event or webhook fire has no occurrence time, so code -that did `new Date(fire.scheduledFor)` must guard for `null` (or read -`fire.receiptId` for those kinds). `ScheduleSummary` gains five required fields -(`eventType`, `publicId`, `secretVersion`, `graceUntil`, `revokedAt`, all -nullable) that the server always returns; hand-built `ScheduleSummary` values -(test fakes, adapters) must add them. `ScheduleKind` widens to include `"event"` -and `"webhook"`, so an exhaustive `switch` over it needs the two new arms. No -runtime behaviour changes for existing cron / one-off callers. - -The offline `AUTHORING_INSTRUCTIONS` fallback and the `sapiom-agent-authoring` -skill gain a triggers paragraph teaching the same thing; the served-text change -is version-gated on `@sapiom/mcp` >= 0.15 because older clients are never -offered the new kinds. diff --git a/packages/agent-core/CHANGELOG.md b/packages/agent-core/CHANGELOG.md index cb343afc4..5b42a8bdb 100644 --- a/packages/agent-core/CHANGELOG.md +++ b/packages/agent-core/CHANGELOG.md @@ -1,5 +1,45 @@ # @sapiom/orchestration-core +## 0.14.0 + +### Minor Changes + +- 5d18ba3: Expose all four backend trigger kinds from the local authoring MCP (SAP-3174). + `sapiom_dev_agents_schedule` now accepts `kind: "event"` (+ `eventType`) and + `kind: "webhook"` alongside `schedule_cron` / `schedule_once`. A webhook create + returns the public hook URL, the shown-once signing secret, and the signing + scheme in the tool result (HMAC-SHA256 over `timestamp.eventId.rawBody`, sent as + `X-Sapiom-Timestamp` / `X-Sapiom-Event-Id` / `X-Sapiom-Signature`), and the + description says when a webhook trigger fits versus an App Link `/hook/*` + receiver (third-party senders cannot produce our HMAC). `_schedule_inspect` and + `_schedule_cancel` describe every kind; the new `sapiom_dev_agents_schedule_secret` + tool rotates, completes a rotation of, or revokes a webhook secret. + + `@sapiom/agent-core` gains the matching `ScheduleKind` members, the webhook / + event fields on `ScheduleSummary`, `CreateScheduleResult`, and + `rotateScheduleSecret` / `completeScheduleSecretRotation` / `revokeScheduleSecret`. + + **Breaking (types only, `@sapiom/agent-core`):** `ScheduleFireRecord.scheduledFor` + is now `string | null` — an event or webhook fire has no occurrence time, so code + that did `new Date(fire.scheduledFor)` must guard for `null` (or read + `fire.receiptId` for those kinds). `ScheduleSummary` gains five required fields + (`eventType`, `publicId`, `secretVersion`, `graceUntil`, `revokedAt`, all + nullable) that the server always returns; hand-built `ScheduleSummary` values + (test fakes, adapters) must add them. `ScheduleKind` widens to include `"event"` + and `"webhook"`, so an exhaustive `switch` over it needs the two new arms. No + runtime behaviour changes for existing cron / one-off callers. + + The offline `AUTHORING_INSTRUCTIONS` fallback and the `sapiom-agent-authoring` + skill gain a triggers paragraph teaching the same thing; the served-text change + is version-gated on `@sapiom/mcp` >= 0.15 because older clients are never + offered the new kinds. + +### Patch Changes + +- Updated dependencies [421439b] + - @sapiom/agent@0.14.0 + - @sapiom/agent-runtime@0.7.2 + ## 0.13.5 ### Patch Changes diff --git a/packages/agent-core/package.json b/packages/agent-core/package.json index 345c66367..91ba6b5c0 100644 --- a/packages/agent-core/package.json +++ b/packages/agent-core/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/agent-core", - "version": "0.13.5", + "version": "0.14.0", "description": "Pure, stateless core functions for scaffolding, validating, and operating Sapiom agents — shared by the CLI and MCP packages.", "license": "MIT", "author": "Sapiom", diff --git a/packages/agent-core/src/version-fallback.generated.ts b/packages/agent-core/src/version-fallback.generated.ts index 80fa623a6..ed7091eb3 100644 --- a/packages/agent-core/src/version-fallback.generated.ts +++ b/packages/agent-core/src/version-fallback.generated.ts @@ -4,6 +4,6 @@ // @sapiom/agent + @sapiom/tools versions and the offline scaffold fallback can no // longer drift. export const VERSION_FALLBACK = { - agent: "0.13.2", + agent: "0.14.0", tools: "0.36.0", } as const; diff --git a/packages/agent-runtime/CHANGELOG.md b/packages/agent-runtime/CHANGELOG.md index 8095467cf..20c0b4f2b 100644 --- a/packages/agent-runtime/CHANGELOG.md +++ b/packages/agent-runtime/CHANGELOG.md @@ -1,5 +1,45 @@ # @sapiom/orchestration-runtime +## 0.7.2 + +### Patch Changes + +- 421439b: A defaulted field is no longer required at any depth in an input schema + + A step's published `inputSchema` listed a field as `required` even when it + carried a Zod `.default()`, as long as the field sat inside a nested object, an + array item, or a union/intersection branch. An AJV pre-gate then rejected a + **partial** input for those fields while an entirely omitted input validated — + so `{ opts: {} }` failed where `{}` passed, contradicting the authoring guidance + that a default makes a field omissible. A `.prefault()` field stayed required at + every depth for the same reason. + + `zodToJsonSchema` now converts in Zod's `io: "input"` mode — the mode that + describes what a caller may SEND — and runs the result through a new exported + `normalizeInputJsonSchema`, which drops defaulted keys from `required` and + strips `additionalProperties: false` on every schema node it can reach. + + **If you call `zodToJsonSchema` directly**, its output changes: a smaller + `required` set, no `additionalProperties: false` from `z.strictObject()`, a + `.pipe()`/`.transform()` described by its input type rather than its output + type, and a schema containing a `.transform()` now converting successfully where + it previously threw `Transforms cannot be represented in JSON Schema`. Every + change is in the "what may a caller send" direction. If you need the + value-a-parse-returns schema instead, call `z.toJSONSchema(schema)` yourself. + + Also: + + - `stepInputContract` / `workflowInputContract` return the same normalized + schema the manifest publishes, so a displayed contract (a Run form, inspect + tooling) agrees with what a pre-gate enforces. + - `@sapiom/agent-runtime`'s step-input pre-gate normalizes the manifest it is + handed, so an agent deployed on an earlier version accepts a partial nested + input without being redeployed. A `.prefault()` field still needs a redeploy — + the older schema records no `default` keyword for it to key off. + +- Updated dependencies [421439b] + - @sapiom/agent@0.14.0 + ## 0.7.1 ### Patch Changes diff --git a/packages/agent-runtime/package.json b/packages/agent-runtime/package.json index 488f2dac8..378fef5cc 100644 --- a/packages/agent-runtime/package.json +++ b/packages/agent-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/agent-runtime", - "version": "0.7.1", + "version": "0.7.2", "description": "The Sapiom orchestration runtime: the host-agnostic graph-walker decision logic + the host interfaces (execution store, step dispatcher, observer) it runs against. One runtime, two hosts (server engine + local runner).", "license": "MIT", "author": "Sapiom", diff --git a/packages/agent-studio/CHANGELOG.md b/packages/agent-studio/CHANGELOG.md index eb7dadf48..3c91c924d 100644 --- a/packages/agent-studio/CHANGELOG.md +++ b/packages/agent-studio/CHANGELOG.md @@ -1,5 +1,20 @@ # @sapiom/agent-studio +## 0.1.26 + +### Patch Changes + +- Updated dependencies [7776065] +- Updated dependencies [84f5767] +- Updated dependencies [6b0b11f] +- Updated dependencies [4b1ebc5] +- Updated dependencies [fefb4f8] +- Updated dependencies [cf3e872] +- Updated dependencies [0f28c4e] +- Updated dependencies [b460c9a] +- Updated dependencies [7776065] + - @sapiom/harness@0.17.0 + ## 0.1.25 ### Patch Changes diff --git a/packages/agent-studio/package.json b/packages/agent-studio/package.json index bffea15dc..a0376ff6a 100644 --- a/packages/agent-studio/package.json +++ b/packages/agent-studio/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/agent-studio", - "version": "0.1.25", + "version": "0.1.26", "description": "Agent Studio — build, test, deploy, and run Sapiom agents with your coding agent in a local workspace.", "keywords": [ "sapiom", diff --git a/packages/agent/CHANGELOG.md b/packages/agent/CHANGELOG.md index e273581f5..cef493aea 100644 --- a/packages/agent/CHANGELOG.md +++ b/packages/agent/CHANGELOG.md @@ -1,5 +1,42 @@ # @sapiom/orchestration +## 0.14.0 + +### Minor Changes + +- 421439b: A defaulted field is no longer required at any depth in an input schema + + A step's published `inputSchema` listed a field as `required` even when it + carried a Zod `.default()`, as long as the field sat inside a nested object, an + array item, or a union/intersection branch. An AJV pre-gate then rejected a + **partial** input for those fields while an entirely omitted input validated — + so `{ opts: {} }` failed where `{}` passed, contradicting the authoring guidance + that a default makes a field omissible. A `.prefault()` field stayed required at + every depth for the same reason. + + `zodToJsonSchema` now converts in Zod's `io: "input"` mode — the mode that + describes what a caller may SEND — and runs the result through a new exported + `normalizeInputJsonSchema`, which drops defaulted keys from `required` and + strips `additionalProperties: false` on every schema node it can reach. + + **If you call `zodToJsonSchema` directly**, its output changes: a smaller + `required` set, no `additionalProperties: false` from `z.strictObject()`, a + `.pipe()`/`.transform()` described by its input type rather than its output + type, and a schema containing a `.transform()` now converting successfully where + it previously threw `Transforms cannot be represented in JSON Schema`. Every + change is in the "what may a caller send" direction. If you need the + value-a-parse-returns schema instead, call `z.toJSONSchema(schema)` yourself. + + Also: + + - `stepInputContract` / `workflowInputContract` return the same normalized + schema the manifest publishes, so a displayed contract (a Run form, inspect + tooling) agrees with what a pre-gate enforces. + - `@sapiom/agent-runtime`'s step-input pre-gate normalizes the manifest it is + handed, so an agent deployed on an earlier version accepts a partial nested + input without being redeployed. A `.prefault()` field still needs a redeploy — + the older schema records no `default` keyword for it to key off. + ## 0.13.2 ### Patch Changes diff --git a/packages/agent/package.json b/packages/agent/package.json index dac975c02..b83c74f44 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/agent", - "version": "0.13.2", + "version": "0.14.0", "description": "Versioned public contract for authoring Sapiom agents: types, directive constructors/guards, defineAgent, defineStep, InMemoryContextStore. Shared by customer agent definitions, the sandbox step-runner, and the engine.", "license": "MIT", "author": "Sapiom", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 787ced22e..7739feb74 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,24 @@ # @sapiom/cli +## 16.0.0 + +### Patch Changes + +- Updated dependencies [7776065] +- Updated dependencies [84f5767] +- Updated dependencies [6b0b11f] +- Updated dependencies [4b1ebc5] +- Updated dependencies [421439b] +- Updated dependencies [fefb4f8] +- Updated dependencies [cf3e872] +- Updated dependencies [0f28c4e] +- Updated dependencies [b460c9a] +- Updated dependencies [7776065] +- Updated dependencies [5d18ba3] + - @sapiom/harness@0.17.0 + - @sapiom/agent@0.14.0 + - @sapiom/agent-core@0.14.0 + ## 15.0.0 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index e4f6eb96a..71c822b7d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/cli", - "version": "15.0.0", + "version": "16.0.0", "description": "The Sapiom command-line interface — scaffold, validate, and ship Sapiom agents.", "license": "MIT", "author": "Sapiom", @@ -46,7 +46,7 @@ "zod": "^3.25.76" }, "peerDependencies": { - "@sapiom/harness": ">=0.16.0" + "@sapiom/harness": ">=0.17.0" }, "peerDependenciesMeta": { "@sapiom/harness": { diff --git a/packages/harness-desktop/CHANGELOG.md b/packages/harness-desktop/CHANGELOG.md index 6c2c93737..0154c1687 100644 --- a/packages/harness-desktop/CHANGELOG.md +++ b/packages/harness-desktop/CHANGELOG.md @@ -1,5 +1,20 @@ # @sapiom/harness-desktop +## 0.4.7 + +### Patch Changes + +- Updated dependencies [7776065] +- Updated dependencies [84f5767] +- Updated dependencies [6b0b11f] +- Updated dependencies [4b1ebc5] +- Updated dependencies [fefb4f8] +- Updated dependencies [cf3e872] +- Updated dependencies [0f28c4e] +- Updated dependencies [b460c9a] +- Updated dependencies [7776065] + - @sapiom/harness@0.17.0 + ## 0.4.6 ### Patch Changes diff --git a/packages/harness-desktop/package.json b/packages/harness-desktop/package.json index 16f99d821..880ac2024 100644 --- a/packages/harness-desktop/package.json +++ b/packages/harness-desktop/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/harness-desktop", - "version": "0.4.6", + "version": "0.4.7", "private": true, "description": "Agent Studio desktop app — a one-click native host for running Claude Code or Codex in a Sapiom-configured environment. The npx CLI (@sapiom/harness) remains the backup host over the same startServer().", "homepage": "https://sapiom.ai", diff --git a/packages/harness/CHANGELOG.md b/packages/harness/CHANGELOG.md index 973fd8d90..4cd3946ab 100644 --- a/packages/harness/CHANGELOG.md +++ b/packages/harness/CHANGELOG.md @@ -1,5 +1,47 @@ # @sapiom/harness +## 0.17.0 + +### Minor Changes + +- 84f5767: Surface when a running Claude session needs the current Sapiom connection, prevent prepared sessions or tasks from launching after it changes, and expose `MCP_CREDENTIAL_GENERATION_CHANGED` as a retryable conflict. +- fefb4f8: Expose the shared credential-store path to authenticated local integrations and stop affected Studio-managed Claude sessions and background tasks when the current Sapiom connection is removed. +- cf3e872: Offer an explicit MCP session restart API and UI action when the Sapiom connection changes, and export `McpSessionRestartUnavailableError` for programmatic handling. +- b460c9a: Resolve linked agents from one tenant-scoped definitions list per poll instead + of a by-id lookup per agent: definitions the signed-in account cannot see are + never requested and show as unavailable in Studio. `WorkflowInfo` gains an + optional, serve-time `definitionAccess` field (never persisted). + +### Patch Changes + +- 7776065: Limit archive backfill to 200 conversations per maintenance pass. Keep source events while work remains or archiving fails, and retry at the next scheduled cleanup. +- 6b0b11f: Name the two Sapiom MCP servers by role in both offline fallbacks — "the local + authoring server" and "the hosted capability server" — instead of by registration + alias (SAP-3179). + + The two texts disagreed: the Studio prompt called the servers `sapiom` (hosted) and + `sapiom-dev` (local), which is what Studio registers; the authoring primer called them + `sapiom` (local) and `sapiom-direct` (hosted), which is what a plain Claude Code user is + told to register. A Studio session reads both, so "use the `sapiom` alias to author + agents" pointed it at the remote server the prompt had just said not to call while + authoring. Aliases now appear only inside the two `claude mcp add` commands, which are + unchanged. The Studio prompt also disambiguates the two same-named `sapiom_authenticate` + / `sapiom_status` pairs, so a session signs in against the local server. + + Both digest pins move with the bodies. The paired backend content release + (sapiom/Sapiom#4884) must adopt the same two bodies for the cross-repo pins to agree. + +- 4b1ebc5: Keep overlapping Studio sign-in and sign-out transitions ordered while allowing a new sign-in to begin promptly after signing out. +- 0f28c4e: Prevent repeated exit-status broadcasts from deleting configuration regenerated during session resume, including sessions restored after restart or imported from history. Failed resume preparation also cleans up regenerated configuration. +- 7776065: Preserve the selected coding agent when launching a template from the new-session composer or template gallery, including bundled starters. Codex selections no longer start Claude Code sessions. +- Updated dependencies [6b0b11f] +- Updated dependencies [421439b] +- Updated dependencies [fefb4f8] +- Updated dependencies [5d18ba3] + - @sapiom/mcp@0.16.0 + - @sapiom/agent@0.14.0 + - @sapiom/agent-core@0.14.0 + ## 0.16.0 ### Minor Changes diff --git a/packages/harness/package.json b/packages/harness/package.json index 50c858fba..7f79f6c25 100644 --- a/packages/harness/package.json +++ b/packages/harness/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/harness", - "version": "0.16.0", + "version": "0.17.0", "description": "Agent Studio — a CLI-launched local web app that runs your coding agent (Claude Code or Codex) in a Sapiom-configured environment: MCP pre-wired, agents tracked, one-click deploy/run, and a live canvas for previews.", "keywords": [ "sapiom", diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md index b043a68e8..38b9213c9 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,61 @@ # @sapiom/mcp +## 0.16.0 + +### Minor Changes + +- fefb4f8: Expose the shared credential-store path to authenticated local integrations and stop affected Studio-managed Claude sessions and background tasks when the current Sapiom connection is removed. +- 5d18ba3: Expose all four backend trigger kinds from the local authoring MCP (SAP-3174). + `sapiom_dev_agents_schedule` now accepts `kind: "event"` (+ `eventType`) and + `kind: "webhook"` alongside `schedule_cron` / `schedule_once`. A webhook create + returns the public hook URL, the shown-once signing secret, and the signing + scheme in the tool result (HMAC-SHA256 over `timestamp.eventId.rawBody`, sent as + `X-Sapiom-Timestamp` / `X-Sapiom-Event-Id` / `X-Sapiom-Signature`), and the + description says when a webhook trigger fits versus an App Link `/hook/*` + receiver (third-party senders cannot produce our HMAC). `_schedule_inspect` and + `_schedule_cancel` describe every kind; the new `sapiom_dev_agents_schedule_secret` + tool rotates, completes a rotation of, or revokes a webhook secret. + + `@sapiom/agent-core` gains the matching `ScheduleKind` members, the webhook / + event fields on `ScheduleSummary`, `CreateScheduleResult`, and + `rotateScheduleSecret` / `completeScheduleSecretRotation` / `revokeScheduleSecret`. + + **Breaking (types only, `@sapiom/agent-core`):** `ScheduleFireRecord.scheduledFor` + is now `string | null` — an event or webhook fire has no occurrence time, so code + that did `new Date(fire.scheduledFor)` must guard for `null` (or read + `fire.receiptId` for those kinds). `ScheduleSummary` gains five required fields + (`eventType`, `publicId`, `secretVersion`, `graceUntil`, `revokedAt`, all + nullable) that the server always returns; hand-built `ScheduleSummary` values + (test fakes, adapters) must add them. `ScheduleKind` widens to include `"event"` + and `"webhook"`, so an exhaustive `switch` over it needs the two new arms. No + runtime behaviour changes for existing cron / one-off callers. + + The offline `AUTHORING_INSTRUCTIONS` fallback and the `sapiom-agent-authoring` + skill gain a triggers paragraph teaching the same thing; the served-text change + is version-gated on `@sapiom/mcp` >= 0.15 because older clients are never + offered the new kinds. + +### Patch Changes + +- 6b0b11f: Name the two Sapiom MCP servers by role in both offline fallbacks — "the local + authoring server" and "the hosted capability server" — instead of by registration + alias (SAP-3179). + + The two texts disagreed: the Studio prompt called the servers `sapiom` (hosted) and + `sapiom-dev` (local), which is what Studio registers; the authoring primer called them + `sapiom` (local) and `sapiom-direct` (hosted), which is what a plain Claude Code user is + told to register. A Studio session reads both, so "use the `sapiom` alias to author + agents" pointed it at the remote server the prompt had just said not to call while + authoring. Aliases now appear only inside the two `claude mcp add` commands, which are + unchanged. The Studio prompt also disambiguates the two same-named `sapiom_authenticate` + / `sapiom_status` pairs, so a session signs in against the local server. + + Both digest pins move with the bodies. The paired backend content release + (sapiom/Sapiom#4884) must adopt the same two bodies for the cross-repo pins to agree. + +- Updated dependencies [5d18ba3] + - @sapiom/agent-core@0.14.0 + ## 0.15.0 ### Minor Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index fbdddc7e7..bb54f2867 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/mcp", - "version": "0.15.0", + "version": "0.16.0", "description": "Local Sapiom developer MCP server (sapiom-dev) — the unmetered surface for building and operating on Sapiom; today it scaffolds, tests, deploys, and inspects orchestrations. Not the remote Sapiom capability MCP.", "mcpName": "io.github.sapiom/mcp", "keywords": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1d58f7ac..ee5cbd725 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -259,7 +259,7 @@ importers: specifier: workspace:^ version: link:../analytics-core '@sapiom/harness': - specifier: '>=0.16.0' + specifier: '>=0.17.0' version: link:../harness '@sapiom/sandbox-preview': specifier: workspace:^