@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
+ # 04 Prompt
2
+
3
+ ## Purpose
4
+
5
+ One compiler builds every model instruction the harness gives. It merges the pinned variant's
6
+ sections, the harness's own sections and the application's sections into an ordered,
7
+ budgeted pack, then splits the pack into a **stable system prompt** (cached by the provider) and
8
+ a **context update** (changing state appended to native history). Keeping the two apart is what
9
+ keeps provider caching effective across turns.
10
+
11
+ ## Components
12
+
13
+ | Type / function | Role |
14
+ |---|---|
15
+ | `compile(env, caller, launch, variant)` → `ContextPack` | Builds the ordered, budgeted sections, including the configured data-root path in native file guidance. |
16
+ | `render(env, pack)` → `string` | One string for a session that takes a single prompt. |
17
+ | `sessionLaunch(env, caller, launch, historyFile, variant)` → `{ system, update, pack }` | SDK sessions: stable prefix plus an update with only the dynamic sections that changed since the last delivered snapshot. |
18
+ | `deliveredSnapshot(sessionFile)` | Reads the last delivered snapshot on the active history branch; a compaction forces a fresh one. |
19
+ | `saveForSession`, `copyToRun` | Terminal sessions keep the pack they started with and copy it to each run. |
20
+ | `record`, `load`, `packPath` | The pack each run was given, at `runs/<id>/context.json`. |
21
+ | `toolGroups`, `fit`, `clip` | The tool manifest by group; cutting text to a budget at a paragraph boundary. |
22
+
23
+ All in `prompt/compile.ts`. A `ContextPack` holds `sections: Section[]` (each with `id`, `title`,
24
+ `body`, `sources`, `budget`, `size`, `cut`), `toolGroups`, `harness` (scope and fingerprint),
25
+ `profile`, `compiledAt` and `delivery` (`systemSectionIds`, `updatedSectionIds`).
26
+
27
+ ## Section order
28
+
29
+ `SECTION_ORDER`: `harnessIdentity` 5, `system` 25, `guardrails` 40, `memory` 45, `references`
30
+ 50, `subagents` 64, `scripts` 66, `wiki` 80, `tools` 90, `reporting` 95. Application sections
31
+ sit among them by their `order`; plan mode uses `plan` at 25. Ties keep insertion order.
32
+ When a run may spawn, `subagents` lists every agent profile it can start (built-in, global,
33
+ project and the variant's c5 names) and replaces the variant's own list (PROP-0029). The `tools`
34
+ section has a Progress paragraph whenever `checklist_write` is available: it asks for a checklist
35
+ early and kept current, because the person follows work from it (PROP-0006).
36
+
37
+ The fixed `harness-identity` section says `You are an AI agent running in <productName>.` and uses
38
+ `env.productName` (default `Xingular Agent`). Host-provided identity and role sections remain
39
+ separate, so an embedding application can still describe its agent and task.
40
+
41
+ Budgets (characters): variant sections 30,000 each (already capped at save, so never cut here);
42
+ references 12,000; Wiki pointer 2,500; tools 8,000; reporting 2,000; application sections their
43
+ own `budget`.
44
+
45
+ ## Reporting
46
+
47
+ Every pack ends with the harness's `reporting` section ("Reporting your work",
48
+ `REPORTING_GUIDANCE` in `prompt/compile.ts`). It is fixed text that shapes the final reply: lead
49
+ with the answer or outcome, then use only headings or structure that help explain it; no fixed list
50
+ of report headings is required. When a concrete verification requires a person because the agent
51
+ could not perform or observe it, the optional **Need human inspection** heading says what remains
52
+ unverified, why, and the specific check the person should make. Report only checks actually run,
53
+ with their results. Markdown tables are used where they help compare options or present repeated
54
+ fields or check results; any format the person, application or current mode asks for takes
55
+ precedence. The section names no application, is never dynamic, and is never cut. See
56
+ [PROP-0001](proposals/PROP-0001-reporting-section.md),
57
+ [PROP-0004](proposals/PROP-0004-flexible-reporting-guidance.md), and
58
+ [ADR-0008](../decisions/ADR-0008-flexible-reporting-guidance.md).
59
+
60
+ ## Delivery
61
+
62
+ ```text
63
+ compile ──► pack ──► stable sections ──► system prompt (+ "Context updates" guidance)
64
+ └──► dynamic sections ──► compare with delivered snapshot ──► custom message
65
+ type xingular-context
66
+ ```
67
+
68
+ - Dynamic sections are the built-in `references` and `wiki`, plus every application section with
69
+ `dynamic: true`.
70
+ - An update lists only the dynamic sections that changed, and announces a withdrawn one.
71
+ `references` is always resent when present, because it belongs to the current request.
72
+ - The session appends the update as a hidden custom message and saves its snapshot in the
73
+ message details (`xingularContext`); recording a pack does not mark it delivered.
74
+ - Terminal sessions use `compile` + `render` once, pass it as `--append-system-prompt`, and keep
75
+ that pack for the life of the session.
76
+ - Read-only native file guidance states that absolute and `~` paths work when the operating system
77
+ permits access, names the configured data root, and describes the working folder as a default
78
+ location. Edits and commands remain subject to the gate.
79
+ - A side-question launch attributes its fixed no-tool instruction to the `side-questions` plugin.
80
+ Its launch suppresses tool guidance entirely. The main run's effective prompt and current context
81
+ update are included in the separately bounded, redacted context message (PROP-0019).
82
+
83
+ ## Invariants
84
+
85
+ - **INV-PRM-1** The prompt is assembled only in `src/prompt/compile.ts`. Nothing else builds model
86
+ instructions. SDK sessions use `sessionLaunch`; terminal sessions use `compile` + `render`.
87
+ - **INV-PRM-2** The system prompt holds only stable text: identity, role, the variant's sections, the
88
+ harness's reporting guidance, tool guidance and the tool manifest. Changing state never enters it.
89
+ - **INV-PRM-3** `references`, `wiki`, and every section the application marks `dynamic` are
90
+ delivered as context updates in native history, never in the system prompt.
91
+ - **INV-PRM-4** An update carries only changed dynamic sections, so an unchanged turn appends
92
+ nothing. A compaction on the active branch forces the full snapshot again.
93
+ - **INV-PRM-5** The pack only describes tools the caller can call (the frozen capability set).
94
+ `ask_user` is not part of the compiler's tool-group manifest; its mode-specific availability is
95
+ resolved with the run's callable tools (page 02).
96
+ - **INV-PRM-6** Each run's pack is recorded beside the run. Failing to record it never fails the
97
+ session.
98
+ - **INV-PRM-7** The compiler is synchronous (`INV-BND-4`).
99
+ - **INV-PRM-8** Whether a prompt or callable tool-list change keeps the provider's cache is measured
100
+ with real requests from the application, only with the account owner's permission. Tests do not
101
+ stand in for it.
102
+ - **INV-PRM-9** Native file guidance describes the existing OS-permission boundary accurately:
103
+ absolute and `~` paths are valid for read-only file tools; the working folder is not a sandbox.
104
+ Side-question runs with no callable tools omit tool guidance.
105
+
106
+ ## Relation to DESIGN-0001
107
+
108
+ [`../system-prompt-design.md`](../system-prompt-design.md) is a draft design (not accepted). Only
109
+ what this page states is binding. Adopting parts of that draft is an architecture change.
110
+
111
+ ## Source map
112
+
113
+ `src/prompt/compile.ts`, `src/sessions/sessions.ts` (calls `sessionLaunch`),
114
+ `src/terminal/terminals.ts` (calls `compile` + `render`), `src/variant/materialise.ts` (variant
115
+ sections), `src/sessions/planMode.ts` (`plan` section).
116
+
117
+ ## Session naming guidance (PROP-0010)
118
+
119
+ The Session tool group describes `session_name` when available: name meaningful work early
120
+ with an imperative sentence of at most six words, and revise when the objective changes.
121
+ This is fixed foundation guidance. The current name stays in native session metadata and
122
+ the terminal snapshot; it is never interpolated into the stable system prompt.
@@ -0,0 +1,107 @@
1
+ # 05 Refinement
2
+
3
+ ## Purpose
4
+
5
+ Refinement improves a variant from evidence of how it ran, with model weights fixed
6
+ (Harness²). On one task it runs the current variant, lets improver sessions edit it, probes each
7
+ candidate, composes the best behaviours, and picks one final output without ever seeing a score.
8
+ A person adopts the result. Adopted variants and their lessons go to an experience library that the
9
+ next task's improvers read.
10
+
11
+ ## Components
12
+
13
+ | Type / function | Module | Role |
14
+ |---|---|---|
15
+ | `Refinements` | `refine/service.ts` | `start`, `wait`, `get`, `list`, `cancel`, `candidates`, `adopt`, `library`, `libraryEntry`, `forget`. |
16
+ | `runRefinement` | `refine/runner.ts` | One refinement end to end; writes `summary.json`. |
17
+ | `runMatrix` | `refine/suite.ts` | Evaluates variant versions on a task set without refining: one probe execution per version × task, recorded as `matrix.json` with comparability keys. Reads with `readMatrix`. |
18
+ | recursion | `refine/recursion.ts` | Parallel (`agg`) and sequential (`seq`) modes; stages `INV`, `DOM`, `AGG`, `COMPOSE`. |
19
+ | `Ledger` | `refine/ledger.ts` | Budget identity: R = 4k rollouts, P = 3k improver sessions. |
20
+ | evidence | `refine/evidence.ts` | Builds the evidence folder and guards it against grader output. |
21
+ | selection | `refine/selection.ts` | Blind choice among anonymised outputs, then reflection. |
22
+ | `Library` | `refine/library.ts` | The experience library per scope and area. |
23
+ | `PiExecutor`, `PiImprover` | `refine/pi.ts` | Executions and improvers as ordinary harness runs, triggers `probe` and `improver`. |
24
+ | `RefineHost` | `refine/host.ts` | The application's part (page 01, surface 7). |
25
+ | prompts | `refine/prompts.ts` | Improver missions. |
26
+
27
+ ## Method
28
+
29
+ ```text
30
+ base variant ──► k base executions (probe runs, isolated workspaces)
31
+ ──► evidence folder (task, source, trajectories, deliverables, variant, library, pool)
32
+ ──► improvers: k INV (how the agent works) + k DOM (what a practitioner knows)
33
+ ──► probe each candidate ──► k compositions from behavioural contrasts ──► k finals
34
+ ──► blind selection among anonymised outputs ──► reflection ──► candidate for adoption
35
+ ```
36
+
37
+ Parallel mode explores wider; sequential mode refines deeper. Both cost R = 4k executions and
38
+ P = 3k improver sessions. An invalid proposal gets one retry with the validator's message
39
+ (`STAGE_ATTEMPTS = 2`), then inherits the current variant.
40
+
41
+ An **evaluation matrix** is the measurement half on its own: `runMatrix` runs every
42
+ `{variant version × task}` pair through the same `Executor` contract — no improver, no selection,
43
+ no adoption, and an empty or failed execution is an honest row. Every row records
44
+ deliverability (`ok`, `delivered`) and cost, plus its comparability keys (task-prompt hash,
45
+ executor name, package version, variant fingerprint), so matrices taken across variant versions or
46
+ package commits are diffable directly. An evaluation never moves a head, and it inherits the
47
+ answer-free rule: a variant or record carrying grader output is refused before any execution
48
+ (`INV-REF-1`).
49
+
50
+ ## Contracts
51
+
52
+ - `start({ task: { id, scope, prompt, ... }, k?, mode?: 'parallel' | 'sequential', baseVersion?, improver?, executor?, retainWorkspaces? })`
53
+ returns `{ id }` at once; progress arrives as `refine.changed` and `refine.event` notices.
54
+ - With `retainWorkspaces: true` (default `false`), each execution's workspace — base, candidate
55
+ and final — is copied whole to `rollouts/<label>/workspace/` after its run settles and before
56
+ the host's `cleanup`. Binary and hidden files are kept, and symbolic links are copied as links.
57
+ A failed copy is recorded as `workspaceError` in `rollout.json` and never fails the execution.
58
+ `candidates(id)` reports each execution's `workspace` path, or `null` (PROP-0002).
59
+ - `executor: { model?, effort?, accountId?, poolId? }` names how executions run. For each value
60
+ the host's `session(...)` wins, then `executor`, then the account default. `summary.json`
61
+ records `settings: { executor, improver }` as started; each probe run's record holds what it
62
+ resolved (PROP-0003).
63
+ - `adopt(id, { label? })` commits the chosen (or named) candidate as the scope's head with source
64
+ `refinement`. It refuses while any plugin code in it is untrusted.
65
+ - Executions run as `sessions.run` with `trigger: 'probe'`, `automatic: true`, in the host's
66
+ workspace. Improvers run with `trigger: 'improver'`, `automatic: true`, file tools only, no
67
+ providers, no connected apps, no harness tools, no variant, in a temporary copy of the evidence.
68
+
69
+ ## Invariants
70
+
71
+ - **INV-REF-1** Refinement is answer-free. No rubric, score, grader output or reviewer verdict
72
+ reaches an improver, the selector or the library. `refine/evidence.ts` guards every evidence
73
+ folder (`GRADER_VERDICT_MARKERS` as a tripwire) and `assertTreeHasNoGraderVerdicts` guards the
74
+ library. Retained workspaces are output for measurement after the fact; evidence, selection,
75
+ reflection and the library never read them.
76
+ - **INV-REF-2** The selector sees only the request, the source and the outputs, shuffled under
77
+ arbitrary ids. It never sees a harness, a trajectory or a verdict.
78
+ - **INV-REF-3** The budget identity R = 4k, P = 3k holds in both modes (`Ledger.assertIdentity`).
79
+ A change to the method changes both modes and their tests together.
80
+ - **INV-REF-4** Refinement never acts in the world. Executions are unattended `probe` runs in a
81
+ folder the `RefineHost` prepared; anything that needs a person is refused at the gate, never
82
+ queued.
83
+ - **INV-REF-5** Improvers have file tools only and work on a copy of the evidence.
84
+ - **INV-REF-6** Refinement never moves a head by itself. Only `adopt`, a person's action, does, and
85
+ only with all plugin code trusted (`INV-VAR-5`).
86
+ - **INV-REF-7** The library carries whole adopted variants with an evidence-backed lesson, never a
87
+ summary in place of the variant.
88
+ - **INV-REF-8** Per-observation truncation of trajectories is never below `MIN_OBS_TRUNC`
89
+ (10,000 characters); lower values fabricate defects.
90
+
91
+ ## Data
92
+
93
+ ```text
94
+ <data root>/refine/<id>/ summary.json, task.json, variants/<label>/, rollouts/<label>/,
95
+ sessions/<label>/, context/, selection/, reflection/, improver/
96
+ <data root>/refine/<id>/rollouts/<label>/workspace/ only with retainWorkspaces
97
+ <data root>/refine/<id>/ matrix.json, suite.json (evaluation matrices; see above)
98
+ <data root>/library/<scope>/<area>/INDEX.md
99
+ <data root>/library/<scope>/<area>/variants/<task>/{variant/, EXPERIENCE.md}
100
+ ```
101
+
102
+ ## Source map
103
+
104
+ `src/refine/*.ts`. Method origin: Harness² (`harness2/core/{recursion,ledger,selection,library,context}.py`,
105
+ Apache-2.0). The evaluation matrix is this harness's addition (`refine/suite.ts`), shaped by the
106
+ same executor contract and demo executor. Try it with no model: `npm run build && node dist/cli.js refine demo --k 2`,
107
+ or evaluate a matrix with `node dist/cli.js refine matrix --demo [--data <root>] [--out <file.json>]`.
@@ -0,0 +1,129 @@
1
+ # 06 Plugins and capabilities
2
+
3
+ ## Purpose
4
+
5
+ A *plugin* is a bundle with a title, a description and contributions: instructions, skills,
6
+ commands, tools, connections, code (a Pi extension) and themes. A Pi package is a plugin as it is;
7
+ so are the harness's own parts, the application's parts, a person's registry, the folder every
8
+ account shares, and what a working folder brings. This part decides what a session loads, who has
9
+ what switched on, which code may run, and what reaches one caller. A *capability set* is the
10
+ callable result for one run.
11
+
12
+ ## Components
13
+
14
+ | Type / function | Module | Role |
15
+ |---|---|---|
16
+ | `Plugin`, `Contribution`, `PluginDescriptor`, `CONTRIBUTION_KINDS`, `PLUGIN_SOURCES` | `plugins/types.ts` | The model of a plugin and what it brings. |
17
+ | `Plugins` (`loading`, `loaded`) | `plugins/plugins.ts` | Chooses the paths a session or terminal loads; records what each extension registered. |
18
+ | discovery | `plugins/discover.ts` | Finds items with Pi's own resolver, which runs no extension code. |
19
+ | attachments (`load`, `save`, `attached`, `decided`, `set`) | `plugins/attachments.ts` | The one store of what is switched on, per scope. |
20
+ | `BuiltinPluginRegistry`, `BuiltinPluginModule` | `plugins/builtinRegistry.ts`, `plugins/builtin.ts` | Registers built-in modules and their descriptors, world parts, server handlers and terminal command metadata. |
21
+ | `HARNESS_PLUGINS` | `plugins/builtin.ts` | Descriptor view of the registered Harness parts and feature plugins. |
22
+ | `FIRST_PARTY_PLUGINS` | `plugins/firstParty.ts` | `output-trim`, `budget-guard`: inline extensions shipped switched off. `lessons`: switched off; its contribution turns on reflection after a run (page 08, PROP-0008) and loads no Pi code. |
23
+ | `Hooks` | `plugins/hooks.ts` | Runs a package's hooks file after a write. |
24
+ | install / trust | `plugins/install.ts`, `plugins/trust.ts` | Install through Pi's package manager with scripts off; trust code by hash. |
25
+ | inventory / api | `plugins/inventory.ts`, `plugins/api.ts` | `plugins.list`, `plugins.inventory`, attach, trust. |
26
+ | capability api | `capabilities/api.ts`, `capabilities/types.ts` | `list`, `resolve`, `toolIntersection`, `inventory`, `attach`. |
27
+ | run snapshot | `capabilities/runSnapshot.ts` | `freezeRun`, `loadRun`, `capabilitySet`. |
28
+
29
+ ## Contracts
30
+
31
+ - **Loading.** `Plugins.loading({ cwd, agentDir, caller, contributions, install? })` returns
32
+ `extensionPaths`, `skillPaths`, `promptPaths`, `themePaths`, `builtins` (terminal only), `hooks`,
33
+ `found`, `detached`, `projectCode`, `packageCode`. A session opens Pi with its own discovery off
34
+ and only these paths; a terminal receives them as `--extension`, `--skill`,
35
+ `--prompt-template` and `--theme` after `--no-extensions --no-skills --no-prompt-templates
36
+ --no-themes`. Pi still reads `AGENTS.md` and `SYSTEM.md` itself.
37
+ - **Attachments.** `config/plugin-attachments.json` holds `global`, `agents`, `projects` (each
38
+ `{ on, off }`) and `settings` per plugin. The narrowest scope that says something wins: agent,
39
+ then project, then everywhere. With no entry an item keeps its default.
40
+ - **Hooks.** A package declares `"harness": { "extends": [...], "hooks": "./hooks.mjs" }`. Events:
41
+ `wiki.page.saved`, `history.run.ended`. A hook has 30 seconds; its errors are kept in
42
+ `plugin-hooks.json`. `ctx.call(connection, tool, args)` reaches only a connected app that is on
43
+ for everyone, and only a tool marked to run without asking.
44
+ - **Capability set** (`CapabilitySet`): `{ version: 1, tools, connectors, contributions }`.
45
+ `capabilities.resolve` returns the set available to a caller; `capabilities.intersect` /
46
+ `toolIntersection` narrows it for a child. The required `ask-user` plugin remains attached, but its
47
+ `ask_user` tool is included only for an attended plan run or a continuation pinned with that
48
+ capability. Automatic or refinement-triggered continuations with it are rejected rather than
49
+ weakening the frozen set. The `side-questions` descriptor owns the fixed instruction for the
50
+ restricted side-question run; it has no tools, providers, connectors, subagents or variant code
51
+ (PROP-0019).
52
+
53
+ ## Invariants
54
+
55
+ - **INV-PLG-1** The harness is the only loader. A session or terminal loads exactly what
56
+ `Plugins.loading` chose, with Pi's discovery switched off. Never pass a session a loader that
57
+ discovers on its own.
58
+ - **INV-PLG-2** Code waits for trust. A working folder's `.pi/extensions` and the packages its
59
+ settings name are trusted together; each installed package is trusted on its own. Trust is a
60
+ hash of the files; a changed file asks again. A loose file a person put in the shared
61
+ `extensions/` folder needs no trust. Text contributions always load.
62
+ - **INV-PLG-3** Installing runs no code (`npm_config_ignore_scripts`). A package arrives switched
63
+ off and, if it has code, untrusted. Installing grants no attachment, trust, credential or
64
+ permission.
65
+ - **INV-PLG-4** The approval gate is the last extension to see a tool call (page 07, `INV-GATE-2`).
66
+ A plugin that changes a call's input does so before the gate sees it.
67
+ - **INV-PLG-5** Everything model-visible belongs to a plugin. A new prompt section, tool group or
68
+ tool is declared by a `PluginDescriptor` (`plugins/builtin.ts` for the harness's own), or
69
+ `plugins.inventory` reports it as `unattributed`.
70
+ - **INV-PLG-6** One store says what is switched on: `plugins/attachments.ts`. A new kind of
71
+ switchable thing gets a default and is read with `attached`; no second enablement file.
72
+ - **INV-PLG-7** A hook is told, never asked. Hooks run after the write, in the background; a write
73
+ never waits for a hook and a hook's failure never reaches it. A new write point that should be
74
+ heard calls `noteChange` (`core/changes.ts`). No hook may stop or change a write.
75
+ - **INV-PLG-8** A hook runs only while its plugin is on for everyone and trusted, checked before
76
+ each delivery. A working folder's package cannot bring a hook.
77
+ - **INV-PLG-9** Unattended runs load no extension found on disk (`INV-RUN-5`). The harness's own
78
+ parts are required and refuse to be switched off; switching something on grants no permission.
79
+ A side-question run also has no variant plugin code or tool guidance (PROP-0019).
80
+ - **INV-PLG-10** Every Harness-managed built-in feature is registered by `BuiltinPluginRegistry`.
81
+ Its descriptor, world tools, server handlers and terminal command metadata share one owner. A
82
+ module's world part releases resources through the existing session and Harness lifecycle. This
83
+ registry does not load third-party Pi code or bypass its trust checks.
84
+ - **INV-PLG-11** Built-in plugin categories are a documentation ownership taxonomy. They are not a
85
+ `PluginDescriptor` field, a public response field or a second attachment scope.
86
+ - **INV-CAP-1** A capability set only narrows. `intersect` never adds access; a run's set is
87
+ frozen when it starts (`INV-RUN-2`). An agent profile's `plugins` list keeps only the parent's
88
+ contributions of those plugins (required plugins always stay) and drops the tools they own; it
89
+ never adds one (PROP-0029).
90
+ - **INV-CAP-2** The capability contract is generic. It names no application task, role or UI
91
+ concept.
92
+ - **INV-CAP-3** A capability set says what may be called, not whether a call may run. The gate
93
+ still decides each call.
94
+
95
+ ## Data
96
+
97
+ ```text
98
+ <data root>/config/plugin-attachments.json (registry-enabled.json read until the first change)
99
+ <data root>/plugins/<name>/ packages kept with the data; removal moves to trash/plugins/
100
+ <state dir>/plugin-trust.json trusted code, by hash
101
+ <state dir>/plugin-registered.json what each extension registered last time
102
+ <state dir>/plugin-hooks.json hooks and their last run
103
+ <state dir>/accounts/_shared/pi/ settings and packages shared by every account
104
+ ```
105
+
106
+ ## Source map
107
+
108
+ `src/plugins/*.ts`, `src/capabilities/*.ts`, `src/core/changes.ts`.
109
+
110
+ ## Built-in ownership taxonomy (PROP-0020)
111
+
112
+ These categories make ownership visible in docs and source layout. They do not change plugin
113
+ metadata or availability:
114
+
115
+ | Category | Features | Foundation boundary |
116
+ |---|---|---|
117
+ | Foundation | Accounts, sessions and run recording, prompt and variant validation, gate, plugin loading/trust/attachments, resource browser, server and terminal frameworks | Release-owned infrastructure and security contracts |
118
+ | World | Web search/read tools, browser tools, page annotations | The isolated browser engine and network policy remain Foundation services |
119
+ | Memory | Wiki, history and trajectory | Storage and run records remain Foundation-owned services |
120
+ | Automation | Subagents, ask-user, checklist, lessons and refinement | Run lifecycle, capability narrowing and approval gate remain Foundation-owned |
121
+ | Integrations | Connected apps/MCP and Hub | Connector credentials and plugin installation remain behind Foundation services |
122
+ | Operations | Doctor and worktrees | Diagnostics and repository operations remain Harness-managed services |
123
+
124
+ ## Terminal resource inspection
125
+
126
+ The unified browser joins saved plugin/contribution metadata with actual session skills and tool
127
+ registration. A saved on/off state does not prove a resource loaded; origins and owners distinguish
128
+ same-name resources. Protected install/remove, settings, attachment and trust actions call the
129
+ existing services. No second discovery or enablement mechanism is introduced (PROP-0013).
@@ -0,0 +1,103 @@
1
+ # 07 Tools and the gate
2
+
3
+ ## Purpose
4
+
5
+ A run's tools come from four places: the harness's own tools, the connected-apps broker,
6
+ subagent tools, and the application's tool providers. Every call, whatever its source, passes one
7
+ per-call gate that asks the application's policy, then standing approvals, then the person.
8
+
9
+ ## Components
10
+
11
+ | Type / function | Module | Role |
12
+ |---|---|---|
13
+ | `HarnessToolDefinition`, `RECALL_TOOLS`, `TRAJECTORY_TOOLS`, `WIKI_READ_TOOLS`, `WIKI_WRITE_TOOLS`, `SKILL_TOOLS`, `DEFAULT_TOOL_NAMES` | `tools/definitions.ts` | The harness's own tools, defined once. |
14
+ | `dispatch` | `tools/dispatch.ts` | One entry point for every History, Wiki and skill call, from a Pi tool, the server or a terminal. |
15
+ | `harnessTools` | `tools/harnessTools.ts` | The definitions as `ToolSpec`s for one session. |
16
+ | `askUserTool` (`ask_user`) | `tools/askUser.ts` | Stops an attended plan run and asks up to five related questions with choices and concise 1–2 word labels; absent from newly resolved normal runs. |
17
+ | `checklistTool` (`checklist_write`) | `tools/checklist.ts` | Writes the run's whole checklist as a `checklist.updated` event (PROP-0006). Read-only for the gate, so plan mode allows it. Terminal sessions register the same tool; it reaches the run through the `checklist` telemetry call. The prompt's Progress group asks the model to keep it current because the user follows work from it. |
18
+ | `subagentTools` | `tools/spawnSubagent.ts` | `spawn_subagent` (requires a short `title`, PROP-0030), `wait_subagents`. |
19
+ | `annotationsPart` (`page_notes_list`, `page_notes_read`, `page_notes_mark_fixed`) | `annotations/part.ts` | World tools over the page notes a person shared with the session or agent (PROP-0017). `page_notes_mark_fixed` records the agent's claim that it fixed a note it was sent; it never resolves a note or changes grants (PROP-0018). |
20
+ | `webTools` | `web/tools.ts` | `web_search` (Brave, key from the secret store), `web_fetch` (checked public reads). An application provides them as a provider. |
21
+ | gate | `sessions/sessions.ts::gate`, `sessions/runner.ts` | `ToolGate { ask, check }`, loaded as the last extension (`xagent-approvals`). |
22
+ | `Approvals`, `decide`, `grant`, `approvalKey` | `sessions/approvals.ts` | Standing approvals. |
23
+
24
+ Harness tools: `history_search`, `history_read`, `trajectory_search`, `trajectory_read`,
25
+ `wiki_search`, `wiki_read`, `wiki_list`, `wiki_write` (not in the default set), `skill_load`,
26
+ `ask_user` (attended plan runs and pinned continuations only), `checklist_write`. Broker:
27
+ `mcp_list_tools`, `mcp_call_tool`. Native Pi tools: `read`, `grep`, `find`,
28
+ `ls`, `edit`, `write`, `bash`.
29
+
30
+ ## Native file paths
31
+
32
+ The read-only `read`, `grep`, `find` and `ls` tools accept paths relative to the working folder,
33
+ absolute paths, and `~` paths. The working folder is a default location, not a repository boundary;
34
+ the operating system's access for the Harness process decides what can be read. The compiled file
35
+ guidance names the configured data root. `edit`, `write` and `bash` continue through the existing
36
+ gate and policy. A side-question run has an empty capability set and no tools (PROP-0019).
37
+
38
+ ## The gate, per call
39
+
40
+ ```text
41
+ child run and tool outside its snapshot ─► refuse
42
+ plan mode and tool not research-safe ─► refuse (before approvals)
43
+ policy.scope(call)
44
+ not allowed and (automatic or no approval possible) ─► refuse with reason
45
+ policy.authorize(call) throws ─► refuse
46
+ allowed, not humanOnly, (automatic or not gated) ─► run
47
+ trigger probe or improver ─► refuse (nobody to ask)
48
+ run.requestApproval(...) ─► standing approvals may answer, else the person
49
+ denied ─► refuse
50
+ policy.authorize(call) again ─► run or refuse
51
+ ```
52
+
53
+ Standing approvals (`approvals.json`): an always-approve switch per key (`chat`, or the run's
54
+ `harness`), tools allowed across the state directory per key, and targets remembered per
55
+ session. `humanOnly` calls are never answered by remembered tools, and by the switch only when
56
+ `allowGlobalApproval`. `ApprovalFacts.unattended` disables standing answers; `readOnly` disables
57
+ the switch and global tools.
58
+
59
+ ## Invariants
60
+
61
+ - **INV-GATE-1** Every tool call of every run passes the gate. No tool source bypasses it,
62
+ including extension-registered tools (which ask before every call) and the initial Bash command.
63
+ - **INV-GATE-2** The gate is the last extension loaded, after disk, variant and inline extensions, so
64
+ it sees the final input of every call.
65
+ - **INV-GATE-3** Order is fixed: capability and plan-mode refusals, then the policy's scope and
66
+ authorize, then standing approvals, then the person, then authorize again.
67
+ - **INV-GATE-4** Refinement runs (`probe`, `improver`) never ask a person; what would need one is
68
+ refused, never queued (`INV-REF-4`).
69
+ - **INV-GATE-5** SDK tools are registered only if their names are in the run's frozen capability
70
+ set (`INV-CAP-1`). The terminal may retain question-tool definitions in its private Pi inventory,
71
+ but normal mode deactivates them; a plan request activates only registered questions under its
72
+ plan-mode gate.
73
+ - **INV-GATE-6** Tool attachment bytes never enter the run-event stream; only references are
74
+ recorded.
75
+ - **INV-GATE-7** Tool descriptions name the product with `{product}` (filled by `describeTool`),
76
+ never an application's name (`INV-BND-2`).
77
+ - **INV-GATE-8** Native read-only file access is bounded by process and operating-system
78
+ permissions, not by the repository root. Absolute and `~` paths are valid inputs. This does not
79
+ change the gate or permissions for writes and commands.
80
+
81
+ ## Data
82
+
83
+ `<state dir>/approvals.json`.
84
+
85
+ ## Source map
86
+
87
+ `src/tools/*.ts`, `src/web/*.ts`, `src/sessions/sessions.ts`, `src/sessions/runner.ts`,
88
+ `src/sessions/approvals.ts`, `src/sessions/policy.ts`.
89
+
90
+ ## Session naming (PROP-0010)
91
+
92
+ `session_name` (`tools/sessionName.ts`) binds to the current native session. It maintains
93
+ only Pi session metadata and is explicitly plan-safe, while still subject to capability
94
+ selection and the host policy. The terminal registers the same definition through its Pi
95
+ bridge; standalone policy permits naming without approval. See page 02 for validation and
96
+ persistence. It is a foundation tool, not mutable variant data.
97
+
98
+ ## Diagnostic probes
99
+
100
+ `/doctor` is a user command, never a model tool. Live diagnostics create separate real runs,
101
+ intersect current capabilities, and execute tool calls through the existing gate. Calls that
102
+ require an additional per-call approval report blocked; batch diagnostic consent does not grant
103
+ standing permission. No raw tool inputs, results, or screenshots enter diagnostic findings.
@@ -0,0 +1,94 @@
1
+ # 08 Memory and history
2
+
3
+ ## Purpose
4
+
5
+ Two kinds of memory sit outside the variant. The **Wiki** holds project notes: linked
6
+ Markdown that people and agents read and write as reference material, never as instructions.
7
+ **History** is the record of earlier runs: recall over what was said, and bounded reads of the
8
+ recorded trajectory. Both are served through harness tools (page 07) and kept searchable in a
9
+ rebuildable SQLite index.
10
+
11
+ ## Components
12
+
13
+ | Type / function | Module | Role |
14
+ |---|---|---|
15
+ | `paths`, `list`, `read`, `write`, `remove`, `versions`, `version`, `search`, `graph`, `ensureLayout`, `moveLegacy` | `wiki/notes.ts` | The Wiki. Logical module (functions), not a class. |
16
+ | `noteChange` | `core/changes.ts` | Announces a completed write to listeners (hooks). |
17
+ | `indexRun`, `sync`, `search`, `read` | `history/recall.ts` | Recall passages from runs, scoped to the caller. |
18
+ | trajectory search and read | `history/trajectory.ts` | Paged, redacted reads of canonical run events. |
19
+ | `Lessons`, `keptLessons`, `lessonMission` | `history/lessons.ts`, `history/lessonPrompt.ts` | Reflection on finished runs when the `lessons` plugin is on; keeps general lessons as Wiki notes (PROP-0008). |
20
+ | `withIndex`, `migrate`, `MIGRATIONS` | `core/index.ts` | The shared `index.sqlite` connection and its migrations. |
21
+
22
+ ## Contracts
23
+
24
+ - **Note paths.** A note's path is its file path under `wiki/` without `.md`. Links are
25
+ `[[path]]`, `[[path|label]]` or a relative Markdown link. Notes live in `home.md`, `library/`
26
+ (no project) and `projects/<slug>/` (a project the application named in `projects.json`).
27
+ - **Writes.** `write(root, path, body, { expectedUpdatedAt?, actor?, reason? })` refuses text over
28
+ 400,000 characters, text that looks like a credential (`secret_refused`), an unknown project
29
+ slug, and a stale `expectedUpdatedAt` (`conflict`). The previous text is kept in `wiki-history/`.
30
+ - **Recall scope.** A `Code` caller (a session in a project) reads only session runs of its project,
31
+ or its own session. A `Chat` caller reads its agent's conversations. `recallExcludeAgents` hides
32
+ named agents' conversations. A caller never reads a run outside its scope.
33
+ - **Trajectory reads** return pages of canonical execution events, including active runs,
34
+ bounded and marked when truncated. They omit account identifiers, credential fields,
35
+ attachment bytes, native adapter payloads and provider reasoning text. They report evidence,
36
+ never a score.
37
+ - **Lessons** (PROP-0008, [ADR-0010](../decisions/ADR-0010-lessons-in-the-wiki.md)). When the
38
+ first-party `lessons` plugin is on for a run's caller (its contribution is in the run's
39
+ `capabilities.json`), a **completed, top-level** run that made at least `minToolCalls` tool calls
40
+ is queued after it ends. Subagent runs and runs with trigger `probe`, `improver` or `reflection`
41
+ are never queued. One reflection runs at a time, in the background, and the queue is not kept
42
+ across a restart.
43
+ - The reflection is a session with trigger `reflection` on the run's own account and model, file
44
+ tools `read`, `grep`, `find`, `ls` only, no providers, connections, harness tools or subagents,
45
+ `automatic: true`; anything needing a person is refused at the gate. Its evidence is a temporary
46
+ `context/` with `run.md` (the request and the rendered trajectory, observations kept to at least
47
+ 10,000 characters) and `lessons.md` (the kept lessons' paths and cues), checked with the grader
48
+ tripwire.
49
+ - It replies `NO_ENTRY`, `SAME <path>`, or one `<experience>` block (`cue`, `lesson`, `evidence`,
50
+ `confidence`): refinement's lesson shape, which never carries the run's own facts.
51
+ - A new lesson is written with `notes.write` to `library/lessons/<slug of cue>` with actor
52
+ `reflection`, frontmatter `title`, `cue`, `confidence`, `sources: [runId]`. `SAME` adds the run
53
+ id to that note's `sources`. Nothing is written when the lesson is longer than `maxChars`,
54
+ looks like a credential, carries a grader marker, or the Wiki already keeps `maxLessons`
55
+ lessons; nothing is evicted.
56
+ - The `wiki` pointer section says how many lessons there are when there are any.
57
+ - **Index.** Every finished run is indexed when it ends; `open` and `rebuildIndex()` sync from
58
+ `runs/`.
59
+
60
+ ## Invariants
61
+
62
+ - **INV-MEM-1** The Wiki is reference material, not instructions. Only the variant shapes an agent
63
+ (`INV-VAR-1`); the Wiki reaches a prompt only as the dynamic `wiki` pointer and selected
64
+ `references` (`INV-PRM-3`).
65
+ - **INV-MEM-2** The harness is the only writer of the Wiki and of run records. An application
66
+ reads them and writes notes only through harness methods (`wiki.*`). Inside the harness, the
67
+ Wiki is written by `wiki_write`, by `wiki.*` methods, and by `Lessons` (actor `reflection`, only
68
+ under `library/lessons/`, only while the `lessons` plugin is on for the run's caller).
69
+ - **INV-MEM-3** Every write point calls `noteChange` after the file is in place, and never waits
70
+ for listeners (`INV-PLG-7`). (Removal does not yet: drift D-7.)
71
+ - **INV-MEM-4** A note write keeps the previous text as a version. Nothing deletes history except
72
+ an explicit person's action.
73
+ - **INV-MEM-5** Files are the source of truth. `index.sqlite` is derived and can be deleted and
74
+ rebuilt (`harness.rebuildIndex()`).
75
+ - **INV-MEM-6** Index migrations are append-only once released. Each runs in one transaction
76
+ after the file is backed up; a failure restores the previous index.
77
+ - **INV-MEM-7** Recall and trajectory reads respect the caller's scope and redact secrets. They
78
+ never return another scope's runs.
79
+ - **INV-MEM-8** Wiki code is synchronous (`INV-BND-4`).
80
+
81
+ ## Data
82
+
83
+ ```text
84
+ <data root>/wiki/ home.md, library/, projects/<slug>/
85
+ <data root>/wiki-history/ earlier versions of notes
86
+ <data root>/legacy/ an earlier Wiki's memory blocks, facts, revisions, Inbox (moved once)
87
+ <data root>/index.sqlite derived: pages, links, runs, recall passages (FTS5)
88
+ <data root>/projects.json read only: the application owns it
89
+ ```
90
+
91
+ ## Source map
92
+
93
+ `src/wiki/notes.ts`, `src/history/recall.ts`, `src/history/trajectory.ts`, `src/history/lessons.ts`, `src/core/index.ts`,
94
+ `src/core/changes.ts`, `src/core/projects.ts`, `src/core/secrets.ts`.