diff --git a/.changeset/calm-maps-arrive.md b/.changeset/calm-maps-arrive.md deleted file mode 100644 index a2de62e73..000000000 --- a/.changeset/calm-maps-arrive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Add durable, path-free Studio project identities and lazy Agent Map workspace state. The authenticated local server now exposes project workspace and root-binding association endpoints, and stores the new catalog at `studio-projects.json` with per-project records beneath `agent-map/` in the configured harness state root. The legacy System Graph and per-agent Canvas remain unchanged. diff --git a/.changeset/calm-scans-separate.md b/.changeset/calm-scans-separate.md deleted file mode 100644 index 0cc7be2a7..000000000 --- a/.changeset/calm-scans-separate.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": patch ---- - -Separate permanent workspace discovery freshness from legacy System Graph invocation observations while preserving shared watcher ownership. On polling fallback, files covered only by legacy invocation scanning stop triggering session and rail rescans after the legacy graph subscription retires; accepted discovery inputs continue to refresh normally. diff --git a/.changeset/calm-watches-share.md b/.changeset/calm-watches-share.md deleted file mode 100644 index ba51f2424..000000000 --- a/.changeset/calm-watches-share.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": patch ---- - -Refactor workspace file-watch ownership without changing behavior or public APIs. diff --git a/.changeset/document-images-launch.md b/.changeset/document-images-launch.md deleted file mode 100644 index bc5ff95a1..000000000 --- a/.changeset/document-images-launch.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/tools": patch ---- - -Document `images.launch` in the content-generation README: the launch handle, `wait()` and its 2min/2s defaults, `IMAGE_RESULT_SIGNAL`, `ImageResultPayload`, and when to prefer `launch` over `create`. The async image path shipped in 0.25.0 with no README coverage. Also corrects the pause/resume snippets in both the image and video sections — `defineStep`'s `pause` requires `signal` and `resumeStep` and belongs on the pausing step, and the pause/resume helpers are imported from `@sapiom/agent`. diff --git a/.changeset/fresh-maps-plan.md b/.changeset/fresh-maps-plan.md deleted file mode 100644 index 3d79058a8..000000000 --- a/.changeset/fresh-maps-plan.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Open Studio Agent Maps as a dedicated planning workspace with a live, project-scoped planning conversation beside the durable map. Planner tabs can resume, start fresh, rename, and end; transcript updates refetch through content-free invalidations, map and planner failures retry independently, and mobile keeps the conversation primary behind an explicit Agent Map sheet. - -This release adds variants to the public `BusMessage`, `UiEventName`, and `AnalyticsEventType` unions. Consumers that switch over these forward-extensible event types should retain a default arm so later additive events remain source-compatible. diff --git a/.changeset/live-agent-maps-render.md b/.changeset/live-agent-maps-render.md deleted file mode 100644 index 7986ba651..000000000 --- a/.changeset/live-agent-maps-render.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Render the shared Agent Map proposal live beside its raw coding-agent CLI. Studio now applies only contiguous attributed deltas, refetches durable state after gaps or reconnects, and presents all five planned node kinds and six directed relationship kinds on a read-only accessible canvas with structured inspection and one role-neutral Proposed treatment. - -Planner onboarding now stays in the coding agent's hidden launch context instead of appearing as a synthetic user turn, and signed-out local sessions rooted in a Studio project receive the same scoped Agent Map tools as authenticated sessions. The former automatic assistant-first greeting and retry lifecycle is now compatibility-only for persisted sessions and API clients; new interactive planner sessions begin with the developer's real input, so `planner_greeting.attempted`, `planner_greeting.delivered`, `planner_greeting.failed`, `planner_greeting.skipped`, and `planner_greeting.retried` should no longer be treated as active new-session signals. - -Agent Map planners now launch with a dedicated architecture-planning profile instead of inheriting Studio's scaffold/run/deploy coding profile. The validate and propose MCP tools advertise every typed operation variant while retaining bounded service-authored validation errors for malformed calls. - -This release adds variants to the public `UiEventName` and `AnalyticsEventType` unions. Consumers that switch over these forward-extensible event types should retain a default arm so later additive events remain source-compatible. diff --git a/.changeset/live-studios-refresh.md b/.changeset/live-studios-refresh.md deleted file mode 100644 index fd10913b6..000000000 --- a/.changeset/live-studios-refresh.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sapiom/mcp": minor -"@sapiom/harness": minor ---- - -Resolve the latest saved credential and selected environment whenever Agent Studio creates, resumes, or runs a background Claude session. A confirmed credential removal now clears the launch key, while a malformed or unreadable store preserves the last-known key. Unknown selected environments now fail the affected launch with an explicit configuration error instead of silently routing it to production. Preserve `--no-auth` as a process-wide opt-out and expose a strict credential-store reader for safe live reconciliation. diff --git a/.changeset/scoped-maps-connect.md b/.changeset/scoped-maps-connect.md deleted file mode 100644 index 69b1b6288..000000000 --- a/.changeset/scoped-maps-connect.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Expose the shared Agent Map proposal through one capability-authenticated embedded HTTP MCP endpoint. Project planner, assigned-builder, and manual-builder sessions receive identical read, validate, and propose tools through private per-session Claude or Codex launch configuration, with rotation on resume and revocation on exit. diff --git a/.changeset/shared-proposals-persist.md b/.changeset/shared-proposals-persist.md deleted file mode 100644 index bf8f707c2..000000000 --- a/.changeset/shared-proposals-persist.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Prepare crash-atomic, project-wide Agent Map proposal persistence for the SAP-3060 transport, with attributed operation history, bounded session-scoped idempotency receipts, and history-derived stale-write rebasing. Exact results are retained for a bounded retry window, while older same-session request IDs cannot apply twice. Agent Map workspace reads now return a coherent versioned workspace-and-proposal snapshot, and the named browser-safe contracts required by the accepted-delta bus payload are exported from the package entry point. diff --git a/.changeset/steady-agents-map.md b/.changeset/steady-agents-map.md deleted file mode 100644 index d6daa8634..000000000 --- a/.changeset/steady-agents-map.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Open durable Studio projects in a pinned Agent Map workspace and remember the selected Agent Map or agent per user and project. Preferences live in the new `agent-map/studio-workspace-preferences.json` state file and are exposed through the path-free `GET` and `PUT /api/projects/:projectId/current-workspace` routes. Agent identities remain opaque outside the server, survive authenticated moves, and repair safely when a complete project scan proves that an agent was deleted. diff --git a/.changeset/tidy-donkeys-report.md b/.changeset/tidy-donkeys-report.md deleted file mode 100644 index 00bf58cbb..000000000 --- a/.changeset/tidy-donkeys-report.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@sapiom/tools": minor ---- - -`contentGeneration`: an async image or video job that terminally FAILS is now distinguishable from one that is merely slow (SAP-3097). - -**`wait()` fails fast — live in this release.** Every non-OK poll response used to be treated as "still generating", so a job that failed in three seconds burned the caller's whole `timeoutMs` and then threw `Image generation did not complete within 300000ms` — the opposite of what happened. `wait()` (and `video.create`, which polls the same way) now reads the queue's terminal state and throws the new `ContentGenerationFailedError` as soon as the job fails, carrying `requestId` and the provider's own `providerError`. A plain `Error` about the timeout now means only what it says: the job was still running when you stopped waiting. `ContentGenerationFailedError` is exported from `@sapiom/tools`. - -A transport blip still keeps polling. A non-OK result poll is ambiguous on its own, so it is disambiguated against the status endpoint, and anything short of an explicit terminal marker keeps the poll going. - -**`generationError` on the resume payload — a type, populated by the platform.** `ImageResultPayload` and `VideoResultPayload` outputs gain `generationError?: string`. A terminal provider failure has been arriving on `storageError` — the field documented as "persisting this output failed" — so a resumed workflow step concludes storage broke when in fact nothing was ever generated. The platform sends one field or the other, never both, so a step can branch without string-matching a message. - -Nothing in this package produces `generationError`; it appears on the wire once the corresponding gateway change is deployed, and a step running against an older gateway still sees a generation failure on `storageError`. Check `generationError` first and fall back to `storageError` — that reads correctly on both sides of the deploy. - -The type is also what makes `VIDEO_RESULT_SIGNAL`'s documented "carries the result either way (ready OR failed)" contract expressible; the payload previously had nowhere to put the failure. `IMAGE_RESULT_SIGNAL` carries the same contract. diff --git a/.changeset/trusted-planners-plan.md b/.changeset/trusted-planners-plan.md deleted file mode 100644 index f56f8eca1..000000000 --- a/.changeset/trusted-planners-plan.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Add trusted, project-scoped Agent Map planner sessions with deterministic -resume-or-create/fresh resolution, focused path-free context, a durable -automatic-greeting state machine, FIFO user input, bounded lifecycle telemetry, -public planner session/greeting state, and per-session ingest capabilities that -cannot be replayed across PTYs or used for host `/api` mutations. Rehydrated -planner replacements atomically inherit the exact predecessor FIFO while their -focused brief can reuse an older recorded ancestor. - -**Breaking:** generic `POST /api/sessions` now strictly rejects unknown fields, -so clients can no longer attach planner metadata to a generic create request. -Generic planner input, resume, and adopt routes also reject planner-owned -sessions. Generic adopt additionally rejects every conflicting current owner -or durable historical vendor identity, including ordinary pre-`/clear` and -pre-`/resume` aliases, with a bounded 409 before adapter probing. Migrate -planner clients to the project-scoped open, message, and greeting-retry routes -under `/api/projects/:projectId/planner-sessions`. - -All coding-agent sessions now pin -vendor identity to a durable session owner: conflicting `SessionStart` claims -are rejected. The only rotation exception is a short-lived, one-shot -server-observed `/clear` or `/resume` terminal gesture; `/resume` picker input -may refresh its soft window only within a bounded hard deadline. - -On upgrade, duplicate legacy vendor resume pointers are migrated with the first -persisted `sessions.json` row as owner. Later duplicate rows are rewritten with -`agentSessionId: null` and cannot resume or re-adopt that fenced identity under -the losing row. Provider transcripts and conversation history are not deleted; -start a fresh session in the losing row's directory to continue there. diff --git a/.changeset/wise-prompts-deploy.md b/.changeset/wise-prompts-deploy.md deleted file mode 100644 index 3e1fb61f7..000000000 --- a/.changeset/wise-prompts-deploy.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sapiom/harness": minor ---- - -Agent Studio now fetches its coding-agent system prompt from the Sapiom backend on session start (`GET /v1/harness/system-prompt`), instead of using only the copy baked into this package. Prompt improvements now reach a session after a backend deploy rather than after an npm upgrade. The bundled prompt remains the offline fallback — a non-200, empty body, network error or 5s timeout starts the session on it, exactly as before. - -The request is unconditional: it fetches configuration rather than reporting usage, so it is not gated on the telemetry opt-in, and it carries no session content, identifiers or API key. Set `SAPIOM_HARNESS_PROMPT_FETCH_DISABLED=1` (or `true`) to skip it and always use the bundled prompt — see the README's "Outbound requests" section. diff --git a/packages/agent-core/CHANGELOG.md b/packages/agent-core/CHANGELOG.md index bfe59248f..812db12cf 100644 --- a/packages/agent-core/CHANGELOG.md +++ b/packages/agent-core/CHANGELOG.md @@ -1,5 +1,14 @@ # @sapiom/orchestration-core +## 0.13.4 + +### Patch Changes + +- Updated dependencies [44d7f76] +- Updated dependencies [5808e8f] + - @sapiom/tools@0.35.0 + - @sapiom/agent@0.13.1 + ## 0.13.3 ### Patch Changes diff --git a/packages/agent-core/package.json b/packages/agent-core/package.json index 5c47271b9..f8d205326 100644 --- a/packages/agent-core/package.json +++ b/packages/agent-core/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/agent-core", - "version": "0.13.3", + "version": "0.13.4", "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 de6f4afb8..5fe3f5d66 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.0", - tools: "0.34.0", + agent: "0.13.1", + tools: "0.35.0", } as const; diff --git a/packages/agent-studio/CHANGELOG.md b/packages/agent-studio/CHANGELOG.md index 4c5617f45..2fd9a8bca 100644 --- a/packages/agent-studio/CHANGELOG.md +++ b/packages/agent-studio/CHANGELOG.md @@ -1,5 +1,22 @@ # @sapiom/agent-studio +## 0.1.22 + +### Patch Changes + +- Updated dependencies [516f13a] +- Updated dependencies [d26f6f5] +- Updated dependencies [e9a847b] +- Updated dependencies [fb2486d] +- Updated dependencies [6864bdb] +- Updated dependencies [ae0a77e] +- Updated dependencies [31bdf89] +- Updated dependencies [1729542] +- Updated dependencies [189eaf1] +- Updated dependencies [ac9a35f] +- Updated dependencies [6bc9d58] + - @sapiom/harness@0.13.0 + ## 0.1.21 ### Patch Changes diff --git a/packages/agent-studio/package.json b/packages/agent-studio/package.json index d6f6df821..5fceb3307 100644 --- a/packages/agent-studio/package.json +++ b/packages/agent-studio/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/agent-studio", - "version": "0.1.21", + "version": "0.1.22", "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 e1ba9c20a..3eba2eac1 100644 --- a/packages/agent/CHANGELOG.md +++ b/packages/agent/CHANGELOG.md @@ -1,5 +1,13 @@ # @sapiom/orchestration +## 0.13.1 + +### Patch Changes + +- Updated dependencies [44d7f76] +- Updated dependencies [5808e8f] + - @sapiom/tools@0.35.0 + ## 0.13.0 ### Minor Changes diff --git a/packages/agent/package.json b/packages/agent/package.json index 7bedd71cd..1a95f0b67 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/agent", - "version": "0.13.0", + "version": "0.13.1", "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 4b9683acf..6be452f24 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,25 @@ # @sapiom/cli +## 12.0.0 + +### Patch Changes + +- Updated dependencies [516f13a] +- Updated dependencies [d26f6f5] +- Updated dependencies [e9a847b] +- Updated dependencies [fb2486d] +- Updated dependencies [6864bdb] +- Updated dependencies [ae0a77e] +- Updated dependencies [31bdf89] +- Updated dependencies [1729542] +- Updated dependencies [189eaf1] +- Updated dependencies [ac9a35f] +- Updated dependencies [6bc9d58] + - @sapiom/harness@0.13.0 + - @sapiom/agent@0.13.1 + - @sapiom/agent-core@0.13.4 + - @sapiom/sandbox-preview@0.1.21 + ## 11.0.0 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index a03a4499c..664593c67 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/cli", - "version": "11.0.0", + "version": "12.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.12.0" + "@sapiom/harness": ">=0.13.0" }, "peerDependenciesMeta": { "@sapiom/harness": { diff --git a/packages/harness-desktop/CHANGELOG.md b/packages/harness-desktop/CHANGELOG.md index f9b8bb0c8..9e910136d 100644 --- a/packages/harness-desktop/CHANGELOG.md +++ b/packages/harness-desktop/CHANGELOG.md @@ -1,5 +1,22 @@ # @sapiom/harness-desktop +## 0.4.3 + +### Patch Changes + +- Updated dependencies [516f13a] +- Updated dependencies [d26f6f5] +- Updated dependencies [e9a847b] +- Updated dependencies [fb2486d] +- Updated dependencies [6864bdb] +- Updated dependencies [ae0a77e] +- Updated dependencies [31bdf89] +- Updated dependencies [1729542] +- Updated dependencies [189eaf1] +- Updated dependencies [ac9a35f] +- Updated dependencies [6bc9d58] + - @sapiom/harness@0.13.0 + ## 0.4.2 ### Patch Changes diff --git a/packages/harness-desktop/package.json b/packages/harness-desktop/package.json index d05a2ebb9..7ccac09b8 100644 --- a/packages/harness-desktop/package.json +++ b/packages/harness-desktop/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/harness-desktop", - "version": "0.4.2", + "version": "0.4.3", "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 c2f2dab1d..90a36143c 100644 --- a/packages/harness/CHANGELOG.md +++ b/packages/harness/CHANGELOG.md @@ -1,5 +1,68 @@ # @sapiom/harness +## 0.13.0 + +### Minor Changes + +- 516f13a: Add durable, path-free Studio project identities and lazy Agent Map workspace state. The authenticated local server now exposes project workspace and root-binding association endpoints, and stores the new catalog at `studio-projects.json` with per-project records beneath `agent-map/` in the configured harness state root. The legacy System Graph and per-agent Canvas remain unchanged. +- fb2486d: Open Studio Agent Maps as a dedicated planning workspace with a live, project-scoped planning conversation beside the durable map. Planner tabs can resume, start fresh, rename, and end; transcript updates refetch through content-free invalidations, map and planner failures retry independently, and mobile keeps the conversation primary behind an explicit Agent Map sheet. + + This release adds variants to the public `BusMessage`, `UiEventName`, and `AnalyticsEventType` unions. Consumers that switch over these forward-extensible event types should retain a default arm so later additive events remain source-compatible. + +- 6864bdb: Render the shared Agent Map proposal live beside its raw coding-agent CLI. Studio now applies only contiguous attributed deltas, refetches durable state after gaps or reconnects, and presents all five planned node kinds and six directed relationship kinds on a read-only accessible canvas with structured inspection and one role-neutral Proposed treatment. + + Planner onboarding now stays in the coding agent's hidden launch context instead of appearing as a synthetic user turn, and signed-out local sessions rooted in a Studio project receive the same scoped Agent Map tools as authenticated sessions. The former automatic assistant-first greeting and retry lifecycle is now compatibility-only for persisted sessions and API clients; new interactive planner sessions begin with the developer's real input, so `planner_greeting.attempted`, `planner_greeting.delivered`, `planner_greeting.failed`, `planner_greeting.skipped`, and `planner_greeting.retried` should no longer be treated as active new-session signals. + + Agent Map planners now launch with a dedicated architecture-planning profile instead of inheriting Studio's scaffold/run/deploy coding profile. The validate and propose MCP tools advertise every typed operation variant while retaining bounded service-authored validation errors for malformed calls. + + This release adds variants to the public `UiEventName` and `AnalyticsEventType` unions. Consumers that switch over these forward-extensible event types should retain a default arm so later additive events remain source-compatible. + +- ae0a77e: Resolve the latest saved credential and selected environment whenever Agent Studio creates, resumes, or runs a background Claude session. A confirmed credential removal now clears the launch key, while a malformed or unreadable store preserves the last-known key. Unknown selected environments now fail the affected launch with an explicit configuration error instead of silently routing it to production. Preserve `--no-auth` as a process-wide opt-out and expose a strict credential-store reader for safe live reconciliation. +- 31bdf89: Expose the shared Agent Map proposal through one capability-authenticated embedded HTTP MCP endpoint. Project planner, assigned-builder, and manual-builder sessions receive identical read, validate, and propose tools through private per-session Claude or Codex launch configuration, with rotation on resume and revocation on exit. +- 1729542: Prepare crash-atomic, project-wide Agent Map proposal persistence for the SAP-3060 transport, with attributed operation history, bounded session-scoped idempotency receipts, and history-derived stale-write rebasing. Exact results are retained for a bounded retry window, while older same-session request IDs cannot apply twice. Agent Map workspace reads now return a coherent versioned workspace-and-proposal snapshot, and the named browser-safe contracts required by the accepted-delta bus payload are exported from the package entry point. +- 189eaf1: Open durable Studio projects in a pinned Agent Map workspace and remember the selected Agent Map or agent per user and project. Preferences live in the new `agent-map/studio-workspace-preferences.json` state file and are exposed through the path-free `GET` and `PUT /api/projects/:projectId/current-workspace` routes. Agent identities remain opaque outside the server, survive authenticated moves, and repair safely when a complete project scan proves that an agent was deleted. +- ac9a35f: Add trusted, project-scoped Agent Map planner sessions with deterministic + resume-or-create/fresh resolution, focused path-free context, a durable + automatic-greeting state machine, FIFO user input, bounded lifecycle telemetry, + public planner session/greeting state, and per-session ingest capabilities that + cannot be replayed across PTYs or used for host `/api` mutations. Rehydrated + planner replacements atomically inherit the exact predecessor FIFO while their + focused brief can reuse an older recorded ancestor. + + **Breaking:** generic `POST /api/sessions` now strictly rejects unknown fields, + so clients can no longer attach planner metadata to a generic create request. + Generic planner input, resume, and adopt routes also reject planner-owned + sessions. Generic adopt additionally rejects every conflicting current owner + or durable historical vendor identity, including ordinary pre-`/clear` and + pre-`/resume` aliases, with a bounded 409 before adapter probing. Migrate + planner clients to the project-scoped open, message, and greeting-retry routes + under `/api/projects/:projectId/planner-sessions`. + + All coding-agent sessions now pin + vendor identity to a durable session owner: conflicting `SessionStart` claims + are rejected. The only rotation exception is a short-lived, one-shot + server-observed `/clear` or `/resume` terminal gesture; `/resume` picker input + may refresh its soft window only within a bounded hard deadline. + + On upgrade, duplicate legacy vendor resume pointers are migrated with the first + persisted `sessions.json` row as owner. Later duplicate rows are rewritten with + `agentSessionId: null` and cannot resume or re-adopt that fenced identity under + the losing row. Provider transcripts and conversation history are not deleted; + start a fresh session in the losing row's directory to continue there. + +- 6bc9d58: Agent Studio now fetches its coding-agent system prompt from the Sapiom backend on session start (`GET /v1/harness/system-prompt`), instead of using only the copy baked into this package. Prompt improvements now reach a session after a backend deploy rather than after an npm upgrade. The bundled prompt remains the offline fallback — a non-200, empty body, network error or 5s timeout starts the session on it, exactly as before. + + The request is unconditional: it fetches configuration rather than reporting usage, so it is not gated on the telemetry opt-in, and it carries no session content, identifiers or API key. Set `SAPIOM_HARNESS_PROMPT_FETCH_DISABLED=1` (or `true`) to skip it and always use the bundled prompt — see the README's "Outbound requests" section. + +### Patch Changes + +- d26f6f5: Separate permanent workspace discovery freshness from legacy System Graph invocation observations while preserving shared watcher ownership. On polling fallback, files covered only by legacy invocation scanning stop triggering session and rail rescans after the legacy graph subscription retires; accepted discovery inputs continue to refresh normally. +- e9a847b: Refactor workspace file-watch ownership without changing behavior or public APIs. +- Updated dependencies [ae0a77e] + - @sapiom/mcp@0.14.0 + - @sapiom/agent@0.13.1 + - @sapiom/agent-core@0.13.4 + ## 0.12.0 ### Minor Changes diff --git a/packages/harness/package.json b/packages/harness/package.json index 05dcb8c15..7bc5b1897 100644 --- a/packages/harness/package.json +++ b/packages/harness/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/harness", - "version": "0.12.0", + "version": "0.13.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 d9cffb399..bc7707681 100644 --- a/packages/mcp/CHANGELOG.md +++ b/packages/mcp/CHANGELOG.md @@ -1,5 +1,16 @@ # @sapiom/mcp +## 0.14.0 + +### Minor Changes + +- ae0a77e: Resolve the latest saved credential and selected environment whenever Agent Studio creates, resumes, or runs a background Claude session. A confirmed credential removal now clears the launch key, while a malformed or unreadable store preserves the last-known key. Unknown selected environments now fail the affected launch with an explicit configuration error instead of silently routing it to production. Preserve `--no-auth` as a process-wide opt-out and expose a strict credential-store reader for safe live reconciliation. + +### Patch Changes + +- @sapiom/agent-core@0.13.4 +- @sapiom/sandbox-preview@0.1.21 + ## 0.13.1 ### Patch Changes diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 0800b88aa..e5a59b639 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/mcp", - "version": "0.13.1", + "version": "0.14.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/packages/sandbox-preview/CHANGELOG.md b/packages/sandbox-preview/CHANGELOG.md index cbb025a1d..0979df24d 100644 --- a/packages/sandbox-preview/CHANGELOG.md +++ b/packages/sandbox-preview/CHANGELOG.md @@ -1,5 +1,13 @@ # @sapiom/sandbox-preview +## 0.1.21 + +### Patch Changes + +- Updated dependencies [44d7f76] +- Updated dependencies [5808e8f] + - @sapiom/tools@0.35.0 + ## 0.1.20 ### Patch Changes diff --git a/packages/sandbox-preview/package.json b/packages/sandbox-preview/package.json index 69b4d9c49..d49bf9b96 100644 --- a/packages/sandbox-preview/package.json +++ b/packages/sandbox-preview/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/sandbox-preview", - "version": "0.1.20", + "version": "0.1.21", "description": "Client-side flow for deploying a web-app preview to a Sapiom sandbox — provision, upload, deploy to a live URL. Shared by the CLI and MCP packages.", "license": "MIT", "author": "Sapiom", diff --git a/packages/tools/CHANGELOG.md b/packages/tools/CHANGELOG.md index cf051c6bf..216ca6075 100644 --- a/packages/tools/CHANGELOG.md +++ b/packages/tools/CHANGELOG.md @@ -1,5 +1,25 @@ # @sapiom/tools +## 0.35.0 + +### Minor Changes + +- 5808e8f: `contentGeneration`: an async image or video job that terminally FAILS is now distinguishable from one that is merely slow (SAP-3097). + + **`wait()` fails fast — live in this release.** Every non-OK poll response used to be treated as "still generating", so a job that failed in three seconds burned the caller's whole `timeoutMs` and then threw `Image generation did not complete within 300000ms` — the opposite of what happened. `wait()` (and `video.create`, which polls the same way) now reads the queue's terminal state and throws the new `ContentGenerationFailedError` as soon as the job fails, carrying `requestId` and the provider's own `providerError`. A plain `Error` about the timeout now means only what it says: the job was still running when you stopped waiting. `ContentGenerationFailedError` is exported from `@sapiom/tools`. + + A transport blip still keeps polling. A non-OK result poll is ambiguous on its own, so it is disambiguated against the status endpoint, and anything short of an explicit terminal marker keeps the poll going. + + **`generationError` on the resume payload — a type, populated by the platform.** `ImageResultPayload` and `VideoResultPayload` outputs gain `generationError?: string`. A terminal provider failure has been arriving on `storageError` — the field documented as "persisting this output failed" — so a resumed workflow step concludes storage broke when in fact nothing was ever generated. The platform sends one field or the other, never both, so a step can branch without string-matching a message. + + Nothing in this package produces `generationError`; it appears on the wire once the corresponding gateway change is deployed, and a step running against an older gateway still sees a generation failure on `storageError`. Check `generationError` first and fall back to `storageError` — that reads correctly on both sides of the deploy. + + The type is also what makes `VIDEO_RESULT_SIGNAL`'s documented "carries the result either way (ready OR failed)" contract expressible; the payload previously had nowhere to put the failure. `IMAGE_RESULT_SIGNAL` carries the same contract. + +### Patch Changes + +- 44d7f76: Document `images.launch` in the content-generation README: the launch handle, `wait()` and its 2min/2s defaults, `IMAGE_RESULT_SIGNAL`, `ImageResultPayload`, and when to prefer `launch` over `create`. The async image path shipped in 0.25.0 with no README coverage. Also corrects the pause/resume snippets in both the image and video sections — `defineStep`'s `pause` requires `signal` and `resumeStep` and belongs on the pausing step, and the pause/resume helpers are imported from `@sapiom/agent`. + ## 0.34.0 ### Minor Changes diff --git a/packages/tools/package.json b/packages/tools/package.json index 5680dcd22..262d1aea3 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -1,6 +1,6 @@ { "name": "@sapiom/tools", - "version": "0.34.0", + "version": "0.35.0", "description": "Typed client for Sapiom capabilities (sandboxes, repositories, agent, file storage, …) — the same tools your agents call over MCP, callable from your code, auth'd to your tenant.", "license": "MIT", "author": "Sapiom", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d3d9992e..bb3f4636f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -256,7 +256,7 @@ importers: specifier: workspace:^ version: link:../analytics-core '@sapiom/harness': - specifier: '>=0.12.0' + specifier: '>=0.13.0' version: link:../harness '@sapiom/sandbox-preview': specifier: workspace:^ @@ -1129,7 +1129,7 @@ packages: engines: {node: '>=12'} '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': - resolution: {gitHosted: true, integrity: sha512-MXgzlTDEEndJB3TBbvd5uFQO/8gaINo1Hfen8vef5rq/VHVPeB63uuv/uO5+8GFsAJ/rauu6XB79S6K4+aXc+w==, tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} + resolution: {gitHosted: true, tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} version: 10.2.0-electron.1 engines: {node: '>=12.13.0'} hasBin: true