@xingular/harness 2.0.0 → 2.0.1-unstable

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 (1095) hide show
  1. package/CHANGELOG.md +635 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE.md +50 -0
  4. package/README.md +241 -90
  5. package/THIRD_PARTY_LICENSES.md +942 -0
  6. package/browser-extension/README.md +32 -0
  7. package/browser-extension/background.js +612 -0
  8. package/browser-extension/manifest.json +16 -0
  9. package/browser-extension/overlay.js +97 -0
  10. package/browser-extension/popup.css +19 -0
  11. package/browser-extension/popup.html +30 -0
  12. package/browser-extension/popup.js +101 -0
  13. package/browser-extension/site-access.js +63 -0
  14. package/builtin/skills/plugin-authoring/SKILL.md +53 -0
  15. package/dist/cli.js +32851 -17155
  16. package/dist/sdk/accounts/accounts.d.ts +195 -0
  17. package/dist/sdk/accounts/accounts.js +821 -0
  18. package/dist/sdk/accounts/choices.d.ts +41 -0
  19. package/dist/sdk/accounts/choices.js +89 -0
  20. package/dist/sdk/accounts/env.d.ts +78 -0
  21. package/dist/sdk/accounts/env.js +294 -0
  22. package/dist/sdk/accounts/secrets.d.ts +28 -0
  23. package/dist/sdk/accounts/secrets.js +147 -0
  24. package/dist/sdk/accounts/store.d.ts +139 -0
  25. package/dist/sdk/accounts/store.js +255 -0
  26. package/dist/sdk/agents/builtin.d.ts +2 -0
  27. package/dist/sdk/agents/builtin.js +50 -0
  28. package/dist/sdk/agents/narrow.d.ts +13 -0
  29. package/dist/sdk/agents/narrow.js +29 -0
  30. package/dist/sdk/agents/planResearch.d.ts +27 -0
  31. package/dist/sdk/agents/planResearch.js +82 -0
  32. package/dist/sdk/agents/profiles.d.ts +93 -0
  33. package/dist/sdk/agents/profiles.js +289 -0
  34. package/dist/sdk/annotations/bridge.d.ts +44 -0
  35. package/dist/sdk/annotations/bridge.js +268 -0
  36. package/dist/sdk/annotations/capture.d.ts +158 -0
  37. package/dist/sdk/annotations/capture.js +409 -0
  38. package/dist/sdk/annotations/delivery.d.ts +79 -0
  39. package/dist/sdk/annotations/delivery.js +163 -0
  40. package/dist/sdk/annotations/inspect.d.ts +10 -0
  41. package/dist/sdk/annotations/inspect.js +34 -0
  42. package/dist/sdk/annotations/isolated.d.ts +6 -0
  43. package/dist/sdk/annotations/isolated.js +51 -0
  44. package/dist/sdk/annotations/pageScript.d.ts +28 -0
  45. package/dist/sdk/annotations/pageScript.js +871 -0
  46. package/dist/sdk/annotations/part.d.ts +8 -0
  47. package/dist/sdk/annotations/part.js +126 -0
  48. package/dist/sdk/annotations/queue.d.ts +4 -0
  49. package/dist/sdk/annotations/queue.js +45 -0
  50. package/dist/sdk/annotations/serverMethods.d.ts +3 -0
  51. package/dist/sdk/annotations/serverMethods.js +66 -0
  52. package/dist/sdk/annotations/store.d.ts +159 -0
  53. package/dist/sdk/annotations/store.js +404 -0
  54. package/dist/sdk/browser/backend.d.ts +16 -0
  55. package/dist/sdk/browser/backend.js +17 -0
  56. package/dist/sdk/browser/config.d.ts +19 -0
  57. package/dist/sdk/browser/config.js +23 -0
  58. package/dist/sdk/browser/contracts.d.ts +19 -0
  59. package/dist/sdk/browser/contracts.js +116 -0
  60. package/dist/sdk/browser/diagnostics.d.ts +4 -0
  61. package/dist/sdk/browser/diagnostics.js +38 -0
  62. package/dist/sdk/browser/extension/bridge.d.ts +55 -0
  63. package/dist/sdk/browser/extension/bridge.js +336 -0
  64. package/dist/sdk/browser/extension/session.d.ts +50 -0
  65. package/dist/sdk/browser/extension/session.js +321 -0
  66. package/dist/sdk/browser/index.d.ts +33 -0
  67. package/dist/sdk/browser/index.js +105 -0
  68. package/dist/sdk/browser/network.d.ts +10 -0
  69. package/dist/sdk/browser/network.js +59 -0
  70. package/dist/sdk/browser/serverMethods.d.ts +3 -0
  71. package/dist/sdk/browser/serverMethods.js +10 -0
  72. package/dist/sdk/browser/session.d.ts +85 -0
  73. package/dist/sdk/browser/session.js +228 -0
  74. package/dist/sdk/browser/tools.d.ts +102 -0
  75. package/dist/sdk/browser/tools.js +257 -0
  76. package/dist/sdk/capabilities/api.d.ts +22 -0
  77. package/dist/sdk/capabilities/api.js +54 -0
  78. package/dist/sdk/capabilities/runSnapshot.d.ts +18 -0
  79. package/dist/sdk/capabilities/runSnapshot.js +53 -0
  80. package/dist/sdk/capabilities/types.d.ts +29 -0
  81. package/dist/sdk/capabilities/types.js +1 -0
  82. package/dist/sdk/cli.d.ts +2 -0
  83. package/dist/sdk/cli.js +172 -0
  84. package/dist/sdk/commands/extensionOwners.d.ts +4 -0
  85. package/dist/sdk/commands/extensionOwners.js +17 -0
  86. package/dist/sdk/commands/list.d.ts +3 -0
  87. package/dist/sdk/commands/list.js +90 -0
  88. package/dist/sdk/commands/promptLoader.d.ts +5 -0
  89. package/dist/sdk/commands/promptLoader.js +76 -0
  90. package/dist/sdk/commands/promptRoutes.d.ts +13 -0
  91. package/dist/sdk/commands/promptRoutes.js +46 -0
  92. package/dist/sdk/commands/registry.d.ts +299 -0
  93. package/dist/sdk/commands/registry.js +54 -0
  94. package/dist/sdk/commands/routes.d.ts +16 -0
  95. package/dist/sdk/commands/routes.js +33 -0
  96. package/dist/sdk/commands/runtimeRouter.d.ts +4 -0
  97. package/dist/sdk/commands/runtimeRouter.js +48 -0
  98. package/dist/sdk/computer/boundary.d.ts +40 -0
  99. package/dist/sdk/computer/boundary.js +79 -0
  100. package/dist/sdk/computer/contracts.d.ts +127 -0
  101. package/dist/sdk/computer/contracts.js +13 -0
  102. package/dist/sdk/computer/control.d.ts +34 -0
  103. package/dist/sdk/computer/control.js +112 -0
  104. package/dist/sdk/computer/screenshot.d.ts +32 -0
  105. package/dist/sdk/computer/screenshot.js +35 -0
  106. package/dist/sdk/computer/terminalCapture.d.ts +26 -0
  107. package/dist/sdk/computer/terminalCapture.js +64 -0
  108. package/dist/sdk/computer/volatileImages.d.ts +9 -0
  109. package/dist/sdk/computer/volatileImages.js +50 -0
  110. package/dist/sdk/context/attribution.d.ts +18 -0
  111. package/dist/sdk/context/attribution.js +295 -0
  112. package/dist/sdk/context/runDetails.d.ts +16 -0
  113. package/dist/sdk/context/runDetails.js +22 -0
  114. package/dist/sdk/context/types.d.ts +94 -0
  115. package/dist/sdk/context/types.js +10 -0
  116. package/dist/sdk/core/bus.d.ts +23 -0
  117. package/dist/sdk/core/bus.js +76 -0
  118. package/dist/sdk/core/caller.d.ts +22 -0
  119. package/dist/sdk/core/caller.js +16 -0
  120. package/dist/sdk/core/changes.d.ts +15 -0
  121. package/dist/sdk/core/changes.js +15 -0
  122. package/dist/sdk/core/commandBudget.d.ts +23 -0
  123. package/dist/sdk/core/commandBudget.js +62 -0
  124. package/dist/sdk/core/effort.d.ts +2 -0
  125. package/dist/sdk/core/effort.js +1 -0
  126. package/dist/sdk/core/env.d.ts +18 -0
  127. package/dist/sdk/core/env.js +8 -0
  128. package/dist/sdk/core/errors.d.ts +15 -0
  129. package/dist/sdk/core/errors.js +24 -0
  130. package/dist/sdk/core/frontmatter.d.ts +12 -0
  131. package/dist/sdk/core/frontmatter.js +50 -0
  132. package/dist/sdk/core/fs.d.ts +18 -0
  133. package/dist/sdk/core/fs.js +106 -0
  134. package/dist/sdk/core/index.d.ts +24 -0
  135. package/dist/sdk/core/index.js +203 -0
  136. package/dist/sdk/core/interactiveProfile.d.ts +46 -0
  137. package/dist/sdk/core/interactiveProfile.js +143 -0
  138. package/dist/sdk/core/links.d.ts +51 -0
  139. package/dist/sdk/core/links.js +155 -0
  140. package/dist/sdk/core/path.d.ts +7 -0
  141. package/dist/sdk/core/path.js +79 -0
  142. package/dist/sdk/core/projects.d.ts +18 -0
  143. package/dist/sdk/core/projects.js +67 -0
  144. package/dist/sdk/core/secrets.d.ts +2 -0
  145. package/dist/sdk/core/secrets.js +5 -0
  146. package/dist/sdk/core/shell.d.ts +20 -0
  147. package/dist/sdk/core/shell.js +73 -0
  148. package/dist/sdk/core/text.d.ts +7 -0
  149. package/dist/sdk/core/text.js +40 -0
  150. package/dist/sdk/core/workspace.d.ts +13 -0
  151. package/dist/sdk/core/workspace.js +88 -0
  152. package/dist/sdk/core/workspaceBashTool.d.ts +20 -0
  153. package/dist/sdk/core/workspaceBashTool.js +50 -0
  154. package/dist/sdk/core/workspaceSandbox.d.ts +41 -0
  155. package/dist/sdk/core/workspaceSandbox.js +360 -0
  156. package/dist/sdk/core/workspaceWriteOperations.d.ts +57 -0
  157. package/dist/sdk/core/workspaceWriteOperations.js +245 -0
  158. package/dist/sdk/doctor/checks.d.ts +5 -0
  159. package/dist/sdk/doctor/checks.js +270 -0
  160. package/dist/sdk/doctor/probe.d.ts +4 -0
  161. package/dist/sdk/doctor/probe.js +94 -0
  162. package/dist/sdk/doctor/serverMethods.d.ts +3 -0
  163. package/dist/sdk/doctor/serverMethods.js +8 -0
  164. package/dist/sdk/doctor/service.d.ts +23 -0
  165. package/dist/sdk/doctor/service.js +144 -0
  166. package/dist/sdk/doctor/types.d.ts +141 -0
  167. package/dist/sdk/doctor/types.js +29 -0
  168. package/dist/sdk/harness.d.ts +172 -0
  169. package/dist/sdk/harness.js +387 -0
  170. package/dist/sdk/history/lessonPrompt.d.ts +2 -0
  171. package/dist/sdk/history/lessonPrompt.js +15 -0
  172. package/dist/sdk/history/lessons.d.ts +52 -0
  173. package/dist/sdk/history/lessons.js +173 -0
  174. package/dist/sdk/history/recall.d.ts +68 -0
  175. package/dist/sdk/history/recall.js +199 -0
  176. package/dist/sdk/history/serverMethods.d.ts +3 -0
  177. package/dist/sdk/history/serverMethods.js +8 -0
  178. package/dist/sdk/history/trajectory.d.ts +7 -0
  179. package/dist/sdk/history/trajectory.js +218 -0
  180. package/dist/sdk/hub/catalog.json +123 -0
  181. package/dist/sdk/hub/cli.d.ts +7 -0
  182. package/dist/sdk/hub/cli.js +81 -0
  183. package/dist/sdk/hub/hub.d.ts +74 -0
  184. package/dist/sdk/hub/hub.js +476 -0
  185. package/dist/sdk/hub/schema.d.ts +280 -0
  186. package/dist/sdk/hub/schema.js +78 -0
  187. package/dist/sdk/hub/serverMethods.d.ts +3 -0
  188. package/dist/sdk/hub/serverMethods.js +11 -0
  189. package/dist/sdk/index.d.ts +80 -0
  190. package/dist/sdk/index.js +60 -0
  191. package/dist/sdk/mcp/connections.d.ts +83 -0
  192. package/dist/sdk/mcp/connections.js +676 -0
  193. package/dist/sdk/mcp/manager.d.ts +26 -0
  194. package/dist/sdk/mcp/manager.js +124 -0
  195. package/dist/sdk/mcp/oauth.d.ts +35 -0
  196. package/dist/sdk/mcp/oauth.js +171 -0
  197. package/dist/sdk/mcp/scopeMigration.d.ts +19 -0
  198. package/dist/sdk/mcp/scopeMigration.js +198 -0
  199. package/dist/sdk/mcp/serverMethods.d.ts +3 -0
  200. package/dist/sdk/mcp/serverMethods.js +22 -0
  201. package/dist/sdk/mcp/service.d.ts +160 -0
  202. package/dist/sdk/mcp/service.js +510 -0
  203. package/dist/sdk/mcp/types.d.ts +131 -0
  204. package/dist/sdk/mcp/types.js +49 -0
  205. package/dist/sdk/pi/retryPolicy.d.ts +19 -0
  206. package/dist/sdk/pi/retryPolicy.js +11 -0
  207. package/dist/sdk/pi/runtime.d.ts +14 -0
  208. package/dist/sdk/pi/runtime.js +31 -0
  209. package/dist/sdk/plugins/api.d.ts +66 -0
  210. package/dist/sdk/plugins/api.js +155 -0
  211. package/dist/sdk/plugins/attachments.d.ts +46 -0
  212. package/dist/sdk/plugins/attachments.js +111 -0
  213. package/dist/sdk/plugins/builtin.d.ts +7 -0
  214. package/dist/sdk/plugins/builtin.js +182 -0
  215. package/dist/sdk/plugins/builtinRegistry.d.ts +62 -0
  216. package/dist/sdk/plugins/builtinRegistry.js +77 -0
  217. package/dist/sdk/plugins/catalogue.d.ts +29 -0
  218. package/dist/sdk/plugins/catalogue.js +197 -0
  219. package/dist/sdk/plugins/cli.d.ts +13 -0
  220. package/dist/sdk/plugins/cli.js +188 -0
  221. package/dist/sdk/plugins/commandPrefix.d.ts +8 -0
  222. package/dist/sdk/plugins/commandPrefix.js +21 -0
  223. package/dist/sdk/plugins/discover.d.ts +48 -0
  224. package/dist/sdk/plugins/discover.js +230 -0
  225. package/dist/sdk/plugins/firstParty.d.ts +50 -0
  226. package/dist/sdk/plugins/firstParty.js +119 -0
  227. package/dist/sdk/plugins/hooks.d.ts +94 -0
  228. package/dist/sdk/plugins/hooks.js +162 -0
  229. package/dist/sdk/plugins/identity.d.ts +19 -0
  230. package/dist/sdk/plugins/identity.js +48 -0
  231. package/dist/sdk/plugins/install.d.ts +24 -0
  232. package/dist/sdk/plugins/install.js +160 -0
  233. package/dist/sdk/plugins/inventory.d.ts +22 -0
  234. package/dist/sdk/plugins/inventory.js +111 -0
  235. package/dist/sdk/plugins/manifest.d.ts +21 -0
  236. package/dist/sdk/plugins/manifest.js +94 -0
  237. package/dist/sdk/plugins/plugins.d.ts +106 -0
  238. package/dist/sdk/plugins/plugins.js +165 -0
  239. package/dist/sdk/plugins/proposals.d.ts +17 -0
  240. package/dist/sdk/plugins/proposals.js +147 -0
  241. package/dist/sdk/plugins/runtime.d.ts +9 -0
  242. package/dist/sdk/plugins/runtime.js +95 -0
  243. package/dist/sdk/plugins/surfaces.d.ts +5 -0
  244. package/dist/sdk/plugins/surfaces.js +11 -0
  245. package/dist/sdk/plugins/trust.d.ts +44 -0
  246. package/dist/sdk/plugins/trust.js +120 -0
  247. package/dist/sdk/plugins/types.d.ts +174 -0
  248. package/dist/sdk/plugins/types.js +7 -0
  249. package/dist/sdk/prompt/compile.d.ts +245 -0
  250. package/dist/sdk/prompt/compile.js +535 -0
  251. package/dist/sdk/prompt/reporting.d.ts +2 -0
  252. package/dist/sdk/prompt/reporting.js +94 -0
  253. package/dist/sdk/prompt/standard.d.ts +32 -0
  254. package/dist/sdk/prompt/standard.js +76 -0
  255. package/dist/sdk/refine/cli.d.ts +4 -0
  256. package/dist/sdk/refine/cli.js +186 -0
  257. package/dist/sdk/refine/demo.d.ts +21 -0
  258. package/dist/sdk/refine/demo.js +114 -0
  259. package/dist/sdk/refine/evidence.d.ts +55 -0
  260. package/dist/sdk/refine/evidence.js +330 -0
  261. package/dist/sdk/refine/host.d.ts +59 -0
  262. package/dist/sdk/refine/host.js +105 -0
  263. package/dist/sdk/refine/ledger.d.ts +48 -0
  264. package/dist/sdk/refine/ledger.js +76 -0
  265. package/dist/sdk/refine/library.d.ts +55 -0
  266. package/dist/sdk/refine/library.js +177 -0
  267. package/dist/sdk/refine/pi.d.ts +72 -0
  268. package/dist/sdk/refine/pi.js +248 -0
  269. package/dist/sdk/refine/prompts.d.ts +60 -0
  270. package/dist/sdk/refine/prompts.js +434 -0
  271. package/dist/sdk/refine/recursion.d.ts +113 -0
  272. package/dist/sdk/refine/recursion.js +258 -0
  273. package/dist/sdk/refine/runner.d.ts +83 -0
  274. package/dist/sdk/refine/runner.js +151 -0
  275. package/dist/sdk/refine/selection.d.ts +57 -0
  276. package/dist/sdk/refine/selection.js +251 -0
  277. package/dist/sdk/refine/serverMethods.d.ts +3 -0
  278. package/dist/sdk/refine/serverMethods.js +23 -0
  279. package/dist/sdk/refine/service.d.ts +115 -0
  280. package/dist/sdk/refine/service.js +280 -0
  281. package/dist/sdk/refine/suite.d.ts +67 -0
  282. package/dist/sdk/refine/suite.js +174 -0
  283. package/dist/sdk/refine/trajectory.d.ts +9 -0
  284. package/dist/sdk/refine/trajectory.js +73 -0
  285. package/dist/sdk/refine/types.d.ts +93 -0
  286. package/dist/sdk/refine/types.js +10 -0
  287. package/dist/sdk/remote/addresses.d.ts +19 -0
  288. package/dist/sdk/remote/addresses.js +52 -0
  289. package/dist/sdk/remote/pairing.d.ts +59 -0
  290. package/dist/sdk/remote/pairing.js +160 -0
  291. package/dist/sdk/remote/seal.d.ts +28 -0
  292. package/dist/sdk/remote/seal.js +84 -0
  293. package/dist/sdk/remote/server.d.ts +28 -0
  294. package/dist/sdk/remote/server.js +158 -0
  295. package/dist/sdk/remote/service.d.ts +125 -0
  296. package/dist/sdk/remote/service.js +330 -0
  297. package/dist/sdk/remote/webClient.d.ts +4 -0
  298. package/dist/sdk/remote/webClient.js +452 -0
  299. package/dist/sdk/server/methods.d.ts +3 -0
  300. package/dist/sdk/server/methods.js +365 -0
  301. package/dist/sdk/server/params.d.ts +4 -0
  302. package/dist/sdk/server/params.js +11 -0
  303. package/dist/sdk/server/remote.d.ts +19 -0
  304. package/dist/sdk/server/remote.js +109 -0
  305. package/dist/sdk/server/rpc.d.ts +20 -0
  306. package/dist/sdk/server/rpc.js +102 -0
  307. package/dist/sdk/server/serve.d.ts +13 -0
  308. package/dist/sdk/server/serve.js +25 -0
  309. package/dist/sdk/server/socket.d.ts +28 -0
  310. package/dist/sdk/server/socket.js +122 -0
  311. package/dist/sdk/sessions/approvals.d.ts +47 -0
  312. package/dist/sdk/sessions/approvals.js +119 -0
  313. package/dist/sdk/sessions/checkpoint.d.ts +7 -0
  314. package/dist/sdk/sessions/checkpoint.js +41 -0
  315. package/dist/sdk/sessions/compactionCheckpoint.d.ts +18 -0
  316. package/dist/sdk/sessions/compactionCheckpoint.js +79 -0
  317. package/dist/sdk/sessions/completionCheck.d.ts +51 -0
  318. package/dist/sdk/sessions/completionCheck.js +161 -0
  319. package/dist/sdk/sessions/continuation.d.ts +53 -0
  320. package/dist/sdk/sessions/continuation.js +90 -0
  321. package/dist/sdk/sessions/contracts.d.ts +991 -0
  322. package/dist/sdk/sessions/contracts.js +545 -0
  323. package/dist/sdk/sessions/control.d.ts +72 -0
  324. package/dist/sdk/sessions/control.js +158 -0
  325. package/dist/sdk/sessions/extensionUi.d.ts +19 -0
  326. package/dist/sdk/sessions/extensionUi.js +64 -0
  327. package/dist/sdk/sessions/goal.d.ts +145 -0
  328. package/dist/sdk/sessions/goal.js +405 -0
  329. package/dist/sdk/sessions/goalLoop.d.ts +37 -0
  330. package/dist/sdk/sessions/goalLoop.js +125 -0
  331. package/dist/sdk/sessions/goalPrompts.d.ts +4 -0
  332. package/dist/sdk/sessions/goalPrompts.js +93 -0
  333. package/dist/sdk/sessions/goalStop.d.ts +27 -0
  334. package/dist/sdk/sessions/goalStop.js +41 -0
  335. package/dist/sdk/sessions/history.d.ts +16 -0
  336. package/dist/sdk/sessions/history.js +68 -0
  337. package/dist/sdk/sessions/initialBash.d.ts +7 -0
  338. package/dist/sdk/sessions/initialBash.js +7 -0
  339. package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
  340. package/dist/sdk/sessions/lineageJoin.js +61 -0
  341. package/dist/sdk/sessions/live.d.ts +101 -0
  342. package/dist/sdk/sessions/live.js +265 -0
  343. package/dist/sdk/sessions/planMode.d.ts +116 -0
  344. package/dist/sdk/sessions/planMode.js +281 -0
  345. package/dist/sdk/sessions/policy.d.ts +43 -0
  346. package/dist/sdk/sessions/policy.js +1 -0
  347. package/dist/sdk/sessions/pricing.d.ts +34 -0
  348. package/dist/sdk/sessions/pricing.js +40 -0
  349. package/dist/sdk/sessions/reasoningSummaries.d.ts +11 -0
  350. package/dist/sdk/sessions/reasoningSummaries.js +61 -0
  351. package/dist/sdk/sessions/registry.d.ts +124 -0
  352. package/dist/sdk/sessions/registry.js +392 -0
  353. package/dist/sdk/sessions/runIndex.d.ts +21 -0
  354. package/dist/sdk/sessions/runIndex.js +65 -0
  355. package/dist/sdk/sessions/runStore.d.ts +82 -0
  356. package/dist/sdk/sessions/runStore.js +393 -0
  357. package/dist/sdk/sessions/runner.d.ts +291 -0
  358. package/dist/sdk/sessions/runner.js +1040 -0
  359. package/dist/sdk/sessions/sessionState.d.ts +13 -0
  360. package/dist/sdk/sessions/sessionState.js +31 -0
  361. package/dist/sdk/sessions/sessions.d.ts +238 -0
  362. package/dist/sdk/sessions/sessions.js +923 -0
  363. package/dist/sdk/sessions/sideQuestionServerMethods.d.ts +3 -0
  364. package/dist/sdk/sessions/sideQuestionServerMethods.js +19 -0
  365. package/dist/sdk/sessions/sideQuestions.d.ts +66 -0
  366. package/dist/sdk/sessions/sideQuestions.js +290 -0
  367. package/dist/sdk/sessions/stallWatch.d.ts +35 -0
  368. package/dist/sdk/sessions/stallWatch.js +42 -0
  369. package/dist/sdk/sessions/subagentServerMethods.d.ts +3 -0
  370. package/dist/sdk/sessions/subagentServerMethods.js +41 -0
  371. package/dist/sdk/sessions/subagentService.d.ts +88 -0
  372. package/dist/sdk/sessions/subagentService.js +546 -0
  373. package/dist/sdk/sessions/subagents.d.ts +98 -0
  374. package/dist/sdk/sessions/subagents.js +136 -0
  375. package/dist/sdk/sessions/workSlice.d.ts +167 -0
  376. package/dist/sdk/sessions/workSlice.js +266 -0
  377. package/dist/sdk/sessions/workspaceBoundary.d.ts +15 -0
  378. package/dist/sdk/sessions/workspaceBoundary.js +46 -0
  379. package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
  380. package/dist/sdk/terminal/accountsMenu.js +392 -0
  381. package/dist/sdk/terminal/browser.d.ts +62 -0
  382. package/dist/sdk/terminal/browser.js +41 -0
  383. package/dist/sdk/terminal/browserControl.d.ts +29 -0
  384. package/dist/sdk/terminal/browserControl.js +187 -0
  385. package/dist/sdk/terminal/cli.d.ts +20 -0
  386. package/dist/sdk/terminal/cli.js +121 -0
  387. package/dist/sdk/terminal/client.d.ts +20 -0
  388. package/dist/sdk/terminal/client.js +148 -0
  389. package/dist/sdk/terminal/commandHelp.d.ts +17 -0
  390. package/dist/sdk/terminal/commandHelp.js +20 -0
  391. package/dist/sdk/terminal/control.d.ts +4 -0
  392. package/dist/sdk/terminal/control.js +25 -0
  393. package/dist/sdk/terminal/controller.d.ts +136 -0
  394. package/dist/sdk/terminal/controller.js +579 -0
  395. package/dist/sdk/terminal/credentialStore.d.ts +4 -0
  396. package/dist/sdk/terminal/credentialStore.js +33 -0
  397. package/dist/sdk/terminal/daemon.d.ts +44 -0
  398. package/dist/sdk/terminal/daemon.js +264 -0
  399. package/dist/sdk/terminal/hubMenu.d.ts +10 -0
  400. package/dist/sdk/terminal/hubMenu.js +34 -0
  401. package/dist/sdk/terminal/launch.d.ts +5 -0
  402. package/dist/sdk/terminal/launch.js +27 -0
  403. package/dist/sdk/terminal/liveTerminal.d.ts +96 -0
  404. package/dist/sdk/terminal/liveTerminal.js +436 -0
  405. package/dist/sdk/terminal/logs.d.ts +14 -0
  406. package/dist/sdk/terminal/logs.js +59 -0
  407. package/dist/sdk/terminal/opentui/ansi.d.ts +25 -0
  408. package/dist/sdk/terminal/opentui/ansi.js +192 -0
  409. package/dist/sdk/terminal/opentui/model.d.ts +163 -0
  410. package/dist/sdk/terminal/opentui/model.js +484 -0
  411. package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +28 -0
  412. package/dist/sdk/terminal/opentui/subagentsWidget.js +54 -0
  413. package/dist/sdk/terminal/opentui/theme.d.ts +47 -0
  414. package/dist/sdk/terminal/opentui/theme.js +93 -0
  415. package/dist/sdk/terminal/piExtension.d.ts +12 -0
  416. package/dist/sdk/terminal/piExtension.js +847 -0
  417. package/dist/sdk/terminal/pluginMenu.d.ts +34 -0
  418. package/dist/sdk/terminal/pluginMenu.js +101 -0
  419. package/dist/sdk/terminal/socket.d.ts +73 -0
  420. package/dist/sdk/terminal/socket.js +287 -0
  421. package/dist/sdk/terminal/standalone.d.ts +52 -0
  422. package/dist/sdk/terminal/standalone.js +329 -0
  423. package/dist/sdk/terminal/subagentMonitor.d.ts +62 -0
  424. package/dist/sdk/terminal/subagentMonitor.js +176 -0
  425. package/dist/sdk/terminal/terminals.d.ts +312 -0
  426. package/dist/sdk/terminal/terminals.js +1782 -0
  427. package/dist/sdk/terminal/toolName.d.ts +6 -0
  428. package/dist/sdk/terminal/toolName.js +12 -0
  429. package/dist/sdk/terminal/trajectory.d.ts +15 -0
  430. package/dist/sdk/terminal/trajectory.js +38 -0
  431. package/dist/sdk/terminal/tui/annotateCommand.d.ts +7 -0
  432. package/dist/sdk/terminal/tui/annotateCommand.js +36 -0
  433. package/dist/sdk/terminal/tui/annotateSend.d.ts +30 -0
  434. package/dist/sdk/terminal/tui/annotateSend.js +40 -0
  435. package/dist/sdk/terminal/tui/chrome.d.ts +68 -0
  436. package/dist/sdk/terminal/tui/chrome.js +182 -0
  437. package/dist/sdk/terminal/tui/clipboardFiles.d.ts +11 -0
  438. package/dist/sdk/terminal/tui/clipboardFiles.js +74 -0
  439. package/dist/sdk/terminal/tui/commandPages.d.ts +16 -0
  440. package/dist/sdk/terminal/tui/commandPages.js +136 -0
  441. package/dist/sdk/terminal/tui/commands.d.ts +71 -0
  442. package/dist/sdk/terminal/tui/commands.js +496 -0
  443. package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
  444. package/dist/sdk/terminal/tui/dialogGeometry.js +52 -0
  445. package/dist/sdk/terminal/tui/dialogs.d.ts +81 -0
  446. package/dist/sdk/terminal/tui/dialogs.js +372 -0
  447. package/dist/sdk/terminal/tui/goalCommand.d.ts +19 -0
  448. package/dist/sdk/terminal/tui/goalCommand.js +83 -0
  449. package/dist/sdk/terminal/tui/harnessRuntime.d.ts +8 -0
  450. package/dist/sdk/terminal/tui/harnessRuntime.js +771 -0
  451. package/dist/sdk/terminal/tui/keybindings.d.ts +11 -0
  452. package/dist/sdk/terminal/tui/keybindings.js +49 -0
  453. package/dist/sdk/terminal/tui/list.d.ts +86 -0
  454. package/dist/sdk/terminal/tui/list.js +278 -0
  455. package/dist/sdk/terminal/tui/markdown.d.ts +16 -0
  456. package/dist/sdk/terminal/tui/markdown.js +55 -0
  457. package/dist/sdk/terminal/tui/modeChoices.d.ts +61 -0
  458. package/dist/sdk/terminal/tui/modeChoices.js +95 -0
  459. package/dist/sdk/terminal/tui/modelPicker.d.ts +55 -0
  460. package/dist/sdk/terminal/tui/modelPicker.js +150 -0
  461. package/dist/sdk/terminal/tui/mouse.d.ts +3 -0
  462. package/dist/sdk/terminal/tui/mouse.js +3 -0
  463. package/dist/sdk/terminal/tui/mouseReport.d.ts +30 -0
  464. package/dist/sdk/terminal/tui/mouseReport.js +80 -0
  465. package/dist/sdk/terminal/tui/page.d.ts +17 -0
  466. package/dist/sdk/terminal/tui/page.js +1 -0
  467. package/dist/sdk/terminal/tui/pageOverlay.d.ts +30 -0
  468. package/dist/sdk/terminal/tui/pageOverlay.js +183 -0
  469. package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +76 -0
  470. package/dist/sdk/terminal/tui/pages/accountsPage.js +409 -0
  471. package/dist/sdk/terminal/tui/pages/agentsPage.d.ts +74 -0
  472. package/dist/sdk/terminal/tui/pages/agentsPage.js +193 -0
  473. package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +148 -0
  474. package/dist/sdk/terminal/tui/pages/annotatePage.js +576 -0
  475. package/dist/sdk/terminal/tui/pages/browserPage.d.ts +87 -0
  476. package/dist/sdk/terminal/tui/pages/browserPage.js +739 -0
  477. package/dist/sdk/terminal/tui/pages/componentsPage.d.ts +47 -0
  478. package/dist/sdk/terminal/tui/pages/componentsPage.js +119 -0
  479. package/dist/sdk/terminal/tui/pages/contextPage.d.ts +91 -0
  480. package/dist/sdk/terminal/tui/pages/contextPage.js +585 -0
  481. package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +39 -0
  482. package/dist/sdk/terminal/tui/pages/doctorPage.js +233 -0
  483. package/dist/sdk/terminal/tui/pages/followUpQueuePage.d.ts +34 -0
  484. package/dist/sdk/terminal/tui/pages/followUpQueuePage.js +130 -0
  485. package/dist/sdk/terminal/tui/pages/hubPage.d.ts +52 -0
  486. package/dist/sdk/terminal/tui/pages/hubPage.js +292 -0
  487. package/dist/sdk/terminal/tui/pages/logPage.d.ts +38 -0
  488. package/dist/sdk/terminal/tui/pages/logPage.js +189 -0
  489. package/dist/sdk/terminal/tui/pages/permissionsPage.d.ts +44 -0
  490. package/dist/sdk/terminal/tui/pages/permissionsPage.js +124 -0
  491. package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +65 -0
  492. package/dist/sdk/terminal/tui/pages/pluginsPage.js +519 -0
  493. package/dist/sdk/terminal/tui/pages/remoteControlPage.d.ts +32 -0
  494. package/dist/sdk/terminal/tui/pages/remoteControlPage.js +170 -0
  495. package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +63 -0
  496. package/dist/sdk/terminal/tui/pages/settingsPage.js +103 -0
  497. package/dist/sdk/terminal/tui/pages/subagentsPage.d.ts +24 -0
  498. package/dist/sdk/terminal/tui/pages/subagentsPage.js +155 -0
  499. package/dist/sdk/terminal/tui/pages/textPage.d.ts +17 -0
  500. package/dist/sdk/terminal/tui/pages/textPage.js +52 -0
  501. package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +66 -0
  502. package/dist/sdk/terminal/tui/pages/trajectoryPage.js +490 -0
  503. package/dist/sdk/terminal/tui/pages/usagePage.d.ts +45 -0
  504. package/dist/sdk/terminal/tui/pages/usagePage.js +397 -0
  505. package/dist/sdk/terminal/tui/pages/worktreesPage.d.ts +72 -0
  506. package/dist/sdk/terminal/tui/pages/worktreesPage.js +203 -0
  507. package/dist/sdk/terminal/tui/piAdapter.d.ts +17 -0
  508. package/dist/sdk/terminal/tui/piAdapter.js +46 -0
  509. package/dist/sdk/terminal/tui/planMode.d.ts +2 -0
  510. package/dist/sdk/terminal/tui/planMode.js +2 -0
  511. package/dist/sdk/terminal/tui/pluginCommands.d.ts +16 -0
  512. package/dist/sdk/terminal/tui/pluginCommands.js +41 -0
  513. package/dist/sdk/terminal/tui/qr.d.ts +4 -0
  514. package/dist/sdk/terminal/tui/qr.js +35 -0
  515. package/dist/sdk/terminal/tui/questionPicker.d.ts +20 -0
  516. package/dist/sdk/terminal/tui/questionPicker.js +150 -0
  517. package/dist/sdk/terminal/tui/questions.d.ts +21 -0
  518. package/dist/sdk/terminal/tui/questions.js +42 -0
  519. package/dist/sdk/terminal/tui/runtime.d.ts +117 -0
  520. package/dist/sdk/terminal/tui/runtime.js +544 -0
  521. package/dist/sdk/terminal/tui/search.d.ts +22 -0
  522. package/dist/sdk/terminal/tui/search.js +61 -0
  523. package/dist/sdk/terminal/tui/selection.d.ts +16 -0
  524. package/dist/sdk/terminal/tui/selection.js +16 -0
  525. package/dist/sdk/terminal/tui/sessionPicker.d.ts +40 -0
  526. package/dist/sdk/terminal/tui/sessionPicker.js +141 -0
  527. package/dist/sdk/terminal/tui/sessionUi.d.ts +3 -0
  528. package/dist/sdk/terminal/tui/sessionUi.js +30 -0
  529. package/dist/sdk/terminal/tui/settingsModel.d.ts +14 -0
  530. package/dist/sdk/terminal/tui/settingsModel.js +195 -0
  531. package/dist/sdk/terminal/tui/sideQuestion.d.ts +57 -0
  532. package/dist/sdk/terminal/tui/sideQuestion.js +241 -0
  533. package/dist/sdk/terminal/tui/skillInvocation.d.ts +28 -0
  534. package/dist/sdk/terminal/tui/skillInvocation.js +63 -0
  535. package/dist/sdk/terminal/tui/status.d.ts +18 -0
  536. package/dist/sdk/terminal/tui/status.js +67 -0
  537. package/dist/sdk/terminal/tui/theme.d.ts +54 -0
  538. package/dist/sdk/terminal/tui/theme.js +185 -0
  539. package/dist/sdk/terminal/tui/thinkingLevels.d.ts +11 -0
  540. package/dist/sdk/terminal/tui/thinkingLevels.js +31 -0
  541. package/dist/sdk/terminal/tui/treeModel.d.ts +79 -0
  542. package/dist/sdk/terminal/tui/treeModel.js +483 -0
  543. package/dist/sdk/terminal/tui/treePicker.d.ts +49 -0
  544. package/dist/sdk/terminal/tui/treePicker.js +251 -0
  545. package/dist/sdk/terminal/tui/ui.d.ts +49 -0
  546. package/dist/sdk/terminal/tui/ui.js +149 -0
  547. package/dist/sdk/terminal/tui/variantCommands.d.ts +32 -0
  548. package/dist/sdk/terminal/tui/variantCommands.js +359 -0
  549. package/dist/sdk/terminal/tui/workingStatus.d.ts +9 -0
  550. package/dist/sdk/terminal/tui/workingStatus.js +229 -0
  551. package/dist/sdk/terminal/variantControl.d.ts +24 -0
  552. package/dist/sdk/terminal/variantControl.js +145 -0
  553. package/dist/sdk/tools/askUser.d.ts +6 -0
  554. package/dist/sdk/tools/askUser.js +92 -0
  555. package/dist/sdk/tools/defaultSkills.d.ts +23 -0
  556. package/dist/sdk/tools/defaultSkills.js +46 -0
  557. package/dist/sdk/tools/definitions.d.ts +32 -0
  558. package/dist/sdk/tools/definitions.js +133 -0
  559. package/dist/sdk/tools/dispatch.d.ts +16 -0
  560. package/dist/sdk/tools/dispatch.js +92 -0
  561. package/dist/sdk/tools/getCapabilities.d.ts +31 -0
  562. package/dist/sdk/tools/getCapabilities.js +34 -0
  563. package/dist/sdk/tools/harnessTools.d.ts +8 -0
  564. package/dist/sdk/tools/harnessTools.js +20 -0
  565. package/dist/sdk/tools/sessionName.d.ts +16 -0
  566. package/dist/sdk/tools/sessionName.js +78 -0
  567. package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
  568. package/dist/sdk/tools/spawnSubagent.js +63 -0
  569. package/dist/sdk/tools/todo.d.ts +15 -0
  570. package/dist/sdk/tools/todo.js +66 -0
  571. package/dist/sdk/tools/types.d.ts +48 -0
  572. package/dist/sdk/tools/types.js +1 -0
  573. package/dist/sdk/usage/analytics.d.ts +20 -0
  574. package/dist/sdk/usage/analytics.js +151 -0
  575. package/dist/sdk/usage/ledger.d.ts +38 -0
  576. package/dist/sdk/usage/ledger.js +142 -0
  577. package/dist/sdk/usage/limits/adapters.d.ts +11 -0
  578. package/dist/sdk/usage/limits/adapters.js +349 -0
  579. package/dist/sdk/usage/limits/capture.d.ts +8 -0
  580. package/dist/sdk/usage/limits/capture.js +47 -0
  581. package/dist/sdk/usage/limits/http.d.ts +12 -0
  582. package/dist/sdk/usage/limits/http.js +51 -0
  583. package/dist/sdk/usage/limits/normalize.d.ts +15 -0
  584. package/dist/sdk/usage/limits/normalize.js +211 -0
  585. package/dist/sdk/usage/limits/service.d.ts +30 -0
  586. package/dist/sdk/usage/limits/service.js +176 -0
  587. package/dist/sdk/usage/limits/types.d.ts +65 -0
  588. package/dist/sdk/usage/limits/types.js +1 -0
  589. package/dist/sdk/usage/serverMethods.d.ts +3 -0
  590. package/dist/sdk/usage/serverMethods.js +22 -0
  591. package/dist/sdk/usage/service.d.ts +32 -0
  592. package/dist/sdk/usage/service.js +66 -0
  593. package/dist/sdk/usage/settings.d.ts +7 -0
  594. package/dist/sdk/usage/settings.js +28 -0
  595. package/dist/sdk/usage/types.d.ts +60 -0
  596. package/dist/sdk/usage/types.js +4 -0
  597. package/dist/sdk/variant/components.d.ts +34 -0
  598. package/dist/sdk/variant/components.js +230 -0
  599. package/dist/sdk/variant/materialise.d.ts +66 -0
  600. package/dist/sdk/variant/materialise.js +81 -0
  601. package/dist/sdk/variant/migrate.d.ts +4 -0
  602. package/dist/sdk/variant/migrate.js +41 -0
  603. package/dist/sdk/variant/seed.d.ts +20 -0
  604. package/dist/sdk/variant/seed.js +116 -0
  605. package/dist/sdk/variant/store.d.ts +114 -0
  606. package/dist/sdk/variant/store.js +256 -0
  607. package/dist/sdk/variant/surface.d.ts +56 -0
  608. package/dist/sdk/variant/surface.js +81 -0
  609. package/dist/sdk/variant/trust.d.ts +27 -0
  610. package/dist/sdk/variant/trust.js +64 -0
  611. package/dist/sdk/variant/variant.d.ts +71 -0
  612. package/dist/sdk/variant/variant.js +331 -0
  613. package/dist/sdk/web/markdown.d.ts +10 -0
  614. package/dist/sdk/web/markdown.js +66 -0
  615. package/dist/sdk/web/part.d.ts +10 -0
  616. package/dist/sdk/web/part.js +6 -0
  617. package/dist/sdk/web/safeRequest.d.ts +34 -0
  618. package/dist/sdk/web/safeRequest.js +175 -0
  619. package/dist/sdk/web/search.d.ts +53 -0
  620. package/dist/sdk/web/search.js +168 -0
  621. package/dist/sdk/web/serverMethods.d.ts +3 -0
  622. package/dist/sdk/web/serverMethods.js +7 -0
  623. package/dist/sdk/web/text.d.ts +2 -0
  624. package/dist/sdk/web/text.js +7 -0
  625. package/dist/sdk/web/tools.d.ts +22 -0
  626. package/dist/sdk/web/tools.js +195 -0
  627. package/dist/sdk/web/turndown-plugin-gfm.d.ts +4 -0
  628. package/dist/sdk/wiki/notes.d.ts +68 -0
  629. package/dist/sdk/wiki/notes.js +297 -0
  630. package/dist/sdk/wiki/serverMethods.d.ts +3 -0
  631. package/dist/sdk/wiki/serverMethods.js +26 -0
  632. package/dist/sdk/worktrees/cli.d.ts +11 -0
  633. package/dist/sdk/worktrees/cli.js +146 -0
  634. package/dist/sdk/worktrees/copy.d.ts +9 -0
  635. package/dist/sdk/worktrees/copy.js +111 -0
  636. package/dist/sdk/worktrees/git.d.ts +18 -0
  637. package/dist/sdk/worktrees/git.js +89 -0
  638. package/dist/sdk/worktrees/serverMethods.d.ts +3 -0
  639. package/dist/sdk/worktrees/serverMethods.js +30 -0
  640. package/dist/sdk/worktrees/service.d.ts +73 -0
  641. package/dist/sdk/worktrees/service.js +483 -0
  642. package/dist/sdk/worktrees/setup.d.ts +23 -0
  643. package/dist/sdk/worktrees/setup.js +65 -0
  644. package/dist/sdk/worktrees/snapshot.d.ts +16 -0
  645. package/dist/sdk/worktrees/snapshot.js +83 -0
  646. package/dist/sdk/worktrees/types.d.ts +91 -0
  647. package/dist/sdk/worktrees/types.js +1 -0
  648. package/dist/sdk/world/actions.d.ts +23 -0
  649. package/dist/sdk/world/actions.js +31 -0
  650. package/dist/sdk/world/cli.d.ts +12 -0
  651. package/dist/sdk/world/cli.js +166 -0
  652. package/dist/sdk/world/images.d.ts +20 -0
  653. package/dist/sdk/world/images.js +48 -0
  654. package/dist/sdk/world/untrusted.d.ts +12 -0
  655. package/dist/sdk/world/untrusted.js +20 -0
  656. package/dist/sdk/world/world.d.ts +75 -0
  657. package/dist/sdk/world/world.js +117 -0
  658. package/dist/terminal-opentui.js +30986 -0
  659. package/dist/terminal-pi.js +3008 -610
  660. package/docs/README.md +45 -1
  661. package/docs/architecture/00-overview.md +171 -0
  662. package/docs/architecture/01-extension-points.md +78 -0
  663. package/docs/architecture/02-sessions-and-runs.md +505 -0
  664. package/docs/architecture/03-variants.md +122 -0
  665. package/docs/architecture/04-prompt.md +277 -0
  666. package/docs/architecture/05-refinement.md +134 -0
  667. package/docs/architecture/06-plugins-and-capabilities.md +208 -0
  668. package/docs/architecture/07-tools-and-gate.md +245 -0
  669. package/docs/architecture/08-memory-and-history.md +100 -0
  670. package/docs/architecture/09-accounts-and-connectors.md +153 -0
  671. package/docs/architecture/10-server-protocol.md +403 -0
  672. package/docs/architecture/11-terminal.md +555 -0
  673. package/docs/architecture/12-storage.md +118 -0
  674. package/docs/architecture/13-world-tools.md +114 -0
  675. package/docs/architecture/14-surfaces-and-parity.md +151 -0
  676. package/docs/architecture/15-remote-control.md +120 -0
  677. package/docs/architecture/README.md +143 -0
  678. package/docs/architecture/proposals/PROP-0001-reporting-section.md +106 -0
  679. package/docs/architecture/proposals/PROP-0002-retain-rollout-workspaces.md +104 -0
  680. package/docs/architecture/proposals/PROP-0003-executor-settings.md +81 -0
  681. package/docs/architecture/proposals/PROP-0004-flexible-reporting-guidance.md +71 -0
  682. package/docs/architecture/proposals/PROP-0005-xharness-cli-name.md +78 -0
  683. package/docs/architecture/proposals/PROP-0006-run-checklist.md +72 -0
  684. package/docs/architecture/proposals/PROP-0007-run-continuation.md +80 -0
  685. package/docs/architecture/proposals/PROP-0008-lessons-from-runs.md +80 -0
  686. package/docs/architecture/proposals/PROP-0009-foundation-and-variants.md +78 -0
  687. package/docs/architecture/proposals/PROP-0010-session-names.md +73 -0
  688. package/docs/architecture/proposals/PROP-0011-doctor.md +63 -0
  689. package/docs/architecture/proposals/PROP-0012-release-baseline.md +56 -0
  690. package/docs/architecture/proposals/PROP-0013-resource-browser.md +58 -0
  691. package/docs/architecture/proposals/PROP-0014-fullscreen-browser-tabs.md +58 -0
  692. package/docs/architecture/proposals/PROP-0015-one-capability-surface.md +88 -0
  693. package/docs/architecture/proposals/PROP-0016-managed-worktrees.md +156 -0
  694. package/docs/architecture/proposals/PROP-0017-page-annotations.md +131 -0
  695. package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +183 -0
  696. package/docs/architecture/proposals/PROP-0019-contextual-side-questions.md +122 -0
  697. package/docs/architecture/proposals/PROP-0020-builtin-feature-plugins.md +105 -0
  698. package/docs/architecture/proposals/PROP-0021-command-namespaces-and-duplicates.md +99 -0
  699. package/docs/architecture/proposals/PROP-0022-plan-only-questions.md +102 -0
  700. package/docs/architecture/proposals/PROP-0023-xagent-cli-name.md +61 -0
  701. package/docs/architecture/proposals/PROP-0024-question-sketch-previews.md +130 -0
  702. package/docs/architecture/proposals/PROP-0025-contextual-question-wireframes.md +49 -0
  703. package/docs/architecture/proposals/PROP-0026-connected-sketch-display.md +96 -0
  704. package/docs/architecture/proposals/PROP-0027-xingular-agent-product-identity.md +60 -0
  705. package/docs/architecture/proposals/PROP-0028-normalize-question-wireframes.md +55 -0
  706. package/docs/architecture/proposals/PROP-0029-agent-profiles.md +124 -0
  707. package/docs/architecture/proposals/PROP-0030-subagent-title.md +86 -0
  708. package/docs/architecture/proposals/PROP-0031-plugin-command-owner-namespaces.md +54 -0
  709. package/docs/architecture/proposals/PROP-0032-planning-quality.md +196 -0
  710. package/docs/architecture/proposals/PROP-0033-compaction-plan-checkpoints.md +75 -0
  711. package/docs/architecture/proposals/PROP-0034-conversation-fast-mode.md +120 -0
  712. package/docs/architecture/proposals/PROP-0035-retain-subagent-status.md +47 -0
  713. package/docs/architecture/proposals/PROP-0036-first-class-harness-commands.md +59 -0
  714. package/docs/architecture/proposals/PROP-0037-workspace-write-boundary.md +63 -0
  715. package/docs/architecture/proposals/PROP-0038-annotate-open-shadow-roots.md +73 -0
  716. package/docs/architecture/proposals/PROP-0039-workspace-boundary-hardening.md +139 -0
  717. package/docs/architecture/proposals/PROP-0040-one-launch-path.md +87 -0
  718. package/docs/architecture/proposals/PROP-0041-bounded-work-slices.md +260 -0
  719. package/docs/architecture/proposals/PROP-0042-usage-and-provider-limits.md +127 -0
  720. package/docs/architecture/proposals/PROP-0043-read-only-plan-bash.md +74 -0
  721. package/docs/architecture/proposals/PROP-0044-work-slice-defaults.md +93 -0
  722. package/docs/architecture/proposals/PROP-0045-rename-checklist-to-todo.md +132 -0
  723. package/docs/architecture/proposals/PROP-0046-progress-aware-stall-guards.md +82 -0
  724. package/docs/architecture/proposals/PROP-0047-plugins-hub-separation.md +122 -0
  725. package/docs/architecture/proposals/PROP-0048-simple-annotate.md +85 -0
  726. package/docs/architecture/proposals/PROP-0049-context-attribution.md +415 -0
  727. package/docs/architecture/proposals/PROP-0050-run-stop-codes-and-refusals.md +30 -0
  728. package/docs/architecture/proposals/PROP-0051-unfinished-run-handoff.md +110 -0
  729. package/docs/architecture/proposals/PROP-0052-terminal-refine-and-variant-switch.md +111 -0
  730. package/docs/architecture/proposals/README.md +123 -0
  731. package/docs/decisions/ADR-0001-owned-terminal.md +10 -3
  732. package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +3 -1
  733. package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +3 -2
  734. package/docs/decisions/ADR-0006-opentui-only-terminal.md +47 -0
  735. package/docs/decisions/ADR-0007-reporting-section.md +33 -0
  736. package/docs/decisions/ADR-0008-flexible-reporting-guidance.md +41 -0
  737. package/docs/decisions/ADR-0009-xharness-command.md +39 -0
  738. package/docs/decisions/ADR-0010-lessons-in-the-wiki.md +31 -0
  739. package/docs/decisions/ADR-0011-foundation-and-variants.md +28 -0
  740. package/docs/decisions/ADR-0012-native-session-names.md +34 -0
  741. package/docs/decisions/ADR-0013-doctor.md +27 -0
  742. package/docs/decisions/ADR-0014-public-release-baseline.md +22 -0
  743. package/docs/decisions/ADR-0015-resource-browser.md +28 -0
  744. package/docs/decisions/ADR-0016-fullscreen-browser-tabs.md +31 -0
  745. package/docs/decisions/ADR-0017-one-capability-surface.md +34 -0
  746. package/docs/decisions/ADR-0018-builtin-feature-plugins.md +35 -0
  747. package/docs/decisions/ADR-0019-managed-git-worktrees.md +31 -0
  748. package/docs/decisions/ADR-0020-page-annotations.md +37 -0
  749. package/docs/decisions/ADR-0021-required-command-namespaces.md +40 -0
  750. package/docs/decisions/ADR-0022-plan-only-question-tools.md +34 -0
  751. package/docs/decisions/ADR-0023-contextual-side-question-runs.md +35 -0
  752. package/docs/decisions/ADR-0024-xagent-command.md +40 -0
  753. package/docs/decisions/ADR-0025-question-choice-sketches.md +49 -0
  754. package/docs/decisions/ADR-0026-contextual-question-wireframes.md +58 -0
  755. package/docs/decisions/ADR-0027-connected-sketch-display.md +62 -0
  756. package/docs/decisions/ADR-0028-xingular-agent-product-identity.md +56 -0
  757. package/docs/decisions/ADR-0029-normalized-question-wireframe-borders.md +33 -0
  758. package/docs/decisions/ADR-0030-agent-profiles.md +43 -0
  759. package/docs/decisions/ADR-0031-plugin-command-owner-namespaces.md +37 -0
  760. package/docs/decisions/ADR-0032-compaction-run-checkpoints.md +35 -0
  761. package/docs/decisions/ADR-0033-plan-mode-research-delegation.md +47 -0
  762. package/docs/decisions/ADR-0034-first-class-harness-terminal-commands.md +25 -0
  763. package/docs/decisions/ADR-0035-one-launch-path.md +40 -0
  764. package/docs/decisions/ADR-0036-workspace-write-operation-boundary.md +54 -0
  765. package/docs/decisions/ADR-0037-usage-ledger-and-provider-limits.md +44 -0
  766. package/docs/decisions/ADR-0038-plan-bash-os-read-only.md +29 -0
  767. package/docs/decisions/ADR-0039-progress-aware-stall-guards.md +43 -0
  768. package/docs/decisions/ADR-0040-architecture-change-workflow.md +31 -0
  769. package/docs/decisions/ADR-0041-plugins-hub-separation.md +41 -0
  770. package/docs/decisions/ADR-0042-windows-shell-without-sandbox.md +40 -0
  771. package/docs/decisions/ADR-0043-parents-continue-stopped-subagents.md +49 -0
  772. package/docs/decisions/ADR-0044-annotations-pending-or-sent.md +24 -0
  773. package/docs/decisions/ADR-0045-default-plugin-authoring-skill.md +9 -0
  774. package/docs/decisions/ADR-0046-hash-bound-plugin-proposals.md +20 -0
  775. package/docs/decisions/ADR-0047-links-open-with-the-os-handler.md +47 -0
  776. package/docs/decisions/ADR-0048-required-skills-from-a-message.md +42 -0
  777. package/docs/decisions/ADR-0050-approved-window-screenshots.md +19 -0
  778. package/docs/decisions/ADR-0051-terminal-decision-wait.md +10 -0
  779. package/docs/decisions/ADR-0052-per-profile-subagent-budgets.md +25 -0
  780. package/docs/decisions/ADR-0053-no-repeated-work-guard.md +45 -0
  781. package/docs/decisions/ADR-0054-terminal-reply-heartbeat-and-stall.md +52 -0
  782. package/docs/decisions/ADR-0055-plan-output-repair.md +51 -0
  783. package/docs/decisions/ADR-0056-remote-control.md +53 -0
  784. package/docs/decisions/ADR-0057-structured-plan-outcomes.md +39 -0
  785. package/docs/decisions/ADR-0058-ask-user-only-plan-clarification.md +36 -0
  786. package/docs/decisions/ADR-0059-run-diagnostic-evidence.md +35 -0
  787. package/docs/decisions/ADR-0060-approvals-are-controls.md +40 -0
  788. package/docs/decisions/ADR-0061-strict-plugin-command-namespaces.md +41 -0
  789. package/docs/decisions/ADR-0062-shared-account-state.md +67 -0
  790. package/docs/decisions/ADR-0063-unfinished-work-handoffs.md +34 -0
  791. package/docs/decisions/ADR-0064-account-model-fallback-on-resume.md +79 -0
  792. package/docs/decisions/ADR-0065-variant-switch-at-turn-boundaries.md +31 -0
  793. package/docs/decisions/ADR-0066-guided-refinement-from-turn-snapshots.md +37 -0
  794. package/docs/decisions/ADR-0067-cache-stable-compaction-checkpoint.md +54 -0
  795. package/docs/decisions/ADR-0068-scope-and-completion-report.md +60 -0
  796. package/docs/decisions/ADR-0069-stop-gate-and-finish.md +136 -0
  797. package/docs/decisions/ADR-0070-terminal-slice-continuation.md +49 -0
  798. package/docs/decisions/ADR-0071-completion-check.md +104 -0
  799. package/docs/decisions/ADR-0072-codex-prompts-and-goal.md +108 -0
  800. package/docs/decisions/ADR-0073-large-reporting-prompt.md +89 -0
  801. package/docs/decisions/ADR-0074-report-content-not-report-blocks.md +90 -0
  802. package/docs/decisions/ADR-0075-no-todo-gate.md +84 -0
  803. package/docs/decisions/ADR-0076-codex-final-answer-verbatim.md +98 -0
  804. package/docs/decisions/ADR-0077-plan-runs-may-conclude-no-plan-needed.md +120 -0
  805. package/docs/decisions/ADR-0078-child-aware-stall-watch.md +46 -0
  806. package/docs/decisions/ADR-0079-phase-led-reporting-guidance.md +72 -0
  807. package/docs/decisions/ADR-0080-fixed-width-question-sketch-canvas.md +50 -0
  808. package/docs/decisions/ADR-0081-no-work-slice-budget-by-default.md +36 -0
  809. package/docs/decisions/ADR-0082-connected-brave-browser.md +72 -0
  810. package/docs/decisions/ADR-0083-one-live-session-runtime.md +256 -0
  811. package/docs/doctor.md +95 -0
  812. package/docs/experiments/EXP-0001-terminal-input-latency/plan.md +81 -0
  813. package/docs/experiments/EXP-0001-terminal-input-latency/results.md +46 -0
  814. package/docs/experiments/EXP-0002-opentui-typing-latency/plan.md +70 -0
  815. package/docs/experiments/EXP-0002-opentui-typing-latency/results.md +92 -0
  816. package/docs/experiments/EXP-0003-performance-audit/data/session-runtime-replication.json +420 -0
  817. package/docs/experiments/EXP-0003-performance-audit/data/session-runtime.json +420 -0
  818. package/docs/experiments/EXP-0003-performance-audit/data/terminal-compact.json +376 -0
  819. package/docs/experiments/EXP-0003-performance-audit/data/terminal-history.json +422 -0
  820. package/docs/experiments/EXP-0003-performance-audit/data/terminal-question.json +95 -0
  821. package/docs/experiments/EXP-0003-performance-audit/data/terminal-wide.json +1036 -0
  822. package/docs/experiments/EXP-0003-performance-audit/plan.md +109 -0
  823. package/docs/experiments/EXP-0003-performance-audit/results.md +151 -0
  824. package/docs/features/README.md +46 -0
  825. package/docs/features/automations/README.md +41 -0
  826. package/docs/features/cores/README.md +39 -0
  827. package/docs/features/google-harness2/README.md +52 -0
  828. package/docs/features/integrations/README.md +40 -0
  829. package/docs/features/interfaces/README.md +29 -0
  830. package/docs/features/memory/README.md +28 -0
  831. package/docs/future-work.md +48 -0
  832. package/docs/handoff-2026-10-25-app-parity-and-solo-tabs.md +202 -0
  833. package/docs/parity.md +158 -0
  834. package/docs/releases/1.0.0.md +40 -0
  835. package/docs/releases/1.1.1.md +28 -0
  836. package/docs/releases/1.2.0.md +49 -0
  837. package/docs/releases/1.3.0.md +21 -0
  838. package/docs/releases/1.3.1-unstable.1.md +8 -0
  839. package/docs/releases/1.3.1-unstable.2.md +11 -0
  840. package/docs/releases/1.3.1-unstable.3.md +54 -0
  841. package/docs/releases/1.3.1-unstable.4.md +56 -0
  842. package/docs/releases/1.3.1-unstable.5.md +53 -0
  843. package/docs/releases/1.3.1-unstable.6.md +31 -0
  844. package/docs/releases/1.3.1-unstable.7.md +17 -0
  845. package/docs/releases/1.3.1-unstable.8.md +19 -0
  846. package/docs/releases/1.3.1-unstable.9.md +54 -0
  847. package/docs/releases/1.4.0-unstable.md +25 -0
  848. package/docs/releases/1.5.0-unstable.md +32 -0
  849. package/docs/releases/1.5.1-unstable.md +24 -0
  850. package/docs/releases/1.6.0-unstable.md +59 -0
  851. package/docs/releases/2.0.1-unstable.md +63 -0
  852. package/docs/releases/4.0.0.md +47 -0
  853. package/docs/releases/README.md +49 -0
  854. package/docs/study/00-index.md +112 -0
  855. package/docs/study/STUDY-0003-long-horizon-runs.md +210 -0
  856. package/docs/study/STUDY-0004-turn-end-controls.md +130 -0
  857. package/docs/study/STUDY-0005-skill-installation-guidance.md +146 -0
  858. package/docs/study/STUDY-0006-reporting-prompts.md +119 -0
  859. package/docs/study/STUDY-0007-claude-code-prompt.md +162 -0
  860. package/docs/study/STUDY-0008-browser-control.md +281 -0
  861. package/docs/study/STUDY-0009-claude-code-reporting.md +205 -0
  862. package/docs/study/arms/00-matrix.md +20 -0
  863. package/docs/study/arms/01-system-prompt.md +211 -0
  864. package/docs/study/arms/02-tools.md +79 -0
  865. package/docs/study/arms/03-subagents.md +90 -0
  866. package/docs/study/arms/04-skills.md +81 -0
  867. package/docs/study/arms/05-context-management.md +90 -0
  868. package/docs/study/arms/06-memory.md +90 -0
  869. package/docs/study/arms/07-governance.md +71 -0
  870. package/docs/study/arms/08-execution.md +69 -0
  871. package/docs/study/arms/09-observability.md +60 -0
  872. package/docs/study/arms/10-refinement.md +110 -0
  873. package/docs/study/autonomous-engineering-sources.md +277 -0
  874. package/docs/study/autonomy-sources.md +147 -0
  875. package/docs/study/btw-comparison.md +37 -0
  876. package/docs/study/feature-gap-review.md +42 -0
  877. package/docs/study/insights.md +123 -0
  878. package/docs/study/proactive-autonomy.md +408 -0
  879. package/docs/study/roadmap.md +72 -0
  880. package/docs/study/sources/claude-code.md +56 -0
  881. package/docs/study/sources/deepseek-harness.md +102 -0
  882. package/docs/study/sources/harness2.md +50 -0
  883. package/docs/study/sources/kimi-cli.md +42 -0
  884. package/docs/study/sources/omp.md +93 -0
  885. package/docs/study/sources/opencode.md +43 -0
  886. package/docs/study/sources/openhands.md +46 -0
  887. package/docs/study/sources/smolagents.md +40 -0
  888. package/docs/study/sources/swe-agent.md +34 -0
  889. package/docs/study/tui-resource-browser.md +78 -0
  890. package/docs/system-prompt-design.md +196 -0
  891. package/docs/terminal-tui.md +887 -109
  892. package/package.json +46 -13
  893. package/src/accounts/accounts.test.ts +0 -419
  894. package/src/accounts/accounts.ts +0 -760
  895. package/src/accounts/env.test.ts +0 -95
  896. package/src/accounts/env.ts +0 -338
  897. package/src/accounts/secrets.ts +0 -50
  898. package/src/accounts/store.ts +0 -338
  899. package/src/capabilities/api.ts +0 -75
  900. package/src/capabilities/runSnapshot.ts +0 -59
  901. package/src/capabilities/types.ts +0 -34
  902. package/src/cli.ts +0 -118
  903. package/src/core/bus.test.ts +0 -22
  904. package/src/core/bus.ts +0 -49
  905. package/src/core/changes.ts +0 -33
  906. package/src/core/env.ts +0 -27
  907. package/src/core/errors.ts +0 -32
  908. package/src/core/frontmatter.ts +0 -47
  909. package/src/core/fs.test.ts +0 -38
  910. package/src/core/fs.ts +0 -92
  911. package/src/core/index.ts +0 -193
  912. package/src/core/path.test.ts +0 -14
  913. package/src/core/path.ts +0 -79
  914. package/src/core/projects.ts +0 -90
  915. package/src/core/text.ts +0 -39
  916. package/src/harness.ts +0 -322
  917. package/src/hub/catalog.json +0 -123
  918. package/src/hub/cli.ts +0 -59
  919. package/src/hub/hub.test.ts +0 -205
  920. package/src/hub/hub.ts +0 -256
  921. package/src/hub/schema.ts +0 -81
  922. package/src/index.ts +0 -80
  923. package/src/mcp/connections.ts +0 -641
  924. package/src/mcp/manager.ts +0 -130
  925. package/src/mcp/oauth.ts +0 -195
  926. package/src/mcp/scopeMigration.test.ts +0 -79
  927. package/src/mcp/scopeMigration.ts +0 -204
  928. package/src/mcp/service.test.ts +0 -422
  929. package/src/mcp/service.ts +0 -560
  930. package/src/mcp/types.ts +0 -118
  931. package/src/memory/api.test.ts +0 -82
  932. package/src/memory/api.ts +0 -303
  933. package/src/memory/blocks.test.ts +0 -78
  934. package/src/memory/blocks.ts +0 -408
  935. package/src/memory/caller.ts +0 -69
  936. package/src/memory/curation.test.ts +0 -206
  937. package/src/memory/curation.ts +0 -64
  938. package/src/memory/dispatch.ts +0 -64
  939. package/src/memory/facts.test.ts +0 -41
  940. package/src/memory/facts.ts +0 -248
  941. package/src/memory/graph.ts +0 -103
  942. package/src/memory/health.test.ts +0 -130
  943. package/src/memory/health.ts +0 -74
  944. package/src/memory/maintainer.ts +0 -272
  945. package/src/memory/maintenance.test.ts +0 -192
  946. package/src/memory/maintenance.ts +0 -679
  947. package/src/memory/migrate.ts +0 -79
  948. package/src/memory/operations.ts +0 -150
  949. package/src/memory/proposals.test.ts +0 -168
  950. package/src/memory/proposals.ts +0 -584
  951. package/src/memory/recall.test.ts +0 -115
  952. package/src/memory/recall.ts +0 -279
  953. package/src/memory/references.ts +0 -77
  954. package/src/memory/runContext.ts +0 -93
  955. package/src/memory/secrets.ts +0 -6
  956. package/src/memory/store.test.ts +0 -66
  957. package/src/memory/store.ts +0 -385
  958. package/src/memory/trajectory.test.ts +0 -178
  959. package/src/memory/trajectory.ts +0 -220
  960. package/src/memory/wiki.test.ts +0 -47
  961. package/src/memory/wiki.ts +0 -423
  962. package/src/memory/wikiIndex.test.ts +0 -88
  963. package/src/memory/wikiIndex.ts +0 -117
  964. package/src/plugins/api.ts +0 -181
  965. package/src/plugins/attachments.test.ts +0 -84
  966. package/src/plugins/attachments.ts +0 -141
  967. package/src/plugins/builtin.ts +0 -84
  968. package/src/plugins/catalogue.test.ts +0 -254
  969. package/src/plugins/catalogue.ts +0 -251
  970. package/src/plugins/cli.ts +0 -184
  971. package/src/plugins/discover.ts +0 -151
  972. package/src/plugins/firstParty.test.ts +0 -143
  973. package/src/plugins/firstParty.ts +0 -129
  974. package/src/plugins/hooks.test.ts +0 -250
  975. package/src/plugins/hooks.ts +0 -239
  976. package/src/plugins/identity.ts +0 -37
  977. package/src/plugins/install.test.ts +0 -107
  978. package/src/plugins/install.ts +0 -106
  979. package/src/plugins/inventory.ts +0 -123
  980. package/src/plugins/manifest.ts +0 -76
  981. package/src/plugins/plugins.test.ts +0 -205
  982. package/src/plugins/plugins.ts +0 -189
  983. package/src/plugins/proposal.ts +0 -121
  984. package/src/plugins/runtime.test.ts +0 -40
  985. package/src/plugins/runtime.ts +0 -82
  986. package/src/plugins/trust.ts +0 -142
  987. package/src/plugins/types.ts +0 -149
  988. package/src/prompt/compile.test.ts +0 -261
  989. package/src/prompt/compile.ts +0 -732
  990. package/src/server/methods.ts +0 -355
  991. package/src/server/remote.ts +0 -77
  992. package/src/server/rpc.ts +0 -116
  993. package/src/server/serve.ts +0 -28
  994. package/src/server/server.test.ts +0 -193
  995. package/src/sessions/approvals.test.ts +0 -49
  996. package/src/sessions/approvals.ts +0 -140
  997. package/src/sessions/contracts.ts +0 -336
  998. package/src/sessions/conversation.test.ts +0 -233
  999. package/src/sessions/extensionSession.test.ts +0 -74
  1000. package/src/sessions/extensionUi.test.ts +0 -65
  1001. package/src/sessions/extensionUi.ts +0 -102
  1002. package/src/sessions/history.ts +0 -51
  1003. package/src/sessions/lineageJoin.ts +0 -75
  1004. package/src/sessions/policy.ts +0 -36
  1005. package/src/sessions/pricing.ts +0 -60
  1006. package/src/sessions/questionBatches.test.ts +0 -110
  1007. package/src/sessions/reasoningSummaries.ts +0 -59
  1008. package/src/sessions/registry.ts +0 -412
  1009. package/src/sessions/runIndex.ts +0 -99
  1010. package/src/sessions/runStore.test.ts +0 -152
  1011. package/src/sessions/runStore.ts +0 -346
  1012. package/src/sessions/runner.ts +0 -610
  1013. package/src/sessions/runtimeResources.test.ts +0 -61
  1014. package/src/sessions/sessions.test.ts +0 -588
  1015. package/src/sessions/sessions.ts +0 -331
  1016. package/src/sessions/subagentService.test.ts +0 -159
  1017. package/src/sessions/subagentService.ts +0 -236
  1018. package/src/sessions/subagents.ts +0 -97
  1019. package/src/skills/registry.test.ts +0 -104
  1020. package/src/skills/registry.ts +0 -413
  1021. package/src/terminal/accountsMenu.test.ts +0 -225
  1022. package/src/terminal/accountsMenu.ts +0 -382
  1023. package/src/terminal/cli.ts +0 -149
  1024. package/src/terminal/client.ts +0 -74
  1025. package/src/terminal/control.test.ts +0 -23
  1026. package/src/terminal/control.ts +0 -23
  1027. package/src/terminal/controller.ts +0 -354
  1028. package/src/terminal/hubMenu.ts +0 -24
  1029. package/src/terminal/launch.test.ts +0 -25
  1030. package/src/terminal/launch.ts +0 -48
  1031. package/src/terminal/piExtension.lifecycle.test.ts +0 -55
  1032. package/src/terminal/piExtension.ts +0 -295
  1033. package/src/terminal/pluginControl.test.ts +0 -146
  1034. package/src/terminal/pluginMenu.ts +0 -112
  1035. package/src/terminal/socket.test.ts +0 -94
  1036. package/src/terminal/socket.ts +0 -256
  1037. package/src/terminal/standalone.test.ts +0 -167
  1038. package/src/terminal/standalone.ts +0 -165
  1039. package/src/terminal/terminal.test.ts +0 -534
  1040. package/src/terminal/terminals.ts +0 -661
  1041. package/src/terminal/trajectory.test.ts +0 -66
  1042. package/src/terminal/trajectory.ts +0 -44
  1043. package/src/terminal/tui/application.test.ts +0 -290
  1044. package/src/terminal/tui/application.ts +0 -653
  1045. package/src/terminal/tui/commands.test.ts +0 -278
  1046. package/src/terminal/tui/commands.ts +0 -443
  1047. package/src/terminal/tui/dialogs.ts +0 -301
  1048. package/src/terminal/tui/editor.test.ts +0 -113
  1049. package/src/terminal/tui/editor.ts +0 -109
  1050. package/src/terminal/tui/keybindings.test.ts +0 -30
  1051. package/src/terminal/tui/keybindings.ts +0 -59
  1052. package/src/terminal/tui/piAdapter.ts +0 -62
  1053. package/src/terminal/tui/planMode.test.ts +0 -10
  1054. package/src/terminal/tui/planMode.ts +0 -12
  1055. package/src/terminal/tui/presentation.test.ts +0 -79
  1056. package/src/terminal/tui/questions.test.ts +0 -41
  1057. package/src/terminal/tui/questions.ts +0 -47
  1058. package/src/terminal/tui/runtime.socket.test.ts +0 -178
  1059. package/src/terminal/tui/runtime.test.ts +0 -225
  1060. package/src/terminal/tui/runtime.ts +0 -403
  1061. package/src/terminal/tui/screen.test.ts +0 -143
  1062. package/src/terminal/tui/screen.ts +0 -121
  1063. package/src/terminal/tui/sessionUi.ts +0 -24
  1064. package/src/terminal/tui/settings.test.ts +0 -150
  1065. package/src/terminal/tui/settings.ts +0 -188
  1066. package/src/terminal/tui/skillInvocation.test.ts +0 -71
  1067. package/src/terminal/tui/skillInvocation.ts +0 -51
  1068. package/src/terminal/tui/status.test.ts +0 -48
  1069. package/src/terminal/tui/status.ts +0 -82
  1070. package/src/terminal/tui/theme.ts +0 -185
  1071. package/src/terminal/tui/tools.test.ts +0 -145
  1072. package/src/terminal/tui/tools.ts +0 -142
  1073. package/src/terminal/tui/trajectoryPanel.test.ts +0 -99
  1074. package/src/terminal/tui/trajectoryPanel.ts +0 -226
  1075. package/src/terminal/tui/transcript.test.ts +0 -39
  1076. package/src/terminal/tui/transcript.ts +0 -135
  1077. package/src/terminal/tui/ui.test.ts +0 -313
  1078. package/src/terminal/tui/ui.ts +0 -166
  1079. package/src/terminal/tui/welcome.ts +0 -102
  1080. package/src/terminal/tui/workingStatus.test.ts +0 -44
  1081. package/src/terminal/tui/workingStatus.ts +0 -238
  1082. package/src/tools/askUser.test.ts +0 -69
  1083. package/src/tools/askUser.ts +0 -59
  1084. package/src/tools/definitions.ts +0 -228
  1085. package/src/tools/maintenance.ts +0 -29
  1086. package/src/tools/memoryTools.ts +0 -22
  1087. package/src/tools/pluginPropose.ts +0 -41
  1088. package/src/tools/registryWrite.test.ts +0 -101
  1089. package/src/tools/registryWrite.ts +0 -182
  1090. package/src/tools/spawnSubagent.ts +0 -47
  1091. package/src/tools/types.ts +0 -41
  1092. package/src/web/safeRequest.ts +0 -171
  1093. package/src/web/text.ts +0 -53
  1094. package/src/web/tools.ts +0 -134
  1095. package/src/web/web.test.ts +0 -141
@@ -0,0 +1,205 @@
1
+ # STUDY-0009 — Claude Code's report structure against this harness's, phase by phase
2
+
3
+ Status: **checked source and published docs; reporting contract updated by ADR-0079.** This study
4
+ pins Claude Code v2.1.88's leaked prompt (external and internal builds) and the published
5
+ output-styles page against the Harness reporting section before ADR-0079 (3,696 characters). It
6
+ extends
7
+ [STUDY-0006](STUDY-0006-reporting-prompts.md), which measured the reporting rewrite, and
8
+ [STUDY-0007](STUDY-0007-claude-code-prompt.md), which compared 20 prompt areas in brief. It answers
9
+ the header question left by [ADR-0074](../decisions/ADR-0074-report-content-not-report-blocks.md) and
10
+ [ADR-0076](../decisions/ADR-0076-codex-final-answer-verbatim.md).
11
+
12
+ ## The question
13
+
14
+ The reporting section has been rewritten twice (15.8k → 8.9k → 3.7k characters), and replies stopped
15
+ carrying headers. What exactly does Claude Code ask of the text outside tool calls — at each phase,
16
+ in headers, content and length — and where does each phase line up with the current section?
17
+
18
+ ## Sources and method
19
+
20
+ | Side | Source | What is measured |
21
+ |---|---|---|
22
+ | Claude Code, external build | `external/claude-code-src/src/constants/prompts.ts` (v2.1.88 source map, 2026-03-31). The text `getSystemPrompt` returns when `USER_TYPE !== 'ant'`: `# System` (`:188`), `# Tone and style` (`:430-441`), `# Output efficiency` (`:416-427`) | Everything an ordinary user's session is told about its text output |
23
+ | Claude Code, internal build | The same file's `USER_TYPE === 'ant'` branches: `# Communicating with the user` (`:405-414`), faithful reporting (`:240`), numeric length anchors (`:534`), the feature-gated verification contract (`:394`); the subagent prompt (`:758`) and its notes (`:765-768`); the away-summary prompt (`services/awaySummary.ts:22`) | The report text Anthropic gives its own staff, which is the most explicit version of Claude Code's style |
24
+ | Claude Code, published | [Output styles](https://code.claude.com/docs/en/output-styles), fetched 2026-11-01 | The documented Default and Concise behavior, from v2.1.237 |
25
+ | This harness | Run `fe134053-24b3-40d0-b9a1-303d99c5140e`'s recorded pack, section `reporting`; `src/prompt/reporting.ts`; `src/prompt/standard.ts` `WRITING_STYLE` | The text a session is actually given — 3,696 characters, 18.9% of the 19,532-character pack |
26
+
27
+ Measurement notes:
28
+
29
+ - Character counts are measured from the source text. Quotes are verbatim; `⟨…⟩` marks a runtime
30
+ value. Token figures, where used, are characters ÷ 4. External-build section sizes are the
31
+ extracted-section counts also used in STUDY-0006 and STUDY-0007; ant-only sizes use the same
32
+ method, measured here.
33
+ - The Claude Code text comes from a leaked source map, not an Anthropic publication. The internal
34
+ branch is version- and build-gated, so it is evidence of Anthropic's own wording, not of what
35
+ external users receive. The published page is the only official source here.
36
+ - The comparison is of instructions, not observed replies. It does not measure how often Claude Code
37
+ or this harness actually emits headers.
38
+
39
+ ## Two Claude Code builds, one published style
40
+
41
+ - **The external build has no report template.** `# Output efficiency` (730 characters) and
42
+ `# Tone and style` (691) are the whole of its final-reply text, plus a 237-character sentence
43
+ saying markdown is CommonMark in a monospace renderer. There is no content list, no header rule
44
+ and no example.
45
+ - **The internal build adds the only real structure.** `# Communicating with the user` (2,395
46
+ characters) covers the reader, in-flight updates, prose, tables and the inverted pyramid. It is
47
+ still not a template or a header set. Faithful reporting (641) and numeric length anchors (140)
48
+ sit beside it; the verification contract is behind a feature flag.
49
+ - **The published Concise style** (v2.1.237 or later) is the documented version of the same idea:
50
+ "the first sentence of a response states what happened or what the answer is", no lead-in,
51
+ narration or closing recap, a simple question answered in one to three sentences; error reports,
52
+ failing test output, security warnings and destructive-action confirmations keep their complete
53
+ content. It is a session-level style, not the default.
54
+ - **Explanatory, Learning and Proactive change the role**, not the report's structure.
55
+
56
+ ## Sizes
57
+
58
+ | Text | Characters | Share of its own prompt |
59
+ |---|---:|---:|
60
+ | Claude Code external: `# Output efficiency` | 730 | — |
61
+ | Claude Code external: `# Tone and style` | 691 | — |
62
+ | Claude Code external: the markdown/CommonMark sentence | 237 | — |
63
+ | Claude Code external report text, total | 1,658 | 12.3% of 13,532 |
64
+ | Claude Code internal: `# Communicating with the user` | 2,395 | not measured; the internal pack was not extracted |
65
+ | Claude Code internal: faithful-reporting bullet | 641 | — |
66
+ | Claude Code internal: numeric length anchors | 140 | — |
67
+ | Claude Code subagent: report sentence + notes | 403 + 434 | — |
68
+ | Claude Code away summary | 249 | — |
69
+ | This harness: `reporting` | 3,696 | 18.9% of 19,532 |
70
+ | This harness: the two worked examples inside it | 767 | 20.8% of the section |
71
+ | This harness: `reporting` + `writing` | 5,120 | 26.2% of 19,532 |
72
+
73
+ The harness spends 2.2 times Claude Code's external report text and 1.5 times its internal
74
+ `# Communicating with the user`, and the only peer text comparable in kind is the latter.
75
+
76
+ ## The phases, side by side
77
+
78
+ The rows follow the order a person experiences the text: who reads it, the text before the first
79
+ tool call, the updates while work runs, then the final reply from its first sentence to its last.
80
+
81
+ | Phase | Claude Code, external (v2.1.88) | Claude Code, internal (ant-only) | This harness (1.5.1) |
82
+ |---|---|---|---|
83
+ | What the text is for | "All text you output outside of tool use is displayed to the user" (`prompts.ts:188`) | Same, plus "Assume users can't see most tool calls or thinking — only your text output" (`:406`) | "fully self-contained: users should never need to read earlier commentary updates" (`reporting.ts:5`); "Do not assume the reader will fill in missing steps" (`standard.ts:59`) |
84
+ | Before the first tool call | Nothing | "Before your first tool call, briefly state what you're about to do" (`:406`) | Nothing; `reporting.ts:7` only forbids ending a turn to report work still possible |
85
+ | While work runs | "Focus text output on: Decisions that need the user's input / High-level status updates at natural milestones / Errors or blockers that change the plan" (`:422-425`) | "short updates at key moments: when you find something load-bearing (a bug, a root cause), when changing direction, when you've made progress without an update" (`:406`) | "In progress updates, say what you learned, what is still uncertain, and what the next step will resolve" (`standard.ts:61`; repeated in `reporting.ts:15`) |
86
+ | The reply's first sentence | "Lead with the answer or action, not the reasoning. Skip filler words, preamble, and unnecessary transitions. Do not restate what the user said" (`:420`); published Concise: the first sentence states what happened | "Use inverted pyramid when appropriate (leading with the action)" (`:412`); "Don't overemphasize unimportant trivia about your process or use superlatives to oversell small wins or losses" (`:412`) | "Lead with the outcome and then develop your reasoning" (`:13`); "The first line says what happened and whether it is done" (`:67`) |
87
+ | The body of a change | No content list. Published Concise keeps "error reports, failing test output, security warnings, and confirmations for destructive actions" complete | No content list. Prose and table rules (`:410`); "if something about your reasoning or process is so important that it absolutely must be in user-facing text, save it for the end" (`:412`); faithful reporting (`:240`) | "explain what changed, why, how it was tested, and any material risks or limitations" (`:13`); shape-by-work row "outcome, what changed and why, how it was tested, risks" (`:27`); ordered by "easiest to assess" (`:15`) |
88
+ | Evidence and honesty | Nothing beyond "include only what is necessary for the user to understand" (`:420`) | Faithful reporting, 641 characters: "if tests fail, say so with the relevant output; if you did not run a verification step, say that rather than implying it succeeded… Never claim 'all tests pass' when output shows failures… when a check did pass or a task is complete, state it plainly" (`:240`); a gated verification-agent contract (`:394`) | "Every claim carries the evidence that supports it" (`:68`); the example says "I did not open it in a browser, so the visual result is unverified" (`:50-51`); no explicit anti-false-claim sentence of its own |
89
+ | The person's next step | "Decisions that need the user's input" (`:423`) | Same (`:423`); the away summary names "the concrete next step" and skips "status reports and commit recaps" (`awaySummary.ts:22`) | The code-change row names no next step (`:27`); the blocked-publish example gives the exact command and says "Nothing has been published" (`:59-63`) |
90
+ | Headers | No instruction. GitHub-flavored markdown, CommonMark rendering (`:188`) | "Match responses to the task: a simple question gets a direct answer in prose, not headers and numbered sections" (`:412`); "Write user-facing text in flowing prose while eschewing fragments, excessive em dashes, symbols and notation" (`:410`); "Only use tables when appropriate" | "There is no required heading and no preferred set… A short reply needs no headings… the content decides" (`:21`); "The headings name what is under them" (`:69`); both worked examples are headingless (`:46-63`) |
91
+ | Lists and tables | "If you can say it in one sentence, don't use three" (`:427`) | "Only use tables when appropriate; for example to hold short enumerable facts (file names, line numbers, pass/fail), or communicate quantitative data. Don't pack explanatory reasoning into table cells — explain before or after" (`:410`) | "Use tables for mappings or comparisons" (`:17`); "Write in connected prose. Use lists only when the information is genuinely parallel, sequential, or easier to compare… Use a table when several items share fields" (`:40`) |
92
+ | Length | "Your responses should be short and concise" (`:435`); "If you can say it in one sentence, don't use three" (`:427`); published Concise: a simple question in one to three sentences | "Length limits: keep text between tool calls to ≤25 words. Keep final responses to ≤100 words unless the task requires more detail" (`:534`, ant-only) | "Scale detail to complexity: a simple change usually needs one or two sentences plus the validation, and a larger change needs the reasoning, the evidence and the risks… Never repeat the request, the plan or the previous message" (`:36`) |
93
+ | References and formatting | `file_path:line_number` (`:436`), `owner/repo#123` (`:437`), no colon before a tool call (`:438`), no emoji (`:432`) | The same list (`:432-438`) | Markdown links to files (the pack's `working-folder` section); no line-reference, emoji or colon rule |
94
+ | Examples and the pre-send check | None | None | Two worked examples (`:46-63`, 767 characters) and four checks: first line, evidence, headings, no repetition (`:65-70`) |
95
+
96
+ ## Headers, exactly
97
+
98
+ Neither Claude Code build asks for a header. The external build never mentions them; its only
99
+ formatting sentence is the CommonMark note. The internal build's single header line is a warning
100
+ about the simple case — "a simple question gets a direct answer in prose, not headers and numbered
101
+ sections" — and it says nothing about a longer change report. Neither provides a header vocabulary,
102
+ and neither has an example with a header.
103
+
104
+ This harness is the only side that discusses headers at all, and it does so twice: the optional rule
105
+ ("no required heading and no preferred set… A short reply needs no headings… the content decides",
106
+ `reporting.ts:21`) and the check ("The headings name what is under them", `:69`). The check assumes
107
+ headers when they exist; it does not ask for one. The section's two worked examples, the only full
108
+ replies a session sees, carry none.
109
+
110
+ That headerless reply did not follow a Claude Code convention; it followed the Harness's then-current
111
+ optional rule and headingless examples. Claude Code's nearest text is narrower: it discourages
112
+ headers only for simple questions. ADR-0079 later changed the Harness guidance to often use
113
+ content-named `#` / `##` headings in substantive multi-part replies.
114
+
115
+ ## Subagent and recap reports
116
+
117
+ The same comparison at two smaller scopes:
118
+
119
+ | Report | Claude Code v2.1.88 | This harness |
120
+ |---|---|---|
121
+ | A subagent's final message | "respond with a concise report covering what was done and any key findings — the caller will relay this to the user, so it only needs the essentials" (`prompts.ts:758`, 403 characters); absolute paths, snippets only when the exact text is load-bearing, no recap of code merely read (`:768`, 434) | No child-specific rule. The `subagents` section (1,288 characters) ends "You own integration, verification and the user-facing report", which tells the parent where the report belongs, not what a child returns. Every pack carries the reporting section (`compile.ts:461`), and a recorded child run's pack does contain it, so a child is given the person-facing report text for a message the parent relays |
122
+ | A "while you were away" recap | "Write exactly 1-3 short sentences. Start by stating the high-level task… Next: the concrete next step. Skip status reports and commit recaps" (`awaySummary.ts:22`, 249 characters) | No recap surface; the progress-update rule shared by `writing` and `reporting` is the nearest text |
123
+
124
+ Claude Code gives each scope its own small contract. The harness relies on one section for every
125
+ scope, which is consistent but leaves the subagent case unstated.
126
+
127
+ ## What the phases show
128
+
129
+ - **Both sides put the answer first and ban preamble.** Claude Code: "Lead with the answer or
130
+ action" and "Do not restate what the user said". The harness: "Lead with the outcome", "The first
131
+ line says what happened", "Nothing is repeated from the request or the plan". This is the one
132
+ phase where the two texts agree almost word for word.
133
+ - **Only the harness lists the contents of a change.** Claude Code external has no content list at
134
+ all; its internal build gives prose and table rules, not questions to answer. The harness's four
135
+ questions (what changed, why, how it was tested, risks) are its own invention, and its shape-by-work
136
+ table is the nearest thing either side has to a template.
137
+ - **The harness's evidence rule is structural, Claude Code's is moral.** The harness requires a
138
+ claim to carry evidence but never says "never claim tests pass when they fail"; Claude Code
139
+ internal says exactly that, at 641 characters, and keeps the "state a pass plainly too" half.
140
+ Claude Code external has neither.
141
+ - **The next step is weaker on both sides than it looks.** Claude Code's main prompt only names
142
+ decisions that need input; its concrete next step lives in the away summary. The harness dropped
143
+ the next-step block in ADR-0074 and now shows a next step only in the blocked-publish example.
144
+ - **Progress updates are a separate phase in Claude Code and a duplicate in the harness.** Claude
145
+ Code's internal text puts the before-first-call line and the in-flight updates in the same section
146
+ as the final reply but treats them as separate moments. The harness carries the same
147
+ progress-update rule in both `writing` and `reporting` (a 113-character sentence), so the
148
+ reporting section spends text on a phase that is not the report.
149
+ - **Length is the only place Claude Code is more precise.** The internal build's numbers (≤25 words
150
+ between tool calls, ≤100 words final) are a research-backed anchor that the harness lacks; the
151
+ comment beside them says ~1.2% output-token reduction against a qualitative "be concise", with
152
+ quality impact unmeasured. The harness substitutes work-type guidance and no numbers.
153
+ - **The reader test is the one criterion Claude Code has and the harness lacks.** "Assume the person
154
+ has stepped away and lost the thread… Write so they can pick back up cold… Err on the side of more
155
+ explanation. Attend to cues about the user's level of expertise" (`:408`) is a check the harness's
156
+ "plain language over jargon" and "colleague" voice do not state.
157
+
158
+ ## What this supports
159
+
160
+ 1. **Headers are a house-style choice, not a peer default.** If substantial reports should carry
161
+ them, the section has to say so; before ADR-0079 it did not. The accepted guidance now often uses
162
+ content-named `#` / `##` headings for substantive multi-part replies, without a line-count floor,
163
+ fixed vocabulary or mandatory template.
164
+ 2. **Add the reader test, not a template.** Claude Code's "pick back up cold / match expertise"
165
+ wording fits the harness's existing "colleague" voice and costs ~150 characters. It addresses
166
+ the same problem as the examples without prescribing sections.
167
+ 3. **Restore an explicit honesty line.** The harness's strongest evidence rule is now an example;
168
+ Claude Code keeps 641 characters on faithful reporting in its internal build. A single sentence
169
+ ("If you did not run a check, say so; do not claim a check passed when it did not") closes the
170
+ gap without restoring ADR-0074's blocks.
171
+ 4. **Keep progress updates out of `reporting`.** The sentence is already in `writing`; removing the
172
+ duplicate keeps each phase in one place, as Claude Code does.
173
+ 5. **Do not adopt numeric word caps without a measured trial.** The only evidence is ant-only and
174
+ reports a token saving with unmeasured quality impact; the harness's work-type guidance is the
175
+ more conservative choice.
176
+ 6. **Give a child run its own report sentence.** ADR-0079 adds a concise caller-facing contract,
177
+ including useful paths and evidence, and omits a recap of code merely read.
178
+ 6. **Give a child run its own report sentence.** Claude Code's 403-character subagent contract
179
+ (essentials only, relayed by the caller) plus its 434-character notes matches what a child
180
+ actually returns; the harness gives children the person-facing section instead, and the parent is
181
+ told it owns the user-facing report. A one-line child section, or a scope field on the reporting
182
+ section, closes the gap.
183
+
184
+ ## Limits
185
+
186
+ - Claude Code v2.1.88 is a leaked source map, not a publication. The internal `# Communicating with
187
+ the user` text is gated behind Anthropic's own build, so it may be experimental and is not what
188
+ external users receive. The published Concise style is documented only from v2.1.237, a later
189
+ build that was not read here.
190
+ - This compares instructions, not replies: neither side's actual header frequency is measured.
191
+ - The internal build's total prompt size was not extracted, so its sections' shares are not given;
192
+ the verification-agent contract is feature-gated and was not measured.
193
+ - The harness numbers are one recorded pack (this session, 19,532 characters), captured before
194
+ ADR-0079. At the time, the captured reporting text matched the installed build and working tree.
195
+
196
+ ## Sources
197
+
198
+ - `external/claude-code-src/src/constants/prompts.ts` — `# System` (`:188`), faithful reporting
199
+ (`:240`), `# Communicating with the user` (`:405-414`), `# Output efficiency` (`:416-427`),
200
+ `# Tone and style` (`:430-441`), numeric anchors (`:534`), subagent prompt (`:758`, `:765-768`).
201
+ - `external/claude-code-src/src/services/awaySummary.ts:22` — the away-summary prompt.
202
+ - [Claude Code: Output styles](https://code.claude.com/docs/en/output-styles), fetched 2026-11-01.
203
+ - This harness: [src/prompt/reporting.ts](../../src/prompt/reporting.ts),
204
+ [src/prompt/standard.ts](../../src/prompt/standard.ts), and the recorded pack of run
205
+ `fe134053-24b3-40d0-b9a1-303d99c5140e` (`context.json`).
@@ -0,0 +1,20 @@
1
+ # Wide comparison matrix
2
+
3
+ One row per source per arm; ≤12 words per cell, verbs first. Detail and
4
+ citations live in the arm docs; this page is an index, not the analysis.
5
+
6
+ | Arm | this harness | opencode | omp (pi fork) | dsh | harness² | swe-agent | openhands SDK | kimi-cli | smolagents | claude-code |
7
+ |---|---|---|---|---|---|---|---|---|---|---|
8
+ | 01 prompt | compile.ts only; stable prefix + hidden context updates | template + deltas appended to history | parallel compiler; two-block cache; static invariant | ordered per-step sections + user snapshot | tree IS prompt, capped always-on | yaml config templates | pending | pending | step-log replay | CLAUDE.md hierarchy (pending) |
9
+ | 02 tools | providers + per-call gate; `{product}` | Effect plugins, codemode, MCP names | 30 rich builtin tools, tiers | defineTool registry, PTC mode | editable c4 guidance | YAML string bundles | pending | kosong abstract layer (archived) | code actions, @tool | descriptions answer how (pending) |
10
+ | 03 subagents | fresh run children + delivery receipts | subagent tool, fresh sessions, description route | task tool, worktree isolation, speculative | spawn/fork service, continuable | c5 own-context text agents | runs only | per-container opens | pending | none in-source | agents files (pending) |
11
+ | 04 skills | c6 tree skills, trust-gated loader | depth-6 scan, skill lazy-load | manage_skill; memory writes skills | durable capped catalog + skill tool | trigger lines validated | procedures via bundles | microagents (pending) | klips dir | prompt templates | SKILL.md (pending) |
12
+ | 05 context | context message + budgets | compaction agent, fixed template, verbatim tail | method ladder, snapcompact deterministic | formula trigger, prune first, FTS5 query | replica-era limits, trim-to-pay | bounded single shots | condensers pending | pending | full replay memory | auto-compact (pending) |
13
+ | 06 memory | wiki notes on file writes; guarded refine lane | none visible | 5 backends, two-phase consolidation, MEMORY.md | durability only: spill/todo/deliverables | per-domain experience library | none | pending | pending | step log | memory files (pending) |
14
+ | 07 governance | gate last; standing + single-use | per-leaf asserts, always/deny/ask | tier×policy, fails closed | pre-execute pipeline + guard | substrate-dependent | curated blocklists | confirmation policy | archived | executor = gate | permission modes (pending) |
15
+ | 08 execution | account-isolated sessions; host PTY | shell tool + separate pty daemon | in-process rust unix env | sandbox classes + single executor | substrate workspace | container env | workspace containers | kaos (archived) | intercepted exec | desktop app (pending) |
16
+ | 09 observability | runStore-only validated events | bus + UsageRecorded | stats dashboard + ledgers | OTel transport only, FEEDBACK_ONLY | runmark + reports | trajectories + inspector | event stream | klips vis | monitor.py | sentry optional |
17
+ | 10 refinement | ported harness² core (arm 10) | none | autoresearch hillclimb loop | none found | editor→probe→compose + reflector | IC design lessons | none found | archived | none | plan mode only |
18
+
19
+ Fill rule for later passes: replace `pending` from each source note's audit;
20
+ mark archived designs and reference the note.
@@ -0,0 +1,211 @@
1
+ # Arm 01 — System prompt / context assembly
2
+
3
+ Status: **core four audited** (opencode, omp, dsh, harness²); swe-agent,
4
+ openhands, kimi-cli, smolagents, claude-code pending.
5
+ Sources audited by explorer agents with citations; my own spot-checks marked.
6
+
7
+ Shape: design space → per-source comparison → trade-offs → adoption candidates.
8
+
9
+ ## 1. Design space
10
+
11
+ Where the model's instructions come from when a session starts, and how they
12
+ evolve mid-session. Sub-decisions:
13
+
14
+ 1. **Assembly location** — one compiler, a grid-like assembler, or a template
15
+ engine? Who is *allowed* to contribute (core only, plugins, file discovery)?
16
+ 2. **Static vs dynamic** — what is identical across calls of a session (or across
17
+ sessions, for cross-session cache) vs what must be refreshed; and *where* each
18
+ is injected (system message at node 0, later system messages, user messages
19
+ after history, synthetic messages inside history).
20
+ 3. **Reach of instructions** — always-on prose vs skills vs hooks vs scripts;
21
+ caps and budget language.
22
+ 4. **Cache discipline** — prefix stability, cache breakpoints, proactive
23
+ warming, append-only updates.
24
+ 5. **Editability/versioning** — how the tree of instruction files is versioned
25
+ or validated (this harness: never edit, only supersede).
26
+
27
+ ## 2. Comparison
28
+
29
+ ### this harness (reference point)
30
+
31
+ - The prompt is assembled only in `src/prompt/compile.ts`; sessions launch with a
32
+ stable system prefix plus a hidden `xingular-context` message appended to
33
+ native history for changing state (repo rules; `AGENTS.md`). Tree sections
34
+ c1–c8 are versioned; c1–c4 always-on and capped/validated (`tree/tree.ts`);
35
+ a version is never edited, only superseded (`tree/store.ts`).
36
+
37
+ ### opencode — compiler + instruction deltas
38
+
39
+ - Small text template with a tool-guidance placeholder, rendered per tool list
40
+ (`external/opencode/packages/core/src/session/system-prompt.ts:9-27`; the
41
+ template is `session/runner/prompt/system.txt`).
42
+ - Per-step transcript: system = agent template **plus an instruction baseline as
43
+ a second system part**; messages = history (`.../session/model-request.ts:99-119`).
44
+ - Instruction sources composed in a fixed order (codemode catalog, MCP,
45
+ references, skills, AGENTS.md discovery, builtins, API entries) with a comment
46
+ stating the order keeps "a reusable prompt-cache prefix"
47
+ (`.../session/context.ts:137-166`, comment at 152-154).
48
+ - Dynamic updates are **appended as system messages after history, before the
49
+ new user prompt**: AGENTS.md changes render as a unidiff patch or a full
50
+ rewrite; date/env/codeMode changes likewise (`.../session/generate.ts:53-57`,
51
+ `.../session/instruction-discovery.ts:127-149`, `.../session/builtins.ts:30-52`).
52
+ - Discovery: global file, ancestor walk, configured globs/URLs, watcher-driven
53
+ reload; **no size caps found** in the discovered files (auditor: unverified
54
+ beyond those files) (`.../config/plugin/instruction.ts:51-62,143-225`).
55
+ - On-demand AGENTS.md: the `read` tool injects ancestors as synthetic history
56
+ messages deduped by metadata (`.../tool/plugin/read.ts:82-104` →
57
+ `.../session/instructions.ts:74-79`).
58
+ - Cache hygiene: stable `promptCacheKey` from session affinity
59
+ (`.../model-request.ts:294-295`), tool definitions kept on the final step to
60
+ preserve the prefix (`.../runner/llm.ts:237`), prefix-stable image elision
61
+ (`.../model-request.ts:199-207`).
62
+ - Plugins get a per-request hook over `system`, `messages`, `tools`, `options`,
63
+ with tool-identity matching to prevent hook-invented tools
64
+ (`.../model-request.ts:236-320`, `packages/plugin/src/effect/session.ts:25-36`).
65
+
66
+ ### omp (oh-my-pi) — parallel compiler with deadlines, two-block cache
67
+
68
+ - `buildSystemPrompt` fans out **timed, parallel** preparation (project context
69
+ files, skills, workspace tree, active-repo context, personality; each with a
70
+ deadline fallback) (`external/omp/packages/coding-agent/src/system-prompt.ts:630,723-848,954-1009`).
71
+ - All prompt text lives in `.md` Handlebars templates, imported `{type:"text"}` —
72
+ repo rule "Prompts never in code"
73
+ (`.../system-prompt.ts:24-31`, `.../prompts/system/system-prompt.md`).
74
+ - **Stable prefix is a separate entry**: the default body renders as block 0;
75
+ `<project-context>` is appended as a *second prompt entry* so the static
76
+ prefix is shared across directories — with the comment that the Anthropic head
77
+ cache breakpoint lands right before it (`.../system-prompt.ts:1026-1036`).
78
+ - **Volatile content (date/cwd) was deliberately moved out of the system
79
+ prompt** because it "invalidated the whole tool array"; now injected onto the
80
+ first user turn per request, append-only, with a synthetic developer turn when
81
+ no new user turn exists (`.../session/date-cwd-reminder.ts:1-11,50-129`;
82
+ wired at `.../sdk.ts:4333-4340`).
83
+ **Verified in person**: `.../date-cwd-reminder.ts:1-12` — header comment states
84
+ the reason (open-weight chat templates render tool schemas *after* system
85
+ content, so a volatile tail invalidates the whole tool array), and lines 44-48
86
+ guarantee append-only injection: changed values attach to a newly appended
87
+ user turn, leaving every earlier message byte-identical.
88
+ - Instructions arrive via a **capability API**, not hard-coding:
89
+ `contextFileCapability` (project AGENTS.md family with dedupe), `systemPromptCapability`
90
+ (SYSTEM.md override), `instructionCapability` — extensions add content through
91
+ named slots (`.../capability/context-file.ts:26-56`,
92
+ `.../capability/system-prompt.ts:31`).
93
+ - Cache: `CacheWarmer` replays requests at ~90% of cache lifetime when savings
94
+ clear a floor (`.../session/cache-warmer.ts:1-17`); per-component token
95
+ usage breakdown (`systemPromptTokens`, `skillsTokens`, …,
96
+ `.../session/agent-session-types.ts:529-535`); truncating MCP server
97
+ instructions invalidates the tools cache breakpoint (`.../sdk.ts:1374-1375`).
98
+ - `metaharness` is **not** runtime prompt machinery: it is their benchmark
99
+ manager (Harbor/SnapCompact experiments over one SQLite store; runner note at
100
+ `.../packages/metaharness/src/runner.ts:1257-1258`). Their word "harness" in
101
+ `metaharness` = a harness around the harness, for measurement.
102
+
103
+ ### deepseek-harness (dsh) — ordered sections, snapshot-as-user-message
104
+
105
+ - Own package `packages/core/system-prompt`; assembled **per step** via an
106
+ ordered "waterfall" of sections/context entries
107
+ (`external/deepseek-harness/packages/core/system-prompt/src/index.ts:429,677-680`,
108
+ `.../agent-loop/src/agent.ts:272,407`).
109
+ - **Plugin contribution contract**: `ctx.systemPrompt.section()`, `.context()`,
110
+ `.tools(provider)`, `.variable(name, provider)` — sections are sorted by
111
+ numeric `order` then name, duplicates throw, scoped entries shadow globals,
112
+ and a `complete: true` section replaces everything else
113
+ (`.../system-prompt/src/index.ts:53-76,131-179,478-570,653-686`; shadowing
114
+ tested in `.../system-prompt/tests/scoped.spec.ts:33`).
115
+ - Static = section text at node 0 (identity fixed in code, `index.ts:449-466`);
116
+ dynamic facts (cwd, sandbox policy, time, plan) are `PromptContext` entries,
117
+ re-resolved per request and appended as a **durable user-role message**
118
+ headed "Current runtime context. This snapshot supersedes earlier…"
119
+ (`.../index.ts:314-318,582-602`, `.../agent-loop/src/agent.ts:411,429-440`).
120
+ - Workspace instructions also inject into history as sourced `user/message`
121
+ events, not system text (`.../packages/context/agent-instructions/README.md:88-103,158-186`).
122
+ - Tool ordering is part of prompt assembly: providers' tools are `structuredClone`d
123
+ and ordered by configured `toolOrder` with an `<unlisted-tools>` rest marker
124
+ (`.../system-prompt/src/index.ts:208-240,633-651,674`).
125
+ - Token metering as a service with fixed-density estimates
126
+ (`.../packages/llm/token-meter/src/index.ts:4-35`, `estimate.ts:16-27`).
127
+
128
+ ### harness² — the tree is the prompt; caps and economics
129
+
130
+ - Their editable tree per substrate (here for opencode): `systemprompt.md` (c1),
131
+ always-on files with caps, skills loaded on demand, subagents in own context,
132
+ scripts, and a plugin acting inside the tool loop
133
+ (`external/harness2/harness2/core/prompts.py:424-453`).
134
+ - Always-on prose is framed as an **output-budget** cost: "ALWAYS-ON PROSE IS THE
135
+ EXPENSIVE OPTION… the most costly failure on this work is a run that reasons
136
+ until the budget is gone and produces nothing" (`.../prompts.py:129-146,455-458`).
137
+ - Validation discards a whole harness for: a skill without a trigger line naming
138
+ it in always-on text; template braces in always-on text (Jinja StrictUndefined);
139
+ a named script that is missing (`.../prompts.py:148-167`,
140
+ `.../core/tree.py:15-21` — caps, frontmatter rules per `SurfaceSpec`).
141
+ - Notably, their opencode-surface table labels components **c1–c8** — the same
142
+ eight-component numbering this harness uses (`.../prompts.py:424-431`). Both
143
+ projects have converged on the same tree taxonomy; treat as confirmation of
144
+ shape, not shared code.
145
+ - Instruction-bearing text is data, not branches: "Benchmark text arrives as
146
+ values, never as branches" (`.../prompts.py:15-20`) — prompt templates are
147
+ parameterized by a `BenchPrompts` value, and each new benchmark gets slots,
148
+ not edits. Answer-free framing is literally part of the prompt
149
+ (`ANSWER_FREE`, `.../prompts.py:38-44`).
150
+
151
+ ### claude-code (from public material, no clone) — pending
152
+
153
+ CLAUDE.md hierarchy + `@` imports + `#` quick-memory; tool descriptions as the
154
+ home of usage guidance. To be filled with dated citations.
155
+
156
+ ### swe-agent / openhands / kimi-cli / smolagents — pending
157
+
158
+ ## 3. Trade-offs
159
+
160
+ - **Stable prefix vs fresh state.** Everyone converges on stable static +
161
+ appended dynamic. Two designs for the dynamic: (a) appended *system* messages
162
+ rendering deltas (opencode), (b) appended *user-role* context snapshot whose
163
+ text supersedes earlier ones (dsh). (a) is precise (a unidiff names what
164
+ changed); (b) is simpler and carries whole state per turn, at the cost of
165
+ re-sending unchanged facts.
166
+ - **Where volatile values live.** omp's lesson is the strongest: even one line
167
+ of date/cwd inside the system prompt invalidates far more than itself (it
168
+ invalidated the whole tool-array cache). Moving it into the user turn costs a
169
+ message but saves the prefix. dsh's snapshot approach (user message) has the
170
+ same property w.r.t. the system node.
171
+ - **Who may contribute.** Ordered, deterministic contribution with declared
172
+ order + name ties (dsh) vs deployment-order composition with a cache comment
173
+ (opencode) vs capability slots with dedupe (omp). The deterministic-order end
174
+ is friendlier to caching and to reasoning about plugins; the discovery end is
175
+ friendlier to "just drop a file in the repo" workflows but needs watcher-driven
176
+ reload and dedupe, and risks unbounded size (opencode has no caps).
177
+ - **Economics of always-on text.** harness² puts the sharpest numbers-language on
178
+ it: always-on prose competes with output budget; prefer on-demand forms. This
179
+ matches this harness's capped c1–c4, with the difference that harness² enforces
180
+ the "cut to pay" rule by validation and this harness by editor review.
181
+ - **Templates in code vs files.** omp keeps every word of prompt text in `.md`
182
+ templates; harness² inlines exact prompts as Python constants but keeps
183
+ benchmark text as values; dsh fixes identity prose in the constructor. Pure
184
+ style until a person wants to review/audit prompt diffs — then files win
185
+ (reviewable without code knowledge).
186
+
187
+ ## 4. Adoption candidates (Tier 1 unless noted)
188
+
189
+ | # | Idea | From | Land as | Notes |
190
+ |---|---|---|---|---|
191
+ | A1 | Move volatile date/cwd out of the stable prefix into the first user turn (or the appended context message) | omp `date-cwd-reminder.ts` | prompt sections change in `src/prompt/compile.ts` | **verify our current placement first**; high cache value if our prefix carries date |
192
+ | A2 | Named, ordered prompt sections with deterministic order-name ties and duplicate-name rejection; scoped shadowing | dsh `system-prompt` contract | a rule inside plugin prompt sections (existing surface) | makes section ordering a contract instead of an implementation detail |
193
+ | A3 | Render instruction deltas as unidiff-style "what changed" text in the appended context message | opencode `instruction-state.ts` | the `xingular-context` hidden message mechanism | our channel exists; this is a rendering upgrade |
194
+ | A4 | Proactive cache warming near the provider's cache TTL | omp `cache-warmer.ts` | *not* a harness surface — host/app concern | Tier 2; needs measurement harness first (`probe-chat-cache-app.py` in the App) |
195
+ | A5 | Memory/prompts in reviewable template files rather than inline strings | omp rule | none now — style guidance for future prompt text | Tier 2, low cost, no behavior change |
196
+
197
+ Carry later: opencode's "no caps on discovered instructions" as an anti-pattern to
198
+ contrast with c1–c4 caps; harness²'s three discard rules (trigger line, no
199
+ template braces, shipped scripts) when tree validation is next touched (arm 04).
200
+ Also carry:
201
+ - **Model-conditioned policy as data.** omp forbids model-conditional branching in
202
+ code entirely — no `id.includes("claude")`; all model/provider policy lives in a
203
+ declarative KDL rule tree compiled to `rules.json`
204
+ (`external/omp/AGENTS.md` — "Model/Provider Policy Lives in KDL"). opencode
205
+ instead ships per-model prompt adjustments as *plugins*
206
+ (`external/opencode/packages/plugin/plugin/optimize.ts:16-86` — confirmed by
207
+ explorer audit). Same problem (per-model prompt/policy deltas), two answers:
208
+ data tables vs evaluated plugins.
209
+ - omp's **judge-questions convention** — per-feature JSON mapping question ids →
210
+ `{instructions, criteria?}` — is source material for arm 10 (refinement) and
211
+ its answer-free selector.
@@ -0,0 +1,79 @@
1
+ # Arm 02 — Tools
2
+
3
+ Status: **core four audited** (opencode, omp, dsh + harness²/tree, smolagents,
4
+ swe-agent in person); kimi-cli archived; claude-code openhands pending.
5
+
6
+ ## Design space
7
+
8
+ How tools are declared (interface & schema origin), described (who writes the
9
+ model-facing guidance), provided (core vs provider vs plugin vs MCP), named and
10
+ ordered (namespacing, `toolOrder`), gated (tier/policy/event pipeline), and
11
+ whether tools are JSON calls at all — or the model writes code that calls them
12
+ (codemode / PTC / CodeAct).
13
+
14
+ ## 1. Comparison
15
+
16
+ | Source | Declaration | Gating | Calls |
17
+ |---|---|---|---|
18
+ | this harness | provider extension points; `describeTool` fills `{product}`; definitions in `src/tools/definitions.ts`, dispatch in `src/tools/dispatch.ts` | per-call gate, last extension to see a call | JSON + limited code tool |
19
+ | opencode | internal Effect plugins registering via `ctx.tool.transform(editor.add)`; `Tool.Info{input,execute,output,options{namespace,permission,codemode,pinned}}` | per-leaf `Permission.assert` (`allow\|deny\|ask`, `findLast` wildcard match, default ask; agent rules∪session; missing agent denies) | JSON by default, `codemode:true` folds tools into a code catalog |
20
+ | omp | 30 builtins; rich `AgentTool` (approval tier read\|write\|exec, loadMode, docTopics, per-call concurrency, speculation) | tier × per-tool policy `allow\|deny\|prompt`, modes `always-ask\|write\|yolo`; **fails closed** | JSON; speculative pre-dispatch |
21
+ | dsh | `defineTool` into `ctx.tools`; ToolRuntime self-feeds the system prompt via `.tools(provider)` | fixed pipeline `pre-execute(allow/deny/ask) → ctx.tools.guard() → execute → post-execute → result` | `mode: native` (all schemas) vs `ptc` (model sees only `run_code` + SDK) |
22
+ | harness² | tools = part of the editable tree, c4 tool guidance prose | whatever the agent's substrate does | JSON (substrate tools) |
23
+ | swe-agent | YAML bundles: `signature`/`docstring`/arguments; string parsing; `state_command` for interface state | curated blocklists in bundles | text commands into a stateful shell |
24
+ | smolagents | `@tool` decorated functions, schema from type hints, validated at init | none in-source (executor sandbox is the gate) | **code actions**; MCP tools bridged into code |
25
+ | kimi-cli | kosong async tool-orchestration abstraction (archived) | — | JSON |
26
+
27
+ Citations: opencode `external/opencode/packages/core/src/tool/plugin/subagent.ts:100-107`,
28
+ `.../tool.ts:161-291,233,293-296`, `.../permission.ts:87-97,158-172`,
29
+ `.../tool/runtime.ts:276-281`, `.../tool/mcp.ts:20-21,52-75`;
30
+ omp `external/omp/packages/agent/src/types.ts:1129-1243`,
31
+ `.../tools/approval.ts:17-18,53-84,100`, `.../tools/builtin-names.ts:1-36`;
32
+ dsh `external/deepseek-harness/packages/core/tools/README.md:30-109`,
33
+ `.../core/tools/src/index.ts:608-612,857,1513-1527`,
34
+ `.../core/system-prompt/README.md:50-52`; swe-agent
35
+ `external/swe-agent/tools/windowed/config.yaml:1-40`; smolagents
36
+ `external/smolagents/src/smolagents/tools.py` (init validation),
37
+ `.../tool_validation.py`.
38
+
39
+ Instruction-bearing descriptions: opencode embeds whole prose instructions in
40
+ tool descriptions, e.g. the never-poll rule for subagents
41
+ (`.../tool/plugin/subagent.ts:44-47`) and todo's full-file description imported
42
+ verbatim (`.../tool/todowrite.txt`, `.../tool/plugin/todo.ts:12`) — matching
43
+ the claude-code school. omp instead renders descriptions from static `.md`
44
+ templates (`.../tools/read.ts:975-996`; "prompts never in code"). dsh's `ptc`
45
+ moves *all* tool knowledge out of schemas into a generated SDK plus
46
+ `executionInstructions` (`.../core/tools/README.md:68-81`).
47
+
48
+ ## 2. Trade-offs
49
+
50
+ - **Tool descriptions = prime instruction real estate.** Every source pushes how-to
51
+ into descriptions; the divergence is *where the text lives*: inline strings
52
+ (opencode), md templates (omp, self-documenting diffs), schema-erased SDKs (dsh
53
+ ptc). md templates are cheapest to audit; inline is cheapest to write.
54
+ - **Gate taxonomies.** omp's declared tier × policy is the most legible to users;
55
+ opencode's per-leaf asserts are the most composable (plugins wrap calls);
56
+ dsh's pipeline events generalize hooks at the cost of indirection. All three
57
+ (and ours) converge on `ask` as a first-class outcome that surfaces to a person.
58
+ - **`toolOrder`/namespacing.** dsh validates order config at assembly with a
59
+ reserved rest margin; opencode mints `server_tool` names with dotted→underscore
60
+ namespaces; omp caps length at 64. Namespacing rules should be one place; ours
61
+ has MCP namespaces via the harness's own MCP integration — worth a contract
62
+ test, not new machinery.
63
+ - **Code-as-action in three strengths.** Full CodeAct (smolagents), opt-out
64
+ codemode (opencode), mode-switched PTC with SDK (dsh). All reduce schema token
65
+ cost and multi-call latency, all concentrate risk into the executor. For this
66
+ harness the gate is per-call and synchronous — free-form code actions are a
67
+ deliberate non-goal, but `codemode`-style *internal* catalogs remain open
68
+ behind existing tool providers.
69
+
70
+ ## 3. Adoption candidates
71
+ | # | Idea | From | Land as | Tier |
72
+ |---|---|---|---|---|
73
+ | A1 | Per-tool **approval tier declaration** (read/write/exec) on the harness ToolSpec; gate consults it when policy is silent | omp `AgentTool.approval` | `ToolPolicy` surface + `src/tools/types.ts` | T1 |
74
+ | A2 | Tool **descriptions from template files** rendered per `{product}` (`.md` in repo, imported `type:"text"`) instead of inline string literals in tool definitions | omp | tool definitions (`src/tools/*`) | T1 |
75
+ | A3 | `toolOrder`-style validated ordering when a caller pins an explicit tool set (fail loudly on unknowns/missing rest-marker) | dsh | capability freezing at `sessions.run` | T2 |
76
+ | A4 | Restrict allow/deny masks scoped to a subexpression that intersect and lift on dispose | dsh `ctx.tools.restrict` | child-run capability narrowing (`capabilities.intersect` already does this — verify equivalence before adding) | T2 verify-first |
77
+
78
+ Anti-candidates: open-ended code-as-action for model-driven tools (gate model);
79
+ moving gating into per-tool hooks (gate stays the final authority layer).
@@ -0,0 +1,90 @@
1
+ # Arm 03 — Subagents
2
+
3
+ Status: **core four audited** (opencode, omp, dsh, plus our ADR-0003 lineage);
4
+ openhands/claude-code pending.
5
+
6
+ ## Design space
7
+
8
+ Spawn model (tool vs scheduler vs server), child context (fresh, forked, or
9
+ continuable), isolation primitives (separate session, separate history, own
10
+ worktree/capabilities), delivery (block vs background + receipts), routing
11
+ (manual naming vs description-based auto-selection), and depth/capacity limits.
12
+
13
+ ## Comparison
14
+
15
+ **this harness.** `spawn_subagent` + `wait_subagents` tools
16
+ (`src/tools/spawnSubagent.ts`): child is "a fresh child run for independent
17
+ work… no conversation history and no more capabilities than you"; spawn returns
18
+ the child run id immediately; results arrive **automatically before you finish**
19
+ (native-history delivery receipts per ADR-0003); 24k per-report cap
20
+ (`spawnSubagent.ts` `reported()`); depth limits live in
21
+ `src/sessions/subagents.ts` (exported constants). Architectural statement:
22
+ Architectural statement:
23
+ opaque-run children (runStore writes, opaque ids).
24
+
25
+ **opencode — subagent is a tool, not a scheduler.** Agents registry
26
+ (`mode: primary|subagent`) with selectability excluding subagents from direct
27
+ conversation (`.../core/src/agent.ts:74-75`). The `subagent` tool rejects
28
+ primaries/unknowns, enforces depth via config, asserts permission, then creates
29
+ a child session and prompts it "You are a subagent spawned by another session."
30
+ — **fresh context, nothing inherited** (`.../tool/plugin/subagent.ts:129-218`).
31
+ Foreground variant blocks and wraps the final text in
32
+ `<subagent sessionID=… state="completed">`; background replies immediately with
33
+ an explicit **never-poll instruction** and completion notification
34
+ (`.../subagent.ts:19-27,229-265`). **Routing is description-based**: a context
35
+ hook appends "Available subagents:" with each agent's own description to the
36
+ tool description (`.../subagent.ts:282-309`).
37
+
38
+ **omp — spawn machinery with isolation budgets.** The `task` tool; agent
39
+ definitions from bundled + `~/.omp/agent/agents/*.md` + `.omp/agents/*.md`
40
+ (`.../task/index.ts:4-10`). `SpawnRun` holds a semaphore permit and streams
41
+ progress; the owner adopts binding abort signal/sinks
42
+ (`.../task/spawn-run.ts:47-88`). **Speculative launch starts the child while
43
+ the `tasks[]` argument is still streaming** (`.../task/speculative-launch.ts`).
44
+ Isolation: pinned settings, advisor forced off, **mid-turn compaction forced on
45
+ (whole assignment is one turn)**, isolated runs get their own **worktree** and
46
+ may not expose roots outside it (`.../task/executor.ts:1132,4033-4055,4339`).
47
+ Structured children get `yield` to stream partial results
48
+ (`docs/task-agent-discovery.md:38`).
49
+
50
+ **dsh — services + backends, two child topologies.** `ctx.subagents` +
51
+ provider backends (local, ACP, Codex, Claude DSH-SDK) + a tool plugin
52
+ (`.../packages/subagent/README.md:27-35`). Spawn returns `started subagent
53
+ <childId>` immediately; a completion notice delivery later
54
+ (`.../tool-subagent/README.md:59`). `spawn` = fresh child; **`fork` = seeded
55
+ from the parent's completed history** (`.../subagent/README.md:28-29` — the one
56
+ source with tree-history in context children). Local children **continue
57
+ accepting messages** (cold-resume); external backends "execute once"
58
+ (`:12,61`). Defaults: 8 active, depth 1 (`.../subagent/README.md:53,49`).
59
+ The model names presets from an enum allowlist; **no description routing**
60
+ (`.../tool-subagent/README.md:52,68`).
61
+
62
+ **openhands (pending)** conversation-per-container REST server;
63
+ **claude-code (pending)** `.claude/agents/*.md` description routing.
64
+
65
+ ## Trade-offs
66
+
67
+ - **Receipts vs block.** Ours receipts-then-auto-deliver; opencode's
68
+ foreground blocks and the background variant needs a no-poll instruction to
69
+ stop wasted loops — our "results arrive automatically" tool description does
70
+ the same thing natively. block variants pay latency, buy simplicity.
71
+ - **What the child sees.** Everyone defaults fresh. dsh's `fork` (parent history
72
+ as seed) is the only in-history-inherited design — powerful for "continue in
73
+ the main context's condition", dangerous for either prosecution
74
+ side-venting or slow joins; ours rejects it by `"no more capabilities than
75
+ you"` + fresh-run rule.
76
+ - **Isolation granularity.** worktree (omp isolated runs) is the strongest
77
+ world-isolation; ours ties isolation to account and run records instead. The
78
+ `tools` CSV narrowing idea maps to our `capabilities.intersect` — same
79
+ primitive, different vocabulary.
80
+ - **Routing.** Description-based auto-pick (opencode, and claude-code's docs)
81
+ puts all selection power in the model's reading; ours requires named briefs
82
+ and a Directory when names exist, which matches the opaque-id
83
+ contract (no names in the harness; names arrive via Directory).
84
+
85
+ ## Adoption candidates
86
+
87
+ | # | Idea | From | Land as | Tier |
88
+ |---|---|---|---|---|
89
+ | S1 | Inject capability-set summaries (slots "Current subagents") into the tool description **when names exist via Directory**, instead of static description | opencode context hook | tool provider building the spawn tool's description | T2 (only if app supplies names) |
90
+ | S2 | Receipt text carries child tool limits next to the 24k cap (`reported()` already does this only implicitly; make the receipt self-describing) | ours (deficiency) | `spawnSubagent.ts` | T1 |