@xingular/harness 2.0.0 → 2.0.1-unstable

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1095) hide show
  1. package/CHANGELOG.md +635 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE.md +50 -0
  4. package/README.md +241 -90
  5. package/THIRD_PARTY_LICENSES.md +942 -0
  6. package/browser-extension/README.md +32 -0
  7. package/browser-extension/background.js +612 -0
  8. package/browser-extension/manifest.json +16 -0
  9. package/browser-extension/overlay.js +97 -0
  10. package/browser-extension/popup.css +19 -0
  11. package/browser-extension/popup.html +30 -0
  12. package/browser-extension/popup.js +101 -0
  13. package/browser-extension/site-access.js +63 -0
  14. package/builtin/skills/plugin-authoring/SKILL.md +53 -0
  15. package/dist/cli.js +32851 -17155
  16. package/dist/sdk/accounts/accounts.d.ts +195 -0
  17. package/dist/sdk/accounts/accounts.js +821 -0
  18. package/dist/sdk/accounts/choices.d.ts +41 -0
  19. package/dist/sdk/accounts/choices.js +89 -0
  20. package/dist/sdk/accounts/env.d.ts +78 -0
  21. package/dist/sdk/accounts/env.js +294 -0
  22. package/dist/sdk/accounts/secrets.d.ts +28 -0
  23. package/dist/sdk/accounts/secrets.js +147 -0
  24. package/dist/sdk/accounts/store.d.ts +139 -0
  25. package/dist/sdk/accounts/store.js +255 -0
  26. package/dist/sdk/agents/builtin.d.ts +2 -0
  27. package/dist/sdk/agents/builtin.js +50 -0
  28. package/dist/sdk/agents/narrow.d.ts +13 -0
  29. package/dist/sdk/agents/narrow.js +29 -0
  30. package/dist/sdk/agents/planResearch.d.ts +27 -0
  31. package/dist/sdk/agents/planResearch.js +82 -0
  32. package/dist/sdk/agents/profiles.d.ts +93 -0
  33. package/dist/sdk/agents/profiles.js +289 -0
  34. package/dist/sdk/annotations/bridge.d.ts +44 -0
  35. package/dist/sdk/annotations/bridge.js +268 -0
  36. package/dist/sdk/annotations/capture.d.ts +158 -0
  37. package/dist/sdk/annotations/capture.js +409 -0
  38. package/dist/sdk/annotations/delivery.d.ts +79 -0
  39. package/dist/sdk/annotations/delivery.js +163 -0
  40. package/dist/sdk/annotations/inspect.d.ts +10 -0
  41. package/dist/sdk/annotations/inspect.js +34 -0
  42. package/dist/sdk/annotations/isolated.d.ts +6 -0
  43. package/dist/sdk/annotations/isolated.js +51 -0
  44. package/dist/sdk/annotations/pageScript.d.ts +28 -0
  45. package/dist/sdk/annotations/pageScript.js +871 -0
  46. package/dist/sdk/annotations/part.d.ts +8 -0
  47. package/dist/sdk/annotations/part.js +126 -0
  48. package/dist/sdk/annotations/queue.d.ts +4 -0
  49. package/dist/sdk/annotations/queue.js +45 -0
  50. package/dist/sdk/annotations/serverMethods.d.ts +3 -0
  51. package/dist/sdk/annotations/serverMethods.js +66 -0
  52. package/dist/sdk/annotations/store.d.ts +159 -0
  53. package/dist/sdk/annotations/store.js +404 -0
  54. package/dist/sdk/browser/backend.d.ts +16 -0
  55. package/dist/sdk/browser/backend.js +17 -0
  56. package/dist/sdk/browser/config.d.ts +19 -0
  57. package/dist/sdk/browser/config.js +23 -0
  58. package/dist/sdk/browser/contracts.d.ts +19 -0
  59. package/dist/sdk/browser/contracts.js +116 -0
  60. package/dist/sdk/browser/diagnostics.d.ts +4 -0
  61. package/dist/sdk/browser/diagnostics.js +38 -0
  62. package/dist/sdk/browser/extension/bridge.d.ts +55 -0
  63. package/dist/sdk/browser/extension/bridge.js +336 -0
  64. package/dist/sdk/browser/extension/session.d.ts +50 -0
  65. package/dist/sdk/browser/extension/session.js +321 -0
  66. package/dist/sdk/browser/index.d.ts +33 -0
  67. package/dist/sdk/browser/index.js +105 -0
  68. package/dist/sdk/browser/network.d.ts +10 -0
  69. package/dist/sdk/browser/network.js +59 -0
  70. package/dist/sdk/browser/serverMethods.d.ts +3 -0
  71. package/dist/sdk/browser/serverMethods.js +10 -0
  72. package/dist/sdk/browser/session.d.ts +85 -0
  73. package/dist/sdk/browser/session.js +228 -0
  74. package/dist/sdk/browser/tools.d.ts +102 -0
  75. package/dist/sdk/browser/tools.js +257 -0
  76. package/dist/sdk/capabilities/api.d.ts +22 -0
  77. package/dist/sdk/capabilities/api.js +54 -0
  78. package/dist/sdk/capabilities/runSnapshot.d.ts +18 -0
  79. package/dist/sdk/capabilities/runSnapshot.js +53 -0
  80. package/dist/sdk/capabilities/types.d.ts +29 -0
  81. package/dist/sdk/capabilities/types.js +1 -0
  82. package/dist/sdk/cli.d.ts +2 -0
  83. package/dist/sdk/cli.js +172 -0
  84. package/dist/sdk/commands/extensionOwners.d.ts +4 -0
  85. package/dist/sdk/commands/extensionOwners.js +17 -0
  86. package/dist/sdk/commands/list.d.ts +3 -0
  87. package/dist/sdk/commands/list.js +90 -0
  88. package/dist/sdk/commands/promptLoader.d.ts +5 -0
  89. package/dist/sdk/commands/promptLoader.js +76 -0
  90. package/dist/sdk/commands/promptRoutes.d.ts +13 -0
  91. package/dist/sdk/commands/promptRoutes.js +46 -0
  92. package/dist/sdk/commands/registry.d.ts +299 -0
  93. package/dist/sdk/commands/registry.js +54 -0
  94. package/dist/sdk/commands/routes.d.ts +16 -0
  95. package/dist/sdk/commands/routes.js +33 -0
  96. package/dist/sdk/commands/runtimeRouter.d.ts +4 -0
  97. package/dist/sdk/commands/runtimeRouter.js +48 -0
  98. package/dist/sdk/computer/boundary.d.ts +40 -0
  99. package/dist/sdk/computer/boundary.js +79 -0
  100. package/dist/sdk/computer/contracts.d.ts +127 -0
  101. package/dist/sdk/computer/contracts.js +13 -0
  102. package/dist/sdk/computer/control.d.ts +34 -0
  103. package/dist/sdk/computer/control.js +112 -0
  104. package/dist/sdk/computer/screenshot.d.ts +32 -0
  105. package/dist/sdk/computer/screenshot.js +35 -0
  106. package/dist/sdk/computer/terminalCapture.d.ts +26 -0
  107. package/dist/sdk/computer/terminalCapture.js +64 -0
  108. package/dist/sdk/computer/volatileImages.d.ts +9 -0
  109. package/dist/sdk/computer/volatileImages.js +50 -0
  110. package/dist/sdk/context/attribution.d.ts +18 -0
  111. package/dist/sdk/context/attribution.js +295 -0
  112. package/dist/sdk/context/runDetails.d.ts +16 -0
  113. package/dist/sdk/context/runDetails.js +22 -0
  114. package/dist/sdk/context/types.d.ts +94 -0
  115. package/dist/sdk/context/types.js +10 -0
  116. package/dist/sdk/core/bus.d.ts +23 -0
  117. package/dist/sdk/core/bus.js +76 -0
  118. package/dist/sdk/core/caller.d.ts +22 -0
  119. package/dist/sdk/core/caller.js +16 -0
  120. package/dist/sdk/core/changes.d.ts +15 -0
  121. package/dist/sdk/core/changes.js +15 -0
  122. package/dist/sdk/core/commandBudget.d.ts +23 -0
  123. package/dist/sdk/core/commandBudget.js +62 -0
  124. package/dist/sdk/core/effort.d.ts +2 -0
  125. package/dist/sdk/core/effort.js +1 -0
  126. package/dist/sdk/core/env.d.ts +18 -0
  127. package/dist/sdk/core/env.js +8 -0
  128. package/dist/sdk/core/errors.d.ts +15 -0
  129. package/dist/sdk/core/errors.js +24 -0
  130. package/dist/sdk/core/frontmatter.d.ts +12 -0
  131. package/dist/sdk/core/frontmatter.js +50 -0
  132. package/dist/sdk/core/fs.d.ts +18 -0
  133. package/dist/sdk/core/fs.js +106 -0
  134. package/dist/sdk/core/index.d.ts +24 -0
  135. package/dist/sdk/core/index.js +203 -0
  136. package/dist/sdk/core/interactiveProfile.d.ts +46 -0
  137. package/dist/sdk/core/interactiveProfile.js +143 -0
  138. package/dist/sdk/core/links.d.ts +51 -0
  139. package/dist/sdk/core/links.js +155 -0
  140. package/dist/sdk/core/path.d.ts +7 -0
  141. package/dist/sdk/core/path.js +79 -0
  142. package/dist/sdk/core/projects.d.ts +18 -0
  143. package/dist/sdk/core/projects.js +67 -0
  144. package/dist/sdk/core/secrets.d.ts +2 -0
  145. package/dist/sdk/core/secrets.js +5 -0
  146. package/dist/sdk/core/shell.d.ts +20 -0
  147. package/dist/sdk/core/shell.js +73 -0
  148. package/dist/sdk/core/text.d.ts +7 -0
  149. package/dist/sdk/core/text.js +40 -0
  150. package/dist/sdk/core/workspace.d.ts +13 -0
  151. package/dist/sdk/core/workspace.js +88 -0
  152. package/dist/sdk/core/workspaceBashTool.d.ts +20 -0
  153. package/dist/sdk/core/workspaceBashTool.js +50 -0
  154. package/dist/sdk/core/workspaceSandbox.d.ts +41 -0
  155. package/dist/sdk/core/workspaceSandbox.js +360 -0
  156. package/dist/sdk/core/workspaceWriteOperations.d.ts +57 -0
  157. package/dist/sdk/core/workspaceWriteOperations.js +245 -0
  158. package/dist/sdk/doctor/checks.d.ts +5 -0
  159. package/dist/sdk/doctor/checks.js +270 -0
  160. package/dist/sdk/doctor/probe.d.ts +4 -0
  161. package/dist/sdk/doctor/probe.js +94 -0
  162. package/dist/sdk/doctor/serverMethods.d.ts +3 -0
  163. package/dist/sdk/doctor/serverMethods.js +8 -0
  164. package/dist/sdk/doctor/service.d.ts +23 -0
  165. package/dist/sdk/doctor/service.js +144 -0
  166. package/dist/sdk/doctor/types.d.ts +141 -0
  167. package/dist/sdk/doctor/types.js +29 -0
  168. package/dist/sdk/harness.d.ts +172 -0
  169. package/dist/sdk/harness.js +387 -0
  170. package/dist/sdk/history/lessonPrompt.d.ts +2 -0
  171. package/dist/sdk/history/lessonPrompt.js +15 -0
  172. package/dist/sdk/history/lessons.d.ts +52 -0
  173. package/dist/sdk/history/lessons.js +173 -0
  174. package/dist/sdk/history/recall.d.ts +68 -0
  175. package/dist/sdk/history/recall.js +199 -0
  176. package/dist/sdk/history/serverMethods.d.ts +3 -0
  177. package/dist/sdk/history/serverMethods.js +8 -0
  178. package/dist/sdk/history/trajectory.d.ts +7 -0
  179. package/dist/sdk/history/trajectory.js +218 -0
  180. package/dist/sdk/hub/catalog.json +123 -0
  181. package/dist/sdk/hub/cli.d.ts +7 -0
  182. package/dist/sdk/hub/cli.js +81 -0
  183. package/dist/sdk/hub/hub.d.ts +74 -0
  184. package/dist/sdk/hub/hub.js +476 -0
  185. package/dist/sdk/hub/schema.d.ts +280 -0
  186. package/dist/sdk/hub/schema.js +78 -0
  187. package/dist/sdk/hub/serverMethods.d.ts +3 -0
  188. package/dist/sdk/hub/serverMethods.js +11 -0
  189. package/dist/sdk/index.d.ts +80 -0
  190. package/dist/sdk/index.js +60 -0
  191. package/dist/sdk/mcp/connections.d.ts +83 -0
  192. package/dist/sdk/mcp/connections.js +676 -0
  193. package/dist/sdk/mcp/manager.d.ts +26 -0
  194. package/dist/sdk/mcp/manager.js +124 -0
  195. package/dist/sdk/mcp/oauth.d.ts +35 -0
  196. package/dist/sdk/mcp/oauth.js +171 -0
  197. package/dist/sdk/mcp/scopeMigration.d.ts +19 -0
  198. package/dist/sdk/mcp/scopeMigration.js +198 -0
  199. package/dist/sdk/mcp/serverMethods.d.ts +3 -0
  200. package/dist/sdk/mcp/serverMethods.js +22 -0
  201. package/dist/sdk/mcp/service.d.ts +160 -0
  202. package/dist/sdk/mcp/service.js +510 -0
  203. package/dist/sdk/mcp/types.d.ts +131 -0
  204. package/dist/sdk/mcp/types.js +49 -0
  205. package/dist/sdk/pi/retryPolicy.d.ts +19 -0
  206. package/dist/sdk/pi/retryPolicy.js +11 -0
  207. package/dist/sdk/pi/runtime.d.ts +14 -0
  208. package/dist/sdk/pi/runtime.js +31 -0
  209. package/dist/sdk/plugins/api.d.ts +66 -0
  210. package/dist/sdk/plugins/api.js +155 -0
  211. package/dist/sdk/plugins/attachments.d.ts +46 -0
  212. package/dist/sdk/plugins/attachments.js +111 -0
  213. package/dist/sdk/plugins/builtin.d.ts +7 -0
  214. package/dist/sdk/plugins/builtin.js +182 -0
  215. package/dist/sdk/plugins/builtinRegistry.d.ts +62 -0
  216. package/dist/sdk/plugins/builtinRegistry.js +77 -0
  217. package/dist/sdk/plugins/catalogue.d.ts +29 -0
  218. package/dist/sdk/plugins/catalogue.js +197 -0
  219. package/dist/sdk/plugins/cli.d.ts +13 -0
  220. package/dist/sdk/plugins/cli.js +188 -0
  221. package/dist/sdk/plugins/commandPrefix.d.ts +8 -0
  222. package/dist/sdk/plugins/commandPrefix.js +21 -0
  223. package/dist/sdk/plugins/discover.d.ts +48 -0
  224. package/dist/sdk/plugins/discover.js +230 -0
  225. package/dist/sdk/plugins/firstParty.d.ts +50 -0
  226. package/dist/sdk/plugins/firstParty.js +119 -0
  227. package/dist/sdk/plugins/hooks.d.ts +94 -0
  228. package/dist/sdk/plugins/hooks.js +162 -0
  229. package/dist/sdk/plugins/identity.d.ts +19 -0
  230. package/dist/sdk/plugins/identity.js +48 -0
  231. package/dist/sdk/plugins/install.d.ts +24 -0
  232. package/dist/sdk/plugins/install.js +160 -0
  233. package/dist/sdk/plugins/inventory.d.ts +22 -0
  234. package/dist/sdk/plugins/inventory.js +111 -0
  235. package/dist/sdk/plugins/manifest.d.ts +21 -0
  236. package/dist/sdk/plugins/manifest.js +94 -0
  237. package/dist/sdk/plugins/plugins.d.ts +106 -0
  238. package/dist/sdk/plugins/plugins.js +165 -0
  239. package/dist/sdk/plugins/proposals.d.ts +17 -0
  240. package/dist/sdk/plugins/proposals.js +147 -0
  241. package/dist/sdk/plugins/runtime.d.ts +9 -0
  242. package/dist/sdk/plugins/runtime.js +95 -0
  243. package/dist/sdk/plugins/surfaces.d.ts +5 -0
  244. package/dist/sdk/plugins/surfaces.js +11 -0
  245. package/dist/sdk/plugins/trust.d.ts +44 -0
  246. package/dist/sdk/plugins/trust.js +120 -0
  247. package/dist/sdk/plugins/types.d.ts +174 -0
  248. package/dist/sdk/plugins/types.js +7 -0
  249. package/dist/sdk/prompt/compile.d.ts +245 -0
  250. package/dist/sdk/prompt/compile.js +535 -0
  251. package/dist/sdk/prompt/reporting.d.ts +2 -0
  252. package/dist/sdk/prompt/reporting.js +94 -0
  253. package/dist/sdk/prompt/standard.d.ts +32 -0
  254. package/dist/sdk/prompt/standard.js +76 -0
  255. package/dist/sdk/refine/cli.d.ts +4 -0
  256. package/dist/sdk/refine/cli.js +186 -0
  257. package/dist/sdk/refine/demo.d.ts +21 -0
  258. package/dist/sdk/refine/demo.js +114 -0
  259. package/dist/sdk/refine/evidence.d.ts +55 -0
  260. package/dist/sdk/refine/evidence.js +330 -0
  261. package/dist/sdk/refine/host.d.ts +59 -0
  262. package/dist/sdk/refine/host.js +105 -0
  263. package/dist/sdk/refine/ledger.d.ts +48 -0
  264. package/dist/sdk/refine/ledger.js +76 -0
  265. package/dist/sdk/refine/library.d.ts +55 -0
  266. package/dist/sdk/refine/library.js +177 -0
  267. package/dist/sdk/refine/pi.d.ts +72 -0
  268. package/dist/sdk/refine/pi.js +248 -0
  269. package/dist/sdk/refine/prompts.d.ts +60 -0
  270. package/dist/sdk/refine/prompts.js +434 -0
  271. package/dist/sdk/refine/recursion.d.ts +113 -0
  272. package/dist/sdk/refine/recursion.js +258 -0
  273. package/dist/sdk/refine/runner.d.ts +83 -0
  274. package/dist/sdk/refine/runner.js +151 -0
  275. package/dist/sdk/refine/selection.d.ts +57 -0
  276. package/dist/sdk/refine/selection.js +251 -0
  277. package/dist/sdk/refine/serverMethods.d.ts +3 -0
  278. package/dist/sdk/refine/serverMethods.js +23 -0
  279. package/dist/sdk/refine/service.d.ts +115 -0
  280. package/dist/sdk/refine/service.js +280 -0
  281. package/dist/sdk/refine/suite.d.ts +67 -0
  282. package/dist/sdk/refine/suite.js +174 -0
  283. package/dist/sdk/refine/trajectory.d.ts +9 -0
  284. package/dist/sdk/refine/trajectory.js +73 -0
  285. package/dist/sdk/refine/types.d.ts +93 -0
  286. package/dist/sdk/refine/types.js +10 -0
  287. package/dist/sdk/remote/addresses.d.ts +19 -0
  288. package/dist/sdk/remote/addresses.js +52 -0
  289. package/dist/sdk/remote/pairing.d.ts +59 -0
  290. package/dist/sdk/remote/pairing.js +160 -0
  291. package/dist/sdk/remote/seal.d.ts +28 -0
  292. package/dist/sdk/remote/seal.js +84 -0
  293. package/dist/sdk/remote/server.d.ts +28 -0
  294. package/dist/sdk/remote/server.js +158 -0
  295. package/dist/sdk/remote/service.d.ts +125 -0
  296. package/dist/sdk/remote/service.js +330 -0
  297. package/dist/sdk/remote/webClient.d.ts +4 -0
  298. package/dist/sdk/remote/webClient.js +452 -0
  299. package/dist/sdk/server/methods.d.ts +3 -0
  300. package/dist/sdk/server/methods.js +365 -0
  301. package/dist/sdk/server/params.d.ts +4 -0
  302. package/dist/sdk/server/params.js +11 -0
  303. package/dist/sdk/server/remote.d.ts +19 -0
  304. package/dist/sdk/server/remote.js +109 -0
  305. package/dist/sdk/server/rpc.d.ts +20 -0
  306. package/dist/sdk/server/rpc.js +102 -0
  307. package/dist/sdk/server/serve.d.ts +13 -0
  308. package/dist/sdk/server/serve.js +25 -0
  309. package/dist/sdk/server/socket.d.ts +28 -0
  310. package/dist/sdk/server/socket.js +122 -0
  311. package/dist/sdk/sessions/approvals.d.ts +47 -0
  312. package/dist/sdk/sessions/approvals.js +119 -0
  313. package/dist/sdk/sessions/checkpoint.d.ts +7 -0
  314. package/dist/sdk/sessions/checkpoint.js +41 -0
  315. package/dist/sdk/sessions/compactionCheckpoint.d.ts +18 -0
  316. package/dist/sdk/sessions/compactionCheckpoint.js +79 -0
  317. package/dist/sdk/sessions/completionCheck.d.ts +51 -0
  318. package/dist/sdk/sessions/completionCheck.js +161 -0
  319. package/dist/sdk/sessions/continuation.d.ts +53 -0
  320. package/dist/sdk/sessions/continuation.js +90 -0
  321. package/dist/sdk/sessions/contracts.d.ts +991 -0
  322. package/dist/sdk/sessions/contracts.js +545 -0
  323. package/dist/sdk/sessions/control.d.ts +72 -0
  324. package/dist/sdk/sessions/control.js +158 -0
  325. package/dist/sdk/sessions/extensionUi.d.ts +19 -0
  326. package/dist/sdk/sessions/extensionUi.js +64 -0
  327. package/dist/sdk/sessions/goal.d.ts +145 -0
  328. package/dist/sdk/sessions/goal.js +405 -0
  329. package/dist/sdk/sessions/goalLoop.d.ts +37 -0
  330. package/dist/sdk/sessions/goalLoop.js +125 -0
  331. package/dist/sdk/sessions/goalPrompts.d.ts +4 -0
  332. package/dist/sdk/sessions/goalPrompts.js +93 -0
  333. package/dist/sdk/sessions/goalStop.d.ts +27 -0
  334. package/dist/sdk/sessions/goalStop.js +41 -0
  335. package/dist/sdk/sessions/history.d.ts +16 -0
  336. package/dist/sdk/sessions/history.js +68 -0
  337. package/dist/sdk/sessions/initialBash.d.ts +7 -0
  338. package/dist/sdk/sessions/initialBash.js +7 -0
  339. package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
  340. package/dist/sdk/sessions/lineageJoin.js +61 -0
  341. package/dist/sdk/sessions/live.d.ts +101 -0
  342. package/dist/sdk/sessions/live.js +265 -0
  343. package/dist/sdk/sessions/planMode.d.ts +116 -0
  344. package/dist/sdk/sessions/planMode.js +281 -0
  345. package/dist/sdk/sessions/policy.d.ts +43 -0
  346. package/dist/sdk/sessions/policy.js +1 -0
  347. package/dist/sdk/sessions/pricing.d.ts +34 -0
  348. package/dist/sdk/sessions/pricing.js +40 -0
  349. package/dist/sdk/sessions/reasoningSummaries.d.ts +11 -0
  350. package/dist/sdk/sessions/reasoningSummaries.js +61 -0
  351. package/dist/sdk/sessions/registry.d.ts +124 -0
  352. package/dist/sdk/sessions/registry.js +392 -0
  353. package/dist/sdk/sessions/runIndex.d.ts +21 -0
  354. package/dist/sdk/sessions/runIndex.js +65 -0
  355. package/dist/sdk/sessions/runStore.d.ts +82 -0
  356. package/dist/sdk/sessions/runStore.js +393 -0
  357. package/dist/sdk/sessions/runner.d.ts +291 -0
  358. package/dist/sdk/sessions/runner.js +1040 -0
  359. package/dist/sdk/sessions/sessionState.d.ts +13 -0
  360. package/dist/sdk/sessions/sessionState.js +31 -0
  361. package/dist/sdk/sessions/sessions.d.ts +238 -0
  362. package/dist/sdk/sessions/sessions.js +923 -0
  363. package/dist/sdk/sessions/sideQuestionServerMethods.d.ts +3 -0
  364. package/dist/sdk/sessions/sideQuestionServerMethods.js +19 -0
  365. package/dist/sdk/sessions/sideQuestions.d.ts +66 -0
  366. package/dist/sdk/sessions/sideQuestions.js +290 -0
  367. package/dist/sdk/sessions/stallWatch.d.ts +35 -0
  368. package/dist/sdk/sessions/stallWatch.js +42 -0
  369. package/dist/sdk/sessions/subagentServerMethods.d.ts +3 -0
  370. package/dist/sdk/sessions/subagentServerMethods.js +41 -0
  371. package/dist/sdk/sessions/subagentService.d.ts +88 -0
  372. package/dist/sdk/sessions/subagentService.js +546 -0
  373. package/dist/sdk/sessions/subagents.d.ts +98 -0
  374. package/dist/sdk/sessions/subagents.js +136 -0
  375. package/dist/sdk/sessions/workSlice.d.ts +167 -0
  376. package/dist/sdk/sessions/workSlice.js +266 -0
  377. package/dist/sdk/sessions/workspaceBoundary.d.ts +15 -0
  378. package/dist/sdk/sessions/workspaceBoundary.js +46 -0
  379. package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
  380. package/dist/sdk/terminal/accountsMenu.js +392 -0
  381. package/dist/sdk/terminal/browser.d.ts +62 -0
  382. package/dist/sdk/terminal/browser.js +41 -0
  383. package/dist/sdk/terminal/browserControl.d.ts +29 -0
  384. package/dist/sdk/terminal/browserControl.js +187 -0
  385. package/dist/sdk/terminal/cli.d.ts +20 -0
  386. package/dist/sdk/terminal/cli.js +121 -0
  387. package/dist/sdk/terminal/client.d.ts +20 -0
  388. package/dist/sdk/terminal/client.js +148 -0
  389. package/dist/sdk/terminal/commandHelp.d.ts +17 -0
  390. package/dist/sdk/terminal/commandHelp.js +20 -0
  391. package/dist/sdk/terminal/control.d.ts +4 -0
  392. package/dist/sdk/terminal/control.js +25 -0
  393. package/dist/sdk/terminal/controller.d.ts +136 -0
  394. package/dist/sdk/terminal/controller.js +579 -0
  395. package/dist/sdk/terminal/credentialStore.d.ts +4 -0
  396. package/dist/sdk/terminal/credentialStore.js +33 -0
  397. package/dist/sdk/terminal/daemon.d.ts +44 -0
  398. package/dist/sdk/terminal/daemon.js +264 -0
  399. package/dist/sdk/terminal/hubMenu.d.ts +10 -0
  400. package/dist/sdk/terminal/hubMenu.js +34 -0
  401. package/dist/sdk/terminal/launch.d.ts +5 -0
  402. package/dist/sdk/terminal/launch.js +27 -0
  403. package/dist/sdk/terminal/liveTerminal.d.ts +96 -0
  404. package/dist/sdk/terminal/liveTerminal.js +436 -0
  405. package/dist/sdk/terminal/logs.d.ts +14 -0
  406. package/dist/sdk/terminal/logs.js +59 -0
  407. package/dist/sdk/terminal/opentui/ansi.d.ts +25 -0
  408. package/dist/sdk/terminal/opentui/ansi.js +192 -0
  409. package/dist/sdk/terminal/opentui/model.d.ts +163 -0
  410. package/dist/sdk/terminal/opentui/model.js +484 -0
  411. package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +28 -0
  412. package/dist/sdk/terminal/opentui/subagentsWidget.js +54 -0
  413. package/dist/sdk/terminal/opentui/theme.d.ts +47 -0
  414. package/dist/sdk/terminal/opentui/theme.js +93 -0
  415. package/dist/sdk/terminal/piExtension.d.ts +12 -0
  416. package/dist/sdk/terminal/piExtension.js +847 -0
  417. package/dist/sdk/terminal/pluginMenu.d.ts +34 -0
  418. package/dist/sdk/terminal/pluginMenu.js +101 -0
  419. package/dist/sdk/terminal/socket.d.ts +73 -0
  420. package/dist/sdk/terminal/socket.js +287 -0
  421. package/dist/sdk/terminal/standalone.d.ts +52 -0
  422. package/dist/sdk/terminal/standalone.js +329 -0
  423. package/dist/sdk/terminal/subagentMonitor.d.ts +62 -0
  424. package/dist/sdk/terminal/subagentMonitor.js +176 -0
  425. package/dist/sdk/terminal/terminals.d.ts +312 -0
  426. package/dist/sdk/terminal/terminals.js +1782 -0
  427. package/dist/sdk/terminal/toolName.d.ts +6 -0
  428. package/dist/sdk/terminal/toolName.js +12 -0
  429. package/dist/sdk/terminal/trajectory.d.ts +15 -0
  430. package/dist/sdk/terminal/trajectory.js +38 -0
  431. package/dist/sdk/terminal/tui/annotateCommand.d.ts +7 -0
  432. package/dist/sdk/terminal/tui/annotateCommand.js +36 -0
  433. package/dist/sdk/terminal/tui/annotateSend.d.ts +30 -0
  434. package/dist/sdk/terminal/tui/annotateSend.js +40 -0
  435. package/dist/sdk/terminal/tui/chrome.d.ts +68 -0
  436. package/dist/sdk/terminal/tui/chrome.js +182 -0
  437. package/dist/sdk/terminal/tui/clipboardFiles.d.ts +11 -0
  438. package/dist/sdk/terminal/tui/clipboardFiles.js +74 -0
  439. package/dist/sdk/terminal/tui/commandPages.d.ts +16 -0
  440. package/dist/sdk/terminal/tui/commandPages.js +136 -0
  441. package/dist/sdk/terminal/tui/commands.d.ts +71 -0
  442. package/dist/sdk/terminal/tui/commands.js +496 -0
  443. package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
  444. package/dist/sdk/terminal/tui/dialogGeometry.js +52 -0
  445. package/dist/sdk/terminal/tui/dialogs.d.ts +81 -0
  446. package/dist/sdk/terminal/tui/dialogs.js +372 -0
  447. package/dist/sdk/terminal/tui/goalCommand.d.ts +19 -0
  448. package/dist/sdk/terminal/tui/goalCommand.js +83 -0
  449. package/dist/sdk/terminal/tui/harnessRuntime.d.ts +8 -0
  450. package/dist/sdk/terminal/tui/harnessRuntime.js +771 -0
  451. package/dist/sdk/terminal/tui/keybindings.d.ts +11 -0
  452. package/dist/sdk/terminal/tui/keybindings.js +49 -0
  453. package/dist/sdk/terminal/tui/list.d.ts +86 -0
  454. package/dist/sdk/terminal/tui/list.js +278 -0
  455. package/dist/sdk/terminal/tui/markdown.d.ts +16 -0
  456. package/dist/sdk/terminal/tui/markdown.js +55 -0
  457. package/dist/sdk/terminal/tui/modeChoices.d.ts +61 -0
  458. package/dist/sdk/terminal/tui/modeChoices.js +95 -0
  459. package/dist/sdk/terminal/tui/modelPicker.d.ts +55 -0
  460. package/dist/sdk/terminal/tui/modelPicker.js +150 -0
  461. package/dist/sdk/terminal/tui/mouse.d.ts +3 -0
  462. package/dist/sdk/terminal/tui/mouse.js +3 -0
  463. package/dist/sdk/terminal/tui/mouseReport.d.ts +30 -0
  464. package/dist/sdk/terminal/tui/mouseReport.js +80 -0
  465. package/dist/sdk/terminal/tui/page.d.ts +17 -0
  466. package/dist/sdk/terminal/tui/page.js +1 -0
  467. package/dist/sdk/terminal/tui/pageOverlay.d.ts +30 -0
  468. package/dist/sdk/terminal/tui/pageOverlay.js +183 -0
  469. package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +76 -0
  470. package/dist/sdk/terminal/tui/pages/accountsPage.js +409 -0
  471. package/dist/sdk/terminal/tui/pages/agentsPage.d.ts +74 -0
  472. package/dist/sdk/terminal/tui/pages/agentsPage.js +193 -0
  473. package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +148 -0
  474. package/dist/sdk/terminal/tui/pages/annotatePage.js +576 -0
  475. package/dist/sdk/terminal/tui/pages/browserPage.d.ts +87 -0
  476. package/dist/sdk/terminal/tui/pages/browserPage.js +739 -0
  477. package/dist/sdk/terminal/tui/pages/componentsPage.d.ts +47 -0
  478. package/dist/sdk/terminal/tui/pages/componentsPage.js +119 -0
  479. package/dist/sdk/terminal/tui/pages/contextPage.d.ts +91 -0
  480. package/dist/sdk/terminal/tui/pages/contextPage.js +585 -0
  481. package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +39 -0
  482. package/dist/sdk/terminal/tui/pages/doctorPage.js +233 -0
  483. package/dist/sdk/terminal/tui/pages/followUpQueuePage.d.ts +34 -0
  484. package/dist/sdk/terminal/tui/pages/followUpQueuePage.js +130 -0
  485. package/dist/sdk/terminal/tui/pages/hubPage.d.ts +52 -0
  486. package/dist/sdk/terminal/tui/pages/hubPage.js +292 -0
  487. package/dist/sdk/terminal/tui/pages/logPage.d.ts +38 -0
  488. package/dist/sdk/terminal/tui/pages/logPage.js +189 -0
  489. package/dist/sdk/terminal/tui/pages/permissionsPage.d.ts +44 -0
  490. package/dist/sdk/terminal/tui/pages/permissionsPage.js +124 -0
  491. package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +65 -0
  492. package/dist/sdk/terminal/tui/pages/pluginsPage.js +519 -0
  493. package/dist/sdk/terminal/tui/pages/remoteControlPage.d.ts +32 -0
  494. package/dist/sdk/terminal/tui/pages/remoteControlPage.js +170 -0
  495. package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +63 -0
  496. package/dist/sdk/terminal/tui/pages/settingsPage.js +103 -0
  497. package/dist/sdk/terminal/tui/pages/subagentsPage.d.ts +24 -0
  498. package/dist/sdk/terminal/tui/pages/subagentsPage.js +155 -0
  499. package/dist/sdk/terminal/tui/pages/textPage.d.ts +17 -0
  500. package/dist/sdk/terminal/tui/pages/textPage.js +52 -0
  501. package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +66 -0
  502. package/dist/sdk/terminal/tui/pages/trajectoryPage.js +490 -0
  503. package/dist/sdk/terminal/tui/pages/usagePage.d.ts +45 -0
  504. package/dist/sdk/terminal/tui/pages/usagePage.js +397 -0
  505. package/dist/sdk/terminal/tui/pages/worktreesPage.d.ts +72 -0
  506. package/dist/sdk/terminal/tui/pages/worktreesPage.js +203 -0
  507. package/dist/sdk/terminal/tui/piAdapter.d.ts +17 -0
  508. package/dist/sdk/terminal/tui/piAdapter.js +46 -0
  509. package/dist/sdk/terminal/tui/planMode.d.ts +2 -0
  510. package/dist/sdk/terminal/tui/planMode.js +2 -0
  511. package/dist/sdk/terminal/tui/pluginCommands.d.ts +16 -0
  512. package/dist/sdk/terminal/tui/pluginCommands.js +41 -0
  513. package/dist/sdk/terminal/tui/qr.d.ts +4 -0
  514. package/dist/sdk/terminal/tui/qr.js +35 -0
  515. package/dist/sdk/terminal/tui/questionPicker.d.ts +20 -0
  516. package/dist/sdk/terminal/tui/questionPicker.js +150 -0
  517. package/dist/sdk/terminal/tui/questions.d.ts +21 -0
  518. package/dist/sdk/terminal/tui/questions.js +42 -0
  519. package/dist/sdk/terminal/tui/runtime.d.ts +117 -0
  520. package/dist/sdk/terminal/tui/runtime.js +544 -0
  521. package/dist/sdk/terminal/tui/search.d.ts +22 -0
  522. package/dist/sdk/terminal/tui/search.js +61 -0
  523. package/dist/sdk/terminal/tui/selection.d.ts +16 -0
  524. package/dist/sdk/terminal/tui/selection.js +16 -0
  525. package/dist/sdk/terminal/tui/sessionPicker.d.ts +40 -0
  526. package/dist/sdk/terminal/tui/sessionPicker.js +141 -0
  527. package/dist/sdk/terminal/tui/sessionUi.d.ts +3 -0
  528. package/dist/sdk/terminal/tui/sessionUi.js +30 -0
  529. package/dist/sdk/terminal/tui/settingsModel.d.ts +14 -0
  530. package/dist/sdk/terminal/tui/settingsModel.js +195 -0
  531. package/dist/sdk/terminal/tui/sideQuestion.d.ts +57 -0
  532. package/dist/sdk/terminal/tui/sideQuestion.js +241 -0
  533. package/dist/sdk/terminal/tui/skillInvocation.d.ts +28 -0
  534. package/dist/sdk/terminal/tui/skillInvocation.js +63 -0
  535. package/dist/sdk/terminal/tui/status.d.ts +18 -0
  536. package/dist/sdk/terminal/tui/status.js +67 -0
  537. package/dist/sdk/terminal/tui/theme.d.ts +54 -0
  538. package/dist/sdk/terminal/tui/theme.js +185 -0
  539. package/dist/sdk/terminal/tui/thinkingLevels.d.ts +11 -0
  540. package/dist/sdk/terminal/tui/thinkingLevels.js +31 -0
  541. package/dist/sdk/terminal/tui/treeModel.d.ts +79 -0
  542. package/dist/sdk/terminal/tui/treeModel.js +483 -0
  543. package/dist/sdk/terminal/tui/treePicker.d.ts +49 -0
  544. package/dist/sdk/terminal/tui/treePicker.js +251 -0
  545. package/dist/sdk/terminal/tui/ui.d.ts +49 -0
  546. package/dist/sdk/terminal/tui/ui.js +149 -0
  547. package/dist/sdk/terminal/tui/variantCommands.d.ts +32 -0
  548. package/dist/sdk/terminal/tui/variantCommands.js +359 -0
  549. package/dist/sdk/terminal/tui/workingStatus.d.ts +9 -0
  550. package/dist/sdk/terminal/tui/workingStatus.js +229 -0
  551. package/dist/sdk/terminal/variantControl.d.ts +24 -0
  552. package/dist/sdk/terminal/variantControl.js +145 -0
  553. package/dist/sdk/tools/askUser.d.ts +6 -0
  554. package/dist/sdk/tools/askUser.js +92 -0
  555. package/dist/sdk/tools/defaultSkills.d.ts +23 -0
  556. package/dist/sdk/tools/defaultSkills.js +46 -0
  557. package/dist/sdk/tools/definitions.d.ts +32 -0
  558. package/dist/sdk/tools/definitions.js +133 -0
  559. package/dist/sdk/tools/dispatch.d.ts +16 -0
  560. package/dist/sdk/tools/dispatch.js +92 -0
  561. package/dist/sdk/tools/getCapabilities.d.ts +31 -0
  562. package/dist/sdk/tools/getCapabilities.js +34 -0
  563. package/dist/sdk/tools/harnessTools.d.ts +8 -0
  564. package/dist/sdk/tools/harnessTools.js +20 -0
  565. package/dist/sdk/tools/sessionName.d.ts +16 -0
  566. package/dist/sdk/tools/sessionName.js +78 -0
  567. package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
  568. package/dist/sdk/tools/spawnSubagent.js +63 -0
  569. package/dist/sdk/tools/todo.d.ts +15 -0
  570. package/dist/sdk/tools/todo.js +66 -0
  571. package/dist/sdk/tools/types.d.ts +48 -0
  572. package/dist/sdk/tools/types.js +1 -0
  573. package/dist/sdk/usage/analytics.d.ts +20 -0
  574. package/dist/sdk/usage/analytics.js +151 -0
  575. package/dist/sdk/usage/ledger.d.ts +38 -0
  576. package/dist/sdk/usage/ledger.js +142 -0
  577. package/dist/sdk/usage/limits/adapters.d.ts +11 -0
  578. package/dist/sdk/usage/limits/adapters.js +349 -0
  579. package/dist/sdk/usage/limits/capture.d.ts +8 -0
  580. package/dist/sdk/usage/limits/capture.js +47 -0
  581. package/dist/sdk/usage/limits/http.d.ts +12 -0
  582. package/dist/sdk/usage/limits/http.js +51 -0
  583. package/dist/sdk/usage/limits/normalize.d.ts +15 -0
  584. package/dist/sdk/usage/limits/normalize.js +211 -0
  585. package/dist/sdk/usage/limits/service.d.ts +30 -0
  586. package/dist/sdk/usage/limits/service.js +176 -0
  587. package/dist/sdk/usage/limits/types.d.ts +65 -0
  588. package/dist/sdk/usage/limits/types.js +1 -0
  589. package/dist/sdk/usage/serverMethods.d.ts +3 -0
  590. package/dist/sdk/usage/serverMethods.js +22 -0
  591. package/dist/sdk/usage/service.d.ts +32 -0
  592. package/dist/sdk/usage/service.js +66 -0
  593. package/dist/sdk/usage/settings.d.ts +7 -0
  594. package/dist/sdk/usage/settings.js +28 -0
  595. package/dist/sdk/usage/types.d.ts +60 -0
  596. package/dist/sdk/usage/types.js +4 -0
  597. package/dist/sdk/variant/components.d.ts +34 -0
  598. package/dist/sdk/variant/components.js +230 -0
  599. package/dist/sdk/variant/materialise.d.ts +66 -0
  600. package/dist/sdk/variant/materialise.js +81 -0
  601. package/dist/sdk/variant/migrate.d.ts +4 -0
  602. package/dist/sdk/variant/migrate.js +41 -0
  603. package/dist/sdk/variant/seed.d.ts +20 -0
  604. package/dist/sdk/variant/seed.js +116 -0
  605. package/dist/sdk/variant/store.d.ts +114 -0
  606. package/dist/sdk/variant/store.js +256 -0
  607. package/dist/sdk/variant/surface.d.ts +56 -0
  608. package/dist/sdk/variant/surface.js +81 -0
  609. package/dist/sdk/variant/trust.d.ts +27 -0
  610. package/dist/sdk/variant/trust.js +64 -0
  611. package/dist/sdk/variant/variant.d.ts +71 -0
  612. package/dist/sdk/variant/variant.js +331 -0
  613. package/dist/sdk/web/markdown.d.ts +10 -0
  614. package/dist/sdk/web/markdown.js +66 -0
  615. package/dist/sdk/web/part.d.ts +10 -0
  616. package/dist/sdk/web/part.js +6 -0
  617. package/dist/sdk/web/safeRequest.d.ts +34 -0
  618. package/dist/sdk/web/safeRequest.js +175 -0
  619. package/dist/sdk/web/search.d.ts +53 -0
  620. package/dist/sdk/web/search.js +168 -0
  621. package/dist/sdk/web/serverMethods.d.ts +3 -0
  622. package/dist/sdk/web/serverMethods.js +7 -0
  623. package/dist/sdk/web/text.d.ts +2 -0
  624. package/dist/sdk/web/text.js +7 -0
  625. package/dist/sdk/web/tools.d.ts +22 -0
  626. package/dist/sdk/web/tools.js +195 -0
  627. package/dist/sdk/web/turndown-plugin-gfm.d.ts +4 -0
  628. package/dist/sdk/wiki/notes.d.ts +68 -0
  629. package/dist/sdk/wiki/notes.js +297 -0
  630. package/dist/sdk/wiki/serverMethods.d.ts +3 -0
  631. package/dist/sdk/wiki/serverMethods.js +26 -0
  632. package/dist/sdk/worktrees/cli.d.ts +11 -0
  633. package/dist/sdk/worktrees/cli.js +146 -0
  634. package/dist/sdk/worktrees/copy.d.ts +9 -0
  635. package/dist/sdk/worktrees/copy.js +111 -0
  636. package/dist/sdk/worktrees/git.d.ts +18 -0
  637. package/dist/sdk/worktrees/git.js +89 -0
  638. package/dist/sdk/worktrees/serverMethods.d.ts +3 -0
  639. package/dist/sdk/worktrees/serverMethods.js +30 -0
  640. package/dist/sdk/worktrees/service.d.ts +73 -0
  641. package/dist/sdk/worktrees/service.js +483 -0
  642. package/dist/sdk/worktrees/setup.d.ts +23 -0
  643. package/dist/sdk/worktrees/setup.js +65 -0
  644. package/dist/sdk/worktrees/snapshot.d.ts +16 -0
  645. package/dist/sdk/worktrees/snapshot.js +83 -0
  646. package/dist/sdk/worktrees/types.d.ts +91 -0
  647. package/dist/sdk/worktrees/types.js +1 -0
  648. package/dist/sdk/world/actions.d.ts +23 -0
  649. package/dist/sdk/world/actions.js +31 -0
  650. package/dist/sdk/world/cli.d.ts +12 -0
  651. package/dist/sdk/world/cli.js +166 -0
  652. package/dist/sdk/world/images.d.ts +20 -0
  653. package/dist/sdk/world/images.js +48 -0
  654. package/dist/sdk/world/untrusted.d.ts +12 -0
  655. package/dist/sdk/world/untrusted.js +20 -0
  656. package/dist/sdk/world/world.d.ts +75 -0
  657. package/dist/sdk/world/world.js +117 -0
  658. package/dist/terminal-opentui.js +30986 -0
  659. package/dist/terminal-pi.js +3008 -610
  660. package/docs/README.md +45 -1
  661. package/docs/architecture/00-overview.md +171 -0
  662. package/docs/architecture/01-extension-points.md +78 -0
  663. package/docs/architecture/02-sessions-and-runs.md +505 -0
  664. package/docs/architecture/03-variants.md +122 -0
  665. package/docs/architecture/04-prompt.md +277 -0
  666. package/docs/architecture/05-refinement.md +134 -0
  667. package/docs/architecture/06-plugins-and-capabilities.md +208 -0
  668. package/docs/architecture/07-tools-and-gate.md +245 -0
  669. package/docs/architecture/08-memory-and-history.md +100 -0
  670. package/docs/architecture/09-accounts-and-connectors.md +153 -0
  671. package/docs/architecture/10-server-protocol.md +403 -0
  672. package/docs/architecture/11-terminal.md +555 -0
  673. package/docs/architecture/12-storage.md +118 -0
  674. package/docs/architecture/13-world-tools.md +114 -0
  675. package/docs/architecture/14-surfaces-and-parity.md +151 -0
  676. package/docs/architecture/15-remote-control.md +120 -0
  677. package/docs/architecture/README.md +143 -0
  678. package/docs/architecture/proposals/PROP-0001-reporting-section.md +106 -0
  679. package/docs/architecture/proposals/PROP-0002-retain-rollout-workspaces.md +104 -0
  680. package/docs/architecture/proposals/PROP-0003-executor-settings.md +81 -0
  681. package/docs/architecture/proposals/PROP-0004-flexible-reporting-guidance.md +71 -0
  682. package/docs/architecture/proposals/PROP-0005-xharness-cli-name.md +78 -0
  683. package/docs/architecture/proposals/PROP-0006-run-checklist.md +72 -0
  684. package/docs/architecture/proposals/PROP-0007-run-continuation.md +80 -0
  685. package/docs/architecture/proposals/PROP-0008-lessons-from-runs.md +80 -0
  686. package/docs/architecture/proposals/PROP-0009-foundation-and-variants.md +78 -0
  687. package/docs/architecture/proposals/PROP-0010-session-names.md +73 -0
  688. package/docs/architecture/proposals/PROP-0011-doctor.md +63 -0
  689. package/docs/architecture/proposals/PROP-0012-release-baseline.md +56 -0
  690. package/docs/architecture/proposals/PROP-0013-resource-browser.md +58 -0
  691. package/docs/architecture/proposals/PROP-0014-fullscreen-browser-tabs.md +58 -0
  692. package/docs/architecture/proposals/PROP-0015-one-capability-surface.md +88 -0
  693. package/docs/architecture/proposals/PROP-0016-managed-worktrees.md +156 -0
  694. package/docs/architecture/proposals/PROP-0017-page-annotations.md +131 -0
  695. package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +183 -0
  696. package/docs/architecture/proposals/PROP-0019-contextual-side-questions.md +122 -0
  697. package/docs/architecture/proposals/PROP-0020-builtin-feature-plugins.md +105 -0
  698. package/docs/architecture/proposals/PROP-0021-command-namespaces-and-duplicates.md +99 -0
  699. package/docs/architecture/proposals/PROP-0022-plan-only-questions.md +102 -0
  700. package/docs/architecture/proposals/PROP-0023-xagent-cli-name.md +61 -0
  701. package/docs/architecture/proposals/PROP-0024-question-sketch-previews.md +130 -0
  702. package/docs/architecture/proposals/PROP-0025-contextual-question-wireframes.md +49 -0
  703. package/docs/architecture/proposals/PROP-0026-connected-sketch-display.md +96 -0
  704. package/docs/architecture/proposals/PROP-0027-xingular-agent-product-identity.md +60 -0
  705. package/docs/architecture/proposals/PROP-0028-normalize-question-wireframes.md +55 -0
  706. package/docs/architecture/proposals/PROP-0029-agent-profiles.md +124 -0
  707. package/docs/architecture/proposals/PROP-0030-subagent-title.md +86 -0
  708. package/docs/architecture/proposals/PROP-0031-plugin-command-owner-namespaces.md +54 -0
  709. package/docs/architecture/proposals/PROP-0032-planning-quality.md +196 -0
  710. package/docs/architecture/proposals/PROP-0033-compaction-plan-checkpoints.md +75 -0
  711. package/docs/architecture/proposals/PROP-0034-conversation-fast-mode.md +120 -0
  712. package/docs/architecture/proposals/PROP-0035-retain-subagent-status.md +47 -0
  713. package/docs/architecture/proposals/PROP-0036-first-class-harness-commands.md +59 -0
  714. package/docs/architecture/proposals/PROP-0037-workspace-write-boundary.md +63 -0
  715. package/docs/architecture/proposals/PROP-0038-annotate-open-shadow-roots.md +73 -0
  716. package/docs/architecture/proposals/PROP-0039-workspace-boundary-hardening.md +139 -0
  717. package/docs/architecture/proposals/PROP-0040-one-launch-path.md +87 -0
  718. package/docs/architecture/proposals/PROP-0041-bounded-work-slices.md +260 -0
  719. package/docs/architecture/proposals/PROP-0042-usage-and-provider-limits.md +127 -0
  720. package/docs/architecture/proposals/PROP-0043-read-only-plan-bash.md +74 -0
  721. package/docs/architecture/proposals/PROP-0044-work-slice-defaults.md +93 -0
  722. package/docs/architecture/proposals/PROP-0045-rename-checklist-to-todo.md +132 -0
  723. package/docs/architecture/proposals/PROP-0046-progress-aware-stall-guards.md +82 -0
  724. package/docs/architecture/proposals/PROP-0047-plugins-hub-separation.md +122 -0
  725. package/docs/architecture/proposals/PROP-0048-simple-annotate.md +85 -0
  726. package/docs/architecture/proposals/PROP-0049-context-attribution.md +415 -0
  727. package/docs/architecture/proposals/PROP-0050-run-stop-codes-and-refusals.md +30 -0
  728. package/docs/architecture/proposals/PROP-0051-unfinished-run-handoff.md +110 -0
  729. package/docs/architecture/proposals/PROP-0052-terminal-refine-and-variant-switch.md +111 -0
  730. package/docs/architecture/proposals/README.md +123 -0
  731. package/docs/decisions/ADR-0001-owned-terminal.md +10 -3
  732. package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +3 -1
  733. package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +3 -2
  734. package/docs/decisions/ADR-0006-opentui-only-terminal.md +47 -0
  735. package/docs/decisions/ADR-0007-reporting-section.md +33 -0
  736. package/docs/decisions/ADR-0008-flexible-reporting-guidance.md +41 -0
  737. package/docs/decisions/ADR-0009-xharness-command.md +39 -0
  738. package/docs/decisions/ADR-0010-lessons-in-the-wiki.md +31 -0
  739. package/docs/decisions/ADR-0011-foundation-and-variants.md +28 -0
  740. package/docs/decisions/ADR-0012-native-session-names.md +34 -0
  741. package/docs/decisions/ADR-0013-doctor.md +27 -0
  742. package/docs/decisions/ADR-0014-public-release-baseline.md +22 -0
  743. package/docs/decisions/ADR-0015-resource-browser.md +28 -0
  744. package/docs/decisions/ADR-0016-fullscreen-browser-tabs.md +31 -0
  745. package/docs/decisions/ADR-0017-one-capability-surface.md +34 -0
  746. package/docs/decisions/ADR-0018-builtin-feature-plugins.md +35 -0
  747. package/docs/decisions/ADR-0019-managed-git-worktrees.md +31 -0
  748. package/docs/decisions/ADR-0020-page-annotations.md +37 -0
  749. package/docs/decisions/ADR-0021-required-command-namespaces.md +40 -0
  750. package/docs/decisions/ADR-0022-plan-only-question-tools.md +34 -0
  751. package/docs/decisions/ADR-0023-contextual-side-question-runs.md +35 -0
  752. package/docs/decisions/ADR-0024-xagent-command.md +40 -0
  753. package/docs/decisions/ADR-0025-question-choice-sketches.md +49 -0
  754. package/docs/decisions/ADR-0026-contextual-question-wireframes.md +58 -0
  755. package/docs/decisions/ADR-0027-connected-sketch-display.md +62 -0
  756. package/docs/decisions/ADR-0028-xingular-agent-product-identity.md +56 -0
  757. package/docs/decisions/ADR-0029-normalized-question-wireframe-borders.md +33 -0
  758. package/docs/decisions/ADR-0030-agent-profiles.md +43 -0
  759. package/docs/decisions/ADR-0031-plugin-command-owner-namespaces.md +37 -0
  760. package/docs/decisions/ADR-0032-compaction-run-checkpoints.md +35 -0
  761. package/docs/decisions/ADR-0033-plan-mode-research-delegation.md +47 -0
  762. package/docs/decisions/ADR-0034-first-class-harness-terminal-commands.md +25 -0
  763. package/docs/decisions/ADR-0035-one-launch-path.md +40 -0
  764. package/docs/decisions/ADR-0036-workspace-write-operation-boundary.md +54 -0
  765. package/docs/decisions/ADR-0037-usage-ledger-and-provider-limits.md +44 -0
  766. package/docs/decisions/ADR-0038-plan-bash-os-read-only.md +29 -0
  767. package/docs/decisions/ADR-0039-progress-aware-stall-guards.md +43 -0
  768. package/docs/decisions/ADR-0040-architecture-change-workflow.md +31 -0
  769. package/docs/decisions/ADR-0041-plugins-hub-separation.md +41 -0
  770. package/docs/decisions/ADR-0042-windows-shell-without-sandbox.md +40 -0
  771. package/docs/decisions/ADR-0043-parents-continue-stopped-subagents.md +49 -0
  772. package/docs/decisions/ADR-0044-annotations-pending-or-sent.md +24 -0
  773. package/docs/decisions/ADR-0045-default-plugin-authoring-skill.md +9 -0
  774. package/docs/decisions/ADR-0046-hash-bound-plugin-proposals.md +20 -0
  775. package/docs/decisions/ADR-0047-links-open-with-the-os-handler.md +47 -0
  776. package/docs/decisions/ADR-0048-required-skills-from-a-message.md +42 -0
  777. package/docs/decisions/ADR-0050-approved-window-screenshots.md +19 -0
  778. package/docs/decisions/ADR-0051-terminal-decision-wait.md +10 -0
  779. package/docs/decisions/ADR-0052-per-profile-subagent-budgets.md +25 -0
  780. package/docs/decisions/ADR-0053-no-repeated-work-guard.md +45 -0
  781. package/docs/decisions/ADR-0054-terminal-reply-heartbeat-and-stall.md +52 -0
  782. package/docs/decisions/ADR-0055-plan-output-repair.md +51 -0
  783. package/docs/decisions/ADR-0056-remote-control.md +53 -0
  784. package/docs/decisions/ADR-0057-structured-plan-outcomes.md +39 -0
  785. package/docs/decisions/ADR-0058-ask-user-only-plan-clarification.md +36 -0
  786. package/docs/decisions/ADR-0059-run-diagnostic-evidence.md +35 -0
  787. package/docs/decisions/ADR-0060-approvals-are-controls.md +40 -0
  788. package/docs/decisions/ADR-0061-strict-plugin-command-namespaces.md +41 -0
  789. package/docs/decisions/ADR-0062-shared-account-state.md +67 -0
  790. package/docs/decisions/ADR-0063-unfinished-work-handoffs.md +34 -0
  791. package/docs/decisions/ADR-0064-account-model-fallback-on-resume.md +79 -0
  792. package/docs/decisions/ADR-0065-variant-switch-at-turn-boundaries.md +31 -0
  793. package/docs/decisions/ADR-0066-guided-refinement-from-turn-snapshots.md +37 -0
  794. package/docs/decisions/ADR-0067-cache-stable-compaction-checkpoint.md +54 -0
  795. package/docs/decisions/ADR-0068-scope-and-completion-report.md +60 -0
  796. package/docs/decisions/ADR-0069-stop-gate-and-finish.md +136 -0
  797. package/docs/decisions/ADR-0070-terminal-slice-continuation.md +49 -0
  798. package/docs/decisions/ADR-0071-completion-check.md +104 -0
  799. package/docs/decisions/ADR-0072-codex-prompts-and-goal.md +108 -0
  800. package/docs/decisions/ADR-0073-large-reporting-prompt.md +89 -0
  801. package/docs/decisions/ADR-0074-report-content-not-report-blocks.md +90 -0
  802. package/docs/decisions/ADR-0075-no-todo-gate.md +84 -0
  803. package/docs/decisions/ADR-0076-codex-final-answer-verbatim.md +98 -0
  804. package/docs/decisions/ADR-0077-plan-runs-may-conclude-no-plan-needed.md +120 -0
  805. package/docs/decisions/ADR-0078-child-aware-stall-watch.md +46 -0
  806. package/docs/decisions/ADR-0079-phase-led-reporting-guidance.md +72 -0
  807. package/docs/decisions/ADR-0080-fixed-width-question-sketch-canvas.md +50 -0
  808. package/docs/decisions/ADR-0081-no-work-slice-budget-by-default.md +36 -0
  809. package/docs/decisions/ADR-0082-connected-brave-browser.md +72 -0
  810. package/docs/decisions/ADR-0083-one-live-session-runtime.md +256 -0
  811. package/docs/doctor.md +95 -0
  812. package/docs/experiments/EXP-0001-terminal-input-latency/plan.md +81 -0
  813. package/docs/experiments/EXP-0001-terminal-input-latency/results.md +46 -0
  814. package/docs/experiments/EXP-0002-opentui-typing-latency/plan.md +70 -0
  815. package/docs/experiments/EXP-0002-opentui-typing-latency/results.md +92 -0
  816. package/docs/experiments/EXP-0003-performance-audit/data/session-runtime-replication.json +420 -0
  817. package/docs/experiments/EXP-0003-performance-audit/data/session-runtime.json +420 -0
  818. package/docs/experiments/EXP-0003-performance-audit/data/terminal-compact.json +376 -0
  819. package/docs/experiments/EXP-0003-performance-audit/data/terminal-history.json +422 -0
  820. package/docs/experiments/EXP-0003-performance-audit/data/terminal-question.json +95 -0
  821. package/docs/experiments/EXP-0003-performance-audit/data/terminal-wide.json +1036 -0
  822. package/docs/experiments/EXP-0003-performance-audit/plan.md +109 -0
  823. package/docs/experiments/EXP-0003-performance-audit/results.md +151 -0
  824. package/docs/features/README.md +46 -0
  825. package/docs/features/automations/README.md +41 -0
  826. package/docs/features/cores/README.md +39 -0
  827. package/docs/features/google-harness2/README.md +52 -0
  828. package/docs/features/integrations/README.md +40 -0
  829. package/docs/features/interfaces/README.md +29 -0
  830. package/docs/features/memory/README.md +28 -0
  831. package/docs/future-work.md +48 -0
  832. package/docs/handoff-2026-10-25-app-parity-and-solo-tabs.md +202 -0
  833. package/docs/parity.md +158 -0
  834. package/docs/releases/1.0.0.md +40 -0
  835. package/docs/releases/1.1.1.md +28 -0
  836. package/docs/releases/1.2.0.md +49 -0
  837. package/docs/releases/1.3.0.md +21 -0
  838. package/docs/releases/1.3.1-unstable.1.md +8 -0
  839. package/docs/releases/1.3.1-unstable.2.md +11 -0
  840. package/docs/releases/1.3.1-unstable.3.md +54 -0
  841. package/docs/releases/1.3.1-unstable.4.md +56 -0
  842. package/docs/releases/1.3.1-unstable.5.md +53 -0
  843. package/docs/releases/1.3.1-unstable.6.md +31 -0
  844. package/docs/releases/1.3.1-unstable.7.md +17 -0
  845. package/docs/releases/1.3.1-unstable.8.md +19 -0
  846. package/docs/releases/1.3.1-unstable.9.md +54 -0
  847. package/docs/releases/1.4.0-unstable.md +25 -0
  848. package/docs/releases/1.5.0-unstable.md +32 -0
  849. package/docs/releases/1.5.1-unstable.md +24 -0
  850. package/docs/releases/1.6.0-unstable.md +59 -0
  851. package/docs/releases/2.0.1-unstable.md +63 -0
  852. package/docs/releases/4.0.0.md +47 -0
  853. package/docs/releases/README.md +49 -0
  854. package/docs/study/00-index.md +112 -0
  855. package/docs/study/STUDY-0003-long-horizon-runs.md +210 -0
  856. package/docs/study/STUDY-0004-turn-end-controls.md +130 -0
  857. package/docs/study/STUDY-0005-skill-installation-guidance.md +146 -0
  858. package/docs/study/STUDY-0006-reporting-prompts.md +119 -0
  859. package/docs/study/STUDY-0007-claude-code-prompt.md +162 -0
  860. package/docs/study/STUDY-0008-browser-control.md +281 -0
  861. package/docs/study/STUDY-0009-claude-code-reporting.md +205 -0
  862. package/docs/study/arms/00-matrix.md +20 -0
  863. package/docs/study/arms/01-system-prompt.md +211 -0
  864. package/docs/study/arms/02-tools.md +79 -0
  865. package/docs/study/arms/03-subagents.md +90 -0
  866. package/docs/study/arms/04-skills.md +81 -0
  867. package/docs/study/arms/05-context-management.md +90 -0
  868. package/docs/study/arms/06-memory.md +90 -0
  869. package/docs/study/arms/07-governance.md +71 -0
  870. package/docs/study/arms/08-execution.md +69 -0
  871. package/docs/study/arms/09-observability.md +60 -0
  872. package/docs/study/arms/10-refinement.md +110 -0
  873. package/docs/study/autonomous-engineering-sources.md +277 -0
  874. package/docs/study/autonomy-sources.md +147 -0
  875. package/docs/study/btw-comparison.md +37 -0
  876. package/docs/study/feature-gap-review.md +42 -0
  877. package/docs/study/insights.md +123 -0
  878. package/docs/study/proactive-autonomy.md +408 -0
  879. package/docs/study/roadmap.md +72 -0
  880. package/docs/study/sources/claude-code.md +56 -0
  881. package/docs/study/sources/deepseek-harness.md +102 -0
  882. package/docs/study/sources/harness2.md +50 -0
  883. package/docs/study/sources/kimi-cli.md +42 -0
  884. package/docs/study/sources/omp.md +93 -0
  885. package/docs/study/sources/opencode.md +43 -0
  886. package/docs/study/sources/openhands.md +46 -0
  887. package/docs/study/sources/smolagents.md +40 -0
  888. package/docs/study/sources/swe-agent.md +34 -0
  889. package/docs/study/tui-resource-browser.md +78 -0
  890. package/docs/system-prompt-design.md +196 -0
  891. package/docs/terminal-tui.md +887 -109
  892. package/package.json +46 -13
  893. package/src/accounts/accounts.test.ts +0 -419
  894. package/src/accounts/accounts.ts +0 -760
  895. package/src/accounts/env.test.ts +0 -95
  896. package/src/accounts/env.ts +0 -338
  897. package/src/accounts/secrets.ts +0 -50
  898. package/src/accounts/store.ts +0 -338
  899. package/src/capabilities/api.ts +0 -75
  900. package/src/capabilities/runSnapshot.ts +0 -59
  901. package/src/capabilities/types.ts +0 -34
  902. package/src/cli.ts +0 -118
  903. package/src/core/bus.test.ts +0 -22
  904. package/src/core/bus.ts +0 -49
  905. package/src/core/changes.ts +0 -33
  906. package/src/core/env.ts +0 -27
  907. package/src/core/errors.ts +0 -32
  908. package/src/core/frontmatter.ts +0 -47
  909. package/src/core/fs.test.ts +0 -38
  910. package/src/core/fs.ts +0 -92
  911. package/src/core/index.ts +0 -193
  912. package/src/core/path.test.ts +0 -14
  913. package/src/core/path.ts +0 -79
  914. package/src/core/projects.ts +0 -90
  915. package/src/core/text.ts +0 -39
  916. package/src/harness.ts +0 -322
  917. package/src/hub/catalog.json +0 -123
  918. package/src/hub/cli.ts +0 -59
  919. package/src/hub/hub.test.ts +0 -205
  920. package/src/hub/hub.ts +0 -256
  921. package/src/hub/schema.ts +0 -81
  922. package/src/index.ts +0 -80
  923. package/src/mcp/connections.ts +0 -641
  924. package/src/mcp/manager.ts +0 -130
  925. package/src/mcp/oauth.ts +0 -195
  926. package/src/mcp/scopeMigration.test.ts +0 -79
  927. package/src/mcp/scopeMigration.ts +0 -204
  928. package/src/mcp/service.test.ts +0 -422
  929. package/src/mcp/service.ts +0 -560
  930. package/src/mcp/types.ts +0 -118
  931. package/src/memory/api.test.ts +0 -82
  932. package/src/memory/api.ts +0 -303
  933. package/src/memory/blocks.test.ts +0 -78
  934. package/src/memory/blocks.ts +0 -408
  935. package/src/memory/caller.ts +0 -69
  936. package/src/memory/curation.test.ts +0 -206
  937. package/src/memory/curation.ts +0 -64
  938. package/src/memory/dispatch.ts +0 -64
  939. package/src/memory/facts.test.ts +0 -41
  940. package/src/memory/facts.ts +0 -248
  941. package/src/memory/graph.ts +0 -103
  942. package/src/memory/health.test.ts +0 -130
  943. package/src/memory/health.ts +0 -74
  944. package/src/memory/maintainer.ts +0 -272
  945. package/src/memory/maintenance.test.ts +0 -192
  946. package/src/memory/maintenance.ts +0 -679
  947. package/src/memory/migrate.ts +0 -79
  948. package/src/memory/operations.ts +0 -150
  949. package/src/memory/proposals.test.ts +0 -168
  950. package/src/memory/proposals.ts +0 -584
  951. package/src/memory/recall.test.ts +0 -115
  952. package/src/memory/recall.ts +0 -279
  953. package/src/memory/references.ts +0 -77
  954. package/src/memory/runContext.ts +0 -93
  955. package/src/memory/secrets.ts +0 -6
  956. package/src/memory/store.test.ts +0 -66
  957. package/src/memory/store.ts +0 -385
  958. package/src/memory/trajectory.test.ts +0 -178
  959. package/src/memory/trajectory.ts +0 -220
  960. package/src/memory/wiki.test.ts +0 -47
  961. package/src/memory/wiki.ts +0 -423
  962. package/src/memory/wikiIndex.test.ts +0 -88
  963. package/src/memory/wikiIndex.ts +0 -117
  964. package/src/plugins/api.ts +0 -181
  965. package/src/plugins/attachments.test.ts +0 -84
  966. package/src/plugins/attachments.ts +0 -141
  967. package/src/plugins/builtin.ts +0 -84
  968. package/src/plugins/catalogue.test.ts +0 -254
  969. package/src/plugins/catalogue.ts +0 -251
  970. package/src/plugins/cli.ts +0 -184
  971. package/src/plugins/discover.ts +0 -151
  972. package/src/plugins/firstParty.test.ts +0 -143
  973. package/src/plugins/firstParty.ts +0 -129
  974. package/src/plugins/hooks.test.ts +0 -250
  975. package/src/plugins/hooks.ts +0 -239
  976. package/src/plugins/identity.ts +0 -37
  977. package/src/plugins/install.test.ts +0 -107
  978. package/src/plugins/install.ts +0 -106
  979. package/src/plugins/inventory.ts +0 -123
  980. package/src/plugins/manifest.ts +0 -76
  981. package/src/plugins/plugins.test.ts +0 -205
  982. package/src/plugins/plugins.ts +0 -189
  983. package/src/plugins/proposal.ts +0 -121
  984. package/src/plugins/runtime.test.ts +0 -40
  985. package/src/plugins/runtime.ts +0 -82
  986. package/src/plugins/trust.ts +0 -142
  987. package/src/plugins/types.ts +0 -149
  988. package/src/prompt/compile.test.ts +0 -261
  989. package/src/prompt/compile.ts +0 -732
  990. package/src/server/methods.ts +0 -355
  991. package/src/server/remote.ts +0 -77
  992. package/src/server/rpc.ts +0 -116
  993. package/src/server/serve.ts +0 -28
  994. package/src/server/server.test.ts +0 -193
  995. package/src/sessions/approvals.test.ts +0 -49
  996. package/src/sessions/approvals.ts +0 -140
  997. package/src/sessions/contracts.ts +0 -336
  998. package/src/sessions/conversation.test.ts +0 -233
  999. package/src/sessions/extensionSession.test.ts +0 -74
  1000. package/src/sessions/extensionUi.test.ts +0 -65
  1001. package/src/sessions/extensionUi.ts +0 -102
  1002. package/src/sessions/history.ts +0 -51
  1003. package/src/sessions/lineageJoin.ts +0 -75
  1004. package/src/sessions/policy.ts +0 -36
  1005. package/src/sessions/pricing.ts +0 -60
  1006. package/src/sessions/questionBatches.test.ts +0 -110
  1007. package/src/sessions/reasoningSummaries.ts +0 -59
  1008. package/src/sessions/registry.ts +0 -412
  1009. package/src/sessions/runIndex.ts +0 -99
  1010. package/src/sessions/runStore.test.ts +0 -152
  1011. package/src/sessions/runStore.ts +0 -346
  1012. package/src/sessions/runner.ts +0 -610
  1013. package/src/sessions/runtimeResources.test.ts +0 -61
  1014. package/src/sessions/sessions.test.ts +0 -588
  1015. package/src/sessions/sessions.ts +0 -331
  1016. package/src/sessions/subagentService.test.ts +0 -159
  1017. package/src/sessions/subagentService.ts +0 -236
  1018. package/src/sessions/subagents.ts +0 -97
  1019. package/src/skills/registry.test.ts +0 -104
  1020. package/src/skills/registry.ts +0 -413
  1021. package/src/terminal/accountsMenu.test.ts +0 -225
  1022. package/src/terminal/accountsMenu.ts +0 -382
  1023. package/src/terminal/cli.ts +0 -149
  1024. package/src/terminal/client.ts +0 -74
  1025. package/src/terminal/control.test.ts +0 -23
  1026. package/src/terminal/control.ts +0 -23
  1027. package/src/terminal/controller.ts +0 -354
  1028. package/src/terminal/hubMenu.ts +0 -24
  1029. package/src/terminal/launch.test.ts +0 -25
  1030. package/src/terminal/launch.ts +0 -48
  1031. package/src/terminal/piExtension.lifecycle.test.ts +0 -55
  1032. package/src/terminal/piExtension.ts +0 -295
  1033. package/src/terminal/pluginControl.test.ts +0 -146
  1034. package/src/terminal/pluginMenu.ts +0 -112
  1035. package/src/terminal/socket.test.ts +0 -94
  1036. package/src/terminal/socket.ts +0 -256
  1037. package/src/terminal/standalone.test.ts +0 -167
  1038. package/src/terminal/standalone.ts +0 -165
  1039. package/src/terminal/terminal.test.ts +0 -534
  1040. package/src/terminal/terminals.ts +0 -661
  1041. package/src/terminal/trajectory.test.ts +0 -66
  1042. package/src/terminal/trajectory.ts +0 -44
  1043. package/src/terminal/tui/application.test.ts +0 -290
  1044. package/src/terminal/tui/application.ts +0 -653
  1045. package/src/terminal/tui/commands.test.ts +0 -278
  1046. package/src/terminal/tui/commands.ts +0 -443
  1047. package/src/terminal/tui/dialogs.ts +0 -301
  1048. package/src/terminal/tui/editor.test.ts +0 -113
  1049. package/src/terminal/tui/editor.ts +0 -109
  1050. package/src/terminal/tui/keybindings.test.ts +0 -30
  1051. package/src/terminal/tui/keybindings.ts +0 -59
  1052. package/src/terminal/tui/piAdapter.ts +0 -62
  1053. package/src/terminal/tui/planMode.test.ts +0 -10
  1054. package/src/terminal/tui/planMode.ts +0 -12
  1055. package/src/terminal/tui/presentation.test.ts +0 -79
  1056. package/src/terminal/tui/questions.test.ts +0 -41
  1057. package/src/terminal/tui/questions.ts +0 -47
  1058. package/src/terminal/tui/runtime.socket.test.ts +0 -178
  1059. package/src/terminal/tui/runtime.test.ts +0 -225
  1060. package/src/terminal/tui/runtime.ts +0 -403
  1061. package/src/terminal/tui/screen.test.ts +0 -143
  1062. package/src/terminal/tui/screen.ts +0 -121
  1063. package/src/terminal/tui/sessionUi.ts +0 -24
  1064. package/src/terminal/tui/settings.test.ts +0 -150
  1065. package/src/terminal/tui/settings.ts +0 -188
  1066. package/src/terminal/tui/skillInvocation.test.ts +0 -71
  1067. package/src/terminal/tui/skillInvocation.ts +0 -51
  1068. package/src/terminal/tui/status.test.ts +0 -48
  1069. package/src/terminal/tui/status.ts +0 -82
  1070. package/src/terminal/tui/theme.ts +0 -185
  1071. package/src/terminal/tui/tools.test.ts +0 -145
  1072. package/src/terminal/tui/tools.ts +0 -142
  1073. package/src/terminal/tui/trajectoryPanel.test.ts +0 -99
  1074. package/src/terminal/tui/trajectoryPanel.ts +0 -226
  1075. package/src/terminal/tui/transcript.test.ts +0 -39
  1076. package/src/terminal/tui/transcript.ts +0 -135
  1077. package/src/terminal/tui/ui.test.ts +0 -313
  1078. package/src/terminal/tui/ui.ts +0 -166
  1079. package/src/terminal/tui/welcome.ts +0 -102
  1080. package/src/terminal/tui/workingStatus.test.ts +0 -44
  1081. package/src/terminal/tui/workingStatus.ts +0 -238
  1082. package/src/tools/askUser.test.ts +0 -69
  1083. package/src/tools/askUser.ts +0 -59
  1084. package/src/tools/definitions.ts +0 -228
  1085. package/src/tools/maintenance.ts +0 -29
  1086. package/src/tools/memoryTools.ts +0 -22
  1087. package/src/tools/pluginPropose.ts +0 -41
  1088. package/src/tools/registryWrite.test.ts +0 -101
  1089. package/src/tools/registryWrite.ts +0 -182
  1090. package/src/tools/spawnSubagent.ts +0 -47
  1091. package/src/tools/types.ts +0 -41
  1092. package/src/web/safeRequest.ts +0 -171
  1093. package/src/web/text.ts +0 -53
  1094. package/src/web/tools.ts +0 -134
  1095. package/src/web/web.test.ts +0 -141
@@ -0,0 +1,277 @@
1
+ # 04 Prompt
2
+
3
+ ## Purpose
4
+
5
+ One compiler builds every model instruction the harness gives. A terminal compiles its pack again
6
+ only when the person switches the conversation to another variant version, at a turn boundary
7
+ (ADR-0065); that costs the provider cache once. It merges the pinned variant's
8
+ sections, the harness's own sections and the application's sections into an ordered,
9
+ budgeted pack, then splits the pack into a **stable system prompt** (cached by the provider) and
10
+ a **context update** (changing state appended to native history). Keeping the two apart is what
11
+ keeps provider caching effective across turns.
12
+
13
+ ## Components
14
+
15
+ | Type / function | Role |
16
+ |---|---|
17
+ | `compile(env, caller, launch, variant)` → `ContextPack` | Builds the ordered, budgeted sections, including the configured data-root path in native file guidance. |
18
+ | `render(env, pack)` → `string` | One string for a session that takes a single prompt. |
19
+ | `renderSized(env, pack)` → `{ text, sizes, framing }` | The same string, plus the characters each section occupied and the framing around them. |
20
+ | `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. |
21
+ | `deliveredSnapshot(sessionFile)` | Reads the last delivered snapshot on the active history branch; a compaction forces a fresh one. |
22
+ | `renderCompactionCheckpoint` | Compiles a bounded current-request, todo list and plan-state message for post-compaction model requests. |
23
+ | `saveForSession`, `copyToRun` | Terminal sessions keep the pack they started with and copy it to each run. |
24
+ | `record`, `load`, `packPath` | The pack each run was given, at `runs/<id>/context.json`. |
25
+ | `toolGroups`, `fit`, `clip` | The tool manifest by group; cutting text to a budget at a paragraph boundary. |
26
+
27
+ Assembly is in `prompt/compile.ts`; shared standard-section data is in `prompt/standard.ts`.
28
+ A `ContextPack` holds `sections: Section[]` (each with `id`, `title`,
29
+ `body`, `sources`, `budget`, `size`, `cut`), `toolGroups`, `harness` (scope and fingerprint),
30
+ `profile`, `compiledAt` and `delivery` (`systemSectionIds`, `updatedSectionIds`).
31
+
32
+ `delivery.sizes` records what each delivered section occupied when it was rendered — `system` and
33
+ `update` maps by section id, plus the framing characters that belong to no section (the product
34
+ heading, the section headings, the context-update guidance). It is what lets a surface attribute the
35
+ context window without re-parsing a prompt whose bodies may contain their own headings. A pack
36
+ recorded before the compiler measured them has no `sizes`, and a reader then falls back to
37
+ `Section.size` and says the split is approximate.
38
+
39
+ ## Section order
40
+
41
+ `SECTION_ORDER`: `harnessIdentity` 5, `system` 25, `sessionState` 30, `guardrails` 40, `memory` 45, `references` 50, `requiredSkills` 52, `subagents` 64, `scripts` 66, `wiki` 80, `tools` 90, `reporting` 95. Application sections
42
+ sit among them by their `order`; plan mode uses `plan` at 25. Ties keep insertion order.
43
+ When a run may spawn, the dynamic `subagents` section lists every profile it can start (built-in,
44
+ global, project and variant c5 names) and replaces the variant's own list (PROP-0029). Normal-mode
45
+ guidance in that section explains when delegation is worth its overhead, profile selection,
46
+ self-contained briefs, independent parallel work, and parent ownership of integration. Plan mode
47
+ lists only effective profiles eligible for read-only research and requires a named profile; keeping
48
+ this section dynamic leaves the stable system prompt unchanged across modes. The `tools`
49
+ section has a Progress paragraph whenever `todo_write` is available: it asks for `todo_write` before
50
+ the first other tool call when work has several steps, asks for the list to stay current, then
51
+ requests a final update before the reply. Only fully completed work is
52
+ marked completed; unfinished or blocked steps remain accurate (PROP-0006).
53
+
54
+ `session-state` is a built-in dynamic section at order 30 when a top-level run supplies it. It
55
+ names the current session or says “unnamed”, shows this run's todo (empty at the start) and a
56
+ previous run's list as context, and says whether this is the first turn. It describes only tools
57
+ in the frozen set: the name line appears only with `session_name`, and the todo line only with
58
+ `todo_write`. It never enters the stable prefix. Structured sessions deliver it through
59
+ `sessionLaunch` and the changed-section rule; the terminal appends the same text as a request-time
60
+ custom message.
61
+
62
+ `required-skills` is a built-in dynamic section at order 52 when `Launch.requiredSkills` names any
63
+ skill. Named in a message as `$name`, a skill is required for that request: the compiler reads its
64
+ `SKILL.md` from the pinned variant (the built-in `plugin-authoring` skill fills in when the variant
65
+ has none) through `readSkillFile`, and the section carries the skill's text and the directive to
66
+ follow it. It is bounded like `references`, names an unavailable skill honestly, and changes no tool
67
+ or permission. Structured sessions deliver it through `sessionLaunch`; the terminal builds the same
68
+ text with `requiredSkillsText` from Pi's loaded skills and appends it as a hidden request-time custom
69
+ message. The section belongs to the request, so an identical one is delivered again.
70
+
71
+ The fixed `harness-identity` section says `You are an AI agent running in <productName>[, based on
72
+ <model>]. You and the user share one workspace, and your job is to collaborate with them until their
73
+ intended goal is completely handled.` It uses `env.productName` (default `Xingular Agent`) and
74
+ `Launch.model` when the host knows the model. `Launch.standard: { cwd, project?: { name } | null }` requests shared role, personality and working-folder
75
+ sections from `prompt/standard.ts`; the compiler supplies common connections, file and annotation
76
+ guidance for the effective tools. Terminal preparation defaults to standard sections (explicit
77
+ `standard: null` opts out); the host interactive path requests the same sections. Hosts may add
78
+ attributed add-on and task context, not a duplicate standard role or connection policy (PROP-0040).
79
+
80
+ Budgets (characters): variant sections 30,000 each (already capped at save, so never cut here);
81
+ references 12,000; Wiki pointer 2,500; tools 8,000; reporting 12,000 (ADR-0076); the
82
+ standard session's sections: role 1,400, autonomy 2,600, personality 1,200, permission 1,800,
83
+ steering 2,000, writing 1,900 (ADR-0072); application sections their own `budget`.
84
+
85
+ ## Reporting
86
+
87
+ Every pack ends with the harness's `reporting` section ("Reporting your work",
88
+ `REPORTING_GUIDANCE` in `prompt/reporting.ts`, imported by `prompt/compile.ts`). It is fixed text
89
+ that shapes the final reply. ADR-0076 adopts Codex's final-answer guidance (`gpt-6.1-sol`), amended
90
+ by ADR-0079: the reply is self-contained, outcome-first, explains the work and its evidence and
91
+ limits, and gives the reader enough context to pick it up cold. It explicitly reports checks that
92
+ were not run or failed; a person-owned next step appears only when one is needed. For substantial
93
+ replies with distinct parts, it often uses content-named Markdown `#` and `##` headings; there is no
94
+ fixed heading vocabulary or required template, and short replies may stay in prose. Code fences name
95
+ the language; commands the person must run use a `bash` fence, while short references stay inline.
96
+ Tables are used for mappings and comparisons. Length follows complexity; prose comes first, with
97
+ lists when the information is genuinely parallel, sequential or easier to compare. References and formatting
98
+ follow rules supplied by the active session or host. Progress updates stay in the standard `writing`
99
+ section, not `reporting`. A subagent's reply gives its caller the concise work
100
+ summary and key findings, with useful absolute paths and evidence; snippets appear only when exact
101
+ text is load-bearing, and code merely read is not recapped. The section ships two examples (a
102
+ headed screen change and a heading-free blocked publish), the shape-by-work table and a four-line
103
+ pre-send list; the blocked-publish example puts its login command in a `bash` fence. A person,
104
+ application or mode format takes precedence. The section names no application, is never dynamic, and is never cut; its
105
+ budget is 12,000 characters, with 5,081 currently delivered (ADR-0079, amended for language-labeled
106
+ code fences).
107
+
108
+ ## When a reply may end
109
+
110
+ A reply ends when the request is done, when the compaction guard ends it (INV-RUN-13), when a person
111
+ interrupts, or when the work cannot continue without the person. An open todo item, a passing check,
112
+ a partial result or a long task is not such a reason: the words below ask the model to carry the
113
+ request to completion, and they are the only layer (ADR-0075). The harness does not send a reply
114
+ back and does not mark it unfinished from the todo list; a reply the model ends settles `completed`.
115
+ **No model judges an ordinary reply**; a goal's completion claim is the one thing a model checks
116
+ (INV-RUN-16). A goal that ends blocked settles `needs_person`; a goal that ends on a limit, a pause
117
+ or a stall settles `unfinished`.
118
+
119
+ The words are what asks the model to carry on, and none of them may read as permission to stop with
120
+ work left. A person's own session (`launch.standard`, `prompt/standard.ts`)
121
+ reads six stable sections adapted from OpenAI Codex's gpt-6.1-sol instructions (Apache-2.0, see
122
+ `NOTICE.md`), the same for every model so the terminal and a host read the same text (INV-PAR-1):
123
+
124
+ - `role` — the assistant's job, and the extra work it does without asking (the obvious adjacent
125
+ step, what the work exposes, the check it needs) inside the working folder and away from what a
126
+ person must decide (a deploy, a secret, remote data, money). Extra work and departures from the
127
+ plan are allowed on those terms and reported at the end.
128
+ - `autonomy` — bias to action; persist until the intended goal is complete; "can you...", "help
129
+ me..." are instructions; no partial or "helpful enough" solution; an open todo item, a passing
130
+ check, a partial result or a long task is not a reason to end the turn; the todo list shows
131
+ progress and the request is the scope; which decisions are the agent's own; a document the request
132
+ points to is the request; a question the request or files already answer is not a question for the
133
+ person; the only reasons to stop, one of them a fix to a test or error that does not come from
134
+ this session's work (and then say exactly what is needed).
135
+ - `personality` — curious, thoughtful and candid; keeps its own judgment, disagrees when it has
136
+ reason and reconsiders when the evidence warrants it, without flattery or forced enthusiasm.
137
+ - `permission` — authorisation persists; finish the authorised work first so that approval is the
138
+ last step; no permission for reversible, read-only or already authorised work; a test or error
139
+ that does not come from this session's work is reported, not fixed, unless the person asks (a
140
+ failure is this session's work when the agent's changes caused it), and is kept off the todo
141
+ list; no messages to other people unless asked; when the agent must ask, it says why and where
142
+ the requirement comes from.
143
+ - `steering` — a new message steers the active task; a correction means "fix it"; compaction does
144
+ not end the task, and work across compactions is one chain.
145
+ - `writing` — plain words, the outcome first, evidence and limits, routine verification summarised,
146
+ no AI-slop phrases, no "X, not Y" contrast, no invented labels, no needless apology.
147
+
148
+ Other fixed text that shapes the end of a reply:
149
+
150
+ - `TODO_GUIDANCE` (`tools/todo.ts`): the list is progress, not scope; the request, and any document
151
+ it points to, is the scope; add steps as the work shows them; list a handoff's steps instead of one
152
+ "remaining work" item; before ending, compare the request, not the list, with what is done and
153
+ checked. An open step is work to do in this reply, not something to report.
154
+ - `reporting` (`REPORTING_GUIDANCE`): the final answer is self-contained, outcome-first and gives
155
+ the reader enough context to pick up cold. It reports checks accurately, including checks not run
156
+ or failed; names a person's next step only when one is needed; and often uses content-named `#` / `##`
157
+ headings for substantial multi-part replies without a fixed heading set. A subagent gives its
158
+ caller a concise report of the work and findings. Length and structure follow the content, and
159
+ references follow the active session's format; a login the work needs is named with its exact
160
+ command.
161
+ - `ask_user` (`tools/askUser.ts`): for a decision the request and files do not answer, never for
162
+ permission to do work inside the request; no answer means continue with best judgment (Codex's
163
+ Default-mode rule).
164
+ - In a person's own session the `Progress` tool group says that a reply with open items is sent back.
165
+ There is no tool to stop "on purpose": ADR-0069 removed `checkpoint_write` and ADR-0071 removed
166
+ `finish`. The only tool that ends work is `update_goal` in a goal the person started (INV-TOOL-9).
167
+
168
+ All of these are fixed text in the stable prefix, so changing them changes the cached prefix once.
169
+ A live terminal session keeps the pack, and the extension code, it started with; a harness update
170
+ reaches it only when the session restarts.
171
+
172
+ A goal's text (`sessions/goalPrompts.ts`, adapted from Codex's `ext/goal/templates`) is not in the
173
+ prefix: the continuation, round-cap and edit prompts ride as hidden user messages, with the
174
+ objective escaped and wrapped as data (INV-PRM-2).
175
+
176
+ ## Delivery
177
+
178
+ ```text
179
+ compile ──► pack ──► stable sections ──► system prompt (+ "Context updates" guidance)
180
+ └──► dynamic sections ──► compare with delivered snapshot ──► custom message
181
+ type xingular-context
182
+ ```
183
+
184
+ - Dynamic sections are the built-in `references`, `required-skills` and `wiki`, plus every application section with
185
+ `dynamic: true`.
186
+ - The rendered sizes of both halves are recorded with the pack (`delivery.sizes`), so the context a run
187
+ was given can be attributed after the fact without replaying the compiler.
188
+ - An update lists only the dynamic sections that changed, and announces a withdrawn one.
189
+ `references` and `required-skills` are always resent when present, because they belong to the current request.
190
+ - After a compaction during the active run, the foundation checkpoint extension detects the new
191
+ summary and uses `renderCompactionCheckpoint` once to build one hidden, ephemeral context message.
192
+ It inserts that same message directly after the summary in each later model request while the run
193
+ continues, when a todo list or applicable plan instructions existed at the compaction. A moving
194
+ message would make each request differ from the previous one before its end and defeat provider
195
+ caching (ADR-0067). A run that starts from already-compacted history gets no checkpoint.
196
+ It contains only the current request and available state. It is not written to native history, and its state is
197
+ discarded when the run settles or the branch changes.
198
+ - The session appends the update as a hidden custom message and saves its snapshot in the
199
+ message details (`xingularContext`); recording a pack does not mark it delivered.
200
+ - Terminal sessions use `compile` + `render` once, pass it as `--append-system-prompt`, and keep
201
+ that pack for the life of the session.
202
+ - Native file guidance states that absolute and `~` paths work for reads when the operating
203
+ system permits access, names the configured data root, and describes the working folder as a
204
+ default location. Native writes and Bash filesystem effects default to the run's pinned project
205
+ or worktree root; an outside file target is allowed, and the Harness pauses that one call until
206
+ the person allows or denies it with a control. The tools section opens with the approval rule:
207
+ call the tool, never ask for permission in a message, and never end the turn to wait for an
208
+ answer. Bash is sandboxed unless the eligible user explicitly enables Full Permission. Edits and
209
+ commands remain subject to the gate.
210
+ - A side-question launch attributes its fixed no-tool instruction to the `side-questions` plugin.
211
+ Its launch suppresses tool guidance entirely. The main run's effective prompt and current context
212
+ update are included in the separately bounded, redacted context message (PROP-0019).
213
+
214
+ ## Launch parity status (2026-11-19)
215
+
216
+ Shared section generation is present in source; `surfaceParity.test.ts` checks compiler equality.
217
+ That does not verify actual prepared launches, registered schemas, credentials, variant pins or
218
+ provider-cache reuse. PROP-0040 also requires one Harness-owned interactive default for roots,
219
+ variant scope and credential backend. Adoption and runtime acceptance remain in progress; explicit
220
+ roots/scopes and continuation pins take precedence. Matching `--data` alone cannot reconcile a
221
+ file SecretStore with a host Keychain. See [parity](../parity.md).
222
+
223
+ ## Invariants
224
+
225
+ - **INV-PRM-1** The prompt is assembled only in `src/prompt/compile.ts`. Nothing else builds model
226
+ instructions. SDK sessions use `sessionLaunch`; terminal sessions use `compile` + `render`.
227
+ - **INV-PRM-2** The system prompt holds only stable text: identity, role, the variant's sections, the
228
+ harness's reporting guidance, tool guidance and the tool manifest. Changing state never enters it.
229
+ - **INV-PRM-3** `session-state`, `references`, `required-skills`, `wiki`, and every section the application marks
230
+ `dynamic` are delivered as context updates in native history, never in the system prompt.
231
+ - **INV-PRM-4** An update carries only changed dynamic sections, so an unchanged turn appends
232
+ nothing. A compaction on the active branch forces the full snapshot again.
233
+ - **INV-PRM-5** The pack only describes tools the caller can call (the frozen capability set).
234
+ `ask_user` is not part of the compiler's tool-group manifest; its mode-specific availability is
235
+ resolved with the run's callable tools (page 02).
236
+ - **INV-PRM-6** Each run's pack is recorded beside the run. Failing to record it never fails the
237
+ session.
238
+ - **INV-PRM-7** The compiler is synchronous (`INV-BND-4`).
239
+ - **INV-PRM-8** Whether a prompt or callable tool-list change keeps the provider's cache is measured
240
+ with real requests from the application, only with the account owner's permission. Tests do not
241
+ stand in for it.
242
+ - **INV-PRM-9** Native file guidance describes the boundary accurately: absolute and `~` paths
243
+ are valid for read-only file tools, which remain bounded by OS permissions rather than the
244
+ workspace root. Native file writes and Bash filesystem effects are workspace-scoped by default;
245
+ the working folder itself is not the boundary. Side-question runs with no callable tools omit
246
+ tool guidance.
247
+ - **INV-PRM-10** Compaction checkpoints are assembled by this compiler, bounded, and delivered only
248
+ as ephemeral context while their active run continues, at a fixed place right after the compaction
249
+ summary and unchanged until the next compaction. They do not change the stable system prompt
250
+ or native history, and do not carry hidden reasoning (PROP-0033, ADR-0032, ADR-0067). A work-slice handoff is
251
+ the same kind of bounded projection: the `checkpoint` event is rendered into the continuation
252
+ section by `continuationBody`, never into the system prompt (PROP-0041).
253
+ - **INV-PRM-11** The Progress group names `checkpoint_write` when it is in the frozen capability
254
+ set, with the same budget as the other tool guidance, and says only that a bounded reply records a
255
+ handoff when its budget is reached. It does not describe the limits themselves, which the guard
256
+ states at the boundary.
257
+
258
+ ## Relation to DESIGN-0001
259
+
260
+ [`../system-prompt-design.md`](../system-prompt-design.md) is a draft design (not accepted). Only
261
+ what this page states is binding. Adopting parts of that draft is an architecture change.
262
+
263
+ ## Source map
264
+
265
+ `src/prompt/compile.ts`, `src/sessions/sessions.ts` (calls `sessionLaunch`),
266
+ `src/terminal/terminals.ts` (calls `compile` + `render`), `src/sessions/sessionState.ts`
267
+ (the native name reader and state shape), `src/variant/materialise.ts` (variant sections),
268
+ `src/sessions/planMode.ts` (`plan` section).
269
+
270
+ ## Session naming guidance (PROP-0010)
271
+
272
+ The Session tool group describes `session_name` when available: call it once before the first
273
+ other tool call when a request needs tools or changes state, with an imperative sentence of at
274
+ most six words, and revise only when the objective changes.
275
+ This is fixed foundation guidance. The current name stays in native session metadata and
276
+ the terminal snapshot; it may appear in the request-scoped `session-state` update, but it is never
277
+ interpolated into the stable system prompt.
@@ -0,0 +1,134 @@
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`, `taskFromRun`, `wait`, `get`, `list`, `cancel`, `candidates`, `candidateDiff`, `candidateOutput`, `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). The default host replays a git snapshot in a shared clone (`prepareSnapshotWorkspace`). |
25
+ | `snapshotWorkingTree` | `worktrees/snapshot.ts` | The working tree as a typed turn found it, as a commit (PROP-0052). |
26
+ | prompts | `refine/prompts.ts` | Improver missions. |
27
+
28
+ ## Method
29
+
30
+ ```text
31
+ base variant ──► k base executions (probe runs, isolated workspaces)
32
+ ──► evidence folder (task, source, trajectories, deliverables, variant, library, pool)
33
+ ──► improvers: k INV (how the agent works) + k DOM (what a practitioner knows)
34
+ ──► probe each candidate ──► k compositions from behavioural contrasts ──► k finals
35
+ ──► blind selection among anonymised outputs ──► reflection ──► candidate for adoption
36
+ ```
37
+
38
+ Parallel mode explores wider; sequential mode refines deeper. Both cost R = 4k executions and
39
+ P = 3k improver sessions. An invalid proposal gets one retry with the validator's message
40
+ (`STAGE_ATTEMPTS = 2`), then inherits the current variant.
41
+
42
+ An **evaluation matrix** is the measurement half on its own: `runMatrix` runs every
43
+ `{variant version × task}` pair through the same `Executor` contract — no improver, no selection,
44
+ no adoption, and an empty or failed execution is an honest row. Every row records
45
+ deliverability (`ok`, `delivered`) and cost, plus its comparability keys (task-prompt hash,
46
+ executor name, package version, variant fingerprint), so matrices taken across variant versions or
47
+ package commits are diffable directly. An evaluation never moves a head, and it inherits the
48
+ answer-free rule: a variant or record carrying grader output is refused before any execution
49
+ (`INV-REF-1`).
50
+
51
+ ## Contracts
52
+
53
+ - `start({ task: { id, scope, prompt, ... }, k?, mode?: 'parallel' | 'sequential', baseVersion?, improver?, executor?, retainWorkspaces? })`
54
+ returns `{ id }` at once; progress arrives as `refine.changed` and `refine.event` notices.
55
+ - With `retainWorkspaces: true` (default `false`), each execution's workspace — base, candidate
56
+ and final — is copied whole to `rollouts/<label>/workspace/` after its run settles and before
57
+ the host's `cleanup`. Binary and hidden files are kept, and symbolic links are copied as links.
58
+ A failed copy is recorded as `workspaceError` in `rollout.json` and never fails the execution.
59
+ `candidates(id)` reports each execution's `workspace` path, or `null` (PROP-0002).
60
+ - `executor: { model?, effort?, accountId?, poolId? }` names how executions run. For each value
61
+ the host's `session(...)` wins, then `executor`, then the account default. `summary.json`
62
+ records `settings: { executor, improver }` as started; each probe run's record holds what it
63
+ resolved (PROP-0003).
64
+ - `adopt(id, { label?, tag? })` commits the chosen (or named) candidate as the scope's head with
65
+ source `refinement`, records `tunedFor` from the model its execution ran on, and tags it when
66
+ asked. It refuses while any plugin code in it is untrusted, and checks the tag before committing.
67
+ - `taskFromRun({ runId? | sessionId?, nativeSessionId?, guidance? })` builds a task that replays
68
+ one turn a person typed: its request text, the scope its variant came from, and its
69
+ `workspaceSnapshot` as `task.workspace`. With a session it takes the latest typed turn; with a
70
+ native session id it also finds turns recorded before the terminal restarted on another version.
71
+ It refuses a run something else started, a run with no variant, and a run with no snapshot, and
72
+ lists what the replay leaves out (attachments, untracked files the snapshot omitted).
73
+ - `task.workspace: { kind: 'git-snapshot', repo, commit }`: the default host prepares each
74
+ execution as a `--shared` clone of `repo` checked out at `commit`, with HEAD and the index at the
75
+ commit's parent, so tracked edits, deletions and new files look as they did. Ignored files named
76
+ by `.worktreeinclude` are copied from the repository as it is now. The person's repository gains
77
+ no worktree, ref or file.
78
+ - `task.guidance`: where the person asked improvers to look, at most 2,000 characters, refused when
79
+ it names measurement (`checkGuidance`). It is added to the INV, DOM, aggregate and compose
80
+ missions as a focus block that directs attention and keeps `KEEP_BASE` valid, and recorded on the
81
+ summary. It never reaches the selector or the reflector.
82
+ - `candidateDiff(id, label)` and `candidateOutput(id, label)` return one candidate's file changes
83
+ from the base and what its execution produced, for review before adopting.
84
+ - Executions run as `sessions.run` with `trigger: 'probe'`, `automatic: true`, in the host's
85
+ workspace. Improvers run with `trigger: 'improver'`, `automatic: true`, file tools only, no
86
+ providers, no connected apps, no harness tools, no variant, in a temporary copy of the evidence.
87
+
88
+ ## Invariants
89
+
90
+ - **INV-REF-1** Refinement is answer-free. No rubric, score, grader output or reviewer verdict
91
+ reaches an improver, the selector or the library. `refine/evidence.ts` guards every evidence
92
+ folder (`GRADER_VERDICT_MARKERS` as a tripwire) and `assertTreeHasNoGraderVerdicts` guards the
93
+ library. Retained workspaces are output for measurement after the fact; evidence, selection,
94
+ reflection and the library never read them.
95
+ - **INV-REF-2** The selector sees only the request, the source and the outputs, shuffled under
96
+ arbitrary ids. It never sees a harness, a trajectory, a verdict or the person's guidance.
97
+ - **INV-REF-3** The budget identity R = 4k, P = 3k holds in both modes (`Ledger.assertIdentity`).
98
+ A change to the method changes both modes and their tests together.
99
+ - **INV-REF-4** Refinement never acts in the world. Executions are unattended `probe` runs in a
100
+ folder the `RefineHost` prepared; anything that needs a person is refused at the gate, never
101
+ queued.
102
+ - **INV-REF-5** Improvers have file tools only and work on a copy of the evidence.
103
+ - **INV-REF-6** Refinement never moves a head by itself. Only `adopt`, a person's action, does, and
104
+ only with all plugin code trusted (`INV-VAR-5`).
105
+ - **INV-REF-7** The library carries whole adopted variants with an evidence-backed lesson, never a
106
+ summary in place of the variant.
107
+ - **INV-REF-8** Per-observation truncation of trajectories is never below `MIN_OBS_TRUNC`
108
+ (10,000 characters); lower values fabricate defects.
109
+
110
+ ## Data
111
+
112
+ ```text
113
+ <data root>/refine/<id>/ summary.json, task.json, variants/<label>/, rollouts/<label>/,
114
+ sessions/<label>/, context/, selection/, reflection/, improver/
115
+ <data root>/refine/<id>/rollouts/<label>/workspace/ only with retainWorkspaces
116
+ <data root>/refine/<id>/ matrix.json, suite.json (evaluation matrices; see above)
117
+ <data root>/library/<scope>/<area>/INDEX.md
118
+ <data root>/library/<scope>/<area>/variants/<task>/{variant/, EXPERIENCE.md}
119
+ ```
120
+
121
+ ## Source map
122
+
123
+ In the terminal, `/refine [--k N] [--mode parallel|sequential] [--model id] [--executor-model id]
124
+ [guidance]` replays the latest request typed in this conversation. It shows the request, its
125
+ snapshot, the focus, the run count (4k executions, 3k improver sessions, selection and reflection)
126
+ and the models, asks, then runs in the background with a status item. Executions use this chat's
127
+ model unless `--executor-model` names another; `--model` sets the improver's. `/refine status`,
128
+ `/refine stop` and `/refine review` follow it; review marks the selector's pick, shows each
129
+ candidate's changes and output, and adopts any candidate, then switches the conversation to it.
130
+
131
+ `src/refine/*.ts`. Method origin: Harness² (`harness2/core/{recursion,ledger,selection,library,context}.py`,
132
+ Apache-2.0). The evaluation matrix is this harness's addition (`refine/suite.ts`), shaped by the
133
+ same executor contract and demo executor. Try it with no model: `npm run build && node dist/cli.js refine demo --k 2`,
134
+ or evaluate a matrix with `node dist/cli.js refine matrix --demo [--data <root>] [--out <file.json>]`.
@@ -0,0 +1,208 @@
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, subagent profiles (`agent`), 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 plugin-owned terminal commands. Harness core commands live in `commands/registry.ts`, shared by both surfaces. |
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
+ | proposals | `plugins/proposals.ts` | Validate and store inert proposals; preview, reject or accept a hash-bound review. |
26
+ | inventory / api | `plugins/inventory.ts`, `plugins/api.ts` | `plugins.list`, `plugins.inventory`, attach, trust. |
27
+ | capability api | `capabilities/api.ts`, `capabilities/types.ts` | `list`, `resolve`, `toolIntersection`, `inventory`, `attach`. |
28
+ | run snapshot | `capabilities/runSnapshot.ts` | `freezeRun`, `loadRun`, `capabilitySet`. |
29
+
30
+ ## Contracts
31
+
32
+ - **Loading.** `Plugins.loading({ cwd, agentDir, caller, contributions, install? })` returns
33
+ `extensionPaths`, `skillPaths`, `promptPaths`, `themePaths`, `profilePaths`, `builtins` (legacy shape; no Pi CLI built-ins selected), `hooks`,
34
+ `found`, `detached`, `projectCode`, `packageCode`. `profilePaths` are read by the harness for
35
+ subagent profiles (page 02); Pi is never given them. A session opens Pi with its own discovery off
36
+ and only these paths; a terminal receives them as `--extension`, `--skill`,
37
+ `--prompt-template` and `--theme` after `--no-extensions --no-skills --no-prompt-templates
38
+ --no-themes`. Pi still reads `AGENTS.md` and `SYSTEM.md` itself.
39
+ - **Surface metadata (PROP-0040).** `PluginDescriptor.surfaces` and `Plugin.surfaces` optionally
40
+ carry `{ preferred: 'host', terminal: 'fallback' | 'unavailable', note: string }`.
41
+ `plugins/surfaces.ts` formats the note and badge. Inspection explains what the host adds and
42
+ what the terminal does instead; this is not a category, attachment switch or permission.
43
+ - **Shared resources (PROP-0040).** Both surfaces load Harness-selected resources and enabled
44
+ first-party hooks, including output trim and budget guard. Terminal preparation exposes these
45
+ through its protected bridge. Pi CLI-only llama.cpp, codemode, tool-search and MCP built-ins are
46
+ not selected or advertised as extra terminal capabilities. This does not remove Harness MCP.
47
+ - **Attachments.** `config/plugin-attachments.json` holds `global`, `agents`, `projects` (each
48
+ `{ on, off }`) and `settings` per plugin. The narrowest scope that says something wins: agent,
49
+ then project, then everywhere. With no entry an item keeps its default.
50
+ - **Package metadata.** A Pi package may declare `"harness": { "extends": [...], "hooks": "./hooks.mjs", "commandPrefix": "my-tools", "defaultPrompt": "review", "agents": "./agents" }`.
51
+ `defaultPrompt` names one of that package's prompt templates as the target of `/<owner-prefix>:`;
52
+ it is not a path or an arbitrary command. Without a valid, unambiguous owned target, it must not
53
+ route to another owner's template or guess a default (ADR-0061).
54
+ A package without a `package.json` name is named, described and versioned by the first of
55
+ `plugin.json`, `.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, so an agent plugin
56
+ written for other harnesses installs as it is. The first of those manifests that declares
57
+ `skills` (a path or a list of paths) also brings those skill folders as package skill
58
+ contributions, so a plugin laid out for another harness contributes the skills it declares. A
59
+ declared path must stay inside the package, and a symlinked skill folder is skipped. Pi's own
60
+ `skills/` folder and `package.json` manifest take precedence, and a package whose settings entry
61
+ names skill patterns is left to that filter.
62
+ - **Skill installation routes.** A skill reaches a run as text from the working folder's `.pi/skills`
63
+ or `.agents/skills` (walking up to the repository root), the OS user's `~/.agents/skills`, the
64
+ state's `accounts/_shared/pi/skills`, a package's `skills` or a foreign manifest's declared paths,
65
+ or the pinned variant's `skills`. A model may write the first two; `~/.agents` is outside the
66
+ workspace, so a write there needs the person's approval. Variant, library, Hub and package
67
+ installs change committed state and are person acts (`/skills`, `/components`, `/hub`,
68
+ `/plugins`). A variant holds `SKILL.md` and flat `scripts/` files only. `plugins.install` takes a
69
+ package address: a GitHub or GitLab `tree`/`blob` page address is refused with the repository
70
+ address and these routes. The install guidance lives in the release-owned `plugin-authoring`
71
+ skill, not the always-on prompt ([STUDY-0005](../study/STUDY-0005-skill-installation-guidance.md)).
72
+ - **Package subagent profiles.** An installed package's agents folder (`agents/` unless
73
+ `harness.agents` names another) brings each Markdown file whose frontmatter has a `name` and a
74
+ `description` as an `agent` contribution (at most 50). It is text: it needs no trust and follows
75
+ its switch like a skill. The profile is named by its frontmatter, not its file. Fields only other
76
+ harnesses understand are dropped (`agents/profiles.ts`, `parsePackageProfile`): their tool names
77
+ are translated (`Read`→`read`, `Glob`→`find`, …), a model without a provider is left to the
78
+ parent, `plugins` and `variant` are never taken, and a tool list of which nothing translates
79
+ keeps the child read-only. A package profile never replaces a built-in, person's, project's or
80
+ variant's profile of the same name; the listing reports it as a problem instead.
81
+ `commandPrefix` is optional; in the terminal, commands otherwise use a normalized package name as
82
+ their owner prefix. Prefixes use lowercase letters, digits and hyphens, starting with a letter;
83
+ `plugin` and `skill` are reserved. Package-owned prompt templates share the package's command
84
+ namespace with its extension commands; prompts discovered by a loose extension use that
85
+ extension's namespace. Neither is exposed as a bare plugin alias. Standalone prompt templates
86
+ retain their existing form. See page 11 for routing and collision rules.
87
+ - **Plugin authoring.** `plugin_propose` creates a pending proposal, not an installation. The
88
+ release-owned `plugin-authoring` skill is available on demand in structured and terminal sessions;
89
+ a pinned variant's skill of the same name wins. It adds no trust or permission
90
+ ([ADR-0045](../decisions/ADR-0045-default-plugin-authoring-skill.md)).
91
+ - **Proposal review.** `plugins/proposals.ts` validates a lowercase package name, nonempty description,
92
+ and 1–100 UTF-8 text files (256 KiB each, 1 MiB total). It accepts `README.md`, extensions
93
+ (`.ts`, `.js`, `.mjs`), Markdown skills, prompts and agents, and JSON themes in their respective
94
+ directories; paths must be safe and cannot contain `.git` or `node_modules`. A
95
+ `skills/<name>/SKILL.md` needs matching name and nonempty description frontmatter. The Harness
96
+ generates `package.json`; it is not supplied by the proposal. Preview revalidates the stored data
97
+ and computes SHA-256 over name, description, generated manifest and sorted file entries. Accept
98
+ and reject require the current preview hash and pending status; stale reviews fail.
99
+ Acceptance rechecks after adoption and listing, refuses an existing package name or already-trusted
100
+ identical package code, stages and publishes under `<data root>/plugins/<name>`, clears old
101
+ attachment decisions for that package and explicitly switches it off globally. It grants no code
102
+ trust or permission; reject retains the proposal as rejected. These are trusted caller review
103
+ operations, not model tools. See [ADR-0046](../decisions/ADR-0046-hash-bound-plugin-proposals.md).
104
+ - **Hooks.** A package declares `"harness": { "extends": [...], "hooks": "./hooks.mjs" }`. Events:
105
+ `wiki.page.saved`, `history.run.ended`. A hook has 30 seconds; its errors are kept in
106
+ `plugin-hooks.json`. `ctx.call(connection, tool, args)` reaches only a connected app that is on
107
+ for everyone, and only a tool marked to run without asking.
108
+ - **Capability set** (`CapabilitySet`): `{ version: 1, tools, connectors, contributions }`.
109
+ `capabilities.resolve` returns the set available to a caller; `capabilities.intersect` /
110
+ `toolIntersection` narrows it for a child. The required `ask-user` plugin remains attached, but its
111
+ `ask_user` tool is included only for an attended plan run or a continuation pinned with that
112
+ capability. Automatic or refinement-triggered continuations with it are rejected rather than
113
+ weakening the frozen set. The `side-questions` descriptor owns the fixed instruction for the
114
+ restricted side-question run; it has no tools, providers, connectors, subagents or variant code
115
+ (PROP-0019). In plan mode, delegation is limited to research children: the resolved profile must
116
+ have explicit tool and plugin allowlists confined to the research set, and the child's frozen
117
+ capabilities are intersected with the parent and profile. A profile name or its instructions alone
118
+ never grants eligibility (INV-RUN-8).
119
+
120
+ ## Invariants
121
+
122
+ - **INV-PLG-1** The harness is the only loader. A session or terminal loads exactly what
123
+ `Plugins.loading` chose, with Pi's discovery switched off. Never pass a session a loader that
124
+ discovers on its own.
125
+ - **INV-PLG-2** Code waits for trust. A working folder's `.pi/extensions` and the packages its
126
+ settings name are trusted together; each installed package is trusted on its own. Trust is a
127
+ hash of the files; a changed file asks again. A loose file a person put in the shared
128
+ `extensions/` folder needs no trust. Text contributions always load.
129
+ - **INV-PLG-3** Installing runs no code (`npm_config_ignore_scripts`). A package arrives switched
130
+ off and, if it has code, untrusted. Installing grants no attachment, trust, credential or
131
+ permission.
132
+ - **INV-PLG-4** The approval gate is the last extension to see a tool call (page 07, `INV-GATE-2`).
133
+ A plugin that changes a call's input does so before the gate sees it.
134
+ - **INV-PLG-5** Everything model-visible belongs to a plugin. A new prompt section, tool group or
135
+ tool is declared by a `PluginDescriptor` (`plugins/builtin.ts` for the harness's own), or
136
+ `plugins.inventory` reports it as `unattributed`.
137
+ - **INV-PLG-6** One store says what is switched on: `plugins/attachments.ts`. A new kind of
138
+ switchable thing gets a default and is read with `attached`; no second enablement file.
139
+ - **INV-PLG-7** A hook is told, never asked. Hooks run after the write, in the background; a write
140
+ never waits for a hook and a hook's failure never reaches it. A new write point that should be
141
+ heard calls `noteChange` (`core/changes.ts`). No hook may stop or change a write.
142
+ - **INV-PLG-8** A hook runs only while its plugin is on for everyone and trusted, checked before
143
+ each delivery. A working folder's package cannot bring a hook.
144
+ - **INV-PLG-9** Unattended runs load no extension found on disk (`INV-RUN-5`). The harness's own
145
+ parts are required and refuse to be switched off; switching something on grants no permission.
146
+ A side-question run also has no variant plugin code or tool guidance (PROP-0019).
147
+ - **INV-PLG-10** Every Harness-managed built-in feature is registered by `BuiltinPluginRegistry`.
148
+ Its descriptor, world tools, server handlers and any plugin-owned terminal commands share one
149
+ owner. First-class Harness terminal commands are registered by the terminal command registry and
150
+ do not depend on a feature plugin's command metadata or attachment state. A module's world part
151
+ releases resources through the existing session and Harness lifecycle. This registry does not
152
+ load third-party Pi code or bypass its trust checks.
153
+ - **INV-PLG-11** Built-in plugin categories are a documentation ownership taxonomy. They are not a
154
+ `PluginDescriptor` field, a public response field or a second attachment scope.
155
+ - **INV-PLG-12** Plugin command ownership includes plugin-owned prompt templates. An owner prefix
156
+ identifies exactly one owner; prefix collisions between owners and duplicate routes within an
157
+ owner fail closed with owner diagnostics, including collisions between a template and an extension
158
+ command. Package `harness.defaultPrompt` can select only its own unambiguous template for the
159
+ namespace root. Ownership does not change attachment, code trust or permission rules.
160
+ - **INV-CAP-1** A capability set only narrows. `intersect` never adds access; a run's set is
161
+ frozen when it starts (`INV-RUN-2`). An agent profile's `plugins` list keeps only the parent's
162
+ contributions of those plugins (required plugins always stay) and drops the tools they own; it
163
+ never adds one (PROP-0029).
164
+ - **INV-CAP-2** The capability contract is generic. It names no application task, role or UI
165
+ concept.
166
+ - **INV-CAP-3** A capability set says what may be called, not whether a call may run. The gate
167
+ still decides each call.
168
+
169
+ ## Data
170
+
171
+ ```text
172
+ <data root>/config/plugin-attachments.json (registry-enabled.json read until the first change)
173
+ <data root>/plugins/<name>/ packages kept with the data; removal moves to trash/plugins/
174
+ <data root>/plugin-proposals/<id>.json proposed text, hash and review status
175
+ <state dir>/plugin-trust.json trusted code, by hash
176
+ <state dir>/plugin-registered.json what each extension registered last time
177
+ <state dir>/plugin-hooks.json hooks and their last run
178
+ <state dir>/accounts/_shared/pi/ settings and packages shared by every account
179
+ ```
180
+
181
+ ## Source map
182
+
183
+ `src/plugins/*.ts`, `src/capabilities/*.ts`, `src/core/changes.ts`.
184
+
185
+ ## Built-in ownership taxonomy (PROP-0020)
186
+
187
+ These categories make ownership visible in docs and source layout. They do not change plugin
188
+ metadata or availability:
189
+
190
+ | Category | Features | Foundation boundary |
191
+ |---|---|---|
192
+ | 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 |
193
+ | World | Web search/read tools, browser tools, page annotations | The isolated browser engine and network policy remain Foundation services |
194
+ | Memory | Wiki, history and trajectory | Storage and run records remain Foundation-owned services |
195
+ | Automation | Subagents, ask-user, todo, lessons and refinement | Run lifecycle, capability narrowing and approval gate remain Foundation-owned |
196
+ | Integrations | Connected apps/MCP and Hub | Connector credentials and plugin installation remain behind Foundation services |
197
+ | Operations | Doctor, worktrees and usage | Diagnostics, repository operations and usage analytics remain Harness-managed services |
198
+
199
+ ## Terminal plugin and resource inspection
200
+
201
+ The broad `/harness` browser joins saved plugin/contribution metadata with actual session skills and
202
+ tool registration. A saved on/off state does not prove a resource loaded; origins and owners
203
+ distinguish same-name resources. `/plugins` is a focused local manager with Plugins, Trust and
204
+ Packages tabs. It uses the existing plugin services for switching, trust, settings, package install,
205
+ update and removal. `/hub` is a distinct Community catalog surface; it does not load code or add a
206
+ second loader. Hub-owned package removal through `plugins.remove` delegates to Hub so the exact
207
+ receipt and its resources stay consistent. No second discovery or enablement mechanism is
208
+ introduced (PROP-0013, PROP-0047).