@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,555 @@
1
+ # 11 Terminal
2
+
3
+ ## Purpose
4
+
5
+ The harness owns a generic interactive terminal application (`xagent`) over a
6
+ persistent Pi session on a variant. It is the standalone way to use the harness, and an
7
+ embedding application can host it in its own PTY. Detail, screen layout and verification evidence
8
+ are in [`../terminal-tui.md`](../terminal-tui.md); this page states the binding parts.
9
+
10
+ ## Components
11
+
12
+ | Type / module | Role |
13
+ |---|---|
14
+ | `Terminals` (`terminal/terminals.ts`) | Parent side: `prepare` (account, compiled context, trusted resources, run writer) returns a launch specification; `send`, `state`, `input`, `dispose`. |
15
+ | `src/terminal/opentui/` (`app.ts`, `root.tsx`) | The OpenTUI/Solid frontend: lifecycle, submission, commands, decisions, composition, transcript, composer, dialogs. |
16
+ | `src/terminal/opentui/attachments.ts`, `composerMarks.ts` | Composer attachments: pasted images and collapsed large pastes, their atomic labels, and expansion into the prompt text and Pi image content on send. |
17
+ | `src/terminal/tui/runtime.ts` | `AgentSessionRuntime` over `createAgentSession`, `ModelRuntime`, `SessionManager`, `DefaultResourceLoader`. |
18
+ | `src/terminal/socket.ts`, `client.ts`, `control.ts`, `controller.ts` | The session socket, the private control key, and the run controller. |
19
+ | `src/terminal/piExtension.ts` | The bridge extension, loaded last as the trusted inline gate. |
20
+ | `src/terminal/cli.ts` | Wiki and connected-apps commands for the session's shell. |
21
+
22
+ ```text
23
+ Harness parent: account + compiled context + trusted resources + run writer
24
+ | launch specification / session socket
25
+ Harness terminal child (Bun): OpenTUI application + persistent Pi AgentSessionRuntime
26
+ | typed native events / plugin UI callbacks
27
+ Screen: transcript above the composer, centred dialogs, full-screen resource browser
28
+ ```
29
+
30
+ ## Contracts
31
+
32
+ - The published executable is `xagent`; `xharness` is not retained as a compatibility alias. With no command, `xagent` starts the interactive terminal. `terminal` remains an explicit alias, and `serve` remains the host-facing RPC path.
33
+ - `TerminalAssets` is `{ node, cli, piExtension, openTui }`. The command is Bun with
34
+ `--conditions=browser` and `dist/terminal-opentui.js`; no global `pi` is needed.
35
+ - The `piExtension` path is the final prepared extension argument; the runtime loads it as the
36
+ final trusted inline factory.
37
+ - Each terminal `begin` returns the run's pinned `workspaceRoot` to that extension. Native file
38
+ writes use the same revalidated atomic helper and OS write scope as SDK sessions. Terminal Bash,
39
+ including initial `!` commands, defaults to the workspace sandbox and external-hard-link scan;
40
+ `!outside <command>` requests human-only approval before that exact command runs once; its full
41
+ escaped command is available in scrollable approval details, and an undersized terminal denies
42
+ the request. The eligible Full Permission switch is the only standing boundary bypass; remembered
43
+ per-tool grants do not widen it, and command output never triggers approval or replay.
44
+ - The terminal compiles its prompt once (`compile` + `render`) and keeps that pack; each run
45
+ records a copy (page 04). Switching the conversation to another variant version (`/variant`,
46
+ restoring, reverting, or adopting a refinement) restarts the frontend on that version at a turn
47
+ boundary and resumes the same native conversation (`TerminalRelaunch.variantVersion`, ADR-0065).
48
+ - Each turn a person types records a workspace snapshot before the agent acts (page 02); `/refine`
49
+ replays the latest one (page 05). The shared compaction checkpoint extension reintroduces the active
50
+ request and its todo list, as of a compaction during the run, right after the summary until the
51
+ run settles (ADR-0067).
52
+ - The terminal runtime, not Pi, decides the model a conversation starts on. A fresh conversation
53
+ starts on the account's latest normal-mode choice; a resumed one keeps the model in its own
54
+ history while this account offers it and holds credentials for its provider. When it does not,
55
+ the runtime starts the conversation on the account's newest saved selection (the mode's, then
56
+ normal's, then the newest in any mode) with that selection's effort, writes that model change
57
+ into the conversation, and reports it in one notice; the account's `choices.json` is not touched
58
+ (ADR-0064). With no usable saved selection, Pi's own fallback message stands.
59
+ - Normal mode keeps `ask_user` out of the active tool set. An attended plan request enables the
60
+ shared tool alongside its read-only set and restores the normal set on success, failure or
61
+ interruption, and again after any rebuild from the transcript (page 02, `INV-RUN-8`). The question blocks until answered, then planning continues in the same run. There
62
+ is no terminal-only question alias (PROP-0040).
63
+ - The approved plan outcome contract on page 02 applies equally to the terminal and server:
64
+ only `plan_ready` offers a plan card and Implement; `blocked` reports unavailable required input
65
+ without Implement; `no_plan` is an ordinary reply that offers nothing at all; `invalid` gets at
66
+ most one shared bounded repair and, if still invalid, a warning and the retained original text.
67
+ New final replies do not ask free-text questions or use
68
+ `<plan_clarification>`: clarification uses `ask_user`, which blocks the active run. Repair at
69
+ Pi's settlement boundary is in the same run and may call `ask_user`. Existing `<proposed_plan>`
70
+ cards and old transcripts, including clarification blocks, remain intact; see ADR-0077.
71
+ - A plan request keeps `bash` in its active set; each call runs in the sandbox's read-only scope
72
+ (PROP-0043). A user `!` command submitted during a plan request waits as a separate turn; it
73
+ cannot run inside the plan's read-only request.
74
+ - The terminal message-delivery contract is Enter to send or queue a follow-up, and
75
+ Cmd/Ctrl/Alt+Enter to steer an active reply. Pending steering, follow-up and deferred plan/Bash
76
+ inputs are projected above the working line from Pi's queues and the deferred barrier. Native
77
+ Follow-up and Steer rows are clickable and open `/follow-up`, which edits, sends the next eligible
78
+ item, or removes a selected message while preserving attached images. A successful reply keeps
79
+ Pi's configured queue behavior. At an explicit user-stop boundary, the terminal sends one
80
+ unconsumed steer before any follow-up and returns the remainder to Pi; retrying requests,
81
+ provider failures and non-user interruptions do not dispatch the queue. A queued plan or Bash
82
+ command runs separately after the active reply, and later inputs cannot bypass it through Pi's
83
+ native queues. Modified shortcuts require terminal support.
84
+ - Current standalone source defaults: `~/.xingular-harness/{data,state}`; `npm run dev` uses
85
+ `~/.xingular-harness-dev/{data,state}`. The standalone development launch uses a file SecretStore
86
+ under its resolved state directory or the `--account-state` one, even when its profile names a
87
+ host backend; it does not use or alter host credentials. `--account-state <dir>` signs in as the
88
+ accounts kept in that state directory (its `accounts` folder and `secrets.json`), and
89
+ `npm run dev` passes the installed state directory, so development and installed launches share
90
+ one sign-in while keeping their own data, approvals and plugin trust. `--variant <scope>`
91
+ explicitly selects a variant head.
92
+ PROP-0040 approves a shared Harness-owned interactive profile, neutral default scope and
93
+ credential backend; adoption and runtime verification remain in progress. Until that lands,
94
+ matching roots/scopes is explicit and matching roots alone does not share host Keychain secrets.
95
+ - `Launch.standard` supplies the shared role and folder text. History, Wiki and skill model tools
96
+ use the session socket; enabled output-trim/budget-guard hooks load through `firstParty.list`.
97
+ - `$name` is a skill invocation at any word start in the composer: the palette opens at the caret
98
+ and inserts the chosen skill there, keeping the rest of the draft, and every `$name` naming a
99
+ loaded skill is required for that request. The terminal builds the request-scoped text with
100
+ `requiredSkillsText` from Pi's loaded skills and appends it as a hidden `xingular-required-skills`
101
+ custom message. A required skill changes no tool or permission, and the person's message reaches
102
+ the model unchanged.
103
+ Pi CLI built-ins (llama.cpp, codemode, tool-search and MCP) are not loaded as a terminal-only
104
+ resource path. Harness MCP remains available.
105
+ - An empty conversation shows a centered welcome using `env.productName` (default `Xingular Agent`):
106
+ the first letter of a multiword name is the orange block mark and its remaining words are letter-spaced
107
+ in blue. The welcome adds a greeting, tagline and `/help` hint without replacing the composer or
108
+ status bar. Explicit host product names use the same generic formatting.
109
+ - `/remote-control` (`/rc`) lets a phone or iPad continue this session: a page with the pairing
110
+ link and its QR code, paired devices, and the person's answer to a pair request; `rc` / `rc ●` in
111
+ the status bar while it is on. `xagent --remote-control` (`--rc`) turns it on at start. The
112
+ binding rules are page 15.
113
+ - `xagent --worktree [name]` (`-w`) starts in a new managed worktree of the current repository,
114
+ or in the named one, and prunes older managed worktrees (PROP-0016). A session that names a
115
+ worktree holds it for its whole life. `/worktree` opens the worktree page; selecting
116
+ one switches folders by asking the host to restart the frontend there (`TerminalRelaunch.cwd`),
117
+ as a new conversation: Pi keeps one history per working folder.
118
+ - Slash-command aliases share one registry entry: `/session (resume)` opens the full-screen, searchable
119
+ saved-session page with unnumbered title and metadata rows; `/history (tree)` navigates branches in
120
+ the current session, and `/btw (side)` asks a side
121
+ question through the Harness `SideQuestions` service. It uses the same account/model/effort,
122
+ mirrors the main run's redacted prompt and public evidence, starts a separate tool-free run, and
123
+ leaves the main conversation untouched. The dock streams, scrolls and copies the complete answer.
124
+ Aliases remain callable and searchable, but help and palette show only the canonical
125
+ entry. `/context` opens the Context page, with Run details and Context usage tabs. Run details
126
+ shows recorded run configuration, available tools and connectors, skills loaded via `skill_load`,
127
+ and observed activated extensions; unrecorded facts remain unknown. The run selector stays within the current native conversation, and the page links
128
+ to `/trajectory` for the selected run. Context usage shows contributor attribution, reserve and
129
+ free space; `/context growth` opens measured request history and compaction markers. The page
130
+ reads `terminal.context`, never computes a figure of its own, and says `?` where nothing measured a
131
+ window. `/usage:` and `/usage:analysis` open the usage page's Analysis tab, and `/usage:limit`
132
+ opens its Limits tab (PROP-0042); `/usage:accounts` opens the All accounts limits tab. These are plugin-owned namespaced routes. All-account refresh reads due providers using their own account credentials without switching the session account. The usage page is a
133
+ full-screen page with a top tab strip: each window is a label and reset line above a quota-left bar coloured green at
134
+ 50% or more left, amber from 20–49%, and red below 20%. `commands.list`
135
+ publishes the effective routes; the browser-safe core catalogue is `commands/registry.ts`. First-class Harness commands are unprefixed and live in that registry,
136
+ independently of plugin command metadata. Every plugin-owned command uses
137
+ `/<owner-prefix>:<command>`; plugin-owned prompt templates use the same owner namespace as
138
+ extension commands. A plugin namespace root is offered only for an explicit default: built-in
139
+ default commands remain supported, and a package's `harness.defaultPrompt` selects its own named
140
+ template for `/<owner-prefix>:`. Standalone prompt templates retain their existing forms, as does
141
+ `/skill:<name>` (ADR-0061).
142
+
143
+ The `/plugins` Proposals tab previews the complete stored files and generated manifest before
144
+ confirmation. Accept and reject pass the preview hash through the control-key-protected socket;
145
+ the proposal service checks it again. Acceptance leaves the package switched off and untrusted.
146
+
147
+ ## Client terminal and the long-lived harness (ADR-0083)
148
+
149
+ The OpenTUI frontend is a client of the harness by default: `tui/harnessRuntime.ts` implements the
150
+ same `TerminalRuntime` as `tui/runtime.ts`, so the screen code is shared.
151
+ `XINGULAR_TERMINAL_RUNTIME=inprocess` runs the in-process runtime instead, for plugins that need
152
+ their own terminal components (INV-TUI-8).
153
+
154
+ - **Parent.** `terminal/liveTerminal.ts::LiveTerminal`, created on the first `terminal.live.*`
155
+ call, runs each turn as `sessions.run { live: true }` of the terminal's own session id, account,
156
+ folder, history folder, pinned variant version (`{ dir, scope }`), launch sections, Pi's four
157
+ default tools plus the launch and switched-on world tools, and no gated tools, as the in-process
158
+ terminal's policy has it. It journals the live session's native events (a newer
159
+ `message_update` replaces an unread one; at most 4,000) and serves them by long poll.
160
+ - **Routes.** `terminal.live.state`, `.events { after, wait?, waitMs? }`, `.run { text, model?,
161
+ effort?, resume? | newHistory?, images?, plan?, goal?, command?, initialBashCommand?,
162
+ hiddenNotes? }`, `.steer`, `.followUp`, `.followUp.clear`, `.interrupt`, `.close { forget? }`,
163
+ `.rename`, `.pending`, `.pending.wait`, `.approve`, `.answer`, `.answers`. Once a client exists,
164
+ `terminal.pending|pending.wait|approve|answer|answers|interrupt` and remote control's send and
165
+ stop reach it instead of `TerminalController`. Pending decisions include the active reply's
166
+ subagents.
167
+ - **Client.** It keeps the model catalogue, settings, the skills, prompts and themes it lists, and
168
+ `ModeChoices`. `$name` skills and goal notes go as `hiddenNotes`; a plugin command is sent as its
169
+ `/<prefix>:<name>` text; `/compact`, `/tree` navigation and HTML export are command runs;
170
+ `/new`, `/resume`, fork and import change the file it resumes and close the live session; `/session`
171
+ takes a history file or the session id its runs record. A `!` command is the run's initial Bash.
172
+ A plan run sends only the plan's tools (`planTools: 'active'`). A mode with no saved model keeps
173
+ the current one. Closing the client never interrupts a reply; the parent decides.
174
+ - **What the window draws.** Besides the native events, the journal carries `harness_notice` (a
175
+ plugin's notice, status line, widget or title, and a failed reply's message), `harness_settled`
176
+ (the reply is over, with its goal state and history file, even when Pi's loop never started) and
177
+ `harness_dialog` / `harness_dialog_done` (a plugin's `select`, `confirm`, `input` or `editor`,
178
+ shown with the window's own dialog and closed when another surface answers first; the window's
179
+ question dock asks `terminal.pending.wait { ownDialogs: true }` and leaves them out). Before the
180
+ first turn the parent lists the trusted extensions' commands by loading them without a session;
181
+ one that cannot load stops the window's start, as in process. A session change or a steer first
182
+ asks the harness whether a reply really runs, so a window a moment behind its event stream does
183
+ not refuse `/new` or steer a reply that has ended.
184
+ - **Failure.** When the window's harness is unreachable twice in a row, the window closes cleanly.
185
+ An error nothing caught in the standalone host (a plugin's timer, say) closes the window first,
186
+ then exits 1. The long-lived harness logs such an error and keeps its other sessions.
187
+ - **Identity.** A client terminal's runs are harness runs: they record Pi's session id as
188
+ `nativeSessionId`, where an in-process terminal's record the history file. `/todo`,
189
+ `/trajectory`, `/context`, subagent rows and remote-control history match by the client's id, and
190
+ a relaunch resumes its history file.
191
+ - **Long-lived harness.** `xagent daemon start|stop|status` runs one harness per state folder
192
+ (`terminal/daemon.ts`): a lock (`harness.lock`) refuses a second, and `harness.sock` (owner-only)
193
+ serves the protocol with `daemon.status` and `daemon.stop`. `xagent --daemon` starts it when
194
+ needed, prepares its terminal there and runs the client frontend. When the window closes while a
195
+ reply runs, `terminal.detach` keeps the reply and its live session without a window until it
196
+ settles; `xagent attach [session]` reattaches a new window to it (`prepare { attach: true }`, same
197
+ folder and account). Without a running reply, closing the window ends the session as before.
198
+
199
+ ## Invariants
200
+
201
+ - **INV-TUI-1** OpenTUI is the only terminal frontend. Pi's `InteractiveMode` is never constructed
202
+ ([ADR-0006](../decisions/ADR-0006-opentui-only-terminal.md)).
203
+ - **INV-TUI-2** The harness owns screen composition, input, scrolling, command routing and plugin
204
+ UI. Pi owns the execution runtime, native history and rich content components. A host owns the
205
+ PTY and process supervision ([ADR-0001](../decisions/ADR-0001-owned-terminal.md)). In the default
206
+ client terminal the Pi session runs in the harness process as a live session (ADR-0083); the
207
+ window keeps composition, input and rendering.
208
+ - **INV-TUI-3** Execution, account isolation, trust, authorization and run recording stay behind
209
+ their existing layers. The terminal adds no second path for any of them; its runs are written
210
+ through the controller and the run store.
211
+ - **INV-TUI-4** Changes made through the session socket (`plugins.attach|detach|trust|untrust|configure`,
212
+ `plugins.proposals.*`, `accounts.*`, Hub installs, `terminal.browser.*`, `terminal.worktrees.*`,
213
+ `terminal.annotations.*`, `terminal.sideQuestions.*`, `terminal.remoteControl.*`,
214
+ `terminal.variant.*`, `terminal.refine.*`) require the control key the trusted terminal process claimed once
215
+ (`control.claim`). The session's shell can read the session token, so the token alone is never
216
+ enough. A phone paired through `/remote-control` is the one other party that answers decisions;
217
+ only the control-key holder can start remote control or allow a device (INV-RC-3, INV-RC-7).
218
+ - The terminal watches decisions through the control-key-protected `terminal.pending.wait` revision
219
+ snapshot. It returns immediately for a changed revision and otherwise waits at most 20 seconds;
220
+ additions, removals and disposal wake waiters. `terminal.pending` remains available. The terminal
221
+ reconnects and resynchronizes after errors, and cancels its outstanding request on shutdown.
222
+ - **INV-TUI-5** Every resource reload revalidates the original trusted selection; changed or
223
+ revoked code needs review and a fresh terminal.
224
+ - **INV-TUI-6** `sessions.run` stays the embedding and unattended path. The in-process terminal
225
+ keeps a persistent child instead of opening a session per turn; the client terminal (below) runs
226
+ every turn as a `sessions.run { live: true }` of one live session, which is equally persistent.
227
+ - **INV-TUI-8** A client terminal runs no agent loop, tool or Pi extension of its own. It draws the
228
+ live session from its native events and its own read of the history file, and every action is a
229
+ protected `terminal.live.*` call (ADR-0083). Plugin presentation that needs an in-process
230
+ terminal (custom components, key handlers, renderers, shortcuts) is unavailable there, as it is
231
+ in a host: extensions get the dialog, notice, status and text-widget subset.
232
+ - **INV-TUI-7** Harness core commands use unprefixed names and are registered independently of
233
+ feature-plugin command metadata. This includes `/doctor`, `/worktree`, `/trajectory`, `/subagents`
234
+ and `/agents`; `/history` remains session-branch navigation, and `/mcp` remains a Connections
235
+ shortcut. Every plugin-owned terminal command, including a plugin-owned prompt template, uses
236
+ `/<owner-prefix>:<command>` for required and optional built-ins and Pi packages alike. There are
237
+ no bare plugin command or template aliases. Completions, help, recognition and dispatch use the
238
+ same owner-qualified routes. Prefixes are unique to an owner; a prefix collision or duplicate
239
+ route within an owner, including a template/extension collision, fails closed with owner
240
+ diagnostics rather than choosing a winner. A package root `/<owner-prefix>:` resolves only to the
241
+ package's explicitly declared, valid and unambiguous `harness.defaultPrompt`; built-in default
242
+ commands retain their roots. Standalone prompt templates keep their existing forms and
243
+ `/skill:<name>` remains reserved for skill invocation. Core commands and their core aliases remain
244
+ independent of plugin attachment. The prior temporary aliases for promoted core commands are not
245
+ a route to plugin-owned contributions (ADR-0061).
246
+ - **INV-TUI-8** Terminal sessions use the Harness-pinned workspace root and the same write
247
+ boundary as SDK sessions. Native file mutations use revalidated atomic replacement under an OS
248
+ scope; default Bash scans for external hard-link aliases and runs inside the sandbox. The terminal
249
+ cannot widen the boundary through its socket or native extension. `!outside <command>` requests
250
+ human-only approval before one execution; the terminal shows the complete escaped command and
251
+ denies the request if it cannot display details and choices together. stdout/stderr cannot trigger
252
+ approval or replay. Missing enforcement fails closed. Full Permission bypasses the boundary only
253
+ for eligible interactive
254
+ user runs and does not override hard policy denials, read-only or plan mode, unattended work, or
255
+ refinement restrictions.
256
+
257
+ ## Source map
258
+
259
+ `src/terminal/**`. Decisions: ADR-0001, [ADR-0004](../decisions/ADR-0004-fullscreen-terminal-layout.md)
260
+ (superseded), ADR-0006, [ADR-0021](../decisions/ADR-0021-required-command-namespaces.md)
261
+ (superseded by [ADR-0031](../decisions/ADR-0031-plugin-command-owner-namespaces.md)),
262
+ [ADR-0024](../decisions/ADR-0024-xagent-command.md),
263
+ [ADR-0027](../decisions/ADR-0027-connected-sketch-display.md),
264
+ [ADR-0028](../decisions/ADR-0028-xingular-agent-product-identity.md),
265
+ [ADR-0031](../decisions/ADR-0031-plugin-command-owner-namespaces.md),
266
+ [ADR-0034](../decisions/ADR-0034-first-class-harness-terminal-commands.md),
267
+ [ADR-0061](../decisions/ADR-0061-strict-plugin-command-namespaces.md),
268
+ [ADR-0036](../decisions/ADR-0036-workspace-write-operation-boundary.md). Experiments:
269
+ EXP-0001, EXP-0002 in `../experiments/`.
270
+
271
+ ## Session name in the working line (PROP-0010)
272
+
273
+ The bridge registers `session_name` against Pi's `getSessionName` / `setSessionName` APIs.
274
+ The native `session_info_changed` event invalidates the frontend's cached snapshot and
275
+ refreshes the working line. Both the active and retained completion line append
276
+ ` – <name>` after duration and token rate, for example
277
+ `Working (2m, 50 tok/s) – Add web browser integrations`. Unnamed sessions omit the suffix.
278
+ A substantive first turn also receives a provisional name through the terminal policy; a refused
279
+ or failed name leaves the session unnamed.
280
+
281
+ Each user turn appends a hidden `xingular-session-state` custom message with the current name,
282
+ this run's empty todo, and the previous run's todo as context. The message is request-only and
283
+ never changes the compiled stable pack. A first turn is marked as such; later turns say the todo
284
+ list resets for each run.
285
+ Names use the existing terminal text sanitization, remain outside the verb shimmer, and
286
+ truncate at the right edge. Manual `/name` and existing long names remain supported.
287
+
288
+ ## Doctor command
289
+
290
+ `/doctor` opens a command page and runs local readiness checks. Refresh and retry are local;
291
+ Live checks opens an explicit selection followed by account/model, destination, cost and isolation
292
+ confirmation. The page polls structured reports, retains findings after cancellation, and cancels
293
+ on close. No command text is sent to the conversation model. See [Doctor](../doctor.md).
294
+
295
+ ## Resource browser (PROP-0013)
296
+
297
+ `/harness` owns broad navigation for Foundation, Variant, Skills, Plugins, Connections, Tools and
298
+ Library. `/skills`, `/connections` (`/mcp`), `/tools` and `/components` are shortcuts into that
299
+ browser. `/plugins` opens the focused local plugin manager (Plugins, Trust and Packages tabs); `/hub`
300
+ opens the separate Community catalog (Catalog and Installed tabs). The Hub Catalog shows Community
301
+ entries across supported types; Installed retains receipts from every channel with its channel
302
+ visible. Registry/document entries offer bounded payload Preview; Pi packages do not. Current
303
+ availability in `/harness` comes from the live resource loader and active tool registry,
304
+ independently of saved configuration and the latest variant head.
305
+
306
+ Every `terminal.browser.*` call requires the private control key, including bounded resource
307
+ inspection, local imports, connection management and browser settings. Direct plugin package
308
+ install/update/remove and attachment/trust/settings actions use protected `plugins.*`; Hub catalog
309
+ list/install/uninstall use protected `hub.*`. Hub-owned package removal keeps the receipt and
310
+ resource ownership in the Hub service. These routes are adapters to the existing services, not
311
+ another loader, attachment store, gate or secret store. Browsing neither executes plugin code nor
312
+ connects MCP.
313
+ The browser uses the full terminal with persistent section tabs (PROP-0014); wide screens keep
314
+ inventory beside details, actions and content, while compact screens keep inline details under
315
+ the same tabs. The separate `/plugins` and `/hub` pages also use full-screen layouts with persistent
316
+ section tabs, responsive inventory/details panes and their existing protected operations. Other
317
+ command pages remain centered except `/settings`, `/accounts`, `/plugins`, `/hub`, `/context` and `/usage:`, which use
318
+ full-screen page layouts.
319
+ Accounts keeps Accounts/Pools tabs, search and account-service operations.
320
+ Wide terminals show selected-account details beside the list; Enter or a primary click opens grouped
321
+ actions in that inspector. Compact terminals replace the list with a full-page account detail view
322
+ and its grouped actions. Enter opens the selected account; Escape returns to the list while
323
+ preserving its section, query and selection across navigation and resizing. Tab/Shift+Tab moves focus
324
+ between tabs, the list and (when open) actions; Left/Right changes a focused tab and Up/Down moves
325
+ the focused list or action list. Account actions retain their Session, Account, Sign-in and Remove
326
+ groups; pool actions remain grouped under Manage and Remove. See the
327
+ [terminal guide](../terminal-tui.md#blocks-and-pages) for layout and interaction.
328
+
329
+ `/settings` is a full-screen page with category tabs, search, settings list and a device-local Browser
330
+ tab. It selects the isolated browser or Brave profile; selecting Brave requires explicit confirmation.
331
+ The tab also shows bridge status, pairing instructions and `allowPrivate`. Brave pairing is explicit,
332
+ site access is granted separately in the extension popup, and the in-page badge provides Pause and
333
+ Stop. Brave exposes normal tabs only, never Incognito; the extension does not request history or
334
+ cookie permissions or export cookies. A disconnect refuses calls without switching backends.
335
+ Enabling private address access requires confirmation and allows both agent browsing and annotation
336
+ capture to reach localhost and private networks. It is off by default.
337
+
338
+ ## Worktrees command (PROP-0016)
339
+
340
+ `/worktree` opens a page of the managed worktrees of the repository the session works in: make a
341
+ managed or permanent worktree, switch the terminal to one (or back to the main checkout), create a
342
+ branch on a detached one, hand changes off in either direction, remove one (with a snapshot when it
343
+ holds work, never the one this terminal uses), restore a removed one, prune older ones, and trust
344
+ the repository's setup script. The page calls `terminal.worktrees.*` routes, which use the same
345
+ `Worktrees` service as the `worktrees.*` server methods. `xagent worktree <command>` offers the
346
+ same actions from a shell.
347
+
348
+ ## Question dock
349
+
350
+ Pending questions appear in a flat block above the composer, with a tab for each 1–2 word question
351
+ label above its title. Tabs can be clicked; Left/Right also switch questions and preserve staged
352
+ answers. The header has no pager or collapse control, and the dock stays expanded until the answer
353
+ is accepted or Escape cancels the pending question. A refused answer stays in the dock with its
354
+ choices, notes and typed text, and the refusal reason appears inside the dock; the same rule is
355
+ checked before the answer leaves the terminal. While it is active, the chat composer and its lower
356
+ status bar are hidden. `n` opens a note for the focused selected choice; Tab and Shift+Tab
357
+ navigate existing note fields, the free-text answer and the action without creating notes. Notes
358
+ and the “Something else” answer wrap across lines. Choice recommendations remain visual only and
359
+ never preselect an answer.
360
+
361
+ Every choice uses one shared measured layout: a marker gutter, a one-third label cell, a two-cell
362
+ gap, and the remaining description cell. Column boundaries align across all rows at every terminal
363
+ width, including compact widths. Text wraps within its cell; a missing description keeps its cell
364
+ and columns never stack. Recommendation text uses `(Rec.)` when the label column is fewer than 14
365
+ cells. Below 60 terminal columns, the dock uses a compact hint. Multi-select choices use `✓`
366
+ when selected and `○` when unselected, matching checklist glyphs; single-choice options remain
367
+ numbered.
368
+
369
+ The dock body has bounded height and vertical scrolling; question tabs and answer/action controls
370
+ stay outside that scrolling region. PageUp/PageDown scroll the body and Ctrl+Home/End jump to its
371
+ beginning/end while the dock is active, rather than scrolling the transcript. Focused choices and
372
+ note fields are brought into view. Ordinary arrows retain question/choice navigation; Shift+arrows
373
+ pan the sketch horizontally or vertically.
374
+
375
+ When a question sets `uiSketch: true`, one shared border-only monospace preview below the choices
376
+ shows the hovered or focused choice's ASCII wireframe, with no visible caption or extra left rule.
377
+ Sketch source supports up to 80 columns by 24 lines (page 02) and remains literal ASCII in
378
+ persistence. The terminal projects every valid sketch onto a fixed 80-column content canvas, padding
379
+ short rows and extending standalone hyphen dividers to that width. The outer preview frame stays
380
+ bounded to the available dock width and the canvas remains horizontally pannable when it does not
381
+ fit. Within the canvas, recognized ASCII table-border rows—including a title between horizontal
382
+ runs—and enclosed vertical table edges become connected box-drawing glyphs, while internal framed
383
+ tables retain their original widths and positions. For a high-confidence frame with matched `+`
384
+ corners, missing or slightly displaced side edges may be filled or moved only through whitespace to
385
+ the established boundary columns; interior text is never moved or overwritten, and conflicting or
386
+ ambiguous rows remain literal. This is not a global `+|-` substitution: prose, content operators,
387
+ ordinary pipes and unrecognized rows remain literal. Source sketches and all persisted whitespace
388
+ remain unchanged; padding, projected glyphs and expanded dividers exist only in the display.
389
+
390
+ There is no wrapping, reflow, truncation or markup interpretation. A bounded two-axis viewport makes
391
+ all overflow reachable by panning. Moving focus changes the preview without changing the staged
392
+ answer. Projected glyphs and expanded dividers never enter persisted events or answers; the wire
393
+ contract is unchanged. See [PROP-0025](proposals/PROP-0025-contextual-question-wireframes.md),
394
+ [ADR-0026](../decisions/ADR-0026-contextual-question-wireframes.md) and the approved display amendment
395
+ [PROP-0026](proposals/PROP-0026-connected-sketch-display.md) /
396
+ [ADR-0027](../decisions/ADR-0027-connected-sketch-display.md), amended for the fixed canvas by
397
+ [ADR-0080](../decisions/ADR-0080-fixed-width-question-sketch-canvas.md), and
398
+ [PROP-0028](proposals/PROP-0028-normalize-question-wireframes.md) /
399
+ [ADR-0029](../decisions/ADR-0029-normalized-question-wireframe-borders.md). Isolated production
400
+ PTY verification is retained in `docs/evidence/terminal-wireframe-normalization/`; it establishes
401
+ cell topology for bounded fixtures, not every emulator/font or live-model sketch quality.
402
+
403
+ ## Web annotations commands (PROP-0017, PROP-0018, PROP-0048)
404
+
405
+ `/annotate:` opens the annotate page, a full-screen page with two tabs. `/annotate:notes` opens it on
406
+ **All annotations**: every annotation in the data root, with search, and reveal, edit, resolve or
407
+ reopen, share with this session or stop sharing, and delete. An annotation is private until shared;
408
+ this session's agent then reads it with `page_notes_list` and `page_notes_read`.
409
+
410
+ The **Annotate** tab is the panel beside the window being inspected.
411
+
412
+ - **Ways to start it:**
413
+ - `/annotate: [url]`: the capture browser (its own window and profile, separate from the agent's
414
+ browser). With no address, the page returns to the window that is still open, with its URL and
415
+ the inspector on, and asks for one in its own inline field only when no window is open.
416
+ - `/annotate: --app [port | address] [name]`: an app's own windows over its DevTools port. With no
417
+ port, the page lists the apps answering on one (`annotations.capture.discover`).
418
+ - `/annotate: --bridge [name]`: app windows that load the page bridge script, which the page shows.
419
+ - **The inspector** (`i`) outlines components on hover. A click or a text drag opens a popover in
420
+ the page with **Annotate** and **Annotate & send**. Every annotation is shared with this session
421
+ at once.
422
+ - **Groups:** Unsent (n) and Sent, for this session.
423
+ - **Other keys:** `s` sends every unsent annotation as one run of this session, confirming the
424
+ page-origin ones once first; `o` types a page address; `a` lists apps with a DevTools port, with
425
+ *Start an app with a DevTools port*, *Type a DevTools port*, *Use the page bridge*; `t` picks a
426
+ window; `Tab` switches tab. A key pressed while the page is busy gets a notice, never nothing.
427
+ - **Commands:** `/annotate:submit <request>` sends the unsent annotations with the request after
428
+ them; `/annotate:clear` resolves the unsent ones and stops sharing them.
429
+ - **Routes:** `terminal.annotations.target|attach|windows|selectWindow|inspect|stopInspect|next|confirm|confirmAll|send|clear|discover|launch`
430
+ act only on this terminal's session and need the control key.
431
+
432
+ A page that opens a dialog as it starts gets it above itself: `PageOverlay` starts its page when the
433
+ host reports the overlay mounted.
434
+
435
+ ## Todo list (PROP-0006, PROP-0045, PAR-001)
436
+
437
+ Terminal sessions register the shared `todo_write` tool. The extension validates each list with
438
+ the same tool code and sends it as `todo` telemetry; the controller emits it as `todo.updated` on the
439
+ active run, so `runs.todo` and continuation read terminal runs too. The gate treats it as read-only,
440
+ plan mode allows it, and terminal children inherit it. The transcript shows each write as a todo
441
+ block (`✓` done, `●` in progress (warning yellow), `○` pending) under a `Todo · n of m done` header
442
+ instead of a tool row; a failed or malformed call stays a tool row. `/todo` reads the latest
443
+ non-side-question run of this terminal's native session and appends the same card as a snapshot,
444
+ without a model request; an empty list is a one-line notice. `/checklist` remains its alias for one
445
+ release.
446
+
447
+ ## Work-slice checkpoint (PROP-0041)
448
+
449
+ Terminal tool-gate and work-slice refusals are relayed as `tool.refused` events with a code and reason; the original refusal text remains the tool response. Interrupted terminal runs record stop codes for work-slice limits, user abort, stalls and terminal closure.
450
+
451
+ Terminal replies carry the same work-slice guard as structured runs, with no budget by default
452
+ (ADR-0081): no tool-call, time or token limit. When a limit is set (below), the guard refuses the
453
+ next call and asks the model to stop and report where it is. An ordinary terminal reply settles as it ends (INV-RUN-15, ADR-0075): the terminal
454
+ never sends it back and never marks it unfinished from the todo list. A `/goal` is the only layer
455
+ that continues a reply; a goal that stops blocked, paused or at a limit sends a harness-written
456
+ `checkpoint` and the `needs_person` or `unfinished` code, which the controller records on the active
457
+ run, so an App reading the same session sees the handoff. No model judges an ordinary reply. A reply that
458
+ reaches a budget someone set, after doing work, continues in place as its next slice (ADR-0070): a
459
+ `xingular-slice-continue` message in the same run, a checkpoint and a notice per boundary, up to
460
+ `maxSlices` (8 by default). A fruitless, blocked, failed, aborted or plan slice, or one whose todo items are all
461
+ done, is not continued; the reply then settles `interrupted` with terminal reason `slice_complete`
462
+ so the person or a host can continue it. A checkpoint card in the transcript is not built yet
463
+ (PAR-004). Start the terminal with key=value pairs such as `XINGULAR_WORK_SLICE=maxToolCalls=15,maxSlices=3`
464
+ to give replies a budget; `off` also disables the compaction guard. Neither is persisted, so the
465
+ next launch without it restores the default of no budget.
466
+
467
+ ## `/goal` (ADR-0072, INV-RUN-16)
468
+
469
+ `/goal <objective>` sets the session's goal and starts work at once; `--rounds N` and `--hours H`
470
+ before the objective set this goal's caps (30 rounds, 8 hours by default). Bare `/goal` shows the
471
+ status (status, objective, rounds, time used, last check, and the commands that apply). `/goal edit`
472
+ asks for a new objective (the same goal, its usage kept), `pause` stops a running reply and keeps the
473
+ goal, `resume` continues it, `clear` removes it. A subcommand matches only as the whole argument, so
474
+ "/goal pause now" is an objective. Setting a goal while an unfinished one exists asks first. Esc or
475
+ Ctrl-C on a running goal pauses it, as in Codex. The status bar shows `Pursuing goal (2m, round
476
+ 3/30)`, `Goal paused (/goal resume)`, `Goal stalled (/goal resume)`, `Goal hit usage limits (/goal
477
+ resume)`, `Goal unmet (...)` or `Goal achieved (...)`.
478
+
479
+ The goal lives in the Pi session as a `xingular-goal-state` entry, so a reopened conversation shows
480
+ it, as `paused`: nothing resumes by itself. The model gets `get_goal` and `update_goal` only while a
481
+ goal exists (INV-TOOL-9). The goal loop runs before slice continuation; a goal's slices continue even
482
+ when every todo item is done. `/goal` is a `session`
483
+ command that uses `sessions.run` with `goal` (page 10); in plan mode the loop stays silent.
484
+
485
+ ## Liveness and a reply that stops working (INV-RUN-14, ADR-0054)
486
+
487
+ While a reply is live the extension sends `heartbeat` telemetry every 30 seconds, carrying the work
488
+ slice counters it already keeps (steps, elapsed time, last tool, compactions, slice and the call
489
+ budget); the controller records it as `heartbeat` on the active run, so the run sweep settles a
490
+ terminal reply that stopped reporting by the same five-minute rule as a structured one.
491
+
492
+ A heartbeat proves the turn is alive, not that it is working. A reply that produces no event other
493
+ than a heartbeat for fifteen minutes — the state a model request that never returns leaves it in —
494
+ is ended: the controller queues the same `interrupt` command the person's Esc queues, the native turn
495
+ aborts, and the run records `interrupted` with reason `stalled`. Pi's abort reports back through
496
+ `terminal.interrupt` as Esc does; the controller passes that interrupt on as `stalled`, not
497
+ `user_abort`, when the stall watch asked for it. A reply whose oldest running tool
498
+ has run for thirty minutes ends the same way, and a reply waiting on an approval or question is never
499
+ cut short. An interrupt, a stall included, also ends a settling reply's wait for its subagents
500
+ (`terminal.subagents.delivery`).
501
+
502
+ The client terminal (ADR-0083) has no controller of its own: its replies are harness runs, so
503
+ `runTurn` heartbeats and applies the same stall rule (page 02, INV-RUN-14), and the live session of a
504
+ stalled reply is closed. The in-process runtime keeps the controller's watch.
505
+
506
+ ## Subagent activity monitor
507
+
508
+ During an active parent run, the terminal polls a private read-only monitor once per second. It
509
+ projects the flat set of child and nested-child runs with task, status, elapsed time, the latest
510
+ tool name, the child's agent profile (name and colour, PROP-0029), the title the parent gave it
511
+ (PROP-0030), counts from the child's own todo list, the pinned account label, effective model and
512
+ effort, and cumulative usage totals. Model and effort come from the volatile launch selection; the
513
+ latest provider-reported model supersedes the launch model when usage is available. Usage is an
514
+ explicit projection of token, cache, cost, request-count and context-window totals. Per-request
515
+ payloads and reasoning summaries do not enter the monitor. The child's own `session_name` is not
516
+ projected; it names the child's session, not its row. Tool summaries, other arguments, output and
517
+ todo item text never enter the monitor. The latest completed tool name remains visible across
518
+ one-second snapshots until new tool or response activity replaces it. The monitor exposes no
519
+ controls to steer or stop children.
520
+
521
+ The live rows sit under the status line, after one blank row, with no heading. Each row reads, in
522
+ order: the status mark (`○` queued, a running row that shows the working spinner's frame in the profile's colour (warning for a copy of the parent), `●` waiting in the accent,
523
+ `✓` done, `✕` failed, `!` stopped), the profile name in its colour (`subagent`, muted, for a copy
524
+ of the parent), the title the parent gave the child (PROP-0030), and `n of m tasks` when the child
525
+ keeps a todo list. Active rows come first, at most three, then `+N more · /subagents`; a narrow
526
+ terminal cuts the title first. `/subagents` opens the searchable full roster, with a colored
527
+ profile and normal-color title on its first line, then muted account, model, effort and usage
528
+ metadata on its second line. One blank row separates each two-line entry. Narrow rows truncate this
529
+ lower-priority summary without hiding the title.
530
+ At parent settlement, the terminal makes a final monitor read and keeps the latest parent's rows
531
+ visible until the next parent run starts.
532
+
533
+ The monitor also projects the parent run itself as a `main` row (profile `main`, a reserved name,
534
+ in the theme's primary colour) with the same account, model, effort, usage, activity and todo
535
+ fields. The `/subagents` page pins it first and counts only children in its header; the rows under
536
+ the status line omit it, since the status line already describes the main agent.
537
+
538
+ Every turn marks its run on the native branch (`xingular-subagent-owner`), and `ready` sends those
539
+ owners. When a conversation opens or is switched to with no run active, the monitor is rebuilt from
540
+ the branch's latest top-level run in this folder and its descendants, by folding their saved events
541
+ with their final status. Runs a stopped process left active were already marked `interrupted`.
542
+ The rows show under the status line and on the page until the next parent run starts (ADR-0043).
543
+ The projection remains read-only and scoped to one parent run; a switch to a conversation with no
544
+ such run clears it, as does terminal disposal. It is not a persisted event or public server method.
545
+
546
+ ## Agent profiles (PROP-0029)
547
+
548
+ `/agents` opens the Agents page over `terminal.agents.list|create|remove`, which call the same
549
+ `agents/profiles.ts` functions as `agents.*`. It lists built-in, global, project and variant
550
+ profiles, and files that cannot be read. The detail pane shows the colour, description, tools,
551
+ plugins, variant, model, effort, file and instructions. Enter on a row offers: for a person's own
552
+ profile, edit (opens the file in `$VISUAL`/`$EDITOR` with the renderer suspended), copy and delete
553
+ (confirmed); for a built-in or variant profile, copy. New profile asks for a name and a place
554
+ (project or global), writes the template and opens it. The terminal passes its pinned variant to
555
+ `Subagents.register`, so the variant's c5 names are profiles there too.