@namzu/sdk 53.0.0 → 53.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/dist/compaction/index.d.ts +1 -1
  3. package/dist/compaction/index.d.ts.map +1 -1
  4. package/dist/compaction/index.js +1 -1
  5. package/dist/compaction/index.js.map +1 -1
  6. package/dist/compaction/manual.d.ts +5 -0
  7. package/dist/compaction/manual.d.ts.map +1 -1
  8. package/dist/compaction/manual.js +4 -4
  9. package/dist/compaction/manual.js.map +1 -1
  10. package/dist/compaction/summary.d.ts +12 -2
  11. package/dist/compaction/summary.d.ts.map +1 -1
  12. package/dist/compaction/summary.js +13 -3
  13. package/dist/compaction/summary.js.map +1 -1
  14. package/dist/compaction/tool-result-editing.d.ts.map +1 -1
  15. package/dist/compaction/tool-result-editing.js +9 -6
  16. package/dist/compaction/tool-result-editing.js.map +1 -1
  17. package/dist/manager/agent/lifecycle.d.ts +15 -0
  18. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  19. package/dist/manager/agent/lifecycle.js +169 -1
  20. package/dist/manager/agent/lifecycle.js.map +1 -1
  21. package/dist/public-runtime.d.ts +2 -1
  22. package/dist/public-runtime.d.ts.map +1 -1
  23. package/dist/public-runtime.js +2 -1
  24. package/dist/public-runtime.js.map +1 -1
  25. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  26. package/dist/runtime/query/checkpoint.js +3 -1
  27. package/dist/runtime/query/checkpoint.js.map +1 -1
  28. package/dist/runtime/query/executor.d.ts +2 -0
  29. package/dist/runtime/query/executor.d.ts.map +1 -1
  30. package/dist/runtime/query/executor.js +21 -1
  31. package/dist/runtime/query/executor.js.map +1 -1
  32. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  33. package/dist/runtime/query/iteration/phases/compaction.js +6 -2
  34. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  35. package/dist/runtime/query/tool-output-budget.d.ts +30 -2
  36. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  37. package/dist/runtime/query/tool-output-budget.js +43 -10
  38. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  39. package/dist/scheduler/local.d.ts +2 -1
  40. package/dist/scheduler/local.d.ts.map +1 -1
  41. package/dist/scheduler/local.js +8 -0
  42. package/dist/scheduler/local.js.map +1 -1
  43. package/dist/store/evidence/disk.d.ts +3 -2
  44. package/dist/store/evidence/disk.d.ts.map +1 -1
  45. package/dist/store/evidence/disk.js +23 -3
  46. package/dist/store/evidence/disk.js.map +1 -1
  47. package/dist/store/evidence/source-text.d.ts +20 -0
  48. package/dist/store/evidence/source-text.d.ts.map +1 -1
  49. package/dist/store/evidence/source-text.js +29 -2
  50. package/dist/store/evidence/source-text.js.map +1 -1
  51. package/dist/store/session-log/core.d.ts.map +1 -1
  52. package/dist/store/session-log/core.js +28 -0
  53. package/dist/store/session-log/core.js.map +1 -1
  54. package/dist/store/session-log/spilled-input.d.ts +34 -0
  55. package/dist/store/session-log/spilled-input.d.ts.map +1 -0
  56. package/dist/store/session-log/spilled-input.js +68 -0
  57. package/dist/store/session-log/spilled-input.js.map +1 -0
  58. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  59. package/dist/tools/builtins/read-file.js +7 -2
  60. package/dist/tools/builtins/read-file.js.map +1 -1
  61. package/dist/tools/retained-output.d.ts +12 -0
  62. package/dist/tools/retained-output.d.ts.map +1 -0
  63. package/dist/tools/retained-output.js +39 -0
  64. package/dist/tools/retained-output.js.map +1 -0
  65. package/dist/types/agent/manager.d.ts +48 -0
  66. package/dist/types/agent/manager.d.ts.map +1 -1
  67. package/dist/types/agent/scheduler.d.ts +20 -0
  68. package/dist/types/agent/scheduler.d.ts.map +1 -1
  69. package/dist/types/agent/task.d.ts +2 -0
  70. package/dist/types/agent/task.d.ts.map +1 -1
  71. package/dist/types/session/records.d.ts +25 -0
  72. package/dist/types/session/records.d.ts.map +1 -1
  73. package/dist/types/session/records.js +16 -0
  74. package/dist/types/session/records.js.map +1 -1
  75. package/dist/types/tool/index.d.ts +8 -0
  76. package/dist/types/tool/index.d.ts.map +1 -1
  77. package/dist/types/tool/index.js.map +1 -1
  78. package/package.json +1 -1
  79. package/src/compaction/index.ts +6 -1
  80. package/src/compaction/manual.ts +15 -3
  81. package/src/compaction/summary.ts +17 -3
  82. package/src/compaction/tool-result-editing.ts +12 -9
  83. package/src/manager/agent/lifecycle.ts +181 -1
  84. package/src/public-runtime.ts +2 -1
  85. package/src/runtime/query/checkpoint.ts +6 -1
  86. package/src/runtime/query/executor.ts +25 -1
  87. package/src/runtime/query/iteration/phases/compaction.ts +13 -2
  88. package/src/runtime/query/tool-output-budget.ts +65 -11
  89. package/src/scheduler/local.ts +14 -1
  90. package/src/store/evidence/disk.ts +28 -3
  91. package/src/store/evidence/source-text.ts +38 -2
  92. package/src/store/session-log/core.ts +28 -0
  93. package/src/store/session-log/spilled-input.ts +90 -0
  94. package/src/tools/builtins/read-file.ts +7 -2
  95. package/src/tools/retained-output.ts +38 -0
  96. package/src/types/agent/manager.ts +54 -0
  97. package/src/types/agent/scheduler.ts +21 -0
  98. package/src/types/agent/task.ts +2 -0
  99. package/src/types/session/records.ts +16 -0
  100. package/src/types/tool/index.ts +8 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 53.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 30654df: Adds `SessionEvidenceOffsetError`, thrown by a session text evidence source's `read` when the byte offset falls inside a multi-byte character (`code: 'inside_character'`) or beyond the text (`code: 'past_end'`), with `totalBytes` and the `scannedBytes` the failed read was charged. Both used to be plain `Error`s with the same messages, so a caller could not tell a bad position from an integrity or ownership refusal. The messages are unchanged and the class extends `Error`, so existing handlers keep working.
8
+ - 30654df: A tool output that was cut now says one thing about how to get the rest, wherever the model meets it. The saved-file line is followed by a sentence that names only the tools the turn has: `read` (open the file, `offset`/`limit`) and, when both are mounted, `search_conversation` then `read_conversation`. The cleared-result placeholder keeps that sentence instead of its own advice, and every compaction summary of a conversation with those tools ends with a pointer to them. The built-in `read` tool now opens a regular `.txt` file in the session's own retained-output directory without a prompt (no symbolic link, no second hard link, read-only), so the pointer is true; `ToolContext.retainedOutputDirectory` is new and optional, and `CompactNowInput.recoveryNote` and `COMPACTION_RECOVERY_NOTE` are new exports. The conversation guidance no longer tells the model not to use `read`. Nothing is removed; a host that mounts neither tool still gets the neutral wording.
9
+ - 5e9539a: A delegated child saved by an earlier process can now be continued. Pass `continuationProfile` (up to 16 short string entries, never a secret) to `createTask` when launching the child; it is written to the child's `meta.json`. In a later process, call the new optional `TaskScheduler.restoreChild({ childSessionId, workingDirectory, agentFor })`, which checks the saved log and meta under the invoking parent and re-creates the continuation that `createTask({ resumeSessionId })` needs, then continue the child with that call. It answers `{ status: 'refused', reason }` for a child with no profile, an isolated workspace, an unfinished turn, or one that was cancelled. Nothing changes for callers that do not use it; `ChildSessionMeta` gains an optional `continuation` field and `AgentManagerContract` an optional `restoreChildConversation`.
10
+
11
+ ### Patch Changes
12
+
13
+ - 30654df: An evidence address or cursor from a session log no longer stops working as soon as the log grows. The seal used to include the log file's size and times, so every tool call of a running conversation voided the address a search had just returned, and `read_conversation` after `search_conversation`, or a second page by `nextCursor`, answered "could not be read". The seal now binds the file's identity, and the read still checks the record's offset, length and digest. A log that was rewritten or replaced is still refused. Nothing to do on upgrade.
14
+ - 30654df: A conversation search address or cursor now stays valid when the next tool call reads it, even though that call is anchored at a later record. Previously every `read_conversation` after a `search_conversation` in a running turn was refused as changed. A seq past the end of the conversation is also answered at once on the live backend, naming the highest retained seq. Nothing to change in callers.
15
+
16
+ ## 53.1.0
17
+
18
+ ### Minor Changes
19
+
20
+ - f225fb7: A tool call whose input is too large for one session-log record no longer ends the turn. The large `input` of a `tool_review_requested`, `decision_requested`, `tool_executing` or `tool_input_completed` record is now written to `tool-results/` and the record holds `{ "$spilledInput": <spill reference>, "preview": … }` in its place; a resumed turn reads the parked request's inputs back whole. A reader that walks the log itself and wants the full input of such a record reads the referenced spill (`SessionLog.readSpill`). Nothing to do for hosts that use the runtime.
21
+
3
22
  ## 53.0.0
4
23
 
5
24
  ### Major Changes
@@ -14,7 +33,7 @@
14
33
 
15
34
  ### Patch Changes
16
35
 
17
- - 7608640: Display text only; nothing to change when you upgrade. If a script, test or screen-scrape reads the terminal's wording, these lines changed: composer tag rows no longer start with a `✦`/`✧` mark and are sentence case (`Hypermode · this reply: …`); `Press ctrl+x ctrl+k again to stop background agents` is a footer hint, not a transcript row, and the stop leaves `All background agents stopped`; an agent stopped by Esc or Ctrl+C now reads `was stopped by user` like one stopped from the rail; tool results hang from ` ⎿ ` (two spaces after the glyph) everywhere; `/workflows` rows read `finished` (not `completed`) with the duration first; `/compact` echoes `› /compact` and prints its result below the turns that stay. `@namzu/sdk` workflow scripts log `Step N stopped: <reason>` from `parallel()` (was `parallel item N failed: …`) and `Item N stopped at step M: <reason>` from `pipeline()` (was `pipeline item N stopped at stage M: …`); a script that matches on those log lines must change the match.
36
+ - 7608640: Display text only; nothing to change when you upgrade. If a script, test or screen-scrape reads the terminal's wording, these lines changed: composer tag rows no longer start with a `✦`/`✧` mark and are sentence case (`Hypermode · this reply: …`); `Press ctrl+x ctrl+k again to stop background agents` is a footer hint, not a transcript row, and the stop leaves `All background agents stopped`; an agent stopped by Esc or Ctrl+C now reads `was stopped by user` like one stopped from the rail; tool results hang from `⎿` (two spaces after the glyph) everywhere; `/workflows` rows read `finished` (not `completed`) with the duration first; `/compact` echoes `› /compact` and prints its result below the turns that stay. `@namzu/sdk` workflow scripts log `Step N stopped: <reason>` from `parallel()` (was `parallel item N failed: …`) and `Item N stopped at step M: <reason>` from `pipeline()` (was `pipeline item N stopped at stage M: …`); a script that matches on those log lines must change the match.
18
37
 
19
38
  ## 52.7.0
20
39
 
@@ -18,7 +18,7 @@ export { clearStaleToolResults, isClearedToolResult, DEFAULT_KEEP_RECENT_TOOL_RE
18
18
  export type { ToolResultEditConfig, ToolResultEditOutcome } from './tool-result-editing.js';
19
19
  export { compactNow, compactRegion } from './manual.js';
20
20
  export type { CompactionResult, CompactNowInput, CompactRegionInput } from './manual.js';
21
- export { COMPACTION_HEADER, buildCompactionMessage, isCompactionMessage } from './summary.js';
21
+ export { COMPACTION_HEADER, COMPACTION_RECOVERY_NOTE, buildCompactionMessage, isCompactionMessage, } from './summary.js';
22
22
  export { DEFAULT_SALIENCE_CONFIG, DEFAULT_SALIENCE_WEIGHTS, buildGoal, isStubbedNarration, messageText, planWorkingSet, scoreMessages, } from './salience/index.js';
23
23
  export type { GoalSources, ProtectedReason, SalienceConfig, SalienceWeights, ScoreOptions, ScoredMessage, WorkingSetAction, WorkingSetOptions, WorkingSetPlan, } from './salience/index.js';
24
24
  export { DEFAULT_SOFT_TARGET, planSalienceWorkingSet } from './plan.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,GACf,MAAM,YAAY,CAAA;AAEnB,YAAY,EACX,cAAc,EACd,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,eAAe,CAAA;AAEtB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,YAAY,EACX,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAI3F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAI7F,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,aAAa,GACb,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGvE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC1F,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,GACf,MAAM,YAAY,CAAA;AAEnB,YAAY,EACX,cAAc,EACd,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,eAAe,CAAA;AAEtB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,YAAY,EACX,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAI3F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,cAAc,CAAA;AAIrB,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,aAAa,GACb,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACX,WAAW,EACX,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACd,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGvE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC1F,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -12,7 +12,7 @@ export { clearStaleToolResults, isClearedToolResult, DEFAULT_KEEP_RECENT_TOOL_RE
12
12
  // Host-callable compaction: "compact this conversation" as an action a host
13
13
  // can offer, rather than something that only happens when a threshold trips.
14
14
  export { compactNow, compactRegion } from './manual.js';
15
- export { COMPACTION_HEADER, buildCompactionMessage, isCompactionMessage } from './summary.js';
15
+ export { COMPACTION_HEADER, COMPACTION_RECOVERY_NOTE, buildCompactionMessage, isCompactionMessage, } from './summary.js';
16
16
  // The salience-scored working set: every message scored, the least salient
17
17
  // evicted first. See `docs/sdk/salience-working-set.md`.
18
18
  export { DEFAULT_SALIENCE_CONFIG, DEFAULT_SALIENCE_WEIGHTS, buildGoal, isStubbedNarration, messageText, planWorkingSet, scoreMessages, } from './salience/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAQzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGpD,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AAGjC,4EAA4E;AAC5E,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAE7F,2EAA2E;AAC3E,yDAAyD;AACzD,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,aAAa,GACb,MAAM,qBAAqB,CAAA;AAY5B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAEvE,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAQzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGpD,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AAGjC,4EAA4E;AAC5E,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,cAAc,CAAA;AAErB,2EAA2E;AAC3E,yDAAyD;AACzD,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,aAAa,GACb,MAAM,qBAAqB,CAAA;AAY5B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAEvE,gFAAgF;AAChF,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA"}
@@ -44,6 +44,11 @@ export interface CompactNowInput extends CompactionVerificationOptions {
44
44
  * a no-op. The callback owns persistence and must not mutate the messages.
45
45
  */
46
46
  readonly onShed?: (messages: readonly Message[]) => void | Promise<void>;
47
+ /**
48
+ * A paragraph added to the end of the summary, for a host that can point the
49
+ * model at the originals ({@link COMPACTION_RECOVERY_NOTE}). Absent adds none.
50
+ */
51
+ readonly recoveryNote?: string;
47
52
  }
48
53
  /**
49
54
  * Compact a history now, whatever its size.
@@ -1 +1 @@
1
- {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,0BAA0B,CAAA;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAa7D,OAAO,EAAE,KAAK,6BAA6B,EAAwB,MAAM,eAAe,CAAA;AAExF;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,gBAAgB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,6BAA6B;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxE;AAkFD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA2DzF;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAC1D,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAsF/F"}
1
+ {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,0BAA0B,CAAA;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAa7D,OAAO,EAAE,KAAK,6BAA6B,EAAwB,MAAM,eAAe,CAAA;AAExF;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,gBAAgB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,6BAA6B;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxE;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC9B;AAmFD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAiEzF;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAC1D,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAsF/F"}
@@ -33,12 +33,12 @@ function preservedSystemFloor(systemMessages) {
33
33
  // and a prior manual summary is opaque state rather than redundant prose.
34
34
  return systemMessages.filter((m) => !isCompactionMessage(typeof m.content === 'string' ? m.content : null) || m.retain === true);
35
35
  }
36
- function splice(preservedSystem, summaryBody, retainedOlder, recentMessages) {
36
+ function splice(preservedSystem, summaryBody, retainedOlder, recentMessages, recoveryNote) {
37
37
  // A host-triggered pass has no turn-scoped WorkingStateManager to carry the
38
38
  // summary into a later query. Pin this summary itself: until a future turn
39
39
  // has rebuilt equivalent state, this message is the only surviving record
40
40
  // of what the pass removed.
41
- const summary = { ...buildCompactionMessage(summaryBody), retain: true };
41
+ const summary = { ...buildCompactionMessage(summaryBody, recoveryNote), retain: true };
42
42
  return { messages: [...preservedSystem, summary, ...retainedOlder, ...recentMessages], summary };
43
43
  }
44
44
  /** Build the state a host-triggered pass is about to replace. */
@@ -111,7 +111,7 @@ export async function compactNow(input) {
111
111
  streamIdleTimeoutMs: input.streamIdleTimeoutMs,
112
112
  instructions: input.instructions,
113
113
  });
114
- const { messages, summary } = splice(preservedSystem, body, retainedOlder, plan.recentMessages);
114
+ const { messages, summary } = splice(preservedSystem, body, retainedOlder, plan.recentMessages, input.recoveryNote);
115
115
  return publishManualCompaction(input, {
116
116
  messages,
117
117
  shed: input.messages.length - messages.length,
@@ -181,7 +181,7 @@ export async function compactRegion(input) {
181
181
  });
182
182
  // Same cross-run ownership as compactNow: a selected region has been
183
183
  // replaced outside a turn, so its only surviving account is pinned.
184
- const summary = { ...buildCompactionMessage(body), retain: true };
184
+ const summary = { ...buildCompactionMessage(body, input.recoveryNote), retain: true };
185
185
  const out = [...messages.slice(0, start), summary, ...retainedSelected, ...messages.slice(end)];
186
186
  // Checked after the splice, not only before it. The edges being
187
187
  // individually safe does not make the RESULT valid — a span whose
@@ -1 +1 @@
1
- {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,EAAmB,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EACN,2BAA2B,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAC1E,OAAO,EAAsC,oBAAoB,EAAE,MAAM,eAAe,CAAA;AA+CxF,KAAK,UAAU,uBAAuB,CACrC,KAAsB,EACtB,MAAwB;IAExB,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAA;IACrD,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAC9B,OAAO,MAAM,CAAA;AACd,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAoC;IAClE,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAC9B,wEAAwE;IACxE,4EAA4E;IAC5E,0BAA0B,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;AACtD,CAAC;AAED,0EAA0E;AAC1E,SAAS,oBAAoB,CAAC,cAAkC;IAC/D,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,OAAO,cAAc,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAC5F,CAAA;AACF,CAAC;AAED,SAAS,MAAM,CACd,eAAmC,EACnC,WAAmB,EACnB,aAAiC,EACjC,cAAkC;IAElC,4EAA4E;IAC5E,2EAA2E;IAC3E,0EAA0E;IAC1E,4BAA4B;IAC5B,MAAM,OAAO,GAAG,EAAE,GAAG,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACxE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,eAAe,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,CAAA;AACjG,CAAC;AAED,iEAAiE;AACjE,SAAS,oBAAoB,CAC5B,OAA4B,EAC5B,QAA4B,EAC5B,MAAwB;IAExB,IAAI,SAAS,GAAG,IAAI,CAAA;IACpB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAE3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,MAAM;gBACV,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;gBAC3D,SAAS,GAAG,KAAK,CAAA;gBACjB,MAAK;YACN,KAAK,WAAW;gBACf,IAAI,OAAO,CAAC,OAAO;oBAAE,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAClF,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;oBAC5C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;oBAC1C,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;gBAC1E,CAAC;gBACD,MAAK;YACN,KAAK,MAAM;gBACV,qBAAqB,CACpB,OAAO,EACP,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,MAAM,EAC3C,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EACjC,OAAO,CAAC,OAAO,KAAK,IAAI,CACxB,CAAA;gBACD,MAAK;YACN,KAAK,QAAQ;gBACZ,MAAK;QACP,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACtD,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,MAAM,GAAG,oBAAoB,CAClC,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAC7D,KAAK,CAAC,KAAK,CACX,CAAA;IAED,0EAA0E;IAC1E,sEAAsE;IACtE,sCAAsC;IACtC,MAAM,IAAI,GAAG,cAAc,CAAC;QAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,mBAAmB,EAAE,MAAM,CAAC,MAAM;QAClC,eAAe,EAAE,MAAM,CAAC,MAAM;QAC9B,KAAK,EAAE,IAAI;QACX,kBAAkB,EAAE,IAAI;QACxB,mBAAmB,EAAE,IAAI;KACzB,CAAC,CAAA;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IAErC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC7D,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,CACjD,CAAA;IACD,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACjE,MAAM,eAAe,GACpB,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAA;IAC/E,0EAA0E;IAC1E,sEAAsE;IACtE,6EAA6E;IAC7E,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE5D,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrD,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC/D,IAAI,KAAK,GAAe,EAAE,GAAG,iBAAiB,EAAE,CAAA;IAChD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CACtC,OAAO,EACP,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,EACvB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,EACZ,CAAC,QAAQ,EAAE,EAAE;QACZ,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC9C,CAAC,EACD,KAAK,CAAC,KAAK,IAAI,EAAE,EACjB;QACC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,YAAY,EAAE,KAAK,CAAC,YAAY;KAChC,CACD,CAAA;IAED,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;IAC/F,OAAO,uBAAuB,CAAC,KAAK,EAAE;QACrC,QAAQ;QACR,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;QAC7C,OAAO;QACP,KAAK;KACL,CAAC,CAAA;AACH,CAAC;AASD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAyB;IAC5D,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;IAEtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9F,MAAM,IAAI,UAAU,CAAC;YACpB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,mBAAmB,KAAK,KAAK,GAAG,wCAAwC,QAAQ,CAAC,MAAM,YAAY;YAC5G,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;YAChD,SAAS,EAAE,KAAK;SAChB,CAAC,CAAA;IACH,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEhC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;QAC5B,CAAC,OAAO,EAAE,KAAK,CAAC;QAChB,CAAC,KAAK,EAAE,GAAG,CAAC;KACH,EAAE,CAAC;QACZ,sEAAsE;QACtE,uEAAuE;QACvE,oEAAoE;QACpE,qEAAqE;QACrE,qCAAqC;QACrC,IAAI,iBAAiB,CAAC,QAAqB,EAAE,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAC/D,MAAM,IAAI,UAAU,CAAC;gBACpB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,kBAAkB,KAAK,UAAU,KAAK,2EAA2E;gBAC1H,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;gBACvC,SAAS,EAAE,KAAK;aAChB,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,QAAQ;SAC/B,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAA;IACrD,wEAAwE;IACxE,yEAAyE;IACzE,+CAA+C;IAC/C,IAAI,GAAG,GAAG,KAAK,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE9D,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrD,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACvE,IAAI,KAAK,GAAe,EAAE,GAAG,iBAAiB,EAAE,CAAA;IAChD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CACtC,OAAO,EACP,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAC1B,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,EACZ,CAAC,QAAQ,EAAE,EAAE;QACZ,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC9C,CAAC,EACD,KAAK,CAAC,KAAK,IAAI,EAAE,EACjB;QACC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,YAAY,EAAE,KAAK,CAAC,YAAY;KAChC,CACD,CAAA;IAED,qEAAqE;IACrE,oEAAoE;IACpE,MAAM,OAAO,GAAG,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACjE,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAE/F,gEAAgE;IAChE,kEAAkE;IAClE,sEAAsE;IACtE,qCAAqC;IACrC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,UAAU,CAAC;YACpB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,+BAA+B,KAAK,KAAK,GAAG,qFAAqF;YAC1I,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YACvB,SAAS,EAAE,KAAK;SAChB,CAAC,CAAA;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC,KAAK,EAAE;QACrC,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;QAClC,OAAO;QACP,KAAK;KACL,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,16 @@ export declare const COMPACTION_HEADER = "[COMPACTED CONTEXT] The following is a
18
18
  * of an opaque older span.
19
19
  */
20
20
  export declare function isCompactionMessage(content: string | null | undefined): boolean;
21
- /** The summary, as the system message that replaces what it summarises. */
22
- export declare function buildCompactionMessage(body: string): Message;
21
+ /**
22
+ * The line that tells the model where exact earlier text can still be had. A
23
+ * host that mounts `search_conversation` and `read_conversation` adds it to
24
+ * every summary; a host without them adds nothing, because a pointer to a tool
25
+ * that is not there is worse than none.
26
+ */
27
+ export declare const COMPACTION_RECOVERY_NOTE = "Earlier output was cut from this summary. To get exact earlier text, call search_conversation, then read_conversation.";
28
+ /**
29
+ * The summary, as the system message that replaces what it summarises.
30
+ * `recoveryNote` is appended as its own paragraph.
31
+ */
32
+ export declare function buildCompactionMessage(body: string, recoveryNote?: string): Message;
23
33
  //# sourceMappingURL=summary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/compaction/summary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,0FAC0D,CAAA;AAExF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE/E;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAK5D"}
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/compaction/summary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,0FAC0D,CAAA;AAExF;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE/E;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,2HACoF,CAAA;AAEzH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAOnF"}
@@ -20,10 +20,20 @@ export const COMPACTION_HEADER = '[COMPACTED CONTEXT] The following is a structu
20
20
  export function isCompactionMessage(content) {
21
21
  return typeof content === 'string' && content.startsWith(COMPACTION_HEADER);
22
22
  }
23
- /** The summary, as the system message that replaces what it summarises. */
24
- export function buildCompactionMessage(body) {
23
+ /**
24
+ * The line that tells the model where exact earlier text can still be had. A
25
+ * host that mounts `search_conversation` and `read_conversation` adds it to
26
+ * every summary; a host without them adds nothing, because a pointer to a tool
27
+ * that is not there is worse than none.
28
+ */
29
+ export const COMPACTION_RECOVERY_NOTE = 'Earlier output was cut from this summary. To get exact earlier text, call search_conversation, then read_conversation.';
30
+ /**
31
+ * The summary, as the system message that replaces what it summarises.
32
+ * `recoveryNote` is appended as its own paragraph.
33
+ */
34
+ export function buildCompactionMessage(body, recoveryNote) {
25
35
  return {
26
- ...createSystemMessage(`${COMPACTION_HEADER}\n\n${body}`),
36
+ ...createSystemMessage(`${COMPACTION_HEADER}\n\n${body}${recoveryNote ? `\n\n${recoveryNote}` : ''}`),
27
37
  source: { type: 'compaction-summary' },
28
38
  };
29
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/compaction/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAG/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC7B,uFAAuF,CAAA;AAExF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAkC;IACrE,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAC5E,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,sBAAsB,CAAC,IAAY;IAClD,OAAO;QACN,GAAG,mBAAmB,CAAC,GAAG,iBAAiB,OAAO,IAAI,EAAE,CAAC;QACzD,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;KACtC,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/compaction/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAG/D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAC7B,uFAAuF,CAAA;AAExF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAkC;IACrE,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACpC,wHAAwH,CAAA;AAEzH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,YAAqB;IACzE,OAAO;QACN,GAAG,mBAAmB,CACrB,GAAG,iBAAiB,OAAO,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7E;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE;KACtC,CAAA;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-result-editing.d.ts","sourceRoot":"","sources":["../../src/compaction/tool-result-editing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAmB,MAAM,2BAA2B,CAAA;AAItF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IACvC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,oDAAoD;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1C;AAED,eAAO,MAAM,gCAAgC,IAAI,CAAA;AACjD,eAAO,MAAM,0BAA0B,OAAQ,CAAA;AA2E/C,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,GACd;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAIpE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,GAAE,oBAAyB,GAC/B,qBAAqB,CA8DvB"}
1
+ {"version":3,"file":"tool-result-editing.d.ts","sourceRoot":"","sources":["../../src/compaction/tool-result-editing.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAmB,MAAM,2BAA2B,CAAA;AAItF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IACvC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,oDAAoD;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1C;AAED,eAAO,MAAM,gCAAgC,IAAI,CAAA;AACjD,eAAO,MAAM,0BAA0B,OAAQ,CAAA;AA2E/C,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,GACd;IAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAIpE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE7D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,GAAE,oBAAyB,GAC/B,qBAAqB,CA8DvB"}
@@ -1,5 +1,5 @@
1
1
  import { CHARS_PER_TOKEN } from '../constants/limits.js';
2
- import { SPILL_MARKER } from '../runtime/query/tool-output-budget.js';
2
+ import { describeRetainedOutputRecovery, retainedOutputPointer, } from '../runtime/query/tool-output-budget.js';
3
3
  import { toolResultToText } from '../types/message/content.js';
4
4
  import { findRetainedIndices } from './retention.js';
5
5
  import { estimateMessageTokens } from './token-estimate.js';
@@ -27,8 +27,8 @@ const KEEP_TAIL_CHARS = 200;
27
27
  * back to it. Replacing the whole content destroyed the cheapest recovery
28
28
  * route precisely for the largest results — and then told the model to
29
29
  * call the tool again, which is advice to re-run something that returned
30
- * megabytes. Keeping one line preserves a `read`/`grep` route worth far
31
- * more than the line costs.
30
+ * megabytes. Keeping the line and its recovery sentence preserves a route
31
+ * worth far more than the two lines cost.
32
32
  *
33
33
  * A HEAD AND TAIL, because a result is not uniformly valuable: what a
34
34
  * model needs from a long output is usually near one end, and keeping a
@@ -40,9 +40,12 @@ function clearedPlaceholder(content, toolName, size) {
40
40
  const parts = [
41
41
  `${CLEARED_PREFIX} ${toolName} returned ${size.toLocaleString('en-US')} characters, cleared to reclaim context.`,
42
42
  ];
43
- const spillLine = text.split('\n').find((line) => line.startsWith(SPILL_MARKER));
44
- if (spillLine) {
45
- parts.push(spillLine, 'Read a window of it with `read` (offset/limit) or search it with `grep`.');
43
+ // The pointer is the spill line with the sentence that came with it, so the
44
+ // route is stated once, where the output was cut, and never contradicted here.
45
+ const pointer = retainedOutputPointer(text);
46
+ if (pointer) {
47
+ // A pointer written before the sentence existed gets the neutral one.
48
+ parts.push(pointer.includes('\n') ? pointer : `${pointer}\n${describeRetainedOutputRecovery()}`);
46
49
  }
47
50
  else {
48
51
  parts.push('Full result unavailable here. Recover from a saved artifact or a read-only observation; do not repeat a state-changing action to recover its output.');
@@ -1 +1 @@
1
- {"version":3,"file":"tool-result-editing.js","sourceRoot":"","sources":["../../src/compaction/tool-result-editing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-result-editing.js","sourceRoot":"","sources":["../../src/compaction/tool-result-editing.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,14 @@ import type { SessionPaths } from '../../session/paths.js';
4
4
  import type { SessionSummaryMaterializer } from '../../session/summary/materialize.js';
5
5
  import type { WorkspaceBackendRegistry } from '../../session/workspace/registry.js';
6
6
  import type { AgentLifecycleListener } from '../../types/agent/lifecycle-event.js';
7
+ import type { RestoreChildOptions, RestoreChildResult } from '../../types/agent/manager.js';
7
8
  import type { AgentManagerConfig, AgentTask, AgentTaskContext, AgentTaskState, SendMessageOptions } from '../../types/agent/task.js';
8
9
  import type { SessionId, TaskId, TenantId, TurnId } from '../../types/ids/index.js';
9
10
  import type { Message } from '../../types/message/index.js';
10
11
  import { type CancelCause } from '../../types/session/cancel-cause.js';
11
12
  import type { SessionEventListener } from '../../types/session/events.js';
12
13
  import type { SubSessionId } from '../../types/session/ids.js';
14
+ import type { ChildSessionMeta } from '../../types/session/records.js';
13
15
  import type { SessionStore } from '../../types/session/store.js';
14
16
  import type { WorkspaceRef } from '../../types/workspace/ref.js';
15
17
  import { type Logger } from '../../utils/logger.js';
@@ -98,6 +100,7 @@ interface ChildSpawnRecord {
98
100
  readonly toolCallId: string;
99
101
  readonly agentType: string;
100
102
  readonly description: string;
103
+ readonly continuation?: NonNullable<ChildSessionMeta['continuation']>;
101
104
  };
102
105
  /** Removes the child's log from the process-local lookup. */
103
106
  releaseLog?: () => void;
@@ -215,6 +218,18 @@ export declare class AgentManager {
215
218
  private validateSpawn;
216
219
  private provisionSpawnUnlocked;
217
220
  private retainChildConversation;
221
+ /**
222
+ * Make a child saved by an earlier process continuable again.
223
+ *
224
+ * Reads the child's meta document and log from the project layout under the
225
+ * invoking parent, checks they describe a settled, shared-workspace child of
226
+ * this very parent session, then re-creates the in-memory session and edge
227
+ * and the retained conversation that {@link provisionContinuation} requires.
228
+ * It runs nothing; the caller continues the child with `sendMessage` and
229
+ * `resumeSessionId`, so the invoking turn's authority, limits and review
230
+ * channel apply exactly as for a child that finished in this process.
231
+ */
232
+ restoreChildConversation(options: RestoreChildOptions, context: AgentTaskContext): Promise<RestoreChildResult>;
218
233
  private releaseChildConversation;
219
234
  /** Called under the same parent provisioning lock as ordinary admission. */
220
235
  private provisionContinuation;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/manager/agent/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/manager/agent/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ import { SCOPE_ATTRIBUTE } from '../../utils/log/types.js';
16
16
  import { resolveLogger } from '../../utils/logger.js';
17
17
  import { requireOpenProject } from '../project/lifecycle.js';
18
18
  import { resolveTopicManager } from '../topic/dependency.js';
19
- import { registerChildSessionLog, writeChildSessionMeta } from './child-session.js';
19
+ import { childSessionEnded, readChildSessionMeta, registerChildSessionLog, writeChildSessionMeta, } from './child-session.js';
20
20
  /** Internal backpressure: the parent's unmeasured request owns its budget until its receipt. */
21
21
  class ParentBudgetRequestPending extends Error {
22
22
  }
@@ -969,6 +969,7 @@ export class AgentManager {
969
969
  description: placement.description,
970
970
  status: 'running',
971
971
  createdAt: placement.createdAt,
972
+ ...(placement.continuation ? { continuation: placement.continuation } : {}),
972
973
  };
973
974
  }
974
975
  /**
@@ -1024,6 +1025,14 @@ export class AgentManager {
1024
1025
  toolCallId: spawnToolCallId(taskId),
1025
1026
  agentType: options.agentId,
1026
1027
  description: describeSpawn(options),
1028
+ ...(options.continuationProfile
1029
+ ? {
1030
+ continuation: {
1031
+ workspace: options.workspace?.mode === 'isolated' ? 'isolated' : 'shared',
1032
+ profile: { ...options.continuationProfile },
1033
+ },
1034
+ }
1035
+ : {}),
1027
1036
  };
1028
1037
  await writeChildSessionMeta(spawnRecord.placement.metaPath, this.childMeta(spawnRecord));
1029
1038
  return DiskSessionLog.at(paths, {
@@ -1448,6 +1457,165 @@ export class AgentManager {
1448
1457
  activeSubSessionId: origin.subSessionId,
1449
1458
  });
1450
1459
  }
1460
+ /**
1461
+ * Make a child saved by an earlier process continuable again.
1462
+ *
1463
+ * Reads the child's meta document and log from the project layout under the
1464
+ * invoking parent, checks they describe a settled, shared-workspace child of
1465
+ * this very parent session, then re-creates the in-memory session and edge
1466
+ * and the retained conversation that {@link provisionContinuation} requires.
1467
+ * It runs nothing; the caller continues the child with `sendMessage` and
1468
+ * `resumeSessionId`, so the invoking turn's authority, limits and review
1469
+ * channel apply exactly as for a child that finished in this process.
1470
+ */
1471
+ async restoreChildConversation(options, context) {
1472
+ const refuse = (reason) => ({
1473
+ status: 'refused',
1474
+ reason,
1475
+ });
1476
+ const id = options.childSessionId;
1477
+ const retained = this.childConversations.get(id);
1478
+ if (retained?.activeSubSessionId)
1479
+ return refuse('running');
1480
+ const paths = context.childStorage?.kind === 'disk' ? context.childStorage.paths : this.deps.paths;
1481
+ if (!paths)
1482
+ return refuse('no-layout');
1483
+ const store = this.deps.sessionStore;
1484
+ if (store.supportsInvocationSummaries !== true || store.supportsOwnerVersionCas !== true)
1485
+ return refuse('not-resumable');
1486
+ const ancestry = await store.getAncestry(context.sessionId, context.tenantId);
1487
+ const parentLocator = {
1488
+ sessionId: context.sessionId,
1489
+ ancestors: ancestry.slice(0, -1),
1490
+ };
1491
+ let meta;
1492
+ try {
1493
+ meta = await readChildSessionMeta(paths.subagentMeta(parentLocator, id));
1494
+ }
1495
+ catch {
1496
+ return refuse('not-saved');
1497
+ }
1498
+ if (!meta)
1499
+ return refuse('not-saved');
1500
+ if (meta.sessionId !== id || meta.parentSessionId !== context.sessionId)
1501
+ return refuse('foreign');
1502
+ const continuation = meta.continuation;
1503
+ if (!continuation || continuation.workspace !== 'shared')
1504
+ return refuse('not-resumable');
1505
+ const agentId = options.agentFor(continuation.profile);
1506
+ if (agentId === undefined || !this.registry.has(agentId))
1507
+ return refuse('not-resumable');
1508
+ const log = retained?.log ?? DiskSessionLog.at(paths, { sessionId: id, ancestors: ancestry });
1509
+ // The child's own log wins over its meta document: a child that never
1510
+ // recorded the end of a turn died mid-turn, and what it did is unknown.
1511
+ const ended = await childSessionEnded(log);
1512
+ if (!ended)
1513
+ return refuse('unsettled');
1514
+ if (ended.status === 'cancelled' || meta.status === 'cancelled')
1515
+ return refuse('stopped');
1516
+ // A log written under another project or topic cannot be continued here:
1517
+ // the child's turn would refuse to open it.
1518
+ const started = await log.head();
1519
+ if (started === null)
1520
+ return refuse('unsettled');
1521
+ for await (const { record } of log.read({ mode: 'tolerant' })) {
1522
+ if (record.type !== 'session_started')
1523
+ continue;
1524
+ if (record.projectId !== context.projectId || record.topicId !== context.topicId)
1525
+ return refuse('foreign');
1526
+ break;
1527
+ }
1528
+ const placement = {
1529
+ paths,
1530
+ metaPath: paths.subagentMeta(parentLocator, id),
1531
+ createdAt: meta.createdAt,
1532
+ toolCallId: meta.toolCallId,
1533
+ agentType: meta.agentType,
1534
+ description: meta.description,
1535
+ continuation,
1536
+ };
1537
+ const restored = {
1538
+ status: 'restored',
1539
+ childSessionId: id,
1540
+ agentId,
1541
+ profile: continuation.profile,
1542
+ description: meta.description,
1543
+ };
1544
+ if (retained)
1545
+ return restored;
1546
+ if (this.childConversations.size >= RETAINED_CHILD_CONVERSATION_CAP) {
1547
+ const oldest = [...this.childConversations].find(([, value]) => !value.activeSubSessionId);
1548
+ if (!oldest)
1549
+ return refuse('full');
1550
+ this.childConversations.delete(oldest[0]);
1551
+ }
1552
+ const childActor = {
1553
+ kind: 'agent',
1554
+ agentId,
1555
+ tenantId: context.tenantId,
1556
+ parentActor: context.parentActor,
1557
+ };
1558
+ let child = await store.getSession(id, context.tenantId);
1559
+ let createdChild = false;
1560
+ let edge;
1561
+ let createdEdge = false;
1562
+ try {
1563
+ if (child) {
1564
+ // A store that outlived the process still holds the child and its edge.
1565
+ if (child.status === 'active' ||
1566
+ child.status === 'archived' ||
1567
+ child.status === 'locked' ||
1568
+ child.projectId !== context.projectId ||
1569
+ child.topicId !== context.topicId ||
1570
+ child.currentActor?.kind !== 'agent' ||
1571
+ child.currentActor.agentId !== agentId)
1572
+ return refuse('running');
1573
+ }
1574
+ else {
1575
+ child = await store.createSession({ id, topicId: context.topicId, projectId: context.projectId, currentActor: childActor }, context.tenantId);
1576
+ createdChild = true;
1577
+ }
1578
+ edge = (await store.getChildren(context.sessionId, context.tenantId)).find((candidate) => candidate.childSessionId === id);
1579
+ if (!edge) {
1580
+ edge = await store.createSubSession({
1581
+ parentSessionId: context.sessionId,
1582
+ childSessionId: id,
1583
+ kind: 'agent_spawn',
1584
+ spawnedBy: context.parentActor,
1585
+ failureMode: 'delegate',
1586
+ completionMode: 'summary_ref',
1587
+ }, context.tenantId);
1588
+ createdEdge = true;
1589
+ }
1590
+ }
1591
+ catch (error) {
1592
+ if (edge && createdEdge)
1593
+ await store.deleteSubSession(edge.id, context.tenantId).catch(() => undefined);
1594
+ if (child && createdChild)
1595
+ await store.deleteSession(id, context.tenantId).catch(() => undefined);
1596
+ throw error;
1597
+ }
1598
+ this.childConversations.set(id, {
1599
+ definition: this.registry.getOrThrow(agentId),
1600
+ origin: {
1601
+ subSessionId: edge.id,
1602
+ childSessionId: id,
1603
+ tenantId: context.tenantId,
1604
+ parentSessionId: context.sessionId,
1605
+ parentTurnId: meta.parentTurnId,
1606
+ rootSessionId: meta.rootSessionId,
1607
+ ancestry,
1608
+ childDepth: meta.depth,
1609
+ childOwnerVersion: child.ownerVersion,
1610
+ placement,
1611
+ },
1612
+ topicId: context.topicId,
1613
+ projectId: context.projectId,
1614
+ cwd: resolve(options.workingDirectory),
1615
+ log,
1616
+ });
1617
+ return restored;
1618
+ }
1451
1619
  releaseChildConversation(record) {
1452
1620
  const conversation = this.childConversations.get(record.childSessionId);
1453
1621
  if (conversation?.activeSubSessionId !== record.subSessionId)