@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,72 @@
1
+ ---
2
+ id: ADR-0079
3
+ title: Phase-led flexible reporting guidance
4
+ status: accepted
5
+ created: 2026-11-02
6
+ updated: 2026-11-02
7
+ amends: ADR-0076 (report phases, reader context, verification honesty, subagent reports and headings)
8
+ related:
9
+ - ADR-0076
10
+ - STUDY-0009
11
+ ---
12
+ # ADR-0079 — Phase-led flexible reporting guidance
13
+
14
+ > Amends [ADR-0076](ADR-0076-codex-final-answer-verbatim.md): keep its self-contained, outcome-first
15
+ > report and flexible structure, while strengthening the reader, evidence, heading and subagent
16
+ > guidance based on [STUDY-0009](../study/STUDY-0009-claude-code-reporting.md).
17
+
18
+ ## Context
19
+
20
+ The study compared Claude Code's external and internal prompt phases with the Harness reporting
21
+ section. It found three useful gaps: the Harness did not explicitly help a reader who has lost the
22
+ thread, did not say directly how to report checks that were not run or failed, and gave subagents no
23
+ caller-facing report contract. The in-flight progress sentence also appeared in both `writing` and
24
+ `reporting`, although `reporting` shapes the final answer.
25
+
26
+ The user asked for phase-led final-report guidance and frequent Markdown `#` / `##` headings such as
27
+ "What changed", "Checks" and "Things to know", while explicitly rejecting a fixed heading vocabulary.
28
+
29
+ ## Decision
30
+
31
+ - Keep the final reply self-contained, outcome-first, evidence-led and scaled to the work. Organize
32
+ the guidance in final-report order: reader and purpose, opening, body, evidence and honesty,
33
+ person-owned next step when one exists, headings, lists and tables, length, references and
34
+ formatting, then examples and pre-send review. Follow citation and file-link rules already
35
+ supplied by the active session or host. Pre-tool narration and in-flight updates remain in their existing prompt section;
36
+ remove only the duplicate progress-update sentence from `reporting`. Do not add an away-recap
37
+ surface or numeric word caps.
38
+ - Add the cold-reader test: assume the person may have stepped away and lost the thread; give enough
39
+ context to pick the work back up and match the explanation to cues about their experience.
40
+ - State verification honestly. Say when a check was not run, never imply that it passed, report
41
+ failures with relevant output, and state passes plainly.
42
+ - When writing as a subagent, give the caller a concise account of work done and key findings. The
43
+ caller integrates and relays it. Include absolute paths and useful evidence, snippets only when
44
+ exact text is load-bearing, and no recap of code merely read.
45
+ - For substantive replies with distinct parts, often use Markdown headings: a `#` title when useful
46
+ and `##` headings for meaningful sections. Choose labels from the reply's actual content. Examples
47
+ such as "What changed", "Checks" and "Things to know" are optional wording, not a fixed list or
48
+ template. Short replies may stay in prose; headings are never forced and empty sections are not
49
+ added.
50
+ - Revise one worked example to demonstrate a content-specific `#` / `##` structure and retain a
51
+ short heading-free example. Keep the 12,000-character reporting budget.
52
+
53
+ ## Consequences
54
+
55
+ - Reporting behavior changes the stable prompt prefix. Existing live terminal sessions retain the
56
+ pack they started with; new sessions receive the updated text. Cache reuse after the prefix change
57
+ must be measured only with real application requests and the account owner's permission
58
+ (INV-PRM-8).
59
+ - No storage, server protocol or tool capability changes.
60
+ - The guidance favors headings for substantial multi-part reports without prescribing section names
61
+ or forcing headings on simple replies.
62
+
63
+ ## Alternatives
64
+
65
+ - **Require a fixed set of report headings.** Rejected: the user wants headings chosen for the
66
+ content, and fixed labels become a template.
67
+ - **Keep reports prose-only unless a heading is requested.** Rejected: substantial reports should
68
+ use headings often enough to make their parts easy to find.
69
+ - **Move progress updates or add an away recap to reporting.** Rejected: in-flight updates already
70
+ belong in `writing`, and this harness has no away-recap surface.
71
+ - **Adopt Claude Code's numeric word limits.** Rejected: the study did not establish their quality
72
+ effect for this Harness.
@@ -0,0 +1,50 @@
1
+ ---
2
+ id: ADR-0080
3
+ title: Use a fixed 80-column canvas for question sketches
4
+ status: accepted
5
+ created: 2026-11-28
6
+ updated: 2026-11-28
7
+ related: [PROP-0026, ADR-0027, ADR-0029, INV-PAR-1, INV-PAR-2]
8
+ supersedes: null
9
+ superseded_by: null
10
+ ---
11
+
12
+ # ADR-0080 — Use a fixed 80-column canvas for question sketches
13
+
14
+ ## Context
15
+
16
+ The shared question-sketch contract permits up to 80 printable ASCII columns, but neither validation
17
+ nor the tool guidance required the model to use that full width. The terminal's display width also
18
+ followed the viewport, so the same sketch could appear at different widths on different terminals.
19
+ A fixed design canvas gives the model room for contextual UI detail and makes terminal previews
20
+ consistent without breaking callers that provide shorter sketches.
21
+
22
+ ## Decision
23
+
24
+ Ask the model to design detailed `uiSketch` wireframes on a fixed 80-column canvas. This remains
25
+ guidance: preserve the existing validator, which allows sketches shorter than 80 columns and does
26
+ not require trailing spaces.
27
+
28
+ The terminal projects every valid source sketch to 80 content columns, padding shorter rows and
29
+ extending standalone divider rows to the same width. Keep the outer preview frame no wider than the
30
+ available dock; the content remains horizontally pannable when the canvas does not fit. Keep the
31
+ existing structural-border projection within the canvas. Padding and projected glyphs are display-only;
32
+ source events and answer payloads remain unchanged.
33
+
34
+ The App may keep its literal ASCII preview and overflow behavior. Both surfaces use the same source
35
+ contract and model guidance; identical preview typography is not required. This amends only the
36
+ viewport-relative canvas and divider sizing in [ADR-0027](ADR-0027-connected-sketch-display.md) /
37
+ [PROP-0026](../architecture/proposals/PROP-0026-connected-sketch-display.md). Their structural
38
+ recognition and persistence rules remain in force.
39
+
40
+ ## Consequences
41
+
42
+ Short source rows appear padded in the terminal but remain unchanged in history. A model may still
43
+ return a narrower drawing because canvas usage is not schema-enforced. There is no data migration,
44
+ wire-contract change, or answer-payload change.
45
+
46
+ ## Verification
47
+
48
+ Cover fixed width and padding in unit tests; verify the viewport-bounded frame and horizontal panning
49
+ at compact, standard, and wide PTY sizes. Confirm persisted sketch text and submitted answers remain
50
+ unchanged. Fixture verification does not guarantee every live-model sketch uses the full canvas.
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: ADR-0081
3
+ title: No work-slice budget by default
4
+ status: accepted
5
+ created: 2026-11-02
6
+ updated: 2026-11-02
7
+ related: [PROP-0041, PROP-0044, ADR-0070, ADR-0075, INV-RUN-13]
8
+ supersedes: null
9
+ superseded_by: null
10
+ ---
11
+
12
+ # ADR-0081 — No work-slice budget by default
13
+
14
+ ## Context
15
+
16
+ PROP-0041 bounded a reply at a number of tool calls and minutes, then handed off, and ADR-0070 and
17
+ PROP-0044 tuned that to 320 calls and 60 minutes with up to eight continued slices. In practice a
18
+ reply that was plainly still working was cut mid-task, told to "stop using tools and write a short
19
+ report", and showed as unfinished while a child worker kept the run alive.
20
+
21
+ ## Decision
22
+
23
+ The foundation default has no tool-call, time or token limit. `DEFAULT_SLICE_POLICY` sets
24
+ `maxToolCalls`, `maxMinutes` and `maxNewTokens` to 0, so `sliceLimitReached` never fires and no reply
25
+ ends or continues at a budget. The guard, `workSlice` on `sessions.run` and `XINGULAR_WORK_SLICE`
26
+ stay for a caller that wants a limit, and the three-compaction guard is unchanged. The model is no
27
+ longer told a budget exists, and the standard prompt asks it to keep working until the request is
28
+ done or the person interrupts.
29
+
30
+ ## Consequences
31
+
32
+ - The stable prompt prefix changes once, so the first reply after upgrading is uncached.
33
+ - Runaway work is bounded only by the stall watch (ADR-0054), the compaction guard, approvals and
34
+ the person's Esc; a host that wants a ceiling sets `workSlice`.
35
+ - The budget code, its protocol field and its heartbeat fields remain, so a later decision can
36
+ delete them without a migration. `heartbeat.maxToolCalls` is 0.
@@ -0,0 +1,72 @@
1
+ ---
2
+ id: ADR-0082
3
+ title: Connected Brave browser backend
4
+ status: accepted
5
+ created: 2026-11-20
6
+ updated: 2026-11-20
7
+ related: [STUDY-0008, PROP-0040, INV-PAR-1, INV-PAR-2]
8
+ supersedes: null
9
+ superseded_by: null
10
+ ---
11
+
12
+ # ADR-0082 — Connected Brave browser backend
13
+
14
+ ## Context
15
+
16
+ The isolated Chromium browser cannot use the person's existing sign-in. The App's WebKit tabs are
17
+ host-owned, have a different profile lifecycle, and do not implement snapshot-scoped ref actions.
18
+ The person asked to choose between an isolated browser and their existing signed-in Brave profile,
19
+ with no automatic switch if the chosen backend disconnects.
20
+
21
+ ## Decision
22
+
23
+ Add an opt-in Brave backend through an unpacked Manifest V3 extension. The extension uses
24
+ `chrome.debugger` to adopt existing normal tabs, and the Harness adapts the extension to the shared
25
+ `BrowserToolSession` and `browser_*` schemas. The extension is loaded manually and pairs with the
26
+ Harness over an authenticated loopback bridge. Do not enable remote debugging on the person's
27
+ profile and do not require Native Messaging. Pairing validates the extension origin; subsequent
28
+ service-worker calls require the bearer token because the browser may omit Origin on those requests,
29
+ and any supplied mismatched Origin is rejected.
30
+
31
+ Browser backend selection is device-local. A project, variant or page cannot enable Brave. A person
32
+ must explicitly choose Brave, pair the extension with a short-lived code, and allow each exact
33
+ origin from the extension popup. Chrome host grants can cover every port on a host, so the extension
34
+ also records the exact scheme, host and port and checks that allow list before exposing a tab.
35
+ Incognito is disabled. The extension does
36
+ not request history or cookie permissions and does not export cookies; a signed-in page remains
37
+ signed in because it uses the existing profile. The extension's `debugger` permission is broad and
38
+ must be disclosed before the person selects Brave.
39
+
40
+ While connected and permitted, the page shows **“Xingular Agent is on this site”**, with Pause and
41
+ Stop controls and a brief pulse at the most recent click. Pause refuses new calls but lets an action
42
+ already in flight finish. Stop revokes the pairing, rejects pending calls, clears the badge and closes
43
+ the bridge. Normal Harness shutdown closes the bridge but keeps the pairing so the extension can
44
+ reconnect. A lost or paused connection refuses calls; it never selects another browser. A timed-out
45
+ call reports that its outcome is unknown and requires a fresh snapshot before retry.
46
+
47
+ The shared browser gate remains authoritative: snapshot refs are invalidated when page state or the
48
+ debugger attachment changes; sensitive fields are refused; consequential actions require fresh
49
+ human approval and are revalidated; actions require an attended run; page content remains untrusted.
50
+ The Brave tool list does not include the App-specific `browser_upload`. WebKit remains an independent
51
+ backend with its existing narrower capabilities.
52
+
53
+ ## Consequences
54
+
55
+ - Harness and terminal settings can select isolated or Brave, pair, inspect status and stop the
56
+ connection. Hosts may disable the generic browser provider with `browser: false` and retain the
57
+ Harness bridge through `HarnessOptions.browserExtension`.
58
+ - The App keeps WebKit as its native backend and obtains shared Harness browser tools only when
59
+ Brave is selected. The App's connected-apps broker does not expose duplicate browser tools in
60
+ Brave mode.
61
+ - Pairing state lives in owner-only `<state dir>/browser/extension-bridge.json`; backend and
62
+ network settings remain in `<state dir>/browser.json`.
63
+ - The extension requires manual loading and site permissions. It does not provide a remote browser
64
+ service, history, cookie export, file uploads or general DevTools console/network access.
65
+ - D-25 remains open for selector-based operations in the App's WebKit Rust implementation and its
66
+ App-only upload contract. D-26 is partly resolved: Brave implements the shared ref tools, but the
67
+ App's Rust capability response is not yet backend-aware.
68
+ - The opt-in live acceptance in `src/browser/extension/brave-live.acceptance.test.ts` passed with a
69
+ disposable Brave profile and a loopback fixture. It covers pairing, exact-origin gating, snapshots,
70
+ actions, pause/stop and disconnect refusal; it does not exercise Chrome's optional-host grant
71
+ prompt for a non-loopback site. Use only disposable profiles for runtime verification; never use the
72
+ everyday profile.
@@ -0,0 +1,256 @@
1
+ ---
2
+ id: ADR-0083
3
+ title: One live session runtime in the harness
4
+ status: accepted
5
+ created: 2026-11-03
6
+ updated: 2026-11-03
7
+ related: [ADR-0001, ADR-0035, ADR-0056, INV-RUN-1, INV-SRV-1, INV-SRV-4, INV-TUI-2, INV-RC-5, INV-PAR-1, INV-PAR-2, PAR-008, PAR-018]
8
+ supersedes: null
9
+ superseded_by: null
10
+ ---
11
+
12
+ # ADR-0083 — One live session runtime in the harness
13
+
14
+ ## Context
15
+
16
+ The harness runs a conversation in two different runtimes:
17
+
18
+ - **Structured sessions** (`xagent serve`, the App sidecar): `Sessions.run` opens a Pi session for
19
+ one run and disposes it when the run settles (`sessions/runner.ts`, `piSessionFactory` and the
20
+ `finally` of `runTurn`).
21
+ - **The terminal**: a Bun child keeps one Pi `AgentSessionRuntime` alive across turns
22
+ (`terminal/tui/runtime.ts`). Its gate, telemetry and run accounting go through
23
+ `terminal/piExtension.ts`, the session socket and `TerminalController`.
24
+
25
+ ADR-0001 chose the second runtime because calling `sessions.run` per prompt "recreates and disposes
26
+ the runtime per turn, losing persistent plugin UI/queue state". That reason still holds for the
27
+ structured path as it is built today.
28
+
29
+ Two runtimes mean many lifecycle features are built twice and drift: plan-outcome repair (D-22),
30
+ the queued-message rules, work slices (a headless run continues as a new run, a terminal reply in
31
+ place), stall guards (`terminal/stallWatch.ts`, now `sessions/stallWatch.ts`), `get_capabilities`, and about fifteen private
32
+ `terminal.*` routes that mirror public methods. A terminal session cannot be reached from the App
33
+ (PAR-018) and the two keep separate session catalogs (PAR-008). A run ends when its window closes.
34
+
35
+ Codex keeps the agent loop in one server process (`codex app-server`) and makes every front end a
36
+ client of it: threads, turns and items over JSON-RPC, approvals as server-to-client requests.
37
+ Claude Code keeps the loop inside the CLI process and lets other front ends spawn that process.
38
+ The harness's server protocol (page 10) and run events (page 02) already have Codex's shape
39
+ (session ≈ thread, run ≈ turn, run events ≈ items). The missing part is a live session the server
40
+ owns across runs.
41
+
42
+ ## Decision
43
+
44
+ The harness owns one session runtime. A *live session* is a Pi session the harness keeps open
45
+ across runs of the same native conversation. Every front end, including the terminal, reaches it
46
+ through server methods. The terminal keeps its owned OpenTUI presentation (the screen half of
47
+ ADR-0001); only its private runtime goes away.
48
+
49
+ Work proceeds in phases; each lands with its spec pages and checks.
50
+
51
+ 1. **Live sessions.** A `LiveSessions` service in `src/sessions/` keeps a Pi session open between
52
+ runs. `Sessions.run` reuses it when the new run's pins match the open session, and opens a fresh
53
+ one otherwise. Unattended triggers (`probe`, `improver`, `reflection`) and refinement keep the
54
+ per-run open and dispose. A caller opts in with `sessions.run { live: true }`; the first such run
55
+ opens the live session. Additive methods: `sessions.live`, `sessions.close`, `sessions.followUp`,
56
+ `sessions.followUp.clear`. Steering stays `runs.steer`, and replay stays `runs.since`, which
57
+ already exist. The App adopts this first.
58
+ 2. **The terminal as a client.** The OpenTUI child talks to the harness over the protocol on a
59
+ local socket and renders from run events. The private `terminal.*` mirrors give way to the
60
+ public methods, scoped by the caller identity the control key proves. The old path stays behind
61
+ a flag until production PTY acceptance at 40x20, 80x24 and 100x30, then is removed.
62
+ 3. **Optional daemon.** Decided after phase 2: a long-lived `xagent serve --daemon` on a Unix
63
+ socket under the state directory, with one writer per data root, so a run outlives its window,
64
+ and remote control belongs to a live session rather than a terminal (PAR-018).
65
+
66
+ ### Phase 1 design: what a run binds
67
+
68
+ A run pins its account, variant version and capability set (INV-RUN-1), so a live session may only
69
+ serve a run whose pins equal the session's. The reuse key is: account, variant version, frozen
70
+ capability fingerprint, working folder and workspace root, plan flag, allowed tool names, the
71
+ stable system prompt, and the loaded plugin set. Model and effort changes go through Pi's own
72
+ setters. Any other difference closes the live session at the turn boundary and opens a new one on
73
+ the same native history, as `/variant` already does (ADR-0065).
74
+
75
+ Today these are created per run and baked into the Pi session when it opens
76
+ (`sessions/sessions.ts`, the `params` and `factory` call; `sessions/runner.ts`,
77
+ `piSessionFactory`). Each must read a *current run binding* that `LiveSessions` swaps at the start
78
+ of every run:
79
+
80
+ | Bound per run today | Where | Becomes |
81
+ |---|---|---|
82
+ | The gate (`checkDetailed`, workspace scope requests, plan refusals) | `gatedExtension` in `piSessionFactory` | A session-level `tool_call` handler that asks the current binding's gate |
83
+ | Custom tool specs bound to the run (`spec.execute`) | `customTools` in `piSessionFactory` | Session-level tool definitions that call the current binding's spec of the same name |
84
+ | The extension host (`ask`, `notice`) | `bindExtensions` in `piSessionFactory` | A host that forwards to the current run, and refuses between runs |
85
+ | `runLineageJoin(root, runId)`, `subagents.extension(runId)` | `params.inline` | Extensions that read the current run id |
86
+ | Compaction checkpoint (`initialTodo`, plan instructions) | `params.inline` | Reads the current run's todo and plan flag |
87
+ | Work-slice guard and goal loop (their state and controller) | `params.inline` | Installed once, enabled and fed by the current binding |
88
+ | `onRefusal`, `activatedPlugins`, the heartbeat and `settle` | `params`, `runTurn` | Already per run in `runTurn`; unchanged |
89
+
90
+ `runTurn` stops disposing the session; `LiveSessions` disposes it on `sessions.close`, on a pin
91
+ change, after an idle timeout, and at harness shutdown. A live session runs one run at a time; a
92
+ second `sessions.run` while one is active is refused, or delivered as a steer or follow-up when the
93
+ caller asks for that.
94
+
95
+ ## Alternatives and rejection reasons
96
+
97
+ - **Keep two runtimes.** Every lifecycle feature keeps its second copy, and the drift and parity
98
+ lists keep growing.
99
+ - **Claude Code's model** (the terminal process is the engine, hosts spawn it). Simple for one front
100
+ end, but the App, the phone surface and evaluation would each drive a terminal process, and the
101
+ structured path would remain a second runtime.
102
+ - **Make the terminal call today's `sessions.run`.** Rejected by ADR-0001 for the same reason it
103
+ gives: a per-run runtime loses queues and persistent plugin UI. Phase 1 removes that reason first.
104
+ - **A rewrite in one release.** Too large to verify; each phase must pass the full checks and, for
105
+ phase 2, production PTY acceptance.
106
+
107
+ ## Consequences and risks
108
+
109
+ - This is a 2.0-level change: it adds methods and a socket transport (INV-SRV-1, INV-SRV-4),
110
+ changes who owns execution in the terminal (INV-TUI-2), and moves remote control's lifetime
111
+ (INV-RC-5). Pages 02, 10, 11, 14 and 15 change as each phase lands.
112
+ - Every inline extension must be safe to keep across runs. A missed per-run closure would leak one
113
+ run's state into the next; phase 1 tests run two turns on one live session and check each run's
114
+ events, refusals and records belong to that run only.
115
+ - Streaming over IPC adds latency to the terminal; phase 2 measures first-delta latency before and
116
+ after.
117
+ - Live checks may use real model requests only with the owner's permission (granted for this work
118
+ with a Codex account on Luna 6, or the OpenCode account on DeepSeek V4.1 Flash), never against
119
+ `~/.codex`, `~/.claude` or `~/.pi`.
120
+
121
+ ## Evidence — phase 1, 2026-11-03
122
+
123
+ Implemented in `src/sessions/live.ts`, `src/sessions/runner.ts` (`rebind`, `release`, run slots),
124
+ `src/sessions/sessions.ts` (`live`, follow-ups) and `src/server/methods.ts`. `src/sessions/live.test.ts`
125
+ covers reuse across runs, a pin change, the per-run default, busy refusal, queued, idle and parked
126
+ follow-ups, close and shutdown, refusal for unattended runs, and a rebind of a real Pi session (an
127
+ `input` handler and a bound tool replaced by the next run's) with no model request. Harness:
128
+ 1,803 tests passed, `npm run prove` passed. App sidecar typecheck and 89 tests passed against this
129
+ tree.
130
+
131
+ Live check with owner permission, account OpenCode, model `opencode-go/deepseek-v4.1-flash`, a
132
+ throwaway data root and the installed sign-in:
133
+
134
+ | Run | Live | Status | Native session | Session ready (ms) | Input tokens | Cache read |
135
+ |---|---|---|---|---|---|---|
136
+ | b1 | no | completed | `01a19f83-2ef3…` | 1002 (cold start) | 4796 | 0 |
137
+ | b2 | no | completed | same | 73 | 73 | 4736 |
138
+ | l1 | yes | completed | `01a19f83-408c…` | 75 | 4796 | 0 |
139
+ | l2 | yes | completed | same, reused | 52 | 73 | 4736 |
140
+ | l3 | yes, steered | completed | same, reused | 59 | 326 | 9472 |
141
+
142
+ The live session served three runs (`runs: 3`). Reuse keeps the provider cache exactly as the
143
+ per-run path does. A steer sent after the first delta was recorded as `message.steered` and the
144
+ model answered it in the same run. A reused session is ready slightly sooner (52–59 ms against 73 ms
145
+ warm); the larger gains are steering, follow-ups and plugin state that survive between runs.
146
+
147
+ ## Evidence — phases 2 and 3, 2026-11-03
148
+
149
+ **Phase 2, the terminal as a client.** `XINGULAR_TERMINAL_RUNTIME=harness` selects
150
+ `terminal/tui/harnessRuntime.ts`; the parent side is `terminal/liveTerminal.ts`. The in-process
151
+ runtime stays the default. Decision recorded with the owner: plugin presentation that needs an
152
+ in-process terminal is unavailable in client mode (INV-TUI-8), as it is in a host.
153
+
154
+ - Tests with real Pi and a scripted model: `terminal/liveTerminal.test.ts` (two turns on one live
155
+ session, the native event journal, a plan-mode `ask_user` answered through the decision routes,
156
+ busy refusal) and `terminal/tui/harnessRuntime.socket.test.ts` over the real session socket (the
157
+ mirrored transcript, one native session, the in-process tool set, `/todo` and `/trajectory`
158
+ lookup, the system prompt, a plan question, `/new` on a new file).
159
+ - Live, OpenCode account, `opencode-go/deepseek-v4.1-flash`, real OpenTUI frontend in a PTY at
160
+ 100x30, 80x24 and 40x20: five turns and a queued follow-up each, all completed on one native
161
+ session. Mean time from Enter to the reply on screen for turns 2–5: client 1.60 s, 1.79 s and
162
+ 1.37 s against in-process 1.59 s at 100x30, within the model's own variation. The fixed overhead
163
+ from Enter to the harness run starting is about 30 ms against about 5 ms in process. Startup to
164
+ ready: 2.2–2.9 s client, 2.6–2.8 s in process.
165
+ - Found and fixed on the way: the client first lacked the world tools and had `grep`, `find` and
166
+ `ls`, which the in-process terminal does not activate; a new conversation re-adopted the old file
167
+ from stale state; a mode with no saved model sent none; child runs inherited `live: true` (caught
168
+ by the App's sidecar test).
169
+ - Not passing yet: the production PTY suite stops early in client mode on a record-contract
170
+ difference (Known drift D-28).
171
+
172
+ **Phase 3, the long-lived harness.** `server/socket.ts`, `terminal/daemon.ts`, `Terminals.detach`
173
+ and `prepare { attach }`, CLI `xagent daemon start|stop|status`, `xagent --daemon`, `xagent attach`.
174
+
175
+ - Tests: `terminal/daemon.test.ts` (one lock per state folder and a stale lock replaced, the
176
+ protocol on an owner-only socket to several connections, a full daemon run that prepares over its
177
+ socket, reports and stops); `harnessRuntime.socket.test.ts` (a reply keeps running when its
178
+ window closes and a new window reattaches and sees it finish; a detached session ends when its
179
+ reply settles).
180
+ - Live, same account and model: `xagent daemon start`, a `--daemon` window asked for 600 numbers,
181
+ the window was hung up (SIGHUP) mid-reply; it printed the `xagent attach <id>` line, `daemon
182
+ status` reported one live session and one reply without a window, `xagent attach` showed the
183
+ reply finish 3.6 s later, and the run recorded `completed`. Afterwards no live or detached
184
+ session remained and `daemon stop` removed the lock and socket.
185
+ - Found and fixed: the daemon took its lock before the state folder existed.
186
+
187
+ Checks at the end: harness typecheck clean, 1,820 tests pass, `npm run prove` passes; App sidecar
188
+ typecheck and 89 tests pass against this tree, `check:layers` flags none of the new files. Open
189
+ and unrelated to this change: the App's `soloCommands.test.ts` expects Solo to handle `/goal`
190
+ (PAR-017), and the App's root typecheck reports button-prop errors in its UI.
191
+
192
+ ## The client terminal is the default — 2026-11-03
193
+
194
+ The owner asked to finish the client terminal and make it the default once it works. `xagent` now
195
+ runs the client terminal unless `XINGULAR_TERMINAL_RUNTIME=inprocess` is set. The in-process
196
+ runtime stays for plugins that need their own terminal components.
197
+
198
+ What finishing it took, each with a test:
199
+
200
+ - Parity of what a person sees: plugin notices, status lines, widgets and titles (`harness_notice`);
201
+ a failed reply's message; a settle marker when Pi's loop never started; plugin `select`,
202
+ `confirm`, `input` and `editor` shown with the window's own dialogs (`question.requested.dialog`);
203
+ plugin commands listed before the first turn and sent by their owner-qualified route; a plugin
204
+ that cannot load stops the window's start; `/goal` run as a harness goal with its state shown.
205
+ - Parity of what a turn does: plan runs carry only the plan's tools (`planTools: 'active'`); `!`
206
+ commands run as the turn's initial Bash on a resumed history; `/session` takes a file or a session
207
+ id; `/new` and steering ask the harness whether a reply really runs before refusing.
208
+ - Lifecycle: `/stop` and Esc return at once and Pi's abort finishes behind them; the window closes
209
+ cleanly when its harness is gone; an uncaught error in the host closes the window before exiting
210
+ 1; a frontend left after its terminal hangs up is ended after three seconds (this also leaked
211
+ in-process windows); the long-lived harness survives one plugin's uncaught error.
212
+ - A harness fix every host gets: a provider request that timed out and was retried and answered no
213
+ longer marks the run failed.
214
+
215
+ Evidence:
216
+
217
+ - Harness: typecheck clean, 1,829 tests pass, `npm run prove` passes; App sidecar typecheck and 89
218
+ tests pass; `check:layers` flags none of the new files.
219
+ - Production PTY suite (`scripts/verify-terminal.py`, its local provider, no real requests) in the
220
+ default client terminal: the full run passes at 40x20, 80x24, 100x30 and 120x40, and so do the
221
+ welcome, click-focus, composer, file-completion, history, resume, todo, questions, jump-latest,
222
+ help, command-completion, attachments, dialog-paste, thinking, queue and compaction suites. The
223
+ script now accepts what differs by design: either approval title, a question asked with or without
224
+ an approval, either `nativeSessionId` contract, a plugin overlay the client cannot draw, a size
225
+ shown in bytes, a varying usage-event count, and a long command name wrapped after its owner
226
+ prefix. Browser, palette, accounts at 120x40 and trajectory at 120x40 fail the same way on the
227
+ previous commit (Known drift D-30); markdown fails only with uncommitted work outside this change
228
+ (D-31). The full run's `/stop` step, which allows 0.8 seconds, failed twice while the machine's
229
+ load average was above 20 and passed every time below it.
230
+ - Live, OpenCode account, `opencode-go/deepseek-v4.1-flash`, real frontend at 100x30: five turns
231
+ and a queued follow-up on one native session; `/stop` and Esc recorded the reply interrupted in
232
+ 33–77 ms against 35–62 ms in process; turn latency within the provider's variation. One turn hit
233
+ a ten-minute provider timeout and its retry answered; the run now records `completed`. With
234
+ `--daemon`, a window hung up mid-reply left the reply running; `xagent attach` showed it complete.
235
+
236
+ ## Closing the migration — 2026-11-04
237
+
238
+ - **Stall guard for every harness run.** The terminal's stall rule (15 minutes without an event, 30
239
+ with a tool running; ADR-0054, ADR-0078) lived only in the in-process controller, so a client
240
+ terminal reply, a live session and an App turn had only Pi's own request timeout (about ten
241
+ minutes, retried). `runTurn` now applies it to every run (`sessions/stallWatch.ts`, moved from
242
+ `terminal/`): the run settles `interrupted` with `stalled`, the native turn is aborted, and a live
243
+ session is closed (queued follow-ups parked), or closed under the turn if the abort has not
244
+ unwound it after 30 seconds. A pending approval or question, and a wait for subagents (each child
245
+ has its own guard), restart the clock. Pi's request timeout is unchanged: a shorter one multiplies
246
+ with the retry policy and could cut a slow reasoning model's first token, so the progress rule is
247
+ the cap.
248
+ - **Heartbeat for every run.** `runTurn` emitted `heartbeat` only for work-slice runs, against
249
+ INV-RUN-14; a live reply with a quiet tool for 30 minutes could be settled `owner_gone`. It is now
250
+ unconditional (slice counters zero without a slice).
251
+ - **Verifier.** The four D-30 suites asserted stale layouts, not product faults, and are fixed; the
252
+ `/stop` step polls the run record up to 8 seconds instead of reading for 0.8; the in-process
253
+ fallback's full run passes at 80x24 (the deny/approval-cancel stop did not reproduce). D-31 (the
254
+ markdown suite) is the other change's fixture overflowing the screen. Tests: `sessions/stall.test.ts`
255
+ (8) cover the guard and heartbeat.
256
+ - Not done: PAR-018 (remote control bound to a live session). Notes in HANDOFF.md.
package/docs/doctor.md ADDED
@@ -0,0 +1,95 @@
1
+ # Doctor
2
+
3
+ Run `/doctor` in the Harness terminal. It opens a readiness report for the selected account/model,
4
+ enabled tools, MCP connections, plugins and skills, pinned variant, runtime and storage.
5
+
6
+ **Local is the default.** It inspects configuration, saved state and resource readability without
7
+ provider requests, token refreshes, browser launch, permission prompts or computer input. A local
8
+ pass does not establish live connectivity. Other accounts show their saved status and timestamp.
9
+ Providers without diagnostics report unverified. Disabled capabilities are not failures.
10
+ The application-window capture check reports blocked when no screenshot tool is listed, and
11
+ unverified when one is listed; it does not capture a window or establish backend isolation.
12
+
13
+ The shell check reports which `bash` the session would run and whether the platform's
14
+ write-boundary sandbox (sandbox-exec on macOS, bubblewrap on Linux) is installed, because a missing
15
+ backend stops every Bash call before the command starts. It runs nothing. On Windows it reports a
16
+ warning naming the shell (Git Bash or PowerShell) and that each command asks for approval, because
17
+ Windows has no write-boundary sandbox; the live shell check reports unverified there, since a
18
+ command would need a person to approve it.
19
+
20
+ Press `l` to choose live checks, then review the account/model, destinations, possible charges and
21
+ isolation notice. The model check makes one synthetic request with at most 64 output tokens;
22
+ usage appears on a separate diagnostic run. Web checks fetch example.com and search for “example
23
+ domain”. The shell check runs one fixed command written by the harness (`printf`) in the working
24
+ folder through the same root, hard-link scan and write-boundary sandbox a normal Bash call uses, and
25
+ reports only the exit status: no model input is sent, no file is written and no network request is
26
+ made. A diagnostic never widens the boundary, so Full Permission cannot change its result; when the
27
+ boundary refuses before the shell starts (for example a hard-link alias in the workspace), the
28
+ finding is blocked with that reason instead of claiming the shell is broken. MCP checks
29
+ connect/list only. Browser checks use a disposable headless profile and an
30
+ offline synthetic page; configured CDP attachment is blocked. Computer input is blocked unless the
31
+ host supplies a disposable diagnostic surface; the current desktop host supplies readiness only.
32
+
33
+ The report keeps mode, progress, account/model and status counts visible above the findings. Wide
34
+ layouts use aligned Status, Check, Category and Verification columns; evidence and any next step
35
+ appear beneath each finding. Narrow layouts stack those fields. Status colors follow the active
36
+ theme: pass is green, warning/blocked amber, fail red, disabled dim and unverified muted.
37
+
38
+ `r` refreshes local readiness, `t` retries a selected local check, `c` cancels, and Escape closes
39
+ and cancels pending work. Use Up/Down to scroll by line, PgUp/PgDn or the mouse wheel to scroll by
40
+ page, and Home/End to jump to the first/last finding. Completed findings survive cancellation. Every finding includes
41
+ evidence and, where useful, a next step. Doctor never signs in, switches accounts, installs, grants
42
+ access, or repairs settings. Findings and jobs are retained in memory until shutdown; live run
43
+ records and usage remain in normal Harness storage.
44
+
45
+ ## Embedding
46
+
47
+ ```ts
48
+ const job = harness.doctor.start({
49
+ context: { caller: {}, cwd, accountId, model: 'provider/model', tools: ['web_fetch'] }
50
+ })
51
+ const report = harness.doctor.read(job.id)
52
+ harness.doctor.cancel(job.id)
53
+ ```
54
+
55
+ Server hosts use `doctor.start`, `doctor.read`, and `doctor.cancel`. A host must obtain consent
56
+ before setting `mode: 'live'`, `checks`, and `confirmed: true`. Supply an exact variant version and
57
+ capability snapshot when reproducing a pinned run. Exported schemas validate reports.
58
+
59
+ Tool providers may attach `diagnostics(context)` returning `DoctorCheck[]`. Local callbacks must
60
+ be passive and network-free. Optional live callbacks declare a notice and receive an AbortSignal,
61
+ a separate real run, and a gated `call(tool, input)` helper. Honor cancellation; release owned
62
+ resources. Route all live tool execution through `call`. Each check has a stable unique ID and
63
+ lists the tools it covers. Existing providers need no changes and appear as unverified.
64
+
65
+ ## Working-tree verification — 2026-10-22
66
+
67
+ | Check | Result |
68
+ |---|---|
69
+ | Focused Harness service, protocol, control-key, gate, offline-account, browser-isolation and terminal tests | 69 passed across 7 files |
70
+ | App computer diagnostics and diagnostic report contract | 7 passed |
71
+ | Harness typecheck and build/standalone proof | Passed |
72
+ | App renderer typecheck and UI consistency | Passed; existing UI baseline remains |
73
+ | App Rust tests | 240 passed, 1 ignored |
74
+ | Full Harness suite | Could not complete successfully in this sandbox: terminal socket creation returns EPERM; other platform-dependent failures were also reported. The stalled full run was stopped after failures. |
75
+ | Full App renderer tests | 590 passed, 2 failed on existing Guide links/headings |
76
+ | Full App sidecar tests/typecheck | Blocked by older tree/HarnessChoice imports and contract expectations against the current variant API; diagnostic tests pass |
77
+ | App layer check | Rejects the in-progress Harness browser implementation, including backend diagnostic callbacks; ownership/specification drift is recorded as D-9 |
78
+
79
+ No live provider diagnostic or user browser/computer interaction was performed. Browser regression
80
+ tests use injected launchers. The proof uses isolated scripted fixtures. Changes remain uncommitted
81
+ alongside concurrent work; these results do not establish release readiness for the whole workspace.
82
+
83
+ ## Later 1.0.0 candidate preparation — 2026-10-22
84
+
85
+ The release preparation resolved the earlier App migration, Guide-link and browser-layer blockers:
86
+ the App's 592 renderer tests, 40 sidecar tests, typechecks and layer/UI checks pass. Rust has
87
+ 240 passing tests and one ignored test. A focused Harness run covering Doctor, browser diagnostics,
88
+ world tools, terminal command/page behavior and Hub has 100 passing tests. The compiled package's
89
+ SDK, TypeScript consumer, server and local Doctor smoke checks also pass using existing locked
90
+ dependencies. These later results supersede the earlier blocker descriptions for those checks.
91
+
92
+ Full Harness acceptance remains blocked locally by sandbox socket denial and HEIC encoder system
93
+ query denial; the complete suite is retained as a mandatory two-OS CI gate. Fresh network install,
94
+ registry availability and npm trusted-publisher configuration remain unverified. No tag or package
95
+ has been published during preparation. See the release procedure and external candidate report.