@xrkseek/harness 0.5.6 → 0.5.8

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 (188) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/node_modules/@xrkseek/code-runtime/dist/index.js +40 -40
  6. package/node_modules/@xrkseek/context-fragments/README.md +34 -34
  7. package/node_modules/@xrkseek/core-agent/dist/index.d.ts.map +1 -1
  8. package/node_modules/@xrkseek/core-agent/dist/index.js +6 -3
  9. package/node_modules/@xrkseek/core-agent/dist/index.js.map +1 -1
  10. package/node_modules/@xrkseek/core-agent-loop/dist/cancel-finalize.d.ts +16 -0
  11. package/node_modules/@xrkseek/core-agent-loop/dist/cancel-finalize.d.ts.map +1 -1
  12. package/node_modules/@xrkseek/core-agent-loop/dist/cancel-finalize.js +80 -3
  13. package/node_modules/@xrkseek/core-agent-loop/dist/cancel-finalize.js.map +1 -1
  14. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +3 -2
  15. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  16. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +24 -11
  17. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  18. package/node_modules/@xrkseek/core-agent-loop/dist/llm-retry.d.ts.map +1 -1
  19. package/node_modules/@xrkseek/core-agent-loop/dist/llm-retry.js +6 -1
  20. package/node_modules/@xrkseek/core-agent-loop/dist/llm-retry.js.map +1 -1
  21. package/node_modules/@xrkseek/core-session/dist/compaction.d.ts +12 -3
  22. package/node_modules/@xrkseek/core-session/dist/compaction.d.ts.map +1 -1
  23. package/node_modules/@xrkseek/core-session/dist/compaction.js +85 -33
  24. package/node_modules/@xrkseek/core-session/dist/compaction.js.map +1 -1
  25. package/node_modules/@xrkseek/core-session/dist/image-offload.d.ts +20 -7
  26. package/node_modules/@xrkseek/core-session/dist/image-offload.d.ts.map +1 -1
  27. package/node_modules/@xrkseek/core-session/dist/image-offload.js +41 -12
  28. package/node_modules/@xrkseek/core-session/dist/image-offload.js.map +1 -1
  29. package/node_modules/@xrkseek/core-session/dist/index.d.ts +2 -2
  30. package/node_modules/@xrkseek/core-session/dist/index.d.ts.map +1 -1
  31. package/node_modules/@xrkseek/core-session/dist/index.js +7 -7
  32. package/node_modules/@xrkseek/core-session/dist/index.js.map +1 -1
  33. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +30 -30
  34. package/node_modules/@xrkseek/core-tools/dist/settings-tools.d.ts.map +1 -1
  35. package/node_modules/@xrkseek/core-tools/dist/settings-tools.js +6 -11
  36. package/node_modules/@xrkseek/core-tools/dist/settings-tools.js.map +1 -1
  37. package/node_modules/@xrkseek/core-tools/dist/std-tools.d.ts.map +1 -1
  38. package/node_modules/@xrkseek/core-tools/dist/std-tools.js +5 -8
  39. package/node_modules/@xrkseek/core-tools/dist/std-tools.js.map +1 -1
  40. package/node_modules/@xrkseek/exec-computer-use/dist/tools.d.ts.map +1 -1
  41. package/node_modules/@xrkseek/exec-computer-use/dist/tools.js +1 -2
  42. package/node_modules/@xrkseek/exec-computer-use/dist/tools.js.map +1 -1
  43. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  44. package/node_modules/@xrkseek/exec-fs/dist/index.js +10 -19
  45. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  46. package/node_modules/@xrkseek/exec-fs/dist/present-deliverable.d.ts.map +1 -1
  47. package/node_modules/@xrkseek/exec-fs/dist/present-deliverable.js +3 -5
  48. package/node_modules/@xrkseek/exec-fs/dist/present-deliverable.js.map +1 -1
  49. package/node_modules/@xrkseek/exec-fs/dist/read-image.d.ts.map +1 -1
  50. package/node_modules/@xrkseek/exec-fs/dist/read-image.js +4 -2
  51. package/node_modules/@xrkseek/exec-fs/dist/read-image.js.map +1 -1
  52. package/node_modules/@xrkseek/exec-fs/dist/search.d.ts +3 -1
  53. package/node_modules/@xrkseek/exec-fs/dist/search.d.ts.map +1 -1
  54. package/node_modules/@xrkseek/exec-fs/dist/search.js +13 -7
  55. package/node_modules/@xrkseek/exec-fs/dist/search.js.map +1 -1
  56. package/node_modules/@xrkseek/exec-image-gen/dist/format.d.ts.map +1 -1
  57. package/node_modules/@xrkseek/exec-image-gen/dist/format.js +1 -0
  58. package/node_modules/@xrkseek/exec-image-gen/dist/format.js.map +1 -1
  59. package/node_modules/@xrkseek/exec-image-gen/dist/schema.d.ts.map +1 -1
  60. package/node_modules/@xrkseek/exec-image-gen/dist/schema.js +3 -5
  61. package/node_modules/@xrkseek/exec-image-gen/dist/schema.js.map +1 -1
  62. package/node_modules/@xrkseek/exec-lsp/dist/tools.js +1 -1
  63. package/node_modules/@xrkseek/exec-lsp/dist/tools.js.map +1 -1
  64. package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
  65. package/node_modules/@xrkseek/exec-memory/dist/tools.js +5 -12
  66. package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
  67. package/node_modules/@xrkseek/exec-shell/dist/bytes.d.ts +34 -1
  68. package/node_modules/@xrkseek/exec-shell/dist/bytes.d.ts.map +1 -1
  69. package/node_modules/@xrkseek/exec-shell/dist/bytes.js +69 -2
  70. package/node_modules/@xrkseek/exec-shell/dist/bytes.js.map +1 -1
  71. package/node_modules/@xrkseek/exec-shell/dist/index.d.ts.map +1 -1
  72. package/node_modules/@xrkseek/exec-shell/dist/index.js +40 -11
  73. package/node_modules/@xrkseek/exec-shell/dist/index.js.map +1 -1
  74. package/node_modules/@xrkseek/exec-shell/dist/job-view.d.ts.map +1 -1
  75. package/node_modules/@xrkseek/exec-shell/dist/job-view.js +27 -2
  76. package/node_modules/@xrkseek/exec-shell/dist/job-view.js.map +1 -1
  77. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts +9 -0
  78. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts.map +1 -1
  79. package/node_modules/@xrkseek/exec-subprocess/dist/index.js +43 -0
  80. package/node_modules/@xrkseek/exec-subprocess/dist/index.js.map +1 -1
  81. package/node_modules/@xrkseek/exec-video-analyze/dist/tools.d.ts.map +1 -1
  82. package/node_modules/@xrkseek/exec-video-analyze/dist/tools.js +3 -4
  83. package/node_modules/@xrkseek/exec-video-analyze/dist/tools.js.map +1 -1
  84. package/node_modules/@xrkseek/exec-video-gen/dist/schema.d.ts.map +1 -1
  85. package/node_modules/@xrkseek/exec-video-gen/dist/schema.js +3 -6
  86. package/node_modules/@xrkseek/exec-video-gen/dist/schema.js.map +1 -1
  87. package/node_modules/@xrkseek/exec-web/dist/browser-tools.d.ts.map +1 -1
  88. package/node_modules/@xrkseek/exec-web/dist/browser-tools.js +5 -7
  89. package/node_modules/@xrkseek/exec-web/dist/browser-tools.js.map +1 -1
  90. package/node_modules/@xrkseek/exec-web/dist/tools.js +2 -2
  91. package/node_modules/@xrkseek/exec-web/dist/tools.js.map +1 -1
  92. package/node_modules/@xrkseek/llm/dist/failure.d.ts +16 -0
  93. package/node_modules/@xrkseek/llm/dist/failure.d.ts.map +1 -1
  94. package/node_modules/@xrkseek/llm/dist/failure.js +87 -1
  95. package/node_modules/@xrkseek/llm/dist/failure.js.map +1 -1
  96. package/node_modules/@xrkseek/llm/dist/index.d.ts +21 -2
  97. package/node_modules/@xrkseek/llm/dist/index.d.ts.map +1 -1
  98. package/node_modules/@xrkseek/llm/dist/index.js +33 -2
  99. package/node_modules/@xrkseek/llm/dist/index.js.map +1 -1
  100. package/node_modules/@xrkseek/llm/dist/retry-policy.d.ts +20 -2
  101. package/node_modules/@xrkseek/llm/dist/retry-policy.d.ts.map +1 -1
  102. package/node_modules/@xrkseek/llm/dist/retry-policy.js +48 -17
  103. package/node_modules/@xrkseek/llm/dist/retry-policy.js.map +1 -1
  104. package/node_modules/@xrkseek/llm/dist/stream-idle-timeout.d.ts +46 -0
  105. package/node_modules/@xrkseek/llm/dist/stream-idle-timeout.d.ts.map +1 -0
  106. package/node_modules/@xrkseek/llm/dist/stream-idle-timeout.js +141 -0
  107. package/node_modules/@xrkseek/llm/dist/stream-idle-timeout.js.map +1 -0
  108. package/node_modules/@xrkseek/llm-anthropic/dist/index.d.ts +9 -0
  109. package/node_modules/@xrkseek/llm-anthropic/dist/index.d.ts.map +1 -1
  110. package/node_modules/@xrkseek/llm-anthropic/dist/index.js +22 -9
  111. package/node_modules/@xrkseek/llm-anthropic/dist/index.js.map +1 -1
  112. package/node_modules/@xrkseek/llm-gemini/dist/index.d.ts +9 -0
  113. package/node_modules/@xrkseek/llm-gemini/dist/index.d.ts.map +1 -1
  114. package/node_modules/@xrkseek/llm-gemini/dist/index.js +21 -8
  115. package/node_modules/@xrkseek/llm-gemini/dist/index.js.map +1 -1
  116. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.d.ts +9 -0
  117. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.d.ts.map +1 -1
  118. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js +21 -11
  119. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js.map +1 -1
  120. package/node_modules/@xrkseek/llm-openai-responses/dist/index.d.ts +10 -0
  121. package/node_modules/@xrkseek/llm-openai-responses/dist/index.d.ts.map +1 -1
  122. package/node_modules/@xrkseek/llm-openai-responses/dist/index.js +21 -8
  123. package/node_modules/@xrkseek/llm-openai-responses/dist/index.js.map +1 -1
  124. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  125. package/node_modules/@xrkseek/preset-harness/dist/preset.js +1 -1
  126. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  127. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  128. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  129. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  130. package/node_modules/@xrkseek/server-cron/dist/tools.d.ts.map +1 -1
  131. package/node_modules/@xrkseek/server-cron/dist/tools.js +1 -2
  132. package/node_modules/@xrkseek/server-cron/dist/tools.js.map +1 -1
  133. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts +1 -0
  134. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts.map +1 -1
  135. package/node_modules/@xrkseek/server-face/dist/adapt/index.js +1 -0
  136. package/node_modules/@xrkseek/server-face/dist/adapt/index.js.map +1 -1
  137. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-answer-bound.d.ts +13 -0
  138. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-answer-bound.d.ts.map +1 -0
  139. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-answer-bound.js +33 -0
  140. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-answer-bound.js.map +1 -0
  141. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts +12 -3
  142. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts.map +1 -1
  143. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js +52 -8
  144. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js.map +1 -1
  145. package/node_modules/@xrkseek/server-face/dist/durable-prompt.d.ts +14 -1
  146. package/node_modules/@xrkseek/server-face/dist/durable-prompt.d.ts.map +1 -1
  147. package/node_modules/@xrkseek/server-face/dist/durable-prompt.js +38 -3
  148. package/node_modules/@xrkseek/server-face/dist/durable-prompt.js.map +1 -1
  149. package/node_modules/@xrkseek/server-face/dist/handlers/job.d.ts +8 -0
  150. package/node_modules/@xrkseek/server-face/dist/handlers/job.d.ts.map +1 -1
  151. package/node_modules/@xrkseek/server-face/dist/handlers/job.js +16 -0
  152. package/node_modules/@xrkseek/server-face/dist/handlers/job.js.map +1 -1
  153. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
  154. package/node_modules/@xrkseek/server-face/dist/handlers/session.js +48 -16
  155. package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
  156. package/node_modules/@xrkseek/server-face/dist/host-open-path.d.ts.map +1 -1
  157. package/node_modules/@xrkseek/server-face/dist/host-open-path.js +7 -2
  158. package/node_modules/@xrkseek/server-face/dist/host-open-path.js.map +1 -1
  159. package/node_modules/@xrkseek/server-face/dist/projections/units/session-stats.d.ts +15 -3
  160. package/node_modules/@xrkseek/server-face/dist/projections/units/session-stats.d.ts.map +1 -1
  161. package/node_modules/@xrkseek/server-face/dist/projections/units/session-stats.js +30 -9
  162. package/node_modules/@xrkseek/server-face/dist/projections/units/session-stats.js.map +1 -1
  163. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  164. package/node_modules/@xrkseek/server-face/dist/runtime.js +7 -4
  165. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  166. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
  167. package/node_modules/@xrkseek/server-face/dist/session-status.js +136 -32
  168. package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
  169. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +2 -0
  170. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  171. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +57 -5
  172. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  173. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  174. package/node_modules/@xrkseek/server-host/dist/index.js +43 -1
  175. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  176. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.d.ts.map +1 -1
  177. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.js +6 -3
  178. package/node_modules/@xrkseek/server-host/dist/sidebar-face-bridge.js.map +1 -1
  179. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts.map +1 -1
  180. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js +23 -23
  181. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js.map +1 -1
  182. package/node_modules/@xrkseek/server-http/package.json +46 -46
  183. package/node_modules/@xrkseek/workspace/dist/skill-propose.d.ts.map +1 -1
  184. package/node_modules/@xrkseek/workspace/dist/skill-propose.js +1 -2
  185. package/node_modules/@xrkseek/workspace/dist/skill-propose.js.map +1 -1
  186. package/node_modules/@xrkseek/workspace/dist/skill-tools.js +1 -1
  187. package/node_modules/@xrkseek/workspace/dist/skill-tools.js.map +1 -1
  188. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA8EpD,eAAO,MAAM,gBAAgB,QAG8E,CAAC;AAE5G;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc,EAAE,CAgK1E"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AA8EpD,eAAO,MAAM,gBAAgB,QAG8E,CAAC;AAE5G;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc,EAAE,CA+J1E"}
@@ -67,9 +67,8 @@ export const CRON_PROMPT_TEXT = "Use the cronjob tool to schedule Host tasks: un
67
67
  export function createCronTools(scheduler) {
68
68
  const tool = {
69
69
  name: "cronjob",
70
- description: "Manage Host scheduled tasks. action=create|list|pause|resume|run|remove|runs. " +
70
+ description: "Manage Host scheduled tasks: create|list|pause|resume|run|remove|runs. " +
71
71
  "create needs schedule_kind (every|at|cron) and run_kind (agent|script). " +
72
- "action=runs lists recent execution ledger rows (optional id + limit). " +
73
72
  "Results can POST to a webhook or append to a file.",
74
73
  parameters: {
75
74
  type: "object",
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ export { FaceWireIdMaps } from "./wire-ids.js";
5
5
  export { presentToolView, collectToolCallArgs, collectToolCallArgsForPage, FaceToolArgMaps, faceToolLookup, type PresentToolLookup, type ToolCallPairing, type ToolEventView, } from "./tool-view.js";
6
6
  export { jobViews, formatJobCompletionNotice, isSettledJobStatus, JOB_COMPLETION_MAX_WAKES, type FaceJobsSource, type JobView, type JobViewStatus, } from "./job-view.js";
7
7
  export { formatSubagentCompletionNotice, lastAssistantBodyText } from "./subagent-notice.js";
8
+ export { boundChildAnswer, SUBAGENT_ANSWER_INLINE_BYTES, } from "./subagent-answer-bound.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,iCAAiC,EACjC,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,iCAAiC,EACjC,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC"}
@@ -5,4 +5,5 @@ export { FaceWireIdMaps } from "./wire-ids.js";
5
5
  export { presentToolView, collectToolCallArgs, collectToolCallArgsForPage, FaceToolArgMaps, faceToolLookup, } from "./tool-view.js";
6
6
  export { jobViews, formatJobCompletionNotice, isSettledJobStatus, JOB_COMPLETION_MAX_WAKES, } from "./job-view.js";
7
7
  export { formatSubagentCompletionNotice, lastAssistantBodyText } from "./subagent-notice.js";
8
+ export { boundChildAnswer, SUBAGENT_ANSWER_INLINE_BYTES, } from "./subagent-answer-bound.js";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GAId,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,iCAAiC,EACjC,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,GAEvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAIvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,cAAc,GAIf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GAId,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,iCAAiC,EACjC,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,GAEvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAIvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,cAAc,GAIf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,GAIzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EACL,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Inline ceiling for one child's answer before it goes to a file (UTF-8
3
+ * bytes). Well under the loop-level tool-result ceiling (64_000) so a spilled
4
+ * answer never spills twice; CJK ≈ 3 bytes/char leaves ~4k chars inline.
5
+ */
6
+ export declare const SUBAGENT_ANSWER_INLINE_BYTES = 12000;
7
+ /**
8
+ * Long child answers become a file the parent can read: the tool result /
9
+ * completion notice keeps a head/tail preview plus the path (same spill store
10
+ * the loop uses). Short answers pass through untouched.
11
+ */
12
+ export declare function boundChildAnswer(parentSessionId: string, childSessionId: string, text: string): string;
13
+ //# sourceMappingURL=subagent-answer-bound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-answer-bound.d.ts","sourceRoot":"","sources":["../../src/adapt/subagent-answer-bound.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAOnD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,GACX,MAAM,CAWR"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared child→parent answer sizing: keep short answers inline; spill long
3
+ * ones under the same tool-outputs store the agent-loop uses.
4
+ */
5
+ import { boundToolResultContent, parseSpillLocator, } from "@xrkseek/core-agent-loop";
6
+ /**
7
+ * Inline ceiling for one child's answer before it goes to a file (UTF-8
8
+ * bytes). Well under the loop-level tool-result ceiling (64_000) so a spilled
9
+ * answer never spills twice; CJK ≈ 3 bytes/char leaves ~4k chars inline.
10
+ */
11
+ export const SUBAGENT_ANSWER_INLINE_BYTES = 12_000;
12
+ /** Imperative lead so the parent reads the file instead of re-asking. */
13
+ const SPILL_READ_HINT = "The child's full answer is on disk. Read it with read_file (or grep) " +
14
+ "before you answer — do not re-ask the child to restate it in fewer words.";
15
+ /**
16
+ * Long child answers become a file the parent can read: the tool result /
17
+ * completion notice keeps a head/tail preview plus the path (same spill store
18
+ * the loop uses). Short answers pass through untouched.
19
+ */
20
+ export function boundChildAnswer(parentSessionId, childSessionId, text) {
21
+ if (!text || parseSpillLocator(text))
22
+ return text;
23
+ const bound = boundToolResultContent({
24
+ sessionId: parentSessionId,
25
+ callId: `subagent-${childSessionId}`,
26
+ toolName: "subagent",
27
+ content: text,
28
+ maxInlineBytes: SUBAGENT_ANSWER_INLINE_BYTES,
29
+ });
30
+ const body = typeof bound.content === "string" ? bound.content : text;
31
+ return bound.spilled ? `${SPILL_READ_HINT}\n\n${body}` : body;
32
+ }
33
+ //# sourceMappingURL=subagent-answer-bound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-answer-bound.js","sourceRoot":"","sources":["../../src/adapt/subagent-answer-bound.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAEnD,yEAAyE;AACzE,MAAM,eAAe,GACnB,uEAAuE;IACvE,2EAA2E,CAAC;AAE9E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,eAAuB,EACvB,cAAsB,EACtB,IAAY;IAEZ,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,KAAK,GAAG,sBAAsB,CAAC;QACnC,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,YAAY,cAAc,EAAE;QACpC,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,4BAA4B;KAC7C,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { SessionEvent } from "@xrkseek/protocol";
1
+ import type { SessionEvent, TurnEndReason } from "@xrkseek/protocol";
2
2
  import type { FaceSubagentLink } from "../subagent-registry.js";
3
3
  /**
4
4
  * Child body text for parent-facing completion / tool results.
@@ -9,9 +9,18 @@ import type { FaceSubagentLink } from "../subagent-registry.js";
9
9
  * Codex: reasoning never enters the parent session).
10
10
  */
11
11
  export declare function lastAssistantBodyText(events: readonly SessionEvent[]): string;
12
+ /** Latest `turn/end.reason` on the child log (undefined when still open). */
13
+ export declare function lastTurnEndReason(events: readonly SessionEvent[]): TurnEndReason | undefined;
12
14
  /**
13
15
  * Parent inbox notice when a background (continuable) child drain goes idle.
14
- * Mirrors job completion copy: short status + how to follow up.
16
+ * Normal idle → "finished a turn". Abnormal `turn/end` (abort / error / …)
17
+ * still reports back with a clear head so the parent can recover — except when
18
+ * Face suppressed delivery after a **user** parent Stop (cascade cancel).
19
+ *
20
+ * @param answerBody - optional already-bound child answer (see
21
+ * {@link boundChildAnswer}). When omitted, the raw last assistant text is
22
+ * inlined with **no** 2k hard clip — callers that need size control must
23
+ * pass a bound body so long answers spill instead of being silently cut.
15
24
  */
16
- export declare function formatSubagentCompletionNotice(link: FaceSubagentLink, events: readonly SessionEvent[], maxPreviewChars?: number): string;
25
+ export declare function formatSubagentCompletionNotice(link: FaceSubagentLink, events: readonly SessionEvent[], answerBody?: string): string;
17
26
  //# sourceMappingURL=subagent-notice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-notice.d.ts","sourceRoot":"","sources":["../../src/adapt/subagent-notice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,MAAM,CAyBR;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,eAAe,SAAO,GACrB,MAAM,CAWR"}
1
+ {"version":3,"file":"subagent-notice.d.ts","sourceRoot":"","sources":["../../src/adapt/subagent-notice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,MAAM,CAyBR;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,aAAa,GAAG,SAAS,CAM3B;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAaR"}
@@ -36,19 +36,63 @@ export function lastAssistantBodyText(events) {
36
36
  }
37
37
  return folded.trim();
38
38
  }
39
+ /** Latest `turn/end.reason` on the child log (undefined when still open). */
40
+ export function lastTurnEndReason(events) {
41
+ for (let i = events.length - 1; i >= 0; i -= 1) {
42
+ const ev = events[i];
43
+ if (ev.type === "turn/end")
44
+ return ev.reason;
45
+ }
46
+ return undefined;
47
+ }
48
+ function abnormalHeadDetail(reason) {
49
+ if (reason.kind === "aborted") {
50
+ const cause = reason.reason;
51
+ if (cause.kind === "user")
52
+ return "aborted by user";
53
+ if (cause.kind === "parent")
54
+ return "aborted by parent";
55
+ if (cause.kind === "disposed")
56
+ return "aborted: session disposed";
57
+ if (cause.kind === "hook")
58
+ return `aborted by hook: ${cause.reason}`;
59
+ if (cause.kind === "legacy")
60
+ return "aborted";
61
+ return "aborted";
62
+ }
63
+ if (reason.kind === "error")
64
+ return "ended with error";
65
+ if (reason.kind === "interrupted")
66
+ return "interrupted mid-turn";
67
+ if (reason.kind === "max-tokens")
68
+ return "stopped at max tokens";
69
+ if (reason.kind === "blocked")
70
+ return "blocked";
71
+ return undefined;
72
+ }
39
73
  /**
40
74
  * Parent inbox notice when a background (continuable) child drain goes idle.
41
- * Mirrors job completion copy: short status + how to follow up.
75
+ * Normal idle → "finished a turn". Abnormal `turn/end` (abort / error / …)
76
+ * still reports back with a clear head so the parent can recover — except when
77
+ * Face suppressed delivery after a **user** parent Stop (cascade cancel).
78
+ *
79
+ * @param answerBody - optional already-bound child answer (see
80
+ * {@link boundChildAnswer}). When omitted, the raw last assistant text is
81
+ * inlined with **no** 2k hard clip — callers that need size control must
82
+ * pass a bound body so long answers spill instead of being silently cut.
42
83
  */
43
- export function formatSubagentCompletionNotice(link, events, maxPreviewChars = 2000) {
44
- const head = `background subagent \`${link.childSessionId}\` (${link.label}) finished a turn.`;
45
- const preview = lastAssistantBodyText(events);
84
+ export function formatSubagentCompletionNotice(link, events, answerBody) {
85
+ const turnReason = lastTurnEndReason(events);
86
+ const abnormal = turnReason ? abnormalHeadDetail(turnReason) : undefined;
87
+ const head = abnormal
88
+ ? `background subagent \`${link.childSessionId}\` (${link.label}) ended abnormally (${abnormal}).`
89
+ : `background subagent \`${link.childSessionId}\` (${link.label}) finished a turn.`;
90
+ const preview = (answerBody !== undefined
91
+ ? answerBody
92
+ : lastAssistantBodyText(events)).trim();
46
93
  const follow = "Follow up with send_message, interrupt_agent when done, or list_agents.";
47
94
  if (!preview)
48
95
  return `${head} ${follow}`;
49
- const clipped = preview.length > maxPreviewChars
50
- ? `${preview.slice(0, maxPreviewChars)}\n…`
51
- : preview;
52
- return `${head}\n\n${clipped}\n\n${follow}`;
96
+ return `${head}\n\n${preview}\n\n${follow}`;
53
97
  }
54
98
  //# sourceMappingURL=subagent-notice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-notice.js","sourceRoot":"","sources":["../../src/adapt/subagent-notice.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+B;IAE/B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,EAAE,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YACtB,sEAAsE;YACtE,sCAAsC;YACtC,SAAS;QACX,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,IAAI,MAA0B,CAAC;IAC/B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB;YAAE,SAAS;QAC5C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;aACxC,IAAI,EAAE,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC;QAC/B,IAAI,IAAI,KAAK,MAAM;YAAE,SAAS;QAC9B,MAAM,GAAG,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,IAAsB,EACtB,MAA+B,EAC/B,eAAe,GAAG,IAAI;IAEtB,MAAM,IAAI,GAAG,yBAAyB,IAAI,CAAC,cAAc,OAAO,IAAI,CAAC,KAAK,oBAAoB,CAAC;IAC/F,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GACV,yEAAyE,CAAC;IAC5E,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;IACzC,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,eAAe;QAC9B,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK;QAC3C,CAAC,CAAC,OAAO,CAAC;IACd,OAAO,GAAG,IAAI,OAAO,OAAO,OAAO,MAAM,EAAE,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"subagent-notice.js","sourceRoot":"","sources":["../../src/adapt/subagent-notice.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,10 @@ export type DurablePromptResult = {
26
26
  readonly code: string;
27
27
  readonly message: string;
28
28
  };
29
+ /** Image numbering base for this message: count of images already admitted in the session. */
30
+ export type DurablePromptOptions = {
31
+ readonly imageStartIndex?: number;
32
+ };
29
33
  /** True when content has a non-text part or non-whitespace text (attachment-only OK). */
30
34
  export declare function hasPromptContent(parts: readonly PromptWirePart[]): boolean;
31
35
  /**
@@ -33,5 +37,14 @@ export declare function hasPromptContent(parts: readonly PromptWirePart[]): bool
33
37
  * - all text → string (legacy-friendly)
34
38
  * - any image/file → ContentBlock[] after AttachmentStore admission
35
39
  */
36
- export declare function durablePromptContent(parts: readonly PromptWirePart[], attachments: AttachmentStore): Promise<DurablePromptResult>;
40
+ export declare function durablePromptContent(parts: readonly PromptWirePart[], attachments: AttachmentStore, options?: DurablePromptOptions): Promise<DurablePromptResult>;
41
+ /**
42
+ * Session-wide image numbering base for the next admit:
43
+ * count of durable image blocks already present in user/prompt events.
44
+ * Stable across restarts (derived from the event log, not runtime memory).
45
+ */
46
+ export declare function sessionImageStartIndex(events: readonly {
47
+ type: string;
48
+ content?: unknown;
49
+ }[]): number;
37
50
  //# sourceMappingURL=durable-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"durable-prompt.d.ts","sourceRoot":"","sources":["../src/durable-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GACvD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAI1E;AAoBD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CA2I9B"}
1
+ {"version":3,"file":"durable-prompt.d.ts","sourceRoot":"","sources":["../src/durable-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,mBAAmB,CAAC;AAG3B,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GACvD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,8FAA8F;AAC9F,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,OAAO,CAI1E;AAoBD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,WAAW,EAAE,eAAe,EAC5B,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAsJ9B;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,GACrD,MAAM,CAeR"}
@@ -31,7 +31,7 @@ function mapAttachmentError(err) {
31
31
  * - all text → string (legacy-friendly)
32
32
  * - any image/file → ContentBlock[] after AttachmentStore admission
33
33
  */
34
- export async function durablePromptContent(parts, attachments) {
34
+ export async function durablePromptContent(parts, attachments, options = {}) {
35
35
  if (parts.length === 0) {
36
36
  return { ok: false, code: "invalid-payload", message: "content required" };
37
37
  }
@@ -141,14 +141,49 @@ export async function durablePromptContent(parts, attachments) {
141
141
  continue;
142
142
  }
143
143
  if (p.kind === "image") {
144
- blocks.push({ type: "image", attachment: imageRefs[imageIndex++] });
144
+ const ref = imageRefs[imageIndex++];
145
+ const imageNo = (options.imageStartIndex ?? 0) + imageIndex;
146
+ blocks.push({
147
+ type: "text",
148
+ text: `[图${imageNo} ${ref.attachmentId}(${ref.width}×${ref.height} ${ref.mediaType})。视觉模型直接看块;若未渲染或需细看,用 read_image file_path=attachment:${ref.attachmentId} 读取]`,
149
+ });
150
+ blocks.push({ type: "image", attachment: ref });
145
151
  continue;
146
152
  }
147
- blocks.push({ type: "file", attachment: fileRefs[fileIndex++] });
153
+ const ref = fileRefs[fileIndex++];
154
+ blocks.push({
155
+ type: "text",
156
+ text: `[文件附件 ${ref.name}(${ref.attachmentId})。需内容时用 read_file 按 id 读取]`,
157
+ });
158
+ blocks.push({ type: "file", attachment: ref });
148
159
  }
149
160
  if (blocks.length === 0) {
150
161
  return { ok: false, code: "invalid-payload", message: "empty content" };
151
162
  }
152
163
  return { ok: true, content: blocks };
153
164
  }
165
+ /**
166
+ * Session-wide image numbering base for the next admit:
167
+ * count of durable image blocks already present in user/prompt events.
168
+ * Stable across restarts (derived from the event log, not runtime memory).
169
+ */
170
+ export function sessionImageStartIndex(events) {
171
+ let count = 0;
172
+ for (const ev of events) {
173
+ if (ev.type !== "user/message" && ev.type !== "prompt/admitted")
174
+ continue;
175
+ const content = ev.content;
176
+ if (typeof content !== "object" || content === null)
177
+ continue;
178
+ const blocks = content;
179
+ if (!Array.isArray(blocks))
180
+ continue;
181
+ for (const block of blocks) {
182
+ if (block?.type === "image" && typeof block.attachment?.attachmentId === "string") {
183
+ count += 1;
184
+ }
185
+ }
186
+ }
187
+ return count;
188
+ }
154
189
  //# sourceMappingURL=durable-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"durable-prompt.js","sourceRoot":"","sources":["../src/durable-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durable-prompt.js","sourceRoot":"","sources":["../src/durable-prompt.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
+ import { type ShellService } from "@xrkseek/exec-shell";
1
2
  import { type FaceHandler } from "./types.js";
3
+ /**
4
+ * Stop every live job owned by `sessionId` (best-effort).
5
+ * Turn abort only cancels work still bound to the current tool signal —
6
+ * yielded / backgrounded bash keeps running unless we kill here, which is
7
+ * why Stop had to be clicked repeatedly while toasts kept floating.
8
+ */
9
+ export declare function killLiveSessionJobs(shell: ShellService | undefined, sessionId: string): void;
2
10
  export declare const jobKill: FaceHandler;
3
11
  export declare const jobBackground: FaceHandler;
4
12
  //# sourceMappingURL=job.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../src/handlers/job.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAoCxD,eAAO,MAAM,OAAO,EAAE,WAkBrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WA2B3B,CAAC"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../src/handlers/job.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AA4BxD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,GAChB,IAAI,CAON;AAUD,eAAO,MAAM,OAAO,EAAE,WAkBrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WA2B3B,CAAC"}
@@ -19,6 +19,22 @@ function scopedShell(shell, sessionId) {
19
19
  return undefined;
20
20
  return createSessionScopedShell(shell, sessionId);
21
21
  }
22
+ /**
23
+ * Stop every live job owned by `sessionId` (best-effort).
24
+ * Turn abort only cancels work still bound to the current tool signal —
25
+ * yielded / backgrounded bash keeps running unless we kill here, which is
26
+ * why Stop had to be clicked repeatedly while toasts kept floating.
27
+ */
28
+ export function killLiveSessionJobs(shell, sessionId) {
29
+ const scoped = scopedShell(shell, sessionId);
30
+ if (!scoped)
31
+ return;
32
+ for (const job of scoped.listJobsNow()) {
33
+ if (job.status !== "running" && job.status !== "stopping")
34
+ continue;
35
+ void scoped.killJob(job.id, "session-cancel").catch(() => undefined);
36
+ }
37
+ }
22
38
  const jobHostUnavailable = {
23
39
  ok: false,
24
40
  error: {
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/handlers/job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/handlers/job.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AA2CxD,eAAO,MAAM,aAAa,EAAE,WAoI3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WA8CzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAkF5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAI3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAyJ3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAgD3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,WAkF3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAc3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,WAUhC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAmJzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,WAwCpC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAkC3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,WA6KhC,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,aAAa,EAAE,WAmB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,WA6CjC,CAAC"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAoCA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AA4CxD,eAAO,MAAM,aAAa,EAAE,WAoI3B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WA8CzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAkF5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAI3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WA8J3B,CAAC;AAcF,eAAO,MAAM,aAAa,EAAE,WA+D3B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,WAkF3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAc3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,WAUhC,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,WAmJzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,WAwCpC,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAkC3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,WAiLhC,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,aAAa,EAAE,WAmB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,WA6CjC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { AdmitNotPendingError, listPendingAdmits, readSessionEvents, sessionEventCount, withdrawAdmit, } from "@xrkseek/core-session";
2
- import { flattenText } from "@xrkseek/protocol";
2
+ import { flattenText, parseTurnEndCancelCause, } from "@xrkseek/protocol";
3
3
  import { FACE_AGENT_PRESET_IDS, canonicalAgentPresetId, resolveAgentPresetProfile, } from "../presets-catalog.js";
4
4
  import { toWireHistoryEntry, collectToolCallArgsForPage, routeFromRequestHeader } from "../adapt/index.js";
5
5
  import { rewritePendingAdmit } from "../update-queue-rewrite.js";
@@ -8,8 +8,9 @@ import { tryFaceSlashCommand } from "../slash.js";
8
8
  import { commitPlanMode } from "../plan-mode.js";
9
9
  import { SessionTitleInvalidError } from "../projections/index.js";
10
10
  import { parseSearchQuery, searchSessions } from "../session-search.js";
11
- import { durablePromptContent, hasPromptContent, } from "../durable-prompt.js";
11
+ import { durablePromptContent, hasPromptContent, sessionImageStartIndex, } from "../durable-prompt.js";
12
12
  import { asRecord } from "./types.js";
13
+ import { killLiveSessionJobs } from "./job.js";
13
14
  import { publishSessionAdded } from "./session-added.js";
14
15
  import { defaultPermissionPreset, pinInitialPermission, } from "../permissions.js";
15
16
  import { resolveDefaultAgentPreset } from "../settings-document.js";
@@ -374,7 +375,10 @@ export const sessionPrompt = async (runtime, rpcId, payload) => {
374
375
  }
375
376
  let admitContent;
376
377
  if (hasAttachment) {
377
- const durable = await durablePromptContent(parts, runtime.attachments);
378
+ const startIndex = sessionImageStartIndex(readSessionEvents(runtime.store, sessionId));
379
+ const durable = await durablePromptContent(parts, runtime.attachments, {
380
+ imageStartIndex: startIndex,
381
+ });
378
382
  if (!durable.ok) {
379
383
  return {
380
384
  ok: false,
@@ -413,6 +417,18 @@ export const sessionPrompt = async (runtime, rpcId, payload) => {
413
417
  runtime.drain.wake(sessionId);
414
418
  return { ok: true, value: { accepted: true } };
415
419
  };
420
+ /**
421
+ * Resolve cancel cause from Face payload; bare Stop defaults to `user`.
422
+ * Live `agent.abort` only accepts {@link AgentCancelCause} — `legacy` is a
423
+ * durable turn/end fallback, so map it to `user` for the latch.
424
+ */
425
+ function cancelCauseFromPayload(payload) {
426
+ const raw = asRecord(payload).cause;
427
+ if (raw === undefined)
428
+ return { kind: "user" };
429
+ const cause = parseTurnEndCancelCause(raw);
430
+ return cause.kind === "legacy" ? { kind: "user" } : cause;
431
+ }
416
432
  export const sessionCancel = async (runtime, _rpcId, payload) => {
417
433
  const sessionId = String(asRecord(payload).sessionId ?? "");
418
434
  if (!sessionId) {
@@ -421,6 +437,7 @@ export const sessionCancel = async (runtime, _rpcId, payload) => {
421
437
  error: { code: "invalid-payload", message: "sessionId required" },
422
438
  };
423
439
  }
440
+ const cause = cancelCauseFromPayload(payload);
424
441
  // 1) Optimistic running:false — published *before* the drain join so a
425
442
  // stuck tool (git snapshot, hung LLM call) can never pin the UI to
426
443
  // "running" forever. publishDrainIdle re-publishes false after the
@@ -435,28 +452,42 @@ export const sessionCancel = async (runtime, _rpcId, payload) => {
435
452
  // same abort signal path via continueTurn).
436
453
  try {
437
454
  const agent = await runtime.resolveAgent(sessionId);
438
- agent.abort({ kind: "user" });
455
+ agent.abort(cause);
439
456
  }
440
457
  catch {
441
458
  /* ignore */
442
459
  }
443
- // 2) Cascade to delegated children (fire-and-forget). A stopped parent
444
- // must not leave orphaned subagents draining: each child cancel is
445
- // itself a sessionCancel — optimistic running:false + bounded join —
446
- // and the tree walk is depth-bounded by the subagent registry.
460
+ // 2) Kill yielded / background shell jobs for this session. Turn abort
461
+ // alone leaves them alive (signal was only wired while the tool wait
462
+ // owned them), which resurfaces as Stop needing multiple clicks and
463
+ // floating "background job finished" toasts.
464
+ killLiveSessionJobs(runtime.shell, sessionId);
465
+ // 3) Cascade to delegated children (fire-and-forget) — **user Stop only**.
466
+ // A parent turn that completes on its own must NOT cancel background
467
+ // children (they keep draining and still report natural / abnormal idle).
468
+ // Manual parent Stop: stop the tree, stamp cause.kind "parent", and
469
+ // suppressOwnedSubagentCompletion *before* child cancel so cancel→idle
470
+ // does not steer a "finished a turn" notice with truncated body back
471
+ // (interrupt_agent already suppresses; Stop cascade must match).
447
472
  const cascade = asRecord(payload).cascade !== false;
448
473
  if (cascade) {
449
474
  for (const link of runtime.subagents.listDelegated(sessionId)) {
450
- void sessionCancel(runtime, `tool-sa-c-${link.childSessionId}`, { sessionId: link.childSessionId, cascade: true }).catch(() => undefined);
475
+ runtime.suppressOwnedSubagentCompletion(link.childSessionId);
476
+ void sessionCancel(runtime, `tool-sa-c-${link.childSessionId}`, {
477
+ sessionId: link.childSessionId,
478
+ cascade: true,
479
+ cause: { kind: "parent" },
480
+ }).catch(() => undefined);
451
481
  }
452
482
  }
453
- // 3) Bounded drain join: the latch keeps its entry on timeout, so a
454
- // message admitted during teardown still drains once the stuck chain
455
- // settles (wake accumulates on the stopping entry).
456
- await runtime.drain.cancel(sessionId, {
457
- cause: { kind: "user" },
483
+ // 4) Bounded drain join in the background. Returning accepted here unblocks
484
+ // the client Stop click immediately; Host already published running:false
485
+ // and aborted the turn. The latch keeps its entry on timeout so a message
486
+ // admitted during teardown still drains once the stuck chain settles.
487
+ void runtime.drain.cancel(sessionId, {
488
+ cause,
458
489
  timeoutMs: SESSION_CANCEL_JOIN_MS,
459
- });
490
+ }).catch(() => undefined);
460
491
  return { ok: true, value: { accepted: true } };
461
492
  };
462
493
  /**
@@ -862,7 +893,8 @@ export const sessionUpdateQueue = async (runtime, _rpcId, payload) => {
862
893
  },
863
894
  };
864
895
  }
865
- const durable = await durablePromptContent(parts, runtime.attachments);
896
+ const startIndex = sessionImageStartIndex(readSessionEvents(runtime.store, sessionId));
897
+ const durable = await durablePromptContent(parts, runtime.attachments, { imageStartIndex: startIndex });
866
898
  if (!durable.ok) {
867
899
  return {
868
900
  ok: false,