@xingular/harness 0.1.7 → 1.1.1

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 (819) hide show
  1. package/CHANGELOG.md +125 -1
  2. package/LICENSE +202 -0
  3. package/NOTICE.md +22 -0
  4. package/README.md +239 -86
  5. package/THIRD_PARTY_LICENSES.md +942 -0
  6. package/dist/cli.js +17853 -13114
  7. package/dist/sdk/accounts/accounts.d.ts +165 -0
  8. package/dist/sdk/accounts/accounts.js +730 -0
  9. package/dist/sdk/accounts/choices.d.ts +23 -0
  10. package/dist/sdk/accounts/choices.js +62 -0
  11. package/dist/sdk/accounts/env.d.ts +78 -0
  12. package/dist/sdk/accounts/env.js +294 -0
  13. package/dist/sdk/accounts/secrets.d.ts +16 -0
  14. package/dist/sdk/accounts/secrets.js +40 -0
  15. package/dist/sdk/accounts/store.d.ts +114 -0
  16. package/dist/sdk/accounts/store.js +255 -0
  17. package/dist/sdk/agents/builtin.d.ts +2 -0
  18. package/dist/sdk/agents/builtin.js +34 -0
  19. package/dist/sdk/agents/narrow.d.ts +13 -0
  20. package/dist/sdk/agents/narrow.js +29 -0
  21. package/dist/sdk/agents/profiles.d.ts +80 -0
  22. package/dist/sdk/agents/profiles.js +221 -0
  23. package/dist/sdk/annotations/bridge.d.ts +42 -0
  24. package/dist/sdk/annotations/bridge.js +264 -0
  25. package/dist/sdk/annotations/capture.d.ts +116 -0
  26. package/dist/sdk/annotations/capture.js +308 -0
  27. package/dist/sdk/annotations/delivery.d.ts +72 -0
  28. package/dist/sdk/annotations/delivery.js +130 -0
  29. package/dist/sdk/annotations/inspect.d.ts +10 -0
  30. package/dist/sdk/annotations/inspect.js +33 -0
  31. package/dist/sdk/annotations/isolated.d.ts +6 -0
  32. package/dist/sdk/annotations/isolated.js +51 -0
  33. package/dist/sdk/annotations/pageScript.d.ts +28 -0
  34. package/dist/sdk/annotations/pageScript.js +570 -0
  35. package/dist/sdk/annotations/part.d.ts +10 -0
  36. package/dist/sdk/annotations/part.js +144 -0
  37. package/dist/sdk/annotations/queue.d.ts +4 -0
  38. package/dist/sdk/annotations/queue.js +40 -0
  39. package/dist/sdk/annotations/serverMethods.d.ts +3 -0
  40. package/dist/sdk/annotations/serverMethods.js +62 -0
  41. package/dist/sdk/annotations/store.d.ts +160 -0
  42. package/dist/sdk/annotations/store.js +386 -0
  43. package/dist/sdk/browser/config.d.ts +16 -0
  44. package/dist/sdk/browser/config.js +22 -0
  45. package/dist/sdk/browser/diagnostics.d.ts +4 -0
  46. package/dist/sdk/browser/diagnostics.js +38 -0
  47. package/dist/sdk/browser/index.d.ts +28 -0
  48. package/dist/sdk/browser/index.js +72 -0
  49. package/dist/sdk/browser/network.d.ts +10 -0
  50. package/dist/sdk/browser/network.js +59 -0
  51. package/dist/sdk/browser/serverMethods.d.ts +3 -0
  52. package/dist/sdk/browser/serverMethods.js +7 -0
  53. package/dist/sdk/browser/session.d.ts +85 -0
  54. package/dist/sdk/browser/session.js +228 -0
  55. package/dist/sdk/browser/tools.d.ts +8 -0
  56. package/dist/sdk/browser/tools.js +329 -0
  57. package/dist/sdk/capabilities/api.d.ts +22 -0
  58. package/dist/sdk/capabilities/api.js +54 -0
  59. package/dist/sdk/capabilities/runSnapshot.d.ts +18 -0
  60. package/dist/sdk/capabilities/runSnapshot.js +47 -0
  61. package/dist/sdk/capabilities/types.d.ts +29 -0
  62. package/dist/sdk/capabilities/types.js +1 -0
  63. package/dist/sdk/cli.d.ts +2 -0
  64. package/dist/sdk/cli.js +150 -0
  65. package/dist/sdk/core/bus.d.ts +23 -0
  66. package/dist/sdk/core/bus.js +76 -0
  67. package/dist/sdk/core/caller.d.ts +22 -0
  68. package/dist/sdk/core/caller.js +16 -0
  69. package/dist/sdk/core/changes.d.ts +15 -0
  70. package/dist/sdk/core/changes.js +15 -0
  71. package/dist/sdk/core/effort.d.ts +2 -0
  72. package/dist/sdk/core/effort.js +1 -0
  73. package/dist/sdk/core/env.d.ts +18 -0
  74. package/dist/sdk/core/env.js +8 -0
  75. package/dist/sdk/core/errors.d.ts +15 -0
  76. package/dist/sdk/core/errors.js +24 -0
  77. package/dist/sdk/core/frontmatter.d.ts +12 -0
  78. package/dist/sdk/core/frontmatter.js +50 -0
  79. package/dist/sdk/core/fs.d.ts +18 -0
  80. package/dist/sdk/core/fs.js +106 -0
  81. package/dist/sdk/core/index.d.ts +24 -0
  82. package/dist/sdk/core/index.js +187 -0
  83. package/dist/sdk/core/path.d.ts +7 -0
  84. package/dist/sdk/core/path.js +79 -0
  85. package/dist/sdk/core/projects.d.ts +18 -0
  86. package/dist/sdk/core/projects.js +67 -0
  87. package/dist/sdk/core/secrets.d.ts +2 -0
  88. package/dist/sdk/core/secrets.js +5 -0
  89. package/dist/sdk/core/text.d.ts +7 -0
  90. package/dist/sdk/core/text.js +40 -0
  91. package/dist/sdk/doctor/checks.d.ts +5 -0
  92. package/dist/sdk/doctor/checks.js +208 -0
  93. package/dist/sdk/doctor/probe.d.ts +4 -0
  94. package/dist/sdk/doctor/probe.js +92 -0
  95. package/dist/sdk/doctor/serverMethods.d.ts +3 -0
  96. package/dist/sdk/doctor/serverMethods.js +8 -0
  97. package/dist/sdk/doctor/service.d.ts +23 -0
  98. package/dist/sdk/doctor/service.js +144 -0
  99. package/dist/sdk/doctor/types.d.ts +141 -0
  100. package/dist/sdk/doctor/types.js +29 -0
  101. package/dist/sdk/harness.d.ts +148 -0
  102. package/dist/sdk/harness.js +338 -0
  103. package/dist/sdk/history/lessonPrompt.d.ts +2 -0
  104. package/dist/sdk/history/lessonPrompt.js +15 -0
  105. package/dist/sdk/history/lessons.d.ts +52 -0
  106. package/dist/sdk/history/lessons.js +173 -0
  107. package/dist/sdk/history/recall.d.ts +68 -0
  108. package/dist/sdk/history/recall.js +199 -0
  109. package/dist/sdk/history/serverMethods.d.ts +3 -0
  110. package/dist/sdk/history/serverMethods.js +8 -0
  111. package/dist/sdk/history/trajectory.d.ts +7 -0
  112. package/dist/sdk/history/trajectory.js +216 -0
  113. package/dist/sdk/hub/catalog.json +123 -0
  114. package/dist/sdk/hub/cli.d.ts +7 -0
  115. package/dist/sdk/hub/cli.js +81 -0
  116. package/dist/sdk/hub/hub.d.ts +74 -0
  117. package/dist/sdk/hub/hub.js +474 -0
  118. package/dist/sdk/hub/schema.d.ts +280 -0
  119. package/dist/sdk/hub/schema.js +78 -0
  120. package/dist/sdk/hub/serverMethods.d.ts +3 -0
  121. package/dist/sdk/hub/serverMethods.js +11 -0
  122. package/dist/sdk/index.d.ts +73 -0
  123. package/dist/sdk/index.js +55 -0
  124. package/dist/sdk/mcp/connections.d.ts +83 -0
  125. package/dist/sdk/mcp/connections.js +676 -0
  126. package/dist/sdk/mcp/manager.d.ts +26 -0
  127. package/dist/sdk/mcp/manager.js +124 -0
  128. package/dist/sdk/mcp/oauth.d.ts +35 -0
  129. package/dist/sdk/mcp/oauth.js +171 -0
  130. package/dist/sdk/mcp/scopeMigration.d.ts +19 -0
  131. package/dist/sdk/mcp/scopeMigration.js +198 -0
  132. package/dist/sdk/mcp/serverMethods.d.ts +3 -0
  133. package/dist/sdk/mcp/serverMethods.js +22 -0
  134. package/dist/sdk/mcp/service.d.ts +160 -0
  135. package/dist/sdk/mcp/service.js +510 -0
  136. package/dist/sdk/mcp/types.d.ts +131 -0
  137. package/dist/sdk/mcp/types.js +49 -0
  138. package/dist/sdk/pi/runtime.d.ts +13 -0
  139. package/dist/sdk/pi/runtime.js +31 -0
  140. package/dist/sdk/plugins/api.d.ts +66 -0
  141. package/dist/sdk/plugins/api.js +155 -0
  142. package/dist/sdk/plugins/attachments.d.ts +46 -0
  143. package/dist/sdk/plugins/attachments.js +111 -0
  144. package/dist/sdk/plugins/builtin.d.ts +7 -0
  145. package/dist/sdk/plugins/builtin.js +163 -0
  146. package/dist/sdk/plugins/builtinRegistry.d.ts +53 -0
  147. package/dist/sdk/plugins/builtinRegistry.js +49 -0
  148. package/dist/sdk/plugins/catalogue.d.ts +29 -0
  149. package/dist/sdk/plugins/catalogue.js +196 -0
  150. package/dist/sdk/plugins/cli.d.ts +13 -0
  151. package/dist/sdk/plugins/cli.js +188 -0
  152. package/dist/sdk/plugins/discover.d.ts +42 -0
  153. package/dist/sdk/plugins/discover.js +115 -0
  154. package/dist/sdk/plugins/firstParty.d.ts +50 -0
  155. package/dist/sdk/plugins/firstParty.js +113 -0
  156. package/dist/sdk/plugins/hooks.d.ts +94 -0
  157. package/dist/sdk/plugins/hooks.js +162 -0
  158. package/dist/sdk/plugins/identity.d.ts +19 -0
  159. package/dist/sdk/plugins/identity.js +48 -0
  160. package/dist/sdk/plugins/install.d.ts +20 -0
  161. package/dist/sdk/plugins/install.js +110 -0
  162. package/dist/sdk/plugins/inventory.d.ts +22 -0
  163. package/dist/sdk/plugins/inventory.js +110 -0
  164. package/dist/sdk/plugins/manifest.d.ts +13 -0
  165. package/dist/sdk/plugins/manifest.js +56 -0
  166. package/dist/sdk/plugins/plugins.d.ts +104 -0
  167. package/dist/sdk/plugins/plugins.js +164 -0
  168. package/dist/sdk/plugins/runtime.d.ts +9 -0
  169. package/dist/sdk/plugins/runtime.js +95 -0
  170. package/dist/sdk/plugins/trust.d.ts +44 -0
  171. package/dist/sdk/plugins/trust.js +120 -0
  172. package/dist/sdk/plugins/types.d.ts +159 -0
  173. package/dist/sdk/plugins/types.js +7 -0
  174. package/dist/sdk/prompt/compile.d.ts +177 -0
  175. package/dist/sdk/prompt/compile.js +413 -0
  176. package/dist/sdk/refine/cli.d.ts +4 -0
  177. package/dist/sdk/refine/cli.js +186 -0
  178. package/dist/sdk/refine/demo.d.ts +21 -0
  179. package/dist/sdk/refine/demo.js +114 -0
  180. package/dist/sdk/refine/evidence.d.ts +55 -0
  181. package/dist/sdk/refine/evidence.js +330 -0
  182. package/dist/sdk/refine/host.d.ts +51 -0
  183. package/dist/sdk/refine/host.js +76 -0
  184. package/dist/sdk/refine/ledger.d.ts +48 -0
  185. package/dist/sdk/refine/ledger.js +76 -0
  186. package/dist/sdk/refine/library.d.ts +55 -0
  187. package/dist/sdk/refine/library.js +177 -0
  188. package/dist/sdk/refine/pi.d.ts +72 -0
  189. package/dist/sdk/refine/pi.js +248 -0
  190. package/dist/sdk/refine/prompts.d.ts +45 -0
  191. package/dist/sdk/refine/prompts.js +390 -0
  192. package/dist/sdk/refine/recursion.d.ts +113 -0
  193. package/dist/sdk/refine/recursion.js +258 -0
  194. package/dist/sdk/refine/runner.d.ts +81 -0
  195. package/dist/sdk/refine/runner.js +150 -0
  196. package/dist/sdk/refine/selection.d.ts +57 -0
  197. package/dist/sdk/refine/selection.js +251 -0
  198. package/dist/sdk/refine/serverMethods.d.ts +3 -0
  199. package/dist/sdk/refine/serverMethods.js +20 -0
  200. package/dist/sdk/refine/service.d.ts +84 -0
  201. package/dist/sdk/refine/service.js +165 -0
  202. package/dist/sdk/refine/suite.d.ts +67 -0
  203. package/dist/sdk/refine/suite.js +174 -0
  204. package/dist/sdk/refine/trajectory.d.ts +9 -0
  205. package/dist/sdk/refine/trajectory.js +68 -0
  206. package/dist/sdk/refine/types.d.ts +77 -0
  207. package/dist/sdk/refine/types.js +10 -0
  208. package/dist/sdk/server/methods.d.ts +3 -0
  209. package/dist/sdk/server/methods.js +293 -0
  210. package/dist/sdk/server/params.d.ts +4 -0
  211. package/dist/sdk/server/params.js +11 -0
  212. package/dist/sdk/server/remote.d.ts +19 -0
  213. package/dist/sdk/server/remote.js +84 -0
  214. package/dist/sdk/server/rpc.d.ts +20 -0
  215. package/dist/sdk/server/rpc.js +102 -0
  216. package/dist/sdk/server/serve.d.ts +10 -0
  217. package/dist/sdk/server/serve.js +18 -0
  218. package/dist/sdk/sessions/approvals.d.ts +47 -0
  219. package/dist/sdk/sessions/approvals.js +119 -0
  220. package/dist/sdk/sessions/continuation.d.ts +48 -0
  221. package/dist/sdk/sessions/continuation.js +85 -0
  222. package/dist/sdk/sessions/contracts.d.ts +551 -0
  223. package/dist/sdk/sessions/contracts.js +338 -0
  224. package/dist/sdk/sessions/extensionUi.d.ts +19 -0
  225. package/dist/sdk/sessions/extensionUi.js +64 -0
  226. package/dist/sdk/sessions/history.d.ts +16 -0
  227. package/dist/sdk/sessions/history.js +68 -0
  228. package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
  229. package/dist/sdk/sessions/lineageJoin.js +61 -0
  230. package/dist/sdk/sessions/planMode.d.ts +39 -0
  231. package/dist/sdk/sessions/planMode.js +93 -0
  232. package/dist/sdk/sessions/policy.d.ts +43 -0
  233. package/dist/sdk/sessions/policy.js +1 -0
  234. package/dist/sdk/sessions/pricing.d.ts +34 -0
  235. package/dist/sdk/sessions/pricing.js +40 -0
  236. package/dist/sdk/sessions/reasoningSummaries.d.ts +11 -0
  237. package/dist/sdk/sessions/reasoningSummaries.js +61 -0
  238. package/dist/sdk/sessions/registry.d.ts +103 -0
  239. package/dist/sdk/sessions/registry.js +386 -0
  240. package/dist/sdk/sessions/runIndex.d.ts +21 -0
  241. package/dist/sdk/sessions/runIndex.js +65 -0
  242. package/dist/sdk/sessions/runStore.d.ts +66 -0
  243. package/dist/sdk/sessions/runStore.js +337 -0
  244. package/dist/sdk/sessions/runner.d.ts +213 -0
  245. package/dist/sdk/sessions/runner.js +589 -0
  246. package/dist/sdk/sessions/sessions.d.ts +152 -0
  247. package/dist/sdk/sessions/sessions.js +461 -0
  248. package/dist/sdk/sessions/sideQuestionServerMethods.d.ts +3 -0
  249. package/dist/sdk/sessions/sideQuestionServerMethods.js +19 -0
  250. package/dist/sdk/sessions/sideQuestions.d.ts +66 -0
  251. package/dist/sdk/sessions/sideQuestions.js +290 -0
  252. package/dist/sdk/sessions/subagentServerMethods.d.ts +3 -0
  253. package/dist/sdk/sessions/subagentServerMethods.js +41 -0
  254. package/dist/sdk/sessions/subagentService.d.ts +52 -0
  255. package/dist/sdk/sessions/subagentService.js +265 -0
  256. package/dist/sdk/sessions/subagents.d.ts +58 -0
  257. package/dist/sdk/sessions/subagents.js +87 -0
  258. package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
  259. package/dist/sdk/terminal/accountsMenu.js +392 -0
  260. package/dist/sdk/terminal/browser.d.ts +62 -0
  261. package/dist/sdk/terminal/browser.js +41 -0
  262. package/dist/sdk/terminal/browserControl.d.ts +29 -0
  263. package/dist/sdk/terminal/browserControl.js +186 -0
  264. package/dist/sdk/terminal/cli.d.ts +20 -0
  265. package/dist/sdk/terminal/cli.js +121 -0
  266. package/dist/sdk/terminal/client.d.ts +15 -0
  267. package/dist/sdk/terminal/client.js +126 -0
  268. package/dist/sdk/terminal/commandHelp.d.ts +17 -0
  269. package/dist/sdk/terminal/commandHelp.js +20 -0
  270. package/dist/sdk/terminal/control.d.ts +4 -0
  271. package/dist/sdk/terminal/control.js +25 -0
  272. package/dist/sdk/terminal/controller.d.ts +78 -0
  273. package/dist/sdk/terminal/controller.js +383 -0
  274. package/dist/sdk/terminal/hubMenu.d.ts +10 -0
  275. package/dist/sdk/terminal/hubMenu.js +34 -0
  276. package/dist/sdk/terminal/launch.d.ts +5 -0
  277. package/dist/sdk/terminal/launch.js +27 -0
  278. package/dist/sdk/terminal/logs.d.ts +14 -0
  279. package/dist/sdk/terminal/logs.js +59 -0
  280. package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +28 -0
  281. package/dist/sdk/terminal/opentui/subagentsWidget.js +52 -0
  282. package/dist/sdk/terminal/piExtension.d.ts +6 -0
  283. package/dist/sdk/terminal/piExtension.js +377 -0
  284. package/dist/sdk/terminal/pluginMenu.d.ts +34 -0
  285. package/dist/sdk/terminal/pluginMenu.js +101 -0
  286. package/dist/sdk/terminal/socket.d.ts +73 -0
  287. package/dist/sdk/terminal/socket.js +287 -0
  288. package/dist/sdk/terminal/standalone.d.ts +20 -0
  289. package/dist/sdk/terminal/standalone.js +186 -0
  290. package/dist/sdk/terminal/subagentMonitor.d.ts +38 -0
  291. package/dist/sdk/terminal/subagentMonitor.js +121 -0
  292. package/dist/sdk/terminal/terminals.d.ts +212 -0
  293. package/dist/sdk/terminal/terminals.js +1108 -0
  294. package/dist/sdk/terminal/trajectory.d.ts +10 -0
  295. package/dist/sdk/terminal/trajectory.js +30 -0
  296. package/dist/sdk/terminal/tui/annotateCommand.d.ts +3 -0
  297. package/dist/sdk/terminal/tui/annotateCommand.js +22 -0
  298. package/dist/sdk/terminal/tui/chrome.d.ts +64 -0
  299. package/dist/sdk/terminal/tui/chrome.js +169 -0
  300. package/dist/sdk/terminal/tui/clipboardFiles.d.ts +11 -0
  301. package/dist/sdk/terminal/tui/clipboardFiles.js +74 -0
  302. package/dist/sdk/terminal/tui/commandPages.d.ts +11 -0
  303. package/dist/sdk/terminal/tui/commandPages.js +111 -0
  304. package/dist/sdk/terminal/tui/commands.d.ts +46 -0
  305. package/dist/sdk/terminal/tui/commands.js +399 -0
  306. package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
  307. package/dist/sdk/terminal/tui/dialogGeometry.js +52 -0
  308. package/dist/sdk/terminal/tui/dialogs.d.ts +80 -0
  309. package/dist/sdk/terminal/tui/dialogs.js +370 -0
  310. package/dist/sdk/terminal/tui/keybindings.d.ts +11 -0
  311. package/dist/sdk/terminal/tui/keybindings.js +49 -0
  312. package/dist/sdk/terminal/tui/list.d.ts +73 -0
  313. package/dist/sdk/terminal/tui/list.js +196 -0
  314. package/dist/sdk/terminal/tui/modeChoices.d.ts +42 -0
  315. package/dist/sdk/terminal/tui/modeChoices.js +70 -0
  316. package/dist/sdk/terminal/tui/modelPicker.d.ts +55 -0
  317. package/dist/sdk/terminal/tui/modelPicker.js +150 -0
  318. package/dist/sdk/terminal/tui/mouse.d.ts +3 -0
  319. package/dist/sdk/terminal/tui/mouse.js +3 -0
  320. package/dist/sdk/terminal/tui/page.d.ts +17 -0
  321. package/dist/sdk/terminal/tui/page.js +1 -0
  322. package/dist/sdk/terminal/tui/pageOverlay.d.ts +27 -0
  323. package/dist/sdk/terminal/tui/pageOverlay.js +156 -0
  324. package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +76 -0
  325. package/dist/sdk/terminal/tui/pages/accountsPage.js +409 -0
  326. package/dist/sdk/terminal/tui/pages/agentsPage.d.ts +74 -0
  327. package/dist/sdk/terminal/tui/pages/agentsPage.js +190 -0
  328. package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +94 -0
  329. package/dist/sdk/terminal/tui/pages/annotatePage.js +341 -0
  330. package/dist/sdk/terminal/tui/pages/browserPage.d.ts +87 -0
  331. package/dist/sdk/terminal/tui/pages/browserPage.js +738 -0
  332. package/dist/sdk/terminal/tui/pages/componentsPage.d.ts +47 -0
  333. package/dist/sdk/terminal/tui/pages/componentsPage.js +119 -0
  334. package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +39 -0
  335. package/dist/sdk/terminal/tui/pages/doctorPage.js +233 -0
  336. package/dist/sdk/terminal/tui/pages/hubPage.d.ts +39 -0
  337. package/dist/sdk/terminal/tui/pages/hubPage.js +128 -0
  338. package/dist/sdk/terminal/tui/pages/logPage.d.ts +38 -0
  339. package/dist/sdk/terminal/tui/pages/logPage.js +189 -0
  340. package/dist/sdk/terminal/tui/pages/notesPage.d.ts +75 -0
  341. package/dist/sdk/terminal/tui/pages/notesPage.js +201 -0
  342. package/dist/sdk/terminal/tui/pages/permissionsPage.d.ts +44 -0
  343. package/dist/sdk/terminal/tui/pages/permissionsPage.js +124 -0
  344. package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +57 -0
  345. package/dist/sdk/terminal/tui/pages/pluginsPage.js +243 -0
  346. package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +63 -0
  347. package/dist/sdk/terminal/tui/pages/settingsPage.js +103 -0
  348. package/dist/sdk/terminal/tui/pages/subagentsPage.d.ts +23 -0
  349. package/dist/sdk/terminal/tui/pages/subagentsPage.js +70 -0
  350. package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +65 -0
  351. package/dist/sdk/terminal/tui/pages/trajectoryPage.js +450 -0
  352. package/dist/sdk/terminal/tui/pages/worktreesPage.d.ts +72 -0
  353. package/dist/sdk/terminal/tui/pages/worktreesPage.js +203 -0
  354. package/dist/sdk/terminal/tui/piAdapter.d.ts +18 -0
  355. package/dist/sdk/terminal/tui/piAdapter.js +48 -0
  356. package/dist/sdk/terminal/tui/planMode.d.ts +2 -0
  357. package/dist/sdk/terminal/tui/planMode.js +2 -0
  358. package/dist/sdk/terminal/tui/pluginCommands.d.ts +14 -0
  359. package/dist/sdk/terminal/tui/pluginCommands.js +27 -0
  360. package/dist/sdk/terminal/tui/questionPicker.d.ts +20 -0
  361. package/dist/sdk/terminal/tui/questionPicker.js +150 -0
  362. package/dist/sdk/terminal/tui/questions.d.ts +21 -0
  363. package/dist/sdk/terminal/tui/questions.js +42 -0
  364. package/dist/sdk/terminal/tui/runtime.d.ts +114 -0
  365. package/dist/sdk/terminal/tui/runtime.js +443 -0
  366. package/dist/sdk/terminal/tui/search.d.ts +22 -0
  367. package/dist/sdk/terminal/tui/search.js +60 -0
  368. package/dist/sdk/terminal/tui/selection.d.ts +16 -0
  369. package/dist/sdk/terminal/tui/selection.js +16 -0
  370. package/dist/sdk/terminal/tui/sessionUi.d.ts +3 -0
  371. package/dist/sdk/terminal/tui/sessionUi.js +30 -0
  372. package/dist/sdk/terminal/tui/settingsModel.d.ts +14 -0
  373. package/dist/sdk/terminal/tui/settingsModel.js +114 -0
  374. package/dist/sdk/terminal/tui/sideQuestion.d.ts +53 -0
  375. package/dist/sdk/terminal/tui/sideQuestion.js +230 -0
  376. package/dist/sdk/terminal/tui/skillInvocation.d.ts +9 -0
  377. package/dist/sdk/terminal/tui/skillInvocation.js +43 -0
  378. package/dist/sdk/terminal/tui/status.d.ts +18 -0
  379. package/dist/sdk/terminal/tui/status.js +67 -0
  380. package/dist/sdk/terminal/tui/theme.d.ts +45 -0
  381. package/dist/sdk/terminal/tui/theme.js +176 -0
  382. package/dist/sdk/terminal/tui/treeModel.d.ts +79 -0
  383. package/dist/sdk/terminal/tui/treeModel.js +483 -0
  384. package/dist/sdk/terminal/tui/treePicker.d.ts +49 -0
  385. package/dist/sdk/terminal/tui/treePicker.js +251 -0
  386. package/dist/sdk/terminal/tui/ui.d.ts +49 -0
  387. package/dist/sdk/terminal/tui/ui.js +149 -0
  388. package/dist/sdk/terminal/tui/workingStatus.d.ts +9 -0
  389. package/dist/sdk/terminal/tui/workingStatus.js +229 -0
  390. package/dist/sdk/tools/askUser.d.ts +6 -0
  391. package/dist/sdk/tools/askUser.js +92 -0
  392. package/dist/sdk/tools/checklist.d.ts +9 -0
  393. package/dist/sdk/tools/checklist.js +54 -0
  394. package/dist/sdk/tools/definitions.d.ts +30 -0
  395. package/dist/sdk/tools/definitions.js +117 -0
  396. package/dist/sdk/tools/dispatch.d.ts +16 -0
  397. package/dist/sdk/tools/dispatch.js +67 -0
  398. package/dist/sdk/tools/harnessTools.d.ts +8 -0
  399. package/dist/sdk/tools/harnessTools.js +20 -0
  400. package/dist/sdk/tools/sessionName.d.ts +7 -0
  401. package/dist/sdk/tools/sessionName.js +31 -0
  402. package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
  403. package/dist/sdk/tools/spawnSubagent.js +58 -0
  404. package/dist/sdk/tools/types.d.ts +48 -0
  405. package/dist/sdk/tools/types.js +1 -0
  406. package/dist/sdk/variant/components.d.ts +34 -0
  407. package/dist/sdk/variant/components.js +230 -0
  408. package/dist/sdk/variant/materialise.d.ts +66 -0
  409. package/dist/sdk/variant/materialise.js +81 -0
  410. package/dist/sdk/variant/migrate.d.ts +4 -0
  411. package/dist/sdk/variant/migrate.js +41 -0
  412. package/dist/sdk/variant/seed.d.ts +20 -0
  413. package/dist/sdk/variant/seed.js +116 -0
  414. package/dist/sdk/variant/store.d.ts +82 -0
  415. package/dist/sdk/variant/store.js +151 -0
  416. package/dist/sdk/variant/surface.d.ts +56 -0
  417. package/dist/sdk/variant/surface.js +81 -0
  418. package/dist/sdk/variant/trust.d.ts +27 -0
  419. package/dist/sdk/variant/trust.js +64 -0
  420. package/dist/sdk/variant/variant.d.ts +71 -0
  421. package/dist/sdk/variant/variant.js +331 -0
  422. package/dist/sdk/web/markdown.d.ts +10 -0
  423. package/dist/sdk/web/markdown.js +66 -0
  424. package/dist/sdk/web/part.d.ts +10 -0
  425. package/dist/sdk/web/part.js +6 -0
  426. package/dist/sdk/web/safeRequest.d.ts +34 -0
  427. package/dist/sdk/web/safeRequest.js +175 -0
  428. package/dist/sdk/web/search.d.ts +53 -0
  429. package/dist/sdk/web/search.js +168 -0
  430. package/dist/sdk/web/serverMethods.d.ts +3 -0
  431. package/dist/sdk/web/serverMethods.js +7 -0
  432. package/dist/sdk/web/text.d.ts +2 -0
  433. package/dist/sdk/web/text.js +7 -0
  434. package/dist/sdk/web/tools.d.ts +22 -0
  435. package/dist/sdk/web/tools.js +195 -0
  436. package/dist/sdk/web/turndown-plugin-gfm.d.ts +4 -0
  437. package/dist/sdk/wiki/notes.d.ts +68 -0
  438. package/dist/sdk/wiki/notes.js +297 -0
  439. package/dist/sdk/wiki/serverMethods.d.ts +3 -0
  440. package/dist/sdk/wiki/serverMethods.js +26 -0
  441. package/dist/sdk/worktrees/cli.d.ts +11 -0
  442. package/dist/sdk/worktrees/cli.js +146 -0
  443. package/dist/sdk/worktrees/copy.d.ts +9 -0
  444. package/dist/sdk/worktrees/copy.js +111 -0
  445. package/dist/sdk/worktrees/git.d.ts +16 -0
  446. package/dist/sdk/worktrees/git.js +81 -0
  447. package/dist/sdk/worktrees/serverMethods.d.ts +3 -0
  448. package/dist/sdk/worktrees/serverMethods.js +30 -0
  449. package/dist/sdk/worktrees/service.d.ts +73 -0
  450. package/dist/sdk/worktrees/service.js +483 -0
  451. package/dist/sdk/worktrees/setup.d.ts +23 -0
  452. package/dist/sdk/worktrees/setup.js +65 -0
  453. package/dist/sdk/worktrees/types.d.ts +91 -0
  454. package/dist/sdk/worktrees/types.js +1 -0
  455. package/dist/sdk/world/actions.d.ts +23 -0
  456. package/dist/sdk/world/actions.js +31 -0
  457. package/dist/sdk/world/cli.d.ts +12 -0
  458. package/dist/sdk/world/cli.js +166 -0
  459. package/dist/sdk/world/images.d.ts +20 -0
  460. package/dist/sdk/world/images.js +48 -0
  461. package/dist/sdk/world/untrusted.d.ts +12 -0
  462. package/dist/sdk/world/untrusted.js +20 -0
  463. package/dist/sdk/world/world.d.ts +67 -0
  464. package/dist/sdk/world/world.js +79 -0
  465. package/dist/terminal-opentui.js +20778 -0
  466. package/dist/terminal-pi.js +794 -518
  467. package/docs/README.md +42 -0
  468. package/docs/architecture/00-overview.md +171 -0
  469. package/docs/architecture/01-extension-points.md +78 -0
  470. package/docs/architecture/02-sessions-and-runs.md +203 -0
  471. package/docs/architecture/03-variants.md +103 -0
  472. package/docs/architecture/04-prompt.md +122 -0
  473. package/docs/architecture/05-refinement.md +107 -0
  474. package/docs/architecture/06-plugins-and-capabilities.md +129 -0
  475. package/docs/architecture/07-tools-and-gate.md +103 -0
  476. package/docs/architecture/08-memory-and-history.md +94 -0
  477. package/docs/architecture/09-accounts-and-connectors.md +98 -0
  478. package/docs/architecture/10-server-protocol.md +193 -0
  479. package/docs/architecture/11-terminal.md +261 -0
  480. package/docs/architecture/12-storage.md +75 -0
  481. package/docs/architecture/13-world-tools.md +45 -0
  482. package/docs/architecture/14-surfaces-and-parity.md +89 -0
  483. package/docs/architecture/README.md +125 -0
  484. package/docs/architecture/proposals/PROP-0001-reporting-section.md +106 -0
  485. package/docs/architecture/proposals/PROP-0002-retain-rollout-workspaces.md +104 -0
  486. package/docs/architecture/proposals/PROP-0003-executor-settings.md +81 -0
  487. package/docs/architecture/proposals/PROP-0004-flexible-reporting-guidance.md +71 -0
  488. package/docs/architecture/proposals/PROP-0005-xharness-cli-name.md +78 -0
  489. package/docs/architecture/proposals/PROP-0006-run-checklist.md +70 -0
  490. package/docs/architecture/proposals/PROP-0007-run-continuation.md +80 -0
  491. package/docs/architecture/proposals/PROP-0008-lessons-from-runs.md +80 -0
  492. package/docs/architecture/proposals/PROP-0009-foundation-and-variants.md +78 -0
  493. package/docs/architecture/proposals/PROP-0010-session-names.md +73 -0
  494. package/docs/architecture/proposals/PROP-0011-doctor.md +63 -0
  495. package/docs/architecture/proposals/PROP-0012-release-baseline.md +56 -0
  496. package/docs/architecture/proposals/PROP-0013-resource-browser.md +58 -0
  497. package/docs/architecture/proposals/PROP-0014-fullscreen-browser-tabs.md +58 -0
  498. package/docs/architecture/proposals/PROP-0015-one-capability-surface.md +88 -0
  499. package/docs/architecture/proposals/PROP-0016-managed-worktrees.md +156 -0
  500. package/docs/architecture/proposals/PROP-0017-page-annotations.md +127 -0
  501. package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +179 -0
  502. package/docs/architecture/proposals/PROP-0019-contextual-side-questions.md +122 -0
  503. package/docs/architecture/proposals/PROP-0020-builtin-feature-plugins.md +105 -0
  504. package/docs/architecture/proposals/PROP-0021-command-namespaces-and-duplicates.md +99 -0
  505. package/docs/architecture/proposals/PROP-0022-plan-only-questions.md +102 -0
  506. package/docs/architecture/proposals/PROP-0023-xagent-cli-name.md +61 -0
  507. package/docs/architecture/proposals/PROP-0024-question-sketch-previews.md +130 -0
  508. package/docs/architecture/proposals/PROP-0025-contextual-question-wireframes.md +49 -0
  509. package/docs/architecture/proposals/PROP-0026-connected-sketch-display.md +94 -0
  510. package/docs/architecture/proposals/PROP-0027-xingular-agent-product-identity.md +60 -0
  511. package/docs/architecture/proposals/PROP-0028-normalize-question-wireframes.md +55 -0
  512. package/docs/architecture/proposals/PROP-0029-agent-profiles.md +124 -0
  513. package/docs/architecture/proposals/PROP-0030-subagent-title.md +86 -0
  514. package/docs/architecture/proposals/README.md +101 -0
  515. package/docs/decisions/ADR-0002-native-subagent-lifecycle.md +49 -0
  516. package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +70 -0
  517. package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +50 -0
  518. package/docs/decisions/ADR-0005-app-provided-oauth-clients.md +54 -0
  519. package/docs/decisions/ADR-0006-opentui-only-terminal.md +47 -0
  520. package/docs/decisions/ADR-0007-reporting-section.md +33 -0
  521. package/docs/decisions/ADR-0008-flexible-reporting-guidance.md +38 -0
  522. package/docs/decisions/ADR-0009-xharness-command.md +39 -0
  523. package/docs/decisions/ADR-0010-lessons-in-the-wiki.md +31 -0
  524. package/docs/decisions/ADR-0011-foundation-and-variants.md +28 -0
  525. package/docs/decisions/ADR-0012-native-session-names.md +34 -0
  526. package/docs/decisions/ADR-0013-doctor.md +27 -0
  527. package/docs/decisions/ADR-0014-public-release-baseline.md +22 -0
  528. package/docs/decisions/ADR-0015-resource-browser.md +28 -0
  529. package/docs/decisions/ADR-0016-fullscreen-browser-tabs.md +31 -0
  530. package/docs/decisions/ADR-0017-one-capability-surface.md +34 -0
  531. package/docs/decisions/ADR-0018-builtin-feature-plugins.md +35 -0
  532. package/docs/decisions/ADR-0019-managed-git-worktrees.md +31 -0
  533. package/docs/decisions/ADR-0020-page-annotations.md +37 -0
  534. package/docs/decisions/ADR-0021-required-command-namespaces.md +40 -0
  535. package/docs/decisions/ADR-0022-plan-only-question-tools.md +34 -0
  536. package/docs/decisions/ADR-0023-contextual-side-question-runs.md +35 -0
  537. package/docs/decisions/ADR-0024-xagent-command.md +40 -0
  538. package/docs/decisions/ADR-0025-question-choice-sketches.md +49 -0
  539. package/docs/decisions/ADR-0026-contextual-question-wireframes.md +58 -0
  540. package/docs/decisions/ADR-0027-connected-sketch-display.md +60 -0
  541. package/docs/decisions/ADR-0028-xingular-agent-product-identity.md +56 -0
  542. package/docs/decisions/ADR-0029-normalized-question-wireframe-borders.md +33 -0
  543. package/docs/decisions/ADR-0030-agent-profiles.md +43 -0
  544. package/docs/doctor.md +80 -0
  545. package/docs/experiments/EXP-0001-terminal-input-latency/plan.md +81 -0
  546. package/docs/experiments/EXP-0001-terminal-input-latency/results.md +46 -0
  547. package/docs/experiments/EXP-0002-opentui-typing-latency/plan.md +70 -0
  548. package/docs/experiments/EXP-0002-opentui-typing-latency/results.md +92 -0
  549. package/docs/features/README.md +46 -0
  550. package/docs/features/automations/README.md +41 -0
  551. package/docs/features/cores/README.md +39 -0
  552. package/docs/features/google-harness2/README.md +52 -0
  553. package/docs/features/integrations/README.md +40 -0
  554. package/docs/features/interfaces/README.md +29 -0
  555. package/docs/features/memory/README.md +28 -0
  556. package/docs/future-work.md +48 -0
  557. package/docs/parity.md +78 -0
  558. package/docs/releases/1.0.0.md +40 -0
  559. package/docs/releases/4.0.0.md +46 -0
  560. package/docs/releases/README.md +41 -0
  561. package/docs/study/00-index.md +83 -0
  562. package/docs/study/arms/00-matrix.md +20 -0
  563. package/docs/study/arms/01-system-prompt.md +211 -0
  564. package/docs/study/arms/02-tools.md +79 -0
  565. package/docs/study/arms/03-subagents.md +90 -0
  566. package/docs/study/arms/04-skills.md +75 -0
  567. package/docs/study/arms/05-context-management.md +90 -0
  568. package/docs/study/arms/06-memory.md +90 -0
  569. package/docs/study/arms/07-governance.md +71 -0
  570. package/docs/study/arms/08-execution.md +69 -0
  571. package/docs/study/arms/09-observability.md +60 -0
  572. package/docs/study/arms/10-refinement.md +110 -0
  573. package/docs/study/autonomous-engineering-sources.md +277 -0
  574. package/docs/study/autonomy-sources.md +147 -0
  575. package/docs/study/btw-comparison.md +37 -0
  576. package/docs/study/feature-gap-review.md +42 -0
  577. package/docs/study/insights.md +123 -0
  578. package/docs/study/proactive-autonomy.md +408 -0
  579. package/docs/study/roadmap.md +72 -0
  580. package/docs/study/sources/claude-code.md +44 -0
  581. package/docs/study/sources/deepseek-harness.md +102 -0
  582. package/docs/study/sources/harness2.md +50 -0
  583. package/docs/study/sources/kimi-cli.md +42 -0
  584. package/docs/study/sources/omp.md +93 -0
  585. package/docs/study/sources/opencode.md +43 -0
  586. package/docs/study/sources/openhands.md +46 -0
  587. package/docs/study/sources/smolagents.md +40 -0
  588. package/docs/study/sources/swe-agent.md +34 -0
  589. package/docs/study/tui-resource-browser.md +78 -0
  590. package/docs/system-prompt-design.md +196 -0
  591. package/docs/terminal-tui.md +707 -58
  592. package/package.json +43 -13
  593. package/docs/evidence/terminal-2026-10-17/120x40-completed-transcript.ansi.gz +0 -0
  594. package/docs/evidence/terminal-2026-10-17/40x20-settings-interaction.ansi.gz +0 -0
  595. package/docs/evidence/terminal-2026-10-17/40x20-settings-keyboard.ansi.gz +0 -0
  596. package/docs/evidence/terminal-2026-10-17/40x20-welcome.ansi.gz +0 -0
  597. package/docs/evidence/terminal-2026-10-17/80x24-approval-0.ansi.gz +0 -0
  598. package/docs/evidence/terminal-2026-10-17/80x24-question.ansi.gz +0 -0
  599. package/docs/evidence/terminal-2026-10-17/verification.json +0 -130
  600. package/docs/evidence/terminal-2026-10-17-followup/120x40-completed-transcript.ansi.gz +0 -0
  601. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-interaction.ansi.gz +0 -0
  602. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-keyboard.ansi.gz +0 -0
  603. package/docs/evidence/terminal-2026-10-17-followup/40x20-welcome.ansi.gz +0 -0
  604. package/docs/evidence/terminal-2026-10-17-followup/80x24-approval-0.ansi.gz +0 -0
  605. package/docs/evidence/terminal-2026-10-17-followup/80x24-plugin-light.ansi.gz +0 -0
  606. package/docs/evidence/terminal-2026-10-17-followup/80x24-question-batch.ansi.gz +0 -0
  607. package/docs/evidence/terminal-2026-10-17-followup/80x24-question.ansi.gz +0 -0
  608. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-approval-0.ansi.gz +0 -0
  609. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-plugin-light.ansi.gz +0 -0
  610. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question-batch.ansi.gz +0 -0
  611. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question.ansi.gz +0 -0
  612. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/verification.json +0 -95
  613. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-approval-0.ansi.gz +0 -0
  614. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-plugin-light.ansi.gz +0 -0
  615. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question-batch.ansi.gz +0 -0
  616. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question.ansi.gz +0 -0
  617. package/docs/evidence/terminal-2026-10-17-followup/global-install/README.md +0 -27
  618. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command-80x24.ansi.gz +0 -0
  619. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command.json +0 -18
  620. package/docs/evidence/terminal-2026-10-17-followup/global-install/verification.json +0 -95
  621. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-80x24.json.gz +0 -0
  622. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-final-80x24.json.gz +0 -0
  623. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-scenario.json +0 -60
  624. package/docs/evidence/terminal-2026-10-17-followup/live-codex/README.md +0 -24
  625. package/docs/evidence/terminal-2026-10-17-followup/live-codex/complete-80x24.ansi.gz +0 -0
  626. package/docs/evidence/terminal-2026-10-17-followup/live-codex/verification.json +0 -57
  627. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24-early.json.gz +0 -0
  628. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24.json.gz +0 -0
  629. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-scenario.json +0 -58
  630. package/docs/evidence/terminal-2026-10-17-followup/omp-supplemental-static.json.gz +0 -0
  631. package/docs/evidence/terminal-2026-10-17-followup/rea-artifacts.json +0 -320
  632. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.json +0 -30
  633. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.md +0 -133
  634. package/docs/evidence/terminal-2026-10-17-followup/reference-source-observations.json +0 -20
  635. package/docs/evidence/terminal-2026-10-17-followup/verification.json +0 -207
  636. package/src/accounts/accounts.test.ts +0 -333
  637. package/src/accounts/accounts.ts +0 -658
  638. package/src/accounts/env.test.ts +0 -95
  639. package/src/accounts/env.ts +0 -338
  640. package/src/accounts/secrets.ts +0 -50
  641. package/src/accounts/store.ts +0 -338
  642. package/src/capabilities/api.ts +0 -75
  643. package/src/capabilities/runSnapshot.ts +0 -59
  644. package/src/capabilities/types.ts +0 -34
  645. package/src/cli.ts +0 -118
  646. package/src/core/bus.ts +0 -34
  647. package/src/core/changes.ts +0 -33
  648. package/src/core/env.ts +0 -27
  649. package/src/core/errors.ts +0 -32
  650. package/src/core/frontmatter.ts +0 -47
  651. package/src/core/fs.test.ts +0 -38
  652. package/src/core/fs.ts +0 -92
  653. package/src/core/index.ts +0 -193
  654. package/src/core/path.test.ts +0 -14
  655. package/src/core/path.ts +0 -79
  656. package/src/core/projects.ts +0 -90
  657. package/src/core/text.ts +0 -39
  658. package/src/harness.ts +0 -312
  659. package/src/hub/catalog.json +0 -123
  660. package/src/hub/cli.ts +0 -59
  661. package/src/hub/hub.test.ts +0 -205
  662. package/src/hub/hub.ts +0 -256
  663. package/src/hub/schema.ts +0 -81
  664. package/src/index.ts +0 -75
  665. package/src/mcp/connections.ts +0 -614
  666. package/src/mcp/manager.ts +0 -130
  667. package/src/mcp/oauth.ts +0 -195
  668. package/src/mcp/scopeMigration.test.ts +0 -79
  669. package/src/mcp/scopeMigration.ts +0 -204
  670. package/src/mcp/service.test.ts +0 -376
  671. package/src/mcp/service.ts +0 -549
  672. package/src/mcp/types.ts +0 -108
  673. package/src/memory/api.test.ts +0 -82
  674. package/src/memory/api.ts +0 -303
  675. package/src/memory/blocks.test.ts +0 -78
  676. package/src/memory/blocks.ts +0 -408
  677. package/src/memory/caller.ts +0 -69
  678. package/src/memory/curation.test.ts +0 -163
  679. package/src/memory/curation.ts +0 -64
  680. package/src/memory/dispatch.ts +0 -59
  681. package/src/memory/facts.test.ts +0 -41
  682. package/src/memory/facts.ts +0 -248
  683. package/src/memory/graph.ts +0 -103
  684. package/src/memory/health.test.ts +0 -130
  685. package/src/memory/health.ts +0 -74
  686. package/src/memory/maintainer.ts +0 -272
  687. package/src/memory/maintenance.test.ts +0 -176
  688. package/src/memory/maintenance.ts +0 -518
  689. package/src/memory/migrate.ts +0 -79
  690. package/src/memory/operations.ts +0 -150
  691. package/src/memory/proposals.test.ts +0 -168
  692. package/src/memory/proposals.ts +0 -584
  693. package/src/memory/recall.test.ts +0 -115
  694. package/src/memory/recall.ts +0 -278
  695. package/src/memory/references.ts +0 -77
  696. package/src/memory/runContext.ts +0 -93
  697. package/src/memory/secrets.ts +0 -6
  698. package/src/memory/store.test.ts +0 -66
  699. package/src/memory/store.ts +0 -385
  700. package/src/memory/wiki.test.ts +0 -47
  701. package/src/memory/wiki.ts +0 -422
  702. package/src/memory/wikiIndex.test.ts +0 -88
  703. package/src/memory/wikiIndex.ts +0 -116
  704. package/src/plugins/api.ts +0 -181
  705. package/src/plugins/attachments.test.ts +0 -84
  706. package/src/plugins/attachments.ts +0 -141
  707. package/src/plugins/builtin.ts +0 -82
  708. package/src/plugins/catalogue.test.ts +0 -254
  709. package/src/plugins/catalogue.ts +0 -251
  710. package/src/plugins/cli.ts +0 -184
  711. package/src/plugins/discover.ts +0 -151
  712. package/src/plugins/firstParty.test.ts +0 -143
  713. package/src/plugins/firstParty.ts +0 -129
  714. package/src/plugins/hooks.test.ts +0 -250
  715. package/src/plugins/hooks.ts +0 -239
  716. package/src/plugins/identity.ts +0 -37
  717. package/src/plugins/install.test.ts +0 -107
  718. package/src/plugins/install.ts +0 -106
  719. package/src/plugins/inventory.ts +0 -123
  720. package/src/plugins/manifest.ts +0 -76
  721. package/src/plugins/plugins.test.ts +0 -205
  722. package/src/plugins/plugins.ts +0 -189
  723. package/src/plugins/proposal.ts +0 -121
  724. package/src/plugins/runtime.test.ts +0 -40
  725. package/src/plugins/runtime.ts +0 -82
  726. package/src/plugins/trust.ts +0 -142
  727. package/src/plugins/types.ts +0 -149
  728. package/src/prompt/compile.test.ts +0 -261
  729. package/src/prompt/compile.ts +0 -732
  730. package/src/server/methods.ts +0 -349
  731. package/src/server/remote.ts +0 -77
  732. package/src/server/rpc.ts +0 -116
  733. package/src/server/serve.ts +0 -28
  734. package/src/server/server.test.ts +0 -174
  735. package/src/sessions/approvals.ts +0 -118
  736. package/src/sessions/contracts.ts +0 -336
  737. package/src/sessions/conversation.test.ts +0 -177
  738. package/src/sessions/extensionSession.test.ts +0 -74
  739. package/src/sessions/extensionUi.test.ts +0 -65
  740. package/src/sessions/extensionUi.ts +0 -102
  741. package/src/sessions/history.ts +0 -51
  742. package/src/sessions/lineageJoin.ts +0 -75
  743. package/src/sessions/policy.ts +0 -36
  744. package/src/sessions/pricing.ts +0 -60
  745. package/src/sessions/questionBatches.test.ts +0 -110
  746. package/src/sessions/reasoningSummaries.ts +0 -59
  747. package/src/sessions/registry.ts +0 -381
  748. package/src/sessions/runIndex.ts +0 -99
  749. package/src/sessions/runStore.test.ts +0 -152
  750. package/src/sessions/runStore.ts +0 -332
  751. package/src/sessions/runner.ts +0 -604
  752. package/src/sessions/runtimeResources.test.ts +0 -61
  753. package/src/sessions/sessions.test.ts +0 -549
  754. package/src/sessions/sessions.ts +0 -339
  755. package/src/skills/registry.test.ts +0 -104
  756. package/src/skills/registry.ts +0 -413
  757. package/src/terminal/accountsMenu.test.ts +0 -225
  758. package/src/terminal/accountsMenu.ts +0 -382
  759. package/src/terminal/cli.ts +0 -149
  760. package/src/terminal/client.ts +0 -74
  761. package/src/terminal/control.test.ts +0 -23
  762. package/src/terminal/control.ts +0 -23
  763. package/src/terminal/controller.ts +0 -291
  764. package/src/terminal/hubMenu.ts +0 -24
  765. package/src/terminal/launch.test.ts +0 -25
  766. package/src/terminal/launch.ts +0 -48
  767. package/src/terminal/piExtension.lifecycle.test.ts +0 -55
  768. package/src/terminal/piExtension.ts +0 -259
  769. package/src/terminal/pluginControl.test.ts +0 -146
  770. package/src/terminal/pluginMenu.ts +0 -112
  771. package/src/terminal/socket.test.ts +0 -71
  772. package/src/terminal/socket.ts +0 -232
  773. package/src/terminal/standalone.test.ts +0 -167
  774. package/src/terminal/standalone.ts +0 -153
  775. package/src/terminal/terminal.test.ts +0 -399
  776. package/src/terminal/terminals.ts +0 -553
  777. package/src/terminal/tui/application.test.ts +0 -114
  778. package/src/terminal/tui/application.ts +0 -491
  779. package/src/terminal/tui/commands.test.ts +0 -218
  780. package/src/terminal/tui/commands.ts +0 -361
  781. package/src/terminal/tui/dialogs.ts +0 -301
  782. package/src/terminal/tui/editor.test.ts +0 -84
  783. package/src/terminal/tui/editor.ts +0 -79
  784. package/src/terminal/tui/keybindings.test.ts +0 -22
  785. package/src/terminal/tui/keybindings.ts +0 -50
  786. package/src/terminal/tui/piAdapter.ts +0 -62
  787. package/src/terminal/tui/presentation.test.ts +0 -79
  788. package/src/terminal/tui/questions.test.ts +0 -41
  789. package/src/terminal/tui/questions.ts +0 -47
  790. package/src/terminal/tui/runtime.socket.test.ts +0 -104
  791. package/src/terminal/tui/runtime.test.ts +0 -215
  792. package/src/terminal/tui/runtime.ts +0 -388
  793. package/src/terminal/tui/sessionUi.ts +0 -24
  794. package/src/terminal/tui/settings.test.ts +0 -150
  795. package/src/terminal/tui/settings.ts +0 -188
  796. package/src/terminal/tui/status.test.ts +0 -70
  797. package/src/terminal/tui/status.ts +0 -109
  798. package/src/terminal/tui/theme.ts +0 -174
  799. package/src/terminal/tui/tools.test.ts +0 -145
  800. package/src/terminal/tui/tools.ts +0 -142
  801. package/src/terminal/tui/transcript.test.ts +0 -25
  802. package/src/terminal/tui/transcript.ts +0 -124
  803. package/src/terminal/tui/ui.test.ts +0 -313
  804. package/src/terminal/tui/ui.ts +0 -166
  805. package/src/terminal/tui/welcome.ts +0 -102
  806. package/src/tools/askUser.test.ts +0 -69
  807. package/src/tools/askUser.ts +0 -59
  808. package/src/tools/definitions.ts +0 -187
  809. package/src/tools/maintenance.ts +0 -24
  810. package/src/tools/memoryTools.ts +0 -22
  811. package/src/tools/pluginPropose.ts +0 -41
  812. package/src/tools/registryWrite.test.ts +0 -101
  813. package/src/tools/registryWrite.ts +0 -182
  814. package/src/tools/spawnSubagent.ts +0 -92
  815. package/src/tools/types.ts +0 -39
  816. package/src/web/safeRequest.ts +0 -171
  817. package/src/web/text.ts +0 -53
  818. package/src/web/tools.ts +0 -134
  819. package/src/web/web.test.ts +0 -141
@@ -0,0 +1,122 @@
1
+ ---
2
+ id: PROP-0019
3
+ title: Harness-owned contextual side questions across surfaces
4
+ status: Implemented
5
+ created: 2026-10-24
6
+ updated: 2026-10-24
7
+ affects: [INV-RUN-1, INV-RUN-3, INV-RUN-5, INV-GATE-1, INV-PLG-1, INV-PLG-5, INV-CAP-1, INV-SRV-1, INV-SRV-2, INV-PAR-1, INV-PAR-2, 02-sessions-and-runs.md, 06-plugins-and-capabilities.md, 07-tools-and-the-gate.md, 10-server-protocol.md, 11-terminal.md, 14-surfaces-and-parity.md, 12-storage.md, ADR-0023-contextual-side-question-runs.md]
8
+ ---
9
+
10
+ # PROP-0019: Harness-owned contextual side questions across surfaces
11
+
12
+ ## Problem
13
+
14
+ `/btw` currently has two different execution paths. The terminal constructs a direct, in-memory Pi
15
+ session in `src/terminal/tui/sideQuestion.ts`; it supplies at most six visible turns and 6,000
16
+ characters, names of tools called, but no tool inputs or results. It has no Harness run record. The
17
+ App assembles a different bounded snapshot and starts a separate, tracked `sessions.run` with
18
+ trigger `side-question` (`App/docs/features/FEAT-0014-side-questions.md`). The parity register calls
19
+ these one capability but lists no Harness owner method (`docs/parity.md`).
20
+
21
+ The terminal side model therefore answers from a short excerpt, lacks the main run's instructions
22
+ and evidence, and is explicitly told to be brief. The two surfaces also have different observability
23
+ and lifecycle. A question about work outside the repository can be answered incorrectly when that
24
+ work is absent from the excerpt, even if the main run already read it.
25
+
26
+ ## Affected rules
27
+
28
+ - **INV-RUN-1:** A side question pins its selected account and an empty capability set, with no
29
+ variant (`variantVersion: null`), because it uses only fixed Harness instructions and a redacted
30
+ projection supplied by or read from the main run.
31
+ - **INV-RUN-3:** Parent run events used as context have already been validated, redacted and
32
+ persisted. Side-question events use the same contract.
33
+ - **INV-RUN-5:** Side questions use a dedicated unattended launch: no extensions, context files,
34
+ variant code, connectors, providers, subagents, or Harness tools.
35
+ - **INV-GATE-1:** A side-question run has no tools to call; this is enforced by the Harness.
36
+ - **INV-PLG-1 / INV-PLG-5:** The Harness remains the only loader. Its fixed side-question
37
+ instruction is attributed to a Harness-owned plugin descriptor.
38
+ - **INV-CAP-1:** The side run freezes an empty tool, connector, and contribution set.
39
+ - **INV-SRV-1/2:** Hosts call an additive Harness service through the server contract and the same
40
+ in-process API.
41
+ - **INV-PAR-1/2:** The Harness owns the capability; terminal and host surfaces use it.
42
+
43
+ ## Proposal
44
+
45
+ 1. Add a generic Harness side-question service with start, read and interrupt operations. It is
46
+ callable by the standalone terminal and embedding hosts. Each question is an independent
47
+ run with a new native history identity, ordinary run records, event validation and redaction.
48
+ It is not a child, subagent, continuation, queued message, or change to the main run.
49
+ 2. The service builds a bounded context from the main run's recorded effective system prompt,
50
+ current context update, visible tool inventory, persisted public run events, and a caller-supplied
51
+ transcript projection. Visible context includes assistant text, tool names, inputs and results.
52
+ Hidden reasoning and attachment bytes are excluded. Credential-like fields and common secret
53
+ forms are redacted before context enters the side run. Conversation and tool contents are framed
54
+ as evidence; they cannot expand the side run's authority. Context limits are fixed in code and
55
+ tested, keeping the effective prompt first and the newest conversation/activity when trimming.
56
+ 3. A side-question run uses the main conversation's selected account, model and effort, with an
57
+ independent session identity and a fixed, attributed Harness instruction. It records no variant
58
+ (`variantVersion: null`) and freezes an empty capability set. It loads no tools, providers,
59
+ connectors, subagents, project context files, user or variant plugin code, or main native history.
60
+ The main system prompt is context for answering, not permission to access the main run's tools.
61
+ 4. A side question and answer never enter, steer, stop or queue work on the parent conversation.
62
+ They are recorded only in the independent side run's ordinary events; clients may show that run
63
+ in Trajectory and Usage. No separate durable side-thread store is introduced.
64
+ 5. Each surface keeps its current side-question presentation. The terminal supports a scrollable
65
+ answer, copy and dismissal. The App continues to own its dock and conversation selection, while
66
+ the Harness owns launch policy, context construction, run lifecycle and result events.
67
+ 6. Phase two aligns the host path policy with the main read path: absolute and `~` paths are
68
+ available to read-only file tools anywhere the operating system permits. The working directory
69
+ is a default location, not a repository sandbox. Edit, write and command calls continue through
70
+ the existing gate.
71
+ 7. Update the capability register so the Harness service owns side questions and both terminal and
72
+ App surfaces call the shared contract.
73
+
74
+ ## Alternatives
75
+
76
+ - **Keep the terminal-only Pi session and raise its excerpt limits.** This leaves the App and
77
+ terminal with different semantics and observability.
78
+ - **Send hidden reasoning, attachment bytes, or the entire native history.** This exposes material
79
+ that is not needed to answer questions and can include private or provider-internal content.
80
+ - **Give the side question the main run's tools.** This turns a side answer into independent work
81
+ with authority and can cause effects that the user did not request.
82
+ - **Persist all side-question threads in a new store.** This adds retention, deletion and
83
+ cross-surface synchronization contracts; ordinary run records already capture model usage and
84
+ results.
85
+ - **Treat the repository root as a read boundary.** Pi's read-only file tools accept absolute and
86
+ `~` paths, but the App's host policy also applies a working-folder/trusted-folder check. The
87
+ approved implementation removes that extra read restriction and accepts `~` in host path checks;
88
+ writes and commands keep their existing gates.
89
+
90
+ ## Consequences
91
+
92
+ - Side-question requests and answers become ordinary, separately inspectable Harness run records.
93
+ They remain absent from the parent transcript and are no longer ephemeral from the run store.
94
+ - The Harness owns the context schema, redaction, bounds, restricted launch and lifecycle. Hosts
95
+ provide only the transcript projection they own and present the Harness result.
96
+ - A dedicated restricted launch and an attributed first-party instruction are required. The
97
+ restriction is explicit; `automatic: true` alone is not the contract because unattended runs have
98
+ their own plugin loading rules.
99
+ - No data migration or protocol version change is required. New side runs use the
100
+ `side-question` trigger and no variant pin. A supplied parent run must belong to the supplied
101
+ parent session; the terminal and App derive that relationship from their active conversation.
102
+ - The Harness file-reading behavior does not change. The App now aligns its host gate with that
103
+ OS-permission boundary for read-only native file tools. Its existing approval and scope gates
104
+ remain in place for writes and commands.
105
+
106
+ ## Migration
107
+
108
+ No stored schema migration is planned. New side questions use standard run records under a distinct
109
+ trigger; clients do not reopen old side-question sessions. The App switches its launch path to the
110
+ shared Harness service and permits OS-readable paths in read-only native file tools. Existing run
111
+ records and write/command gates are unchanged.
112
+
113
+ ## Checks
114
+
115
+ - Unit tests for context redaction, ordering, bounds, omitted hidden fields, parent event projection,
116
+ attributed instructions, no-tool launch, run pinning and owner-scoped reads/interrupts.
117
+ - Lifecycle checks for streaming, replacement, cancellation and dismissal without changing the
118
+ parent run or transcript.
119
+ - Harness `npm run typecheck`, `npm test`, `npm run prove`, and `python3 scripts/verify-terminal.py`.
120
+ - App `npm run typecheck`, `npm test`, `npm run check:layers`, and `cd src-tauri && cargo test`.
121
+ - Fake-provider tests are the default. Any real-model/cache or live UI acceptance run requires the
122
+ account owner's permission.
@@ -0,0 +1,105 @@
1
+ ---
2
+ id: PROP-0020
3
+ title: Built-in feature modules and namespaced plugin commands
4
+ status: Implemented
5
+ created: 2026-10-24
6
+ updated: 2026-10-24
7
+ affects: [INV-PLG-5, INV-PLG-6, INV-TUI-2, INV-TUI-7, INV-SRV-1, 06-plugins-and-capabilities.md, 11-terminal.md, 13-world-tools.md, 14-surfaces-and-parity.md]
8
+ ---
9
+
10
+ # PROP-0020: Built-in feature modules and namespaced plugin commands
11
+
12
+ **Command namespace note:** The initial decision to prefix every built-in command was superseded by
13
+ [PROP-0021](PROP-0021-command-namespaces-and-duplicates.md) and
14
+ [ADR-0021](../../decisions/ADR-0021-required-command-namespaces.md). Required built-in commands now
15
+ use their bare names; this proposal remains the record of the feature-module architecture.
16
+
17
+ ## Problem
18
+
19
+ `PluginDescriptor` already describes first-party tools, but runtime ownership is split across the
20
+ central `World` constructor, `server/methods.ts`, and the TUI's command switch. TUI plugin commands
21
+ are indistinguishable from core commands, while Pi extension commands are exposed under their
22
+ unprefixed names. This makes feature ownership hard to follow and allows command-name conflicts to
23
+ be resolved by Pi's automatic suffixes instead of a clear owner decision.
24
+
25
+ Evidence: `src/world/world.ts` directly constructed the web, browser and annotation parts;
26
+ `src/server/methods.ts` owned their handlers alongside Wiki, history, worktree and refinement
27
+ handlers; `src/terminal/tui/commands.ts` held feature-page dispatch and exposed Pi commands as
28
+ `/<name>`.
29
+
30
+ ## Affected rules
31
+
32
+ - **INV-PLG-5:** Everything model-visible belongs to a plugin. A new prompt section, tool group or
33
+ tool is declared by a `PluginDescriptor` or reported as unattributed.
34
+ - **INV-TUI-2:** The Harness owns screen composition, input, scrolling, command routing and plugin
35
+ UI. Pi owns the execution runtime, native history and rich content components.
36
+ - **INV-SRV-1:** `src/server/methods.ts` is the contract for every non-Node host. Renaming, removing,
37
+ or changing the params or result shape of a method is an architecture change.
38
+
39
+ ## Proposal
40
+
41
+ Add one internal typed registry of Harness-managed built-in plugin modules. A module may contribute
42
+ its existing descriptor, world part and cleanup, server-method handlers, and terminal command
43
+ metadata. The registry checks plugin IDs, terminal command names and built-in server-method names
44
+ for duplicates. It does not add category fields to `PluginDescriptor`, plugin responses, or storage.
45
+
46
+ The TUI uses `/plugin:<command>` for built-in and Pi extension commands. Core terminal commands
47
+ remain unprefixed. The built-in commands become `/plugin:doctor`, `/plugin:worktree`,
48
+ `/plugin:trajectory`, `/plugin:subagents`, `/plugin:notes`, and `/plugin:annotate`. Their former
49
+ unprefixed forms are removed at cutover. Prompt templates and the existing `/skill:<name>` syntax
50
+ keep their current behavior.
51
+
52
+ Pi extension commands are invoked through their registered handler and command context. Duplicate
53
+ extension names are omitted from completion and rejected with the owning extension paths when
54
+ invoked. A built-in command name is reserved against extension commands; the built-in remains
55
+ available and reports the colliding extension owner.
56
+
57
+ Ownership taxonomy is documentation only:
58
+
59
+ - **Foundation:** accounts, sessions and run recording, prompt/variant validation, the gate,
60
+ plugin loading/trust/attachments, resource browsing, server and terminal frameworks, and the
61
+ isolated browser engine/network safety.
62
+ - **World:** web tools, browser tools and page annotations.
63
+ - **Memory:** Wiki, history and trajectory.
64
+ - **Automation:** subagents, ask-user, checklist, lessons and refinement.
65
+ - **Integrations:** connected apps/MCP and Hub.
66
+ - **Operations:** doctor and worktrees.
67
+
68
+ The generic browser engine stays Foundation-owned. The browser plugin contributes the user-facing
69
+ tools through an adapter. Required and switchable plugin availability remains as before. Public
70
+ server method names, method schemas, stored data and capability gating do not change.
71
+
72
+ ## Alternatives
73
+
74
+ - Keep the TUI switch and move only the annotation command. This leaves all feature commands and
75
+ world assembly split across central dispatch points.
76
+ - Invoke extension handlers through rewritten user text. This relies on Pi's input parsing and
77
+ would not provide one collision policy or a stable plugin command context.
78
+ - Expose plugin categories in the public descriptor. The categories are for ownership and
79
+ documentation, and do not improve current runtime decisions or user flows.
80
+ - Do nothing. Feature ownership and command collisions stay implicit.
81
+
82
+ ## Consequences
83
+
84
+ The built-in registry is the runtime source for first-party descriptors, world parts, server
85
+ handlers and command metadata. The terminal adapter still owns page construction and rendering.
86
+ Hosts retain the same RPC methods, tools pass through the same capability set and gate, and no
87
+ storage migration is needed. People update plugin slash commands to the `plugin:` prefix.
88
+
89
+ ## Migration
90
+
91
+ Change all current terminal documentation and tests to the namespaced forms. Do not retain aliases
92
+ for old plugin command names. Keep the generic browser engine in Foundation and move only the
93
+ browser tools adapter under the browser plugin. Record plugin categories as an ownership taxonomy,
94
+ not public metadata.
95
+
96
+ ## Checks
97
+
98
+ - Registry tests cover unique module IDs, command owners, duplicate server handlers and lifecycle
99
+ part construction.
100
+ - Terminal tests cover built-in and Pi command completions, argument dispatch, duplicate-owner
101
+ diagnostics and rejection of retired command names.
102
+ - Existing attachment tests continue to prove that switchable tool contributions obey the saved
103
+ capability set.
104
+ - Run Harness typecheck, tests, build and `npm run prove`; run terminal PTY journeys and the App's
105
+ typecheck, tests, layer check and Rust tests.
@@ -0,0 +1,99 @@
1
+ ---
2
+ id: PROP-0021
3
+ title: Required built-in commands and duplicate command suppression
4
+ status: Implemented
5
+ created: 2026-10-24
6
+ updated: 2026-10-24
7
+ affects: [INV-TUI-7, INV-PAR-1, 11-terminal.md, 14-surfaces-and-parity.md, ADR-0021]
8
+ ---
9
+
10
+ # PROP-0021: Required built-in commands and duplicate command suppression
11
+
12
+ Accepted by the user’s request to implement this plan on 2026-10-24; implemented in the working tree and recorded in ADR-0021.
13
+
14
+ ## Problem
15
+
16
+ PROP-0020 put every built-in plugin command behind `/plugin:`. This makes required Harness features
17
+ less direct to invoke, and stale bridge registrations create duplicate `/plugin:accounts`,
18
+ `/plugin:hub`, and `/plugin:plugins` entries beside their core commands. Loaded extension commands can
19
+ also duplicate an existing bare command or prompt, as with `/plugin:mcp` or `/plugin:llama`.
20
+
21
+ Evidence: the required `subagents`, `history`, `doctor`, and `worktrees` plugin descriptors own
22
+ `subagents`, `trajectory`, `doctor`, and `worktree` terminal commands in `src/plugins/builtin.ts`.
23
+ `src/terminal/tui/commands.ts` prefixes every registry command and does not check extension names
24
+ against core commands or prompt templates. `src/terminal/piExtension.ts` separately registers
25
+ `hub`, `plugins`, and `accounts`, although the owned terminal already routes those names. `/mcp` is a
26
+ core alias for Connections. `/llama` is resource-dependent rather than a Harness core command; when
27
+ a matching prompt is loaded, it is the bare command that takes precedence.
28
+
29
+ ## Affected rules
30
+
31
+ - **INV-TUI-7:** A plugin command is invoked as `/plugin:<command>`, dispatched to its registered
32
+ owner and shown that way in completion and help. Duplicate names are rejected with owner
33
+ diagnostics. Old unprefixed plugin command forms are not aliases; core commands stay unprefixed.
34
+ - **INV-PAR-1:** Every capability a person can use in a host is a Harness capability; the standalone
35
+ terminal surfaces it.
36
+ - **14 Surfaces and parity, Contracts:** Plugin-owned terminal commands use `/plugin:<command>`;
37
+ Foundation commands remain unprefixed.
38
+
39
+ ## Proposal
40
+
41
+ Use an explicit namespace on each built-in terminal command. Commands owned by a required
42
+ `PluginDescriptor` use the bare terminal namespace; optional built-in plugin commands use
43
+ `/plugin:<command>`. This yields:
44
+
45
+ | Plugin | Command | Invocation |
46
+ |---|---|---|
47
+ | `subagents` (required) | `subagents` | `/subagents` |
48
+ | `history` (required) | `trajectory` | `/trajectory` |
49
+ | `doctor` (required) | `doctor` | `/doctor` |
50
+ | `worktrees` (required) | `worktree` | `/worktree` |
51
+ | `annotations` (switchable) | `notes`, `annotate` | `/plugin:notes`, `/plugin:annotate` |
52
+
53
+ Keep core `/accounts`, `/hub`, `/plugins`, and `/mcp` unprefixed. Remove the Pi bridge's duplicate
54
+ `accounts`, `hub`, and `plugins` command registrations.
55
+
56
+ A bare core command, alias, required built-in command, or loaded prompt owns that bare name. Do not
57
+ show or execute `/plugin:<name>` when its name collides with one of those commands; direct use reports
58
+ the bare command to use. The same rule handles dynamic duplicates such as `/plugin:mcp` or
59
+ `/plugin:llama` without special-casing installed packages. Pi extension commands with no bare-name
60
+ collision remain `/plugin:<name>`. Namespace collisions between core and required built-in commands
61
+ are rejected rather than silently overwritten. Old prefixed forms of required built-in commands are
62
+ not aliases.
63
+
64
+ Command routing, pages and existing account/plugin methods remain Harness-owned. No server method,
65
+ capability gate, storage layout, or plugin availability changes.
66
+
67
+ ## Alternatives
68
+
69
+ - Keep all built-in commands namespaced. This preserves the duplicate entries and makes required
70
+ Harness operations less direct.
71
+ - Unprefix every built-in plugin command. This also changes the optional, switchable Annotations
72
+ commands even though the request targets required plugins.
73
+ - Hide only the five currently named duplicate entries. A general same-name rule would still allow
74
+ future extensions or prompts to create duplicates.
75
+ - Do nothing. The current prefixed required commands and duplicate entries remain.
76
+
77
+ ## Consequences
78
+
79
+ Completion, help and dispatch use the namespace declared by the built-in registry. Bare names for
80
+ required plugins participate in the core command collision checks. Optional built-in and third-party
81
+ plugin commands retain the plugin namespace. When a bare prompt or command conflicts with a Pi
82
+ extension command, the bare command wins and the extension's slash command is unavailable under that
83
+ name; the extension must choose another name to expose both.
84
+
85
+ ## Migration
86
+
87
+ Use `/subagents`, `/trajectory`, `/doctor`, and `/worktree` in place of their `/plugin:` forms. Keep
88
+ `/plugin:notes` and `/plugin:annotate`. Use `/accounts`, `/hub`, `/plugins`, and `/mcp` for their
89
+ existing core commands. No stored data or server methods migrate.
90
+
91
+ ## Checks
92
+
93
+ - Registry tests cover the explicit namespace derived for required and optional plugin commands.
94
+ - Terminal tests cover bare command routing, optional/plugin-prefixed routing, help/completion,
95
+ bridge registration removal, extension duplicates, and extension collisions with bare commands,
96
+ aliases, and loaded prompts.
97
+ - Update parity and command documentation, including Doctor, trajectory, subagents and worktrees.
98
+ - Run Harness typecheck, tests, build and terminal proof; then run the App typecheck, tests, layer
99
+ check and Rust tests.
@@ -0,0 +1,102 @@
1
+ ---
2
+ id: PROP-0022
3
+ title: Keep question tools available only in interactive plan mode
4
+ status: Implemented
5
+ created: 2026-10-24
6
+ updated: 2026-10-24
7
+ affects: [INV-RUN-8, 02-sessions-and-runs.md, 04-prompt.md, 06-plugins-and-capabilities.md, 07-tools-and-gate.md, 11-terminal.md, 14-surfaces-and-parity.md, docs/parity.md]
8
+ ---
9
+
10
+ # PROP-0022: Keep question tools available only in interactive plan mode
11
+
12
+ ## Problem
13
+
14
+ The user wants ordinary chat not to expose a model-initiated question tool, while plan mode retains
15
+ questions, with no setting or plugin toggle. Today `Sessions.start` requests `ask_user` whenever
16
+ Harness tools are enabled (`src/sessions/sessions.ts`), and the terminal bridge registers both
17
+ `ask_user` and `ask_user_question` (`src/terminal/piExtension.ts`). Plan mode currently retains the
18
+ same SDK tool list (`src/sessions/planMode.ts`) and filters the terminal's active list from its
19
+ current tools (`src/terminal/tui/runtime.ts`).
20
+
21
+ `ask-user` is a required built-in plugin (`src/plugins/builtin.ts`); it has no switchable attachment,
22
+ and `plugins.attach` rejects required plugins (`src/plugins/api.ts`). `harnessTools: false` is too
23
+ broad: it also omits History, Wiki, skill loading, checklist, and session naming. A mode-aware tool
24
+ policy is needed instead of disabling the plugin.
25
+
26
+ ## Affected rules
27
+
28
+ - **INV-RUN-8:** “Plan mode never changes the tool list or the system prompt, so switching it keeps
29
+ the cached prefix. Its refusals happen before approvals and no approval can lift them.” This
30
+ proposal changes the tool-list part: an attended plan request may expose the question tools that
31
+ ordinary runs omit. Plan refusals remain before approvals. The stable system prompt remains
32
+ unchanged; provider cache effects of the tool-list difference are not assumed.
33
+
34
+ ## Proposal
35
+
36
+ 1. New, ordinary interactive runs do not expose the Harness-owned `ask_user` tool. This is enforced
37
+ while the Harness resolves the run's callable tools, before the capability set is frozen, so a
38
+ caller cannot restore it by adding its name to `tools.allow` or a wider requested capability set.
39
+ 2. An attended `plan: true` run may expose `ask_user`. Explicitly narrower caller capabilities
40
+ still win. Automatic, probe, improver, and reflection runs do not receive a question tool.
41
+ 3. In the Harness terminal, ordinary mode does not activate `ask_user` or its terminal-specific
42
+ `ask_user_question` counterpart. A plan request may temporarily activate both from the registered
43
+ tool inventory; the normal active-tool set is restored when planning succeeds, fails, or is interrupted.
44
+ 4. Keep the `ask-user` built-in required and non-switchable. Do not add an attachment, preference,
45
+ or per-run UI toggle. Approval prompts for gated actions remain available in normal mode; this
46
+ proposal only removes model-initiated question forms. A model can still state an assumption or
47
+ ask in ordinary reply text.
48
+ 5. Preserve the existing run capability pinning contract. A continuation keeps its earlier frozen
49
+ capability set, even when that set contains a question tool; suppression applies to newly resolved
50
+ ordinary runs. If that snapshot includes `ask_user`, an automatic or probe/improver/reflection
51
+ continuation is rejected with `continuation_mismatch` rather than narrowing the snapshot or
52
+ allowing an unattended question. Update `INV-RUN-8` to document the plan-mode tool-list exception
53
+ and update the session and terminal contracts plus the parity register.
54
+
55
+ This proposal concerns Harness-owned question tools. It does not blacklist arbitrary third-party
56
+ extensions that independently implement a question interface under another tool name.
57
+
58
+ ## Alternatives
59
+
60
+ - **Make `ask-user` switchable and default it off.** This would remove it in plan mode too unless
61
+ mode-specific overrides were added, and would contradict the requested fixed behavior. Making a
62
+ required Harness part optional also changes the plugin contract and `INV-PLG-9`.
63
+ - **Set `harnessTools: false`.** This hides unrelated Harness tools and is not a question-only
64
+ control.
65
+ - **Leave the tool visible but refuse calls outside plan mode.** The model would still see and may
66
+ call the tool in normal mode, receiving a refusal rather than having no question surface.
67
+ - **Do nothing.** Preserves current behavior, which does not meet the request.
68
+
69
+ ## Consequences
70
+
71
+ - Newly resolved normal runs have a narrower frozen tool set. Attended plan runs may include
72
+ `ask_user` subject to their caller's capability set; this is the explicit exception to
73
+ `INV-RUN-8`.
74
+ - The terminal derives plan-safe tools from registered tools as well as its normal active-tool list,
75
+ then restores the ordinary list on success, failure or interruption.
76
+ - Tool-list changes may affect provider request caching. No cache-preservation claim is made; any
77
+ real-provider measurement follows `INV-PRM-8` and requires the account owner's permission.
78
+ - Existing stored runs and plugin attachments need no migration. Continuations retain the earlier
79
+ pinned tool set as required by `INV-RUN-2`.
80
+ - Gated tool approvals and plain-text questions remain possible. The guarantee is specifically
81
+ that the Harness-owned question tools are not callable in newly started normal runs.
82
+
83
+ ## Migration
84
+
85
+ No protocol, storage schema, or attachment migration is required. New runs resolve the mode-specific
86
+ callable set before `freezeRun`; existing run records and their capability snapshots are unchanged.
87
+ Continuations preserve their original snapshot. The App needs no separate preference or UI; it
88
+ continues to call Harness, which enforces the selection. Its sidecar tests must verify the resulting
89
+ tool set.
90
+
91
+ ## Checks
92
+
93
+ - SDK session tests prove normal runs omit `ask_user` even when requested, attended plan runs can
94
+ include it, narrower capability sets still exclude it, automatic/refinement/reflection runs do not
95
+ receive it, and continuation snapshots remain exact.
96
+ - Terminal tests prove normal active tools omit both question names, plan mode activates them, and
97
+ the normal set is restored after success, failure and interruption.
98
+ - Run Harness `npm run typecheck`, `npm test`, `npm run prove`, and the terminal question/plan
99
+ verification. After Harness implementation, run the App's typecheck, tests, layer check, and Rust
100
+ tests, including sidecar coverage of normal and plan tool lists.
101
+ - Use fake-provider tests by default. Any real provider cache check requires the account owner's
102
+ explicit permission.
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: PROP-0023
3
+ title: Rename the published CLI command to xagent
4
+ status: Implemented
5
+ created: 2026-10-24
6
+ updated: 2026-10-24
7
+ affects: [11-terminal.md, package.json#bin, CLI documentation, ADR-0009]
8
+ ---
9
+
10
+ # PROP-0023: Rename the published CLI command to xagent
11
+
12
+ ## Problem
13
+
14
+ The package currently publishes `xharness` as its only executable, and invoking it without a
15
+ subcommand starts the Harness-owned OpenTUI terminal. The requested launch command is `xagent`.
16
+ The command name is a public CLI contract, so replacing it must update the package bin mapping,
17
+ help text, command examples, smoke checks, and the terminal specification.
18
+
19
+ ## Affected rules
20
+
21
+ - Page 11 names `xharness` as the published executable and standalone terminal command.
22
+ - `package.json#bin`, the package lock, CLI usage, and command-specific help publish and document
23
+ `xharness`.
24
+ - ADR-0009 records `xharness` as the sole published executable.
25
+
26
+ ## Proposal
27
+
28
+ Publish `xagent` as the sole executable mapped to `dist/cli.js`. Invoking `xagent` without a
29
+ subcommand starts the existing OpenTUI terminal; `terminal` remains an explicit alias and the
30
+ existing subcommands remain available. Do not keep `xharness` as a compatibility alias. Keep the
31
+ npm package name, terminal runtime, data/state directory names, and environment-variable names
32
+ unchanged. Update command examples and regression/smoke checks to use `xagent`.
33
+
34
+ ## Alternatives
35
+
36
+ - Keep `xharness` as an alias. This avoids disruption but does not replace the requested launch
37
+ command.
38
+ - Rename the npm package. This is unrelated to the executable name.
39
+ - Do nothing. This leaves the requested command unavailable.
40
+
41
+ ## Consequences
42
+
43
+ - Scripts and shell aliases using `xharness` must change to `xagent`.
44
+ - The rename is a breaking CLI change. It is included before publication of the 4.0.0 candidate;
45
+ if `xharness` has already been released, the rename requires a new major release.
46
+ - No account, data, state, or server-protocol migration is required.
47
+
48
+ ## Migration
49
+
50
+ Install `@xingular/harness` and launch the terminal with `xagent`. Update invocations of the former
51
+ `xharness` command. Existing `~/.xingular-harness/{data,state}` contents are reused unchanged.
52
+
53
+ ## Checks
54
+
55
+ - `npm run typecheck` passed.
56
+ - `npm test` passed: 137 test files, 1,036 tests passed, 3 skipped; the focused CLI test also passed (2 tests).
57
+ - `npm run prove` passed, including the standalone server lifecycle.
58
+ - `node dist/cli.js --help` printed usage beginning with `xagent`.
59
+ - `npm pack --dry-run` passed and included the CLI, TUI bundle, and updated decision records.
60
+
61
+ The lasting decision is recorded in [ADR-0024](../../decisions/ADR-0024-xagent-command.md).
@@ -0,0 +1,130 @@
1
+ ---
2
+ id: PROP-0024
3
+ title: Add bounded ASCII sketch previews to question choices
4
+ status: Implemented
5
+ created: 2026-10-24
6
+ updated: 2026-10-24
7
+ affects: [INV-RUN-3, INV-PAR-1, INV-PAR-2, 02-sessions-and-runs.md, 10-server-protocol.md, 11-terminal.md, 14-surfaces-and-parity.md, docs/parity.md, App/shared/contracts.ts, App/src/modes/chat/QuestionBatchForm.tsx, App/docs/features/FEAT-0013-plan-mode.md, App/docs/architecture/implementation-stage.md, ADR-0025]
8
+ ---
9
+
10
+ # PROP-0024: Add bounded ASCII sketch previews to question choices
11
+
12
+ **Accepted by the product owner on 2026-10-24; implementation and verification completed in the working tree.**
13
+
14
+ ## Problem
15
+
16
+ Question choices currently carry labels, descriptions and recommendation state. The validated
17
+ `question.requested` run event persists those fields, but neither the Harness question contract nor
18
+ the App's mirrored contract can carry a choice-specific visual sketch. As a result, an agent cannot
19
+ show a small text diagram to clarify a choice, and neither question surface can preview one while a
20
+ person compares choices.
21
+
22
+ This changes the persisted run-event payload contract. It must be accepted before changing code or
23
+ the architecture specification.
24
+
25
+ ## Affected rules
26
+
27
+ - **INV-RUN-3:** “Every run event is validated against its schema, redacted, persisted, and only then
28
+ relayed to listeners, in order. An event that arrives after the run settled is kept as evidence and
29
+ never applied or relayed.” This proposal adds validated optional metadata to
30
+ `question.requested`; it does not change event ordering or persistence.
31
+ - **INV-PAR-1:** “Every capability a person can use in a host is a Harness capability: a foundation
32
+ service, a world part or a first-party plugin, reachable through server methods. The standalone
33
+ terminal surfaces it. A host is a presentation of it.” Sketch metadata and the terminal preview
34
+ are Harness-owned; the App presents the same question data.
35
+ - **INV-PAR-2:** “A capability is complete only when its terminal surface and its host surface both
36
+ pass acceptance. It lands in the Harness first, together with its terminal surface; the host
37
+ surface follows.” Both question surfaces must render and test the same metadata.
38
+
39
+ ## Proposal
40
+
41
+ 1. Extend each question input with optional `uiSketch?: true`. This question-level flag enables
42
+ sketch mode; it applies to that question only, including questions in an `ask_user` batch.
43
+ 2. Extend each choice with optional `sketch?: string`. When `uiSketch: true`, every choice must
44
+ contain a valid sketch. When the flag is absent, choices must not contain sketches. Reject an
45
+ invalid combination before emitting a question event; do not silently omit or truncate data.
46
+ 3. Bound each sketch to 1–8 lines and at most 32 printable ASCII characters per line. Lines are
47
+ separated by LF. Only bytes `0x20`–`0x7e` and LF are allowed; tabs, CR, terminal controls,
48
+ escape sequences and Unicode are rejected. The sketch must contain at least one non-space
49
+ printable character. Interior blank lines and trailing spaces are allowed and preserved exactly.
50
+ The maximum encoded length is 263 bytes (eight 32-character lines plus seven LF separators).
51
+ 4. Add the fields to both Harness question-tool schemas (`ask_user` and terminal
52
+ `ask_user_question`) and their runtime validation. Add them to the `question.requested` payload
53
+ schema and preserve them through `RunRegistry` into the persisted event. `question.answered` and
54
+ `QuestionAnswer` stay unchanged: sketch metadata is never part of an answer.
55
+ 5. The terminal question dock renders choice labels and descriptions in wrapping columns. It places
56
+ one shared, monospace sketch canvas below the choice list, displaying the hovered choice's sketch
57
+ or, with no hovered choice, the keyboard-focused choice's sketch. It does not create one canvas
58
+ per choice. Sketch content is rendered as literal text, without Markdown or ANSI interpretation.
59
+ 6. The App mirrors the payload schema and preview behavior in `QuestionBatchForm`. Its choice
60
+ label/description columns wrap at narrow widths, and its shared preview is literal monospace
61
+ text. Update plan-mode acceptance to cover sketch-enabled questions and record the implementation
62
+ in the App's implementation-stage log. Update Harness architecture/terminal docs and
63
+ `docs/parity.md` when implementing.
64
+ 7. On acceptance, add ADR-0025 to record the stable question-event and sketch-bounds contract.
65
+
66
+ The optional flag is intentionally a positive literal, not a free-form renderer configuration.
67
+ Sketches do not introduce an image/attachment type, a host-only surface or a new answer format.
68
+
69
+ ## Alternatives
70
+
71
+ - **Accept optional sketches without a mode flag.** This leaves it unclear whether sketches are
72
+ expected, permits partially illustrated questions, and makes the preview's presence ambiguous.
73
+ - **Allow Markdown, Unicode diagrams, ANSI or unbounded text.** Rendering differs across terminal
74
+ and host, escape/control content creates risk, and unbounded content can overwhelm a question
75
+ surface.
76
+ - **Use image attachments or a rich-output event.** This adds a separate content/storage/rendering
77
+ contract for a small, readable diagram and cannot provide the same text fallback in the terminal.
78
+ - **Do nothing.** Keeps the existing event stable but does not let questions explain choices with
79
+ compact diagrams.
80
+
81
+ ## Consequences
82
+
83
+ - New `question.requested` events may carry `uiSketch: true` and per-choice `sketch` strings. The
84
+ event remains backward-compatible: both fields are optional, and old events continue to parse.
85
+ - The App's shared contract must accept the same bounded fields as Harness. A stale host that does
86
+ not understand the optional metadata can still read the other question fields, but cannot show
87
+ the preview; parity requires updating the App before marking the feature complete.
88
+ - The question surface gains a bounded preview with no answer semantics. Recommendation ordering,
89
+ selection, free text, notes, submission and cancellation remain unchanged.
90
+ - There is no run-record layout change or migration. Sketches are stored only in the existing
91
+ `question.requested` event payload, subject to the existing event redaction and persistence path.
92
+ - Existing question-tool and event callers that omit `uiSketch` behave as before. Calls that enable
93
+ it must provide a valid sketch for every choice.
94
+
95
+ ## Migration
96
+
97
+ No migration is needed. New readers accept old question events because the new payload fields are
98
+ optional; new writers validate the flag/choice relationship and bounds. Answer payloads are
99
+ unchanged. The Harness implementation and terminal surface must land first; then the App schema and
100
+ form are updated in a separate App repository change. No live-model request is required for
101
+ verification.
102
+
103
+ ## Checks
104
+
105
+ After acceptance, verify schema bounds and flag/choice consistency, preservation of literal sketch
106
+ text through both tool paths and persisted events, compatibility with old events, unchanged answer
107
+ payloads, and terminal/App hover/focus preview behavior. Run the focused Harness and App question
108
+ tests, including the isolated question-form browser fixture. Also run:
109
+
110
+ - Harness: `npm run typecheck`, `npm test`, `npm run build`, `npm run prove`,
111
+ `python3 scripts/verify-terminal.py --questions-only` at 40×20, 80×24 and 120×40, and a terminal
112
+ input-latency profile.
113
+ - App: `npm run typecheck`, `npm test`, `npm run check:layers`, `npm run check:ui`,
114
+ `cd src-tauri && cargo test`, and the isolated question-form browser fixture.
115
+
116
+ ## Implementation evidence
117
+
118
+ - Harness: `npm run typecheck`, all 1,041 tests (3 skipped), `npm run build` and `npm run prove`
119
+ passed. The isolated `--questions-only` PTY check passed at 40×20, 80×24 and 120×40 with
120
+ `pyte`; the 40-column run checks compact sketch navigation and answers, while wider runs also
121
+ check wrapped notes and free-text.
122
+ - Input latency profile (160×45, four rounds, loopback provider, no live requests): idle p50/p95/p99/max
123
+ 4.83/9.69/10.02/10.14 ms; history 4.72/9.79/10.41/10.60 ms; streaming 8.36/19.53/21.67/26.00 ms.
124
+ No keystrokes were missed.
125
+ - App: `npm run typecheck`, `npm test` (566 renderer, 49 sidecar and 7 development-signing passed;
126
+ one signing test skipped), `npm run check:layers`, `npm run check:ui` and Rust tests (168 passed,
127
+ 1 ignored) passed. The isolated question-form browser fixture passed all 5 tests using the installed
128
+ system Chrome executable.
129
+ - The first App test run, executed concurrently with other checks, exceeded an existing run-event
130
+ performance threshold; the full suite passed when rerun alone. No live-model request was made.