@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,81 @@
1
+ ---
2
+ id: EXP-0001
3
+ title: Harness terminal input latency
4
+ status: completed
5
+ created: 2026-10-20
6
+ updated: 2026-10-20
7
+ related: [ADR-0001]
8
+ ---
9
+
10
+ # EXP-0001 — Harness terminal input latency
11
+
12
+ ## Question and falsifiable hypothesis
13
+
14
+ Does replacing the serialized per-change draft queue with a single-flight latest-state publisher
15
+ reduce draft synchronization backlog while preserving the final dirty state, submit ordering, and
16
+ editor behavior?
17
+
18
+ The hypothesis is that, when draft replies are slower than incoming keys, the treatment will send
19
+ fewer than one control request per key and reduce queue drain time. Full TUI frame p95 should not
20
+ increase materially. The real local control socket is measured separately from the delayed stress
21
+ workload.
22
+
23
+ ## Baseline, treatment and controls
24
+
25
+ - **Baseline:** `TerminalApplication.syncDraft()` appends one socket request to a promise chain for
26
+ every editor change.
27
+ - **Treatment:** one in-flight request plus the latest pending dirty boolean. A pending value is
28
+ always sent after the in-flight request, including when it has the same boolean, because raw
29
+ terminal input can change controller state independently.
30
+ - **Fixed controls:** same working tree, Node/Vitest versions, 520-character input sequence, 4 ms
31
+ inter-key timer, synthetic 8 ms draft reply, 120 by 40 terminal dimensions, and test runtime.
32
+ The full-frame test calls `renderNow()` for each key and intercepts terminal writes.
33
+ - **Behavior controls:** focused application tests cover submit waiting for the empty-draft reply,
34
+ coalescing to the latest state, and existing editor callbacks; the controller test covers a
35
+ multiline raw-input/Ctrl+U correction and the send guard.
36
+
37
+ ## Data, sampling and protocol
38
+
39
+ Run `npm run profile:terminal-input`. It emits nearest-rank p50/p95 samples for editor input/render,
40
+ full TUI layout frames, and 120 real local draft-socket requests. Its application workload types
41
+ `abcdefghijklmnopqrstuvwxyz` 20 times, waits 4 ms between keys, and injects an 8 ms mock reply for
42
+ each draft update. `XINGULAR_PROFILE_TERMINAL_INPUT_RPC_DELAY_MS` changes that injected delay.
43
+ No model or provider request runs.
44
+
45
+ The full-frame profile measures Harness layout and diff computation up to `ProcessTerminal.write`;
46
+ the write itself is intercepted, and direct `renderNow()` bypasses the TUI's scheduled frame
47
+ throttle. It does not measure terminal-emulator paint or the user's slower computer.
48
+
49
+ ## Versions and environment
50
+
51
+ - Harness package: 3.0.0; Pi dependency: 1.2.0.
52
+ - Base commit: `24a9390` on `harness2`; profile and product changes were uncommitted in the shared
53
+ worktree during the runs.
54
+ - Runtime: Node v26.8.2, Vitest 4.1.11, macOS arm64, Apple M2, 8 CPU cores.
55
+ - No random seed is used; the input string and timing controls are fixed.
56
+ - Profile script SHA-256: `fdcc0d901aae87bbd3e72481471b22dd3d55d1d0d7685ffab4b0d5df0486b509`.
57
+
58
+ ## Metrics and success criteria
59
+
60
+ Primary metric: draft queue drain after the 520-key sequence. Secondary metrics: draft request
61
+ count, full-frame and combined input/frame p50/p95, and real local socket p50/p95. The change is
62
+ useful if it materially lowers queue drain and request count while keeping the final dirty state,
63
+ submit order and focused behavior tests passing. Frame p95 is checked for regressions, but one run
64
+ per variant is not enough to establish a statistically stable p95 difference.
65
+
66
+ ## Risks and stopping criteria
67
+
68
+ The injected reply delay is intentionally much slower than the measured local socket. The test can
69
+ show backlog behavior under slow replies, but it cannot establish that socket latency causes the
70
+ reported lag on a different computer. Stop optimization if the exact draft or send guard changes,
71
+ or if repeated slow-machine measurements show no meaningful queue or frame improvement.
72
+
73
+ ## Reproduction
74
+
75
+ From `Harness/`, run `npm run profile:terminal-input`. For the same synthetic stress profile on
76
+ another computer, use the same Node and dependency versions and leave the default delay unchanged.
77
+ Run the focused suite to verify behavior:
78
+
79
+ ```sh
80
+ npm test -- src/terminal/tui/application.test.ts src/terminal/tui/editor.test.ts src/terminal/terminal.test.ts
81
+ ```
@@ -0,0 +1,46 @@
1
+ # EXP-0001 — Results
2
+
3
+ - **Status:** completed on one local machine; slower-computer validation remains open.
4
+ - **Run date:** 2026-10-20.
5
+ - **Code:** base commit `24a9390` plus the shared, uncommitted worktree. Baseline and treatment
6
+ used the same profiler and workload; only the draft synchronization implementation differed.
7
+ - **Runtime:** Node v26.8.2, Vitest 4.1.11, macOS arm64, Apple M2, 8 CPU cores.
8
+ - **Workload:** 520 keys; 4 ms inter-key timer; 8 ms mocked draft reply; full TUI layout rendered per
9
+ key at 120 by 40, with terminal output intercepted. Separate local socket sample: 120 requests.
10
+
11
+ | Variant | Draft RPCs | Draft queue drain | Total sequence | Full TUI frame p50/p95 | Input plus frame p50/p95 |
12
+ |---|---:|---:|---:|---:|---:|
13
+ | Serialized baseline | 520 | 1,101.67 ms | 4,557.45 ms | 1.975 / 3.402 ms | 2.145 / 3.605 ms |
14
+ | Latest-state treatment | 401 | 11.63 ms | 3,440.87 ms | 1.953 / 3.199 ms | 2.155 / 3.410 ms |
15
+
16
+ The treatment reduced draft requests by 22.9%, queue drain by 98.9%, and total sequence time by
17
+ 24.5%. Full-frame p95 was 6.0% lower and combined input/frame p95 was 5.4% lower in these single
18
+ runs; the p50 frame time was effectively unchanged. The small p95 differences are directional only
19
+ because there was one 520-key run per variant.
20
+
21
+ The separately measured local socket p95 was 0.122 ms for the baseline and 0.118 ms for treatment.
22
+ Editor-only input/render p95 was 0.157 ms and 0.161 ms respectively. These numbers indicate that
23
+ the editor itself was inexpensive on this machine; the treatment mainly prevents request backlog
24
+ when replies take longer than normal.
25
+
26
+ ## Uncertainty, failures and limits
27
+
28
+ The mocked 8 ms response is about 65 times the measured 0.12 ms local socket p95, so the queue
29
+ improvement is strongest evidence for slow-reply conditions. The profile does not observe physical
30
+ terminal paint and was not run on the reported slower computer. That computer must run the profile
31
+ before claiming the user's lag is fixed there.
32
+
33
+ The focused Harness terminal/editor suites passed: 52 passed, 4 skipped. The opt-in profile passed
34
+ all three profile tests. The full Harness suite had 611 passing tests and one failure in the existing
35
+ untracked `src/terminal/tui/treeModel.test.ts` search expectation; Harness typecheck also reports
36
+ two errors in the existing untracked `treePicker` files. Neither failure is in the changed files.
37
+
38
+ Sibling App layer/UI checks, sidecar tests and Rust tests passed. App typecheck and root tests still
39
+ fail on existing Guide fixture/content mismatches in the shared App worktree.
40
+
41
+ ## Conclusion
42
+
43
+ The hypothesis is supported for backlog under slow draft replies: coalescing cuts queued updates
44
+ and drain time without changing measured frame performance or the focused behavior tests. Whether
45
+ this resolves the reported slow-computer typing lag is inconclusive until the profile is run there
46
+ and the result is checked against interactive use.
@@ -0,0 +1,70 @@
1
+ ---
2
+ id: EXP-0002
3
+ title: OpenTUI terminal typing latency against pure Pi and opencode
4
+ status: completed
5
+ created: 2026-10-21
6
+ updated: 2026-10-21
7
+ related: [EXP-0001, ADR-0006]
8
+ ---
9
+
10
+ # EXP-0002 — OpenTUI terminal typing latency
11
+
12
+ ## Question and falsifiable hypothesis
13
+
14
+ Why does typing in the Harness terminal feel slow, and do targeted frontend changes bring its
15
+ keystroke-to-screen latency and CPU use in line with pure Pi and opencode while idle, after a long
16
+ history, and while a reply streams?
17
+
18
+ Hypotheses, from code review before measuring: (1) the renderer's continuous mode makes every key
19
+ wait for a frame tick; (2) every change rebuilds the whole view and the Solid tree, and a streamed
20
+ delta recreates the reply's markdown renderable; (3) each runtime event publishes synchronously, with
21
+ no coalescing; (4) per-request socket connections add steady CPU. EXP-0001 measured the old Pi
22
+ frontend, which ADR-0006 removed, so it says nothing about this frontend.
23
+
24
+ ## Targets and controls
25
+
26
+ - **Xingular Harness:** `node dist/cli.js` with isolated `--state` and `--data`, an API-key account,
27
+ and the loopback model in the account's shared `models.json`.
28
+ - **Pure Pi:** `@earendil-works/pi-coding-agent` 1.2.0 `dist/bundle/cli.js` with an isolated
29
+ `PI_CODING_AGENT_DIR` (never `~/.pi`).
30
+ - **opencode:** v2.1.0, `--standalone`, isolated XDG folders and an `OPENCODE_CONFIG` that points an
31
+ `@ai-sdk/openai-compatible` provider at the loopback model.
32
+ - **Fixed:** 160 by 45 PTY, `TERM=xterm-256color`, `COLORTERM=truecolor`; four rounds of 60 keys
33
+ from `zqxjkvwy` (never produced by the replies) at 35 ms; the first 8 keys of a round are not
34
+ scored; the loopback server answers all three targets identically.
35
+
36
+ ## Scenarios
37
+
38
+ - **idle:** a fresh session, nothing running.
39
+ - **history:** after the model has looped 80 `read` tool calls (about 240 messages).
40
+ - **stream:** three rounds typed while a reply streams 60 markdown chunks per second for 30 s, with
41
+ headings and code blocks. In a full run this follows `history`, so it streams over a long session.
42
+ - **approval / question** (Harness only): typing while a tool approval, then an `ask_user` question,
43
+ waits above the composer.
44
+ - **real:** `--real` runs `stream` with each tool's own login; for Harness, the Codex account on
45
+ `openai-codex` / `gpt-6-luna`.
46
+
47
+ ## Metric and measurement
48
+
49
+ Latency is the time from writing a key to the PTY until the typed prefix ending at that key is
50
+ visible on a pyte virtual screen (nearest-rank p50/p95/p99, max). CPU is the tree's CPU time from
51
+ `ps` over the typing window. Bytes per key is PTY output divided by keys. Hot paths were found with
52
+ `bun --cpu-prof --cpu-prof-md` through `XINGULAR_HARNESS_BUN`.
53
+
54
+ The metric includes the frontend, the PTY and pyte parsing; it does not include a terminal emulator's
55
+ paint. A key that never appears (dropped) is stamped when later text shows, so dropped keys appear
56
+ as very large latencies rather than as misses.
57
+
58
+ ## Success criteria
59
+
60
+ Harness p95 at or below opencode's and within 1.5 times pure Pi's in every scenario, idle latency
61
+ that does not grow with history, and streaming CPU no higher than opencode's.
62
+
63
+ ## Reproduction
64
+
65
+ ```sh
66
+ npm run build
67
+ python3 scripts/profile-terminal-latency.py --targets xingular,pi,opencode --output <dir>
68
+ python3 scripts/profile-terminal-latency.py --targets xingular --scenarios question --output <dir>
69
+ python3 scripts/profile-terminal-latency.py --real --targets xingular --setup /model '\r' gpt-6-luna '\r' --output <dir>
70
+ ```
@@ -0,0 +1,92 @@
1
+ # EXP-0002 — Results
2
+
3
+ - **Status:** completed on one machine; not yet repeated on a slower computer.
4
+ - **Run date:** 2026-10-21.
5
+ - **Code:** base commit `24a9390` on `harness2` plus the shared, uncommitted worktree (another session
6
+ was editing the same frontend in parallel; every run used the tree as built at that moment).
7
+ - **Runtime:** macOS arm64, Apple M2, 8 cores; Node v26.8.2; Bun 1.4.2; OpenTUI 0.6.6; Pi 1.2.0;
8
+ opencode 2.1.0; pyte for the virtual screen.
9
+
10
+ All latencies in ms, keystroke to visible on screen, p50 / p95 (p99 where it matters). Lower is better.
11
+
12
+ ## Final comparison (loopback model, identical replies)
13
+
14
+ | Scenario | Xingular before | Xingular after | Pure Pi | opencode `--standalone` |
15
+ |---|---:|---:|---:|---:|
16
+ | idle | 13.1 / 19.2 | 5.1 / 10.1 | 3.9 / 6.2 | 7.5 / 10.9 |
17
+ | history (≈240 messages) | 13.2 / 20.3 | 5.2 / 10.6 | 5.1 / 10.4 | 9.8 / 13.1 |
18
+ | stream over history | 13.3 / 23.7 | 8.1 / 23.5 (p99 26.5) | 3.1 / 22.2 (p99 29.4) | 9.1 / 28.0 (p99 33.2) |
19
+ | CPU while streaming | 73.3% | 15.0% | 14.3% | 36.3% |
20
+ | CPU at rest, nothing typed | — | 2.5% | 0.0% | 3.4% |
21
+
22
+ Harness-only scenarios:
23
+
24
+ | Scenario | Before | After |
25
+ |---|---:|---:|
26
+ | typing into a tool-approval dialog during a run | 20.3 / 36.2 | 7.6 / 13.7 |
27
+ | typing while an `ask_user` question waits | 5.7 / 1,154.5 (max 1,402) — keys dropped | 5.0 / 12.9 (max 74) |
28
+
29
+ Real model (each tool's own login, `stream` scenario, three rounds while the reply streams):
30
+
31
+ | Target | Model | p50 / p95 / p99 / max | CPU |
32
+ |---|---|---:|---:|
33
+ | Xingular, after | Codex account, `openai-codex` / `gpt-6-luna` | 6.2 / 12.9 / 32.5 / 48.1 | 15.2% |
34
+ | opencode | its own login, MiniMax M3.1 Flash Free | 11.6 / 24.8 / 30.8 / 40.5 | 33.6% |
35
+
36
+ Pure Pi was not run with real credentials: its only real logins are OAuth accounts whose refresh
37
+ tokens rotate, and copying them into a second client could sign the Harness account out.
38
+
39
+ ## What each change did
40
+
41
+ Full-run rows stream on top of `history`; the "stream only" rows start fresh and are compared only
42
+ with each other.
43
+
44
+ | Step | idle | history | stream | stream CPU |
45
+ |---|---:|---:|---:|---:|
46
+ | Baseline | 13.1 / 19.2 | 13.2 / 20.3 | 13.3 / 23.7 | 73.3% |
47
+ | 1. Render on demand (no `renderer.start()`) | 4.9 / 9.0 | 7.2 / 8.5 | 16.5 / 26.3 | 72.2% |
48
+ | 2. Store + `reconcile` by id, `<markdown streaming>`, coalesced `change()` at 16 ms | 4.8 / 8.8 | 4.7 / 9.1 | 18.0 / 28.1 | 30.2% |
49
+ | stream only: 2 + publish at 33 ms | | | 19.4 / 28.1 | |
50
+ | stream only: 2 + `maxFps: 120` | | | 13.6 / 20.0 | |
51
+ | stream only: 2 + both | | | 7.7 / 20.0 | |
52
+ | 3. 33 ms only while running, `maxFps: 120` | 4.8 / 9.7 | 4.8 / 9.0 | 10.0 / 24.0 (p99 34.7, max 45.0) | 25.0% |
53
+ | 4. Socket keep-alive, statistics cache, per-message transcript cache | 4.9 / 6.0 | 4.7 / 6.1 | 6.0 / 19.2 (p99 23.3) | 14.9% |
54
+ | 5. Input publishes at once, draft read at key time, dock reply fix | 5.1 / 10.1 | 5.2 / 10.6 | 8.1 / 23.5 (p99 26.5) | 15.0% |
55
+
56
+ The CPU profile of the baseline stream (Bun `--cpu-prof`) attributed 34% of samples to `change()` →
57
+ Solid updates, 18% to re-highlighting text (`startHighlight` → `setStyledText`), about 12% to
58
+ destroying and recreating renderables, about 30% to native painting, and 16% to socket requests:
59
+ two 100 ms polls and every draft update each opened a new Unix-socket connection.
60
+
61
+ Step 5 fixed correctness problems found while measuring, at no material latency cost:
62
+
63
+ - **Dropped keys:** while a question waited, letters the dock did not use reached nothing, so typing
64
+ showed only after an `x` happened to collapse the dock. They now move focus to the composer.
65
+ - **Stale draft on Enter:** OpenTUI reports composer text in a microtask after all keys of one input
66
+ chunk. Keys and Enter arriving together (a busy machine, a paste ending in a newline) sent an empty
67
+ or truncated draft. The root now reads the composer before each key.
68
+ - **Composer not cleared:** with coalesced publication, a send's cleared draft could be overwritten by
69
+ the composer's late report. Changes made while handling a key publish synchronously.
70
+
71
+ An A/B of the per-key composer read gave idle p95 6.7 and 9.4 ms without it and 10.0 and 6.8 ms with
72
+ it. Idle p95 alternates between about 7 and 10 ms from run to run: a key that lands within one
73
+ 120 Hz frame (8.3 ms) of the previous frame waits for it.
74
+
75
+ ## Against the success criteria
76
+
77
+ - p95 at or below opencode's: met in every scenario (10.1 vs 10.9, 10.6 vs 13.1, 23.5 vs 28.0).
78
+ - Within 1.5 times Pi's p95: met for history and stream; idle is 1.6 times in the final run and
79
+ 1.1 times in step 4 and the A/B runs, inside the run-to-run spread above.
80
+ - No growth with history: met (idle 5.1 / 10.1, history 5.2 / 10.6).
81
+ - Streaming CPU no higher than opencode's: met (15.0% vs 36.3%).
82
+
83
+ ## Limits
84
+
85
+ - One machine, one run per row; the spread of p95 between repeats is about 3–4 ms.
86
+ - The metric includes PTY and pyte parsing but not a terminal emulator's paint.
87
+ - The loopback stream is regular (60 chunks per second); real providers burst. The Luna run agrees
88
+ with the loopback figures at p50/p95.
89
+ - `scripts/verify-terminal.py` still fails after `/settings` on a `Try "` placeholder from the
90
+ removed Pi frontend; that check predates this work (`verification.json` recorded `passed: false`
91
+ for OpenTUI on 2026-10-20). It now matches the rendered screen when pyte is installed, which fixed
92
+ the earlier false failure on "Keyboard controls".
@@ -0,0 +1,46 @@
1
+ # Harness features
2
+
3
+ The Harness is a reusable Pi runtime: its fixed foundation runs a configurable agent, records each
4
+ run, and can use that evidence to propose improvements. These pages organize current capabilities
5
+ by area.
6
+
7
+ The feature guide is descriptive. The [architecture specification](../architecture/README.md) is
8
+ binding and defines the contracts and invariants.
9
+
10
+ | Area | Includes | Guide |
11
+ |---|---|---|
12
+ | Core runtime | Foundation, accounts, sessions and runs, prompt compilation, tool governance | [Cores](cores/README.md) |
13
+ | Harness² | Harness Variants (HVs), recursive refinement, evidence-backed experience | [Google Harness²](google-harness2/README.md) |
14
+ | Automations | Subagents, recovery, optional run reflections, plugin hooks | [Automations](automations/README.md) |
15
+ | Memory | Wiki notes, run recall, trajectory search and reads | [Memory](memory/README.md) |
16
+ | Integrations | Application extension points, plugins, connected apps and Hub | [Integrations](integrations/README.md) |
17
+ | Interfaces | Node embedding, standalone terminal and JSON-lines server | [Interfaces](interfaces/README.md) |
18
+
19
+ ## Built-in plugin ownership
20
+
21
+ PROP-0020 groups Harness-managed feature plugins by responsibility. These labels are an architecture
22
+ taxonomy only; they are not runtime plugin categories or public metadata. Foundation-owned
23
+ infrastructure remains the security and lifecycle boundary around each feature.
24
+
25
+ | Category | Features |
26
+ |---|---|
27
+ | Foundation | Accounts, sessions, run recording, prompt/variant validation, gate, plugin loading/trust/attachments, resource browser, server and terminal framework |
28
+ | World | Web tools, browser tools and page annotations; generic isolated browser engine stays in Foundation |
29
+ | Memory | Wiki, history and trajectory |
30
+ | Automation | Subagents, ask-user, checklist, lessons and refinement |
31
+ | Integrations | Connected apps/MCP and Hub |
32
+ | Operations | Doctor and worktrees |
33
+
34
+ See [06 Plugins and capabilities](../architecture/06-plugins-and-capabilities.md#built-in-ownership-taxonomy-prop-0020) for the binding ownership boundary.
35
+
36
+ ## Planned: Agent Modes
37
+
38
+ An **Agent Mode** selects one overall work style at a time; plugins remain stackable strategies and
39
+ contributions. The first planned mode is **Router Agent Mode**: the user works through one continuous
40
+ chat and browser experience with a router agent that proactively plans, delegates across persistent
41
+ subagent threads, and receives their messages. This is a future direction, not an implemented
42
+ capability. See [FW-0001](../future-work.md#fw-0001-agent-modes-starting-with-router-agent-mode) for
43
+ the backlog entry and required architecture decisions.
44
+
45
+ **Harness Variant (HV)** is the short name used in these feature pages. The architecture
46
+ specification uses the canonical term *variant*.
@@ -0,0 +1,41 @@
1
+ # Automations
2
+
3
+ The Harness includes bounded ways to coordinate or react to work. It supplies run-level mechanisms;
4
+ the embedding application decides when to dispatch application work and owns schedules and broader
5
+ orchestration.
6
+
7
+ ## Subagents
8
+
9
+ An interactive run can spawn child runs and wait for their results. A child receives no wider
10
+ capabilities than its parent, and the parent joins outstanding children before it completes. Nesting
11
+ is bounded. The host can also spawn and wait for subagents through the Harness API.
12
+
13
+ ## Recovery and continuation
14
+
15
+ The Harness records interrupted runs and exposes what was left unfinished. It never restarts model
16
+ work automatically. The application chooses whether and when to continue an interrupted run; a
17
+ continuation starts as a new run with the earlier account, variant version, and capability set pinned.
18
+
19
+ ## Optional run reflections
20
+
21
+ The first-party `lessons` plugin is off by default. When enabled, a qualifying completed top-level
22
+ run may trigger a bounded reflection that keeps a general lesson in the Wiki. Reflection runs with
23
+ read-only file tools and cannot ask a person or act outside its allowed workspace.
24
+
25
+ ## Plugin hooks
26
+
27
+ Trusted hooks can listen for supported events such as a saved Wiki page or an ended run. Hooks run
28
+ after the event, cannot block or change the originating write, and have a time limit. They run only
29
+ while their plugin is enabled and trusted.
30
+
31
+ ## Refinement is human-adopted
32
+
33
+ Refinement is another multi-step workflow, described in [Google Harness²](../google-harness2/README.md).
34
+ Its probes and improvers run unattended, but refinement never adopts a candidate by itself.
35
+
36
+ ## Further reading
37
+
38
+ - [02 Sessions and runs](../../architecture/02-sessions-and-runs.md) — subagents, interruption, and continuation.
39
+ - [05 Refinement](../../architecture/05-refinement.md) — isolated refinement executions.
40
+ - [06 Plugins and capabilities](../../architecture/06-plugins-and-capabilities.md) — hooks and plugin trust.
41
+ - [08 Memory and history](../../architecture/08-memory-and-history.md) — optional lessons behavior.
@@ -0,0 +1,39 @@
1
+ # Core runtime
2
+
3
+ The core is the Harness's reusable, fixed foundation for running one agent turn well. It controls
4
+ the Pi session, compiles context, limits available tools, applies the call-by-call gate, and records
5
+ what happened. Application-specific behavior enters through the [integration points](../integrations/README.md),
6
+ not application-specific branches in the core.
7
+
8
+ ## Capabilities
9
+
10
+ - **Isolated accounts** — Each session uses a pinned Pi account and its own account folder;
11
+ credentials are supplied through a secret store.
12
+ - **Sessions and runs** — A session is a native Pi conversation; each run pins its account, variant
13
+ version, and capability set. Validated events are saved before they are relayed.
14
+ - **Compiled context** — One compiler combines variant, Harness, and host sections, applies budgets,
15
+ and separates stable prompt text from changing context updates.
16
+ - **Tool governance** — A frozen capability set controls which tools are registered. Every tool call
17
+ passes through the gate, which applies host policy, standing approvals, and—when needed—a person's
18
+ decision.
19
+ - **Controlled resource loading** — The Harness chooses session resources and requires trust for
20
+ plugin code; plugins cannot bypass the final tool gate.
21
+
22
+ ## Foundation and Harness Variant
23
+
24
+ The **foundation** is fixed: code and contracts such as session execution, the prompt compiler, run
25
+ recording, account isolation, and the tool gate change through releases. A **Harness Variant (HV)**
26
+ is the configurable behavior used by a scope. A run pins one validated HV version; it can shape the
27
+ agent's instructions and resources, but cannot change the foundation. See [Google Harness²](../google-harness2/README.md)
28
+ for its components and refinement process.
29
+
30
+ The Harness provides the single-run runtime. Higher-level orchestration—such as application agents,
31
+ tasks, scheduling, and UI—belongs to the embedding application.
32
+
33
+ ## Further reading
34
+
35
+ - [00 Overview](../../architecture/00-overview.md) — foundation/variant split and module ownership.
36
+ - [02 Sessions and runs](../../architecture/02-sessions-and-runs.md) — execution lifecycle and run records.
37
+ - [04 Prompt](../../architecture/04-prompt.md) — compilation and delivery.
38
+ - [07 Tools and the gate](../../architecture/07-tools-and-gate.md) — tool registration, permissions, and approvals.
39
+ - [09 Accounts and connectors](../../architecture/09-accounts-and-connectors.md) — account isolation and secret handling.
@@ -0,0 +1,52 @@
1
+ # Google Harness²
2
+
3
+ Harness² is the recursive-harnessing approach described in the [Harness² paper](https://arxiv.org/abs/2610.14224)
4
+ (Apache-2.0, Google LLC). The Harness applies the idea to improve agent behavior while keeping
5
+ model weights fixed: runs produce evidence, refinement proposes changes to a Harness Variant, and
6
+ a person decides whether to adopt them.
7
+
8
+ ## Harness Variant (HV)
9
+
10
+ **HV** is the short name for **Harness Variant**. An HV is a validated, versioned set of eight
11
+ components for one scope. A run pins a version so its behavior does not change mid-run.
12
+
13
+ | Component | What it controls |
14
+ |---|---|
15
+ | c1 — System prompt | Agent instructions |
16
+ | c2 — Guardrails | Behavioral constraints |
17
+ | c3 — Memory | Always-on memory guidance |
18
+ | c4 — Tool guidance | Guidance for using available tools |
19
+ | c5 — Subagents | Named subagent instructions |
20
+ | c6 — Skills | On-demand skills and their scripts |
21
+ | c7 — Scripts | On-demand scripts |
22
+ | c8 — Plugins | Plugin extensions in the tool loop |
23
+
24
+ An HV changes agent guidance and selected resources, not the foundation. It cannot change the prompt
25
+ compiler, tool gate, run recorder, accounts, or trust rules. A candidate is not used until a person
26
+ adopts it as the scope's head version.
27
+
28
+ ## The Propose–Probe–Compose loop
29
+
30
+ 1. Run the current HV on a task in isolated workspaces and capture evidence.
31
+ 2. Improver sessions propose edits to copies of the HV from two perspectives: **INV** (how the agent
32
+ works) and **DOM** (what a practitioner knows).
33
+ 3. Probe candidates, then compose behavior from observed contrasts.
34
+ 4. Select a final output blindly from anonymized candidates. Improvers and the selector never receive
35
+ scores, rubrics, or reviewer verdicts.
36
+ 5. Return a candidate for a person to adopt; refinement never updates the active HV by itself.
37
+
38
+ Parallel mode explores more alternatives; sequential mode refines more deeply. Both follow the
39
+ method's budget identity of **R = 4k executions** and **P = 3k improver sessions**.
40
+
41
+ ## Experience across tasks
42
+
43
+ Each scope has an experience library containing adopted HVs and evidence-backed lessons about their
44
+ edits. Future task improvers can consult that library. The library preserves the variants themselves
45
+ rather than only summaries.
46
+
47
+ ## Further reading
48
+
49
+ - [03 Variants](../../architecture/03-variants.md) — component surface, validation, versions, and trust.
50
+ - [05 Refinement](../../architecture/05-refinement.md) — full method, evidence contract, budgets, and selection.
51
+ - [ADR-0011](../../decisions/ADR-0011-foundation-and-variants.md) — the fixed-foundation/mutating-variant decision.
52
+ - [Harness² paper](https://arxiv.org/abs/2610.14224).
@@ -0,0 +1,40 @@
1
+ # Integrations
2
+
3
+ The Harness stays application-neutral. An embedding application contributes its own data and
4
+ capabilities through generic extension points; plugins and connected apps are loaded and governed by
5
+ the Harness.
6
+
7
+ ## Application extension points
8
+
9
+ The Harness has seven extension points:
10
+
11
+ 1. **Prompt sections** — application context added to the compiled prompt.
12
+ 2. **Tool providers** — application tools offered to eligible sessions.
13
+ 3. **Tool policy** — per-call scope, authorization, approvals, and connector limits.
14
+ 4. **Secret store** — application-chosen credential storage.
15
+ 5. **Directory** — names for opaque application identifiers.
16
+ 6. **Plugin descriptions** — attribution for tools, sections, and groups supplied by a plugin.
17
+ 7. **RefineHost** — isolated workspaces, sessions, and deliverables for refinement.
18
+
19
+ The server protocol provides equivalents for non-Node hosts except `RefineHost`, which is Node-only
20
+ today.
21
+
22
+ ## Plugins and capabilities
23
+
24
+ Plugins can contribute instructions, skills, commands, tools, connections, extension code, and themes.
25
+ The Harness selects what loads, keeps capabilities scoped to callers, and requires trust for
26
+ executable plugin code. Enabling a plugin does not by itself grant tool permission; calls still pass
27
+ the gate.
28
+
29
+ ## Connected apps and Hub
30
+
31
+ Connected apps use an MCP broker with scoped session access, approval for non-read calls, and
32
+ redaction of stored traces. The Hub installs exact catalog versions of skills, prompts, rules, and
33
+ Pi packages. Installation does not automatically enable, trust, or authorize the installed resources.
34
+
35
+ ## Further reading
36
+
37
+ - [01 Extension points](../../architecture/01-extension-points.md) — the application-to-Harness contract.
38
+ - [06 Plugins and capabilities](../../architecture/06-plugins-and-capabilities.md) — loading, trust, and frozen capability sets.
39
+ - [07 Tools and the gate](../../architecture/07-tools-and-gate.md) — per-call authorization.
40
+ - [09 Accounts and connectors](../../architecture/09-accounts-and-connectors.md) — secrets, connected apps, OAuth, and Hub.
@@ -0,0 +1,29 @@
1
+ # Interfaces
2
+
3
+ The same Harness runtime can be embedded by a Node application, hosted as a child process by another
4
+ language, or used through its standalone terminal.
5
+
6
+ ## Node embedding
7
+
8
+ A Node host constructs the package with `createHarness(...)`, supplies application-owned capabilities
9
+ through the extension points, and uses its sessions, runs, accounts, variants, and other services
10
+ directly. The [embedding guide](../../README.md#using-it-from-node) has a code example and API details.
11
+
12
+ ## Server protocol
13
+
14
+ A non-Node host can run the Harness server and exchange newline-delimited JSON messages over stdin
15
+ and stdout. The protocol exposes the Harness API, saved run events, state-change notices, and calls
16
+ for host-provided extension points.
17
+
18
+ ## Standalone terminal
19
+
20
+ `xagent` provides the Harness-owned OpenTUI terminal over a persistent Pi session. An embedding
21
+ application may host the terminal in its own PTY; the Harness owns the terminal UI and session
22
+ behavior, while the host owns PTY and process supervision.
23
+
24
+ ## Further reading
25
+
26
+ - [01 Extension points](../../architecture/01-extension-points.md) — how an embedding application extends the Harness.
27
+ - [10 Server protocol](../../architecture/10-server-protocol.md) — wire format and method contract.
28
+ - [11 Terminal](../../architecture/11-terminal.md) — terminal ownership and runtime.
29
+ - [Terminal guide](../../terminal-tui.md) — implementation details and verification evidence.
@@ -0,0 +1,28 @@
1
+ # Memory and history
2
+
3
+ The Harness keeps two kinds of information outside a run's prompt configuration: reference notes in
4
+ the Wiki and evidence from earlier runs. Both are searchable; the run index is derived and rebuildable.
5
+
6
+ ## Wiki
7
+
8
+ The Wiki stores linked, versioned Markdown notes for projects and shared knowledge. Notes are
9
+ reference material, not instructions: they do not replace or modify a Harness Variant's guidance.
10
+ Selected references may be delivered as changing context, but the Wiki itself is not an always-on
11
+ prompt.
12
+
13
+ ## Run history and trajectories
14
+
15
+ History supports scoped recall over earlier conversations. Trajectory tools search and read bounded
16
+ pages of recorded run events, including context, tool calls, decisions, retries, and usage. Reads are
17
+ redacted and report evidence; they do not score runs.
18
+
19
+ ## Lessons and the experience library
20
+
21
+ The optional `lessons` plugin may turn a completed run into a general Wiki lesson; see
22
+ [Automations](../automations/README.md). The [Harness² experience library](../google-harness2/README.md#experience-across-tasks)
23
+ is separate: it stores adopted Harness Variants with evidence-backed lessons about their edits.
24
+
25
+ ## Further reading
26
+
27
+ - [08 Memory and history](../../architecture/08-memory-and-history.md) — Wiki, recall, trajectories, and indexing.
28
+ - [12 Storage](../../architecture/12-storage.md) — data root and state directory.
@@ -0,0 +1,48 @@
1
+ # Future feature backlog
2
+
3
+ This backlog records candidate directions. An entry here does not change the binding architecture,
4
+ approve implementation, or describe an available feature. A change to an architecture contract,
5
+ invariant, layer boundary, extension point, or storage layout still requires a reviewed proposal.
6
+
7
+ ## FW-0001: Agent Modes, starting with Router Agent Mode
8
+
9
+ **Status:** Candidate; future architecture proposal required before implementation.
10
+
11
+ ### Concept
12
+
13
+ An **Agent Mode** selects one overall work style, with only one mode active at a time. Plugins remain
14
+ stackable strategies and contributions that can be used within a mode; they do not select the
15
+ agent's overall work style.
16
+
17
+ The first planned mode is **Router Agent Mode**. The user interacts with one user-facing agent through
18
+ one continuous chat and browser experience. That router proactively plans and delegates work across
19
+ persistent subagent threads, receives their messages, and coordinates the overall work while the user
20
+ can continue sending messages.
21
+
22
+ ### Intended ownership
23
+
24
+ This is intended as a Harness foundation capability. The current architecture describes subagents as
25
+ child runs and assigns persistent teams, broader orchestration, and the application's shared UI to
26
+ the embedding application ([02 Sessions and runs](architecture/02-sessions-and-runs.md), [feature-gap
27
+ review](study/feature-gap-review.md)). This backlog entry proposes revisiting that boundary; it does
28
+ not change it.
29
+
30
+ ### Decisions required before a proposal
31
+
32
+ - Define the mode selection scope and lifetime, including how one active mode applies to sessions,
33
+ runs, and child agents.
34
+ - Define persistent subagent thread identity, history, communication, delegation, recovery, and
35
+ resource limits while preserving the run's account, variant, capability, and gate guarantees.
36
+ - Define how the router receives worker messages and incorporates them while accepting continued
37
+ user input in one conversation.
38
+ - Define how the single chat and browser experience maps to the Harness terminal, server protocol,
39
+ and embedding hosts, including which UI responsibilities remain with the host.
40
+ - Identify the storage, run-event, and public API changes needed to support the mode and migrate or
41
+ coexist with current run-scoped subagents.
42
+
43
+ ### Next step
44
+
45
+ When implementation is scheduled, write a formal architecture proposal from the proposal template,
46
+ identify every affected contract and invariant, and obtain acceptance before changing code or binding
47
+ specification pages. Record a lasting accepted architecture choice in an ADR. Until then, Agent Mode
48
+ and Router Agent Mode are planning terms only; no runtime behavior or public interface is implied.