@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,85 @@
1
+ ---
2
+ id: PROP-0048
3
+ title: One annotate page, two actions, and easy app attach
4
+ status: Implemented
5
+ created: 2026-10-27
6
+ updated: 2026-10-27
7
+ affects: [PROP-0018, 07-tools-and-gate.md, 10-server-protocol.md, 11-terminal.md, 13-world-tools.md, terminal-tui.md, parity.md]
8
+ ---
9
+
10
+ # PROP-0048: One annotate page, two actions, and easy app attach
11
+
12
+ ## Problem
13
+
14
+ People testing `/annotate:` found it hard to use:
15
+
16
+ - `/annotate:annotate` duplicated `/annotate:` in every command list.
17
+ - With no address, the page asked for one in a dialog that opened *behind* the full-screen page.
18
+ `PageOverlay` started its page in its constructor, before `dialogs.custom` mounted the overlay,
19
+ so any dialog the page opened as it started was stacked below it.
20
+ - While that hidden dialog waited, the page's single-action guard dropped every key (`s`, `i`)
21
+ without a word: "send queue sometimes doesn't work".
22
+ - A send held back while the agent was busy was tried once, 250 ms after the run ended. If the
23
+ terminal still reported its turn as active, the notes waited forever.
24
+ - `/annotate:notes` was a separate centred dialog with its own capture flow.
25
+ - The popover had three choices (save, ask the agent to fix, proceed now), the page had a queue, a
26
+ confirm step, an unqueue key and a "fixed" status reported by the agent's `page_notes_mark_fixed`.
27
+ - Attaching an Electron app needed its DevTools address typed by hand.
28
+
29
+ ## Design
30
+
31
+ **Delivery.** A note is either **pending** (shared with the session, unsent) or **sent**.
32
+ `NoteDelivery.state` is `pending | sent`; records written before this read `queued` as `pending`
33
+ and `fixed` as `sent`, without a migration write. Every annotation made in the inspector with a
34
+ session is shared with it at once. The popover has two buttons: **Annotate** (`save`) and
35
+ **Annotate & send** (`send`, also Cmd/Ctrl+Enter); `send` sends *all* the session's pending notes
36
+ as one message. Any other action the page reports is a save. Page-origin notes (DevTools or
37
+ bridge, untrusted) still wait for the person's confirmation; the terminal asks once for all of
38
+ them, and an `empty` send reports how many still wait.
39
+
40
+ `NoteDeliveries.runEnded` now tries a held-back send again (250 ms, 1 s, 3 s, 8 s) while the
41
+ session answers `busy`, and starts over if another run ends meanwhile.
42
+
43
+ `/annotate:submit <request>` sends the pending notes with the person's request after them
44
+ (`compose(notes, prompt)`). With no pending notes it sends nothing. A request is not kept while
45
+ the agent is busy; the notes stay pending and the person submits again. `/annotate:clear` resolves
46
+ the session's pending notes and withdraws their grant to it; they can be reopened from
47
+ `/annotate:notes`.
48
+
49
+ `page_notes_mark_fixed` is removed; the agent's page-note tools are read-only again. Only the
50
+ person resolves a note.
51
+
52
+ **Commands.** A built-in command may be `rootOnly`: it is the namespace root (`/annotate:`) and has
53
+ no named route, is not listed, and is not reachable as `/plugin:<name>`. The annotations plugin has
54
+ `/annotate: [url | --app [port] | --bridge]`, `/annotate:notes`, `/annotate:submit` and
55
+ `/annotate:clear`.
56
+
57
+ **One page.** `AnnotatePage` is one full-screen page with an **Annotate** tab and an **All
58
+ annotations** tab (`/annotate:notes` opens on the second). The Annotate tab takes the page address,
59
+ a DevTools port or an app path in an inline field, never a dialog. `a` opens a list of the apps
60
+ answering on a DevTools port on this computer, with *Start an app with a DevTools port*, *Type a
61
+ DevTools port*, *Use the page bridge* and *Annotate a web page instead*. The notes are grouped
62
+ **Unsent (n)** and **Sent**. A key pressed while the page is busy is answered with a notice.
63
+
64
+ `PageOverlay` starts its page when the host reports it mounted (`mounted()`, called by
65
+ `dialogs.custom` after `showOverlay`), or on the next turn for a host that does not. Dialogs a page
66
+ opens as it starts now stack above it, on every page.
67
+
68
+ **DevTools apps.** `AnnotationCapture.discover()` probes `127.0.0.1` on ports 9222–9230 and any port
69
+ used before, reading `/json/version` and `/json/list` with a short timeout. A Node inspector
70
+ (`node.js/…`) is skipped. `launchApp(key, path, args)` starts the program (the one inside a macOS
71
+ `.app` bundle) with `--remote-debugging-port=<free loopback port>`, waits for its DevTools port, and
72
+ attaches. The app keeps running after the capture ends. The loopback-only rule for `cdp` targets
73
+ is unchanged.
74
+
75
+ **Protocol.** Removed: `annotations.queue`, `annotations.dequeue`, `annotations.queued`. Added:
76
+ `annotations.pending`, `annotations.markPending`, `annotations.confirmAll`, `annotations.clear`,
77
+ `annotations.capture.discover`, `annotations.capture.launch`. `annotations.createAndAct` takes
78
+ `save | send`; `annotations.compose` and `annotations.send` take an optional `prompt`. Terminal
79
+ routes: `terminal.annotations.confirmAll|clear|discover|launch`; `queue` and `dequeue` are gone.
80
+
81
+ ## Consequences
82
+
83
+ The App's Annotate panel used `queue`, `fixed` and `createAndAct('queue')` and follows in its own
84
+ change. The prompt's Annotations group no longer names `page_notes_mark_fixed`, which changes the
85
+ stable prefix once.
@@ -0,0 +1,415 @@
1
+ ---
2
+ id: PROP-0049
3
+ title: Context attribution as a built-in capability
4
+ status: Implemented
5
+ created: 2026-10-28
6
+ updated: 2026-10-28
7
+ affects: [INV-PRM-6, INV-SRV-1, INV-PAR-1, INV-PAR-2, INV-RUN-7, 04-prompt.md, 10-server-protocol.md, 11-terminal.md, 14-surfaces-and-parity.md, parity.md]
8
+ ---
9
+
10
+ # PROP-0049: Context attribution as a built-in capability
11
+
12
+ ## Problem
13
+
14
+ A person can see that a run is expensive but not where the context goes. The harness already
15
+ records every fact needed to answer it, and no surface shows the answer:
16
+
17
+ - `runs/<id>/context.json` holds the pack the run was given: each section's `title`, `size`
18
+ (characters), `budget`, `cut` and `sources`, plus `toolGroups` and the variant fingerprint
19
+ (`src/prompt/compile.ts`).
20
+ - `runs/<id>/events.jsonl` holds `context.snapshot` — the verbatim `systemPrompt`, the
21
+ `contextUpdate`, and every tool's `{name, description, parameters}` — and `usage.updated`, whose
22
+ `contextTokens` is the provider-measured size of the latest request and `contextWindow` the
23
+ model's limit (`src/sessions/contracts.ts`, emitted by `src/sessions/runner.ts`).
24
+ - `Pi` computes a live `{ tokens, contextWindow, percent }` for the session
25
+ (`getContextUsage()`), and its estimator is `ceil(chars / 4)`
26
+ (`node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js`).
27
+
28
+ What is missing is the attribution: a row per contributor, tokens, share of the window, and a
29
+ stack that reconciles to the measured total. The App shows a reply's context pack as a collapsed
30
+ `<details>` list of character counts (`App/src/modes/shared/ContextPackView.tsx`), and a single
31
+ `Meter` for "context at the end" (`App/src/modes/shared/SessionContextInspector.tsx`). The terminal
32
+ declares `model.contextWindow` on its status band and never renders it
33
+ (`src/terminal/tui/status.ts`). `usage.summary` carries no context fields at all
34
+ (`src/usage/types.ts`).
35
+
36
+ Attribution is something a person uses, so it belongs in the Harness with a terminal surface
37
+ before an App screen (`INV-PAR-1`, `INV-PAR-2`).
38
+
39
+ ## What other harnesses show
40
+
41
+ Evidence is from the checkout in `external/` for open repositories, and from official docs for
42
+ Claude Code, Codex CLI and Gemini CLI. "Third-party" marks a claim read from a user report rather
43
+ than a vendor document.
44
+
45
+ | Harness | Where it shows | Rows / categories | % of window | Visual | Measured vs estimated | Thresholds | Actions from the view |
46
+ |---|---|---|---|---|---|---|---|
47
+ | **Claude Code** | `/context` command in the transcript; ring in the desktop panel; scriptable status line | `System prompt`, `System tools`, `MCP tools`, `Custom agents` (with source), `Memory files`, `Skills`, `Messages`; plus `Autocompact buffer` and `Free space` | Per row and in the header `598.5k / 1M (60%)` | "Colored grid" (docs); a table of tokens + % in the panel (**third-party**, [issue #94436](https://github.com/anthropics/claude-code/issues/94436)) | Estimated per row; header from measured | Ring blue → yellow → red; over-limit banner naming `/compact` | Text suggestions only ("trim CLAUDE.md · 49k per request"); `/usage` can apply some |
48
+ | **Pi** (the engine under this harness) | TUI footer segment | One aggregate: `45.3%/200K (auto)` plus `↑in ↓out R<cache> W<cache> CH<hit>% $cost` (`dist/modes/interactive/components/footer.js:133-200`) | Yes, one decimal | Text, coloured | `getContextUsage()` = measured usage anchored, tail estimated at chars/4 | `>70` warning, `>90` error; `?/window` when unknown | `/compact` |
49
+ | **opencode** | Sidebar block + prompt footer (`external/opencode/packages/tui/src/feature-plugins/sidebar/context.tsx:20-51`, `prompt/footer.tsx:38-55`) | One aggregate: `N tokens`, `N% used`, `$cost` | Rounded integer | Plain text, no bar, no colour | Last provider usage only (`util/session.ts:46-61`) | None | `<leader>c` / `/compact`; auto-compact reserves 15% or 16k |
50
+ | **oh-my-pi (omp)** | Status-line segment system (`external/omp/packages/tui/src/status-line/footer.ts:171-260`) | One aggregate: `45.3%/200K`, per-direction counters, billing | One decimal | Coloured text, segment priorities | Provider-anchored, tail estimated; strict/approximate/upperbound tokenizer modes | Percent **or** absolute tokens, whichever first: 50%/150k, 70%/270k, 90%/500k (`chrome/context-thresholds.ts:6-11`) | `/compact` modes, `/shake` (drop heavy tool results), `/handoff` |
51
+ | **DeepSeek Harness** | Web chat statistics dock; per-turn disclosure (`external/deepseek-harness/packages/client/ui-chat`) | `systemTokens`, `toolsTokens`, `messageTokens` — exactly three (`packages/llm/token-meter/README.md`) | Separate `contextPressure.pressureTokens`; the division is client-side | Not confirmed | Explicit: provider usage reused only on an identical request envelope, else estimated; rows are "approximate composition, never a total" | Compaction at `min(W×0.8, W−O−65536)` | `/compact`; tool-result pruning |
52
+ | **Kimi CLI** | Status bar, right-aligned (`external/kimi-cli/src/kimi_cli/ui/shell/prompt.py:2251`, `soul/__init__.py:80`) | One aggregate: `context: 42.0% (4.2k/10.0k)` | Percent first | Plain text | Last provider usage (lags one request) | Ratio 85% **or** 50k reserve (`soul/compaction.py:59`) | `/compact`, `/clear` |
53
+ | **Orca** | 16px SVG ring in the composer row, click/hover opens a popover (`external/orca/src/.../NativeChatContextUsageRing.tsx`) | Passes the underlying CLI's own categories through verbatim, with a `deferred` flag for on-demand context | Row % only, one decimal; ring clamps, stored value does not | Ring + `Progress` bar in the popover | Three states: `report`, `estimate`, `unknown`; window held separately from used | `CRITICAL_PERCENTAGE = 90` turns the ring destructive | None — read-only |
54
+ | **Codex CLI** | `/status` prints configuration and "remaining context capacity"; `/statusline` picks footer fields (`developers.openai.com/codex/cli/slash-commands`) | No breakdown | Remaining capacity | Configurable footer items: model / context / limits / git / tokens / session | Not documented | Not documented | `/compact` |
55
+ | **Gemini CLI** | `/stats` full-screen report (`external`-free; `docs/reference/commands.md:438-450`) | `session` (duration, tool calls), `model` (token counts, quota), `tools` (per-tool) | Not in the documented output | Text tables | Not documented | Not documented | `/compress` |
56
+
57
+ Distinctive ideas worth keeping, by harness: **Claude Code** — a stack closed by `Autocompact
58
+ buffer` + `Free space`, and the remedy named inside the view. **Pi** — `?` when the window is
59
+ unknown rather than `0%`. **opencode** — one `formatContextUsage` helper shared by every surface, so
60
+ they cannot disagree. **omp** — warn on percent *or* absolute tokens (small windows warn at the
61
+ same absolute size) and a declared drop order for narrow terminals. **DeepSeek** — three separate
62
+ projections (billing, occupancy, composition), never mixed into one number. **Kimi** — percent
63
+ first, `used/total` in parentheses, readable at 30 columns. **Orca** — show the provider's own
64
+ category names instead of inventing a taxonomy, and mark deferred context as deferred. **Codex** —
65
+ the person chooses which fields the always-on strip carries.
66
+
67
+ ## Affected rules
68
+
69
+ - **INV-PRM-6** Each run's pack is recorded beside the run; failing to record it never fails the
70
+ session. Attribution reads that record and adds per-section rendered sizes to it. Recording
71
+ stays best-effort.
72
+ - **INV-SRV-1** `src/server/methods.ts` is the contract for every non-Node host. `context.attribution`
73
+ is additive: no existing method, param or result shape changes.
74
+ - **INV-RUN-7** Token accounting keeps its meaning. `usage.updated.contextTokens` stays the
75
+ provider's figure for the latest request; attribution never rewrites it, and marks every row it
76
+ derived as estimated.
77
+ - **INV-PAR-1 / INV-PAR-2** The capability lands in the Harness with a terminal surface, and the App
78
+ presents the same rows from the same method.
79
+ - **INV-PRM-1** The prompt is still assembled only in `src/prompt/compile.ts`. Attribution measures
80
+ what that compiler produced; it never assembles text.
81
+
82
+ ## Proposal
83
+
84
+ ### 1. The measurement model
85
+
86
+ Three facts are read, and nothing new is written per request:
87
+
88
+ | Fact | Source | Kind |
89
+ |---|---|---|
90
+ | `systemPrompt`, `contextUpdate`, `tools[]` | `context.snapshot` event | recorded verbatim |
91
+ | `contextTokens`, `contextWindow` | latest `usage.updated` event | **measured** by the provider |
92
+ | sections, `toolGroups`, variant, `delivery` | `runs/<id>/context.json` | recorded at compile time |
93
+
94
+ One constant, `CHARS_PER_TOKEN = 4`, the same ratio Pi, opencode, DeepSeek and Kimi use, so a row
95
+ in this view and the `/context` header never disagree by more than rounding.
96
+
97
+ `compile.render()` records the rendered size of each section (including the `## Title` framing and
98
+ the gaps between sections) and, inside a section, the characters contributed by each `Source`. That
99
+ is the only change to recorded data: it removes the need to re-parse a prompt later, which cannot
100
+ be done safely because a variant section's body may itself contain `## ` headings.
101
+
102
+ Rows are built in this order, and the last one is a subtraction rather than an estimate:
103
+
104
+ 1. **System prompt sections** — each `Section`'s rendered characters ÷ 4, attributed to the group
105
+ that owns it.
106
+ 2. **Tool schemas** — `JSON.stringify({name, description, parameters})` ÷ 4 for each recorded tool,
107
+ grouped by the pack's `toolGroups`; a tool in no group becomes `Other tools`.
108
+ 3. **This request's update** — the recorded `contextUpdate` ÷ 4.
109
+ 4. **Conversation** — `contextTokens − tokens(1..3)`, floored at zero. When the subtraction would go
110
+ negative the prefix rows are scaled down and the view says the prefix estimate exceeded the
111
+ measured total; it never shows a negative row.
112
+ 5. **Compaction reserve** — Pi's `settings.compaction.reserveTokens` (default 16 384) when
113
+ auto-compaction is on.
114
+ 6. **Free space** — `contextWindow − contextTokens − reserve`, so the stack sums to the window with the
115
+ reserve shown as its own row (the reserve is headroom the next request may not use, not free space).
116
+
117
+ The rows therefore always add up to the window, and the number in the header is always the
118
+ provider's. A run with no `usage.updated` yet shows estimated rows and marks the header
119
+ `estimate only`; a session whose window is unknown shows `/ ?` like Pi, never `0%`.
120
+
121
+ ### 2. The row taxonomy: foundation, variant, application, conversation
122
+
123
+ This is where the harness can say something no other harness can. Rows group by *who owns the
124
+ text*, and variant rows say whether they cost every request:
125
+
126
+ | Group | Members | Owner |
127
+ |---|---|---|
128
+ | **Foundation** | Harness identity, tool guidance, tool schemas (History, Wiki, Native, World, Progress, Session, Annotations), Wiki pointer, session state, references, reporting rules | released harness |
129
+ | **Variant c1–c8** | Instructions (c1), Guardrails (c2), Memory (c3), Tool guidance (c4), subagent index (c5), skills index (c6), scripts index (c7) | `variant/`, refinable |
130
+ | **Your application** | Identity, role, working folder, skills, plugin descriptions, connected apps, annotations | the host's sections and tool groups |
131
+ | **Conversation** | Messages and tool results (measured residual), context updates | the run |
132
+ | **Reserved and free** | Compaction reserve, free space | Pi, the model |
133
+
134
+ Two facts make the variant rows actionable: `alwaysOnMax` caps always-on variant text at 24 000
135
+ characters (`src/variant/surface.ts`), and only components with `reach: 'always'` occupy the prompt
136
+ on every request. The view therefore shows a **budget meter per variant row** (`3.6K of 24K`) and a
137
+ separate **on demand** list — skills, subagents, scripts — which are not in this request but will
138
+ cost about *n* tokens when loaded. Claude Code shows a `Skills` row without that distinction; Orca
139
+ has the `deferred` flag but no per-row cost. Showing both is the improvement.
140
+
141
+ The foundation/variant split also gives the view its one obvious action: a variant row deeper than
142
+ the cap, or plainly oversized, links to the Harness screen where it is edited or refined.
143
+
144
+ ### 3. Surfaces
145
+
146
+ **Harness (reference terminal).** A `/context` full-screen page built like `/usage`:
147
+ `src/terminal/tui/pages/contextPage.ts`, registered in `commandPages.ts` as a command page, reading
148
+ `context.attribution`. It also fills the gap in `src/terminal/tui/status.ts`, whose band declares
149
+ `model.contextWindow` and never paints it: the band gains `45.3%/200K` in the same place Pi puts it.
150
+
151
+ **Server.** One additive method:
152
+
153
+ ```
154
+ context.attribution { runId }
155
+ → {
156
+ runId, model, provider, window, used, share, // numbers the provider reported
157
+ source: 'measured' | 'estimate', // which of the above is trusted
158
+ compaction: { enabled, reserveTokens, thresholdTokens } | null,
159
+ rows: [{ id, title, group, tokens, chars, share, always, estimated, cut?,
160
+ budget?, sources?, tools?, note? }],
161
+ onDemand: [{ id, title, tokens, items }],
162
+ totals: { foundation, variant, application, conversation, reserved },
163
+ recordedAt
164
+ }
165
+ ```
166
+
167
+ `context.runPack` keeps returning the text; the App already calls it from
168
+ `App/src/bridge/commands.ts:642`, and the new page uses it to show a row's actual prompt slice.
169
+
170
+ **App.** A full-width page, not a sidebar tab — the sidebar is ~360–420 px wide, and a 6-column
171
+ accounting sheet needs the main pane:
172
+
173
+ - `ContextAttributionPage` in the main pane, opened from (a) the Context view's header, (b) a
174
+ compact meter in the composer footer, (c) the command palette. It uses the same host pattern as
175
+ agent configuration: a header strip with a close control
176
+ (`App/src/modes/solo/SoloWorkspace.tsx:263-265`).
177
+ - The compact meter reuses `Meter` (`variant="ring"`) from `@xingular/ui` and opens the page.
178
+ - The stack and its legend reuse `SegmentedBar` from `@xingular/ui/ui/charts`, whose `Segment` type
179
+ is already `{ key, label, value, color, display, share, title, recorded }` — exactly this page.
180
+ - A cache strip uses `CacheUsageBadge` and `formatTokens` from
181
+ `App/src/modes/shared/usage/usageModel.ts`.
182
+
183
+ ### 4. Sketches
184
+
185
+ A rendered version of these sketches, in the dark theme with the shared tokens, is
186
+ [`outputs/context-attribution-sketch.html`](../../../../outputs/context-attribution-sketch.html)
187
+ (open it in a browser; four tabs, switchable). All three options use one dataset, and the rows add
188
+ to the provider's measured total.
189
+
190
+ **Option A — accounting sheet (Claude Code's shape, this harness's rows).** Recommended.
191
+
192
+ ```
193
+ ┌─ Context ────────────────────────────────────────────────────────────────────────────────┐
194
+ │ claude-sonnet-4-6 · 1M window · run r-8f21 auto-compact at 983.6K [x] │
195
+ │ │
196
+ │ 183.4K / 1M · 18.3% measured · provider-reported │
197
+ │ ████████▓▓▓▓▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
198
+ │ ├ foundation 13.1K ┤├ variant 18.4K ┤├ app 9.8K ┤├ conversation 142.1K ┤ │
199
+ │ │
200
+ │ ALWAYS IN CONTEXT TOKENS SHARE OF BUDGET │
201
+ │ v Foundation · harness 13.1K 1.3% │
202
+ │ Harness identity 29 0.0% 29 / 1.0K chars │
203
+ │ Tool guidance 1.9K 0.2% 1.9K / 8.0K chars │
204
+ │ Tool schemas · 34 tools 9.4K 0.9% │
205
+ │ History 3 · Wiki 6 · Native 6 · World 5 · Connections 7 · Other 7 │
206
+ │ Wiki pointer 1.1K 0.1% 1.1K / 2.5K chars │
207
+ │ Reporting rules 712 0.1% 712 / 2.0K chars │
208
+ │ Session state · references 0 0.0% no update this request │
209
+ │ v Variant · c3 · 9a1f 18.4K 1.8% │
210
+ │ Instructions (c1) 8.2K 0.8% 8.2K / 24K chars │
211
+ │ Guardrails (c2) 4.1K 0.4% │
212
+ │ Memory (c3) 3.6K 0.4% │
213
+ │ Tool guidance (c4) 2.5K 0.3% │
214
+ │ v Your application 9.8K 1.0% │
215
+ │ Identity · Role · Working folder 2.4K 0.2% │
216
+ │ Skills index · 12 skills 1.1K 0.1% │
217
+ │ Connected apps · 7 tools 6.3K 0.6% │
218
+ │ v Conversation 142.1K 14.2% measured by subtraction │
219
+ │ Messages and tool results 142.1K 14.2% │
220
+ │ │
221
+ │ RESERVED AND FREE │
222
+ │ Compaction reserve 16.4K 1.6% Pi, auto-compaction │
223
+ │ Free space 800.2K 80.0% │
224
+ │ │
225
+ │ ON DEMAND · not in this request when loaded │
226
+ │ Skills c6 · 12 available ~ 4.2K per skill │
227
+ │ Subagents c5 · 3 available own context each │
228
+ │ │
229
+ │ Rows are estimated from recorded character counts (÷ 4) and reconciled to │
230
+ │ the provider measured 183.4K; Conversation is the remainder, so the rows add │
231
+ │ to the whole. │
232
+ └──────────────────────────────────────────────────────────────────────────────────────────┘
233
+ ```
234
+
235
+ **Option B — ledger plus detail pane.** The same rows on the left; selecting one shows what it is
236
+ on the right: the prompt text, the section's sources and revision, and the actions that apply.
237
+
238
+ ```
239
+ ┌───────────────────────────────────────────────┬──────────────────────────────────────────┐
240
+ │ CONTEXT ██████████░░░░░░░░░░ 18.3% │ Instructions (c1) │
241
+ │ 183.4K of 1M · sonnet-4-6 · 34 tools │ ───────────────────────────────────── │
242
+ │ │ 8.2K tokens · 0.8% of the window │
243
+ │FOUNDATION 13.1K 1.3%│ always in context · 8.2K / 24K chars │
244
+ │ Harness identity 29 0.0%│ variant c3 · fingerprint 9a1f │
245
+ │ Tool schemas 9.4K 0.9%│ source systemprompt.md │
246
+ │ Tool guidance 1.9K 0.2%│ +----------------------------------+ │
247
+ │ Wiki pointer 1.1K 0.1%│ | You are the person's assistant, | │
248
+ │ Reporting 712 0.1%│ | working with them directly in | │
249
+ │VARIANT · c3 18.4K 1.8%│ | this session: research, writing | │
250
+ │ Instructions c1 8.2K 0.8%│ | and coding in its working folder | │
251
+ │ Guardrails c2 4.1K 0.4%│ +----------------------------------+ │
252
+ │ Memory c3 3.6K 0.4%│ [Open in Harness] [Refine this] │
253
+ │ Tool guidance c4 2.5K 0.3%│ │
254
+ │YOUR APPLICATION 9.8K 1.0%│ │
255
+ │CONVERSATION 142.1K 14.2%│ │
256
+ │RESERVED 16.4K 1.6%│ │
257
+ │FREE 800.2K 80.0%│ │
258
+ └───────────────────────────────────────────────┴──────────────────────────────────────────┘
259
+ ```
260
+
261
+ **Option C — growth over the session.** A second tab for the same page: the stack at each request,
262
+ so "what grew" is visible. Compaction markers come from `compaction.ended` (`tokensBefore`,
263
+ `tokensAfter`), which the run already records.
264
+
265
+ ```
266
+ ┌ Growth ───────────────────────────────────────────────────────────────────────────────────┐
267
+ │ 1M ┤│
268
+ │ │ ╭── 44.2K│
269
+ │ 20% ┤ ╭──╮ ╭──╮ ╭───╮ ╭────╮ ╭─────╯│
270
+ │ │ ╭──╮ │ │ │ │ │ │ │ │ │ │
271
+ │ 0% ┼──────┴──┴────┴──┴───┴──┴───┴───┴───┴────┴───┴─────┬─────────────── requests →│
272
+ │ r1 r2 r3 r4 r5 r6 r7 r8 ⧗ compacted 112K → 31K│
273
+ │ │
274
+ │ foundation ▓ variant ▒ application ░ conversation █ each segment a group│
275
+ └──────────────────────────────────────────────────────────────────────────────────────────┘
276
+ ```
277
+
278
+ **The compact meter** — one always-visible readout, everywhere, opening the page:
279
+
280
+ ```
281
+ App composer footer Terminal status band
282
+ ┌────────────────────────────────────┐ ~/project (main) · account · sonnet-4-6
283
+ │ ▸ model sonnet-4-6 ◔ 18% ↑ ⏎ │ ↑12.1k ↓3.4k R84.9k 18.3%/1M
284
+ └────────────────────────────────────┘ └─ click / /context ─────────────────
285
+ ring colour: 18% data-1 · 80% warning · 95% destructive
286
+ ```
287
+
288
+ **The terminal page** (`/context`), for reference:
289
+
290
+ ```
291
+ Context sonnet-4-6 · 1M 18.3% used · measured
292
+ ████████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
293
+ foundation 13.1K 1.3% ██
294
+ variant 18.4K 1.8% █
295
+ your app 9.8K 1.0% ▌
296
+ conversation 142.1K 14.2% ██████
297
+ reserved 16.4K 1.6% █
298
+ free 800.2K 80.0% (dim)
299
+ j/k move · enter open · v variant · c compact · r refresh · q close
300
+ ```
301
+
302
+ ### 5. Honesty rules the view must keep
303
+
304
+ Taken from the mistakes of the harnesses above, and from `INV-RUN-7`:
305
+
306
+ 1. The header number is the provider's, or the word `estimate`.
307
+ 2. `Conversation` is a subtraction, never a guess, and is labelled `measured by subtraction`.
308
+ 3. Free space is `window − measured − reserve`, never `window − listed rows` — the Claude Code #94436
309
+ report is exactly that bug.
310
+ 4. A row that could not be measured is `not recorded`, not `0`.
311
+ 5. An unknown window is `/?`, never `0%`.
312
+ 6. Rows are `approx` in the copy, and the page states the ratio once.
313
+ 7. No number is recomputed from a provider's figure in a way that changes its meaning; a scaled row
314
+ is marked scaled.
315
+
316
+ ### 6. What this proposal does not do
317
+
318
+ - No tokenizer. `chars / 4` is the house constant; a real tokenizer would need the provider's
319
+ encoding per model and would still not reconcile with the measured total.
320
+ - No new storage. Everything is read from files the harness already writes, plus the rendered sizes
321
+ added to the pack (`INV-PRM-6`, `INV-MEM-5` untouched).
322
+ - No new writer for run records or the ledger.
323
+ - No cost attribution per row in the first surface. Cost per request exists (`pricing.ts`) and can
324
+ be added as a column later without changing the model.
325
+
326
+ ## Alternatives
327
+
328
+ - **Do nothing.** The App already shows a pack's character counts and one meter. The gap is the
329
+ share of the window per contributor, the free space, and the variant's always-on cost — the three
330
+ questions a person actually asks.
331
+ - **A tab in the existing sidebar Context view.** Rejected: the sidebar is too narrow for a six
332
+ column table, and the request is explicitly a full-width page.
333
+ - **Client-side computation in the App.** Rejected by `INV-PAR-1`: the terminal needs the same rows,
334
+ and two implementations of the subtraction rule would drift.
335
+ - **Reuse `usage.summary`.** Rejected: that is a period aggregate over the ledger. Attribution is
336
+ one request's composition, and `UsageTotals` has no context fields.
337
+ - **Full tokenizer.** Rejected: see above; it would also make the view disagree with Pi's own
338
+ footer, which is the number a person already sees.
339
+
340
+ ## Consequences
341
+
342
+ - **Applications.** One new method, additive. A host that shows the page reads
343
+ `context.attribution`; a host that does not is unaffected.
344
+ - **Stored data.** `runs/<id>/context.json` gains a `rendered` size per section (and per source).
345
+ Older packs lack it; the view falls back to `size` and marks the section `approximate`.
346
+ - **Protocol.** One new method name and result shape; no `PROTOCOL_VERSION` change.
347
+ - **Spec.** `04-prompt.md` gains the recorded rendered sizes; `11-terminal.md` gains `/context`;
348
+ `14-surfaces-and-parity.md` and `parity.md` gain the row.
349
+
350
+ ## Migration
351
+
352
+ Nothing to migrate. Packs recorded before this change stay readable; the only difference is the
353
+ `approximate` marker on rows whose rendered size was not recorded. The capability can be removed by
354
+ deleting the page, the method and the extra pack field; no data depends on it.
355
+
356
+ ## Checks
357
+
358
+ - Harness: `npm run typecheck`, `npm test`, `npm run prove`.
359
+ - New unit tests: the reconciliation (rows sum to `contextTokens`), the negative-prefix case, a pack
360
+ with no `usage.updated`, a pack with no `delivery`, and a run with unknown `contextWindow`.
361
+ - Terminal: a page test in the style of `usagePage.test.ts`.
362
+ - App: `npm run typecheck`, `npm test`, `npm run check:layers`, `npm run check:ui`, and
363
+ `cd src-tauri && cargo test`.
364
+ - A visual check of both surfaces against one real run, comparing the header figure with the
365
+ terminal status band and with Pi's own footer.
366
+
367
+ ## What shipped
368
+
369
+ - `prompt/compile.ts` renders the pack with `renderSized` and records `delivery.sizes` (system and
370
+ update maps plus framing); `render()` is unchanged byte for byte. The sizes are recorded in place of
371
+ the per-section `rendered?: number` the design proposed: one map, keyed by the ids that already
372
+ name the sections.
373
+ - `sessions/contracts.ts` records `compaction: { enabled, reserveTokens }` in `context.snapshot`, read
374
+ from the Pi session's own settings; absent stays absent.
375
+ - `context/attribution.ts` builds the rows, the measured reconciliation, the reserve and free space,
376
+ the per-request history, the compaction markers and the on-demand list. `context.attribution` is a
377
+ new server method; `terminal.context` resolves the terminal's latest run, so no surface passes a
378
+ run id it could not verify.
379
+ - The bar is segmented: one colour per kind of context (the App's `--data-1..4` on both surfaces), the
380
+ track for free space, and a `│` where the reserve begins. The terminal's palette lives in
381
+ `terminal/tui/theme.ts` as `SERIES_COLORS`; the shared `SegmentedBar` grew `track`, `marker` and
382
+ `height` so the App draws one bar instead of a single-tone meter above a split. Severity moved to
383
+ the percentage text, on one rule for both surfaces: amber at 80, red at 95.
384
+ - The terminal `/context` page shipped with the one-column ledger and the detail replacing the list on
385
+ `enter` (the side-by-side panes in Option B were not built); `g` regroups by owner or kind, `c`
386
+ compacts after a confirmation, `v` navigates to `/harness`. The band and the OpenTUI status bar
387
+ gained the reading, shown only when the session knows it.
388
+ - The App gained `context.attribution` on the bridge, a full-width `ContextAttributionPage` opened from
389
+ the Context tab, and a context ring in the composer footer. The ring reports; it does not open the
390
+ page yet, so the Context tab is the only App entry point.
391
+ - `context.attribution` takes `{ runId }` only; the session-scoped case is `terminal.context`, which is
392
+ the surface that has a session rather than a run.
393
+
394
+ **Amendment (2026-10-29).** The composer status band carries no context reading in either
395
+ renderer: at the person's request the terminal shows the share of the window only on `/context`,
396
+ whose header reads the figure above (`18.3%/1M`). The compact-meter wireframe and the visual
397
+ verification step that compares against the band record the accepted design, not the current
398
+ band. The App composer ring is unchanged.
399
+
400
+ ## Open questions
401
+
402
+ 1. **Placement.** Full-width page in the main pane (recommended), a new workspace view tab that
403
+ renders full width, or a tab beside `Usage` in the sidebar? The sketches assume the first.
404
+ 2. **Shape.** Option A (accounting sheet), A plus Option B's detail pane on wide windows, or all
405
+ three as tabs of one page?
406
+ 3. **Rows.** Group by owner (foundation / variant / application / conversation), as proposed, or by
407
+ kind (`System prompt`, `Tools`, `Skills`, `Memory`, `Messages`) as Claude Code does? Owner
408
+ grouping is what makes the variant actionable; kind grouping is what a person coming from Claude
409
+ Code expects.
410
+ 4. **Cost per row.** Show `cost per request` beside tokens from the first version, or keep the view
411
+ token-only?
412
+ 5. **Live updates.** Refresh on every `usage.updated` while a reply streams, or on open and on
413
+ `completed` only?
414
+ 6. **The compact meter.** Add the ring to the App composer footer, the terminal status band, or
415
+ both? Pi's footer already shows `45.3%/200K` and this harness's band shows neither.
@@ -0,0 +1,30 @@
1
+ ---
2
+ id: PROP-0050
3
+ title: Run stop codes and refusal evidence
4
+ status: Implemented
5
+ created: 2026-10-29
6
+ affects: [INV-RUN-3, INV-RUN-4, INV-GATE-1, INV-TUI-3, INV-PAR-1]
7
+ ---
8
+
9
+ # PROP-0050: Run stop codes and refusal evidence
10
+
11
+ ## Problem
12
+
13
+ A run's human-readable stop reason and tool results do not consistently identify the rule or
14
+ lifecycle event that stopped it. Diagnostics need recorded causes rather than guesses based on prose.
15
+ A settled run is not necessarily a finished task.
16
+
17
+ ## Design
18
+
19
+ Record gate and work-slice refusals as `tool.refused` events, retaining the original tool response.
20
+ Record a fixed `terminalCode` separately from the descriptive `terminalReason`. Interrupted events
21
+ can carry the code; failure events retain their existing code and the run store maps it to a stop
22
+ code. Legacy records without a code remain unknown. Report known compaction measurements, and expose
23
+ refusals and stop evidence through trajectory search and the terminal trajectory page.
24
+
25
+ Terminal telemetry is best effort when the controller is unreachable. These fields do not infer
26
+ whether the requested work was completed and do not change the gate or its approval requirements.
27
+ The binding contracts are in [sessions and runs](../02-sessions-and-runs.md),
28
+ [tools and the gate](../07-tools-and-gate.md), [memory and history](../08-memory-and-history.md),
29
+ and [terminal](../11-terminal.md). The architectural decision is
30
+ [ADR-0059](../../decisions/ADR-0059-run-diagnostic-evidence.md).
@@ -0,0 +1,110 @@
1
+ ---
2
+ id: PROP-0051
3
+ title: Unfinished runs must hand off a decision and a next step
4
+ status: Implemented
5
+ created: 2026-10-30
6
+ updated: 2026-10-30
7
+ affects: [INV-PRM-2, INV-PRM-8, 04-prompt.md, ADR-0008]
8
+ ---
9
+
10
+ # PROP-0051: Unfinished runs must hand off a decision and a next step
11
+
12
+ ## Problem
13
+
14
+ The `reporting` section tells the model to "Include blockers, risks, or next steps only when they are
15
+ concrete and relevant" (`src/prompt/compile.ts:170`). That sentence is permissive, so a run that ends
16
+ with work unfinished can satisfy it by naming blockers and never stating what the person must decide
17
+ or do next.
18
+
19
+ Run `55ad7d48-92b0-4d9d-9d80-c93b5112b80b` is the observed case, diagnosed in the run report
20
+ `thaivlm/outputs/diagnoses/2026-10-29-55ad7d48.md` in the projects workspace:
21
+
22
+ - The person asked for a 1,000-SHr training study to be implemented (seq 2).
23
+ - The run stopped with two of four todos open — "Implement reproducible mixture and study
24
+ configuration" (in_progress) and "Implement model and optimizer compatibility checks" (pending)
25
+ (seq 119) — and completed (seq 145).
26
+ - The final reply listed four changed files and three blockers — an empty OPC source, an in-progress
27
+ document dataset, an HTTP 403 on gated Gemma weights, missing model adapters — then a line about
28
+ tests, and stopped (seq 143). It named no decision, no owner and no next step.
29
+
30
+ The person's report: "agent said whats blocking which is good but the reply lacks of whats saying what
31
+ user has to do next or decision for user to do." The blocking was accurate; the handoff was missing.
32
+ A reply that names only blockers leaves the person to reconstruct the decision themselves, which is
33
+ the work the run was supposed to reduce.
34
+
35
+ Prevalence is unknown: no sweep has been run over recent runs, so this is one confirmed case plus the
36
+ guidance hole that permits it.
37
+
38
+ ## Proposal
39
+
40
+ Add one conditional sentence to `REPORTING_GUIDANCE` in `src/prompt/compile.ts:165-176` — the
41
+ foundation's stable `reporting` section, not variant data — requiring that a reply which ends with
42
+ work unfinished states, in one short block, what the person must decide and what happens next:
43
+
44
+ - **when:** the run leaves todos open, reports a blocker it could not clear, or stops before the
45
+ requested work is done. Ordinary completed replies are unaffected, so the "do not force a fixed set
46
+ of report headings" rule (`src/prompt/compile.ts:168`) still holds.
47
+ - **what:** for each open item, either the decision the person owns (a choice only they can make) or
48
+ the next action with its owner; not a restatement of the blocker.
49
+ - **how:** the same content-driven style as the rest of the section — a bulleted list or a short
50
+ table, no mandated heading names.
51
+
52
+ The text stays stable and conditional. It cannot read live state: `INV-PRM-2` keeps changing state out
53
+ of the system prompt, so the clause is written for the model to apply against its own todo list and
54
+ blockers, not injected from `todo.updated` events.
55
+
56
+ Spec page to update in the same change: [`04-prompt.md`](../04-prompt.md), Reporting section — one
57
+ sentence saying that guidance also covers how an unfinished reply hands off. `INV-PRM-2` is unchanged
58
+ in meaning (the section is still fixed text); it is listed in `affects` because the section's text
59
+ changes. `INV-PRM-8` applies: the stable prefix changes once, so sessions miss the provider cache once
60
+ after upgrade, exactly as recorded for PROP-0001 and PROP-0004.
61
+
62
+ ## Surfaces
63
+
64
+ No new capability and no new screen. The section is harness-owned and identical in the terminal
65
+ (`xagent`) and the App, because both receive the compiled pack
66
+ ([`04-prompt.md`](../04-prompt.md) § Reporting; `SECTION_ORDER.reporting = 95`). `docs/parity.md`
67
+ needs no row: nothing is added that a host must present. Applications bundling the harness rebuild to
68
+ pick up the new text.
69
+
70
+ ## Tests
71
+
72
+ `src/prompt/compile.test.ts:304` already asserts the section's shape and stability. The test that goes
73
+ red today is an added expectation on the guidance text itself, in that same test or beside it:
74
+
75
+ ```ts
76
+ expect(REPORTING_GUIDANCE).toContain('ends with work unfinished')
77
+ ```
78
+
79
+ plus a guard that the flexibility rule survives — `expect(REPORTING_GUIDANCE).toContain('do not force
80
+ a fixed set of report headings')`, already at `compile.test.ts:311`, must stay green.
81
+
82
+ ## Alternatives
83
+
84
+ - **Do nothing; leave "only when concrete and relevant".** This is the status quo that produced the run
85
+ above. It cannot distinguish "no blockers" from "blockers listed, decision unstated".
86
+ - **Inject live todo state into the reporting section.** Rejected: `INV-PRM-2` forbids changing state in
87
+ the system prompt, and dynamic text would break the stable prefix (`INV-PRM-8`).
88
+ - **Reinstate a fixed heading list (PROP-0001's original).** Rejected already by PROP-0004 and
89
+ [ADR-0008](../../decisions/ADR-0008-flexible-reporting-guidance.md): mandatory headings produced
90
+ generic sections. This proposal adds a trigger condition, not a template.
91
+ - **Handle it in the variant prompt instead.** Rejected on routing: the guidance is foundation-owned
92
+ (`src/prompt/compile.ts:468`), identical for every variant, so a variant edit would not reach the run
93
+ that failed and would have to be redone per variant.
94
+
95
+ ## Consequences
96
+
97
+ - Unfinished replies carry a decision or next action, at a small cost in length; completed replies are
98
+ unchanged.
99
+ - One provider-prefix change, one cache miss after upgrade.
100
+ - No stored data, server protocol, gate or tool change.
101
+ - It remains guidance, not enforcement: a model can still under-report. A recurring pattern would
102
+ justify a checked run-level signal (for example, a stop code that marks a run unfinished), which is
103
+ out of scope here.
104
+
105
+ ## Out of scope
106
+
107
+ - Completing the study whose todos stayed open.
108
+ - Making the harness judge whether a task is finished, or any change to run status, stop codes or the
109
+ gate.
110
+ - Sweeping recent runs to measure how often unfinished replies omit a decision.