@xingular/harness 0.1.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (683) hide show
  1. package/CHANGELOG.md +97 -1
  2. package/LICENSE +202 -0
  3. package/NOTICE.md +22 -0
  4. package/README.md +187 -85
  5. package/THIRD_PARTY_LICENSES.md +942 -0
  6. package/dist/cli.js +13701 -13498
  7. package/dist/sdk/accounts/accounts.d.ts +165 -0
  8. package/dist/sdk/accounts/accounts.js +730 -0
  9. package/dist/sdk/accounts/choices.d.ts +23 -0
  10. package/dist/sdk/accounts/choices.js +62 -0
  11. package/dist/sdk/accounts/env.d.ts +78 -0
  12. package/dist/sdk/accounts/env.js +294 -0
  13. package/dist/sdk/accounts/secrets.d.ts +16 -0
  14. package/dist/sdk/accounts/secrets.js +40 -0
  15. package/dist/sdk/accounts/store.d.ts +114 -0
  16. package/dist/sdk/accounts/store.js +255 -0
  17. package/dist/sdk/browser/config.d.ts +16 -0
  18. package/dist/sdk/browser/config.js +22 -0
  19. package/dist/sdk/browser/diagnostics.d.ts +4 -0
  20. package/dist/sdk/browser/diagnostics.js +38 -0
  21. package/dist/sdk/browser/index.d.ts +17 -0
  22. package/dist/sdk/browser/index.js +65 -0
  23. package/dist/sdk/browser/network.d.ts +10 -0
  24. package/dist/sdk/browser/network.js +59 -0
  25. package/dist/sdk/browser/session.d.ts +84 -0
  26. package/dist/sdk/browser/session.js +192 -0
  27. package/dist/sdk/browser/tools.d.ts +8 -0
  28. package/dist/sdk/browser/tools.js +329 -0
  29. package/dist/sdk/capabilities/api.d.ts +22 -0
  30. package/dist/sdk/capabilities/api.js +54 -0
  31. package/dist/sdk/capabilities/runSnapshot.d.ts +18 -0
  32. package/dist/sdk/capabilities/runSnapshot.js +47 -0
  33. package/dist/sdk/capabilities/types.d.ts +29 -0
  34. package/dist/sdk/capabilities/types.js +1 -0
  35. package/dist/sdk/cli.d.ts +2 -0
  36. package/dist/sdk/cli.js +142 -0
  37. package/dist/sdk/core/bus.d.ts +23 -0
  38. package/dist/sdk/core/bus.js +76 -0
  39. package/dist/sdk/core/caller.d.ts +22 -0
  40. package/dist/sdk/core/caller.js +16 -0
  41. package/dist/sdk/core/changes.d.ts +15 -0
  42. package/dist/sdk/core/changes.js +15 -0
  43. package/dist/sdk/core/effort.d.ts +2 -0
  44. package/dist/sdk/core/effort.js +1 -0
  45. package/dist/sdk/core/env.d.ts +18 -0
  46. package/dist/sdk/core/env.js +8 -0
  47. package/dist/sdk/core/errors.d.ts +15 -0
  48. package/dist/sdk/core/errors.js +24 -0
  49. package/dist/sdk/core/frontmatter.d.ts +12 -0
  50. package/dist/sdk/core/frontmatter.js +50 -0
  51. package/dist/sdk/core/fs.d.ts +18 -0
  52. package/dist/sdk/core/fs.js +106 -0
  53. package/dist/sdk/core/index.d.ts +24 -0
  54. package/dist/sdk/core/index.js +187 -0
  55. package/dist/sdk/core/path.d.ts +7 -0
  56. package/dist/sdk/core/path.js +79 -0
  57. package/dist/sdk/core/projects.d.ts +18 -0
  58. package/dist/sdk/core/projects.js +67 -0
  59. package/dist/sdk/core/secrets.d.ts +2 -0
  60. package/dist/sdk/core/secrets.js +5 -0
  61. package/dist/sdk/core/text.d.ts +7 -0
  62. package/dist/sdk/core/text.js +40 -0
  63. package/dist/sdk/doctor/checks.d.ts +5 -0
  64. package/dist/sdk/doctor/checks.js +208 -0
  65. package/dist/sdk/doctor/probe.d.ts +4 -0
  66. package/dist/sdk/doctor/probe.js +92 -0
  67. package/dist/sdk/doctor/service.d.ts +23 -0
  68. package/dist/sdk/doctor/service.js +144 -0
  69. package/dist/sdk/doctor/types.d.ts +141 -0
  70. package/dist/sdk/doctor/types.js +29 -0
  71. package/dist/sdk/harness.d.ts +133 -0
  72. package/dist/sdk/harness.js +299 -0
  73. package/dist/sdk/history/lessonPrompt.d.ts +2 -0
  74. package/dist/sdk/history/lessonPrompt.js +15 -0
  75. package/dist/sdk/history/lessons.d.ts +52 -0
  76. package/dist/sdk/history/lessons.js +173 -0
  77. package/dist/sdk/history/recall.d.ts +68 -0
  78. package/dist/sdk/history/recall.js +199 -0
  79. package/dist/sdk/history/trajectory.d.ts +7 -0
  80. package/dist/sdk/history/trajectory.js +216 -0
  81. package/dist/sdk/hub/catalog.json +123 -0
  82. package/dist/sdk/hub/cli.d.ts +7 -0
  83. package/dist/sdk/hub/cli.js +81 -0
  84. package/dist/sdk/hub/hub.d.ts +74 -0
  85. package/dist/sdk/hub/hub.js +474 -0
  86. package/dist/sdk/hub/schema.d.ts +280 -0
  87. package/dist/sdk/hub/schema.js +78 -0
  88. package/dist/sdk/index.d.ts +63 -0
  89. package/dist/sdk/index.js +48 -0
  90. package/dist/sdk/mcp/connections.d.ts +83 -0
  91. package/dist/sdk/mcp/connections.js +669 -0
  92. package/dist/sdk/mcp/manager.d.ts +26 -0
  93. package/dist/sdk/mcp/manager.js +124 -0
  94. package/dist/sdk/mcp/oauth.d.ts +35 -0
  95. package/dist/sdk/mcp/oauth.js +171 -0
  96. package/dist/sdk/mcp/scopeMigration.d.ts +19 -0
  97. package/dist/sdk/mcp/scopeMigration.js +198 -0
  98. package/dist/sdk/mcp/service.d.ts +160 -0
  99. package/dist/sdk/mcp/service.js +510 -0
  100. package/dist/sdk/mcp/types.d.ts +131 -0
  101. package/dist/sdk/mcp/types.js +49 -0
  102. package/dist/sdk/pi/runtime.d.ts +13 -0
  103. package/dist/sdk/pi/runtime.js +31 -0
  104. package/dist/sdk/plugins/api.d.ts +66 -0
  105. package/dist/sdk/plugins/api.js +155 -0
  106. package/dist/sdk/plugins/attachments.d.ts +46 -0
  107. package/dist/sdk/plugins/attachments.js +111 -0
  108. package/dist/sdk/plugins/builtin.d.ts +6 -0
  109. package/dist/sdk/plugins/builtin.js +68 -0
  110. package/dist/sdk/plugins/catalogue.d.ts +29 -0
  111. package/dist/sdk/plugins/catalogue.js +196 -0
  112. package/dist/sdk/plugins/cli.d.ts +13 -0
  113. package/dist/sdk/plugins/cli.js +187 -0
  114. package/dist/sdk/plugins/discover.d.ts +42 -0
  115. package/dist/sdk/plugins/discover.js +115 -0
  116. package/dist/sdk/plugins/firstParty.d.ts +50 -0
  117. package/dist/sdk/plugins/firstParty.js +113 -0
  118. package/dist/sdk/plugins/hooks.d.ts +94 -0
  119. package/dist/sdk/plugins/hooks.js +162 -0
  120. package/dist/sdk/plugins/identity.d.ts +19 -0
  121. package/dist/sdk/plugins/identity.js +48 -0
  122. package/dist/sdk/plugins/install.d.ts +20 -0
  123. package/dist/sdk/plugins/install.js +110 -0
  124. package/dist/sdk/plugins/inventory.d.ts +22 -0
  125. package/dist/sdk/plugins/inventory.js +110 -0
  126. package/dist/sdk/plugins/manifest.d.ts +13 -0
  127. package/dist/sdk/plugins/manifest.js +56 -0
  128. package/dist/sdk/plugins/plugins.d.ts +104 -0
  129. package/dist/sdk/plugins/plugins.js +164 -0
  130. package/dist/sdk/plugins/runtime.d.ts +9 -0
  131. package/dist/sdk/plugins/runtime.js +95 -0
  132. package/dist/sdk/plugins/trust.d.ts +44 -0
  133. package/dist/sdk/plugins/trust.js +120 -0
  134. package/dist/sdk/plugins/types.d.ts +159 -0
  135. package/dist/sdk/plugins/types.js +7 -0
  136. package/dist/sdk/prompt/compile.d.ts +174 -0
  137. package/dist/sdk/prompt/compile.js +396 -0
  138. package/dist/sdk/refine/cli.d.ts +4 -0
  139. package/dist/sdk/refine/cli.js +186 -0
  140. package/dist/sdk/refine/demo.d.ts +21 -0
  141. package/dist/sdk/refine/demo.js +114 -0
  142. package/dist/sdk/refine/evidence.d.ts +55 -0
  143. package/dist/sdk/refine/evidence.js +330 -0
  144. package/dist/sdk/refine/host.d.ts +51 -0
  145. package/dist/sdk/refine/host.js +76 -0
  146. package/dist/sdk/refine/ledger.d.ts +48 -0
  147. package/dist/sdk/refine/ledger.js +76 -0
  148. package/dist/sdk/refine/library.d.ts +55 -0
  149. package/dist/sdk/refine/library.js +177 -0
  150. package/dist/sdk/refine/pi.d.ts +72 -0
  151. package/dist/sdk/refine/pi.js +248 -0
  152. package/dist/sdk/refine/prompts.d.ts +45 -0
  153. package/dist/sdk/refine/prompts.js +390 -0
  154. package/dist/sdk/refine/recursion.d.ts +113 -0
  155. package/dist/sdk/refine/recursion.js +258 -0
  156. package/dist/sdk/refine/runner.d.ts +81 -0
  157. package/dist/sdk/refine/runner.js +150 -0
  158. package/dist/sdk/refine/selection.d.ts +57 -0
  159. package/dist/sdk/refine/selection.js +251 -0
  160. package/dist/sdk/refine/service.d.ts +84 -0
  161. package/dist/sdk/refine/service.js +165 -0
  162. package/dist/sdk/refine/suite.d.ts +67 -0
  163. package/dist/sdk/refine/suite.js +174 -0
  164. package/dist/sdk/refine/trajectory.d.ts +9 -0
  165. package/dist/sdk/refine/trajectory.js +68 -0
  166. package/dist/sdk/refine/types.d.ts +77 -0
  167. package/dist/sdk/refine/types.js +10 -0
  168. package/dist/sdk/server/methods.d.ts +3 -0
  169. package/dist/sdk/server/methods.js +370 -0
  170. package/dist/sdk/server/remote.d.ts +19 -0
  171. package/dist/sdk/server/remote.js +84 -0
  172. package/dist/sdk/server/rpc.d.ts +20 -0
  173. package/dist/sdk/server/rpc.js +102 -0
  174. package/dist/sdk/server/serve.d.ts +10 -0
  175. package/dist/sdk/server/serve.js +18 -0
  176. package/dist/sdk/sessions/approvals.d.ts +47 -0
  177. package/dist/sdk/sessions/approvals.js +119 -0
  178. package/dist/sdk/sessions/continuation.d.ts +48 -0
  179. package/dist/sdk/sessions/continuation.js +85 -0
  180. package/dist/sdk/sessions/contracts.d.ts +534 -0
  181. package/dist/sdk/sessions/contracts.js +299 -0
  182. package/dist/sdk/sessions/extensionUi.d.ts +19 -0
  183. package/dist/sdk/sessions/extensionUi.js +64 -0
  184. package/dist/sdk/sessions/history.d.ts +16 -0
  185. package/dist/sdk/sessions/history.js +68 -0
  186. package/dist/sdk/sessions/lineageJoin.d.ts +2 -0
  187. package/dist/sdk/sessions/lineageJoin.js +61 -0
  188. package/dist/sdk/sessions/planMode.d.ts +36 -0
  189. package/dist/sdk/sessions/planMode.js +84 -0
  190. package/dist/sdk/sessions/policy.d.ts +43 -0
  191. package/dist/sdk/sessions/policy.js +1 -0
  192. package/dist/sdk/sessions/pricing.d.ts +34 -0
  193. package/dist/sdk/sessions/pricing.js +40 -0
  194. package/dist/sdk/sessions/reasoningSummaries.d.ts +11 -0
  195. package/dist/sdk/sessions/reasoningSummaries.js +61 -0
  196. package/dist/sdk/sessions/registry.d.ts +102 -0
  197. package/dist/sdk/sessions/registry.js +383 -0
  198. package/dist/sdk/sessions/runIndex.d.ts +21 -0
  199. package/dist/sdk/sessions/runIndex.js +65 -0
  200. package/dist/sdk/sessions/runStore.d.ts +66 -0
  201. package/dist/sdk/sessions/runStore.js +335 -0
  202. package/dist/sdk/sessions/runner.d.ts +213 -0
  203. package/dist/sdk/sessions/runner.js +589 -0
  204. package/dist/sdk/sessions/sessions.d.ts +140 -0
  205. package/dist/sdk/sessions/sessions.js +394 -0
  206. package/dist/sdk/sessions/subagentService.d.ts +41 -0
  207. package/dist/sdk/sessions/subagentService.js +247 -0
  208. package/dist/sdk/sessions/subagents.d.ts +50 -0
  209. package/dist/sdk/sessions/subagents.js +68 -0
  210. package/dist/sdk/terminal/accountsMenu.d.ts +46 -0
  211. package/dist/sdk/terminal/accountsMenu.js +392 -0
  212. package/dist/sdk/terminal/cli.d.ts +20 -0
  213. package/dist/sdk/terminal/cli.js +121 -0
  214. package/dist/sdk/terminal/client.d.ts +15 -0
  215. package/dist/sdk/terminal/client.js +126 -0
  216. package/dist/sdk/terminal/control.d.ts +4 -0
  217. package/dist/sdk/terminal/control.js +25 -0
  218. package/dist/sdk/terminal/controller.d.ts +72 -0
  219. package/dist/sdk/terminal/controller.js +351 -0
  220. package/dist/sdk/terminal/hubMenu.d.ts +10 -0
  221. package/dist/sdk/terminal/hubMenu.js +34 -0
  222. package/dist/sdk/terminal/launch.d.ts +5 -0
  223. package/dist/sdk/terminal/launch.js +27 -0
  224. package/dist/sdk/terminal/logs.d.ts +14 -0
  225. package/dist/sdk/terminal/logs.js +59 -0
  226. package/dist/sdk/terminal/piExtension.d.ts +6 -0
  227. package/dist/sdk/terminal/piExtension.js +392 -0
  228. package/dist/sdk/terminal/pluginMenu.d.ts +34 -0
  229. package/dist/sdk/terminal/pluginMenu.js +101 -0
  230. package/dist/sdk/terminal/socket.d.ts +70 -0
  231. package/dist/sdk/terminal/socket.js +256 -0
  232. package/dist/sdk/terminal/standalone.d.ts +18 -0
  233. package/dist/sdk/terminal/standalone.js +146 -0
  234. package/dist/sdk/terminal/terminals.d.ts +176 -0
  235. package/dist/sdk/terminal/terminals.js +767 -0
  236. package/dist/sdk/terminal/trajectory.d.ts +10 -0
  237. package/dist/sdk/terminal/trajectory.js +30 -0
  238. package/dist/sdk/terminal/tui/chrome.d.ts +64 -0
  239. package/dist/sdk/terminal/tui/chrome.js +169 -0
  240. package/dist/sdk/terminal/tui/clipboardFiles.d.ts +11 -0
  241. package/dist/sdk/terminal/tui/clipboardFiles.js +74 -0
  242. package/dist/sdk/terminal/tui/commandPages.d.ts +7 -0
  243. package/dist/sdk/terminal/tui/commandPages.js +63 -0
  244. package/dist/sdk/terminal/tui/commands.d.ts +42 -0
  245. package/dist/sdk/terminal/tui/commands.js +276 -0
  246. package/dist/sdk/terminal/tui/dialogGeometry.d.ts +27 -0
  247. package/dist/sdk/terminal/tui/dialogGeometry.js +50 -0
  248. package/dist/sdk/terminal/tui/dialogs.d.ts +75 -0
  249. package/dist/sdk/terminal/tui/dialogs.js +363 -0
  250. package/dist/sdk/terminal/tui/keybindings.d.ts +11 -0
  251. package/dist/sdk/terminal/tui/keybindings.js +49 -0
  252. package/dist/sdk/terminal/tui/list.d.ts +73 -0
  253. package/dist/sdk/terminal/tui/list.js +196 -0
  254. package/dist/sdk/terminal/tui/modeChoices.d.ts +42 -0
  255. package/dist/sdk/terminal/tui/modeChoices.js +70 -0
  256. package/dist/sdk/terminal/tui/modelPicker.d.ts +55 -0
  257. package/dist/sdk/terminal/tui/modelPicker.js +155 -0
  258. package/dist/sdk/terminal/tui/mouse.d.ts +3 -0
  259. package/dist/sdk/terminal/tui/mouse.js +3 -0
  260. package/dist/sdk/terminal/tui/page.d.ts +14 -0
  261. package/dist/sdk/terminal/tui/page.js +1 -0
  262. package/dist/sdk/terminal/tui/pageOverlay.d.ts +27 -0
  263. package/dist/sdk/terminal/tui/pageOverlay.js +145 -0
  264. package/dist/sdk/terminal/tui/pages/accountsPage.d.ts +54 -0
  265. package/dist/sdk/terminal/tui/pages/accountsPage.js +181 -0
  266. package/dist/sdk/terminal/tui/pages/componentsPage.d.ts +47 -0
  267. package/dist/sdk/terminal/tui/pages/componentsPage.js +119 -0
  268. package/dist/sdk/terminal/tui/pages/doctorPage.d.ts +37 -0
  269. package/dist/sdk/terminal/tui/pages/doctorPage.js +145 -0
  270. package/dist/sdk/terminal/tui/pages/hubPage.d.ts +39 -0
  271. package/dist/sdk/terminal/tui/pages/hubPage.js +128 -0
  272. package/dist/sdk/terminal/tui/pages/logPage.d.ts +38 -0
  273. package/dist/sdk/terminal/tui/pages/logPage.js +189 -0
  274. package/dist/sdk/terminal/tui/pages/permissionsPage.d.ts +44 -0
  275. package/dist/sdk/terminal/tui/pages/permissionsPage.js +124 -0
  276. package/dist/sdk/terminal/tui/pages/pluginsPage.d.ts +57 -0
  277. package/dist/sdk/terminal/tui/pages/pluginsPage.js +243 -0
  278. package/dist/sdk/terminal/tui/pages/settingsPage.d.ts +55 -0
  279. package/dist/sdk/terminal/tui/pages/settingsPage.js +88 -0
  280. package/dist/sdk/terminal/tui/pages/trajectoryPage.d.ts +58 -0
  281. package/dist/sdk/terminal/tui/pages/trajectoryPage.js +377 -0
  282. package/dist/sdk/terminal/tui/piAdapter.d.ts +18 -0
  283. package/dist/sdk/terminal/tui/piAdapter.js +48 -0
  284. package/dist/sdk/terminal/tui/planMode.d.ts +2 -0
  285. package/dist/sdk/terminal/tui/planMode.js +2 -0
  286. package/dist/sdk/terminal/tui/questionPicker.d.ts +20 -0
  287. package/dist/sdk/terminal/tui/questionPicker.js +150 -0
  288. package/dist/sdk/terminal/tui/questions.d.ts +19 -0
  289. package/dist/sdk/terminal/tui/questions.js +42 -0
  290. package/dist/sdk/terminal/tui/runtime.d.ts +114 -0
  291. package/dist/sdk/terminal/tui/runtime.js +441 -0
  292. package/dist/sdk/terminal/tui/search.d.ts +22 -0
  293. package/dist/sdk/terminal/tui/search.js +60 -0
  294. package/dist/sdk/terminal/tui/selection.d.ts +16 -0
  295. package/dist/sdk/terminal/tui/selection.js +16 -0
  296. package/dist/sdk/terminal/tui/sessionUi.d.ts +3 -0
  297. package/dist/sdk/terminal/tui/sessionUi.js +30 -0
  298. package/dist/sdk/terminal/tui/settingsModel.d.ts +12 -0
  299. package/dist/sdk/terminal/tui/settingsModel.js +84 -0
  300. package/dist/sdk/terminal/tui/sideQuestion.d.ts +53 -0
  301. package/dist/sdk/terminal/tui/sideQuestion.js +197 -0
  302. package/dist/sdk/terminal/tui/skillInvocation.d.ts +9 -0
  303. package/dist/sdk/terminal/tui/skillInvocation.js +43 -0
  304. package/dist/sdk/terminal/tui/status.d.ts +18 -0
  305. package/dist/sdk/terminal/tui/status.js +67 -0
  306. package/dist/sdk/terminal/tui/theme.d.ts +45 -0
  307. package/dist/sdk/terminal/tui/theme.js +176 -0
  308. package/dist/sdk/terminal/tui/treeModel.d.ts +79 -0
  309. package/dist/sdk/terminal/tui/treeModel.js +483 -0
  310. package/dist/sdk/terminal/tui/treePicker.d.ts +49 -0
  311. package/dist/sdk/terminal/tui/treePicker.js +251 -0
  312. package/dist/sdk/terminal/tui/ui.d.ts +47 -0
  313. package/dist/sdk/terminal/tui/ui.js +148 -0
  314. package/dist/sdk/terminal/tui/workingStatus.d.ts +9 -0
  315. package/dist/sdk/terminal/tui/workingStatus.js +229 -0
  316. package/dist/sdk/tools/askUser.d.ts +6 -0
  317. package/dist/sdk/tools/askUser.js +74 -0
  318. package/dist/sdk/tools/checklist.d.ts +9 -0
  319. package/dist/sdk/tools/checklist.js +54 -0
  320. package/dist/sdk/tools/definitions.d.ts +30 -0
  321. package/dist/sdk/tools/definitions.js +117 -0
  322. package/dist/sdk/tools/dispatch.d.ts +16 -0
  323. package/dist/sdk/tools/dispatch.js +67 -0
  324. package/dist/sdk/tools/harnessTools.d.ts +6 -0
  325. package/dist/sdk/tools/harnessTools.js +20 -0
  326. package/dist/sdk/tools/sessionName.d.ts +7 -0
  327. package/dist/sdk/tools/sessionName.js +31 -0
  328. package/dist/sdk/tools/spawnSubagent.d.ts +4 -0
  329. package/dist/sdk/tools/spawnSubagent.js +49 -0
  330. package/dist/sdk/tools/types.d.ts +48 -0
  331. package/dist/sdk/tools/types.js +1 -0
  332. package/dist/sdk/variant/components.d.ts +34 -0
  333. package/dist/sdk/variant/components.js +230 -0
  334. package/dist/sdk/variant/materialise.d.ts +66 -0
  335. package/dist/sdk/variant/materialise.js +81 -0
  336. package/dist/sdk/variant/migrate.d.ts +4 -0
  337. package/dist/sdk/variant/migrate.js +41 -0
  338. package/dist/sdk/variant/seed.d.ts +20 -0
  339. package/dist/sdk/variant/seed.js +116 -0
  340. package/dist/sdk/variant/store.d.ts +82 -0
  341. package/dist/sdk/variant/store.js +151 -0
  342. package/dist/sdk/variant/surface.d.ts +56 -0
  343. package/dist/sdk/variant/surface.js +81 -0
  344. package/dist/sdk/variant/trust.d.ts +27 -0
  345. package/dist/sdk/variant/trust.js +64 -0
  346. package/dist/sdk/variant/variant.d.ts +71 -0
  347. package/dist/sdk/variant/variant.js +331 -0
  348. package/dist/sdk/web/markdown.d.ts +10 -0
  349. package/dist/sdk/web/markdown.js +66 -0
  350. package/dist/sdk/web/safeRequest.d.ts +34 -0
  351. package/dist/sdk/web/safeRequest.js +175 -0
  352. package/dist/sdk/web/search.d.ts +53 -0
  353. package/dist/sdk/web/search.js +168 -0
  354. package/dist/sdk/web/text.d.ts +2 -0
  355. package/dist/sdk/web/text.js +7 -0
  356. package/dist/sdk/web/tools.d.ts +22 -0
  357. package/dist/sdk/web/tools.js +195 -0
  358. package/dist/sdk/web/turndown-plugin-gfm.d.ts +4 -0
  359. package/dist/sdk/wiki/notes.d.ts +68 -0
  360. package/dist/sdk/wiki/notes.js +297 -0
  361. package/dist/sdk/world/actions.d.ts +23 -0
  362. package/dist/sdk/world/actions.js +31 -0
  363. package/dist/sdk/world/cli.d.ts +12 -0
  364. package/dist/sdk/world/cli.js +166 -0
  365. package/dist/sdk/world/images.d.ts +20 -0
  366. package/dist/sdk/world/images.js +48 -0
  367. package/dist/sdk/world/untrusted.d.ts +12 -0
  368. package/dist/sdk/world/untrusted.js +20 -0
  369. package/dist/sdk/world/world.d.ts +65 -0
  370. package/dist/sdk/world/world.js +80 -0
  371. package/dist/terminal-opentui.js +13612 -0
  372. package/dist/terminal-pi.js +808 -151
  373. package/docs/README.md +22 -0
  374. package/docs/architecture/00-overview.md +159 -0
  375. package/docs/architecture/01-extension-points.md +78 -0
  376. package/docs/architecture/02-sessions-and-runs.md +146 -0
  377. package/docs/architecture/03-variants.md +95 -0
  378. package/docs/architecture/04-prompt.md +102 -0
  379. package/docs/architecture/05-refinement.md +107 -0
  380. package/docs/architecture/06-plugins-and-capabilities.md +93 -0
  381. package/docs/architecture/07-tools-and-gate.md +88 -0
  382. package/docs/architecture/08-memory-and-history.md +94 -0
  383. package/docs/architecture/09-accounts-and-connectors.md +90 -0
  384. package/docs/architecture/10-server-protocol.md +84 -0
  385. package/docs/architecture/11-terminal.md +81 -0
  386. package/docs/architecture/12-storage.md +61 -0
  387. package/docs/architecture/13-world-tools.md +23 -0
  388. package/docs/architecture/README.md +114 -0
  389. package/docs/architecture/proposals/PROP-0001-reporting-section.md +106 -0
  390. package/docs/architecture/proposals/PROP-0002-retain-rollout-workspaces.md +104 -0
  391. package/docs/architecture/proposals/PROP-0003-executor-settings.md +81 -0
  392. package/docs/architecture/proposals/PROP-0004-flexible-reporting-guidance.md +71 -0
  393. package/docs/architecture/proposals/PROP-0005-xharness-cli-name.md +78 -0
  394. package/docs/architecture/proposals/PROP-0006-run-checklist.md +68 -0
  395. package/docs/architecture/proposals/PROP-0007-run-continuation.md +80 -0
  396. package/docs/architecture/proposals/PROP-0008-lessons-from-runs.md +80 -0
  397. package/docs/architecture/proposals/PROP-0009-foundation-and-variants.md +78 -0
  398. package/docs/architecture/proposals/PROP-0010-session-names.md +73 -0
  399. package/docs/architecture/proposals/PROP-0011-doctor.md +63 -0
  400. package/docs/architecture/proposals/PROP-0012-release-baseline.md +56 -0
  401. package/docs/architecture/proposals/README.md +76 -0
  402. package/docs/decisions/ADR-0002-native-subagent-lifecycle.md +49 -0
  403. package/docs/decisions/ADR-0003-shared-asynchronous-subagents.md +70 -0
  404. package/docs/decisions/ADR-0004-fullscreen-terminal-layout.md +50 -0
  405. package/docs/decisions/ADR-0005-app-provided-oauth-clients.md +54 -0
  406. package/docs/decisions/ADR-0006-opentui-only-terminal.md +47 -0
  407. package/docs/decisions/ADR-0007-reporting-section.md +33 -0
  408. package/docs/decisions/ADR-0008-flexible-reporting-guidance.md +38 -0
  409. package/docs/decisions/ADR-0009-xharness-command.md +38 -0
  410. package/docs/decisions/ADR-0010-lessons-in-the-wiki.md +31 -0
  411. package/docs/decisions/ADR-0011-foundation-and-variants.md +28 -0
  412. package/docs/decisions/ADR-0012-native-session-names.md +34 -0
  413. package/docs/decisions/ADR-0013-doctor.md +27 -0
  414. package/docs/decisions/ADR-0014-public-release-baseline.md +21 -0
  415. package/docs/doctor.md +74 -0
  416. package/docs/experiments/EXP-0001-terminal-input-latency/plan.md +81 -0
  417. package/docs/experiments/EXP-0001-terminal-input-latency/results.md +46 -0
  418. package/docs/experiments/EXP-0002-opentui-typing-latency/plan.md +70 -0
  419. package/docs/experiments/EXP-0002-opentui-typing-latency/results.md +92 -0
  420. package/docs/features/README.md +20 -0
  421. package/docs/features/automations/README.md +41 -0
  422. package/docs/features/cores/README.md +39 -0
  423. package/docs/features/google-harness2/README.md +52 -0
  424. package/docs/features/integrations/README.md +40 -0
  425. package/docs/features/interfaces/README.md +29 -0
  426. package/docs/features/memory/README.md +28 -0
  427. package/docs/releases/1.0.0.md +40 -0
  428. package/docs/releases/README.md +36 -0
  429. package/docs/study/00-index.md +78 -0
  430. package/docs/study/arms/00-matrix.md +20 -0
  431. package/docs/study/arms/01-system-prompt.md +211 -0
  432. package/docs/study/arms/02-tools.md +79 -0
  433. package/docs/study/arms/03-subagents.md +90 -0
  434. package/docs/study/arms/04-skills.md +75 -0
  435. package/docs/study/arms/05-context-management.md +90 -0
  436. package/docs/study/arms/06-memory.md +90 -0
  437. package/docs/study/arms/07-governance.md +71 -0
  438. package/docs/study/arms/08-execution.md +69 -0
  439. package/docs/study/arms/09-observability.md +60 -0
  440. package/docs/study/arms/10-refinement.md +110 -0
  441. package/docs/study/btw-comparison.md +37 -0
  442. package/docs/study/feature-gap-review.md +42 -0
  443. package/docs/study/insights.md +123 -0
  444. package/docs/study/roadmap.md +72 -0
  445. package/docs/study/sources/claude-code.md +44 -0
  446. package/docs/study/sources/deepseek-harness.md +102 -0
  447. package/docs/study/sources/harness2.md +50 -0
  448. package/docs/study/sources/kimi-cli.md +42 -0
  449. package/docs/study/sources/omp.md +93 -0
  450. package/docs/study/sources/opencode.md +43 -0
  451. package/docs/study/sources/openhands.md +46 -0
  452. package/docs/study/sources/smolagents.md +40 -0
  453. package/docs/study/sources/swe-agent.md +34 -0
  454. package/docs/system-prompt-design.md +196 -0
  455. package/docs/terminal-tui.md +473 -56
  456. package/package.json +43 -13
  457. package/docs/evidence/terminal-2026-10-17/120x40-completed-transcript.ansi.gz +0 -0
  458. package/docs/evidence/terminal-2026-10-17/40x20-settings-interaction.ansi.gz +0 -0
  459. package/docs/evidence/terminal-2026-10-17/40x20-settings-keyboard.ansi.gz +0 -0
  460. package/docs/evidence/terminal-2026-10-17/40x20-welcome.ansi.gz +0 -0
  461. package/docs/evidence/terminal-2026-10-17/80x24-approval-0.ansi.gz +0 -0
  462. package/docs/evidence/terminal-2026-10-17/80x24-question.ansi.gz +0 -0
  463. package/docs/evidence/terminal-2026-10-17/verification.json +0 -130
  464. package/docs/evidence/terminal-2026-10-17-followup/120x40-completed-transcript.ansi.gz +0 -0
  465. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-interaction.ansi.gz +0 -0
  466. package/docs/evidence/terminal-2026-10-17-followup/40x20-settings-keyboard.ansi.gz +0 -0
  467. package/docs/evidence/terminal-2026-10-17-followup/40x20-welcome.ansi.gz +0 -0
  468. package/docs/evidence/terminal-2026-10-17-followup/80x24-approval-0.ansi.gz +0 -0
  469. package/docs/evidence/terminal-2026-10-17-followup/80x24-plugin-light.ansi.gz +0 -0
  470. package/docs/evidence/terminal-2026-10-17-followup/80x24-question-batch.ansi.gz +0 -0
  471. package/docs/evidence/terminal-2026-10-17-followup/80x24-question.ansi.gz +0 -0
  472. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-approval-0.ansi.gz +0 -0
  473. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-plugin-light.ansi.gz +0 -0
  474. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question-batch.ansi.gz +0 -0
  475. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/80x24-question.ansi.gz +0 -0
  476. package/docs/evidence/terminal-2026-10-17-followup/app-bundle/verification.json +0 -95
  477. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-approval-0.ansi.gz +0 -0
  478. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-plugin-light.ansi.gz +0 -0
  479. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question-batch.ansi.gz +0 -0
  480. package/docs/evidence/terminal-2026-10-17-followup/global-install/80x24-question.ansi.gz +0 -0
  481. package/docs/evidence/terminal-2026-10-17-followup/global-install/README.md +0 -27
  482. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command-80x24.ansi.gz +0 -0
  483. package/docs/evidence/terminal-2026-10-17-followup/global-install/shell-command.json +0 -18
  484. package/docs/evidence/terminal-2026-10-17-followup/global-install/verification.json +0 -95
  485. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-80x24.json.gz +0 -0
  486. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-final-80x24.json.gz +0 -0
  487. package/docs/evidence/terminal-2026-10-17-followup/harness-reference-scenario.json +0 -60
  488. package/docs/evidence/terminal-2026-10-17-followup/live-codex/README.md +0 -24
  489. package/docs/evidence/terminal-2026-10-17-followup/live-codex/complete-80x24.ansi.gz +0 -0
  490. package/docs/evidence/terminal-2026-10-17-followup/live-codex/verification.json +0 -57
  491. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24-early.json.gz +0 -0
  492. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-80x24.json.gz +0 -0
  493. package/docs/evidence/terminal-2026-10-17-followup/omp-reference-scenario.json +0 -58
  494. package/docs/evidence/terminal-2026-10-17-followup/omp-supplemental-static.json.gz +0 -0
  495. package/docs/evidence/terminal-2026-10-17-followup/rea-artifacts.json +0 -320
  496. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.json +0 -30
  497. package/docs/evidence/terminal-2026-10-17-followup/reference-comparison.md +0 -133
  498. package/docs/evidence/terminal-2026-10-17-followup/reference-source-observations.json +0 -20
  499. package/docs/evidence/terminal-2026-10-17-followup/verification.json +0 -207
  500. package/src/accounts/accounts.test.ts +0 -333
  501. package/src/accounts/accounts.ts +0 -658
  502. package/src/accounts/env.test.ts +0 -95
  503. package/src/accounts/env.ts +0 -338
  504. package/src/accounts/secrets.ts +0 -50
  505. package/src/accounts/store.ts +0 -338
  506. package/src/capabilities/api.ts +0 -75
  507. package/src/capabilities/runSnapshot.ts +0 -59
  508. package/src/capabilities/types.ts +0 -34
  509. package/src/cli.ts +0 -118
  510. package/src/core/bus.ts +0 -34
  511. package/src/core/changes.ts +0 -33
  512. package/src/core/env.ts +0 -27
  513. package/src/core/errors.ts +0 -32
  514. package/src/core/frontmatter.ts +0 -47
  515. package/src/core/fs.test.ts +0 -38
  516. package/src/core/fs.ts +0 -92
  517. package/src/core/index.ts +0 -193
  518. package/src/core/path.test.ts +0 -14
  519. package/src/core/path.ts +0 -79
  520. package/src/core/projects.ts +0 -90
  521. package/src/core/text.ts +0 -39
  522. package/src/harness.ts +0 -312
  523. package/src/hub/catalog.json +0 -123
  524. package/src/hub/cli.ts +0 -59
  525. package/src/hub/hub.test.ts +0 -205
  526. package/src/hub/hub.ts +0 -256
  527. package/src/hub/schema.ts +0 -81
  528. package/src/index.ts +0 -75
  529. package/src/mcp/connections.ts +0 -614
  530. package/src/mcp/manager.ts +0 -130
  531. package/src/mcp/oauth.ts +0 -195
  532. package/src/mcp/scopeMigration.test.ts +0 -79
  533. package/src/mcp/scopeMigration.ts +0 -204
  534. package/src/mcp/service.test.ts +0 -376
  535. package/src/mcp/service.ts +0 -549
  536. package/src/mcp/types.ts +0 -108
  537. package/src/memory/api.test.ts +0 -82
  538. package/src/memory/api.ts +0 -303
  539. package/src/memory/blocks.test.ts +0 -78
  540. package/src/memory/blocks.ts +0 -408
  541. package/src/memory/caller.ts +0 -69
  542. package/src/memory/curation.test.ts +0 -163
  543. package/src/memory/curation.ts +0 -64
  544. package/src/memory/dispatch.ts +0 -59
  545. package/src/memory/facts.test.ts +0 -41
  546. package/src/memory/facts.ts +0 -248
  547. package/src/memory/graph.ts +0 -103
  548. package/src/memory/health.test.ts +0 -130
  549. package/src/memory/health.ts +0 -74
  550. package/src/memory/maintainer.ts +0 -272
  551. package/src/memory/maintenance.test.ts +0 -176
  552. package/src/memory/maintenance.ts +0 -518
  553. package/src/memory/migrate.ts +0 -79
  554. package/src/memory/operations.ts +0 -150
  555. package/src/memory/proposals.test.ts +0 -168
  556. package/src/memory/proposals.ts +0 -584
  557. package/src/memory/recall.test.ts +0 -115
  558. package/src/memory/recall.ts +0 -278
  559. package/src/memory/references.ts +0 -77
  560. package/src/memory/runContext.ts +0 -93
  561. package/src/memory/secrets.ts +0 -6
  562. package/src/memory/store.test.ts +0 -66
  563. package/src/memory/store.ts +0 -385
  564. package/src/memory/wiki.test.ts +0 -47
  565. package/src/memory/wiki.ts +0 -422
  566. package/src/memory/wikiIndex.test.ts +0 -88
  567. package/src/memory/wikiIndex.ts +0 -116
  568. package/src/plugins/api.ts +0 -181
  569. package/src/plugins/attachments.test.ts +0 -84
  570. package/src/plugins/attachments.ts +0 -141
  571. package/src/plugins/builtin.ts +0 -82
  572. package/src/plugins/catalogue.test.ts +0 -254
  573. package/src/plugins/catalogue.ts +0 -251
  574. package/src/plugins/cli.ts +0 -184
  575. package/src/plugins/discover.ts +0 -151
  576. package/src/plugins/firstParty.test.ts +0 -143
  577. package/src/plugins/firstParty.ts +0 -129
  578. package/src/plugins/hooks.test.ts +0 -250
  579. package/src/plugins/hooks.ts +0 -239
  580. package/src/plugins/identity.ts +0 -37
  581. package/src/plugins/install.test.ts +0 -107
  582. package/src/plugins/install.ts +0 -106
  583. package/src/plugins/inventory.ts +0 -123
  584. package/src/plugins/manifest.ts +0 -76
  585. package/src/plugins/plugins.test.ts +0 -205
  586. package/src/plugins/plugins.ts +0 -189
  587. package/src/plugins/proposal.ts +0 -121
  588. package/src/plugins/runtime.test.ts +0 -40
  589. package/src/plugins/runtime.ts +0 -82
  590. package/src/plugins/trust.ts +0 -142
  591. package/src/plugins/types.ts +0 -149
  592. package/src/prompt/compile.test.ts +0 -261
  593. package/src/prompt/compile.ts +0 -732
  594. package/src/server/methods.ts +0 -349
  595. package/src/server/remote.ts +0 -77
  596. package/src/server/rpc.ts +0 -116
  597. package/src/server/serve.ts +0 -28
  598. package/src/server/server.test.ts +0 -174
  599. package/src/sessions/approvals.ts +0 -118
  600. package/src/sessions/contracts.ts +0 -336
  601. package/src/sessions/conversation.test.ts +0 -177
  602. package/src/sessions/extensionSession.test.ts +0 -74
  603. package/src/sessions/extensionUi.test.ts +0 -65
  604. package/src/sessions/extensionUi.ts +0 -102
  605. package/src/sessions/history.ts +0 -51
  606. package/src/sessions/lineageJoin.ts +0 -75
  607. package/src/sessions/policy.ts +0 -36
  608. package/src/sessions/pricing.ts +0 -60
  609. package/src/sessions/questionBatches.test.ts +0 -110
  610. package/src/sessions/reasoningSummaries.ts +0 -59
  611. package/src/sessions/registry.ts +0 -381
  612. package/src/sessions/runIndex.ts +0 -99
  613. package/src/sessions/runStore.test.ts +0 -152
  614. package/src/sessions/runStore.ts +0 -332
  615. package/src/sessions/runner.ts +0 -604
  616. package/src/sessions/runtimeResources.test.ts +0 -61
  617. package/src/sessions/sessions.test.ts +0 -549
  618. package/src/sessions/sessions.ts +0 -339
  619. package/src/skills/registry.test.ts +0 -104
  620. package/src/skills/registry.ts +0 -413
  621. package/src/terminal/accountsMenu.test.ts +0 -225
  622. package/src/terminal/accountsMenu.ts +0 -382
  623. package/src/terminal/cli.ts +0 -149
  624. package/src/terminal/client.ts +0 -74
  625. package/src/terminal/control.test.ts +0 -23
  626. package/src/terminal/control.ts +0 -23
  627. package/src/terminal/controller.ts +0 -291
  628. package/src/terminal/hubMenu.ts +0 -24
  629. package/src/terminal/launch.test.ts +0 -25
  630. package/src/terminal/launch.ts +0 -48
  631. package/src/terminal/piExtension.lifecycle.test.ts +0 -55
  632. package/src/terminal/piExtension.ts +0 -259
  633. package/src/terminal/pluginControl.test.ts +0 -146
  634. package/src/terminal/pluginMenu.ts +0 -112
  635. package/src/terminal/socket.test.ts +0 -71
  636. package/src/terminal/socket.ts +0 -232
  637. package/src/terminal/standalone.test.ts +0 -167
  638. package/src/terminal/standalone.ts +0 -153
  639. package/src/terminal/terminal.test.ts +0 -399
  640. package/src/terminal/terminals.ts +0 -553
  641. package/src/terminal/tui/application.test.ts +0 -114
  642. package/src/terminal/tui/application.ts +0 -491
  643. package/src/terminal/tui/commands.test.ts +0 -218
  644. package/src/terminal/tui/commands.ts +0 -361
  645. package/src/terminal/tui/dialogs.ts +0 -301
  646. package/src/terminal/tui/editor.test.ts +0 -84
  647. package/src/terminal/tui/editor.ts +0 -79
  648. package/src/terminal/tui/keybindings.test.ts +0 -22
  649. package/src/terminal/tui/keybindings.ts +0 -50
  650. package/src/terminal/tui/piAdapter.ts +0 -62
  651. package/src/terminal/tui/presentation.test.ts +0 -79
  652. package/src/terminal/tui/questions.test.ts +0 -41
  653. package/src/terminal/tui/questions.ts +0 -47
  654. package/src/terminal/tui/runtime.socket.test.ts +0 -104
  655. package/src/terminal/tui/runtime.test.ts +0 -215
  656. package/src/terminal/tui/runtime.ts +0 -388
  657. package/src/terminal/tui/sessionUi.ts +0 -24
  658. package/src/terminal/tui/settings.test.ts +0 -150
  659. package/src/terminal/tui/settings.ts +0 -188
  660. package/src/terminal/tui/status.test.ts +0 -70
  661. package/src/terminal/tui/status.ts +0 -109
  662. package/src/terminal/tui/theme.ts +0 -174
  663. package/src/terminal/tui/tools.test.ts +0 -145
  664. package/src/terminal/tui/tools.ts +0 -142
  665. package/src/terminal/tui/transcript.test.ts +0 -25
  666. package/src/terminal/tui/transcript.ts +0 -124
  667. package/src/terminal/tui/ui.test.ts +0 -313
  668. package/src/terminal/tui/ui.ts +0 -166
  669. package/src/terminal/tui/welcome.ts +0 -102
  670. package/src/tools/askUser.test.ts +0 -69
  671. package/src/tools/askUser.ts +0 -59
  672. package/src/tools/definitions.ts +0 -187
  673. package/src/tools/maintenance.ts +0 -24
  674. package/src/tools/memoryTools.ts +0 -22
  675. package/src/tools/pluginPropose.ts +0 -41
  676. package/src/tools/registryWrite.test.ts +0 -101
  677. package/src/tools/registryWrite.ts +0 -182
  678. package/src/tools/spawnSubagent.ts +0 -92
  679. package/src/tools/types.ts +0 -39
  680. package/src/web/safeRequest.ts +0 -171
  681. package/src/web/text.ts +0 -53
  682. package/src/web/tools.ts +0 -134
  683. package/src/web/web.test.ts +0 -141
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@xingular/harness",
3
- "version": "0.1.7",
3
+ "version": "1.0.0",
4
4
  "type": "module",
5
- "description": "Xingular Harness — a Pi agent harness with multi-account sign-in, a compiled system prompt, a memory lifecycle (Wiki), tools, MCP, and skills",
5
+ "description": "Xingular Harness \u2014 a Pi agent harness built on recursive harnessing (Harness\u00b2): versioned eight-component variants, refinement from evidence, multi-account sessions, a compiled prompt, project notes, tools, and MCP",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/tanntnny/xingular-harness.git"
@@ -11,46 +11,76 @@
11
11
  "access": "public"
12
12
  },
13
13
  "exports": {
14
- ".": "./src/index.ts",
15
- "./*": "./src/*"
14
+ ".": {
15
+ "types": "./dist/sdk/index.d.ts",
16
+ "import": "./dist/sdk/index.js"
17
+ },
18
+ "./package.json": "./package.json",
19
+ "./*": {
20
+ "types": "./dist/sdk/*.d.ts",
21
+ "import": "./dist/sdk/*.js"
22
+ }
16
23
  },
17
24
  "bin": {
18
- "xingular-harness": "dist/cli.js"
25
+ "xharness": "dist/cli.js"
19
26
  },
20
27
  "scripts": {
21
- "build": "esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --packages=external --outfile=dist/cli.js && esbuild src/terminal/piExtension.ts --bundle --platform=node --target=node22 --format=esm --packages=external --outfile=dist/terminal-pi.js",
22
- "dev": "npm run build && node dist/cli.js",
28
+ "build": "npm run build:sdk && npm run build:cli && npm run build:tui",
29
+ "build:cli": "esbuild src/cli.ts --bundle --platform=node --target=node22 --format=esm --packages=external --outfile=dist/cli.js && esbuild src/terminal/piExtension.ts --bundle --platform=node --target=node22 --format=esm --packages=external --outfile=dist/terminal-pi.js",
30
+ "build:tui": "node scripts/build-opentui.mjs",
31
+ "dev": "npm run build && node scripts/dev.mjs",
23
32
  "prepack": "npm run build",
24
33
  "ci": "bash scripts/ci.sh",
25
34
  "typecheck": "tsc --noEmit -p tsconfig.json",
26
35
  "test": "vitest run",
27
- "prove": "npm run build && node scripts/prove-standalone.mjs"
36
+ "profile:terminal-input": "node scripts/profile-terminal-input.mjs",
37
+ "profile:terminal-latency": "python3 scripts/profile-terminal-latency.py",
38
+ "prove": "npm run build && node scripts/prove-standalone.mjs",
39
+ "build:sdk": "node scripts/build-sdk.mjs",
40
+ "release:pack": "node scripts/release-pack.mjs",
41
+ "release:smoke": "node scripts/release-smoke.mjs",
42
+ "release:preflight": "node scripts/release-preflight.mjs"
28
43
  },
29
44
  "dependencies": {
30
45
  "@earendil-works/pi-coding-agent": "1.2.0",
31
46
  "@earendil-works/pi-tui": "1.2.0",
32
47
  "@modelcontextprotocol/client": "^2.2.0",
33
48
  "@modelcontextprotocol/server": "^2.2.0",
49
+ "@opentui/core": "^0.6.6",
50
+ "@opentui/solid": "^0.6.6",
51
+ "linkedom": "^0.18.14",
52
+ "playwright-core": "^1.64.1",
53
+ "solid-js": "^1.9.12",
54
+ "turndown": "^7.2.4",
55
+ "turndown-plugin-gfm": "^1.0.2",
34
56
  "typebox": "^1.3.7",
35
57
  "yaml": "^2.8.1",
36
58
  "zod": "^4.1.11"
37
59
  },
38
60
  "devDependencies": {
39
61
  "@types/node": "^22.19.1",
40
- "esbuild": "^0.25.10",
62
+ "@types/turndown": "^5.0.6",
63
+ "esbuild": "^0.28.2",
41
64
  "typescript": "^5.9.3",
42
- "vitest": "^3.2.4"
65
+ "vitest": "^4.1.11"
43
66
  },
44
67
  "engines": {
45
68
  "node": ">=22.19"
46
69
  },
47
70
  "files": [
48
- "src",
49
71
  "dist",
50
72
  "builtin",
51
73
  "README.md",
74
+ "LICENSE",
52
75
  "NOTICE.md",
76
+ "THIRD_PARTY_LICENSES.md",
53
77
  "CHANGELOG.md",
54
- "docs"
55
- ]
78
+ "docs",
79
+ "!docs/evidence/**",
80
+ "!dist/**/*.test.*",
81
+ "!dist/**/*.map"
82
+ ],
83
+ "license": "Apache-2.0",
84
+ "main": "./dist/sdk/index.js",
85
+ "types": "./dist/sdk/index.d.ts"
56
86
  }
@@ -1,130 +0,0 @@
1
- {
2
- "passed": true,
3
- "implementation": "production standalone CLI + real Pi SDK + loopback OpenAI SSE transport",
4
- "cli": "/Users/tanny/Documents/Projects/Xingular/Xingular Agent/Harness/dist/cli.js",
5
- "cliSha256": "76d6ac270479abb2c84dc3eba6d7956467ece708f6b2a9976e256af1330739c1",
6
- "verifierSha256": "71f2a827e458a333f9f01aa8048f30db6bb21065cd4c7b9a51feab7d130c4b62",
7
- "provider": "controlled loopback OpenAI-compatible streaming transport; no external model requests or user credentials",
8
- "requestCount": 18,
9
- "profiles": [
10
- {
11
- "size": "40x20",
12
- "checks": [
13
- "welcome and real configured model",
14
- "actual settings tabs, section focus, keyboard search/control and Escape return",
15
- "command autocomplete and real accounts selector",
16
- "Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
17
- "new session, explicit scoped resume and session naming",
18
- "actual stream cancellation and interrupted run record",
19
- "explicit account switching, process restart and real run on newly pinned account"
20
- ],
21
- "persistedRunCount": 3,
22
- "exitCode": 0,
23
- "termiosRestored": true,
24
- "bracketedPasteDisabled": true,
25
- "cursorShown": true
26
- },
27
- {
28
- "size": "80x24",
29
- "checks": [
30
- "welcome and real configured model",
31
- "actual settings tabs, section focus, keyboard search/control and Escape return",
32
- "command autocomplete and real accounts selector",
33
- "Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
34
- "new session, explicit scoped resume and session naming",
35
- "actual stream cancellation and interrupted run record",
36
- "explicit account switching, process restart and real run on newly pinned account"
37
- ],
38
- "persistedRunCount": 3,
39
- "exitCode": 0,
40
- "termiosRestored": true,
41
- "bracketedPasteDisabled": true,
42
- "cursorShown": true
43
- },
44
- {
45
- "size": "120x40",
46
- "checks": [
47
- "welcome and real configured model",
48
- "actual settings tabs, section focus, keyboard search/control and Escape return",
49
- "command autocomplete and real accounts selector",
50
- "Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
51
- "new session, explicit scoped resume and session naming",
52
- "actual stream cancellation and interrupted run record",
53
- "explicit account switching, process restart and real run on newly pinned account"
54
- ],
55
- "persistedRunCount": 3,
56
- "exitCode": 0,
57
- "termiosRestored": true,
58
- "bracketedPasteDisabled": true,
59
- "cursorShown": true
60
- }
61
- ],
62
- "captures": [
63
- {
64
- "file": "40x20-welcome.ansi.gz",
65
- "kind": "actual PTY cumulative raw ANSI stream",
66
- "columns": 40,
67
- "rows": 20,
68
- "rawBytes": 2901,
69
- "rawSha256": "bbabb16e9e923f0bcf1c6d0781e3c91eefa819b11649a762cc34e0a104681b16",
70
- "archiveBytes": 653,
71
- "archiveSha256": "d22a0e07420d5e648290ccae08bb27284d8607d483f81337771102ba3dadc605"
72
- },
73
- {
74
- "file": "40x20-settings-interaction.ansi.gz",
75
- "kind": "actual PTY cumulative raw ANSI stream",
76
- "columns": 40,
77
- "rows": 20,
78
- "rawBytes": 10395,
79
- "rawSha256": "6a933553fd256805ec75cb598f9a39b390dcfd5d78dea778ffe301a1e875fad8",
80
- "archiveBytes": 1259,
81
- "archiveSha256": "57c28148f2fcd339167fd0a60127ffe1fe9905d8496708c79464e4e6fb3f312c"
82
- },
83
- {
84
- "file": "40x20-settings-keyboard.ansi.gz",
85
- "kind": "actual PTY cumulative raw ANSI stream",
86
- "columns": 40,
87
- "rows": 20,
88
- "rawBytes": 12595,
89
- "rawSha256": "f0a70d7cbf10d85c92d7a3fcc300a5bb2f0a26d3d5ff527924a649fd4f777403",
90
- "archiveBytes": 1396,
91
- "archiveSha256": "2ae513f637ddcc7fc903c55f96c35006bd11a9d95bc6d1e961c80636d7328398"
92
- },
93
- {
94
- "file": "80x24-approval-0.ansi.gz",
95
- "kind": "actual PTY cumulative raw ANSI stream",
96
- "columns": 80,
97
- "rows": 24,
98
- "rawBytes": 54463,
99
- "rawSha256": "48b0ee63969f7b8d09add20edd8c61a7b3e43786e6a22e7c2624be26b28173cd",
100
- "archiveBytes": 3428,
101
- "archiveSha256": "307e401b2d0d311fa362e20496b9dcc2bff4a8a427c68f0cb61517db6f180f22"
102
- },
103
- {
104
- "file": "80x24-question.ansi.gz",
105
- "kind": "actual PTY cumulative raw ANSI stream",
106
- "columns": 80,
107
- "rows": 24,
108
- "rawBytes": 66349,
109
- "rawSha256": "11951b9c71e340d8033d5bbefb259eedcd751f92881ffebc1440e721efefe459",
110
- "archiveBytes": 3867,
111
- "archiveSha256": "ddd4cedd9c8ab5adbd0f4e436931501a8b154b54839ffd3a22c69f5d019e6540"
112
- },
113
- {
114
- "file": "120x40-completed-transcript.ansi.gz",
115
- "kind": "actual PTY cumulative raw ANSI stream",
116
- "columns": 120,
117
- "rows": 40,
118
- "rawBytes": 136187,
119
- "rawSha256": "ace9f73ae5499e0db188ac092f658e140fccacfcc41233aa252c2ed1509ff6e7",
120
- "archiveBytes": 5939,
121
- "archiveSha256": "abfcf2c2c5da270b32acb5b8fce6e8e97de3d0f9b7ada664fbcfbaa5e98d52c4"
122
- }
123
- ],
124
- "limits": [
125
- "The AgentSession, frontend, native tools, authorization and run writer are production code.",
126
- "The controlled local transport supplies deterministic model responses and usage fixtures.",
127
- "These functional checks do not establish external provider OAuth/service availability or visual equivalence to OMP.",
128
- "Each compressed capture is a cumulative actual ANSI stream from PTY startup through the named interaction. Replay at its recorded dimensions."
129
- ]
130
- }
@@ -1,95 +0,0 @@
1
- {
2
- "passed": true,
3
- "implementation": "production standalone CLI + real Pi SDK + loopback OpenAI SSE transport",
4
- "cli": "/Users/tanny/Documents/Projects/Xingular/Xingular Agent/App/sidecar/dist/cli.js",
5
- "cliSha256": "1e4f7875f31622dec113db6453072371c28c3e3e3cc6cc7f0f6cde14c0160db8",
6
- "verifierSha256": "6b7652f0093b12a37bd975fcffa7accc0f34d627022397b7e45923be270abc85",
7
- "provider": "controlled loopback OpenAI-compatible streaming transport; no external model requests or user credentials",
8
- "requestCount": 13,
9
- "profiles": [
10
- {
11
- "size": "80x24",
12
- "checks": [
13
- "welcome and real configured model",
14
- "actual settings tabs, section focus, keyboard search/control and Escape return",
15
- "command autocomplete and real accounts selector",
16
- "suspend/resume restores cooked/raw terminal modes and command input",
17
- "Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
18
- "trusted plugin custom overlay, widget, status and disposal",
19
- "grouped question progress and atomic choice/text answers through real registry",
20
- "approval deny and Escape cancellation prevent actual tool execution",
21
- "question Escape cancellation settles pending tools and interrupts run",
22
- "new session, explicit scoped resume and session naming",
23
- "actual stream cancellation and interrupted run record",
24
- "explicit account switching, process restart and real run on newly pinned account",
25
- "fatal asynchronous plugin failure exits 1 and restores terminal modes",
26
- "plugin startup failure exits 1 and restores terminal modes"
27
- ],
28
- "persistedRunCount": 7,
29
- "exitCode": 0,
30
- "termiosRestored": true,
31
- "bracketedPasteDisabled": true,
32
- "cursorShown": true,
33
- "fatalCleanup": {
34
- "exitCode": 1,
35
- "termiosRestored": true,
36
- "bracketedPasteDisabled": true,
37
- "cursorShown": true
38
- },
39
- "startupCleanup": {
40
- "exitCode": 1,
41
- "termiosRestored": true,
42
- "bracketedPasteDisabled": true,
43
- "cursorShown": true
44
- }
45
- }
46
- ],
47
- "captures": [
48
- {
49
- "file": "80x24-approval-0.ansi.gz",
50
- "kind": "actual PTY cumulative raw ANSI stream",
51
- "columns": 80,
52
- "rows": 24,
53
- "rawBytes": 61969,
54
- "rawSha256": "0df47b7493cf08f4b35ea22c6135bcbddbf0686619b47fe5bb5fcd2854eba7e7",
55
- "archiveBytes": 5393,
56
- "archiveSha256": "8ec49da3bff4530a47be3c0c434dfa3ce90134c42ffc48efacb6a68155b8d162"
57
- },
58
- {
59
- "file": "80x24-question.ansi.gz",
60
- "kind": "actual PTY cumulative raw ANSI stream",
61
- "columns": 80,
62
- "rows": 24,
63
- "rawBytes": 73404,
64
- "rawSha256": "c4628b4fc42b1f60a2200400ca39a835f8fb1e6fd054a607736cde234f0b0c67",
65
- "archiveBytes": 5839,
66
- "archiveSha256": "f650635dfc12d306a21c42611f52adae167f630ea2bc403fb519043a42a4937d"
67
- },
68
- {
69
- "file": "80x24-plugin-light.ansi.gz",
70
- "kind": "actual PTY cumulative raw ANSI stream",
71
- "columns": 120,
72
- "rows": 30,
73
- "rawBytes": 119716,
74
- "rawSha256": "f2f793909355e4583f513dc2f093e996b01bb1cbfcfdc66d8ec3cbef2155a61a",
75
- "archiveBytes": 7658,
76
- "archiveSha256": "87fbe3be1c3b63f81a8d9cccd846731adae2c8be6b90dd931c1e4ff927b47c46"
77
- },
78
- {
79
- "file": "80x24-question-batch.ansi.gz",
80
- "kind": "actual PTY cumulative raw ANSI stream",
81
- "columns": 120,
82
- "rows": 30,
83
- "rawBytes": 169933,
84
- "rawSha256": "884788cd457eab5e51440992caf2a6a1d932ac4410b4d716e10fdd240d8c5263",
85
- "archiveBytes": 8775,
86
- "archiveSha256": "0e02c89b7ed3fe9e6da6f0c91e91efec04c7d459d39606499d92ed393755afc5"
87
- }
88
- ],
89
- "limits": [
90
- "The AgentSession, frontend, native tools, authorization and run writer are production code.",
91
- "The controlled local transport supplies deterministic model responses and usage fixtures.",
92
- "These functional checks do not establish external provider OAuth/service availability or visual equivalence to OMP.",
93
- "Each compressed capture is a cumulative actual ANSI stream from PTY startup through the named interaction. Replay at its recorded dimensions."
94
- ]
95
- }
@@ -1,27 +0,0 @@
1
- # Installed global command — 2026-10-17
2
-
3
- The user's `xingular-harness` resolved to `/opt/homebrew/bin/xingular-harness`, linked to
4
- `/opt/homebrew/lib/node_modules/@xingular/harness/dist/cli.js`. That installed 0.1.6 bundle was
5
- 550,280 bytes with SHA-256 `06b235f6813d3e9b3b862fbdcab09887d8345a751c7e2adf267ead0314bc4833`.
6
- It lacked the internal `terminal-frontend` command and Harness titanium frontend. The source
7
- checkout's 0.1.6 bundle was 802,804 bytes with SHA-256
8
- `2f5df943661a1e89440d0e81d59cd4a5bdb7aaf087a2a930e232b6743d5db093`. The same package version
9
- had concealed that the global command was still the older Pi presentation.
10
-
11
- The already-built checkout was packed locally without running package scripts, then installed
12
- globally from its exact tarball, offline with installation scripts disabled. Nothing was
13
- published. The installed CLI now matches the checkout byte for byte and retains pinned Pi
14
- SDK/TUI 1.2.0. No account data or credentials were migrated or replaced.
15
-
16
- The [production PTY report](verification.json) exercises the installed bundle at 80×24.
17
- All 14 interaction groups passed, including the owned settings UI, plugin overlays, real Pi
18
- native tools, Harness approvals/questions, account restart, suspend/resume and fatal/startup
19
- cleanup. This uses a deterministic loopback provider, no personal credentials or external model
20
- requests. Compressed captures retain reviewable screens.
21
-
22
- The separate [shell entry-point result](shell-command.json) launches the actual executable
23
- without substituting `node <bundle>`, checks the owned welcome and settings, and verifies
24
- orderly terminal cleanup. Its capture is `shell-command-80x24.ansi.gz`.
25
-
26
- This fixes the stale installed executable. It does not establish exhaustive OMP visual parity.
27
- Already-running processes keep their loaded code until they exit and the command is relaunched.
@@ -1,18 +0,0 @@
1
- {
2
- "command": "/opt/homebrew/bin/xingular-harness",
3
- "shellEntryPoint": true,
4
- "ownedWelcomeAndSettings": true,
5
- "terminal": {
6
- "exitCode": 0,
7
- "termiosRestored": true,
8
- "bracketedPasteDisabled": true,
9
- "cursorShown": true,
10
- "snapshots": []
11
- },
12
- "capture": {
13
- "file": "shell-command-80x24.ansi.gz",
14
- "rawSha256": "5bb7e5318baf2a6b1dab5affcb0a10c632db5b21fd9ac426581f399fbb4dbcdc",
15
- "archiveSha256": "594e5bec27c824bdf562376860ef16862970175af7e6222b00b90ccacf19f489"
16
- },
17
- "passed": true
18
- }
@@ -1,95 +0,0 @@
1
- {
2
- "passed": true,
3
- "implementation": "production standalone CLI + real Pi SDK + loopback OpenAI SSE transport",
4
- "cli": "/opt/homebrew/lib/node_modules/@xingular/harness/dist/cli.js",
5
- "cliSha256": "2f5df943661a1e89440d0e81d59cd4a5bdb7aaf087a2a930e232b6743d5db093",
6
- "verifierSha256": "6b7652f0093b12a37bd975fcffa7accc0f34d627022397b7e45923be270abc85",
7
- "provider": "controlled loopback OpenAI-compatible streaming transport; no external model requests or user credentials",
8
- "requestCount": 13,
9
- "profiles": [
10
- {
11
- "size": "80x24",
12
- "checks": [
13
- "welcome and real configured model",
14
- "actual settings tabs, section focus, keyboard search/control and Escape return",
15
- "command autocomplete and real accounts selector",
16
- "suspend/resume restores cooked/raw terminal modes and command input",
17
- "Unicode, real streaming/thinking/read/bash/approval/question, expansion, resizing and scrolling",
18
- "trusted plugin custom overlay, widget, status and disposal",
19
- "grouped question progress and atomic choice/text answers through real registry",
20
- "approval deny and Escape cancellation prevent actual tool execution",
21
- "question Escape cancellation settles pending tools and interrupts run",
22
- "new session, explicit scoped resume and session naming",
23
- "actual stream cancellation and interrupted run record",
24
- "explicit account switching, process restart and real run on newly pinned account",
25
- "fatal asynchronous plugin failure exits 1 and restores terminal modes",
26
- "plugin startup failure exits 1 and restores terminal modes"
27
- ],
28
- "persistedRunCount": 7,
29
- "exitCode": 0,
30
- "termiosRestored": true,
31
- "bracketedPasteDisabled": true,
32
- "cursorShown": true,
33
- "fatalCleanup": {
34
- "exitCode": 1,
35
- "termiosRestored": true,
36
- "bracketedPasteDisabled": true,
37
- "cursorShown": true
38
- },
39
- "startupCleanup": {
40
- "exitCode": 1,
41
- "termiosRestored": true,
42
- "bracketedPasteDisabled": true,
43
- "cursorShown": true
44
- }
45
- }
46
- ],
47
- "captures": [
48
- {
49
- "file": "80x24-approval-0.ansi.gz",
50
- "kind": "actual PTY cumulative raw ANSI stream",
51
- "columns": 80,
52
- "rows": 24,
53
- "rawBytes": 62572,
54
- "rawSha256": "cc7b642a0f09d09eca3af30996b2a965462e547301c984fb81aaa47d39dc0663",
55
- "archiveBytes": 5398,
56
- "archiveSha256": "8b5ef850e4f0a7fb55d4dd15c9f2178add149e536dd6268b6292329e2ac88820"
57
- },
58
- {
59
- "file": "80x24-question.ansi.gz",
60
- "kind": "actual PTY cumulative raw ANSI stream",
61
- "columns": 80,
62
- "rows": 24,
63
- "rawBytes": 75413,
64
- "rawSha256": "9c851409fbb3d52928bb09ed45ad525744feff0f6915e79a75e9365d0012dd67",
65
- "archiveBytes": 5871,
66
- "archiveSha256": "fe993aab1adeef4cacbc6faadf26c322f2cdc88115d9c83ec245e0175b4f1658"
67
- },
68
- {
69
- "file": "80x24-plugin-light.ansi.gz",
70
- "kind": "actual PTY cumulative raw ANSI stream",
71
- "columns": 120,
72
- "rows": 30,
73
- "rawBytes": 122320,
74
- "rawSha256": "1da1e9a83fe56f5f90d7e6abe9c207a891de0f49b02c2190087a2a5ac1a6a2ab",
75
- "archiveBytes": 7712,
76
- "archiveSha256": "db8a25e009be6958d36daa37f9427d21ceeba1b0a9ef61405fb069204c596bc7"
77
- },
78
- {
79
- "file": "80x24-question-batch.ansi.gz",
80
- "kind": "actual PTY cumulative raw ANSI stream",
81
- "columns": 120,
82
- "rows": 30,
83
- "rawBytes": 173412,
84
- "rawSha256": "62e8af05a73a37320a8cbcf276c6a8a35a4a8f8771cb4dcd7d25230cf3b7d7bb",
85
- "archiveBytes": 8836,
86
- "archiveSha256": "152f7f4cf0cc9c0621f460fb00e91733874a691183be87807c39ac1d846a7fa6"
87
- }
88
- ],
89
- "limits": [
90
- "The AgentSession, frontend, native tools, authorization and run writer are production code.",
91
- "The controlled local transport supplies deterministic model responses and usage fixtures.",
92
- "These functional checks do not establish external provider OAuth/service availability or visual equivalence to OMP.",
93
- "Each compressed capture is a cumulative actual ANSI stream from PTY startup through the named interaction. Replay at its recorded dimensions."
94
- ]
95
- }
@@ -1,60 +0,0 @@
1
- {
2
- "executable": "/opt/homebrew/bin/node",
3
- "arguments": [
4
- "/Users/tanny/Documents/Projects/Xingular/Xingular Agent/Harness/dist/cli.js",
5
- "--state",
6
- "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/harness-state",
7
- "--data",
8
- "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/harness-data"
9
- ],
10
- "working_directory": "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/project",
11
- "environment": {
12
- "ASSEMBLYAI_API_KEY": "",
13
- "PI_CODING_AGENT_DIR": "/private/var/folders/69/1vwvfl494kx0sqjxln4f0mtm0000gn/T/harness-omp-reference-l6rdt909/agent",
14
- "TERM": "xterm-256color",
15
- "COLORTERM": "truecolor"
16
- },
17
- "terminal": {
18
- "columns": 80,
19
- "rows": 24,
20
- "scrollback": 100
21
- },
22
- "events": [
23
- {
24
- "at_ms": 8000,
25
- "type": "input",
26
- "data": "/settings\r"
27
- },
28
- {
29
- "at_ms": 10000,
30
- "type": "input",
31
- "data": "\u001b"
32
- },
33
- {
34
- "at_ms": 11000,
35
- "type": "input",
36
- "data": "/quit\r"
37
- }
38
- ],
39
- "timeout_ms": 15000,
40
- "settle_ms": 200,
41
- "limits": {
42
- "output_bytes": 2000000
43
- },
44
- "normalization": {
45
- "paths": true,
46
- "patterns": [
47
- {
48
- "pattern": "Oh My Pi",
49
- "replacement": "PRODUCT"
50
- },
51
- {
52
- "pattern": "Xingular Harness",
53
- "replacement": "PRODUCT"
54
- }
55
- ]
56
- },
57
- "filesystem_observation_paths": [
58
- "/Users/tanny/Documents/Projects/Xingular/Xingular Agent/Harness/dist/cli.js"
59
- ]
60
- }
@@ -1,24 +0,0 @@
1
- # Personal Codex live check — 2026-10-17
2
-
3
- The user authorized their personal Codex account for the final live check. The production
4
- Harness CLI ran in an 80×24 PTY, with a disposable working directory, data root and account.
5
- Only an unexpired access token was copied into the owner-only disposable secret store;
6
- the original refresh token was never copied or used. No process launched against the source
7
- Codex profile. A single user prompt requested one native `read` of an isolated fixture followed
8
- by a short marker response.
9
-
10
- Codex returned **“The usage limit has been reached”** before any tool execution or successful
11
- assistant response. Harness surfaced that error and recorded the run as failed. This attempt
12
- does not satisfy successful live streaming/tool acceptance. The JSON report records
13
- `passed: false` and `outcome: blocked_by_provider_usage_limit` for that reason.
14
-
15
- The exit code was zero after orderly application shutdown. The PTY supervisor independently
16
- confirmed terminal attributes were restored; cursor visibility and bracketed-paste shutdown
17
- were checked in the raw ANSI stream. The source authentication file's before/after SHA-256
18
- comparison matched. The disposable profile, including its copied access credential, was
19
- deleted. Credentials and personal account identity are absent from the retained evidence.
20
-
21
- [verification.json](verification.json) binds the production CLI digest and the cumulative
22
- [compressed ANSI capture](complete-80x24.ansi.gz). Replay at 80×24. The capture records the
23
- quota failure and normal shutdown, not a successful model reply. The existing controlled
24
- transport tests separately cover streaming, tools and approvals.