diff --git a/.changeset/context-management-on-streaming.md b/.changeset/context-management-on-streaming.md deleted file mode 100644 index 3c249906..00000000 --- a/.changeset/context-management-on-streaming.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"apollo": patch ---- - -Global chat: pass the context trim config on the streamed planner call as well -as the non-streamed one. Global chat streams, so the config only ever reached a -path production does not take. Both calls now share one definition diff --git a/.changeset/global-chat-status-steps.md b/.changeset/global-chat-status-steps.md deleted file mode 100644 index 8f0be98e..00000000 --- a/.changeset/global-chat-status-steps.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"apollo": patch ---- - -Global chat: report which workflow steps a settled status acted on, as data -rather than as names inside the sentence, so a client can attach per-step -detail without parsing the prose. Each status also carries a shorter summary -for clients that render that detail, so step names are not printed twice. Both -fields are optional. Step names are no longer title-cased either, so a step the -user called "Transform data" is no longer reported as "Transform Data" diff --git a/.changeset/job-key-required.md b/.changeset/job-key-required.md deleted file mode 100644 index 609e0630..00000000 --- a/.changeset/job-key-required.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"apollo": patch ---- - -Global chat: say when a code change did not land. A job code call must now name -the step it edits — without a key there was nothing to stitch the result into, -so the subagent still ran, wrote code, and the planner dropped it, reaching the -user as a reply that talks about a change that was never made. `job_key` is -required, both execution paths refuse before spending the call, and a key that -matches nothing is answered with the workflow's actual step keys so the planner -can correct itself in the same turn. The router's direct route now reports -whether the edits landed, in the same shape the planner does -(`meta.subagent_calls[].diff`); that route is the shortcut for a single-step -edit, so it was the case where a client could least tell a reply that changed -something from one that changed nothing. The YAML helpers also no longer raise -on a workflow that is not a mapping of jobs diff --git a/.changeset/lucky-cameras-peel.md b/.changeset/lucky-cameras-peel.md deleted file mode 100644 index 59df8e44..00000000 --- a/.changeset/lucky-cameras-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"apollo": patch ---- - -job_chat: update prompts for better code writing practice diff --git a/.changeset/name-model-api-errors.md b/.changeset/name-model-api-errors.md deleted file mode 100644 index f47644d8..00000000 --- a/.changeset/name-model-api-errors.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"apollo": patch ---- - -Global chat: report a rejection from the model API for what it is, with a status that says whose failure it is and a message written for the person reading it, instead of relabelling it a tool execution error diff --git a/.changeset/planner-final-round.md b/.changeset/planner-final-round.md deleted file mode 100644 index 5d9d679d..00000000 --- a/.changeset/planner-final-round.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"apollo": patch ---- - -global_chat: raise the planner's tool-call budget to 20, and end a run that spends it with a summary instead of stopping mid-narration. The context trim threshold moves above the budget so the summary is not written against a history that has just been cleared diff --git a/.changeset/quiet-pans-relax.md b/.changeset/quiet-pans-relax.md deleted file mode 100644 index b5897d61..00000000 --- a/.changeset/quiet-pans-relax.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"apollo": minor ---- - -Improve planner prompt for coherence diff --git a/.changeset/redaction-robustness.md b/.changeset/redaction-robustness.md deleted file mode 100644 index f73333a7..00000000 --- a/.changeset/redaction-robustness.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"apollo": patch ---- - -Replace a job body wherever it sits in the workflow, not only at the top level, and stop three crashes on a shape the model did not expect diff --git a/.changeset/subagent-attachment-context.md b/.changeset/subagent-attachment-context.md deleted file mode 100644 index 4936edf0..00000000 --- a/.changeset/subagent-attachment-context.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"apollo": minor ---- - -global_chat: pass input attachments to subagents verbatim, keep them out of history, and reject oversized ones instead of trimming them. Attachment content may now arrive typed (a log's lines, a dataclip object) and is rendered by shape. Every ApolloError is tagged in Sentry by type, at warning level when the caller caused it diff --git a/.changeset/unicode-step-names.md b/.changeset/unicode-step-names.md deleted file mode 100644 index 9e3a6ea9..00000000 --- a/.changeset/unicode-step-names.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"apollo": minor ---- - -Let step names keep their diacritics and their script, behind APOLLO_UNICODE_STEP_NAMES diff --git a/CHANGELOG.md b/CHANGELOG.md index ee9754fb..c4cd677f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,63 @@ # apollo +## 3.2.0 + +### Minor Changes + +- b3c9b6d: Improve planner prompt for coherence +- b8405ac: global_chat: pass input attachments to subagents verbatim, keep them + out of history, and reject oversized ones instead of trimming them. Attachment + content may now arrive typed (a log's lines, a dataclip object) and is + rendered by shape. Every ApolloError is tagged in Sentry by type, at warning + level when the caller caused it +- e68ded0: Let step names keep their diacritics and their script, behind + APOLLO_UNICODE_STEP_NAMES + +### Patch Changes + +- 6912d22: workflow_chat: match an adaptor name against the available list + whether or not it carries a version, skip validation when the list comes back + empty rather than calling every adaptor invented, and report a name that is + genuinely off the list to Sentry +- 2f4248b: Global chat: pass the context trim config on the streamed planner + call as well as the non-streamed one. Global chat streams, so the config only + ever reached a path production does not take. Both calls now share one + definition +- 7534762: Global chat: report which workflow steps a settled status acted on, + as data rather than as names inside the sentence, so a client can attach + per-step detail without parsing the prose. Each status also carries a shorter + summary for clients that render that detail, so step names are not printed + twice. Both fields are optional. Step names are no longer title-cased either, + so a step the user called "Transform data" is no longer reported as "Transform + Data" +- eca6cac: Global chat: say when a code change did not land. A job code call + must now name the step it edits — without a key there was nothing to stitch + the result into, so the subagent still ran, wrote code, and the planner + dropped it, reaching the user as a reply that talks about a change that was + never made. `job_key` is required, both execution paths refuse before spending + the call, and a key that matches nothing is answered with the workflow's + actual step keys so the planner can correct itself in the same turn. The + router's direct route now reports whether the edits landed, in the same shape + the planner does (`meta.subagent_calls[].diff`); that route is the shortcut + for a single-step edit, so it was the case where a client could least tell a + reply that changed something from one that changed nothing. The YAML helpers + also no longer raise on a workflow that is not a mapping of jobs +- ef8b0a5: job_chat: update prompts for better code writing practice +- ebc979a: Global chat: report a rejection from the model API for what it is, + with a status that says whose failure it is and a message written for the + person reading it, instead of relabelling it a tool execution error +- d2b92ca: global_chat: raise the planner's tool-call budget to 20, and end a + run that spends it with a summary instead of stopping mid-narration. The + context trim threshold moves above the budget so the summary is not written + against a history that has just been cleared +- 616e5c1: Replace a job body wherever it sits in the workflow, not only at the + top level, and stop three crashes on a shape the model did not expect +- 6912d22: workflow_chat: teach the model about a webhook trigger's + `custom_path`, including that removing the key leaves a saved path in place + and only `custom_path: null` clears it. The prompt carries the rules the + server enforces and says not to invent a value, since uniqueness is per + project and Apollo never sees the project + ## 3.1.1 ### Patch Changes diff --git a/package.json b/package.json index 68c3a921..dc1f60a0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "apollo", "module": "platform/index.ts", - "version": "3.1.1", + "version": "3.2.0", "type": "module", "scripts": { "start": "NODE_ENV=production bun platform/src/index.ts",