@xingular/harness 0.1.7 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (819) hide show
  1. package/CHANGELOG.md +125 -1
  2. package/LICENSE +202 -0
  3. package/NOTICE.md +22 -0
  4. package/README.md +239 -86
  5. package/THIRD_PARTY_LICENSES.md +942 -0
  6. package/dist/cli.js +17853 -13114
  7. package/dist/sdk/accounts/accounts.d.ts +165 -0
  8. package/dist/sdk/accounts/accounts.js +730 -0
  9. package/dist/sdk/accounts/choices.d.ts +23 -0
  10. package/dist/sdk/accounts/choices.js +62 -0
  11. package/dist/sdk/accounts/env.d.ts +78 -0
  12. package/dist/sdk/accounts/env.js +294 -0
  13. package/dist/sdk/accounts/secrets.d.ts +16 -0
  14. package/dist/sdk/accounts/secrets.js +40 -0
  15. package/dist/sdk/accounts/store.d.ts +114 -0
  16. package/dist/sdk/accounts/store.js +255 -0
  17. package/dist/sdk/agents/builtin.d.ts +2 -0
  18. package/dist/sdk/agents/builtin.js +34 -0
  19. package/dist/sdk/agents/narrow.d.ts +13 -0
  20. package/dist/sdk/agents/narrow.js +29 -0
  21. package/dist/sdk/agents/profiles.d.ts +80 -0
  22. package/dist/sdk/agents/profiles.js +221 -0
  23. package/dist/sdk/annotations/bridge.d.ts +42 -0
  24. package/dist/sdk/annotations/bridge.js +264 -0
  25. package/dist/sdk/annotations/capture.d.ts +116 -0
  26. package/dist/sdk/annotations/capture.js +308 -0
  27. package/dist/sdk/annotations/delivery.d.ts +72 -0
  28. package/dist/sdk/annotations/delivery.js +130 -0
  29. package/dist/sdk/annotations/inspect.d.ts +10 -0
  30. package/dist/sdk/annotations/inspect.js +33 -0
  31. package/dist/sdk/annotations/isolated.d.ts +6 -0
  32. package/dist/sdk/annotations/isolated.js +51 -0
  33. package/dist/sdk/annotations/pageScript.d.ts +28 -0
  34. package/dist/sdk/annotations/pageScript.js +570 -0
  35. package/dist/sdk/annotations/part.d.ts +10 -0
  36. package/dist/sdk/annotations/part.js +144 -0
  37. package/dist/sdk/annotations/queue.d.ts +4 -0
  38. package/dist/sdk/annotations/queue.js +40 -0
  39. package/dist/sdk/annotations/serverMethods.d.ts +3 -0
  40. package/dist/sdk/annotations/serverMethods.js +62 -0
  41. package/dist/sdk/annotations/store.d.ts +160 -0
  42. package/dist/sdk/annotations/store.js +386 -0
  43. package/dist/sdk/browser/config.d.ts +16 -0
  44. package/dist/sdk/browser/config.js +22 -0
  45. package/dist/sdk/browser/diagnostics.d.ts +4 -0
  46. package/dist/sdk/browser/diagnostics.js +38 -0
  47. package/dist/sdk/browser/index.d.ts +28 -0
  48. package/dist/sdk/browser/index.js +72 -0
  49. package/dist/sdk/browser/network.d.ts +10 -0
  50. package/dist/sdk/browser/network.js +59 -0
  51. package/dist/sdk/browser/serverMethods.d.ts +3 -0
  52. package/dist/sdk/browser/serverMethods.js +7 -0
  53. package/dist/sdk/browser/session.d.ts +85 -0
  54. package/dist/sdk/browser/session.js +228 -0
  55. package/dist/sdk/browser/tools.d.ts +8 -0
  56. package/dist/sdk/browser/tools.js +329 -0
  57. package/dist/sdk/capabilities/api.d.ts +22 -0
  58. package/dist/sdk/capabilities/api.js +54 -0
  59. package/dist/sdk/capabilities/runSnapshot.d.ts +18 -0
  60. package/dist/sdk/capabilities/runSnapshot.js +47 -0
  61. package/dist/sdk/capabilities/types.d.ts +29 -0
  62. package/dist/sdk/capabilities/types.js +1 -0
  63. package/dist/sdk/cli.d.ts +2 -0
  64. package/dist/sdk/cli.js +150 -0
  65. package/dist/sdk/core/bus.d.ts +23 -0
  66. package/dist/sdk/core/bus.js +76 -0
  67. package/dist/sdk/core/caller.d.ts +22 -0
  68. package/dist/sdk/core/caller.js +16 -0
  69. package/dist/sdk/core/changes.d.ts +15 -0
  70. package/dist/sdk/core/changes.js +15 -0
  71. package/dist/sdk/core/effort.d.ts +2 -0
  72. package/dist/sdk/core/effort.js +1 -0
  73. package/dist/sdk/core/env.d.ts +18 -0
  74. package/dist/sdk/core/env.js +8 -0
  75. package/dist/sdk/core/errors.d.ts +15 -0
  76. package/dist/sdk/core/errors.js +24 -0
  77. package/dist/sdk/core/frontmatter.d.ts +12 -0
  78. package/dist/sdk/core/frontmatter.js +50 -0
  79. package/dist/sdk/core/fs.d.ts +18 -0
  80. package/dist/sdk/core/fs.js +106 -0
  81. package/dist/sdk/core/index.d.ts +24 -0
  82. package/dist/sdk/core/index.js +187 -0
  83. package/dist/sdk/core/path.d.ts +7 -0
  84. package/dist/sdk/core/path.js +79 -0
  85. package/dist/sdk/core/projects.d.ts +18 -0
  86. package/dist/sdk/core/projects.js +67 -0
  87. package/dist/sdk/core/secrets.d.ts +2 -0
  88. package/dist/sdk/core/secrets.js +5 -0
  89. package/dist/sdk/core/text.d.ts +7 -0
  90. package/dist/sdk/core/text.js +40 -0
  91. package/dist/sdk/doctor/checks.d.ts +5 -0
  92. package/dist/sdk/doctor/checks.js +208 -0
  93. package/dist/sdk/doctor/probe.d.ts +4 -0
  94. package/dist/sdk/doctor/probe.js +92 -0
  95. package/dist/sdk/doctor/serverMethods.d.ts +3 -0
  96. package/dist/sdk/doctor/serverMethods.js +8 -0
  97. package/dist/sdk/doctor/service.d.ts +23 -0
  98. package/dist/sdk/doctor/service.js +144 -0
  99. package/dist/sdk/doctor/types.d.ts +141 -0
  100. package/dist/sdk/doctor/types.js +29 -0
  101. package/dist/sdk/harness.d.ts +148 -0
  102. package/dist/sdk/harness.js +338 -0
  103. package/dist/sdk/history/lessonPrompt.d.ts +2 -0
  104. package/dist/sdk/history/lessonPrompt.js +15 -0
  105. package/dist/sdk/history/lessons.d.ts +52 -0
  106. package/dist/sdk/history/lessons.js +173 -0
  107. package/dist/sdk/history/recall.d.ts +68 -0
  108. package/dist/sdk/history/recall.js +199 -0
  109. package/dist/sdk/history/serverMethods.d.ts +3 -0
  110. package/dist/sdk/history/serverMethods.js +8 -0
  111. package/dist/sdk/history/trajectory.d.ts +7 -0
  112. package/dist/sdk/history/trajectory.js +216 -0
  113. package/dist/sdk/hub/catalog.json +123 -0
  114. package/dist/sdk/hub/cli.d.ts +7 -0
  115. package/dist/sdk/hub/cli.js +81 -0
  116. package/dist/sdk/hub/hub.d.ts +74 -0
  117. package/dist/sdk/hub/hub.js +474 -0
  118. package/dist/sdk/hub/schema.d.ts +280 -0
  119. package/dist/sdk/hub/schema.js +78 -0
  120. package/dist/sdk/hub/serverMethods.d.ts +3 -0
  121. package/dist/sdk/hub/serverMethods.js +11 -0
  122. package/dist/sdk/index.d.ts +73 -0
  123. package/dist/sdk/index.js +55 -0
  124. package/dist/sdk/mcp/connections.d.ts +83 -0
  125. package/dist/sdk/mcp/connections.js +676 -0
  126. package/dist/sdk/mcp/manager.d.ts +26 -0
  127. package/dist/sdk/mcp/manager.js +124 -0
  128. package/dist/sdk/mcp/oauth.d.ts +35 -0
  129. package/dist/sdk/mcp/oauth.js +171 -0
  130. package/dist/sdk/mcp/scopeMigration.d.ts +19 -0
  131. package/dist/sdk/mcp/scopeMigration.js +198 -0
  132. package/dist/sdk/mcp/serverMethods.d.ts +3 -0
  133. package/dist/sdk/mcp/serverMethods.js +22 -0
  134. package/dist/sdk/mcp/service.d.ts +160 -0
  135. package/dist/sdk/mcp/service.js +510 -0
  136. package/dist/sdk/mcp/types.d.ts +131 -0
  137. package/dist/sdk/mcp/types.js +49 -0
  138. package/dist/sdk/pi/runtime.d.ts +13 -0
  139. package/dist/sdk/pi/runtime.js +31 -0
  140. package/dist/sdk/plugins/api.d.ts +66 -0
  141. package/dist/sdk/plugins/api.js +155 -0
  142. package/dist/sdk/plugins/attachments.d.ts +46 -0
  143. package/dist/sdk/plugins/attachments.js +111 -0
  144. package/dist/sdk/plugins/builtin.d.ts +7 -0
  145. package/dist/sdk/plugins/builtin.js +163 -0
  146. package/dist/sdk/plugins/builtinRegistry.d.ts +53 -0
  147. package/dist/sdk/plugins/builtinRegistry.js +49 -0
  148. package/dist/sdk/plugins/catalogue.d.ts +29 -0
  149. package/dist/sdk/plugins/catalogue.js +196 -0
  150. package/dist/sdk/plugins/cli.d.ts +13 -0
  151. package/dist/sdk/plugins/cli.js +188 -0
  152. package/dist/sdk/plugins/discover.d.ts +42 -0
  153. package/dist/sdk/plugins/discover.js +115 -0
  154. package/dist/sdk/plugins/firstParty.d.ts +50 -0
  155. package/dist/sdk/plugins/firstParty.js +113 -0
  156. package/dist/sdk/plugins/hooks.d.ts +94 -0
  157. package/dist/sdk/plugins/hooks.js +162 -0
  158. package/dist/sdk/plugins/identity.d.ts +19 -0
  159. package/dist/sdk/plugins/identity.js +48 -0
  160. package/dist/sdk/plugins/install.d.ts +20 -0
  161. package/dist/sdk/plugins/install.js +110 -0
  162. package/dist/sdk/plugins/inventory.d.ts +22 -0
  163. package/dist/sdk/plugins/inventory.js +110 -0
  164. package/dist/sdk/plugins/manifest.d.ts +13 -0
  165. package/dist/sdk/plugins/manifest.js +56 -0
  166. package/dist/sdk/plugins/plugins.d.ts +104 -0
  167. package/dist/sdk/plugins/plugins.js +164 -0
  168. package/dist/sdk/plugins/runtime.d.ts +9 -0
  169. package/dist/sdk/plugins/runtime.js +95 -0
  170. package/dist/sdk/plugins/trust.d.ts +44 -0
  171. package/dist/sdk/plugins/trust.js +120 -0
  172. package/dist/sdk/plugins/types.d.ts +159 -0
  173. package/dist/sdk/plugins/types.js +7 -0
  174. package/dist/sdk/prompt/compile.d.ts +177 -0
  175. package/dist/sdk/prompt/compile.js +413 -0
  176. package/dist/sdk/refine/cli.d.ts +4 -0
  177. package/dist/sdk/refine/cli.js +186 -0
  178. package/dist/sdk/refine/demo.d.ts +21 -0
  179. package/dist/sdk/refine/demo.js +114 -0
  180. package/dist/sdk/refine/evidence.d.ts +55 -0
  181. package/dist/sdk/refine/evidence.js +330 -0
  182. package/dist/sdk/refine/host.d.ts +51 -0
  183. package/dist/sdk/refine/host.js +76 -0
  184. package/dist/sdk/refine/ledger.d.ts +48 -0
  185. package/dist/sdk/refine/ledger.js +76 -0
  186. package/dist/sdk/refine/library.d.ts +55 -0
  187. package/dist/sdk/refine/library.js +177 -0
  188. package/dist/sdk/refine/pi.d.ts +72 -0
  189. package/dist/sdk/refine/pi.js +248 -0
  190. package/dist/sdk/refine/prompts.d.ts +45 -0
  191. package/dist/sdk/refine/prompts.js +390 -0
  192. package/dist/sdk/refine/recursion.d.ts +113 -0
  193. package/dist/sdk/refine/recursion.js +258 -0
  194. package/dist/sdk/refine/runner.d.ts +81 -0
  195. package/dist/sdk/refine/runner.js +150 -0
  196. package/dist/sdk/refine/selection.d.ts +57 -0
  197. package/dist/sdk/refine/selection.js +251 -0
  198. package/dist/sdk/refine/serverMethods.d.ts +3 -0
  199. package/dist/sdk/refine/serverMethods.js +20 -0
  200. package/dist/sdk/refine/service.d.ts +84 -0
  201. package/dist/sdk/refine/service.js +165 -0
  202. package/dist/sdk/refine/suite.d.ts +67 -0
  203. package/dist/sdk/refine/suite.js +174 -0
  204. package/dist/sdk/refine/trajectory.d.ts +9 -0
  205. package/dist/sdk/refine/trajectory.js +68 -0
  206. package/dist/sdk/refine/types.d.ts +77 -0
  207. package/dist/sdk/refine/types.js +10 -0
  208. package/dist/sdk/server/methods.d.ts +3 -0
  209. package/dist/sdk/server/methods.js +293 -0
  210. package/dist/sdk/server/params.d.ts +4 -0
  211. package/dist/sdk/server/params.js +11 -0
  212. package/dist/sdk/server/remote.d.ts +19 -0
  213. package/dist/sdk/server/remote.js +84 -0
  214. package/dist/sdk/server/rpc.d.ts +20 -0
  215. package/dist/sdk/server/rpc.js +102 -0
  216. package/dist/sdk/server/serve.d.ts +10 -0
  217. package/dist/sdk/server/serve.js +18 -0
  218. package/dist/sdk/sessions/approvals.d.ts +47 -0
  219. package/dist/sdk/sessions/approvals.js +119 -0
  220. package/dist/sdk/sessions/continuation.d.ts +48 -0
  221. package/dist/sdk/sessions/continuation.js +85 -0
  222. package/dist/sdk/sessions/contracts.d.ts +551 -0
  223. package/dist/sdk/sessions/contracts.js +338 -0
  224. package/dist/sdk/sessions/extensionUi.d.ts +19 -0
  225. package/dist/sdk/sessions/extensionUi.js +64 -0
  226. package/dist/sdk/sessions/history.d.ts +16 -0
  227. package/dist/sdk/sessions/history.js +68 -0
  228. package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
  229. package/dist/sdk/sessions/lineageJoin.js +61 -0
  230. package/dist/sdk/sessions/planMode.d.ts +39 -0
  231. package/dist/sdk/sessions/planMode.js +93 -0
  232. package/dist/sdk/sessions/policy.d.ts +43 -0
  233. package/dist/sdk/sessions/policy.js +1 -0
  234. package/dist/sdk/sessions/pricing.d.ts +34 -0
  235. package/dist/sdk/sessions/pricing.js +40 -0
  236. package/dist/sdk/sessions/reasoningSummaries.d.ts +11 -0
  237. package/dist/sdk/sessions/reasoningSummaries.js +61 -0
  238. package/dist/sdk/sessions/registry.d.ts +103 -0
  239. package/dist/sdk/sessions/registry.js +386 -0
  240. package/dist/sdk/sessions/runIndex.d.ts +21 -0
  241. package/dist/sdk/sessions/runIndex.js +65 -0
  242. package/dist/sdk/sessions/runStore.d.ts +66 -0
  243. package/dist/sdk/sessions/runStore.js +337 -0
  244. package/dist/sdk/sessions/runner.d.ts +213 -0
  245. package/dist/sdk/sessions/runner.js +589 -0
  246. package/dist/sdk/sessions/sessions.d.ts +152 -0
  247. package/dist/sdk/sessions/sessions.js +461 -0
  248. package/dist/sdk/sessions/sideQuestionServerMethods.d.ts +3 -0
  249. package/dist/sdk/sessions/sideQuestionServerMethods.js +19 -0
  250. package/dist/sdk/sessions/sideQuestions.d.ts +66 -0
  251. package/dist/sdk/sessions/sideQuestions.js +290 -0
  252. package/dist/sdk/sessions/subagentServerMethods.d.ts +3 -0
  253. package/dist/sdk/sessions/subagentServerMethods.js +41 -0
  254. package/dist/sdk/sessions/subagentService.d.ts +52 -0
  255. package/dist/sdk/sessions/subagentService.js +265 -0
  256. package/dist/sdk/sessions/subagents.d.ts +58 -0
  257. package/dist/sdk/sessions/subagents.js +87 -0
  258. package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
  259. package/dist/sdk/terminal/accountsMenu.js +392 -0
  260. package/dist/sdk/terminal/browser.d.ts +62 -0
  261. package/dist/sdk/terminal/browser.js +41 -0
  262. package/dist/sdk/terminal/browserControl.d.ts +29 -0
  263. package/dist/sdk/terminal/browserControl.js +186 -0
  264. package/dist/sdk/terminal/cli.d.ts +20 -0
  265. package/dist/sdk/terminal/cli.js +121 -0
  266. package/dist/sdk/terminal/client.d.ts +15 -0
  267. package/dist/sdk/terminal/client.js +126 -0
  268. package/dist/sdk/terminal/commandHelp.d.ts +17 -0
  269. package/dist/sdk/terminal/commandHelp.js +20 -0
  270. package/dist/sdk/terminal/control.d.ts +4 -0
  271. package/dist/sdk/terminal/control.js +25 -0
  272. package/dist/sdk/terminal/controller.d.ts +78 -0
  273. package/dist/sdk/terminal/controller.js +383 -0
  274. package/dist/sdk/terminal/hubMenu.d.ts +10 -0
  275. package/dist/sdk/terminal/hubMenu.js +34 -0
  276. package/dist/sdk/terminal/launch.d.ts +5 -0
  277. package/dist/sdk/terminal/launch.js +27 -0
  278. package/dist/sdk/terminal/logs.d.ts +14 -0
  279. package/dist/sdk/terminal/logs.js +59 -0
  280. package/dist/sdk/terminal/opentui/subagentsWidget.d.ts +28 -0
  281. package/dist/sdk/terminal/opentui/subagentsWidget.js +52 -0
  282. package/dist/sdk/terminal/piExtension.d.ts +6 -0
  283. package/dist/sdk/terminal/piExtension.js +377 -0
  284. package/dist/sdk/terminal/pluginMenu.d.ts +34 -0
  285. package/dist/sdk/terminal/pluginMenu.js +101 -0
  286. package/dist/sdk/terminal/socket.d.ts +73 -0
  287. package/dist/sdk/terminal/socket.js +287 -0
  288. package/dist/sdk/terminal/standalone.d.ts +20 -0
  289. package/dist/sdk/terminal/standalone.js +186 -0
  290. package/dist/sdk/terminal/subagentMonitor.d.ts +38 -0
  291. package/dist/sdk/terminal/subagentMonitor.js +121 -0
  292. package/dist/sdk/terminal/terminals.d.ts +212 -0
  293. package/dist/sdk/terminal/terminals.js +1108 -0
  294. package/dist/sdk/terminal/trajectory.d.ts +10 -0
  295. package/dist/sdk/terminal/trajectory.js +30 -0
  296. package/dist/sdk/terminal/tui/annotateCommand.d.ts +3 -0
  297. package/dist/sdk/terminal/tui/annotateCommand.js +22 -0
  298. package/dist/sdk/terminal/tui/chrome.d.ts +64 -0
  299. package/dist/sdk/terminal/tui/chrome.js +169 -0
  300. package/dist/sdk/terminal/tui/clipboardFiles.d.ts +11 -0
  301. package/dist/sdk/terminal/tui/clipboardFiles.js +74 -0
  302. package/dist/sdk/terminal/tui/commandPages.d.ts +11 -0
  303. package/dist/sdk/terminal/tui/commandPages.js +111 -0
  304. package/dist/sdk/terminal/tui/commands.d.ts +46 -0
  305. package/dist/sdk/terminal/tui/commands.js +399 -0
  306. package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
  307. package/dist/sdk/terminal/tui/dialogGeometry.js +52 -0
  308. package/dist/sdk/terminal/tui/dialogs.d.ts +80 -0
  309. package/dist/sdk/terminal/tui/dialogs.js +370 -0
  310. package/dist/sdk/terminal/tui/keybindings.d.ts +11 -0
  311. package/dist/sdk/terminal/tui/keybindings.js +49 -0
  312. package/dist/sdk/terminal/tui/list.d.ts +73 -0
  313. package/dist/sdk/terminal/tui/list.js +196 -0
  314. package/dist/sdk/terminal/tui/modeChoices.d.ts +42 -0
  315. package/dist/sdk/terminal/tui/modeChoices.js +70 -0
  316. package/dist/sdk/terminal/tui/modelPicker.d.ts +55 -0
  317. package/dist/sdk/terminal/tui/modelPicker.js +150 -0
  318. package/dist/sdk/terminal/tui/mouse.d.ts +3 -0
  319. package/dist/sdk/terminal/tui/mouse.js +3 -0
  320. package/dist/sdk/terminal/tui/page.d.ts +17 -0
  321. package/dist/sdk/terminal/tui/page.js +1 -0
  322. package/dist/sdk/terminal/tui/pageOverlay.d.ts +27 -0
  323. package/dist/sdk/terminal/tui/pageOverlay.js +156 -0
  324. package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +76 -0
  325. package/dist/sdk/terminal/tui/pages/accountsPage.js +409 -0
  326. package/dist/sdk/terminal/tui/pages/agentsPage.d.ts +74 -0
  327. package/dist/sdk/terminal/tui/pages/agentsPage.js +190 -0
  328. package/dist/sdk/terminal/tui/pages/annotatePage.d.ts +94 -0
  329. package/dist/sdk/terminal/tui/pages/annotatePage.js +341 -0
  330. package/dist/sdk/terminal/tui/pages/browserPage.d.ts +87 -0
  331. package/dist/sdk/terminal/tui/pages/browserPage.js +738 -0
  332. package/dist/sdk/terminal/tui/pages/componentsPage.d.ts +47 -0
  333. package/dist/sdk/terminal/tui/pages/componentsPage.js +119 -0
  334. package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +39 -0
  335. package/dist/sdk/terminal/tui/pages/doctorPage.js +233 -0
  336. package/dist/sdk/terminal/tui/pages/hubPage.d.ts +39 -0
  337. package/dist/sdk/terminal/tui/pages/hubPage.js +128 -0
  338. package/dist/sdk/terminal/tui/pages/logPage.d.ts +38 -0
  339. package/dist/sdk/terminal/tui/pages/logPage.js +189 -0
  340. package/dist/sdk/terminal/tui/pages/notesPage.d.ts +75 -0
  341. package/dist/sdk/terminal/tui/pages/notesPage.js +201 -0
  342. package/dist/sdk/terminal/tui/pages/permissionsPage.d.ts +44 -0
  343. package/dist/sdk/terminal/tui/pages/permissionsPage.js +124 -0
  344. package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +57 -0
  345. package/dist/sdk/terminal/tui/pages/pluginsPage.js +243 -0
  346. package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +63 -0
  347. package/dist/sdk/terminal/tui/pages/settingsPage.js +103 -0
  348. package/dist/sdk/terminal/tui/pages/subagentsPage.d.ts +23 -0
  349. package/dist/sdk/terminal/tui/pages/subagentsPage.js +70 -0
  350. package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +65 -0
  351. package/dist/sdk/terminal/tui/pages/trajectoryPage.js +450 -0
  352. package/dist/sdk/terminal/tui/pages/worktreesPage.d.ts +72 -0
  353. package/dist/sdk/terminal/tui/pages/worktreesPage.js +203 -0
  354. package/dist/sdk/terminal/tui/piAdapter.d.ts +18 -0
  355. package/dist/sdk/terminal/tui/piAdapter.js +48 -0
  356. package/dist/sdk/terminal/tui/planMode.d.ts +2 -0
  357. package/dist/sdk/terminal/tui/planMode.js +2 -0
  358. package/dist/sdk/terminal/tui/pluginCommands.d.ts +14 -0
  359. package/dist/sdk/terminal/tui/pluginCommands.js +27 -0
  360. package/dist/sdk/terminal/tui/questionPicker.d.ts +20 -0
  361. package/dist/sdk/terminal/tui/questionPicker.js +150 -0
  362. package/dist/sdk/terminal/tui/questions.d.ts +21 -0
  363. package/dist/sdk/terminal/tui/questions.js +42 -0
  364. package/dist/sdk/terminal/tui/runtime.d.ts +114 -0
  365. package/dist/sdk/terminal/tui/runtime.js +443 -0
  366. package/dist/sdk/terminal/tui/search.d.ts +22 -0
  367. package/dist/sdk/terminal/tui/search.js +60 -0
  368. package/dist/sdk/terminal/tui/selection.d.ts +16 -0
  369. package/dist/sdk/terminal/tui/selection.js +16 -0
  370. package/dist/sdk/terminal/tui/sessionUi.d.ts +3 -0
  371. package/dist/sdk/terminal/tui/sessionUi.js +30 -0
  372. package/dist/sdk/terminal/tui/settingsModel.d.ts +14 -0
  373. package/dist/sdk/terminal/tui/settingsModel.js +114 -0
  374. package/dist/sdk/terminal/tui/sideQuestion.d.ts +53 -0
  375. package/dist/sdk/terminal/tui/sideQuestion.js +230 -0
  376. package/dist/sdk/terminal/tui/skillInvocation.d.ts +9 -0
  377. package/dist/sdk/terminal/tui/skillInvocation.js +43 -0
  378. package/dist/sdk/terminal/tui/status.d.ts +18 -0
  379. package/dist/sdk/terminal/tui/status.js +67 -0
  380. package/dist/sdk/terminal/tui/theme.d.ts +45 -0
  381. package/dist/sdk/terminal/tui/theme.js +176 -0
  382. package/dist/sdk/terminal/tui/treeModel.d.ts +79 -0
  383. package/dist/sdk/terminal/tui/treeModel.js +483 -0
  384. package/dist/sdk/terminal/tui/treePicker.d.ts +49 -0
  385. package/dist/sdk/terminal/tui/treePicker.js +251 -0
  386. package/dist/sdk/terminal/tui/ui.d.ts +49 -0
  387. package/dist/sdk/terminal/tui/ui.js +149 -0
  388. package/dist/sdk/terminal/tui/workingStatus.d.ts +9 -0
  389. package/dist/sdk/terminal/tui/workingStatus.js +229 -0
  390. package/dist/sdk/tools/askUser.d.ts +6 -0
  391. package/dist/sdk/tools/askUser.js +92 -0
  392. package/dist/sdk/tools/checklist.d.ts +9 -0
  393. package/dist/sdk/tools/checklist.js +54 -0
  394. package/dist/sdk/tools/definitions.d.ts +30 -0
  395. package/dist/sdk/tools/definitions.js +117 -0
  396. package/dist/sdk/tools/dispatch.d.ts +16 -0
  397. package/dist/sdk/tools/dispatch.js +67 -0
  398. package/dist/sdk/tools/harnessTools.d.ts +8 -0
  399. package/dist/sdk/tools/harnessTools.js +20 -0
  400. package/dist/sdk/tools/sessionName.d.ts +7 -0
  401. package/dist/sdk/tools/sessionName.js +31 -0
  402. package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
  403. package/dist/sdk/tools/spawnSubagent.js +58 -0
  404. package/dist/sdk/tools/types.d.ts +48 -0
  405. package/dist/sdk/tools/types.js +1 -0
  406. package/dist/sdk/variant/components.d.ts +34 -0
  407. package/dist/sdk/variant/components.js +230 -0
  408. package/dist/sdk/variant/materialise.d.ts +66 -0
  409. package/dist/sdk/variant/materialise.js +81 -0
  410. package/dist/sdk/variant/migrate.d.ts +4 -0
  411. package/dist/sdk/variant/migrate.js +41 -0
  412. package/dist/sdk/variant/seed.d.ts +20 -0
  413. package/dist/sdk/variant/seed.js +116 -0
  414. package/dist/sdk/variant/store.d.ts +82 -0
  415. package/dist/sdk/variant/store.js +151 -0
  416. package/dist/sdk/variant/surface.d.ts +56 -0
  417. package/dist/sdk/variant/surface.js +81 -0
  418. package/dist/sdk/variant/trust.d.ts +27 -0
  419. package/dist/sdk/variant/trust.js +64 -0
  420. package/dist/sdk/variant/variant.d.ts +71 -0
  421. package/dist/sdk/variant/variant.js +331 -0
  422. package/dist/sdk/web/markdown.d.ts +10 -0
  423. package/dist/sdk/web/markdown.js +66 -0
  424. package/dist/sdk/web/part.d.ts +10 -0
  425. package/dist/sdk/web/part.js +6 -0
  426. package/dist/sdk/web/safeRequest.d.ts +34 -0
  427. package/dist/sdk/web/safeRequest.js +175 -0
  428. package/dist/sdk/web/search.d.ts +53 -0
  429. package/dist/sdk/web/search.js +168 -0
  430. package/dist/sdk/web/serverMethods.d.ts +3 -0
  431. package/dist/sdk/web/serverMethods.js +7 -0
  432. package/dist/sdk/web/text.d.ts +2 -0
  433. package/dist/sdk/web/text.js +7 -0
  434. package/dist/sdk/web/tools.d.ts +22 -0
  435. package/dist/sdk/web/tools.js +195 -0
  436. package/dist/sdk/web/turndown-plugin-gfm.d.ts +4 -0
  437. package/dist/sdk/wiki/notes.d.ts +68 -0
  438. package/dist/sdk/wiki/notes.js +297 -0
  439. package/dist/sdk/wiki/serverMethods.d.ts +3 -0
  440. package/dist/sdk/wiki/serverMethods.js +26 -0
  441. package/dist/sdk/worktrees/cli.d.ts +11 -0
  442. package/dist/sdk/worktrees/cli.js +146 -0
  443. package/dist/sdk/worktrees/copy.d.ts +9 -0
  444. package/dist/sdk/worktrees/copy.js +111 -0
  445. package/dist/sdk/worktrees/git.d.ts +16 -0
  446. package/dist/sdk/worktrees/git.js +81 -0
  447. package/dist/sdk/worktrees/serverMethods.d.ts +3 -0
  448. package/dist/sdk/worktrees/serverMethods.js +30 -0
  449. package/dist/sdk/worktrees/service.d.ts +73 -0
  450. package/dist/sdk/worktrees/service.js +483 -0
  451. package/dist/sdk/worktrees/setup.d.ts +23 -0
  452. package/dist/sdk/worktrees/setup.js +65 -0
  453. package/dist/sdk/worktrees/types.d.ts +91 -0
  454. package/dist/sdk/worktrees/types.js +1 -0
  455. package/dist/sdk/world/actions.d.ts +23 -0
  456. package/dist/sdk/world/actions.js +31 -0
  457. package/dist/sdk/world/cli.d.ts +12 -0
  458. package/dist/sdk/world/cli.js +166 -0
  459. package/dist/sdk/world/images.d.ts +20 -0
  460. package/dist/sdk/world/images.js +48 -0
  461. package/dist/sdk/world/untrusted.d.ts +12 -0
  462. package/dist/sdk/world/untrusted.js +20 -0
  463. package/dist/sdk/world/world.d.ts +67 -0
  464. package/dist/sdk/world/world.js +79 -0
  465. package/dist/terminal-opentui.js +20778 -0
  466. package/dist/terminal-pi.js +794 -518
  467. package/docs/README.md +42 -0
  468. package/docs/architecture/00-overview.md +171 -0
  469. package/docs/architecture/01-extension-points.md +78 -0
  470. package/docs/architecture/02-sessions-and-runs.md +203 -0
  471. package/docs/architecture/03-variants.md +103 -0
  472. package/docs/architecture/04-prompt.md +122 -0
  473. package/docs/architecture/05-refinement.md +107 -0
  474. package/docs/architecture/06-plugins-and-capabilities.md +129 -0
  475. package/docs/architecture/07-tools-and-gate.md +103 -0
  476. package/docs/architecture/08-memory-and-history.md +94 -0
  477. package/docs/architecture/09-accounts-and-connectors.md +98 -0
  478. package/docs/architecture/10-server-protocol.md +193 -0
  479. package/docs/architecture/11-terminal.md +261 -0
  480. package/docs/architecture/12-storage.md +75 -0
  481. package/docs/architecture/13-world-tools.md +45 -0
  482. package/docs/architecture/14-surfaces-and-parity.md +89 -0
  483. package/docs/architecture/README.md +125 -0
  484. package/docs/architecture/proposals/PROP-0001-reporting-section.md +106 -0
  485. package/docs/architecture/proposals/PROP-0002-retain-rollout-workspaces.md +104 -0
  486. package/docs/architecture/proposals/PROP-0003-executor-settings.md +81 -0
  487. package/docs/architecture/proposals/PROP-0004-flexible-reporting-guidance.md +71 -0
  488. package/docs/architecture/proposals/PROP-0005-xharness-cli-name.md +78 -0
  489. package/docs/architecture/proposals/PROP-0006-run-checklist.md +70 -0
  490. package/docs/architecture/proposals/PROP-0007-run-continuation.md +80 -0
  491. package/docs/architecture/proposals/PROP-0008-lessons-from-runs.md +80 -0
  492. package/docs/architecture/proposals/PROP-0009-foundation-and-variants.md +78 -0
  493. package/docs/architecture/proposals/PROP-0010-session-names.md +73 -0
  494. package/docs/architecture/proposals/PROP-0011-doctor.md +63 -0
  495. package/docs/architecture/proposals/PROP-0012-release-baseline.md +56 -0
  496. package/docs/architecture/proposals/PROP-0013-resource-browser.md +58 -0
  497. package/docs/architecture/proposals/PROP-0014-fullscreen-browser-tabs.md +58 -0
  498. package/docs/architecture/proposals/PROP-0015-one-capability-surface.md +88 -0
  499. package/docs/architecture/proposals/PROP-0016-managed-worktrees.md +156 -0
  500. package/docs/architecture/proposals/PROP-0017-page-annotations.md +127 -0
  501. package/docs/architecture/proposals/PROP-0018-annotation-queue-and-app-targets.md +179 -0
  502. package/docs/architecture/proposals/PROP-0019-contextual-side-questions.md +122 -0
  503. package/docs/architecture/proposals/PROP-0020-builtin-feature-plugins.md +105 -0
  504. package/docs/architecture/proposals/PROP-0021-command-namespaces-and-duplicates.md +99 -0
  505. package/docs/architecture/proposals/PROP-0022-plan-only-questions.md +102 -0
  506. package/docs/architecture/proposals/PROP-0023-xagent-cli-name.md +61 -0
  507. package/docs/architecture/proposals/PROP-0024-question-sketch-previews.md +130 -0
  508. package/docs/architecture/proposals/PROP-0025-contextual-question-wireframes.md +49 -0
  509. package/docs/architecture/proposals/PROP-0026-connected-sketch-display.md +94 -0
  510. package/docs/architecture/proposals/PROP-0027-xingular-agent-product-identity.md +60 -0
  511. package/docs/architecture/proposals/PROP-0028-normalize-question-wireframes.md +55 -0
  512. package/docs/architecture/proposals/PROP-0029-agent-profiles.md +124 -0
  513. package/docs/architecture/proposals/PROP-0030-subagent-title.md +86 -0
  514. package/docs/architecture/proposals/README.md +101 -0
  515. package/docs/decisions/ADR-0002-native-subagent-lifecycle.md +49 -0
  516. package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +70 -0
  517. package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +50 -0
  518. package/docs/decisions/ADR-0005-app-provided-oauth-clients.md +54 -0
  519. package/docs/decisions/ADR-0006-opentui-only-terminal.md +47 -0
  520. package/docs/decisions/ADR-0007-reporting-section.md +33 -0
  521. package/docs/decisions/ADR-0008-flexible-reporting-guidance.md +38 -0
  522. package/docs/decisions/ADR-0009-xharness-command.md +39 -0
  523. package/docs/decisions/ADR-0010-lessons-in-the-wiki.md +31 -0
  524. package/docs/decisions/ADR-0011-foundation-and-variants.md +28 -0
  525. package/docs/decisions/ADR-0012-native-session-names.md +34 -0
  526. package/docs/decisions/ADR-0013-doctor.md +27 -0
  527. package/docs/decisions/ADR-0014-public-release-baseline.md +22 -0
  528. package/docs/decisions/ADR-0015-resource-browser.md +28 -0
  529. package/docs/decisions/ADR-0016-fullscreen-browser-tabs.md +31 -0
  530. package/docs/decisions/ADR-0017-one-capability-surface.md +34 -0
  531. package/docs/decisions/ADR-0018-builtin-feature-plugins.md +35 -0
  532. package/docs/decisions/ADR-0019-managed-git-worktrees.md +31 -0
  533. package/docs/decisions/ADR-0020-page-annotations.md +37 -0
  534. package/docs/decisions/ADR-0021-required-command-namespaces.md +40 -0
  535. package/docs/decisions/ADR-0022-plan-only-question-tools.md +34 -0
  536. package/docs/decisions/ADR-0023-contextual-side-question-runs.md +35 -0
  537. package/docs/decisions/ADR-0024-xagent-command.md +40 -0
  538. package/docs/decisions/ADR-0025-question-choice-sketches.md +49 -0
  539. package/docs/decisions/ADR-0026-contextual-question-wireframes.md +58 -0
  540. package/docs/decisions/ADR-0027-connected-sketch-display.md +60 -0
  541. package/docs/decisions/ADR-0028-xingular-agent-product-identity.md +56 -0
  542. package/docs/decisions/ADR-0029-normalized-question-wireframe-borders.md +33 -0
  543. package/docs/decisions/ADR-0030-agent-profiles.md +43 -0
  544. package/docs/doctor.md +80 -0
  545. package/docs/experiments/EXP-0001-terminal-input-latency/plan.md +81 -0
  546. package/docs/experiments/EXP-0001-terminal-input-latency/results.md +46 -0
  547. package/docs/experiments/EXP-0002-opentui-typing-latency/plan.md +70 -0
  548. package/docs/experiments/EXP-0002-opentui-typing-latency/results.md +92 -0
  549. package/docs/features/README.md +46 -0
  550. package/docs/features/automations/README.md +41 -0
  551. package/docs/features/cores/README.md +39 -0
  552. package/docs/features/google-harness2/README.md +52 -0
  553. package/docs/features/integrations/README.md +40 -0
  554. package/docs/features/interfaces/README.md +29 -0
  555. package/docs/features/memory/README.md +28 -0
  556. package/docs/future-work.md +48 -0
  557. package/docs/parity.md +78 -0
  558. package/docs/releases/1.0.0.md +40 -0
  559. package/docs/releases/4.0.0.md +46 -0
  560. package/docs/releases/README.md +41 -0
  561. package/docs/study/00-index.md +83 -0
  562. package/docs/study/arms/00-matrix.md +20 -0
  563. package/docs/study/arms/01-system-prompt.md +211 -0
  564. package/docs/study/arms/02-tools.md +79 -0
  565. package/docs/study/arms/03-subagents.md +90 -0
  566. package/docs/study/arms/04-skills.md +75 -0
  567. package/docs/study/arms/05-context-management.md +90 -0
  568. package/docs/study/arms/06-memory.md +90 -0
  569. package/docs/study/arms/07-governance.md +71 -0
  570. package/docs/study/arms/08-execution.md +69 -0
  571. package/docs/study/arms/09-observability.md +60 -0
  572. package/docs/study/arms/10-refinement.md +110 -0
  573. package/docs/study/autonomous-engineering-sources.md +277 -0
  574. package/docs/study/autonomy-sources.md +147 -0
  575. package/docs/study/btw-comparison.md +37 -0
  576. package/docs/study/feature-gap-review.md +42 -0
  577. package/docs/study/insights.md +123 -0
  578. package/docs/study/proactive-autonomy.md +408 -0
  579. package/docs/study/roadmap.md +72 -0
  580. package/docs/study/sources/claude-code.md +44 -0
  581. package/docs/study/sources/deepseek-harness.md +102 -0
  582. package/docs/study/sources/harness2.md +50 -0
  583. package/docs/study/sources/kimi-cli.md +42 -0
  584. package/docs/study/sources/omp.md +93 -0
  585. package/docs/study/sources/opencode.md +43 -0
  586. package/docs/study/sources/openhands.md +46 -0
  587. package/docs/study/sources/smolagents.md +40 -0
  588. package/docs/study/sources/swe-agent.md +34 -0
  589. package/docs/study/tui-resource-browser.md +78 -0
  590. package/docs/system-prompt-design.md +196 -0
  591. package/docs/terminal-tui.md +707 -58
  592. package/package.json +43 -13
  593. package/docs/evidence/terminal-2026-10-17/120x40-completed-transcript.ansi.gz +0 -0
  594. package/docs/evidence/terminal-2026-10-17/40x20-settings-interaction.ansi.gz +0 -0
  595. package/docs/evidence/terminal-2026-10-17/40x20-settings-keyboard.ansi.gz +0 -0
  596. package/docs/evidence/terminal-2026-10-17/40x20-welcome.ansi.gz +0 -0
  597. package/docs/evidence/terminal-2026-10-17/80x24-approval-0.ansi.gz +0 -0
  598. package/docs/evidence/terminal-2026-10-17/80x24-question.ansi.gz +0 -0
  599. package/docs/evidence/terminal-2026-10-17/verification.json +0 -130
  600. package/docs/evidence/terminal-2026-10-17-followup/120x40-completed-transcript.ansi.gz +0 -0
  601. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-interaction.ansi.gz +0 -0
  602. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-keyboard.ansi.gz +0 -0
  603. package/docs/evidence/terminal-2026-10-17-followup/40x20-welcome.ansi.gz +0 -0
  604. package/docs/evidence/terminal-2026-10-17-followup/80x24-approval-0.ansi.gz +0 -0
  605. package/docs/evidence/terminal-2026-10-17-followup/80x24-plugin-light.ansi.gz +0 -0
  606. package/docs/evidence/terminal-2026-10-17-followup/80x24-question-batch.ansi.gz +0 -0
  607. package/docs/evidence/terminal-2026-10-17-followup/80x24-question.ansi.gz +0 -0
  608. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-approval-0.ansi.gz +0 -0
  609. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-plugin-light.ansi.gz +0 -0
  610. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question-batch.ansi.gz +0 -0
  611. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question.ansi.gz +0 -0
  612. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/verification.json +0 -95
  613. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-approval-0.ansi.gz +0 -0
  614. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-plugin-light.ansi.gz +0 -0
  615. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question-batch.ansi.gz +0 -0
  616. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question.ansi.gz +0 -0
  617. package/docs/evidence/terminal-2026-10-17-followup/global-install/README.md +0 -27
  618. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command-80x24.ansi.gz +0 -0
  619. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command.json +0 -18
  620. package/docs/evidence/terminal-2026-10-17-followup/global-install/verification.json +0 -95
  621. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-80x24.json.gz +0 -0
  622. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-final-80x24.json.gz +0 -0
  623. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-scenario.json +0 -60
  624. package/docs/evidence/terminal-2026-10-17-followup/live-codex/README.md +0 -24
  625. package/docs/evidence/terminal-2026-10-17-followup/live-codex/complete-80x24.ansi.gz +0 -0
  626. package/docs/evidence/terminal-2026-10-17-followup/live-codex/verification.json +0 -57
  627. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24-early.json.gz +0 -0
  628. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24.json.gz +0 -0
  629. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-scenario.json +0 -58
  630. package/docs/evidence/terminal-2026-10-17-followup/omp-supplemental-static.json.gz +0 -0
  631. package/docs/evidence/terminal-2026-10-17-followup/rea-artifacts.json +0 -320
  632. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.json +0 -30
  633. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.md +0 -133
  634. package/docs/evidence/terminal-2026-10-17-followup/reference-source-observations.json +0 -20
  635. package/docs/evidence/terminal-2026-10-17-followup/verification.json +0 -207
  636. package/src/accounts/accounts.test.ts +0 -333
  637. package/src/accounts/accounts.ts +0 -658
  638. package/src/accounts/env.test.ts +0 -95
  639. package/src/accounts/env.ts +0 -338
  640. package/src/accounts/secrets.ts +0 -50
  641. package/src/accounts/store.ts +0 -338
  642. package/src/capabilities/api.ts +0 -75
  643. package/src/capabilities/runSnapshot.ts +0 -59
  644. package/src/capabilities/types.ts +0 -34
  645. package/src/cli.ts +0 -118
  646. package/src/core/bus.ts +0 -34
  647. package/src/core/changes.ts +0 -33
  648. package/src/core/env.ts +0 -27
  649. package/src/core/errors.ts +0 -32
  650. package/src/core/frontmatter.ts +0 -47
  651. package/src/core/fs.test.ts +0 -38
  652. package/src/core/fs.ts +0 -92
  653. package/src/core/index.ts +0 -193
  654. package/src/core/path.test.ts +0 -14
  655. package/src/core/path.ts +0 -79
  656. package/src/core/projects.ts +0 -90
  657. package/src/core/text.ts +0 -39
  658. package/src/harness.ts +0 -312
  659. package/src/hub/catalog.json +0 -123
  660. package/src/hub/cli.ts +0 -59
  661. package/src/hub/hub.test.ts +0 -205
  662. package/src/hub/hub.ts +0 -256
  663. package/src/hub/schema.ts +0 -81
  664. package/src/index.ts +0 -75
  665. package/src/mcp/connections.ts +0 -614
  666. package/src/mcp/manager.ts +0 -130
  667. package/src/mcp/oauth.ts +0 -195
  668. package/src/mcp/scopeMigration.test.ts +0 -79
  669. package/src/mcp/scopeMigration.ts +0 -204
  670. package/src/mcp/service.test.ts +0 -376
  671. package/src/mcp/service.ts +0 -549
  672. package/src/mcp/types.ts +0 -108
  673. package/src/memory/api.test.ts +0 -82
  674. package/src/memory/api.ts +0 -303
  675. package/src/memory/blocks.test.ts +0 -78
  676. package/src/memory/blocks.ts +0 -408
  677. package/src/memory/caller.ts +0 -69
  678. package/src/memory/curation.test.ts +0 -163
  679. package/src/memory/curation.ts +0 -64
  680. package/src/memory/dispatch.ts +0 -59
  681. package/src/memory/facts.test.ts +0 -41
  682. package/src/memory/facts.ts +0 -248
  683. package/src/memory/graph.ts +0 -103
  684. package/src/memory/health.test.ts +0 -130
  685. package/src/memory/health.ts +0 -74
  686. package/src/memory/maintainer.ts +0 -272
  687. package/src/memory/maintenance.test.ts +0 -176
  688. package/src/memory/maintenance.ts +0 -518
  689. package/src/memory/migrate.ts +0 -79
  690. package/src/memory/operations.ts +0 -150
  691. package/src/memory/proposals.test.ts +0 -168
  692. package/src/memory/proposals.ts +0 -584
  693. package/src/memory/recall.test.ts +0 -115
  694. package/src/memory/recall.ts +0 -278
  695. package/src/memory/references.ts +0 -77
  696. package/src/memory/runContext.ts +0 -93
  697. package/src/memory/secrets.ts +0 -6
  698. package/src/memory/store.test.ts +0 -66
  699. package/src/memory/store.ts +0 -385
  700. package/src/memory/wiki.test.ts +0 -47
  701. package/src/memory/wiki.ts +0 -422
  702. package/src/memory/wikiIndex.test.ts +0 -88
  703. package/src/memory/wikiIndex.ts +0 -116
  704. package/src/plugins/api.ts +0 -181
  705. package/src/plugins/attachments.test.ts +0 -84
  706. package/src/plugins/attachments.ts +0 -141
  707. package/src/plugins/builtin.ts +0 -82
  708. package/src/plugins/catalogue.test.ts +0 -254
  709. package/src/plugins/catalogue.ts +0 -251
  710. package/src/plugins/cli.ts +0 -184
  711. package/src/plugins/discover.ts +0 -151
  712. package/src/plugins/firstParty.test.ts +0 -143
  713. package/src/plugins/firstParty.ts +0 -129
  714. package/src/plugins/hooks.test.ts +0 -250
  715. package/src/plugins/hooks.ts +0 -239
  716. package/src/plugins/identity.ts +0 -37
  717. package/src/plugins/install.test.ts +0 -107
  718. package/src/plugins/install.ts +0 -106
  719. package/src/plugins/inventory.ts +0 -123
  720. package/src/plugins/manifest.ts +0 -76
  721. package/src/plugins/plugins.test.ts +0 -205
  722. package/src/plugins/plugins.ts +0 -189
  723. package/src/plugins/proposal.ts +0 -121
  724. package/src/plugins/runtime.test.ts +0 -40
  725. package/src/plugins/runtime.ts +0 -82
  726. package/src/plugins/trust.ts +0 -142
  727. package/src/plugins/types.ts +0 -149
  728. package/src/prompt/compile.test.ts +0 -261
  729. package/src/prompt/compile.ts +0 -732
  730. package/src/server/methods.ts +0 -349
  731. package/src/server/remote.ts +0 -77
  732. package/src/server/rpc.ts +0 -116
  733. package/src/server/serve.ts +0 -28
  734. package/src/server/server.test.ts +0 -174
  735. package/src/sessions/approvals.ts +0 -118
  736. package/src/sessions/contracts.ts +0 -336
  737. package/src/sessions/conversation.test.ts +0 -177
  738. package/src/sessions/extensionSession.test.ts +0 -74
  739. package/src/sessions/extensionUi.test.ts +0 -65
  740. package/src/sessions/extensionUi.ts +0 -102
  741. package/src/sessions/history.ts +0 -51
  742. package/src/sessions/lineageJoin.ts +0 -75
  743. package/src/sessions/policy.ts +0 -36
  744. package/src/sessions/pricing.ts +0 -60
  745. package/src/sessions/questionBatches.test.ts +0 -110
  746. package/src/sessions/reasoningSummaries.ts +0 -59
  747. package/src/sessions/registry.ts +0 -381
  748. package/src/sessions/runIndex.ts +0 -99
  749. package/src/sessions/runStore.test.ts +0 -152
  750. package/src/sessions/runStore.ts +0 -332
  751. package/src/sessions/runner.ts +0 -604
  752. package/src/sessions/runtimeResources.test.ts +0 -61
  753. package/src/sessions/sessions.test.ts +0 -549
  754. package/src/sessions/sessions.ts +0 -339
  755. package/src/skills/registry.test.ts +0 -104
  756. package/src/skills/registry.ts +0 -413
  757. package/src/terminal/accountsMenu.test.ts +0 -225
  758. package/src/terminal/accountsMenu.ts +0 -382
  759. package/src/terminal/cli.ts +0 -149
  760. package/src/terminal/client.ts +0 -74
  761. package/src/terminal/control.test.ts +0 -23
  762. package/src/terminal/control.ts +0 -23
  763. package/src/terminal/controller.ts +0 -291
  764. package/src/terminal/hubMenu.ts +0 -24
  765. package/src/terminal/launch.test.ts +0 -25
  766. package/src/terminal/launch.ts +0 -48
  767. package/src/terminal/piExtension.lifecycle.test.ts +0 -55
  768. package/src/terminal/piExtension.ts +0 -259
  769. package/src/terminal/pluginControl.test.ts +0 -146
  770. package/src/terminal/pluginMenu.ts +0 -112
  771. package/src/terminal/socket.test.ts +0 -71
  772. package/src/terminal/socket.ts +0 -232
  773. package/src/terminal/standalone.test.ts +0 -167
  774. package/src/terminal/standalone.ts +0 -153
  775. package/src/terminal/terminal.test.ts +0 -399
  776. package/src/terminal/terminals.ts +0 -553
  777. package/src/terminal/tui/application.test.ts +0 -114
  778. package/src/terminal/tui/application.ts +0 -491
  779. package/src/terminal/tui/commands.test.ts +0 -218
  780. package/src/terminal/tui/commands.ts +0 -361
  781. package/src/terminal/tui/dialogs.ts +0 -301
  782. package/src/terminal/tui/editor.test.ts +0 -84
  783. package/src/terminal/tui/editor.ts +0 -79
  784. package/src/terminal/tui/keybindings.test.ts +0 -22
  785. package/src/terminal/tui/keybindings.ts +0 -50
  786. package/src/terminal/tui/piAdapter.ts +0 -62
  787. package/src/terminal/tui/presentation.test.ts +0 -79
  788. package/src/terminal/tui/questions.test.ts +0 -41
  789. package/src/terminal/tui/questions.ts +0 -47
  790. package/src/terminal/tui/runtime.socket.test.ts +0 -104
  791. package/src/terminal/tui/runtime.test.ts +0 -215
  792. package/src/terminal/tui/runtime.ts +0 -388
  793. package/src/terminal/tui/sessionUi.ts +0 -24
  794. package/src/terminal/tui/settings.test.ts +0 -150
  795. package/src/terminal/tui/settings.ts +0 -188
  796. package/src/terminal/tui/status.test.ts +0 -70
  797. package/src/terminal/tui/status.ts +0 -109
  798. package/src/terminal/tui/theme.ts +0 -174
  799. package/src/terminal/tui/tools.test.ts +0 -145
  800. package/src/terminal/tui/tools.ts +0 -142
  801. package/src/terminal/tui/transcript.test.ts +0 -25
  802. package/src/terminal/tui/transcript.ts +0 -124
  803. package/src/terminal/tui/ui.test.ts +0 -313
  804. package/src/terminal/tui/ui.ts +0 -166
  805. package/src/terminal/tui/welcome.ts +0 -102
  806. package/src/tools/askUser.test.ts +0 -69
  807. package/src/tools/askUser.ts +0 -59
  808. package/src/tools/definitions.ts +0 -187
  809. package/src/tools/maintenance.ts +0 -24
  810. package/src/tools/memoryTools.ts +0 -22
  811. package/src/tools/pluginPropose.ts +0 -41
  812. package/src/tools/registryWrite.test.ts +0 -101
  813. package/src/tools/registryWrite.ts +0 -182
  814. package/src/tools/spawnSubagent.ts +0 -92
  815. package/src/tools/types.ts +0 -39
  816. package/src/web/safeRequest.ts +0 -171
  817. package/src/web/text.ts +0 -53
  818. package/src/web/tools.ts +0 -134
  819. package/src/web/web.test.ts +0 -141
@@ -0,0 +1,22 @@
1
+ import type { Harness } from "../harness.js";
2
+ import type { CallerContext } from "../core/caller.js";
3
+ import type { Launch } from "../prompt/compile.js";
4
+ import * as pluginApi from "../plugins/api.js";
5
+ import type { CapabilityCatalogue, CapabilityScope, CapabilitySet } from "./types.js";
6
+ export interface ListParams extends CapabilityScope {
7
+ }
8
+ export interface InventoryParams extends CapabilityScope {
9
+ context?: CallerContext;
10
+ launch?: Launch;
11
+ tools?: string[];
12
+ connections?: boolean;
13
+ }
14
+ export declare function list(harness: Harness, params?: ListParams): Promise<CapabilityCatalogue>;
15
+ /** The resolved callable set for one caller, based on the stores and caller-supplied tool list. */
16
+ export declare function resolve(harness: Harness, params: ListParams & {
17
+ tools?: readonly string[];
18
+ }): Promise<CapabilitySet>;
19
+ export declare function toolIntersection(parent: CapabilitySet, assignee: CapabilitySet, taskTools?: readonly string[]): CapabilitySet;
20
+ export declare function inventory(harness: Harness, params?: InventoryParams): Promise<import("../index.js").Inventory>;
21
+ export declare function attach(harness: Harness, params: pluginApi.AttachParams, on: boolean): Promise<CapabilityCatalogue>;
22
+ export declare function switchCapability(harness: Harness, params: pluginApi.AttachParams, on: boolean): Promise<CapabilityCatalogue>;
@@ -0,0 +1,54 @@
1
+ // A generic view of what is available to a caller. The existing plugin, registry, and connector
2
+ // stores remain the source of truth; this module gives hosts one capability-shaped contract.
3
+ import { invalid } from "../core/errors.js";
4
+ import * as pluginApi from "../plugins/api.js";
5
+ const unique = (values) => [...new Set(values.filter((value) => value.length > 0))];
6
+ function contributions(plugins) {
7
+ return plugins.flatMap((plugin) => plugin.contributions.map((item) => ({
8
+ id: item.id,
9
+ pluginId: plugin.id,
10
+ kind: item.kind,
11
+ name: item.name,
12
+ description: item.description,
13
+ source: plugin.source,
14
+ state: item.state,
15
+ attachment: item.attachment
16
+ })));
17
+ }
18
+ export async function list(harness, params = {}) {
19
+ const plugins = await pluginApi.list(harness, params);
20
+ return { plugins, capabilities: contributions(plugins) };
21
+ }
22
+ /** The resolved callable set for one caller, based on the stores and caller-supplied tool list. */
23
+ export async function resolve(harness, params) {
24
+ const caller = { agentId: params.agentId ?? null, projectId: params.projectId ?? null };
25
+ const catalogue = await list(harness, params);
26
+ const connectors = harness.apps.connections.forScope(caller).map((connection) => connection.id);
27
+ return {
28
+ version: 1,
29
+ tools: unique(params.tools ?? []),
30
+ connectors: unique(connectors),
31
+ contributions: catalogue.capabilities.filter((item) => item.state === 'on').map((item) => item.id)
32
+ };
33
+ }
34
+ export function toolIntersection(parent, assignee, taskTools) {
35
+ const permitted = taskTools === undefined ? null : new Set(taskTools);
36
+ return {
37
+ version: 1,
38
+ tools: parent.tools.filter((tool) => assignee.tools.includes(tool) && (!permitted || permitted.has(tool))),
39
+ connectors: parent.connectors.filter((id) => assignee.connectors.includes(id)),
40
+ contributions: parent.contributions.filter((id) => assignee.contributions.includes(id))
41
+ };
42
+ }
43
+ export function inventory(harness, params = {}) {
44
+ return pluginApi.inventoryFor(harness, params);
45
+ }
46
+ export async function attach(harness, params, on) {
47
+ const plugins = await pluginApi.attach(harness, params, on);
48
+ return { plugins, capabilities: contributions(plugins) };
49
+ }
50
+ export async function switchCapability(harness, params, on) {
51
+ if (!params.id.trim())
52
+ throw invalid('A capability id is required.');
53
+ return attach(harness, params, on);
54
+ }
@@ -0,0 +1,18 @@
1
+ import type { CapabilitySet } from "./types.js";
2
+ export interface RunCapabilitySnapshot {
3
+ version: 1;
4
+ caller: {
5
+ agentId: string | null;
6
+ projectId: string | null;
7
+ };
8
+ tools: string[];
9
+ connectors: string[];
10
+ contributions: string[];
11
+ }
12
+ export declare function capabilitySet(value: unknown): CapabilitySet;
13
+ /** Writes a run's capability set once. A resumed or duplicate launch cannot replace it. */
14
+ export declare function freezeRun(root: string, runId: string, caller: {
15
+ agentId?: string | null;
16
+ projectId?: string | null;
17
+ }, set: CapabilitySet): RunCapabilitySnapshot;
18
+ export declare function loadRun(root: string, runId: string): RunCapabilitySnapshot | null;
@@ -0,0 +1,47 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { HarnessError, invalid } from "../core/errors.js";
4
+ import { readJson, safeId, writeJson } from "../core/fs.js";
5
+ const path = (root, runId) => join(root, 'runs', safeId(runId), 'capabilities.json');
6
+ function strings(value) {
7
+ return Array.isArray(value) ? [...new Set(value.filter((item) => typeof item === 'string' && item.length > 0))] : [];
8
+ }
9
+ export function capabilitySet(value) {
10
+ if (!value || typeof value !== 'object' || value.version !== 1)
11
+ throw invalid('A capability set must use version 1.');
12
+ const record = value;
13
+ return { version: 1, tools: strings(record.tools), connectors: strings(record.connectors), contributions: strings(record.contributions) };
14
+ }
15
+ /** Writes a run's capability set once. A resumed or duplicate launch cannot replace it. */
16
+ export function freezeRun(root, runId, caller, set) {
17
+ const target = path(root, runId);
18
+ const snapshot = {
19
+ version: 1,
20
+ caller: { agentId: caller.agentId ?? null, projectId: caller.projectId ?? null },
21
+ tools: strings(set.tools),
22
+ connectors: strings(set.connectors),
23
+ contributions: strings(set.contributions)
24
+ };
25
+ const existing = existsSync(target) ? readJson(target) : null;
26
+ if (existing) {
27
+ if (JSON.stringify(existing) !== JSON.stringify(snapshot))
28
+ throw new HarnessError('capabilities_frozen', 'This run already has a different frozen capability set.');
29
+ return existing;
30
+ }
31
+ writeJson(target, snapshot);
32
+ return snapshot;
33
+ }
34
+ export function loadRun(root, runId) {
35
+ const stored = readJson(path(root, runId));
36
+ if (!stored || typeof stored !== 'object' || stored.version !== 1)
37
+ return null;
38
+ const record = stored;
39
+ const caller = record.caller && typeof record.caller === 'object' ? record.caller : {};
40
+ return {
41
+ version: 1,
42
+ caller: { agentId: typeof caller.agentId === 'string' ? caller.agentId : null, projectId: typeof caller.projectId === 'string' ? caller.projectId : null },
43
+ tools: strings(record.tools),
44
+ connectors: strings(record.connectors),
45
+ contributions: strings(record.contributions)
46
+ };
47
+ }
@@ -0,0 +1,29 @@
1
+ import type { AttachScope, Attachment } from "../plugins/attachments.js";
2
+ import type { ContributionKind, ContributionState, PluginSource } from "../plugins/types.js";
3
+ export type CapabilityKind = ContributionKind | 'plugin';
4
+ /** One item the caller can switch on or off, or that a plugin makes available. */
5
+ export interface Capability {
6
+ id: string;
7
+ pluginId: string;
8
+ kind: CapabilityKind;
9
+ name: string;
10
+ description: string;
11
+ source: PluginSource;
12
+ state: ContributionState;
13
+ attachment: Attachment | null;
14
+ }
15
+ export interface CapabilityCatalogue {
16
+ plugins: import("../plugins/types.js").Plugin[];
17
+ capabilities: Capability[];
18
+ }
19
+ /** The callable capabilities a run starts with. Permission to run still goes through the gate. */
20
+ export interface CapabilitySet {
21
+ version: 1;
22
+ tools: string[];
23
+ connectors: string[];
24
+ contributions: string[];
25
+ }
26
+ export interface CapabilityScope extends AttachScope {
27
+ cwd?: string | null;
28
+ accountId?: string | null;
29
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,150 @@
1
+ #!/usr/bin/env node
2
+ // The `xagent` command.
3
+ //
4
+ // xagent serve --state <dir> [--data <dir>] [--name <product>] [--builtins <dir>]…
5
+ // [--host-secrets] [--host-policy] [--host-tools] [--host-directory]
6
+ // Serves the harness to a host process over stdin/stdout (newline-delimited JSON).
7
+ // xagent wiki <command> Project notes, skills and history, from inside a terminal session.
8
+ // xagent refine <command> Refine a variant from evidence (refine demo needs no model).
9
+ // xagent mcp <command> Connected apps, from inside a terminal session.
10
+ // xagent plugins <command> List, install, switch and trust plugins.
11
+ // xagent web <command> Search keys for web_search.
12
+ // xagent browser <command> How the agent's browser runs.
13
+ // xagent worktree <command> Managed git worktrees of the repository you are in.
14
+ import { resolve } from 'node:path';
15
+ import manifest from "../../package.json" with { type: 'json' };
16
+ import { log } from "./core/bus.js";
17
+ import { createHarness } from "./harness.js";
18
+ import { runPluginsCli, terminalAsk } from "./plugins/cli.js";
19
+ import { runHubCli } from "./hub/cli.js";
20
+ import { runRefineCli } from "./refine/cli.js";
21
+ import { runBrowserCli, runWebCli } from "./world/cli.js";
22
+ import { remoteDirectory, remotePolicy, remoteSecrets, remoteTools } from "./server/remote.js";
23
+ import { RpcPeer, stdioTransport } from "./server/rpc.js";
24
+ import { attach } from "./server/serve.js";
25
+ import { runAppsCli, runWikiCli } from "./terminal/cli.js";
26
+ import { runStandaloneTerminal, standaloneArguments } from "./terminal/standalone.js";
27
+ import { runWorktreeCli } from "./worktrees/cli.js";
28
+ const USAGE = `Usage: xagent [--data <dir>] [--state <dir>]
29
+ xagent <terminal | serve | wiki | mcp | plugins | hub | refine | web | browser | worktree> [arguments]
30
+
31
+ --version Print the package version
32
+ (no command) Start the interactive Harness terminal
33
+ terminal Start the interactive Harness terminal
34
+ serve --state <dir> [--data <dir>] [--name <product>] [--builtins <dir>]
35
+ [--host-secrets] [--host-policy] [--host-tools] [--host-directory]
36
+ Serve the harness over newline-delimited JSON
37
+ wiki <command> Wiki, skill and history commands for a terminal session
38
+ mcp <command> Connected-app commands for a terminal session
39
+ plugins <command> List, install, switch and trust plugins (plugins help)
40
+ hub <command> Browse and install curated items (hub help)
41
+ refine <command> Refine a harness from evidence (refine demo, refine run)
42
+ web <command> Search keys for the web tools (web help)
43
+ browser <command> How the agent's browser runs (browser help)
44
+ worktree <command> Managed git worktrees (worktree help)
45
+
46
+ Standalone terminal options:
47
+ --data <dir> Data directory (installed default: ~/.xingular-harness/data;
48
+ npm run dev default: ~/.xingular-harness-dev/data)
49
+ --state <dir> State directory (installed default: ~/.xingular-harness/state;
50
+ npm run dev default: ~/.xingular-harness-dev/state)
51
+ --worktree [name], -w [name]
52
+ Start in a new managed worktree of this repository, or in
53
+ the named one
54
+ `;
55
+ function flags(argv) {
56
+ const values = {};
57
+ const switches = new Set();
58
+ for (let index = 0; index < argv.length; index += 1) {
59
+ const name = argv[index];
60
+ if (!name.startsWith('--'))
61
+ continue;
62
+ const next = argv[index + 1];
63
+ if (next !== undefined && !next.startsWith('--')) {
64
+ ;
65
+ (values[name.slice(2)] ??= []).push(next);
66
+ index += 1;
67
+ }
68
+ else
69
+ switches.add(name.slice(2));
70
+ }
71
+ return { values, switches };
72
+ }
73
+ function serveCommand(argv) {
74
+ const { values, switches } = flags(argv);
75
+ const stateArgument = values.state?.[0];
76
+ if (!stateArgument) {
77
+ process.stderr.write('serve needs --state <dir>.\n');
78
+ return Promise.resolve(2);
79
+ }
80
+ // The socket path is built from this folder, so a relative one would depend on where the host ran.
81
+ const stateDir = resolve(stateArgument);
82
+ const peer = new RpcPeer(stdioTransport());
83
+ const options = {
84
+ stateDir,
85
+ dataRoot: values.data?.[0] ? resolve(values.data[0]) : null,
86
+ productName: values.name?.[0],
87
+ builtins: values.builtins,
88
+ ...(switches.has('host-secrets') ? { secrets: remoteSecrets(peer) } : {}),
89
+ ...(switches.has('host-policy') ? { policy: remotePolicy(peer) } : {}),
90
+ ...(switches.has('host-directory') ? { directory: remoteDirectory(peer) } : {})
91
+ };
92
+ const harness = createHarness(options);
93
+ if (switches.has('host-tools'))
94
+ harness.sessions.provide(remoteTools(peer));
95
+ attach(harness, peer);
96
+ return new Promise((resolve) => {
97
+ let closing = false;
98
+ const shutdown = () => {
99
+ if (closing)
100
+ return;
101
+ closing = true;
102
+ void Promise.race([harness.close(), new Promise((done) => setTimeout(done, 5000))]).then(() => resolve(0));
103
+ };
104
+ peer.handle('harness.shutdown', () => void setImmediate(shutdown));
105
+ process.stdin.on('end', shutdown);
106
+ process.on('SIGTERM', shutdown);
107
+ process.on('SIGINT', shutdown);
108
+ peer.send({ notice: { type: 'ready' } });
109
+ log('ready');
110
+ });
111
+ }
112
+ async function main() {
113
+ const argv = process.argv.slice(2);
114
+ if (argv.length === 1 && (argv[0] === '--version' || argv[0] === '-v')) {
115
+ process.stdout.write(`${manifest.version}\n`);
116
+ return 0;
117
+ }
118
+ const [command, ...rest] = argv;
119
+ if (argv.includes('--help') || argv.includes('-h')) {
120
+ process.stdout.write(USAGE);
121
+ return 0;
122
+ }
123
+ const terminalArgs = standaloneArguments(argv);
124
+ if (terminalArgs !== null)
125
+ return runStandaloneTerminal(terminalArgs);
126
+ if (command === 'serve')
127
+ return serveCommand(rest);
128
+ if (command === 'wiki')
129
+ return runWikiCli(rest);
130
+ if (command === 'mcp')
131
+ return runAppsCli(rest);
132
+ if (command === 'plugins')
133
+ return runPluginsCli(rest, { ask: terminalAsk() });
134
+ if (command === 'hub')
135
+ return runHubCli(rest);
136
+ if (command === 'refine')
137
+ return runRefineCli(rest);
138
+ if (command === 'web')
139
+ return runWebCli(rest);
140
+ if (command === 'browser')
141
+ return runBrowserCli(rest);
142
+ if (command === 'worktree')
143
+ return runWorktreeCli(rest);
144
+ process.stdout.write(USAGE);
145
+ return command ? 2 : 0;
146
+ }
147
+ void main().then((code) => process.exit(code), (error) => {
148
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
149
+ process.exit(1);
150
+ });
@@ -0,0 +1,23 @@
1
+ export interface Notice {
2
+ /** `accounts.changed`, `accounts.login`, `accounts.loginEvent`, `wiki.changed`, `wiki.maintenance`, … */
3
+ type: string;
4
+ [key: string]: unknown;
5
+ }
6
+ export type NoticeListener = (notice: Notice) => void;
7
+ export declare class Bus {
8
+ private readonly listeners;
9
+ on(listener: NoticeListener): () => void;
10
+ emit(notice: Notice): void;
11
+ }
12
+ /**
13
+ * Sends diagnostics somewhere other than stderr, or back to stderr with `null`. A host whose stderr is
14
+ * the terminal a frontend is drawing on must not write into it, so it sets a sink.
15
+ */
16
+ export declare function setLogSink(sink: ((text: string) => void) | null): void;
17
+ /** One line of diagnostics. Diagnostics go to stderr by default; stdout may be carrying a protocol. */
18
+ export declare function logLine(text: string): void;
19
+ /** Redacts common credentials and URL query values before diagnostic text is persisted or shown. */
20
+ export declare function redactLogText(text: string): string;
21
+ /** Records useful failure detail without persisting credentials or response bodies. */
22
+ export declare function logDiagnostic(scope: string, error: unknown, metadata?: Record<string, unknown>): void;
23
+ export declare function log(...parts: unknown[]): void;
@@ -0,0 +1,76 @@
1
+ // Notices: what the harness tells whoever embeds it. Run events travel separately, through the
2
+ // run tracker; a notice says that some state changed and should be read again.
3
+ export class Bus {
4
+ listeners = new Set();
5
+ on(listener) {
6
+ this.listeners.add(listener);
7
+ return () => this.listeners.delete(listener);
8
+ }
9
+ emit(notice) {
10
+ for (const listener of this.listeners) {
11
+ try {
12
+ listener(notice);
13
+ }
14
+ catch (error) {
15
+ log('a notice listener failed', error instanceof Error ? error.message : String(error));
16
+ }
17
+ }
18
+ }
19
+ }
20
+ let logSink = null;
21
+ /**
22
+ * Sends diagnostics somewhere other than stderr, or back to stderr with `null`. A host whose stderr is
23
+ * the terminal a frontend is drawing on must not write into it, so it sets a sink.
24
+ */
25
+ export function setLogSink(sink) {
26
+ logSink = sink;
27
+ }
28
+ /** One line of diagnostics. Diagnostics go to stderr by default; stdout may be carrying a protocol. */
29
+ export function logLine(text) {
30
+ if (logSink)
31
+ logSink(text);
32
+ else
33
+ process.stderr.write(`${text}\n`);
34
+ }
35
+ /** Redacts common credentials and URL query values before diagnostic text is persisted or shown. */
36
+ export function redactLogText(text) {
37
+ return text
38
+ .replace(/\bBearer\s+\S+/gi, 'Bearer [redacted]')
39
+ .replace(/(["']?(?:authorization|proxy-authorization|cookie|set-cookie|x-[\w-]{0,64}(?:token|key)|[\w-]{0,64}(?:api[_-]?key|access[_-]?token|refresh[_-]?token|id[_-]?token|token|secret|password|client[_-]?secret))["']?\s*[:=]\s*["']?)[^"'\s,;]+/gi, '$1[redacted]')
40
+ .replace(/\b(?:sk|sess)-[A-Za-z0-9_-]{16,}\b/gi, '[redacted]')
41
+ .replace(/\bhttps?:\/\/[^\s"'<>]+/gi, (raw) => {
42
+ const punctuation = /[),.;!?]+$/.exec(raw)?.[0] ?? '';
43
+ const address = punctuation ? raw.slice(0, -punctuation.length) : raw;
44
+ try {
45
+ const url = new URL(address);
46
+ url.username = '';
47
+ url.password = '';
48
+ url.search = '';
49
+ url.hash = '';
50
+ return `${url.href}${punctuation}`;
51
+ }
52
+ catch {
53
+ return raw;
54
+ }
55
+ });
56
+ }
57
+ /** Records useful failure detail without persisting credentials or response bodies. */
58
+ export function logDiagnostic(scope, error, metadata = {}) {
59
+ const failure = error instanceof Error ? error : new Error(String(error));
60
+ const details = {
61
+ ...metadata,
62
+ message: failure.message,
63
+ ...(failure.stack ? { stack: failure.stack } : {})
64
+ };
65
+ let serialized;
66
+ try {
67
+ serialized = JSON.stringify(details);
68
+ }
69
+ catch {
70
+ serialized = JSON.stringify({ message: failure.message, stack: failure.stack });
71
+ }
72
+ logLine(`[harness] ${redactLogText(scope)} ${redactLogText(serialized)}`);
73
+ }
74
+ export function log(...parts) {
75
+ logLine(`[harness] ${parts.map((part) => (typeof part === 'string' ? part : JSON.stringify(part))).join(' ')}`);
76
+ }
@@ -0,0 +1,22 @@
1
+ import { type Project } from "./projects.js";
2
+ export interface CallerContext {
3
+ /** Opaque, host-owned policy data frozen when this session starts. The harness only forwards it to the embedding app's tool policy. */
4
+ policyContext?: unknown;
5
+ runId?: string | null;
6
+ sessionId?: string | null;
7
+ projectId?: string | null;
8
+ /** The caller: decides which plugins and connectors reach it, and whose history it recalls. */
9
+ agentId?: string | null;
10
+ /** Callers whose conversations this one may not recall (opaque ids from the embedding host). */
11
+ recallExcludeAgents?: string[] | null;
12
+ /** The caller's name, recorded on what it writes. */
13
+ agentName?: string | null;
14
+ /** `Chat` for an agent's own conversation, `Code` for a session in a project. */
15
+ actor?: string | null;
16
+ /** `cli` when the caller reaches the harness through a terminal command. */
17
+ surface?: string | null;
18
+ }
19
+ export declare const isSession: (context: CallerContext) => boolean;
20
+ export declare const actorOf: (context: CallerContext) => string;
21
+ export declare const usesCli: (context: CallerContext) => boolean;
22
+ export declare function projectOf(root: string, context: CallerContext): Project | null;
@@ -0,0 +1,16 @@
1
+ // Who a session works as. The embedding application supplies this when a session starts; the
2
+ // harness never looks an agent up by itself. The ids are opaque to the harness.
3
+ import { findProject } from "./projects.js";
4
+ export const isSession = (context) => context.actor === 'Code';
5
+ export const actorOf = (context) => (isSession(context) ? 'Code' : 'Chat');
6
+ export const usesCli = (context) => context.surface === 'cli';
7
+ export function projectOf(root, context) {
8
+ if (!context.projectId)
9
+ return null;
10
+ try {
11
+ return findProject(root, context.projectId);
12
+ }
13
+ catch {
14
+ return null;
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ export interface Change {
2
+ /** The Wiki folder the entry is in. */
3
+ wiki: string;
4
+ id: string;
5
+ /** The file that was written. */
6
+ path: string;
7
+ /** Its new contents, front matter included. */
8
+ text: string;
9
+ actor: string;
10
+ reason: string;
11
+ }
12
+ type Listener = (change: Change) => void;
13
+ export declare function noteChange(change: Change): void;
14
+ export declare function onChange(listener: Listener): () => void;
15
+ export {};
@@ -0,0 +1,15 @@
1
+ const listeners = new Set();
2
+ export function noteChange(change) {
3
+ for (const listener of listeners) {
4
+ try {
5
+ listener(change);
6
+ }
7
+ catch {
8
+ // A listener must never break the write it is told about.
9
+ }
10
+ }
11
+ }
12
+ export function onChange(listener) {
13
+ listeners.add(listener);
14
+ return () => void listeners.delete(listener);
15
+ }
@@ -0,0 +1,2 @@
1
+ export declare const EFFORTS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
2
+ export type Effort = (typeof EFFORTS)[number];
@@ -0,0 +1 @@
1
+ export const EFFORTS = ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'];
@@ -0,0 +1,18 @@
1
+ /** Names the harness shows but does not own. Every lookup may answer `null`. */
2
+ export interface Directory {
3
+ /** An agent's display name. */
4
+ agentName(agentId: string): string | null;
5
+ /** The agent a conversation belongs to, when the session id is not the agent's own id. */
6
+ sessionAgent(sessionId: string): string | null;
7
+ }
8
+ /** The name used when an application gives none. */
9
+ export declare const DEFAULT_PRODUCT_NAME = "Xingular Agent";
10
+ export declare const EMPTY_DIRECTORY: Directory;
11
+ export interface HarnessEnv {
12
+ /** The data root: `wiki/`, `registry/`, `runs/`, `config/`, `index.sqlite`. */
13
+ root: string;
14
+ directory: Directory;
15
+ /** How the harness names itself to a model and in the Wiki it creates. */
16
+ productName: string;
17
+ }
18
+ export declare function createEnv(root: string, options?: Partial<Omit<HarnessEnv, 'root'>>): HarnessEnv;
@@ -0,0 +1,8 @@
1
+ // What every harness module is given: where the data lives, and what the embedding application
2
+ // knows that the harness does not.
3
+ /** The name used when an application gives none. */
4
+ export const DEFAULT_PRODUCT_NAME = 'Xingular Agent';
5
+ export const EMPTY_DIRECTORY = { agentName: () => null, sessionAgent: () => null };
6
+ export function createEnv(root, options = {}) {
7
+ return { root, directory: options.directory ?? EMPTY_DIRECTORY, productName: options.productName ?? DEFAULT_PRODUCT_NAME };
8
+ }
@@ -0,0 +1,15 @@
1
+ /** A typed failure: a stable code, a message a person can read, and an optional hint on what to do next. */
2
+ export declare class HarnessError extends Error {
3
+ readonly code: string;
4
+ readonly retryHint: string | null;
5
+ constructor(code: string, message: string, retryHint?: string | null);
6
+ withHint(hint: string): HarnessError;
7
+ }
8
+ export declare const invalid: (message: string) => HarnessError;
9
+ export declare const notFound: (what: string) => HarnessError;
10
+ export interface ErrorShape {
11
+ code: string;
12
+ message: string;
13
+ retryHint?: string | null;
14
+ }
15
+ export declare function toErrorShape(error: unknown, fallbackCode?: string): ErrorShape;
@@ -0,0 +1,24 @@
1
+ /** A typed failure: a stable code, a message a person can read, and an optional hint on what to do next. */
2
+ export class HarnessError extends Error {
3
+ code;
4
+ retryHint;
5
+ constructor(code, message, retryHint = null) {
6
+ super(message);
7
+ this.name = 'HarnessError';
8
+ this.code = code;
9
+ this.retryHint = retryHint;
10
+ }
11
+ withHint(hint) {
12
+ return new HarnessError(this.code, this.message, hint);
13
+ }
14
+ }
15
+ export const invalid = (message) => new HarnessError('invalid_request', message);
16
+ export const notFound = (what) => new HarnessError('not_found', `${what} was not found.`);
17
+ export function toErrorShape(error, fallbackCode = 'harness_error') {
18
+ if (error instanceof HarnessError)
19
+ return { code: error.code, message: error.message, retryHint: error.retryHint };
20
+ const code = error?.code;
21
+ if (error instanceof Error && typeof code === 'string' && code.startsWith('E'))
22
+ return { code: 'io_error', message: error.message };
23
+ return { code: fallbackCode, message: error instanceof Error ? error.message : String(error) };
24
+ }
@@ -0,0 +1,12 @@
1
+ export declare function split(text: string): {
2
+ yaml: string;
3
+ body: string;
4
+ } | null;
5
+ /** The frontmatter as a plain object and the body, or `null` when the block is missing or is not a mapping. */
6
+ export declare function parse(text: string): {
7
+ front: Record<string, unknown>;
8
+ body: string;
9
+ } | null;
10
+ /** The text after a readable frontmatter block, or the whole text when there is none. */
11
+ export declare function bodyOf(text: string): string;
12
+ export declare function serialize(front: Record<string, unknown>, body: string): string;
@@ -0,0 +1,50 @@
1
+ // Markdown files with a YAML frontmatter block (`---` … `---`), used by Wiki pages, facts, blocks and registry items.
2
+ import { parse as parseYaml, stringify } from 'yaml';
3
+ import { HarnessError } from "./errors.js";
4
+ export function split(text) {
5
+ const rest = text.startsWith('---\n') ? text.slice(4) : text.startsWith('---\r\n') ? text.slice(5) : null;
6
+ if (rest === null)
7
+ return null;
8
+ const end = rest.indexOf('\n---');
9
+ if (end < 0)
10
+ return null;
11
+ return { yaml: rest.slice(0, end), body: rest.slice(end + 4).replace(/^[\r\n]+/, '') };
12
+ }
13
+ /** The frontmatter as a plain object and the body, or `null` when the block is missing or is not a mapping. */
14
+ export function parse(text) {
15
+ const parts = split(text);
16
+ if (!parts)
17
+ return null;
18
+ try {
19
+ const front = parseYaml(parts.yaml);
20
+ if (!front || typeof front !== 'object' || Array.isArray(front))
21
+ return null;
22
+ return { front: front, body: parts.body };
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ /** The text after a readable frontmatter block, or the whole text when there is none. */
29
+ export function bodyOf(text) {
30
+ const parts = split(text);
31
+ if (!parts)
32
+ return text;
33
+ try {
34
+ parseYaml(parts.yaml);
35
+ return parts.body;
36
+ }
37
+ catch {
38
+ return text;
39
+ }
40
+ }
41
+ export function serialize(front, body) {
42
+ let yaml;
43
+ try {
44
+ yaml = stringify(front, { lineWidth: 0 });
45
+ }
46
+ catch (error) {
47
+ throw new HarnessError('invalid_data', error instanceof Error ? error.message : String(error));
48
+ }
49
+ return `---\n${yaml}---\n\n${body.trimEnd()}\n`;
50
+ }