@xingular/harness 0.1.7 → 1.0.0

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 (683) hide show
  1. package/CHANGELOG.md +97 -1
  2. package/LICENSE +202 -0
  3. package/NOTICE.md +22 -0
  4. package/README.md +187 -85
  5. package/THIRD_PARTY_LICENSES.md +942 -0
  6. package/dist/cli.js +13701 -13498
  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/browser/config.d.ts +16 -0
  18. package/dist/sdk/browser/config.js +22 -0
  19. package/dist/sdk/browser/diagnostics.d.ts +4 -0
  20. package/dist/sdk/browser/diagnostics.js +38 -0
  21. package/dist/sdk/browser/index.d.ts +17 -0
  22. package/dist/sdk/browser/index.js +65 -0
  23. package/dist/sdk/browser/network.d.ts +10 -0
  24. package/dist/sdk/browser/network.js +59 -0
  25. package/dist/sdk/browser/session.d.ts +84 -0
  26. package/dist/sdk/browser/session.js +192 -0
  27. package/dist/sdk/browser/tools.d.ts +8 -0
  28. package/dist/sdk/browser/tools.js +329 -0
  29. package/dist/sdk/capabilities/api.d.ts +22 -0
  30. package/dist/sdk/capabilities/api.js +54 -0
  31. package/dist/sdk/capabilities/runSnapshot.d.ts +18 -0
  32. package/dist/sdk/capabilities/runSnapshot.js +47 -0
  33. package/dist/sdk/capabilities/types.d.ts +29 -0
  34. package/dist/sdk/capabilities/types.js +1 -0
  35. package/dist/sdk/cli.d.ts +2 -0
  36. package/dist/sdk/cli.js +142 -0
  37. package/dist/sdk/core/bus.d.ts +23 -0
  38. package/dist/sdk/core/bus.js +76 -0
  39. package/dist/sdk/core/caller.d.ts +22 -0
  40. package/dist/sdk/core/caller.js +16 -0
  41. package/dist/sdk/core/changes.d.ts +15 -0
  42. package/dist/sdk/core/changes.js +15 -0
  43. package/dist/sdk/core/effort.d.ts +2 -0
  44. package/dist/sdk/core/effort.js +1 -0
  45. package/dist/sdk/core/env.d.ts +18 -0
  46. package/dist/sdk/core/env.js +8 -0
  47. package/dist/sdk/core/errors.d.ts +15 -0
  48. package/dist/sdk/core/errors.js +24 -0
  49. package/dist/sdk/core/frontmatter.d.ts +12 -0
  50. package/dist/sdk/core/frontmatter.js +50 -0
  51. package/dist/sdk/core/fs.d.ts +18 -0
  52. package/dist/sdk/core/fs.js +106 -0
  53. package/dist/sdk/core/index.d.ts +24 -0
  54. package/dist/sdk/core/index.js +187 -0
  55. package/dist/sdk/core/path.d.ts +7 -0
  56. package/dist/sdk/core/path.js +79 -0
  57. package/dist/sdk/core/projects.d.ts +18 -0
  58. package/dist/sdk/core/projects.js +67 -0
  59. package/dist/sdk/core/secrets.d.ts +2 -0
  60. package/dist/sdk/core/secrets.js +5 -0
  61. package/dist/sdk/core/text.d.ts +7 -0
  62. package/dist/sdk/core/text.js +40 -0
  63. package/dist/sdk/doctor/checks.d.ts +5 -0
  64. package/dist/sdk/doctor/checks.js +208 -0
  65. package/dist/sdk/doctor/probe.d.ts +4 -0
  66. package/dist/sdk/doctor/probe.js +92 -0
  67. package/dist/sdk/doctor/service.d.ts +23 -0
  68. package/dist/sdk/doctor/service.js +144 -0
  69. package/dist/sdk/doctor/types.d.ts +141 -0
  70. package/dist/sdk/doctor/types.js +29 -0
  71. package/dist/sdk/harness.d.ts +133 -0
  72. package/dist/sdk/harness.js +299 -0
  73. package/dist/sdk/history/lessonPrompt.d.ts +2 -0
  74. package/dist/sdk/history/lessonPrompt.js +15 -0
  75. package/dist/sdk/history/lessons.d.ts +52 -0
  76. package/dist/sdk/history/lessons.js +173 -0
  77. package/dist/sdk/history/recall.d.ts +68 -0
  78. package/dist/sdk/history/recall.js +199 -0
  79. package/dist/sdk/history/trajectory.d.ts +7 -0
  80. package/dist/sdk/history/trajectory.js +216 -0
  81. package/dist/sdk/hub/catalog.json +123 -0
  82. package/dist/sdk/hub/cli.d.ts +7 -0
  83. package/dist/sdk/hub/cli.js +81 -0
  84. package/dist/sdk/hub/hub.d.ts +74 -0
  85. package/dist/sdk/hub/hub.js +474 -0
  86. package/dist/sdk/hub/schema.d.ts +280 -0
  87. package/dist/sdk/hub/schema.js +78 -0
  88. package/dist/sdk/index.d.ts +63 -0
  89. package/dist/sdk/index.js +48 -0
  90. package/dist/sdk/mcp/connections.d.ts +83 -0
  91. package/dist/sdk/mcp/connections.js +669 -0
  92. package/dist/sdk/mcp/manager.d.ts +26 -0
  93. package/dist/sdk/mcp/manager.js +124 -0
  94. package/dist/sdk/mcp/oauth.d.ts +35 -0
  95. package/dist/sdk/mcp/oauth.js +171 -0
  96. package/dist/sdk/mcp/scopeMigration.d.ts +19 -0
  97. package/dist/sdk/mcp/scopeMigration.js +198 -0
  98. package/dist/sdk/mcp/service.d.ts +160 -0
  99. package/dist/sdk/mcp/service.js +510 -0
  100. package/dist/sdk/mcp/types.d.ts +131 -0
  101. package/dist/sdk/mcp/types.js +49 -0
  102. package/dist/sdk/pi/runtime.d.ts +13 -0
  103. package/dist/sdk/pi/runtime.js +31 -0
  104. package/dist/sdk/plugins/api.d.ts +66 -0
  105. package/dist/sdk/plugins/api.js +155 -0
  106. package/dist/sdk/plugins/attachments.d.ts +46 -0
  107. package/dist/sdk/plugins/attachments.js +111 -0
  108. package/dist/sdk/plugins/builtin.d.ts +6 -0
  109. package/dist/sdk/plugins/builtin.js +68 -0
  110. package/dist/sdk/plugins/catalogue.d.ts +29 -0
  111. package/dist/sdk/plugins/catalogue.js +196 -0
  112. package/dist/sdk/plugins/cli.d.ts +13 -0
  113. package/dist/sdk/plugins/cli.js +187 -0
  114. package/dist/sdk/plugins/discover.d.ts +42 -0
  115. package/dist/sdk/plugins/discover.js +115 -0
  116. package/dist/sdk/plugins/firstParty.d.ts +50 -0
  117. package/dist/sdk/plugins/firstParty.js +113 -0
  118. package/dist/sdk/plugins/hooks.d.ts +94 -0
  119. package/dist/sdk/plugins/hooks.js +162 -0
  120. package/dist/sdk/plugins/identity.d.ts +19 -0
  121. package/dist/sdk/plugins/identity.js +48 -0
  122. package/dist/sdk/plugins/install.d.ts +20 -0
  123. package/dist/sdk/plugins/install.js +110 -0
  124. package/dist/sdk/plugins/inventory.d.ts +22 -0
  125. package/dist/sdk/plugins/inventory.js +110 -0
  126. package/dist/sdk/plugins/manifest.d.ts +13 -0
  127. package/dist/sdk/plugins/manifest.js +56 -0
  128. package/dist/sdk/plugins/plugins.d.ts +104 -0
  129. package/dist/sdk/plugins/plugins.js +164 -0
  130. package/dist/sdk/plugins/runtime.d.ts +9 -0
  131. package/dist/sdk/plugins/runtime.js +95 -0
  132. package/dist/sdk/plugins/trust.d.ts +44 -0
  133. package/dist/sdk/plugins/trust.js +120 -0
  134. package/dist/sdk/plugins/types.d.ts +159 -0
  135. package/dist/sdk/plugins/types.js +7 -0
  136. package/dist/sdk/prompt/compile.d.ts +174 -0
  137. package/dist/sdk/prompt/compile.js +396 -0
  138. package/dist/sdk/refine/cli.d.ts +4 -0
  139. package/dist/sdk/refine/cli.js +186 -0
  140. package/dist/sdk/refine/demo.d.ts +21 -0
  141. package/dist/sdk/refine/demo.js +114 -0
  142. package/dist/sdk/refine/evidence.d.ts +55 -0
  143. package/dist/sdk/refine/evidence.js +330 -0
  144. package/dist/sdk/refine/host.d.ts +51 -0
  145. package/dist/sdk/refine/host.js +76 -0
  146. package/dist/sdk/refine/ledger.d.ts +48 -0
  147. package/dist/sdk/refine/ledger.js +76 -0
  148. package/dist/sdk/refine/library.d.ts +55 -0
  149. package/dist/sdk/refine/library.js +177 -0
  150. package/dist/sdk/refine/pi.d.ts +72 -0
  151. package/dist/sdk/refine/pi.js +248 -0
  152. package/dist/sdk/refine/prompts.d.ts +45 -0
  153. package/dist/sdk/refine/prompts.js +390 -0
  154. package/dist/sdk/refine/recursion.d.ts +113 -0
  155. package/dist/sdk/refine/recursion.js +258 -0
  156. package/dist/sdk/refine/runner.d.ts +81 -0
  157. package/dist/sdk/refine/runner.js +150 -0
  158. package/dist/sdk/refine/selection.d.ts +57 -0
  159. package/dist/sdk/refine/selection.js +251 -0
  160. package/dist/sdk/refine/service.d.ts +84 -0
  161. package/dist/sdk/refine/service.js +165 -0
  162. package/dist/sdk/refine/suite.d.ts +67 -0
  163. package/dist/sdk/refine/suite.js +174 -0
  164. package/dist/sdk/refine/trajectory.d.ts +9 -0
  165. package/dist/sdk/refine/trajectory.js +68 -0
  166. package/dist/sdk/refine/types.d.ts +77 -0
  167. package/dist/sdk/refine/types.js +10 -0
  168. package/dist/sdk/server/methods.d.ts +3 -0
  169. package/dist/sdk/server/methods.js +370 -0
  170. package/dist/sdk/server/remote.d.ts +19 -0
  171. package/dist/sdk/server/remote.js +84 -0
  172. package/dist/sdk/server/rpc.d.ts +20 -0
  173. package/dist/sdk/server/rpc.js +102 -0
  174. package/dist/sdk/server/serve.d.ts +10 -0
  175. package/dist/sdk/server/serve.js +18 -0
  176. package/dist/sdk/sessions/approvals.d.ts +47 -0
  177. package/dist/sdk/sessions/approvals.js +119 -0
  178. package/dist/sdk/sessions/continuation.d.ts +48 -0
  179. package/dist/sdk/sessions/continuation.js +85 -0
  180. package/dist/sdk/sessions/contracts.d.ts +534 -0
  181. package/dist/sdk/sessions/contracts.js +299 -0
  182. package/dist/sdk/sessions/extensionUi.d.ts +19 -0
  183. package/dist/sdk/sessions/extensionUi.js +64 -0
  184. package/dist/sdk/sessions/history.d.ts +16 -0
  185. package/dist/sdk/sessions/history.js +68 -0
  186. package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
  187. package/dist/sdk/sessions/lineageJoin.js +61 -0
  188. package/dist/sdk/sessions/planMode.d.ts +36 -0
  189. package/dist/sdk/sessions/planMode.js +84 -0
  190. package/dist/sdk/sessions/policy.d.ts +43 -0
  191. package/dist/sdk/sessions/policy.js +1 -0
  192. package/dist/sdk/sessions/pricing.d.ts +34 -0
  193. package/dist/sdk/sessions/pricing.js +40 -0
  194. package/dist/sdk/sessions/reasoningSummaries.d.ts +11 -0
  195. package/dist/sdk/sessions/reasoningSummaries.js +61 -0
  196. package/dist/sdk/sessions/registry.d.ts +102 -0
  197. package/dist/sdk/sessions/registry.js +383 -0
  198. package/dist/sdk/sessions/runIndex.d.ts +21 -0
  199. package/dist/sdk/sessions/runIndex.js +65 -0
  200. package/dist/sdk/sessions/runStore.d.ts +66 -0
  201. package/dist/sdk/sessions/runStore.js +335 -0
  202. package/dist/sdk/sessions/runner.d.ts +213 -0
  203. package/dist/sdk/sessions/runner.js +589 -0
  204. package/dist/sdk/sessions/sessions.d.ts +140 -0
  205. package/dist/sdk/sessions/sessions.js +394 -0
  206. package/dist/sdk/sessions/subagentService.d.ts +41 -0
  207. package/dist/sdk/sessions/subagentService.js +247 -0
  208. package/dist/sdk/sessions/subagents.d.ts +50 -0
  209. package/dist/sdk/sessions/subagents.js +68 -0
  210. package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
  211. package/dist/sdk/terminal/accountsMenu.js +392 -0
  212. package/dist/sdk/terminal/cli.d.ts +20 -0
  213. package/dist/sdk/terminal/cli.js +121 -0
  214. package/dist/sdk/terminal/client.d.ts +15 -0
  215. package/dist/sdk/terminal/client.js +126 -0
  216. package/dist/sdk/terminal/control.d.ts +4 -0
  217. package/dist/sdk/terminal/control.js +25 -0
  218. package/dist/sdk/terminal/controller.d.ts +72 -0
  219. package/dist/sdk/terminal/controller.js +351 -0
  220. package/dist/sdk/terminal/hubMenu.d.ts +10 -0
  221. package/dist/sdk/terminal/hubMenu.js +34 -0
  222. package/dist/sdk/terminal/launch.d.ts +5 -0
  223. package/dist/sdk/terminal/launch.js +27 -0
  224. package/dist/sdk/terminal/logs.d.ts +14 -0
  225. package/dist/sdk/terminal/logs.js +59 -0
  226. package/dist/sdk/terminal/piExtension.d.ts +6 -0
  227. package/dist/sdk/terminal/piExtension.js +392 -0
  228. package/dist/sdk/terminal/pluginMenu.d.ts +34 -0
  229. package/dist/sdk/terminal/pluginMenu.js +101 -0
  230. package/dist/sdk/terminal/socket.d.ts +70 -0
  231. package/dist/sdk/terminal/socket.js +256 -0
  232. package/dist/sdk/terminal/standalone.d.ts +18 -0
  233. package/dist/sdk/terminal/standalone.js +146 -0
  234. package/dist/sdk/terminal/terminals.d.ts +176 -0
  235. package/dist/sdk/terminal/terminals.js +767 -0
  236. package/dist/sdk/terminal/trajectory.d.ts +10 -0
  237. package/dist/sdk/terminal/trajectory.js +30 -0
  238. package/dist/sdk/terminal/tui/chrome.d.ts +64 -0
  239. package/dist/sdk/terminal/tui/chrome.js +169 -0
  240. package/dist/sdk/terminal/tui/clipboardFiles.d.ts +11 -0
  241. package/dist/sdk/terminal/tui/clipboardFiles.js +74 -0
  242. package/dist/sdk/terminal/tui/commandPages.d.ts +7 -0
  243. package/dist/sdk/terminal/tui/commandPages.js +63 -0
  244. package/dist/sdk/terminal/tui/commands.d.ts +42 -0
  245. package/dist/sdk/terminal/tui/commands.js +276 -0
  246. package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
  247. package/dist/sdk/terminal/tui/dialogGeometry.js +50 -0
  248. package/dist/sdk/terminal/tui/dialogs.d.ts +75 -0
  249. package/dist/sdk/terminal/tui/dialogs.js +363 -0
  250. package/dist/sdk/terminal/tui/keybindings.d.ts +11 -0
  251. package/dist/sdk/terminal/tui/keybindings.js +49 -0
  252. package/dist/sdk/terminal/tui/list.d.ts +73 -0
  253. package/dist/sdk/terminal/tui/list.js +196 -0
  254. package/dist/sdk/terminal/tui/modeChoices.d.ts +42 -0
  255. package/dist/sdk/terminal/tui/modeChoices.js +70 -0
  256. package/dist/sdk/terminal/tui/modelPicker.d.ts +55 -0
  257. package/dist/sdk/terminal/tui/modelPicker.js +155 -0
  258. package/dist/sdk/terminal/tui/mouse.d.ts +3 -0
  259. package/dist/sdk/terminal/tui/mouse.js +3 -0
  260. package/dist/sdk/terminal/tui/page.d.ts +14 -0
  261. package/dist/sdk/terminal/tui/page.js +1 -0
  262. package/dist/sdk/terminal/tui/pageOverlay.d.ts +27 -0
  263. package/dist/sdk/terminal/tui/pageOverlay.js +145 -0
  264. package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +54 -0
  265. package/dist/sdk/terminal/tui/pages/accountsPage.js +181 -0
  266. package/dist/sdk/terminal/tui/pages/componentsPage.d.ts +47 -0
  267. package/dist/sdk/terminal/tui/pages/componentsPage.js +119 -0
  268. package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +37 -0
  269. package/dist/sdk/terminal/tui/pages/doctorPage.js +145 -0
  270. package/dist/sdk/terminal/tui/pages/hubPage.d.ts +39 -0
  271. package/dist/sdk/terminal/tui/pages/hubPage.js +128 -0
  272. package/dist/sdk/terminal/tui/pages/logPage.d.ts +38 -0
  273. package/dist/sdk/terminal/tui/pages/logPage.js +189 -0
  274. package/dist/sdk/terminal/tui/pages/permissionsPage.d.ts +44 -0
  275. package/dist/sdk/terminal/tui/pages/permissionsPage.js +124 -0
  276. package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +57 -0
  277. package/dist/sdk/terminal/tui/pages/pluginsPage.js +243 -0
  278. package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +55 -0
  279. package/dist/sdk/terminal/tui/pages/settingsPage.js +88 -0
  280. package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +58 -0
  281. package/dist/sdk/terminal/tui/pages/trajectoryPage.js +377 -0
  282. package/dist/sdk/terminal/tui/piAdapter.d.ts +18 -0
  283. package/dist/sdk/terminal/tui/piAdapter.js +48 -0
  284. package/dist/sdk/terminal/tui/planMode.d.ts +2 -0
  285. package/dist/sdk/terminal/tui/planMode.js +2 -0
  286. package/dist/sdk/terminal/tui/questionPicker.d.ts +20 -0
  287. package/dist/sdk/terminal/tui/questionPicker.js +150 -0
  288. package/dist/sdk/terminal/tui/questions.d.ts +19 -0
  289. package/dist/sdk/terminal/tui/questions.js +42 -0
  290. package/dist/sdk/terminal/tui/runtime.d.ts +114 -0
  291. package/dist/sdk/terminal/tui/runtime.js +441 -0
  292. package/dist/sdk/terminal/tui/search.d.ts +22 -0
  293. package/dist/sdk/terminal/tui/search.js +60 -0
  294. package/dist/sdk/terminal/tui/selection.d.ts +16 -0
  295. package/dist/sdk/terminal/tui/selection.js +16 -0
  296. package/dist/sdk/terminal/tui/sessionUi.d.ts +3 -0
  297. package/dist/sdk/terminal/tui/sessionUi.js +30 -0
  298. package/dist/sdk/terminal/tui/settingsModel.d.ts +12 -0
  299. package/dist/sdk/terminal/tui/settingsModel.js +84 -0
  300. package/dist/sdk/terminal/tui/sideQuestion.d.ts +53 -0
  301. package/dist/sdk/terminal/tui/sideQuestion.js +197 -0
  302. package/dist/sdk/terminal/tui/skillInvocation.d.ts +9 -0
  303. package/dist/sdk/terminal/tui/skillInvocation.js +43 -0
  304. package/dist/sdk/terminal/tui/status.d.ts +18 -0
  305. package/dist/sdk/terminal/tui/status.js +67 -0
  306. package/dist/sdk/terminal/tui/theme.d.ts +45 -0
  307. package/dist/sdk/terminal/tui/theme.js +176 -0
  308. package/dist/sdk/terminal/tui/treeModel.d.ts +79 -0
  309. package/dist/sdk/terminal/tui/treeModel.js +483 -0
  310. package/dist/sdk/terminal/tui/treePicker.d.ts +49 -0
  311. package/dist/sdk/terminal/tui/treePicker.js +251 -0
  312. package/dist/sdk/terminal/tui/ui.d.ts +47 -0
  313. package/dist/sdk/terminal/tui/ui.js +148 -0
  314. package/dist/sdk/terminal/tui/workingStatus.d.ts +9 -0
  315. package/dist/sdk/terminal/tui/workingStatus.js +229 -0
  316. package/dist/sdk/tools/askUser.d.ts +6 -0
  317. package/dist/sdk/tools/askUser.js +74 -0
  318. package/dist/sdk/tools/checklist.d.ts +9 -0
  319. package/dist/sdk/tools/checklist.js +54 -0
  320. package/dist/sdk/tools/definitions.d.ts +30 -0
  321. package/dist/sdk/tools/definitions.js +117 -0
  322. package/dist/sdk/tools/dispatch.d.ts +16 -0
  323. package/dist/sdk/tools/dispatch.js +67 -0
  324. package/dist/sdk/tools/harnessTools.d.ts +6 -0
  325. package/dist/sdk/tools/harnessTools.js +20 -0
  326. package/dist/sdk/tools/sessionName.d.ts +7 -0
  327. package/dist/sdk/tools/sessionName.js +31 -0
  328. package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
  329. package/dist/sdk/tools/spawnSubagent.js +49 -0
  330. package/dist/sdk/tools/types.d.ts +48 -0
  331. package/dist/sdk/tools/types.js +1 -0
  332. package/dist/sdk/variant/components.d.ts +34 -0
  333. package/dist/sdk/variant/components.js +230 -0
  334. package/dist/sdk/variant/materialise.d.ts +66 -0
  335. package/dist/sdk/variant/materialise.js +81 -0
  336. package/dist/sdk/variant/migrate.d.ts +4 -0
  337. package/dist/sdk/variant/migrate.js +41 -0
  338. package/dist/sdk/variant/seed.d.ts +20 -0
  339. package/dist/sdk/variant/seed.js +116 -0
  340. package/dist/sdk/variant/store.d.ts +82 -0
  341. package/dist/sdk/variant/store.js +151 -0
  342. package/dist/sdk/variant/surface.d.ts +56 -0
  343. package/dist/sdk/variant/surface.js +81 -0
  344. package/dist/sdk/variant/trust.d.ts +27 -0
  345. package/dist/sdk/variant/trust.js +64 -0
  346. package/dist/sdk/variant/variant.d.ts +71 -0
  347. package/dist/sdk/variant/variant.js +331 -0
  348. package/dist/sdk/web/markdown.d.ts +10 -0
  349. package/dist/sdk/web/markdown.js +66 -0
  350. package/dist/sdk/web/safeRequest.d.ts +34 -0
  351. package/dist/sdk/web/safeRequest.js +175 -0
  352. package/dist/sdk/web/search.d.ts +53 -0
  353. package/dist/sdk/web/search.js +168 -0
  354. package/dist/sdk/web/text.d.ts +2 -0
  355. package/dist/sdk/web/text.js +7 -0
  356. package/dist/sdk/web/tools.d.ts +22 -0
  357. package/dist/sdk/web/tools.js +195 -0
  358. package/dist/sdk/web/turndown-plugin-gfm.d.ts +4 -0
  359. package/dist/sdk/wiki/notes.d.ts +68 -0
  360. package/dist/sdk/wiki/notes.js +297 -0
  361. package/dist/sdk/world/actions.d.ts +23 -0
  362. package/dist/sdk/world/actions.js +31 -0
  363. package/dist/sdk/world/cli.d.ts +12 -0
  364. package/dist/sdk/world/cli.js +166 -0
  365. package/dist/sdk/world/images.d.ts +20 -0
  366. package/dist/sdk/world/images.js +48 -0
  367. package/dist/sdk/world/untrusted.d.ts +12 -0
  368. package/dist/sdk/world/untrusted.js +20 -0
  369. package/dist/sdk/world/world.d.ts +65 -0
  370. package/dist/sdk/world/world.js +80 -0
  371. package/dist/terminal-opentui.js +13612 -0
  372. package/dist/terminal-pi.js +808 -151
  373. package/docs/README.md +22 -0
  374. package/docs/architecture/00-overview.md +159 -0
  375. package/docs/architecture/01-extension-points.md +78 -0
  376. package/docs/architecture/02-sessions-and-runs.md +146 -0
  377. package/docs/architecture/03-variants.md +95 -0
  378. package/docs/architecture/04-prompt.md +102 -0
  379. package/docs/architecture/05-refinement.md +107 -0
  380. package/docs/architecture/06-plugins-and-capabilities.md +93 -0
  381. package/docs/architecture/07-tools-and-gate.md +88 -0
  382. package/docs/architecture/08-memory-and-history.md +94 -0
  383. package/docs/architecture/09-accounts-and-connectors.md +90 -0
  384. package/docs/architecture/10-server-protocol.md +84 -0
  385. package/docs/architecture/11-terminal.md +81 -0
  386. package/docs/architecture/12-storage.md +61 -0
  387. package/docs/architecture/13-world-tools.md +23 -0
  388. package/docs/architecture/README.md +114 -0
  389. package/docs/architecture/proposals/PROP-0001-reporting-section.md +106 -0
  390. package/docs/architecture/proposals/PROP-0002-retain-rollout-workspaces.md +104 -0
  391. package/docs/architecture/proposals/PROP-0003-executor-settings.md +81 -0
  392. package/docs/architecture/proposals/PROP-0004-flexible-reporting-guidance.md +71 -0
  393. package/docs/architecture/proposals/PROP-0005-xharness-cli-name.md +78 -0
  394. package/docs/architecture/proposals/PROP-0006-run-checklist.md +68 -0
  395. package/docs/architecture/proposals/PROP-0007-run-continuation.md +80 -0
  396. package/docs/architecture/proposals/PROP-0008-lessons-from-runs.md +80 -0
  397. package/docs/architecture/proposals/PROP-0009-foundation-and-variants.md +78 -0
  398. package/docs/architecture/proposals/PROP-0010-session-names.md +73 -0
  399. package/docs/architecture/proposals/PROP-0011-doctor.md +63 -0
  400. package/docs/architecture/proposals/PROP-0012-release-baseline.md +56 -0
  401. package/docs/architecture/proposals/README.md +76 -0
  402. package/docs/decisions/ADR-0002-native-subagent-lifecycle.md +49 -0
  403. package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +70 -0
  404. package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +50 -0
  405. package/docs/decisions/ADR-0005-app-provided-oauth-clients.md +54 -0
  406. package/docs/decisions/ADR-0006-opentui-only-terminal.md +47 -0
  407. package/docs/decisions/ADR-0007-reporting-section.md +33 -0
  408. package/docs/decisions/ADR-0008-flexible-reporting-guidance.md +38 -0
  409. package/docs/decisions/ADR-0009-xharness-command.md +38 -0
  410. package/docs/decisions/ADR-0010-lessons-in-the-wiki.md +31 -0
  411. package/docs/decisions/ADR-0011-foundation-and-variants.md +28 -0
  412. package/docs/decisions/ADR-0012-native-session-names.md +34 -0
  413. package/docs/decisions/ADR-0013-doctor.md +27 -0
  414. package/docs/decisions/ADR-0014-public-release-baseline.md +21 -0
  415. package/docs/doctor.md +74 -0
  416. package/docs/experiments/EXP-0001-terminal-input-latency/plan.md +81 -0
  417. package/docs/experiments/EXP-0001-terminal-input-latency/results.md +46 -0
  418. package/docs/experiments/EXP-0002-opentui-typing-latency/plan.md +70 -0
  419. package/docs/experiments/EXP-0002-opentui-typing-latency/results.md +92 -0
  420. package/docs/features/README.md +20 -0
  421. package/docs/features/automations/README.md +41 -0
  422. package/docs/features/cores/README.md +39 -0
  423. package/docs/features/google-harness2/README.md +52 -0
  424. package/docs/features/integrations/README.md +40 -0
  425. package/docs/features/interfaces/README.md +29 -0
  426. package/docs/features/memory/README.md +28 -0
  427. package/docs/releases/1.0.0.md +40 -0
  428. package/docs/releases/README.md +36 -0
  429. package/docs/study/00-index.md +78 -0
  430. package/docs/study/arms/00-matrix.md +20 -0
  431. package/docs/study/arms/01-system-prompt.md +211 -0
  432. package/docs/study/arms/02-tools.md +79 -0
  433. package/docs/study/arms/03-subagents.md +90 -0
  434. package/docs/study/arms/04-skills.md +75 -0
  435. package/docs/study/arms/05-context-management.md +90 -0
  436. package/docs/study/arms/06-memory.md +90 -0
  437. package/docs/study/arms/07-governance.md +71 -0
  438. package/docs/study/arms/08-execution.md +69 -0
  439. package/docs/study/arms/09-observability.md +60 -0
  440. package/docs/study/arms/10-refinement.md +110 -0
  441. package/docs/study/btw-comparison.md +37 -0
  442. package/docs/study/feature-gap-review.md +42 -0
  443. package/docs/study/insights.md +123 -0
  444. package/docs/study/roadmap.md +72 -0
  445. package/docs/study/sources/claude-code.md +44 -0
  446. package/docs/study/sources/deepseek-harness.md +102 -0
  447. package/docs/study/sources/harness2.md +50 -0
  448. package/docs/study/sources/kimi-cli.md +42 -0
  449. package/docs/study/sources/omp.md +93 -0
  450. package/docs/study/sources/opencode.md +43 -0
  451. package/docs/study/sources/openhands.md +46 -0
  452. package/docs/study/sources/smolagents.md +40 -0
  453. package/docs/study/sources/swe-agent.md +34 -0
  454. package/docs/system-prompt-design.md +196 -0
  455. package/docs/terminal-tui.md +473 -56
  456. package/package.json +43 -13
  457. package/docs/evidence/terminal-2026-10-17/120x40-completed-transcript.ansi.gz +0 -0
  458. package/docs/evidence/terminal-2026-10-17/40x20-settings-interaction.ansi.gz +0 -0
  459. package/docs/evidence/terminal-2026-10-17/40x20-settings-keyboard.ansi.gz +0 -0
  460. package/docs/evidence/terminal-2026-10-17/40x20-welcome.ansi.gz +0 -0
  461. package/docs/evidence/terminal-2026-10-17/80x24-approval-0.ansi.gz +0 -0
  462. package/docs/evidence/terminal-2026-10-17/80x24-question.ansi.gz +0 -0
  463. package/docs/evidence/terminal-2026-10-17/verification.json +0 -130
  464. package/docs/evidence/terminal-2026-10-17-followup/120x40-completed-transcript.ansi.gz +0 -0
  465. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-interaction.ansi.gz +0 -0
  466. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-keyboard.ansi.gz +0 -0
  467. package/docs/evidence/terminal-2026-10-17-followup/40x20-welcome.ansi.gz +0 -0
  468. package/docs/evidence/terminal-2026-10-17-followup/80x24-approval-0.ansi.gz +0 -0
  469. package/docs/evidence/terminal-2026-10-17-followup/80x24-plugin-light.ansi.gz +0 -0
  470. package/docs/evidence/terminal-2026-10-17-followup/80x24-question-batch.ansi.gz +0 -0
  471. package/docs/evidence/terminal-2026-10-17-followup/80x24-question.ansi.gz +0 -0
  472. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-approval-0.ansi.gz +0 -0
  473. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-plugin-light.ansi.gz +0 -0
  474. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question-batch.ansi.gz +0 -0
  475. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question.ansi.gz +0 -0
  476. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/verification.json +0 -95
  477. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-approval-0.ansi.gz +0 -0
  478. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-plugin-light.ansi.gz +0 -0
  479. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question-batch.ansi.gz +0 -0
  480. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question.ansi.gz +0 -0
  481. package/docs/evidence/terminal-2026-10-17-followup/global-install/README.md +0 -27
  482. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command-80x24.ansi.gz +0 -0
  483. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command.json +0 -18
  484. package/docs/evidence/terminal-2026-10-17-followup/global-install/verification.json +0 -95
  485. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-80x24.json.gz +0 -0
  486. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-final-80x24.json.gz +0 -0
  487. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-scenario.json +0 -60
  488. package/docs/evidence/terminal-2026-10-17-followup/live-codex/README.md +0 -24
  489. package/docs/evidence/terminal-2026-10-17-followup/live-codex/complete-80x24.ansi.gz +0 -0
  490. package/docs/evidence/terminal-2026-10-17-followup/live-codex/verification.json +0 -57
  491. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24-early.json.gz +0 -0
  492. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24.json.gz +0 -0
  493. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-scenario.json +0 -58
  494. package/docs/evidence/terminal-2026-10-17-followup/omp-supplemental-static.json.gz +0 -0
  495. package/docs/evidence/terminal-2026-10-17-followup/rea-artifacts.json +0 -320
  496. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.json +0 -30
  497. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.md +0 -133
  498. package/docs/evidence/terminal-2026-10-17-followup/reference-source-observations.json +0 -20
  499. package/docs/evidence/terminal-2026-10-17-followup/verification.json +0 -207
  500. package/src/accounts/accounts.test.ts +0 -333
  501. package/src/accounts/accounts.ts +0 -658
  502. package/src/accounts/env.test.ts +0 -95
  503. package/src/accounts/env.ts +0 -338
  504. package/src/accounts/secrets.ts +0 -50
  505. package/src/accounts/store.ts +0 -338
  506. package/src/capabilities/api.ts +0 -75
  507. package/src/capabilities/runSnapshot.ts +0 -59
  508. package/src/capabilities/types.ts +0 -34
  509. package/src/cli.ts +0 -118
  510. package/src/core/bus.ts +0 -34
  511. package/src/core/changes.ts +0 -33
  512. package/src/core/env.ts +0 -27
  513. package/src/core/errors.ts +0 -32
  514. package/src/core/frontmatter.ts +0 -47
  515. package/src/core/fs.test.ts +0 -38
  516. package/src/core/fs.ts +0 -92
  517. package/src/core/index.ts +0 -193
  518. package/src/core/path.test.ts +0 -14
  519. package/src/core/path.ts +0 -79
  520. package/src/core/projects.ts +0 -90
  521. package/src/core/text.ts +0 -39
  522. package/src/harness.ts +0 -312
  523. package/src/hub/catalog.json +0 -123
  524. package/src/hub/cli.ts +0 -59
  525. package/src/hub/hub.test.ts +0 -205
  526. package/src/hub/hub.ts +0 -256
  527. package/src/hub/schema.ts +0 -81
  528. package/src/index.ts +0 -75
  529. package/src/mcp/connections.ts +0 -614
  530. package/src/mcp/manager.ts +0 -130
  531. package/src/mcp/oauth.ts +0 -195
  532. package/src/mcp/scopeMigration.test.ts +0 -79
  533. package/src/mcp/scopeMigration.ts +0 -204
  534. package/src/mcp/service.test.ts +0 -376
  535. package/src/mcp/service.ts +0 -549
  536. package/src/mcp/types.ts +0 -108
  537. package/src/memory/api.test.ts +0 -82
  538. package/src/memory/api.ts +0 -303
  539. package/src/memory/blocks.test.ts +0 -78
  540. package/src/memory/blocks.ts +0 -408
  541. package/src/memory/caller.ts +0 -69
  542. package/src/memory/curation.test.ts +0 -163
  543. package/src/memory/curation.ts +0 -64
  544. package/src/memory/dispatch.ts +0 -59
  545. package/src/memory/facts.test.ts +0 -41
  546. package/src/memory/facts.ts +0 -248
  547. package/src/memory/graph.ts +0 -103
  548. package/src/memory/health.test.ts +0 -130
  549. package/src/memory/health.ts +0 -74
  550. package/src/memory/maintainer.ts +0 -272
  551. package/src/memory/maintenance.test.ts +0 -176
  552. package/src/memory/maintenance.ts +0 -518
  553. package/src/memory/migrate.ts +0 -79
  554. package/src/memory/operations.ts +0 -150
  555. package/src/memory/proposals.test.ts +0 -168
  556. package/src/memory/proposals.ts +0 -584
  557. package/src/memory/recall.test.ts +0 -115
  558. package/src/memory/recall.ts +0 -278
  559. package/src/memory/references.ts +0 -77
  560. package/src/memory/runContext.ts +0 -93
  561. package/src/memory/secrets.ts +0 -6
  562. package/src/memory/store.test.ts +0 -66
  563. package/src/memory/store.ts +0 -385
  564. package/src/memory/wiki.test.ts +0 -47
  565. package/src/memory/wiki.ts +0 -422
  566. package/src/memory/wikiIndex.test.ts +0 -88
  567. package/src/memory/wikiIndex.ts +0 -116
  568. package/src/plugins/api.ts +0 -181
  569. package/src/plugins/attachments.test.ts +0 -84
  570. package/src/plugins/attachments.ts +0 -141
  571. package/src/plugins/builtin.ts +0 -82
  572. package/src/plugins/catalogue.test.ts +0 -254
  573. package/src/plugins/catalogue.ts +0 -251
  574. package/src/plugins/cli.ts +0 -184
  575. package/src/plugins/discover.ts +0 -151
  576. package/src/plugins/firstParty.test.ts +0 -143
  577. package/src/plugins/firstParty.ts +0 -129
  578. package/src/plugins/hooks.test.ts +0 -250
  579. package/src/plugins/hooks.ts +0 -239
  580. package/src/plugins/identity.ts +0 -37
  581. package/src/plugins/install.test.ts +0 -107
  582. package/src/plugins/install.ts +0 -106
  583. package/src/plugins/inventory.ts +0 -123
  584. package/src/plugins/manifest.ts +0 -76
  585. package/src/plugins/plugins.test.ts +0 -205
  586. package/src/plugins/plugins.ts +0 -189
  587. package/src/plugins/proposal.ts +0 -121
  588. package/src/plugins/runtime.test.ts +0 -40
  589. package/src/plugins/runtime.ts +0 -82
  590. package/src/plugins/trust.ts +0 -142
  591. package/src/plugins/types.ts +0 -149
  592. package/src/prompt/compile.test.ts +0 -261
  593. package/src/prompt/compile.ts +0 -732
  594. package/src/server/methods.ts +0 -349
  595. package/src/server/remote.ts +0 -77
  596. package/src/server/rpc.ts +0 -116
  597. package/src/server/serve.ts +0 -28
  598. package/src/server/server.test.ts +0 -174
  599. package/src/sessions/approvals.ts +0 -118
  600. package/src/sessions/contracts.ts +0 -336
  601. package/src/sessions/conversation.test.ts +0 -177
  602. package/src/sessions/extensionSession.test.ts +0 -74
  603. package/src/sessions/extensionUi.test.ts +0 -65
  604. package/src/sessions/extensionUi.ts +0 -102
  605. package/src/sessions/history.ts +0 -51
  606. package/src/sessions/lineageJoin.ts +0 -75
  607. package/src/sessions/policy.ts +0 -36
  608. package/src/sessions/pricing.ts +0 -60
  609. package/src/sessions/questionBatches.test.ts +0 -110
  610. package/src/sessions/reasoningSummaries.ts +0 -59
  611. package/src/sessions/registry.ts +0 -381
  612. package/src/sessions/runIndex.ts +0 -99
  613. package/src/sessions/runStore.test.ts +0 -152
  614. package/src/sessions/runStore.ts +0 -332
  615. package/src/sessions/runner.ts +0 -604
  616. package/src/sessions/runtimeResources.test.ts +0 -61
  617. package/src/sessions/sessions.test.ts +0 -549
  618. package/src/sessions/sessions.ts +0 -339
  619. package/src/skills/registry.test.ts +0 -104
  620. package/src/skills/registry.ts +0 -413
  621. package/src/terminal/accountsMenu.test.ts +0 -225
  622. package/src/terminal/accountsMenu.ts +0 -382
  623. package/src/terminal/cli.ts +0 -149
  624. package/src/terminal/client.ts +0 -74
  625. package/src/terminal/control.test.ts +0 -23
  626. package/src/terminal/control.ts +0 -23
  627. package/src/terminal/controller.ts +0 -291
  628. package/src/terminal/hubMenu.ts +0 -24
  629. package/src/terminal/launch.test.ts +0 -25
  630. package/src/terminal/launch.ts +0 -48
  631. package/src/terminal/piExtension.lifecycle.test.ts +0 -55
  632. package/src/terminal/piExtension.ts +0 -259
  633. package/src/terminal/pluginControl.test.ts +0 -146
  634. package/src/terminal/pluginMenu.ts +0 -112
  635. package/src/terminal/socket.test.ts +0 -71
  636. package/src/terminal/socket.ts +0 -232
  637. package/src/terminal/standalone.test.ts +0 -167
  638. package/src/terminal/standalone.ts +0 -153
  639. package/src/terminal/terminal.test.ts +0 -399
  640. package/src/terminal/terminals.ts +0 -553
  641. package/src/terminal/tui/application.test.ts +0 -114
  642. package/src/terminal/tui/application.ts +0 -491
  643. package/src/terminal/tui/commands.test.ts +0 -218
  644. package/src/terminal/tui/commands.ts +0 -361
  645. package/src/terminal/tui/dialogs.ts +0 -301
  646. package/src/terminal/tui/editor.test.ts +0 -84
  647. package/src/terminal/tui/editor.ts +0 -79
  648. package/src/terminal/tui/keybindings.test.ts +0 -22
  649. package/src/terminal/tui/keybindings.ts +0 -50
  650. package/src/terminal/tui/piAdapter.ts +0 -62
  651. package/src/terminal/tui/presentation.test.ts +0 -79
  652. package/src/terminal/tui/questions.test.ts +0 -41
  653. package/src/terminal/tui/questions.ts +0 -47
  654. package/src/terminal/tui/runtime.socket.test.ts +0 -104
  655. package/src/terminal/tui/runtime.test.ts +0 -215
  656. package/src/terminal/tui/runtime.ts +0 -388
  657. package/src/terminal/tui/sessionUi.ts +0 -24
  658. package/src/terminal/tui/settings.test.ts +0 -150
  659. package/src/terminal/tui/settings.ts +0 -188
  660. package/src/terminal/tui/status.test.ts +0 -70
  661. package/src/terminal/tui/status.ts +0 -109
  662. package/src/terminal/tui/theme.ts +0 -174
  663. package/src/terminal/tui/tools.test.ts +0 -145
  664. package/src/terminal/tui/tools.ts +0 -142
  665. package/src/terminal/tui/transcript.test.ts +0 -25
  666. package/src/terminal/tui/transcript.ts +0 -124
  667. package/src/terminal/tui/ui.test.ts +0 -313
  668. package/src/terminal/tui/ui.ts +0 -166
  669. package/src/terminal/tui/welcome.ts +0 -102
  670. package/src/tools/askUser.test.ts +0 -69
  671. package/src/tools/askUser.ts +0 -59
  672. package/src/tools/definitions.ts +0 -187
  673. package/src/tools/maintenance.ts +0 -24
  674. package/src/tools/memoryTools.ts +0 -22
  675. package/src/tools/pluginPropose.ts +0 -41
  676. package/src/tools/registryWrite.test.ts +0 -101
  677. package/src/tools/registryWrite.ts +0 -182
  678. package/src/tools/spawnSubagent.ts +0 -92
  679. package/src/tools/types.ts +0 -39
  680. package/src/web/safeRequest.ts +0 -171
  681. package/src/web/text.ts +0 -53
  682. package/src/web/tools.ts +0 -134
  683. package/src/web/web.test.ts +0 -141
@@ -0,0 +1,68 @@
1
+ ---
2
+ id: PROP-0006
3
+ title: A run checklist the model writes, recorded as a run event
4
+ status: Implemented
5
+ created: 2026-10-22
6
+ updated: 2026-10-22
7
+ affects: [02-sessions-and-runs.md, 06-plugins-and-capabilities.md, 07-tools-and-gate.md, 10-server-protocol.md]
8
+ ---
9
+
10
+ # PROP-0006: A run checklist the model writes, recorded as a run event
11
+
12
+ ## Problem
13
+
14
+ A run has no structured record of progress. `goal` on a run is opaque text, and plan mode ends
15
+ with a `<proposed_plan>` block that lives only in message text (`sessions/planMode.ts`). An
16
+ application that wants to show "step 3 of 5", and a later run that wants to pick up where an
17
+ earlier one stopped, can only read prose. Every studied peer with long work has a model-written
18
+ list for this: deepseek-harness `todo_write` (whole-list replace, three statuses, a log-only
19
+ session event, replay projection), OpenCode `todowrite`, and Claude Code's descendant of it.
20
+ Gap #2 of `docs/study/feature-gap-review.md`.
21
+
22
+ ## Affected rules
23
+
24
+ - 02 Contracts, the run-event list (`runEventTypeSchema`).
25
+ - 07 The list of harness tools ("Harness tools: `history_search`, … `ask_user`").
26
+ - 06 `HARNESS_PLUGINS` ("`pi`, `harness`, `subagents`, `wiki`, `history`, `ask-user`, `connected-apps`").
27
+ - INV-PLG-5: anything the model can see is declared by a plugin.
28
+ - INV-BND-2: no application concept — the tool is named "checklist", not "task" or "todo list
29
+ of tasks".
30
+
31
+ ## Proposal
32
+
33
+ - New run event `checklist.updated`, payload `{ items: { text, status }[] }`, `status` one of
34
+ `pending`, `in_progress`, `completed`; at most 50 items of 1–500 characters. The latest event is
35
+ the whole checklist (last write wins); items have no ids.
36
+ - New harness tool `checklist_write` (`tools/checklist.ts`), given with `ask_user` whenever
37
+ `harnessTools` is not `false`. It emits through the live run, so the event is validated,
38
+ persisted and then relayed (INV-RUN-3). It is `readOnly` for the gate: it changes only the
39
+ run's own record, so plan mode allows it. Its description carries the usage rules (three or
40
+ more steps, exactly one `in_progress`, complete immediately), following "tool interfaces are
41
+ where public instruction lives" (study insight 4).
42
+ - New built-in plugin `checklist` declares the tool.
43
+ - `checklistOf(events)` projects the latest list; the server exposes it as `runs.checklist`.
44
+ - Terminal sessions do not get the tool yet.
45
+
46
+ ## Alternatives
47
+
48
+ - **A side file `runs/<id>/checklist.json`.** A new writer under `runs/<id>/` (INV-RUN-6) and a
49
+ second source of truth beside the events. Rejected; the event log already replays.
50
+ - **Parse `<proposed_plan>`.** Only plan mode produces it, and it carries no status.
51
+ - **Leave it to the application as a tool provider.** Every application would rebuild the same
52
+ generic tool, and continuation (PROP-0007) could not read it. Do nothing was rejected for the
53
+ same reason.
54
+
55
+ ## Consequences
56
+
57
+ - Applications see one more event kind; hosts that validate event types must accept it.
58
+ - One more tool in every session's default list, after `ask_user`.
59
+
60
+ ## Migration
61
+
62
+ None: old runs have no `checklist.updated` events and read as an empty list. Removing the tool
63
+ later leaves old events readable.
64
+
65
+ ## Checks
66
+
67
+ `tools/checklist.test.ts`, `sessions/sessions.test.ts` (default list, plan mode, `harnessTools:
68
+ false`), `plugins/catalogue.test.ts`, `server/server.test.ts` (`runs.checklist`).
@@ -0,0 +1,80 @@
1
+ ---
2
+ id: PROP-0007
3
+ title: Continue a stopped run as a new run with the same pins
4
+ status: Implemented
5
+ created: 2026-10-22
6
+ updated: 2026-10-22
7
+ affects: [INV-RUN-4, INV-RUN-10, 00-overview.md, 02-sessions-and-runs.md, 10-server-protocol.md]
8
+ ---
9
+
10
+ # PROP-0007: Continue a stopped run as a new run with the same pins
11
+
12
+ ## Problem
13
+
14
+ When the process stops mid-run, `open` marks the run `interrupted` (`markInterruptedRuns`) and
15
+ reports only a count. An application that wants to carry on has to:
16
+
17
+ - find the interrupted runs itself;
18
+ - locate the native history and pass `resume { sessionFile, nativeSessionId }`;
19
+ - remember the account, tree version and capability set the run had, or risk running on a
20
+ different one (INV-RUN-1 is per run, not per continuation);
21
+ - and the model is told nothing: it does not know it was cut off, which tool call may have half
22
+ happened, or which approval was never answered.
23
+
24
+ Gap #4 of `docs/study/feature-gap-review.md`. Every studied peer keeps the same rule as this
25
+ harness — a restart never silently restarts model work — and puts continuation on a durable log
26
+ plus an explicit request (deepseek-harness's session log and checkpoints, OpenHands' requeue in its
27
+ automation layer).
28
+
29
+ ## Affected rules
30
+
31
+ - **INV-RUN-4** "A restarted harness never restarts model work. On `open`, runs left active are
32
+ marked `interrupted` unless another live process owns them (`owner.json`). Recovery of a
33
+ subagent needs the same account, caller, working folder and history branch."
34
+ - **INV-RUN-10** lists the runs that may not carry an initial Bash command.
35
+ - 02 Contracts; 10 `runs.*`, `sessions.run`; 00 lifecycle step 2 (`Recovery`).
36
+
37
+ ## Proposal
38
+
39
+ - INV-RUN-4 keeps its first sentence and gains: continuing is always a new run the application
40
+ asks for with `continueFrom`; it pins the earlier run's account, tree version and capability
41
+ set, and the earlier run's record is never reopened.
42
+ - `Recovery.interruptedRunIds: string[]` beside the existing count.
43
+ - `continuationOf(root, runId, sessionDir?)` → `Continuation` (`sessions/continuation.ts`), served
44
+ as `runs.continuation`. It is a projection of what is already stored: `run.json`,
45
+ `events.jsonl` (checklist from PROP-0006, pending decisions, last tool), `capabilities.json`,
46
+ `subagents.json`, and the native history in `sessionDir`. No new file is written.
47
+ - `SessionRunInput.continueFrom` (run id): the run is refused with `continuation_unavailable` when
48
+ the earlier run cannot be continued, and with `continuation_mismatch` when the caller names a
49
+ different session, history, account or tree. Otherwise the input is filled from the earlier
50
+ run and a dynamic `continuation` section (order 26, budget 2000) tells the model where it
51
+ stopped, what its checklist was, which tool call's effect is unknown, and what to ask again.
52
+ It is a context update, never the stable prefix (INV-PRM-2), and is withdrawn on the next run.
53
+ - INV-RUN-10 adds "continuing" to the runs that may not carry an initial Bash command.
54
+
55
+ No application concept is named. The requeue policy — which interrupted runs to continue, when,
56
+ and whether to ask a person — stays with the application.
57
+
58
+ ## Alternatives
59
+
60
+ - **Restart interrupted runs on `open`.** Breaks INV-RUN-4, spends tokens nobody asked for, and
61
+ repeats side effects. Rejected.
62
+ - **Record the history file path in `run.json`.** Would remove the `sessionDir` argument, but
63
+ changes the stored record; the caller already owns and passes `sessionDir`.
64
+ - **Do nothing.** Each application re-derives the pins, and the model resumes blind.
65
+
66
+ ## Consequences
67
+
68
+ - Hosts see one more `Recovery` field, one more method, one more `sessions.run` input and two new
69
+ error codes.
70
+ - A continued run is an ordinary run with `resumedFromRunId` set.
71
+
72
+ ## Migration
73
+
74
+ None. Runs interrupted before this change can be continued too: everything is derived from what
75
+ was already stored.
76
+
77
+ ## Checks
78
+
79
+ `sessions/sessions.test.ts` ("continuing a run that stopped"), `sessions/runStore.test.ts` (ids
80
+ returned), `server/server.test.ts` (`runs.continuation`), `npm run prove` (startup changed).
@@ -0,0 +1,80 @@
1
+ ---
2
+ id: PROP-0008
3
+ title: Opt-in lessons from finished runs, kept in the Wiki
4
+ status: Implemented
5
+ created: 2026-10-22
6
+ updated: 2026-10-22
7
+ affects: [INV-MEM-2, 02-sessions-and-runs.md, 06-plugins-and-capabilities.md, 08-memory-and-history.md, 12-storage.md, ADR-0010]
8
+ ---
9
+
10
+ # PROP-0008: Opt-in lessons from finished runs, kept in the Wiki
11
+
12
+ ## Problem
13
+
14
+ The harness learns from evidence only inside refinement: the experience library holds a cue and
15
+ a lesson per adopted tree, written by a reflector that never sees an answer (page 05). Ordinary
16
+ runs teach nothing to later ones unless an agent with `wiki_write` decides to write a note. Gap
17
+ #5 of `docs/study/feature-gap-review.md`: OMP runs background extraction and consolidation into
18
+ `MEMORY.md` and lessons (capped at about 100 × 2,000 characters); harness² keeps lessons with a
19
+ strict shape (cue = shape of situation, lesson = checkable operation, `NO_ENTRY` when the record
20
+ shows no contrast, never task facts). Nothing in the Wiki is written in the background today.
21
+
22
+ ## Affected rules
23
+
24
+ - **INV-MEM-2** "The harness is the only writer of the Wiki and of run records. An application
25
+ reads them and writes notes only through harness methods (`wiki.*`)." It does not name the
26
+ writers inside the harness; this adds one.
27
+ - **INV-MEM-1** (unchanged, relied on): the Wiki is reference material, not instructions.
28
+ - **INV-TREE-1** (unchanged, relied on): only the tree shapes an agent.
29
+ - **INV-REF-1, INV-REF-4, INV-REF-5** (unchanged, borrowed): answer-free evidence, never acting in
30
+ the world, file tools only on a copy of the evidence.
31
+ - 02 triggers the harness reads; 06 first-party plugins; 12 the data layout.
32
+
33
+ ## Proposal
34
+
35
+ - A first-party plugin `lessons`, off by default, with settings `minToolCalls` (4), `maxLessons`
36
+ (100) and `maxChars` (2,000). It loads no Pi code; its contribution in a run's frozen
37
+ capability set is what switches reflection on for that run.
38
+ - `Lessons` (`history/lessons.ts`) listens to the harness's own run listener. A completed,
39
+ top-level run that is not a `probe`, `improver` or `reflection` run is queued; one reflection
40
+ runs at a time; the queue is in memory only.
41
+ - The reflection is a `PiImprover` session with trigger `reflection`, read-only file tools, the
42
+ finished run's account and model, and medium effort. The gate refuses whatever would need a
43
+ person in a `reflection` run, as it does for refinement.
44
+ - The reply is parsed with refinement's `parseExperience`. A lesson is kept as
45
+ `wiki/library/lessons/<slug>.md` through `notes.write` (actor `reflection`), so it is versioned
46
+ and announced like any other note (INV-MEM-3, INV-MEM-4). `SAME <path>` adds a source run to an
47
+ existing lesson instead of a duplicate. At the cap nothing is written and nothing is evicted.
48
+ - The dynamic `wiki` pointer says how many lessons exist, so agents know to search them.
49
+ - INV-MEM-2 gains: "Inside the harness, the Wiki is written by `wiki_write`, by `wiki.*` methods,
50
+ and by `Lessons` (actor `reflection`, only under `library/lessons/`, only while the `lessons`
51
+ plugin is on for the run's caller)."
52
+
53
+ ## Alternatives
54
+
55
+ - **Write lessons into the refinement library.** That library is keyed by tree scope and task
56
+ area and stores whole trees (INV-REF-7); an ordinary run has neither a candidate tree nor an
57
+ area. Rejected.
58
+ - **Write lessons into the tree's c3 memory.** Would change instructions without `adopt`
59
+ (INV-REF-6, INV-TREE-1). Rejected.
60
+ - **A plugin hook (`history.run.ended`).** Hooks are told, never asked, and cannot run a model
61
+ (INV-PLG-7). Rejected.
62
+ - **On by default.** Spends tokens after every run. The user chose opt-in.
63
+ - **Do nothing.** Leaves gap #5 to each application.
64
+
65
+ ## Consequences
66
+
67
+ - Hosts see reflection runs (trigger `reflection`) in run lists and recall, like improver runs.
68
+ - When switched on, each qualifying run costs one extra short model session on its own account.
69
+ - A new folder `<data root>/reflection/` holds reflection sessions' native history and replies.
70
+
71
+ ## Migration
72
+
73
+ None. Switching the plugin off stops new reflections; kept lessons stay as ordinary notes that a
74
+ person may edit or remove.
75
+
76
+ ## Checks
77
+
78
+ `history/lessons.test.ts` (filters, `NO_ENTRY`, `SAME`, caps, credential and length refusals,
79
+ queue and close), `prompt/compile.test.ts` (pointer), `plugins/catalogue.test.ts`,
80
+ `terminal/pluginControl.test.ts`. No test makes a model request (INV-BND-6).
@@ -0,0 +1,78 @@
1
+ ---
2
+ id: PROP-0009
3
+ title: Name the fixed half the foundation and the mutating half the variant
4
+ status: Accepted
5
+ created: 2026-10-22
6
+ updated: 2026-10-22
7
+ affects: [INV-TREE-1..7 (renamed INV-VAR-1..7), INV-BND-4, 00-overview.md, 03-variants.md, 05-refinement.md, 10-server-protocol.md, 12-storage.md, ADR-0011]
8
+ ---
9
+
10
+ # PROP-0009: Name the fixed half the foundation and the mutating half the variant
11
+
12
+ Accepted by the user's request (2026-10-22): document the harness so that the part that is fixed
13
+ is called the **foundation** and the part that mutates is called a **variant**, in code, storage
14
+ and protocol as well as in prose.
15
+
16
+ ## Problem
17
+ "Harness" meant two things: the package, and the editable "harness tree" that refinement
18
+ improves. A sentence such as "refinement changes the harness" did not say whether the compiler and
19
+ the gate could move. The answer is no, but nothing in the spec said so as a rule, and code, data
20
+ folders and server methods all carried the ambiguous word (`harnesses/`, `harnesses.*`,
21
+ `HarnessChoice`, `harnessScope`).
22
+
23
+ ## Affected rules
24
+ - `INV-TREE-1`…`INV-TREE-7` (page 03): renamed `INV-VAR-1`…`INV-VAR-7`; meaning unchanged.
25
+ - `INV-BND-4`: "Trees, the prompt compiler and Wiki notes are synchronous" now says variants.
26
+ - New `INV-FND-1` and `INV-FND-2` (below).
27
+ - The server method group `harnesses.*` (page 10) and the data layout (page 12).
28
+
29
+ ## Proposal
30
+ 1. **Vocabulary.** *Foundation*: the fixed half (Pi hookup, compiler, sessions and the run
31
+ recorder, gate, accounts, trust, the surface and validator, the refinement method, the extension
32
+ points, the protocol). *Variant*: one tree of eight components (c1–c8) for one scope. *Head*,
33
+ *version*, *lineage*, *candidate* and *adopt* keep their meaning and now qualify a variant. The
34
+ glossary is in the spec index.
35
+ 2. **New invariants.**
36
+ - `INV-FND-1` Only a variant mutates. No edit, improver session or adoption changes foundation
37
+ code, the surface, the validator or an invariant.
38
+ - `INV-FND-2` A variant changes only by committing a new validated version; refinement moves a
39
+ head only when a person adopts. There is no other door.
40
+ 3. **Code.** `src/tree/` becomes `src/variant/`. `Tree`→`Variant`, `HarnessChoice`→`VariantChoice`,
41
+ `TreeTrust`→`VariantTrust`, `readTree`/`writeTree`→`readVariant`/`writeVariant`,
42
+ `seedTree`→`seedVariant`, `RunRecord.harnessScope|harnessVersion`→`variantScope|variantVersion`,
43
+ `Materialised.tree`→`Materialised.files`, the `sessions.run` input `harness`→`variant`,
44
+ `ContextPack.harness`→`variant`, source kind `harness`→`variant`, the built-in plugin `harness`
45
+ (title Harness)→`variant` (title Variant), error code `harness_invalid`→`variant_invalid`.
46
+ Unchanged: `RunRecord.harness` (the engine name, `pi`), `PI_SURFACE`, `SurfaceSpec`, the `harness.*`
47
+ server group (status and methods of the whole harness), and the Pi session-tree UI names
48
+ (`SessionTreeNode`, `navigateTree`, `/tree`).
49
+ 4. **Storage.** `harnesses/<scope>/`→`variants/<scope>/`, `versions/<fp>/tree/`→`…/variant/`,
50
+ `tree-plugin-trust.json`→`variant-plugin-trust.json`, library `harnesses/<task>/harness/`→
51
+ `variants/<task>/variant/`, refinement `refine/<id>/harnesses/`→`variants/`.
52
+ 5. **Protocol.** `harnesses.*`→`variants.*`, notice `harnesses.changed`→`variants.changed`, the
53
+ `harness` parameter of `sessions.run`, `context.compile`, `plugins.inventory`→`variant`, the
54
+ `tree` parameter and field of the former `harnesses.*` methods→`variant`, `treeDir`→`variantDir`.
55
+ 6. **Deliberate exception.** The improver prompts and the evidence folder's `harness/`,
56
+ `base_harness/` names keep the Harness² paper's wording. They are method text; changing them
57
+ would change refinement and its tests (`INV-REF-3`).
58
+
59
+ ## Alternatives
60
+ - *Docs only, keep the names.* Cheaper, but the ambiguity stays in every API a host reads.
61
+ - *Rename components, not the tree.* Versions and adoption always act on a whole tree, so a
62
+ component-level "variant" would not match how the system works.
63
+ - *Do nothing.*
64
+
65
+ ## Consequences
66
+ Breaking for hosts: package version 5.0.0. Hosts must call `variants.*`, pass `variant` instead of
67
+ `harness`, read `variantScope`/`variantVersion`, and use plugin id `variant`. No aliases are kept.
68
+ Stored data moves on `open` (below); the prompt text and its stable prefix do not change.
69
+
70
+ ## Migration
71
+ `open()` runs `migrateVariantLayout` (idempotent; never overwrites) and the trust file moves when
72
+ `VariantTrust` is created. Run records written with `harnessScope`/`harnessVersion` still load
73
+ (`upgradeRunRecord`). Finished refinement records under `harnesses/` stay readable and adoptable.
74
+ To undo, rename the folders back and use the previous release.
75
+
76
+ ## Checks
77
+ `npm run typecheck`, `npm test` (including `variant/migrate.test.ts`), `npm run prove`, the demo
78
+ refinement, and the App's and Evaluation's checks after they adopt the new names.
@@ -0,0 +1,73 @@
1
+ ---
2
+ id: PROP-0010
3
+ title: Agent-managed native session names
4
+ status: Implemented
5
+ created: 2026-10-22
6
+ updated: 2026-10-22
7
+ affects: [02-sessions-and-runs.md, 04-prompt.md, 07-tools-and-gate.md, 11-terminal.md]
8
+ ---
9
+
10
+ # PROP-0010: Agent-managed native session names
11
+
12
+ ## Problem
13
+ Agents cannot currently name their sessions. Pi already stores a native session name,
14
+ and the terminal exposes manual `/name`, but the working line does not show the name.
15
+
16
+ ## Affected rules
17
+ INV-PRM-2: "Changing state never enters" the stable system prompt.
18
+ INV-GATE-1: "Every tool call of every run passes the gate."
19
+ INV-TUI-2: "Pi owns the execution runtime, native history and rich content components."
20
+ The tool inventory and plan-safe metadata operations gain `session_name`.
21
+
22
+ ## Proposal
23
+ Provide `session_name({ name: string })` in terminal and embedded Harness sessions,
24
+ subject to capabilities and the normal gate. Name meaningful work early; revise when its
25
+ overall objective changes, including a manually assigned name. Greetings need no name.
26
+ Agent names are short imperative sentences, at most six whitespace-separated words.
27
+ Normalize whitespace; reject blank names, non-whitespace control characters and terminal
28
+ escapes, or more than six words. Identical names do not append another history entry.
29
+ Plan mode permits naming as session metadata maintenance. Disabled Harness tools and host
30
+ restrictions continue to apply. Each session, including a child, names only itself.
31
+ Pi's native session-info entries are the sole persistence mechanism. No separate model
32
+ request, new run-event schema, or new host RPC is introduced. The terminal renders
33
+ ` – <name>` after metrics on the active and retained completion line, outside the verb's
34
+ shimmer, and truncates at the terminal edge. Current names never enter the stable prompt.
35
+
36
+ ## Alternatives
37
+ Do nothing leaves sessions unnamed. A separate title-generation model request adds latency
38
+ and token cost. A Harness side file duplicates Pi's existing authoritative metadata.
39
+
40
+ ## Consequences
41
+ The foundation gains a tool and stable naming guidance. Manual names remain unrestricted;
42
+ agent-submitted names follow the six-word limit. Model compliance determines whether and
43
+ when the tool is called. An embedding host need not change its UI or protocol.
44
+
45
+ ## Migration
46
+ None. Existing native histories and manual names remain valid; names survive reopen and
47
+ continuation through Pi. Removing the tool leaves stored names readable.
48
+
49
+ ## Checks
50
+ Unit and integration tests cover validation, both execution paths, policy, capability and
51
+ plan handling, persistence, isolation and working-line rendering. Run Harness typecheck,
52
+ tests and standalone proof, plus the App compatibility checks.
53
+
54
+ ## Review
55
+ The user selected all Harness sessions, agent revisions of manual names, and early naming
56
+ with objective-change revisions, then approved implementation of the presented plan.
57
+
58
+ ## Implementation and verification
59
+ Implemented in the working tree; see
60
+ [ADR-0012](../../decisions/ADR-0012-native-session-names.md).
61
+
62
+ - Harness full suite: 825 passed, 3 skipped; subsequent affected suites passed after the
63
+ final prompt-availability and narrow-line corrections (151 passed, 2 skipped; then 36
64
+ display/application tests passed). Harness typecheck and the final bundle build passed.
65
+ - Standalone startup proof passed. A real Pi SDK / OpenTUI PTY against a loopback provider
66
+ completed two naming calls at both 80 and 40 columns. Screen parsing verified the full
67
+ name at 80 columns and right-side name truncation with intact metrics at 40 columns.
68
+ Fixtures used disposable account/history folders and no external model or user credentials.
69
+ - App typecheck, UI check, and Rust tests passed (240 passed, 1 ignored). App frontend tests
70
+ reported unrelated guide-link/heading failures and a streaming performance threshold.
71
+ The sidecar suite reported existing tree-to-variant API/import mismatches; layer checks
72
+ reported browser/doctor tool-name violations. These checks are not an all-clear for the
73
+ App workspace, and no App source was changed for this feature.
@@ -0,0 +1,63 @@
1
+ ---
2
+ id: PROP-0011
3
+ title: Readiness diagnostics and explicit live probes
4
+ status: Accepted
5
+ created: 2026-10-22
6
+ updated: 2026-10-22
7
+ affects: [INV-EXT-1, INV-EXT-4, INV-GATE-1, INV-TUI-4, 01-extension-points.md, 07-tools-and-gate.md, 09-accounts-and-connectors.md, 10-server-protocol.md, 11-terminal.md]
8
+ ---
9
+
10
+ # PROP-0011: Readiness diagnostics and explicit live probes
11
+
12
+ ## Problem
13
+ Account status and tool registration do not establish that the selected model or backend works.
14
+ The user approved the `/doctor` implementation plan on 2026-10-22: full readiness coverage,
15
+ terminal plus reusable API, offline inspection by default, selected live probes, pinned account,
16
+ and isolated browser/computer interaction only.
17
+
18
+ ## Affected rules
19
+ - INV-EXT-1: “There are seven extension points.” Optional diagnostic callbacks extend tool providers, not a new surface.
20
+ - INV-EXT-4: “Each Node extension point has a protocol equivalent”. Remote tool registration gains diagnostic metadata and a host readiness callback.
21
+ - INV-GATE-1: “Every tool call of every run passes the gate.” Live probes use that gate and capability resolution.
22
+ - INV-TUI-4: changes through the session socket require the terminal control key. All terminal diagnostics require it, including reads and cancellation.
23
+
24
+ ## Proposal
25
+ A foundation `Doctor` owns in-memory jobs. `doctor.start`, `doctor.read`, and `doctor.cancel` expose
26
+ structured, validated reports. `/doctor` uses these through its protected terminal controller.
27
+ Readiness and live verification are distinguished on every finding. No automatic repair occurs.
28
+
29
+ Offline account inspection uses a non-refreshing Pi runtime and read-only credential store. It
30
+ never verifies credentials remotely. Live model probes make one bounded synthetic request using
31
+ the selected account/model and write normal usage events on a separate diagnostic run.
32
+
33
+ Tool providers may attach `diagnostics(context)` to their existing callable function. Each check
34
+ supplies readiness inspection and optionally a declared live probe. `WorldPart` forwards the same
35
+ metadata through the existing provider. Remote registrations declare checks and optional single-tool
36
+ probe recipes; `tools.diagnose` returns readiness data, and probe recipes invoke registered tools
37
+ through the normal gate. Providers without diagnostics remain unverified.
38
+
39
+ Live tool probes intersect requested and current capabilities, pass the existing scope/authorization
40
+ gate, and never satisfy a required separate per-call approval through batch confirmation. Such calls
41
+ report blocked. MCP diagnostics connect/list only. Browser diagnostics use a disposable launch and
42
+ offline synthetic page; configured CDP attachment is blocked. Computer interaction remains blocked
43
+ when a host cannot provide a disposable test surface.
44
+
45
+ ## Alternatives
46
+ Keep separate status screens (no unified evidence); make every check live (costs and side effects by
47
+ default); add an eighth host surface (unnecessary alongside tool providers); infer health from
48
+ registration (insufficient evidence).
49
+
50
+ ## Consequences
51
+ Public API and protocol gain job methods and report schemas; provider callbacks remain optional.
52
+ Jobs retain partial findings, support cancellation, and are cleared at shutdown. Existing runs and
53
+ stored settings need no migration. Live diagnostics retain real run records and usage; reports
54
+ contain redacted summaries and no raw tool payloads.
55
+
56
+ ## Migration
57
+ None. Existing provider functions remain valid. This change does not relocate tool backends.
58
+ The in-progress World/browser implementation's documentation mismatch is recorded as known drift.
59
+
60
+ ## Checks
61
+ Focused service, browser, terminal-page, scope/gate, protocol and host-adapter tests; Harness
62
+ `typecheck`, `test`, `prove`; App `typecheck`, `test`, `check:layers`, `check:ui`, and Rust tests.
63
+ Real provider or interaction probes require explicit consent and are not part of automated tests.
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: PROP-0012
3
+ title: Public 1.0.0 distribution and generic browser ownership
4
+ status: Accepted
5
+ created: 2026-10-22
6
+ updated: 2026-10-22
7
+ affects: [INV-BND-2, 00-overview.md, 07-tools-and-gate.md, 11-terminal.md]
8
+ ---
9
+
10
+ # PROP-0012: Public 1.0.0 distribution and generic browser ownership
11
+
12
+ ## Problem
13
+ The approved release plan requests @xingular/harness@1.0.0 as a new stable baseline, including
14
+ completed capabilities. Development manifests used 5.0.0 and existing tags use several higher
15
+ versions. Source-only exports fail in ordinary Node consumers. The implemented generic browser
16
+ also disagrees with the earlier categorical ownership rule (known drift D-9).
17
+
18
+ ## Affected rules
19
+ INV-BND-2 currently forbids naming “browser, computer use” as application concepts. A generic
20
+ isolated browser is usable unchanged by other hosts. The App's shared WebKit workspace, tab
21
+ sharing, downloads/uploads, window management and computer bridge remain application behavior.
22
+
23
+ ## Proposal
24
+ Keep the seven extension points. The foundation may provide generic web/browser capabilities,
25
+ with one isolated browser per session, the normal tool gate and no application state. The App
26
+ owns browser UI, user tab-sharing policy, OS integration and computer tools. The layer check
27
+ allows only the generic backend's declared tool catalog; App-only tools remain prohibited.
28
+
29
+ Publish compiled ESM modules and declarations under the current SDK and subpath interfaces,
30
+ retaining the xharness executable and Bun frontend. Include required resources, licenses and
31
+ notices; exclude tests, source-only build tools and scratch/reference folders. Use Apache-2.0
32
+ for original code, preserving upstream notices. Package version 1.0.0 is an intentional reset,
33
+ not a claim that it sorts above old versions. Preserve old tags and registry versions; set latest
34
+ explicitly after approval and never reuse an existing published version.
35
+
36
+ ## Alternatives
37
+ Keep source-only distribution; postpone the stable baseline; move the reusable browser into
38
+ one host; invent an eighth extension point. These fail the approved release requirements or
39
+ reduce reuse unnecessarily.
40
+
41
+ ## Consequences and migration
42
+ Node consumers can import the package without a TypeScript loader. Current source hosts keep
43
+ their sibling-source integration. Hosts migrate harnesses.* to variants.*, and harness/tree wire
44
+ fields to variant/files as specified in PROP-0009. Existing stored data continues through the
45
+ existing non-overwriting migration. Users on higher historic versions must request 1.0.0
46
+ explicitly or install the latest tag; numeric ranges for higher majors will not select it.
47
+
48
+ ## Checks
49
+ Validate the actual tarball as a Node/TypeScript consumer, server and isolated terminal. Run both
50
+ OS CI jobs, Harness proof, App compatibility checks and license/content checks before publication.
51
+ Registry availability and trusted-publisher settings must be verified; unavailable network is a
52
+ release blocker. Tag pushing and publication require approval of the concrete release candidate.
53
+
54
+ An embedding host may set `browser: false` to disable the generic backend and its plugin
55
+ descriptor before supplying its own browser tool provider. The App uses this option for its
56
+ shared-tab browser, so matching tool names never silently select the wrong backend.
@@ -0,0 +1,76 @@
1
+ # Architecture proposals
2
+
3
+ A proposal is required before any change that alters a contract, an invariant, a layer
4
+ boundary, an extension point, or the storage layout described in [the specification](../README.md).
5
+ The author writes it and stops; the user reviews it. Code and spec pages change only after the
6
+ proposal is `Accepted`.
7
+
8
+ ## Status
9
+
10
+ | Status | Meaning |
11
+ |---|---|
12
+ | `Proposed` | Written, waiting for the user. Nothing has changed. |
13
+ | `Accepted` | The user approved it. Implement it and update the spec pages in the same change. |
14
+ | `Implemented` | Code and spec pages match the proposal. Link the commit or ADR. |
15
+ | `Rejected` | The user declined it. The file stays as a record. |
16
+ | `Withdrawn` | The author dropped it before review. |
17
+
18
+ ## Index
19
+
20
+ | ID | Title | Status | Affects | Date |
21
+ |---|---|---|---|---|
22
+ | [PROP-0001](PROP-0001-reporting-section.md) | A built-in Reporting section that shapes the final reply | Implemented | INV-PRM-2, 04-prompt.md | 2026-10-21 |
23
+ | [PROP-0002](PROP-0002-retain-rollout-workspaces.md) | Opt-in retention of each refinement execution's workspace | Implemented | INV-REF-1, 05-refinement.md, 10-server-protocol.md, 12-storage.md | 2026-10-21 |
24
+ | [PROP-0003](PROP-0003-executor-settings.md) | Name the model and account of refinement's executions on refine.start | Implemented | 05-refinement.md, 10-server-protocol.md | 2026-10-21 |
25
+ | [PROP-0004](PROP-0004-flexible-reporting-guidance.md) | Flexible final-reply guidance with an optional human-inspection heading | Implemented | INV-PRM-2, 04-prompt.md, ADR-0007, ADR-0008 | 2026-10-21 |
26
+ | [PROP-0005](PROP-0005-xharness-cli-name.md) | Rename the published CLI command to xharness | Implemented | 11-terminal.md, package.json#bin, CLI documentation, ADR-0009 | 2026-10-22 |
27
+ | [PROP-0006](PROP-0006-run-checklist.md) | A run checklist the model writes, recorded as a run event | Implemented | 02-sessions-and-runs.md, 06, 07, 10-server-protocol.md | 2026-10-22 |
28
+ | [PROP-0007](PROP-0007-run-continuation.md) | Continue a stopped run as a new run with the same pins | Implemented | INV-RUN-4, INV-RUN-10, 00-overview.md, 02-sessions-and-runs.md, 10-server-protocol.md | 2026-10-22 |
29
+ | [PROP-0008](PROP-0008-lessons-from-runs.md) | Opt-in lessons from finished runs, kept in the Wiki | Implemented | INV-MEM-2, 02, 06, 08-memory-and-history.md, 12-storage.md, ADR-0010 | 2026-10-22 |
30
+ | [PROP-0009](PROP-0009-foundation-and-variants.md) | Name the fixed half the foundation and the mutating half the variant | Accepted | INV-TREE→INV-VAR, new INV-FND-1/2, 00, 03, 05, 10, 12, ADR-0011 | 2026-10-22 |
31
+
32
+ | [PROP-0010](PROP-0010-session-names.md) | Agent-managed native session names | Implemented | 02, 04, 07, 11 | 2026-10-22 |
33
+
34
+ | [PROP-0011](PROP-0011-doctor.md) | Readiness diagnostics and explicit live probes | Accepted; implementation in working tree | INV-EXT-1/4, INV-GATE-1, INV-TUI-4, 01, 07, 09, 10, 11 | 2026-10-22 |
35
+
36
+ | [PROP-0012](PROP-0012-release-baseline.md) | Public 1.0.0 distribution and generic browser ownership | Accepted; candidate implementation | INV-BND-2, 00, 07, 11, 13 | 2026-10-22 |
37
+
38
+ Numbers are four digits, start at `0001`, and are never reused.
39
+
40
+ ## Template
41
+
42
+ Save as `PROP-NNNN-<short-slug>.md`.
43
+
44
+ ```markdown
45
+ ---
46
+ id: PROP-NNNN
47
+ title: <one line>
48
+ status: Proposed
49
+ created: YYYY-MM-DD
50
+ updated: YYYY-MM-DD
51
+ affects: [INV-..., 02-sessions-and-runs.md, ...]
52
+ ---
53
+
54
+ # PROP-NNNN: <title>
55
+
56
+ ## Problem
57
+ What is wrong or missing today, with evidence (code paths, failures, requests).
58
+
59
+ ## Affected rules
60
+ Each invariant, contract or boundary this changes, by ID, quoted as it stands.
61
+
62
+ ## Proposal
63
+ The new rule and design, stated as the spec page would state it after the change.
64
+
65
+ ## Alternatives
66
+ Other options considered, and why they were not chosen. Include "do nothing".
67
+
68
+ ## Consequences
69
+ What changes for applications built on the harness, for stored data, and for the server protocol.
70
+
71
+ ## Migration
72
+ How existing data, runs and hosts move over. Whether it can be undone.
73
+
74
+ ## Checks
75
+ How the change will be verified: tests, `npm run prove`, the App's checks.
76
+ ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ id: ADR-0002
3
+ title: Native subagent lifecycle in Harness sessions
4
+ status: superseded
5
+ superseded_by: ADR-0003
6
+ created: 2026-10-18
7
+ updated: 2026-10-18
8
+ ---
9
+ # ADR-0002 — Native subagent lifecycle in Harness sessions
10
+
11
+ Superseded by [ADR-0003](ADR-0003-shared-asynchronous-subagents.md), which expands the native
12
+ service to asynchronous execution, reliable delivery, and terminal parity. The earlier decision
13
+ and its rationale are retained below.
14
+
15
+ ## Context
16
+
17
+ Subagents already used Harness sessions, capability snapshots and run lineage, but their tool
18
+ owned launching and polled run files for completion. A host inferred ownership from session
19
+ names, coupling it to an internal identifier format.
20
+
21
+ ## Decision
22
+
23
+ `Sessions.spawnSubagent` owns child creation. A live parent's captured launch supplies caller,
24
+ account, model selection, folder, policy context, prompt and capability ceiling. The host or
25
+ model supplies only a complete brief and an optional tool subset. Current capability availability
26
+ and the captured nesting limit further restrict each child. Empty tool subsets stay empty;
27
+ spawning permission is never added back after narrowing. Children start with fresh history,
28
+ without inherited image attachments or request preamble. Existing tool gating applies.
29
+
30
+ The model tool is an adapter to the same native API exposed over RPC. `RunRegistry.wait` resolves
31
+ on settlement, including failed startup and interruption, without polling or per-call listeners.
32
+ The Harness Subagents plugin attributes the model-visible tool. Opt-in remains a session option;
33
+ `{}` selects the Harness default depth of one. Application organization delegation remains a host
34
+ concern. Consumers resolve ownership from run lineage rather than parsing session IDs.
35
+
36
+ ## Alternatives and consequences
37
+
38
+ Keeping orchestration in the tool would leave hosts without the same lifecycle contract.
39
+ Moving application organizations into Harness would violate the embedding boundary. A new
40
+ background job manager would duplicate existing run tracking, approvals and interruption.
41
+ The selected change reuses these layers and preserves the synchronous model tool behavior.
42
+ The native API starts children only for live parents in the same Harness instance; it does not
43
+ resume a stopped parent's launch or implement cross-process child management.
44
+
45
+ ## Evidence
46
+
47
+ Regression coverage is in `src/sessions/sessions.test.ts` and `src/server/server.test.ts`.
48
+ Application host and run-family tests cover nested lineage with opaque session IDs. Verification
49
+ results belong to the implementation handoff; no release or live-provider behavior is claimed.