@xrkseek/harness 0.5.9 → 0.5.11

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 (228) hide show
  1. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +4 -3
  2. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  3. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +25 -60
  4. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  5. package/node_modules/@xrkseek/core-agent-loop/dist/llm-retry.d.ts +0 -2
  6. package/node_modules/@xrkseek/core-agent-loop/dist/llm-retry.d.ts.map +1 -1
  7. package/node_modules/@xrkseek/core-agent-loop/dist/llm-retry.js +7 -3
  8. package/node_modules/@xrkseek/core-agent-loop/dist/llm-retry.js.map +1 -1
  9. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.d.ts +16 -3
  10. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.d.ts.map +1 -1
  11. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.js +24 -8
  12. package/node_modules/@xrkseek/core-agent-loop/dist/settle-batch.js.map +1 -1
  13. package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
  14. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +27 -1
  15. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
  16. package/node_modules/@xrkseek/core-tools/dist/index.d.ts +1 -1
  17. package/node_modules/@xrkseek/core-tools/dist/index.d.ts.map +1 -1
  18. package/node_modules/@xrkseek/core-tools/dist/index.js +1 -1
  19. package/node_modules/@xrkseek/core-tools/dist/index.js.map +1 -1
  20. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts +9 -0
  21. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts.map +1 -1
  22. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +45 -12
  23. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
  24. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +9 -1
  25. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  26. package/node_modules/@xrkseek/exec-fs/dist/index.js +21 -14
  27. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  28. package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts +11 -0
  29. package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts.map +1 -1
  30. package/node_modules/@xrkseek/exec-fs/dist/paths.js +40 -0
  31. package/node_modules/@xrkseek/exec-fs/dist/paths.js.map +1 -1
  32. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts +2 -2
  33. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts.map +1 -1
  34. package/node_modules/@xrkseek/exec-memory/dist/index.js +2 -2
  35. package/node_modules/@xrkseek/exec-memory/dist/index.js.map +1 -1
  36. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts +18 -0
  37. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts.map +1 -1
  38. package/node_modules/@xrkseek/exec-memory/dist/store.js +108 -7
  39. package/node_modules/@xrkseek/exec-memory/dist/store.js.map +1 -1
  40. package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
  41. package/node_modules/@xrkseek/exec-memory/dist/tools.js +17 -1
  42. package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
  43. package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts +2 -0
  44. package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts.map +1 -1
  45. package/node_modules/@xrkseek/exec-memory/dist/write-path.js +28 -3
  46. package/node_modules/@xrkseek/exec-memory/dist/write-path.js.map +1 -1
  47. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts +7 -4
  48. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts.map +1 -1
  49. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js +4 -0
  50. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js.map +1 -1
  51. package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts +7 -0
  52. package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts.map +1 -1
  53. package/node_modules/@xrkseek/exec-sandbox/dist/service.js +18 -8
  54. package/node_modules/@xrkseek/exec-sandbox/dist/service.js.map +1 -1
  55. package/node_modules/@xrkseek/exec-web/dist/tools.d.ts +1 -1
  56. package/node_modules/@xrkseek/exec-web/dist/tools.d.ts.map +1 -1
  57. package/node_modules/@xrkseek/exec-web/dist/tools.js +10 -0
  58. package/node_modules/@xrkseek/exec-web/dist/tools.js.map +1 -1
  59. package/node_modules/@xrkseek/llm/dist/index.d.ts.map +1 -1
  60. package/node_modules/@xrkseek/llm/dist/index.js +8 -2
  61. package/node_modules/@xrkseek/llm/dist/index.js.map +1 -1
  62. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +16 -0
  63. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  64. package/node_modules/@xrkseek/preset-harness/dist/preset.js +13 -2
  65. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  66. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  67. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  68. package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
  69. package/node_modules/@xrkseek/preset-server/dist/preset.js +4 -1
  70. package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
  71. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  72. package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +5 -0
  73. package/node_modules/@xrkseek/protocol/dist/session-events.d.ts.map +1 -1
  74. package/node_modules/@xrkseek/protocol/dist/session-events.js.map +1 -1
  75. package/node_modules/@xrkseek/protocol/dist/validate.d.ts.map +1 -1
  76. package/node_modules/@xrkseek/protocol/dist/validate.js +5 -0
  77. package/node_modules/@xrkseek/protocol/dist/validate.js.map +1 -1
  78. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts +1 -1
  79. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts.map +1 -1
  80. package/node_modules/@xrkseek/server-face/dist/adapt/index.js +1 -1
  81. package/node_modules/@xrkseek/server-face/dist/adapt/index.js.map +1 -1
  82. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.d.ts +5 -0
  83. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.d.ts.map +1 -1
  84. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.js +16 -0
  85. package/node_modules/@xrkseek/server-face/dist/adapt/model-route.js.map +1 -1
  86. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts +32 -0
  87. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts.map +1 -1
  88. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js +87 -0
  89. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js.map +1 -1
  90. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts.map +1 -1
  91. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js +29 -2
  92. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js.map +1 -1
  93. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts +102 -0
  94. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts.map +1 -0
  95. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js +495 -0
  96. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js.map +1 -0
  97. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.d.ts +12 -0
  98. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.d.ts.map +1 -0
  99. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js +141 -0
  100. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js.map +1 -0
  101. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts +46 -0
  102. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -1
  103. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +150 -1
  104. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
  105. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.d.ts +5 -0
  106. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.d.ts.map +1 -1
  107. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.js +24 -0
  108. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.js.map +1 -1
  109. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.d.ts +6 -0
  110. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.d.ts.map +1 -0
  111. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.js +43 -0
  112. package/node_modules/@xrkseek/server-face/dist/capture-member-playbook.js.map +1 -0
  113. package/node_modules/@xrkseek/server-face/dist/context.d.ts +21 -4
  114. package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
  115. package/node_modules/@xrkseek/server-face/dist/dispatch.d.ts.map +1 -1
  116. package/node_modules/@xrkseek/server-face/dist/dispatch.js +19 -0
  117. package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
  118. package/node_modules/@xrkseek/server-face/dist/fork-cut.d.ts +3 -2
  119. package/node_modules/@xrkseek/server-face/dist/fork-cut.d.ts.map +1 -1
  120. package/node_modules/@xrkseek/server-face/dist/fork-cut.js +58 -20
  121. package/node_modules/@xrkseek/server-face/dist/fork-cut.js.map +1 -1
  122. package/node_modules/@xrkseek/server-face/dist/handlers/job.d.ts.map +1 -1
  123. package/node_modules/@xrkseek/server-face/dist/handlers/job.js +1 -0
  124. package/node_modules/@xrkseek/server-face/dist/handlers/job.js.map +1 -1
  125. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
  126. package/node_modules/@xrkseek/server-face/dist/handlers/session.js +88 -18
  127. package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
  128. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.d.ts.map +1 -1
  129. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js +20 -0
  130. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js.map +1 -1
  131. package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts +11 -0
  132. package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts.map +1 -0
  133. package/node_modules/@xrkseek/server-face/dist/handlers/team.js +268 -0
  134. package/node_modules/@xrkseek/server-face/dist/handlers/team.js.map +1 -0
  135. package/node_modules/@xrkseek/server-face/dist/index.d.ts +6 -2
  136. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  137. package/node_modules/@xrkseek/server-face/dist/index.js +5 -1
  138. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  139. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts +17 -1
  140. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
  141. package/node_modules/@xrkseek/server-face/dist/model-catalog.js +46 -1
  142. package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
  143. package/node_modules/@xrkseek/server-face/dist/presence-tools.d.ts.map +1 -1
  144. package/node_modules/@xrkseek/server-face/dist/presence-tools.js +15 -6
  145. package/node_modules/@xrkseek/server-face/dist/presence-tools.js.map +1 -1
  146. package/node_modules/@xrkseek/server-face/dist/presets-catalog.d.ts +16 -0
  147. package/node_modules/@xrkseek/server-face/dist/presets-catalog.d.ts.map +1 -1
  148. package/node_modules/@xrkseek/server-face/dist/presets-catalog.js +5 -0
  149. package/node_modules/@xrkseek/server-face/dist/presets-catalog.js.map +1 -1
  150. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts +8 -2
  151. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts.map +1 -1
  152. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js +14 -12
  153. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js.map +1 -1
  154. package/node_modules/@xrkseek/server-face/dist/ralph-tool.d.ts.map +1 -1
  155. package/node_modules/@xrkseek/server-face/dist/ralph-tool.js +15 -12
  156. package/node_modules/@xrkseek/server-face/dist/ralph-tool.js.map +1 -1
  157. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  158. package/node_modules/@xrkseek/server-face/dist/runtime.js +96 -14
  159. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  160. package/node_modules/@xrkseek/server-face/dist/session-cwd.d.ts +12 -0
  161. package/node_modules/@xrkseek/server-face/dist/session-cwd.d.ts.map +1 -1
  162. package/node_modules/@xrkseek/server-face/dist/session-cwd.js +14 -0
  163. package/node_modules/@xrkseek/server-face/dist/session-cwd.js.map +1 -1
  164. package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts +2 -0
  165. package/node_modules/@xrkseek/server-face/dist/session-model-store.d.ts.map +1 -1
  166. package/node_modules/@xrkseek/server-face/dist/session-model-store.js +14 -0
  167. package/node_modules/@xrkseek/server-face/dist/session-model-store.js.map +1 -1
  168. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +16 -1
  169. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
  170. package/node_modules/@xrkseek/server-face/dist/session-status.js +47 -6
  171. package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
  172. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.d.ts +17 -0
  173. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.d.ts.map +1 -0
  174. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.js +34 -0
  175. package/node_modules/@xrkseek/server-face/dist/session-thread-publish.js.map +1 -0
  176. package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts +38 -0
  177. package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts.map +1 -0
  178. package/node_modules/@xrkseek/server-face/dist/session-thread-store.js +207 -0
  179. package/node_modules/@xrkseek/server-face/dist/session-thread-store.js.map +1 -0
  180. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts +12 -0
  181. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -0
  182. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +223 -0
  183. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -0
  184. package/node_modules/@xrkseek/server-face/dist/settings-agent-tools.d.ts.map +1 -1
  185. package/node_modules/@xrkseek/server-face/dist/settings-agent-tools.js +13 -1
  186. package/node_modules/@xrkseek/server-face/dist/settings-agent-tools.js.map +1 -1
  187. package/node_modules/@xrkseek/server-face/dist/settings-document.d.ts.map +1 -1
  188. package/node_modules/@xrkseek/server-face/dist/settings-document.js +10 -11
  189. package/node_modules/@xrkseek/server-face/dist/settings-document.js.map +1 -1
  190. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  191. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +17 -10
  192. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  193. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +46 -0
  194. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts.map +1 -1
  195. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js +111 -8
  196. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
  197. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +21 -0
  198. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  199. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +422 -85
  200. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  201. package/node_modules/@xrkseek/server-face/dist/types.d.ts +9 -0
  202. package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
  203. package/node_modules/@xrkseek/server-face/dist/wire/paths.d.ts.map +1 -1
  204. package/node_modules/@xrkseek/server-face/dist/wire/paths.js +2 -0
  205. package/node_modules/@xrkseek/server-face/dist/wire/paths.js.map +1 -1
  206. package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts.map +1 -1
  207. package/node_modules/@xrkseek/server-face/dist/workspace-face.js +7 -0
  208. package/node_modules/@xrkseek/server-face/dist/workspace-face.js.map +1 -1
  209. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts +5 -1
  210. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts.map +1 -1
  211. package/node_modules/@xrkseek/server-host/dist/agent-cache.js +29 -3
  212. package/node_modules/@xrkseek/server-host/dist/agent-cache.js.map +1 -1
  213. package/node_modules/@xrkseek/server-host/dist/index.d.ts +21 -0
  214. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  215. package/node_modules/@xrkseek/server-host/dist/index.js +108 -21
  216. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  217. package/node_modules/@xrkseek/server-http/dist/static.d.ts.map +1 -1
  218. package/node_modules/@xrkseek/server-http/dist/static.js +45 -5
  219. package/node_modules/@xrkseek/server-http/dist/static.js.map +1 -1
  220. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts +8 -0
  221. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts.map +1 -1
  222. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js +6 -2
  223. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js.map +1 -1
  224. package/node_modules/@xrkseek/workspace/dist/index.d.ts +16 -0
  225. package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
  226. package/node_modules/@xrkseek/workspace/dist/index.js +17 -8
  227. package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
  228. package/package.json +1 -1
@@ -0,0 +1,141 @@
1
+ import { canvasWorkspaceIdForSession } from "./canvas-tools.js";
2
+ import { isAgentTeamSpawnRole } from "./agent-team-roles.js";
3
+ import { formatRosterCatalog, parseMemberAppearance, parseMemberToolPolicy, parseRosterScope, rosterPublicFields, } from "./agent-roster-store.js";
4
+ import { captureSessionPlaybook } from "./capture-member-playbook.js";
5
+ function registerTool(tools, tool) {
6
+ if (tools.get(tool.name))
7
+ return;
8
+ tools.register(tool);
9
+ }
10
+ function readArgs(args) {
11
+ if (!args || typeof args !== "object" || Array.isArray(args))
12
+ return {};
13
+ return args;
14
+ }
15
+ /** Register team_list / team_save. Spawn stays `subagent` + member_id. */
16
+ export function bindAgentRosterTools(tools, options) {
17
+ const { runtime, sessionId } = options;
18
+ const ws = () => canvasWorkspaceIdForSession(runtime, sessionId);
19
+ registerTool(tools, {
20
+ name: "team_list",
21
+ description: "List Agent Team members (global + this workspace). A member is the child's " +
22
+ "tools, inject, and playbook — the same three surfaces the parent edits via " +
23
+ "preset / .xrk / the user message. Short catalog only. Spawn with subagent member_id.",
24
+ parameters: { type: "object", properties: {}, additionalProperties: false },
25
+ isConcurrencySafe: () => true,
26
+ presentCall: () => ({
27
+ card: "generic",
28
+ title: "team_list",
29
+ kind: "search",
30
+ rawInput: {},
31
+ }),
32
+ dynamicSchema: () => ({
33
+ description: "List Agent Team members. Spawn with subagent member_id.\n" +
34
+ formatRosterCatalog(runtime.agentRoster.listVisible(ws())),
35
+ }),
36
+ execute: async () => {
37
+ const workspaceId = ws();
38
+ const members = runtime.agentRoster
39
+ .listVisible(workspaceId)
40
+ .map(rosterPublicFields);
41
+ return { content: JSON.stringify({ workspaceId, members }) };
42
+ },
43
+ });
44
+ registerTool(tools, {
45
+ name: "team_save",
46
+ description: "Publish a child profile onto Agent Team (tools + inject + playbook). " +
47
+ "Use after a repeatable process (release, review, deploy) so later `subagent member_id` " +
48
+ "does not rediscover it. from_session=true fills name/playbook from this chat. " +
49
+ "scope global|workspace. inject minimal (skip home persona + skill catalog) | subagent. " +
50
+ "tools {mode:allow|deny, names:[...]} weakens the parent preset only. " +
51
+ "role worker|researcher|reviewer|lead|default is the deny template under the playbook.",
52
+ parameters: {
53
+ type: "object",
54
+ properties: {
55
+ id: { type: "string" },
56
+ name: { type: "string" },
57
+ playbook: {
58
+ type: "string",
59
+ description: "Standalone instructions a later child can run without this chat.",
60
+ },
61
+ role: { type: "string" },
62
+ from_session: {
63
+ type: "boolean",
64
+ description: "If true, mint name/playbook from this session's user+assistant log.",
65
+ },
66
+ shape: { type: "string" },
67
+ color: { type: "string" },
68
+ brief: { type: "string" },
69
+ scope: {
70
+ type: "string",
71
+ description: "global | workspace (default workspace)",
72
+ },
73
+ inject: {
74
+ type: "string",
75
+ description: "minimal (default, skip home persona + skill catalog) | subagent",
76
+ },
77
+ tools: {
78
+ type: "object",
79
+ description: "Weaken-only tool policy. {mode:'allow'|'deny', names:['bash','read']}.",
80
+ properties: {
81
+ mode: { type: "string" },
82
+ names: { type: "array", items: { type: "string" } },
83
+ },
84
+ additionalProperties: false,
85
+ },
86
+ },
87
+ additionalProperties: false,
88
+ },
89
+ presentCall: (args) => ({
90
+ card: "generic",
91
+ title: "team_save",
92
+ kind: "execute",
93
+ rawInput: args,
94
+ }),
95
+ execute: async (args) => {
96
+ const a = readArgs(args);
97
+ const captured = a.from_session === true
98
+ ? captureSessionPlaybook(runtime, sessionId)
99
+ : undefined;
100
+ const name = String(a.name ?? "").trim() || captured?.name || "";
101
+ const playbook = String(a.playbook ?? "").trim() || captured?.playbook || "";
102
+ const roleRaw = typeof a.role === "string" ? a.role : "worker";
103
+ const canvasId = ws();
104
+ const scope = parseRosterScope(a.scope);
105
+ const tools = parseMemberToolPolicy(a.tools);
106
+ const appearancePatch = {
107
+ ...(typeof a.shape === "string" ? { shape: a.shape } : {}),
108
+ ...(typeof a.color === "string" ? { color: a.color } : {}),
109
+ };
110
+ const member = runtime.agentRoster.upsertAtScope(canvasId, scope, {
111
+ name,
112
+ playbook,
113
+ role: isAgentTeamSpawnRole(roleRaw) ? roleRaw : "worker",
114
+ ...(Object.keys(appearancePatch).length > 0
115
+ ? {
116
+ appearance: parseMemberAppearance(appearancePatch, {
117
+ shape: "blob",
118
+ color: "cream",
119
+ }),
120
+ }
121
+ : {}),
122
+ ...(typeof a.brief === "string" ? { brief: a.brief } : {}),
123
+ ...(a.inject === "subagent" || a.inject === "minimal"
124
+ ? { inject: a.inject }
125
+ : {}),
126
+ ...(tools ? { tools } : {}),
127
+ ...(typeof a.id === "string" ? { id: a.id } : {}),
128
+ });
129
+ if (!member) {
130
+ return { content: "team_save: name and playbook required", isError: true };
131
+ }
132
+ return {
133
+ content: JSON.stringify({
134
+ workspaceId: scope === "global" ? "global" : canvasId,
135
+ member,
136
+ }),
137
+ };
138
+ },
139
+ });
140
+ }
141
+ //# sourceMappingURL=agent-roster-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-roster-tools.js","sourceRoot":"","sources":["../src/agent-roster-tools.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Spawn-time role templates for Agent Teams (Codex agent_type · Hermes leaf/orchestrator).
3
3
  * Graph `delegator|worker|observer` stays a UI label; these prefix the child prompt.
4
4
  */
5
+ import { type SessionEvent } from "@xrkseek/protocol";
5
6
  export type AgentTeamSpawnRole = "default" | "worker" | "researcher" | "reviewer" | "lead";
6
7
  export declare const AGENT_TEAM_SPAWN_ROLES: readonly AgentTeamSpawnRole[];
7
8
  export declare function isAgentTeamSpawnRole(value: unknown): value is AgentTeamSpawnRole;
@@ -9,5 +10,50 @@ export declare function isAgentTeamSpawnRole(value: unknown): value is AgentTeam
9
10
  export declare function parseAgentTeamSpawnRole(value: unknown): AgentTeamSpawnRole | undefined;
10
11
  /** Prepend the role reminder when non-empty. */
11
12
  export declare function applySpawnRoleReminder(prompt: string, role: AgentTeamSpawnRole | undefined): string;
13
+ export interface SubagentSpawnPreambleInput {
14
+ readonly prompt: string;
15
+ readonly parentSessionId: string;
16
+ readonly childSessionId: string;
17
+ readonly mode: "one-shot" | "continuable";
18
+ readonly label: string;
19
+ readonly role?: AgentTeamSpawnRole;
20
+ readonly inheritContext: boolean;
21
+ readonly cwd: string;
22
+ readonly isolatedWorktree: boolean;
23
+ /** Bounded root-evidence block (see {@link rootUserAuthorizationBlock}). */
24
+ readonly userAuthorization?: string;
25
+ /** Named 干员 this child was spawned as. */
26
+ readonly memberId?: string;
27
+ /** Inject thickness from the 干员 record. */
28
+ readonly inject?: "subagent" | "minimal";
29
+ }
30
+ /**
31
+ * Identity block every in-process child sees before the parent-written task.
32
+ * Covers parent/child session ids, mode, role, workspace cwd, and whether
33
+ * the parent transcript was seeded — so the child does not guess from AGENTS.md.
34
+ */
35
+ export declare function applySubagentSpawnPreamble(input: SubagentSpawnPreambleInput): string;
12
36
  export declare function listSpawnRoleIds(): readonly AgentTeamSpawnRole[];
37
+ /** Tools denied for one role (empty for default / lead). */
38
+ export declare function roleDeniedTools(role: AgentTeamSpawnRole | undefined): readonly string[];
39
+ /**
40
+ * The human's own recent asks from the parent conversation — the child's only
41
+ * view of what the user actually authorized.
42
+ *
43
+ * Codex does this in `control/user_authorization.rs` (bounded retained root
44
+ * evidence for workers, including after compaction). A child spawned with
45
+ * `inherit_context:false` otherwise sees only the parent's paraphrase of the
46
+ * request, which is how "the subagent did something the user never asked for"
47
+ * happens. These are evidence, not instructions: the parent's task text still
48
+ * wins on conflict.
49
+ *
50
+ * Only real human messages count (`isHumanUserMessageSource` filters out
51
+ * durable context injects such as the skill catalog), and only ones newer than
52
+ * a seeded fork (a forked child already carries them in its own transcript).
53
+ */
54
+ export declare function rootUserAuthorizationBlock(input: {
55
+ readonly parentEvents: readonly SessionEvent[];
56
+ /** Seed cut of a forked child: anything before it is already in its log. */
57
+ readonly sinceEventCount?: number;
58
+ }): string | undefined;
13
59
  //# sourceMappingURL=agent-team-roles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-team-roles.d.ts","sourceRoot":"","sources":["../src/agent-team-roles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,MAAM,CAAC;AAEX,eAAO,MAAM,sBAAsB,EAAE,SAAS,kBAAkB,EAM/D,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAQ7B;AAmCD,qFAAqF;AACrF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,kBAAkB,GAAG,SAAS,CAOhC;AAED,gDAAgD;AAChD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,kBAAkB,GAAG,SAAS,GACnC,MAAM,CAMR;AAED,wBAAgB,gBAAgB,IAAI,SAAS,kBAAkB,EAAE,CAEhE"}
1
+ {"version":3,"file":"agent-team-roles.d.ts","sourceRoot":"","sources":["../src/agent-team-roles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,MAAM,CAAC;AAEX,eAAO,MAAM,sBAAsB,EAAE,SAAS,kBAAkB,EAM/D,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,kBAAkB,CAQ7B;AA4FD,qFAAqF;AACrF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,kBAAkB,GAAG,SAAS,CAOhC;AAED,gDAAgD;AAChD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,kBAAkB,GAAG,SAAS,GACnC,MAAM,CAMR;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,0BAA0B,GAChC,MAAM,CAwCR;AAED,wBAAgB,gBAAgB,IAAI,SAAS,kBAAkB,EAAE,CAEhE;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAC7B,IAAI,EAAE,kBAAkB,GAAG,SAAS,GACnC,SAAS,MAAM,EAAE,CAGnB;AAOD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,GAAG,MAAM,GAAG,SAAS,CAwBrB"}
@@ -2,6 +2,7 @@
2
2
  * Spawn-time role templates for Agent Teams (Codex agent_type · Hermes leaf/orchestrator).
3
3
  * Graph `delegator|worker|observer` stays a UI label; these prefix the child prompt.
4
4
  */
5
+ import { flattenText, isHumanUserMessageSource, } from "@xrkseek/protocol";
5
6
  export const AGENT_TEAM_SPAWN_ROLES = [
6
7
  "default",
7
8
  "worker",
@@ -23,15 +24,65 @@ const TEMPLATES = {
23
24
  },
24
25
  worker: {
25
26
  id: "worker",
26
- reminder: "ROLE: worker. Execute the assigned task precisely. Prefer concrete edits and evidence over planning. Ask only when blocked.",
27
+ reminder: "ROLE: worker. Execute the assigned task precisely. Prefer concrete edits and evidence over planning. Ask only when blocked. " +
28
+ "You are not the only agent editing this codebase: stay inside the scope you were given and never revert another agent's or the user's changes.",
29
+ // A worker implements; spawning more subagents is the lead's job.
30
+ deniedTools: ["subagent", "ralph", "team_graph"],
27
31
  },
28
32
  researcher: {
29
33
  id: "researcher",
30
34
  reminder: "ROLE: researcher. Gather facts with read/search tools. Prefer citations (paths · symbols · quotes). Do not make durable edits unless the task explicitly requires them.",
35
+ // Read-only by construction: no edits, no shell, no delegation.
36
+ deniedTools: [
37
+ "apply_edit",
38
+ "apply_patch",
39
+ "write_file",
40
+ "bash",
41
+ "terminal_open",
42
+ "terminal_send",
43
+ "terminal_read",
44
+ "terminal_list",
45
+ "terminal_close",
46
+ "terminal_signal",
47
+ "subagent",
48
+ "ralph",
49
+ "team_graph",
50
+ "send_message",
51
+ "followup_task",
52
+ "interrupt_agent",
53
+ "wait_agent",
54
+ "list_agents",
55
+ "analytics",
56
+ ],
31
57
  },
32
58
  reviewer: {
33
59
  id: "reviewer",
34
60
  reminder: "ROLE: reviewer. Critique risks, regressions, and missing tests. Prefer findings with severity and file references. Do not implement fixes unless asked.",
61
+ // Review must never mutate: no writes, no shell, no network (offline
62
+ // evidence only), no delegation, no self-spawn.
63
+ deniedTools: [
64
+ "apply_edit",
65
+ "apply_patch",
66
+ "write_file",
67
+ "bash",
68
+ "terminal_open",
69
+ "terminal_send",
70
+ "terminal_read",
71
+ "terminal_list",
72
+ "terminal_close",
73
+ "terminal_signal",
74
+ "web_search",
75
+ "web_fetch",
76
+ "subagent",
77
+ "ralph",
78
+ "team_graph",
79
+ "send_message",
80
+ "followup_task",
81
+ "interrupt_agent",
82
+ "wait_agent",
83
+ "list_agents",
84
+ "analytics",
85
+ ],
35
86
  },
36
87
  lead: {
37
88
  id: "lead",
@@ -61,7 +112,105 @@ export function applySpawnRoleReminder(prompt, role) {
61
112
  const body = prompt.trim();
62
113
  return body ? `${reminder}\n\n${body}` : reminder;
63
114
  }
115
+ /**
116
+ * Identity block every in-process child sees before the parent-written task.
117
+ * Covers parent/child session ids, mode, role, workspace cwd, and whether
118
+ * the parent transcript was seeded — so the child does not guess from AGENTS.md.
119
+ */
120
+ export function applySubagentSpawnPreamble(input) {
121
+ const role = input.role && input.role !== "default" ? input.role : "default";
122
+ const modeLine = input.mode === "one-shot"
123
+ ? "one-shot (no later human follow-ups on this session)"
124
+ : "continuable (parent may send followup_task / send_message)";
125
+ const inheritLine = input.inheritContext
126
+ ? "yes — seeded completed parent turns only (the parent's open turn is not included)"
127
+ : "no — you cannot see the parent transcript. Do not invent parent state.";
128
+ const workspaceLine = input.isolatedWorktree
129
+ ? "isolated git worktree (not the parent's checkout). Follow the worktree note in the task."
130
+ : "same as the parent session. File tools and git run here.";
131
+ const header = [
132
+ "[subagent identity]",
133
+ `You are a delegated subagent of parent session \`${input.parentSessionId}\`. You are not that parent conversation.`,
134
+ `- parent_session_id: ${input.parentSessionId}`,
135
+ `- your_session_id: ${input.childSessionId}`,
136
+ `- mode: ${modeLine}`,
137
+ `- label: ${input.label.trim() || "subagent"}`,
138
+ `- role: ${role}`,
139
+ ...(input.memberId
140
+ ? [
141
+ `- member_id: ${input.memberId}`,
142
+ `- inject: ${input.inject === "subagent" ? "subagent" : "minimal"}`,
143
+ ]
144
+ : []),
145
+ `- inherit_context: ${inheritLine}`,
146
+ `- workspace_cwd: ${input.cwd}`,
147
+ `- workspace: ${workspaceLine}`,
148
+ "Delivery: your FINAL assistant message is the result handed back to the parent as a tool result — it is the only thing the parent sees from you.",
149
+ "The parent cannot see your hidden reasoning, intermediate tool output, or this conversation. Anything the parent needs must be in your final message.",
150
+ "Write that message as a standalone deliverable: lead with the answer or the findings, then the evidence (paths · symbols · quotes · commands). Do not ask the user questions and do not end with 'let me know if you need more'.",
151
+ "Do not treat repository AGENTS.md / .agents/AGENTS.md as your persona or as proof of who you are, and do not defer small tasks back to the parent — you were spawned to do this work, not to plan it.",
152
+ "Never spawn your own subagents unless the task explicitly requires it.",
153
+ ].join("\n");
154
+ const tasked = applySpawnRoleReminder(input.prompt, input.role);
155
+ const body = tasked.trim();
156
+ const authorization = input.userAuthorization?.trim();
157
+ const head = authorization ? `${header}\n\n${authorization}` : header;
158
+ return body ? `${head}\n\nTask:\n${body}` : head;
159
+ }
64
160
  export function listSpawnRoleIds() {
65
161
  return AGENT_TEAM_SPAWN_ROLES;
66
162
  }
163
+ /** Tools denied for one role (empty for default / lead). */
164
+ export function roleDeniedTools(role) {
165
+ if (!role || role === "default" || role === "lead")
166
+ return [];
167
+ return TEMPLATES[role].deniedTools ?? [];
168
+ }
169
+ /** Bounded root-evidence ceiling (mirrors Codex `MAX_ROOT_MESSAGES`). */
170
+ const MAX_USER_AUTHORIZATION_MESSAGES = 4;
171
+ /** Per-message text cap, so one long paste cannot crowd out the rest. */
172
+ const MAX_USER_AUTHORIZATION_CHARS = 600;
173
+ /**
174
+ * The human's own recent asks from the parent conversation — the child's only
175
+ * view of what the user actually authorized.
176
+ *
177
+ * Codex does this in `control/user_authorization.rs` (bounded retained root
178
+ * evidence for workers, including after compaction). A child spawned with
179
+ * `inherit_context:false` otherwise sees only the parent's paraphrase of the
180
+ * request, which is how "the subagent did something the user never asked for"
181
+ * happens. These are evidence, not instructions: the parent's task text still
182
+ * wins on conflict.
183
+ *
184
+ * Only real human messages count (`isHumanUserMessageSource` filters out
185
+ * durable context injects such as the skill catalog), and only ones newer than
186
+ * a seeded fork (a forked child already carries them in its own transcript).
187
+ */
188
+ export function rootUserAuthorizationBlock(input) {
189
+ const since = input.sinceEventCount ?? 0;
190
+ const out = [];
191
+ for (let i = input.parentEvents.length - 1; i >= since; i -= 1) {
192
+ const ev = input.parentEvents[i];
193
+ if (ev.type !== "user/message")
194
+ continue;
195
+ if (!isHumanUserMessageSource(ev.source))
196
+ continue;
197
+ const text = flattenText(ev.content).trim();
198
+ if (!text)
199
+ continue;
200
+ out.push(text.length > MAX_USER_AUTHORIZATION_CHARS
201
+ ? `${text.slice(0, MAX_USER_AUTHORIZATION_CHARS)}…`
202
+ : text);
203
+ if (out.length >= MAX_USER_AUTHORIZATION_MESSAGES)
204
+ break;
205
+ }
206
+ if (out.length === 0)
207
+ return undefined;
208
+ // Oldest first so the chronology reads naturally.
209
+ out.reverse();
210
+ return [
211
+ "[what the user asked for]",
212
+ "Recent messages from the human in the parent conversation, oldest first. Evidence of what was authorized — the task below still wins on conflict. Do not invent requests beyond these.",
213
+ ...out.map((text) => `- ${text.replace(/\n+/g, " ")}`),
214
+ ].join("\n");
215
+ }
67
216
  //# sourceMappingURL=agent-team-roles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-team-roles.js","sourceRoot":"","sources":["../src/agent-team-roles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,CAAC,MAAM,sBAAsB,GAAkC;IACnE,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,MAAM;CACP,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,KAAc;IAEd,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,MAAM,CACjB,CAAC;AACJ,CAAC;AAQD,MAAM,SAAS,GAAuD;IACpE,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,QAAQ,EAAE,EAAE;KACb;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,QAAQ,EACN,6HAA6H;KAChI;IACD,UAAU,EAAE;QACV,EAAE,EAAE,YAAY;QAChB,QAAQ,EACN,yKAAyK;KAC5K;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,QAAQ,EACN,yJAAyJ;KAC5J;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM;QACV,QAAQ,EACN,8JAA8J;KACjK;CACF,CAAC;AAEF,qFAAqF;AACrF,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3D,IAAI,oBAAoB,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,IAAoC;IAEpC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"agent-team-roles.js","sourceRoot":"","sources":["../src/agent-team-roles.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,11 @@ export declare class AgentTeamTaskBoard {
40
40
  /** Bind a child session after create (when id was known before spawn). */
41
41
  bindChild(taskId: string, childSessionId: string, now?: number): AgentTeamTask | undefined;
42
42
  findByChild(childSessionId: string): AgentTeamTask | undefined;
43
+ /**
44
+ * Forget the card bound to one child (a spawn that failed after `open`).
45
+ * Without this a dead child leaves an `in_progress` card on the board.
46
+ */
47
+ forgetByChild(childSessionId: string): boolean;
43
48
  /** Attach managed worktree lease fields to a Teams task. */
44
49
  bindWorktree(taskId: string, worktree: {
45
50
  readonly path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-team-tasks.d.ts","sourceRoot":"","sources":["../src/agent-team-tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-team-tasks.d.ts","sourceRoot":"","sources":["../src/agent-team-tasks.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,17 @@ export class AgentTeamTaskBoard {
33
33
  const id = (input.taskId?.trim() || newTaskId()).slice(0, 80);
34
34
  const existing = this.tasks.get(id);
35
35
  if (existing) {
36
+ const boundChild = existing.childSessionId;
37
+ const incomingChild = input.childSessionId?.trim();
38
+ if (boundChild &&
39
+ incomingChild &&
40
+ boundChild !== incomingChild) {
41
+ // A caller-supplied `task_id` that already belongs to another child:
42
+ // silently rebinding would hand the old child's later idle notice to
43
+ // the new one (`completeByChild` keys on childSessionId). Refuse and
44
+ // tell the caller to mint a fresh id instead.
45
+ throw new Error(`task_id ${id} is already bound to child ${boundChild}; use a different task_id for a new child`);
46
+ }
36
47
  const next = {
37
48
  ...existing,
38
49
  title: input.title.trim() || existing.title,
@@ -91,6 +102,19 @@ export class AgentTeamTaskBoard {
91
102
  }
92
103
  return undefined;
93
104
  }
105
+ /**
106
+ * Forget the card bound to one child (a spawn that failed after `open`).
107
+ * Without this a dead child leaves an `in_progress` card on the board.
108
+ */
109
+ forgetByChild(childSessionId) {
110
+ const task = this.findByChild(childSessionId);
111
+ if (!task)
112
+ return false;
113
+ this.tasks.delete(task.id);
114
+ this.schemas.delete(task.id);
115
+ this.save();
116
+ return true;
117
+ }
94
118
  /** Attach managed worktree lease fields to a Teams task. */
95
119
  bindWorktree(taskId, worktree, now = Date.now()) {
96
120
  const prev = this.tasks.get(taskId.trim());
@@ -1 +1 @@
1
- {"version":3,"file":"agent-team-tasks.js","sourceRoot":"","sources":["../src/agent-team-tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-team-tasks.js","sourceRoot":"","sources":["../src/agent-team-tasks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAmCxD,SAAS,SAAS;IAChB,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,OAAO,kBAAkB;IACZ,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,6DAA6D;IAC5C,OAAO,GAAG,IAAI,GAAG,EAA6C,CAAC;IAC/D,WAAW,CAAqB;IAEjD,YAAY,WAAoB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,WAAW;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,eAAuB;QAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,MAAM,CAAC;aAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,kEAAkE;IAClE,IAAI,CAAC,KAOJ;QACC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC;YAC3C,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;YACnD,IACE,UAAU;gBACV,aAAa;gBACb,UAAU,KAAK,aAAa,EAC5B,CAAC;gBACD,qEAAqE;gBACrE,qEAAqE;gBACrE,qEAAqE;gBACrE,8CAA8C;gBAC9C,MAAM,IAAI,KAAK,CACb,WAAW,EAAE,8BAA8B,UAAU,2CAA2C,CACjG,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAkB;gBAC1B,GAAG,QAAQ;gBACX,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,KAAK;gBAC3C,MAAM,EAAE,aAAa;gBACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,CAAC;gBAC/B,SAAS,EAAE,GAAG;gBACd,GAAG,CAAC,KAAK,CAAC,cAAc;oBACtB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,UAAU,EAAE,KAAK;aAClB,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAkB;YAC1B,EAAE;YACF,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE;YAC7C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;YAC/B,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YACxD,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,GAAG,CAAC,KAAK,CAAC,cAAc;gBACtB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0EAA0E;IAC1E,SAAS,CAAC,MAAc,EAAE,cAAsB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,IAAI,GAAkB;YAC1B,GAAG,IAAI;YACP,cAAc;YACd,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;YAC/D,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC3B,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,KAAK;SAClB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,cAAsB;QAChC,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,cAAc,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC9C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,cAAsB;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,YAAY,CACV,MAAc,EACd,QAIC,EACD,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,IAAI,GAAkB;YAC1B,GAAG,IAAI;YACP,YAAY,EAAE,QAAQ,CAAC,IAAI;YAC3B,cAAc,EAAE,QAAQ,CAAC,MAAM;YAC/B,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC3B,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IACpE,eAAe,CACb,MAAc,EACd,MAAyC;QAEzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,oBAAoB,CAClB,cAAsB;QAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,cAAsB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,IAAI,GAAkB;YAC1B,GAAG,IAAI;YACP,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC3B,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,WAAW,CAAC,cAAsB,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa;YAAE,OAAO,IAAI,CAAC;QACnE,MAAM,IAAI,GAAkB;YAC1B,GAAG,IAAI;YACP,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC3B,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CACN,MAAc,EACd,KAMC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,GAAkB;YAC1B,GAAG,IAAI;YACP,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC3B,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,KAAK;YACjB,GAAG,CAAC,OAAO;gBACT,CAAC,CAAC;oBACE,aAAa,EACX,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO;iBAC/D;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBACrD,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAClD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IACpE,eAAe,CACb,cAAsB,EACtB,KAMC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAEO,IAAI;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAiB,CAAC;YACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAO;YACtC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,SAAS;gBAC9C,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3D,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,QAAQ;oBAAE,SAAS;gBACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAEO,IAAI;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,mBAAmB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAChC,mBAA4B;IAE5B,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { FaceRuntime } from "./context.js";
2
+ export declare function captureSessionPlaybook(runtime: FaceRuntime, sessionId: string): {
3
+ name: string;
4
+ playbook: string;
5
+ } | undefined;
6
+ //# sourceMappingURL=capture-member-playbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-member-playbook.d.ts","sourceRoot":"","sources":["../src/capture-member-playbook.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAehD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAqBhD"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Capture a reusable 干员 playbook from a session log.
3
+ */
4
+ import { readSessionEvents } from "@xrkseek/core-session";
5
+ import { flattenText } from "@xrkseek/protocol";
6
+ import { lastAssistantBodyText } from "./adapt/subagent-notice.js";
7
+ import { MEMBER_NAME_MAX, MEMBER_PLAYBOOK_MAX } from "./agent-roster-store.js";
8
+ function lastUserTexts(events, limit = 3) {
9
+ const out = [];
10
+ for (let i = events.length - 1; i >= 0 && out.length < limit; i -= 1) {
11
+ const ev = events[i];
12
+ if (ev.type !== "user/message")
13
+ continue;
14
+ const text = flattenText(ev.content).trim();
15
+ if (text)
16
+ out.unshift(text);
17
+ }
18
+ return out;
19
+ }
20
+ export function captureSessionPlaybook(runtime, sessionId) {
21
+ const events = readSessionEvents(runtime.store, sessionId);
22
+ const users = lastUserTexts(events);
23
+ if (users.length === 0)
24
+ return undefined;
25
+ const goal = users[0].replace(/\s+/g, " ").trim();
26
+ const name = goal.slice(0, MEMBER_NAME_MAX) || "会话干员";
27
+ const assistant = lastAssistantBodyText(events).slice(0, 2_400);
28
+ const playbook = [
29
+ "You are a reusable workspace 干员 captured from a finished session.",
30
+ "Follow this workflow for the next TASK without rediscovering the process.",
31
+ "",
32
+ "GOAL (from the human):",
33
+ users.join("\n---\n"),
34
+ "",
35
+ ...(assistant
36
+ ? ["HOW YOU WORKED (evidence, truncated):", assistant]
37
+ : ["HOW YOU WORKED: not yet written; infer from GOAL and the TASK."]),
38
+ ]
39
+ .join("\n")
40
+ .slice(0, MEMBER_PLAYBOOK_MAX);
41
+ return { name, playbook };
42
+ }
43
+ //# sourceMappingURL=capture-member-playbook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture-member-playbook.js","sourceRoot":"","sources":["../src/capture-member-playbook.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE/E,SAAS,aAAa,CAAC,MAA+B,EAAE,KAAK,GAAG,CAAC;IAC/D,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACtB,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc;YAAE,SAAS;QACzC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,SAAiB;IAEjB,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC;IACtD,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG;QACf,mEAAmE;QACnE,2EAA2E;QAC3E,EAAE;QACF,wBAAwB;QACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QACrB,EAAE;QACF,GAAG,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,uCAAuC,EAAE,SAAS,CAAC;YACtD,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC;KACxE;SACE,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -47,6 +47,12 @@ export interface FaceDrain {
47
47
  /** Wait until the session drain settles (Host hub.run). */
48
48
  run?(sessionId: string): Promise<void>;
49
49
  }
50
+ /** Client echo waiting to stamp the next human `user/message`. */
51
+ export interface FacePendingUserEcho {
52
+ readonly rpc: string;
53
+ /** True when the matching admit used `delivery: "steer"`. */
54
+ readonly steer: boolean;
55
+ }
50
56
  export interface FaceRuntime {
51
57
  /** Durable image blobs; omit → image prompt / session.attachment unavailable. */
52
58
  readonly attachments?: AttachmentStore;
@@ -91,11 +97,11 @@ export interface FaceRuntime {
91
97
  /** admitId → rpcId (reverse for queue / stamp) */
92
98
  readonly admitRpcMap: Map<string, string>;
93
99
  /**
94
- * FIFO of client echo rpcIds awaiting the next human `user/message` stamp.
95
- * Promote pushes; human stamp shifts. A single slot was racy when a second
96
- * prompt landed between promote and the human row (async inject await).
100
+ * FIFO of client echo ids awaiting the next human `user/message` stamp.
101
+ * Consecutive steers drain onto one coalesced row (`rpcId` + `rpcIds`);
102
+ * queue items stay one-to-one with later human rows.
97
103
  */
98
- readonly pendingUserRpc: Map<string, string[]>;
104
+ readonly pendingUserRpc: Map<string, FacePendingUserEcho[]>;
99
105
  readonly sessionModels: Map<string, {
100
106
  provider: string;
101
107
  model: string;
@@ -138,6 +144,10 @@ export interface FaceRuntime {
138
144
  readonly goals: FaceGoalStore;
139
145
  /** Workspace-scoped Canvas documents (`{XRK_HOME}/canvases/<workspaceId>/`). */
140
146
  readonly canvases: FaceCanvasStore;
147
+ /** Workspace 主线 catalog + per-session 支线. */
148
+ readonly sessionThreads: import("./session-thread-store.js").FaceSessionThreadStore;
149
+ /** Workspace Agent Team 干员 roster. */
150
+ readonly agentRoster: import("./agent-roster-store.js").FaceAgentRosterStore;
141
151
  /** Per-session Overview emotion-ball sticky state (`presence_set`). */
142
152
  readonly presence: FacePresenceStore;
143
153
  /** Session-scoped turn/step numbers for DSH wire events. */
@@ -294,6 +304,13 @@ export interface FaceRuntime {
294
304
  publishJobs(sessionId: string, opts?: {
295
305
  baseline?: boolean;
296
306
  }): void;
307
+ /**
308
+ * Stop / cancel published `running:false` while the drain latch may still
309
+ * be joining. Status `delivery.turnActive` follows this bit so Overview
310
+ * presence matches the session list; compact still keys off `drain.isActive`.
311
+ */
312
+ markTurnUiIdle(sessionId: string): void;
313
+ isTurnUiIdle(sessionId: string): boolean;
297
314
  /**
298
315
  * Copy parent log into a new session without inventing title/fallback rows
299
316
  * (replay path).