@songsid/agend 2.3.5-alpha.5 → 2.3.5-beta.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 (976) hide show
  1. package/README.md +0 -2
  2. package/README.zh-TW.md +0 -2
  3. package/THIRD_PARTY_NOTICES.md +0 -68
  4. package/dist/agent-endpoint.d.ts +1 -5
  5. package/dist/agent-endpoint.js +2 -12
  6. package/dist/agent-endpoint.js.map +1 -1
  7. package/dist/agent-file-read.js +1 -1
  8. package/dist/agent-file-read.js.map +1 -1
  9. package/dist/auth-api.d.ts +0 -48
  10. package/dist/auth-api.js +4 -250
  11. package/dist/auth-api.js.map +1 -1
  12. package/dist/authority/session-authorizations.d.ts +2 -0
  13. package/dist/authority/session-authorizations.js +7 -1
  14. package/dist/authority/session-authorizations.js.map +1 -1
  15. package/dist/authority/web-authority.d.ts +2 -12
  16. package/dist/authority/web-authority.js +4 -25
  17. package/dist/authority/web-authority.js.map +1 -1
  18. package/dist/backend/claude-code.d.ts +12 -15
  19. package/dist/backend/claude-code.js +133 -152
  20. package/dist/backend/claude-code.js.map +1 -1
  21. package/dist/backend/codex-footer-hints.d.ts +0 -3
  22. package/dist/backend/codex-footer-hints.js +0 -14
  23. package/dist/backend/codex-footer-hints.js.map +1 -1
  24. package/dist/backend/codex-package.d.ts +2 -5
  25. package/dist/backend/codex-package.js +5 -1
  26. package/dist/backend/codex-package.js.map +1 -1
  27. package/dist/backend/codex-quota-history.js +19 -4
  28. package/dist/backend/codex-quota-history.js.map +1 -1
  29. package/dist/backend/codex.d.ts +115 -142
  30. package/dist/backend/codex.js +1094 -1187
  31. package/dist/backend/codex.js.map +1 -1
  32. package/dist/backend/grok.d.ts +0 -2
  33. package/dist/backend/grok.js +0 -22
  34. package/dist/backend/grok.js.map +1 -1
  35. package/dist/backend/types.d.ts +2 -7
  36. package/dist/backend/types.js.map +1 -1
  37. package/dist/bundled-tmux-guard.d.ts +21 -0
  38. package/dist/bundled-tmux-guard.js +96 -0
  39. package/dist/bundled-tmux-guard.js.map +1 -0
  40. package/dist/channel/ipc-bridge.d.ts +0 -2
  41. package/dist/channel/mcp-tools.js +2 -2
  42. package/dist/channel/mcp-tools.js.map +1 -1
  43. package/dist/classic-channel-manager.d.ts +2 -0
  44. package/dist/classic-channel-manager.js +5 -1
  45. package/dist/classic-channel-manager.js.map +1 -1
  46. package/dist/cli.js +30 -127
  47. package/dist/cli.js.map +1 -1
  48. package/dist/config-validator.js +13 -74
  49. package/dist/config-validator.js.map +1 -1
  50. package/dist/config.js +3 -17
  51. package/dist/config.js.map +1 -1
  52. package/dist/daemon.d.ts +5 -72
  53. package/dist/daemon.js +275 -869
  54. package/dist/daemon.js.map +1 -1
  55. package/dist/delivery-consumed-watch.d.ts +3 -15
  56. package/dist/delivery-consumed-watch.js +1 -23
  57. package/dist/delivery-consumed-watch.js.map +1 -1
  58. package/dist/delivery-outbox.d.ts +0 -5
  59. package/dist/delivery-outbox.js +4 -32
  60. package/dist/delivery-outbox.js.map +1 -1
  61. package/dist/delivery-reconciliation.d.ts +42 -2
  62. package/dist/delivery-reconciliation.js +164 -2
  63. package/dist/delivery-reconciliation.js.map +1 -1
  64. package/dist/doctor.js +9 -20
  65. package/dist/doctor.js.map +1 -1
  66. package/dist/fleet-context.d.ts +2 -2
  67. package/dist/fleet-level-config.d.ts +1 -1
  68. package/dist/fleet-level-config.js +0 -2
  69. package/dist/fleet-level-config.js.map +1 -1
  70. package/dist/fleet-manager.d.ts +9 -498
  71. package/dist/fleet-manager.js +202 -2849
  72. package/dist/fleet-manager.js.map +1 -1
  73. package/dist/general-instance.d.ts +0 -7
  74. package/dist/general-instance.js +3 -20
  75. package/dist/general-instance.js.map +1 -1
  76. package/dist/general-knowledge/skills/concepts/SKILL.md +18 -50
  77. package/dist/general-knowledge/skills/credential-profiles/SKILL.md +2 -5
  78. package/dist/general-knowledge/skills/fleet-health/SKILL.md +2 -2
  79. package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
  80. package/dist/general-knowledge/skills/tui-effort/SKILL.md +10 -10
  81. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +13 -23
  82. package/dist/instance-config-impact.js +4 -8
  83. package/dist/instance-config-impact.js.map +1 -1
  84. package/dist/instance-lifecycle.d.ts +3 -22
  85. package/dist/instance-lifecycle.js +176 -393
  86. package/dist/instance-lifecycle.js.map +1 -1
  87. package/dist/instructions.d.ts +0 -2
  88. package/dist/instructions.js +0 -6
  89. package/dist/instructions.js.map +1 -1
  90. package/dist/locale.js +2 -147
  91. package/dist/locale.js.map +1 -1
  92. package/dist/login-flows.d.ts +7 -8
  93. package/dist/login-flows.js +1 -24
  94. package/dist/login-flows.js.map +1 -1
  95. package/dist/ls-rows.js +4 -3
  96. package/dist/ls-rows.js.map +1 -1
  97. package/dist/muse-usage-relay.d.ts +2 -0
  98. package/dist/muse-usage-relay.js +5 -3
  99. package/dist/muse-usage-relay.js.map +1 -1
  100. package/dist/needs-you-hub.d.ts +0 -5
  101. package/dist/needs-you-hub.js +2 -18
  102. package/dist/needs-you-hub.js.map +1 -1
  103. package/dist/needs-you.d.ts +2 -45
  104. package/dist/needs-you.js +2 -26
  105. package/dist/needs-you.js.map +1 -1
  106. package/dist/office-share-page.js +3 -3
  107. package/dist/office-share-page.js.map +1 -1
  108. package/dist/office-share.d.ts +0 -11
  109. package/dist/office-share.js +0 -14
  110. package/dist/office-share.js.map +1 -1
  111. package/dist/outbound-handlers.d.ts +2 -30
  112. package/dist/outbound-handlers.js +4 -109
  113. package/dist/outbound-handlers.js.map +1 -1
  114. package/dist/outbound-schemas.d.ts +1 -71
  115. package/dist/outbound-schemas.js +14 -36
  116. package/dist/outbound-schemas.js.map +1 -1
  117. package/dist/pane-quota-history.d.ts +0 -2
  118. package/dist/pane-quota-history.js +0 -20
  119. package/dist/pane-quota-history.js.map +1 -1
  120. package/dist/pause-marker.d.ts +1 -1
  121. package/dist/pause-marker.js +1 -1
  122. package/dist/pause-marker.js.map +1 -1
  123. package/dist/public-web-gateway.js +0 -16
  124. package/dist/public-web-gateway.js.map +1 -1
  125. package/dist/public-web-link.d.ts +0 -11
  126. package/dist/public-web-link.js +0 -13
  127. package/dist/public-web-link.js.map +1 -1
  128. package/dist/quickstart-api.js +5 -9
  129. package/dist/quickstart-api.js.map +1 -1
  130. package/dist/quickstart.d.ts +0 -6
  131. package/dist/quickstart.js +6 -44
  132. package/dist/quickstart.js.map +1 -1
  133. package/dist/quota-notice-config.d.ts +22 -0
  134. package/dist/quota-notice-config.js +41 -0
  135. package/dist/quota-notice-config.js.map +1 -0
  136. package/dist/scheduler/task-board-text.js +1 -1
  137. package/dist/scheduler/task-board-text.js.map +1 -1
  138. package/dist/scheduler/task-board.d.ts +0 -4
  139. package/dist/scheduler/task-board.js +3 -9
  140. package/dist/scheduler/task-board.js.map +1 -1
  141. package/dist/service-installer.d.ts +2 -7
  142. package/dist/service-installer.js +10 -13
  143. package/dist/service-installer.js.map +1 -1
  144. package/dist/settings-api.d.ts +0 -12
  145. package/dist/settings-api.js +7 -487
  146. package/dist/settings-api.js.map +1 -1
  147. package/dist/settings-baseline.d.ts +0 -7
  148. package/dist/settings-baseline.js +1 -3
  149. package/dist/settings-baseline.js.map +1 -1
  150. package/dist/settings-change.js +7 -35
  151. package/dist/settings-change.js.map +1 -1
  152. package/dist/settings-confirmation.d.ts +1 -16
  153. package/dist/settings-confirmation.js +9 -47
  154. package/dist/settings-confirmation.js.map +1 -1
  155. package/dist/settings-effect.d.ts +0 -17
  156. package/dist/settings-effect.js +1 -155
  157. package/dist/settings-effect.js.map +1 -1
  158. package/dist/settings-http-confirmation.d.ts +0 -4
  159. package/dist/settings-http-confirmation.js +3 -43
  160. package/dist/settings-http-confirmation.js.map +1 -1
  161. package/dist/settings-instance-patch.js +1 -1
  162. package/dist/settings-instance-patch.js.map +1 -1
  163. package/dist/settings-request-capability.d.ts +0 -2
  164. package/dist/settings-request-capability.js +0 -4
  165. package/dist/settings-request-capability.js.map +1 -1
  166. package/dist/settings-transaction.d.ts +0 -4
  167. package/dist/settings-transaction.js +0 -9
  168. package/dist/settings-transaction.js.map +1 -1
  169. package/dist/setup-form.js +3 -6
  170. package/dist/setup-form.js.map +1 -1
  171. package/dist/setup-i18n.js +0 -3
  172. package/dist/setup-i18n.js.map +1 -1
  173. package/dist/setup-wizard.js +2 -6
  174. package/dist/setup-wizard.js.map +1 -1
  175. package/dist/task-board-tool.d.ts +1 -2
  176. package/dist/task-board-tool.js +6 -62
  177. package/dist/task-board-tool.js.map +1 -1
  178. package/dist/tmux-control.d.ts +1 -2
  179. package/dist/tmux-control.js +4 -4
  180. package/dist/tmux-control.js.map +1 -1
  181. package/dist/tmux-exec-helper.js +1 -32
  182. package/dist/tmux-exec-helper.js.map +1 -1
  183. package/dist/tmux-manager.d.ts +2 -3
  184. package/dist/tmux-manager.js +36 -45
  185. package/dist/tmux-manager.js.map +1 -1
  186. package/dist/tmux-read.js +3 -4
  187. package/dist/tmux-read.js.map +1 -1
  188. package/dist/tool-permissions.js +1 -2
  189. package/dist/tool-permissions.js.map +1 -1
  190. package/dist/topic-commands.js +5 -9
  191. package/dist/topic-commands.js.map +1 -1
  192. package/dist/transcript-delta-reader.d.ts +1 -1
  193. package/dist/transcript-delta-reader.js +1 -1
  194. package/dist/transcript-delta-reader.js.map +1 -1
  195. package/dist/transcript-monitor.d.ts +0 -3
  196. package/dist/transcript-monitor.js +51 -27
  197. package/dist/transcript-monitor.js.map +1 -1
  198. package/dist/transcript-sources.d.ts +0 -5
  199. package/dist/transcript-sources.js +79 -8
  200. package/dist/transcript-sources.js.map +1 -1
  201. package/dist/types.d.ts +3 -29
  202. package/dist/ui/app.html +8 -1
  203. package/dist/ui/backend-signin.js +21 -39
  204. package/dist/ui/chat-ambient.js +1 -1
  205. package/dist/ui/chat-md-strings.js +9 -3
  206. package/dist/ui/chat-render.js +670 -3
  207. package/dist/ui/chat-store.js +3 -14
  208. package/dist/ui/chat-strings.js +285 -3
  209. package/dist/ui/chat-thread.js +969 -3
  210. package/dist/ui/chat-time.js +80 -3
  211. package/dist/ui/chat-tour.js +1 -1
  212. package/dist/ui/fleet-office-pack.d.ts +0 -9
  213. package/dist/ui/fleet-office-pack.js +4 -76
  214. package/dist/ui/fleet-office-skin.js +5 -23
  215. package/dist/ui/fleet-office-store.js +0 -5
  216. package/dist/ui/fleet-office.js +6 -173
  217. package/dist/ui/fleet-task-card.js +4 -8
  218. package/dist/ui/fleet-task-common.js +2 -2
  219. package/dist/ui/fleet-tasks.js +39 -125
  220. package/dist/ui/html-attachment.js +40 -3
  221. package/dist/ui/office-share-page.js +2 -4
  222. package/dist/ui/panel-chat.js +75 -90
  223. package/dist/ui/panel-details.js +2 -3
  224. package/dist/ui/panel-fleet.js +18 -105
  225. package/dist/ui/panel-log.js +2 -2
  226. package/dist/ui/panel-needs.js +4 -162
  227. package/dist/ui/panel-notices.js +4 -3
  228. package/dist/ui/panel-settings.js +202 -281
  229. package/dist/ui/preview-pages.js +1 -1
  230. package/dist/ui/preview-panel.js +13 -21
  231. package/dist/ui/preview-versions.js +1 -1
  232. package/dist/ui/preview.js +476 -3
  233. package/dist/ui/search-dialog.js +3 -4
  234. package/dist/ui/settings-appearance.js +23 -122
  235. package/dist/ui/settings-catalog.js +10 -37
  236. package/dist/ui/settings-confirm.js +1 -3
  237. package/dist/ui/settings-dialogs.js +20 -48
  238. package/dist/ui/settings-guests.js +14 -27
  239. package/dist/ui/settings-model.js +1 -10
  240. package/dist/ui/settings-quota-notice.js +100 -0
  241. package/dist/ui/settings-registry.js +5 -15
  242. package/dist/ui/settings-strings.js +32 -105
  243. package/dist/ui/settings-web-authority.js +13 -18
  244. package/dist/ui/shared/app-i18n.js +2 -2
  245. package/dist/ui/shared/app-route.js +3 -12
  246. package/dist/ui/shared/app-session.js +2 -6
  247. package/dist/ui/shared/app-shell.js +26 -87
  248. package/dist/ui/shared/app-store.js +2 -3
  249. package/dist/ui/shared/app-stream.js +1 -3
  250. package/dist/ui/shared/app.css +5 -1368
  251. package/dist/ui/shared/app.js +5 -17
  252. package/dist/ui/shared/header-tools.js +9 -9
  253. package/dist/ui/shared/instance-nav.js +7 -34
  254. package/dist/ui/shared/instance-switch.js +3 -4
  255. package/dist/ui/shared/loading.css +37 -0
  256. package/dist/ui/shared/signin.js +6 -211
  257. package/dist/ui/shared/tokens.css +0 -1
  258. package/dist/ui/shared/ui-dialog.js +2 -2
  259. package/dist/ui/shared/ui-menu.js +10 -30
  260. package/dist/ui/shared/ui-states.js +14 -3
  261. package/dist/ui/shared/vendor/vendor.json +2 -19
  262. package/dist/ui/shared/view-strings.js +0 -8
  263. package/dist/ui/signin.html +5 -23
  264. package/dist/unattended-install.js +1 -2
  265. package/dist/unattended-install.js.map +1 -1
  266. package/dist/usage/providers.d.ts +5 -0
  267. package/dist/usage/providers.js +6 -2
  268. package/dist/usage/providers.js.map +1 -1
  269. package/dist/usage/quota-notices.d.ts +38 -0
  270. package/dist/usage/quota-notices.js +160 -0
  271. package/dist/usage/quota-notices.js.map +1 -0
  272. package/dist/usage/usage-api.d.ts +1 -0
  273. package/dist/usage/usage-api.js +16 -0
  274. package/dist/usage/usage-api.js.map +1 -1
  275. package/dist/view-api.js +7 -5
  276. package/dist/view-api.js.map +1 -1
  277. package/dist/web-api.d.ts +2 -80
  278. package/dist/web-api.js +10 -513
  279. package/dist/web-api.js.map +1 -1
  280. package/dist/web-backend-login.d.ts +1 -23
  281. package/dist/web-backend-login.js +17 -11
  282. package/dist/web-backend-login.js.map +1 -1
  283. package/dist/web-chat-history.d.ts +2 -19
  284. package/dist/web-chat-history.js +3 -72
  285. package/dist/web-chat-history.js.map +1 -1
  286. package/dist/web-office-skins.d.ts +0 -9
  287. package/dist/web-office-skins.js +1 -16
  288. package/dist/web-office-skins.js.map +1 -1
  289. package/dist/web-only-fleet.d.ts +0 -20
  290. package/dist/web-only-fleet.js +0 -21
  291. package/dist/web-only-fleet.js.map +1 -1
  292. package/dist/web-session.d.ts +0 -42
  293. package/dist/web-session.js +0 -9
  294. package/dist/web-session.js.map +1 -1
  295. package/dist/web-settings-patch.d.ts +1 -3
  296. package/dist/web-settings-patch.js +1 -4
  297. package/dist/web-settings-patch.js.map +1 -1
  298. package/dist/web-shell-routes.d.ts +1 -10
  299. package/dist/web-shell-routes.js +2 -14
  300. package/dist/web-shell-routes.js.map +1 -1
  301. package/dist/web-terminal.d.ts +30 -4
  302. package/dist/web-terminal.js +6 -9
  303. package/dist/web-terminal.js.map +1 -1
  304. package/dist/yaml-shared-nodes.js +3 -8
  305. package/dist/yaml-shared-nodes.js.map +1 -1
  306. package/launcher/agend-install.cjs +1 -8
  307. package/launcher/postinstall.cjs +2 -27
  308. package/package.json +3 -10
  309. package/templates/launchd.plist.ejs +1 -3
  310. package/dist/accounts-view.d.ts +0 -97
  311. package/dist/accounts-view.js +0 -116
  312. package/dist/accounts-view.js.map +0 -1
  313. package/dist/agent-runtime-api.d.ts +0 -4
  314. package/dist/agent-runtime-api.js +0 -59
  315. package/dist/agent-runtime-api.js.map +0 -1
  316. package/dist/agent-runtime-change.d.ts +0 -76
  317. package/dist/agent-runtime-change.js +0 -114
  318. package/dist/agent-runtime-change.js.map +0 -1
  319. package/dist/agent-workspace.d.ts +0 -93
  320. package/dist/agent-workspace.js +0 -353
  321. package/dist/agent-workspace.js.map +0 -1
  322. package/dist/backend/grok-model-cache.d.ts +0 -7
  323. package/dist/backend/grok-model-cache.js +0 -65
  324. package/dist/backend/grok-model-cache.js.map +0 -1
  325. package/dist/backend/native-pane.d.ts +0 -11
  326. package/dist/backend/native-pane.js +0 -59
  327. package/dist/backend/native-pane.js.map +0 -1
  328. package/dist/build-provenance-cli.d.ts +0 -3
  329. package/dist/build-provenance-cli.js +0 -11
  330. package/dist/build-provenance-cli.js.map +0 -1
  331. package/dist/build-provenance.d.ts +0 -20
  332. package/dist/build-provenance.js +0 -67
  333. package/dist/build-provenance.js.map +0 -1
  334. package/dist/build-provenance.json +0 -1
  335. package/dist/claude-auth-status.d.ts +0 -48
  336. package/dist/claude-auth-status.js +0 -149
  337. package/dist/claude-auth-status.js.map +0 -1
  338. package/dist/fleet-windows-runtime.d.ts +0 -98
  339. package/dist/fleet-windows-runtime.js +0 -467
  340. package/dist/fleet-windows-runtime.js.map +0 -1
  341. package/dist/general-binding.d.ts +0 -85
  342. package/dist/general-binding.js +0 -298
  343. package/dist/general-binding.js.map +0 -1
  344. package/dist/general-host-owner.d.ts +0 -8
  345. package/dist/general-host-owner.js +0 -26
  346. package/dist/general-host-owner.js.map +0 -1
  347. package/dist/general-role.d.ts +0 -5
  348. package/dist/general-role.js +0 -27
  349. package/dist/general-role.js.map +0 -1
  350. package/dist/hub/admission.d.ts +0 -28
  351. package/dist/hub/admission.js +0 -62
  352. package/dist/hub/admission.js.map +0 -1
  353. package/dist/hub/attachments/limits.d.ts +0 -20
  354. package/dist/hub/attachments/limits.js +0 -48
  355. package/dist/hub/attachments/limits.js.map +0 -1
  356. package/dist/hub/attachments/store.d.ts +0 -116
  357. package/dist/hub/attachments/store.js +0 -246
  358. package/dist/hub/attachments/store.js.map +0 -1
  359. package/dist/hub/audit/index.d.ts +0 -62
  360. package/dist/hub/audit/index.js +0 -344
  361. package/dist/hub/audit/index.js.map +0 -1
  362. package/dist/hub/browser-certificate.d.ts +0 -38
  363. package/dist/hub/browser-certificate.js +0 -247
  364. package/dist/hub/browser-certificate.js.map +0 -1
  365. package/dist/hub/buttons-model.d.ts +0 -9
  366. package/dist/hub/buttons-model.js +0 -42
  367. package/dist/hub/buttons-model.js.map +0 -1
  368. package/dist/hub/buttons.d.ts +0 -54
  369. package/dist/hub/buttons.js +0 -346
  370. package/dist/hub/buttons.js.map +0 -1
  371. package/dist/hub/catalog.d.ts +0 -74
  372. package/dist/hub/catalog.js +0 -195
  373. package/dist/hub/catalog.js.map +0 -1
  374. package/dist/hub/client.d.ts +0 -69
  375. package/dist/hub/client.js +0 -300
  376. package/dist/hub/client.js.map +0 -1
  377. package/dist/hub/compose/member.d.ts +0 -139
  378. package/dist/hub/compose/member.js +0 -450
  379. package/dist/hub/compose/member.js.map +0 -1
  380. package/dist/hub/compose/server.d.ts +0 -77
  381. package/dist/hub/compose/server.js +0 -349
  382. package/dist/hub/compose/server.js.map +0 -1
  383. package/dist/hub/compose/views.d.ts +0 -12
  384. package/dist/hub/compose/views.js +0 -4
  385. package/dist/hub/compose/views.js.map +0 -1
  386. package/dist/hub/db.d.ts +0 -56
  387. package/dist/hub/db.js +0 -188
  388. package/dist/hub/db.js.map +0 -1
  389. package/dist/hub/directory/config.d.ts +0 -39
  390. package/dist/hub/directory/config.js +0 -108
  391. package/dist/hub/directory/config.js.map +0 -1
  392. package/dist/hub/directory/directory.d.ts +0 -18
  393. package/dist/hub/directory/directory.js +0 -320
  394. package/dist/hub/directory/directory.js.map +0 -1
  395. package/dist/hub/directory/index.d.ts +0 -7
  396. package/dist/hub/directory/index.js +0 -4
  397. package/dist/hub/directory/index.js.map +0 -1
  398. package/dist/hub/directory/profiles.d.ts +0 -41
  399. package/dist/hub/directory/profiles.js +0 -90
  400. package/dist/hub/directory/profiles.js.map +0 -1
  401. package/dist/hub/directory/types.d.ts +0 -71
  402. package/dist/hub/directory/types.js +0 -14
  403. package/dist/hub/directory/types.js.map +0 -1
  404. package/dist/hub/execution/cli-provider.d.ts +0 -23
  405. package/dist/hub/execution/cli-provider.js +0 -341
  406. package/dist/hub/execution/cli-provider.js.map +0 -1
  407. package/dist/hub/execution/index.d.ts +0 -13
  408. package/dist/hub/execution/index.js +0 -8
  409. package/dist/hub/execution/index.js.map +0 -1
  410. package/dist/hub/execution/model-broker.d.ts +0 -24
  411. package/dist/hub/execution/model-broker.js +0 -208
  412. package/dist/hub/execution/model-broker.js.map +0 -1
  413. package/dist/hub/execution/provider-setup.d.ts +0 -11
  414. package/dist/hub/execution/provider-setup.js +0 -21
  415. package/dist/hub/execution/provider-setup.js.map +0 -1
  416. package/dist/hub/execution/sandbox-runner.d.ts +0 -1
  417. package/dist/hub/execution/sandbox-runner.js +0 -221
  418. package/dist/hub/execution/sandbox-runner.js.map +0 -1
  419. package/dist/hub/execution/service.d.ts +0 -136
  420. package/dist/hub/execution/service.js +0 -459
  421. package/dist/hub/execution/service.js.map +0 -1
  422. package/dist/hub/execution/store.d.ts +0 -61
  423. package/dist/hub/execution/store.js +0 -182
  424. package/dist/hub/execution/store.js.map +0 -1
  425. package/dist/hub/execution/views.d.ts +0 -20
  426. package/dist/hub/execution/views.js +0 -48
  427. package/dist/hub/execution/views.js.map +0 -1
  428. package/dist/hub/http/compose.d.ts +0 -20
  429. package/dist/hub/http/compose.js +0 -518
  430. package/dist/hub/http/compose.js.map +0 -1
  431. package/dist/hub/http/core.d.ts +0 -49
  432. package/dist/hub/http/core.js +0 -124
  433. package/dist/hub/http/core.js.map +0 -1
  434. package/dist/hub/http/deps.d.ts +0 -61
  435. package/dist/hub/http/deps.js +0 -2
  436. package/dist/hub/http/deps.js.map +0 -1
  437. package/dist/hub/http/schema.d.ts +0 -14
  438. package/dist/hub/http/schema.js +0 -80
  439. package/dist/hub/http/schema.js.map +0 -1
  440. package/dist/hub/identity.d.ts +0 -32
  441. package/dist/hub/identity.js +0 -80
  442. package/dist/hub/identity.js.map +0 -1
  443. package/dist/hub/init/browser-certificate.d.ts +0 -9
  444. package/dist/hub/init/browser-certificate.js +0 -78
  445. package/dist/hub/init/browser-certificate.js.map +0 -1
  446. package/dist/hub/init/browser-tls.d.ts +0 -18
  447. package/dist/hub/init/browser-tls.js +0 -62
  448. package/dist/hub/init/browser-tls.js.map +0 -1
  449. package/dist/hub/init/cli.d.ts +0 -3
  450. package/dist/hub/init/cli.js +0 -83
  451. package/dist/hub/init/cli.js.map +0 -1
  452. package/dist/hub/init/directory-certificate.d.ts +0 -24
  453. package/dist/hub/init/directory-certificate.js +0 -222
  454. package/dist/hub/init/directory-certificate.js.map +0 -1
  455. package/dist/hub/init/existing-fleet.d.ts +0 -6
  456. package/dist/hub/init/existing-fleet.js +0 -58
  457. package/dist/hub/init/existing-fleet.js.map +0 -1
  458. package/dist/hub/init/handoff.d.ts +0 -8
  459. package/dist/hub/init/handoff.js +0 -36
  460. package/dist/hub/init/handoff.js.map +0 -1
  461. package/dist/hub/init/identity.d.ts +0 -5
  462. package/dist/hub/init/identity.js +0 -24
  463. package/dist/hub/init/identity.js.map +0 -1
  464. package/dist/hub/init/initializer.d.ts +0 -24
  465. package/dist/hub/init/initializer.js +0 -385
  466. package/dist/hub/init/initializer.js.map +0 -1
  467. package/dist/hub/init/inventory.d.ts +0 -17
  468. package/dist/hub/init/inventory.js +0 -33
  469. package/dist/hub/init/inventory.js.map +0 -1
  470. package/dist/hub/init/layout.d.ts +0 -32
  471. package/dist/hub/init/layout.js +0 -53
  472. package/dist/hub/init/layout.js.map +0 -1
  473. package/dist/hub/init/network.d.ts +0 -18
  474. package/dist/hub/init/network.js +0 -104
  475. package/dist/hub/init/network.js.map +0 -1
  476. package/dist/hub/init/plan-digest.d.ts +0 -5
  477. package/dist/hub/init/plan-digest.js +0 -47
  478. package/dist/hub/init/plan-digest.js.map +0 -1
  479. package/dist/hub/init/prompt.d.ts +0 -26
  480. package/dist/hub/init/prompt.js +0 -110
  481. package/dist/hub/init/prompt.js.map +0 -1
  482. package/dist/hub/init/secret-file.d.ts +0 -1
  483. package/dist/hub/init/secret-file.js +0 -59
  484. package/dist/hub/init/secret-file.js.map +0 -1
  485. package/dist/hub/init/text.d.ts +0 -127
  486. package/dist/hub/init/text.js +0 -247
  487. package/dist/hub/init/text.js.map +0 -1
  488. package/dist/hub/init/types.d.ts +0 -114
  489. package/dist/hub/init/types.js +0 -9
  490. package/dist/hub/init/types.js.map +0 -1
  491. package/dist/hub/init/wizard.d.ts +0 -34
  492. package/dist/hub/init/wizard.js +0 -554
  493. package/dist/hub/init/wizard.js.map +0 -1
  494. package/dist/hub/initialization.d.ts +0 -23
  495. package/dist/hub/initialization.js +0 -28
  496. package/dist/hub/initialization.js.map +0 -1
  497. package/dist/hub/member/agent-mode.d.ts +0 -6
  498. package/dist/hub/member/agent-mode.js +0 -23
  499. package/dist/hub/member/agent-mode.js.map +0 -1
  500. package/dist/hub/member/attachments.d.ts +0 -29
  501. package/dist/hub/member/attachments.js +0 -107
  502. package/dist/hub/member/attachments.js.map +0 -1
  503. package/dist/hub/member/exposure-api.d.ts +0 -87
  504. package/dist/hub/member/exposure-api.js +0 -64
  505. package/dist/hub/member/exposure-api.js.map +0 -1
  506. package/dist/hub/member/exposures.d.ts +0 -123
  507. package/dist/hub/member/exposures.js +0 -282
  508. package/dist/hub/member/exposures.js.map +0 -1
  509. package/dist/hub/member/pairing-api.d.ts +0 -85
  510. package/dist/hub/member/pairing-api.js +0 -385
  511. package/dist/hub/member/pairing-api.js.map +0 -1
  512. package/dist/hub/member/quota.d.ts +0 -20
  513. package/dist/hub/member/quota.js +0 -98
  514. package/dist/hub/member/quota.js.map +0 -1
  515. package/dist/hub/member-journal.d.ts +0 -104
  516. package/dist/hub/member-journal.js +0 -336
  517. package/dist/hub/member-journal.js.map +0 -1
  518. package/dist/hub/member-reconciliation.d.ts +0 -14
  519. package/dist/hub/member-reconciliation.js +0 -97
  520. package/dist/hub/member-reconciliation.js.map +0 -1
  521. package/dist/hub/mount.d.ts +0 -39
  522. package/dist/hub/mount.js +0 -123
  523. package/dist/hub/mount.js.map +0 -1
  524. package/dist/hub/pairing-client.d.ts +0 -17
  525. package/dist/hub/pairing-client.js +0 -108
  526. package/dist/hub/pairing-client.js.map +0 -1
  527. package/dist/hub/pairing.d.ts +0 -65
  528. package/dist/hub/pairing.js +0 -211
  529. package/dist/hub/pairing.js.map +0 -1
  530. package/dist/hub/policy.d.ts +0 -63
  531. package/dist/hub/policy.js +0 -147
  532. package/dist/hub/policy.js.map +0 -1
  533. package/dist/hub/preview.d.ts +0 -32
  534. package/dist/hub/preview.js +0 -64
  535. package/dist/hub/preview.js.map +0 -1
  536. package/dist/hub/private-files.d.ts +0 -5
  537. package/dist/hub/private-files.js +0 -44
  538. package/dist/hub/private-files.js.map +0 -1
  539. package/dist/hub/profile.d.ts +0 -59
  540. package/dist/hub/profile.js +0 -73
  541. package/dist/hub/profile.js.map +0 -1
  542. package/dist/hub/protocol.d.ts +0 -779
  543. package/dist/hub/protocol.js +0 -93
  544. package/dist/hub/protocol.js.map +0 -1
  545. package/dist/hub/quota.d.ts +0 -24
  546. package/dist/hub/quota.js +0 -112
  547. package/dist/hub/quota.js.map +0 -1
  548. package/dist/hub/representative.d.ts +0 -141
  549. package/dist/hub/representative.js +0 -528
  550. package/dist/hub/representative.js.map +0 -1
  551. package/dist/hub/retention.d.ts +0 -17
  552. package/dist/hub/retention.js +0 -45
  553. package/dist/hub/retention.js.map +0 -1
  554. package/dist/hub/rooms.d.ts +0 -120
  555. package/dist/hub/rooms.js +0 -535
  556. package/dist/hub/rooms.js.map +0 -1
  557. package/dist/hub/runtime.d.ts +0 -106
  558. package/dist/hub/runtime.js +0 -298
  559. package/dist/hub/runtime.js.map +0 -1
  560. package/dist/hub/server.d.ts +0 -56
  561. package/dist/hub/server.js +0 -202
  562. package/dist/hub/server.js.map +0 -1
  563. package/dist/hub/service-start.d.ts +0 -17
  564. package/dist/hub/service-start.js +0 -109
  565. package/dist/hub/service-start.js.map +0 -1
  566. package/dist/hub/sessions.d.ts +0 -53
  567. package/dist/hub/sessions.js +0 -196
  568. package/dist/hub/sessions.js.map +0 -1
  569. package/dist/hub/socket.d.ts +0 -24
  570. package/dist/hub/socket.js +0 -79
  571. package/dist/hub/socket.js.map +0 -1
  572. package/dist/hub/store.d.ts +0 -77
  573. package/dist/hub/store.js +0 -88
  574. package/dist/hub/store.js.map +0 -1
  575. package/dist/hub/tls.d.ts +0 -31
  576. package/dist/hub/tls.js +0 -135
  577. package/dist/hub/tls.js.map +0 -1
  578. package/dist/hub/types.d.ts +0 -401
  579. package/dist/hub/types.js +0 -2
  580. package/dist/hub/types.js.map +0 -1
  581. package/dist/hub/validation.d.ts +0 -33
  582. package/dist/hub/validation.js +0 -136
  583. package/dist/hub/validation.js.map +0 -1
  584. package/dist/hub/version-floor.d.ts +0 -10
  585. package/dist/hub/version-floor.js +0 -45
  586. package/dist/hub/version-floor.js.map +0 -1
  587. package/dist/hub-browser-certificate-policy.d.ts +0 -31
  588. package/dist/hub-browser-certificate-policy.js +0 -25
  589. package/dist/hub-browser-certificate-policy.js.map +0 -1
  590. package/dist/hub-membership-settings.d.ts +0 -6
  591. package/dist/hub-membership-settings.js +0 -21
  592. package/dist/hub-membership-settings.js.map +0 -1
  593. package/dist/hub-mode.d.ts +0 -15
  594. package/dist/hub-mode.js +0 -17
  595. package/dist/hub-mode.js.map +0 -1
  596. package/dist/hub-pairing-summary.d.ts +0 -48
  597. package/dist/hub-pairing-summary.js +0 -36
  598. package/dist/hub-pairing-summary.js.map +0 -1
  599. package/dist/hub-report-target.d.ts +0 -32
  600. package/dist/hub-report-target.js +0 -33
  601. package/dist/hub-report-target.js.map +0 -1
  602. package/dist/hub-retention-policy.d.ts +0 -14
  603. package/dist/hub-retention-policy.js +0 -15
  604. package/dist/hub-retention-policy.js.map +0 -1
  605. package/dist/launchd-service-domain.d.ts +0 -5
  606. package/dist/launchd-service-domain.js +0 -21
  607. package/dist/launchd-service-domain.js.map +0 -1
  608. package/dist/local-pane-endpoint.d.ts +0 -46
  609. package/dist/local-pane-endpoint.js +0 -189
  610. package/dist/local-pane-endpoint.js.map +0 -1
  611. package/dist/local-pane-launcher.d.ts +0 -2
  612. package/dist/local-pane-launcher.js +0 -38
  613. package/dist/local-pane-launcher.js.map +0 -1
  614. package/dist/local-pane-stage.ps1 +0 -101
  615. package/dist/model-catalog-defaults.d.ts +0 -14
  616. package/dist/model-catalog-defaults.js +0 -20
  617. package/dist/model-catalog-defaults.js.map +0 -1
  618. package/dist/native-agent-admission.d.ts +0 -7
  619. package/dist/native-agent-admission.js +0 -26
  620. package/dist/native-agent-admission.js.map +0 -1
  621. package/dist/native-daemon-client.d.ts +0 -13
  622. package/dist/native-daemon-client.js +0 -28
  623. package/dist/native-daemon-client.js.map +0 -1
  624. package/dist/native-instance-api.d.ts +0 -13
  625. package/dist/native-instance-api.js +0 -217
  626. package/dist/native-instance-api.js.map +0 -1
  627. package/dist/native-instance-input.d.ts +0 -87
  628. package/dist/native-instance-input.js +0 -59
  629. package/dist/native-instance-input.js.map +0 -1
  630. package/dist/native-instance-registry.d.ts +0 -38
  631. package/dist/native-instance-registry.js +0 -129
  632. package/dist/native-instance-registry.js.map +0 -1
  633. package/dist/native-mcp.d.ts +0 -43
  634. package/dist/native-mcp.js +0 -291
  635. package/dist/native-mcp.js.map +0 -1
  636. package/dist/native-model-catalog.d.ts +0 -5
  637. package/dist/native-model-catalog.js +0 -76
  638. package/dist/native-model-catalog.js.map +0 -1
  639. package/dist/native-pane-crash-budget.d.ts +0 -20
  640. package/dist/native-pane-crash-budget.js +0 -60
  641. package/dist/native-pane-crash-budget.js.map +0 -1
  642. package/dist/native-pane-create.d.ts +0 -26
  643. package/dist/native-pane-create.js +0 -53
  644. package/dist/native-pane-create.js.map +0 -1
  645. package/dist/native-pane-lifecycle.d.ts +0 -73
  646. package/dist/native-pane-lifecycle.js +0 -239
  647. package/dist/native-pane-lifecycle.js.map +0 -1
  648. package/dist/native-pane-manager.d.ts +0 -59
  649. package/dist/native-pane-manager.js +0 -592
  650. package/dist/native-pane-manager.js.map +0 -1
  651. package/dist/native-pane-output-log.d.ts +0 -15
  652. package/dist/native-pane-output-log.js +0 -108
  653. package/dist/native-pane-output-log.js.map +0 -1
  654. package/dist/native-pane-reconciliation.d.ts +0 -4
  655. package/dist/native-pane-reconciliation.js +0 -40
  656. package/dist/native-pane-reconciliation.js.map +0 -1
  657. package/dist/native-pane-recovery.d.ts +0 -12
  658. package/dist/native-pane-recovery.js +0 -10
  659. package/dist/native-pane-recovery.js.map +0 -1
  660. package/dist/native-pane-tools.d.ts +0 -2
  661. package/dist/native-pane-tools.js +0 -14
  662. package/dist/native-pane-tools.js.map +0 -1
  663. package/dist/office-talk.d.ts +0 -26
  664. package/dist/office-talk.js +0 -50
  665. package/dist/office-talk.js.map +0 -1
  666. package/dist/pane-port.d.ts +0 -118
  667. package/dist/pane-port.js +0 -2
  668. package/dist/pane-port.js.map +0 -1
  669. package/dist/runtime-api.d.ts +0 -10
  670. package/dist/runtime-api.js +0 -189
  671. package/dist/runtime-api.js.map +0 -1
  672. package/dist/runtime-assets/@xterm/addon-serialize/LICENSE +0 -21
  673. package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.js +0 -2
  674. package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.mjs +0 -19
  675. package/dist/runtime-assets/@xterm/addon-serialize/package.json +0 -29
  676. package/dist/runtime-assets/@xterm/headless/LICENSE +0 -21
  677. package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.js +0 -2
  678. package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.mjs +0 -46
  679. package/dist/runtime-assets/@xterm/headless/package.json +0 -29
  680. package/dist/runtime-assets/node-pty/CONPTY-LICENSE +0 -21
  681. package/dist/runtime-assets/node-pty/CONPTY-NOTICE.md +0 -503
  682. package/dist/runtime-assets/node-pty/LICENSE +0 -69
  683. package/dist/runtime-assets/node-pty/lib/conpty_console_list_agent.js +0 -16
  684. package/dist/runtime-assets/node-pty/lib/eventEmitter2.js +0 -47
  685. package/dist/runtime-assets/node-pty/lib/index.js +0 -52
  686. package/dist/runtime-assets/node-pty/lib/interfaces.js +0 -7
  687. package/dist/runtime-assets/node-pty/lib/shared/conout.js +0 -11
  688. package/dist/runtime-assets/node-pty/lib/terminal.js +0 -190
  689. package/dist/runtime-assets/node-pty/lib/types.js +0 -7
  690. package/dist/runtime-assets/node-pty/lib/unixTerminal.js +0 -346
  691. package/dist/runtime-assets/node-pty/lib/utils.js +0 -39
  692. package/dist/runtime-assets/node-pty/lib/windowsConoutConnection.js +0 -125
  693. package/dist/runtime-assets/node-pty/lib/windowsPtyAgent.js +0 -320
  694. package/dist/runtime-assets/node-pty/lib/windowsTerminal.js +0 -199
  695. package/dist/runtime-assets/node-pty/lib/worker/conoutSocketWorker.js +0 -22
  696. package/dist/runtime-assets/node-pty/package.json +0 -64
  697. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  698. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  699. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  700. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  701. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  702. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  703. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  704. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  705. package/dist/runtime-build-info.d.ts +0 -9
  706. package/dist/runtime-build-info.js +0 -59
  707. package/dist/runtime-build-info.js.map +0 -1
  708. package/dist/runtime-bundle.d.ts +0 -22
  709. package/dist/runtime-bundle.js +0 -158
  710. package/dist/runtime-bundle.js.map +0 -1
  711. package/dist/runtime-cli.d.ts +0 -14
  712. package/dist/runtime-cli.js +0 -271
  713. package/dist/runtime-cli.js.map +0 -1
  714. package/dist/runtime-client-store.d.ts +0 -75
  715. package/dist/runtime-client-store.js +0 -372
  716. package/dist/runtime-client-store.js.map +0 -1
  717. package/dist/runtime-client.d.ts +0 -174
  718. package/dist/runtime-client.js +0 -1010
  719. package/dist/runtime-client.js.map +0 -1
  720. package/dist/runtime-connection.d.ts +0 -22
  721. package/dist/runtime-connection.js +0 -93
  722. package/dist/runtime-connection.js.map +0 -1
  723. package/dist/runtime-coordinator.d.ts +0 -98
  724. package/dist/runtime-coordinator.js +0 -1089
  725. package/dist/runtime-coordinator.js.map +0 -1
  726. package/dist/runtime-credential-profiles.d.ts +0 -78
  727. package/dist/runtime-credential-profiles.js +0 -280
  728. package/dist/runtime-credential-profiles.js.map +0 -1
  729. package/dist/runtime-general-protocol.d.ts +0 -22
  730. package/dist/runtime-general-protocol.js +0 -57
  731. package/dist/runtime-general-protocol.js.map +0 -1
  732. package/dist/runtime-general-workspace.d.ts +0 -17
  733. package/dist/runtime-general-workspace.js +0 -213
  734. package/dist/runtime-general-workspace.js.map +0 -1
  735. package/dist/runtime-install.d.ts +0 -50
  736. package/dist/runtime-install.js +0 -186
  737. package/dist/runtime-install.js.map +0 -1
  738. package/dist/runtime-pane-assets.d.ts +0 -17
  739. package/dist/runtime-pane-assets.js +0 -23
  740. package/dist/runtime-pane-assets.js.map +0 -1
  741. package/dist/runtime-pane-boot.d.ts +0 -9
  742. package/dist/runtime-pane-boot.js +0 -47
  743. package/dist/runtime-pane-boot.js.map +0 -1
  744. package/dist/runtime-pane-codex-index.d.ts +0 -10
  745. package/dist/runtime-pane-codex-index.js +0 -151
  746. package/dist/runtime-pane-codex-index.js.map +0 -1
  747. package/dist/runtime-pane-config.d.ts +0 -16
  748. package/dist/runtime-pane-config.js +0 -54
  749. package/dist/runtime-pane-config.js.map +0 -1
  750. package/dist/runtime-pane-host.d.ts +0 -63
  751. package/dist/runtime-pane-host.js +0 -467
  752. package/dist/runtime-pane-host.js.map +0 -1
  753. package/dist/runtime-pane-job-owner.d.ts +0 -1
  754. package/dist/runtime-pane-job-owner.js +0 -29
  755. package/dist/runtime-pane-job-owner.js.map +0 -1
  756. package/dist/runtime-pane-job.ps1 +0 -116
  757. package/dist/runtime-pane-link.d.ts +0 -47
  758. package/dist/runtime-pane-link.js +0 -337
  759. package/dist/runtime-pane-link.js.map +0 -1
  760. package/dist/runtime-pane-mcp-protocol.d.ts +0 -32
  761. package/dist/runtime-pane-mcp-protocol.js +0 -39
  762. package/dist/runtime-pane-mcp-protocol.js.map +0 -1
  763. package/dist/runtime-pane-mcp-relay.d.ts +0 -18
  764. package/dist/runtime-pane-mcp-relay.js +0 -80
  765. package/dist/runtime-pane-mcp-relay.js.map +0 -1
  766. package/dist/runtime-pane-mcp.d.ts +0 -55
  767. package/dist/runtime-pane-mcp.js +0 -153
  768. package/dist/runtime-pane-mcp.js.map +0 -1
  769. package/dist/runtime-pane-native.d.ts +0 -75
  770. package/dist/runtime-pane-native.js +0 -114
  771. package/dist/runtime-pane-native.js.map +0 -1
  772. package/dist/runtime-pane-output.d.ts +0 -19
  773. package/dist/runtime-pane-output.js +0 -53
  774. package/dist/runtime-pane-output.js.map +0 -1
  775. package/dist/runtime-pane-port.d.ts +0 -144
  776. package/dist/runtime-pane-port.js +0 -574
  777. package/dist/runtime-pane-port.js.map +0 -1
  778. package/dist/runtime-pane-private.d.ts +0 -14
  779. package/dist/runtime-pane-private.js +0 -51
  780. package/dist/runtime-pane-private.js.map +0 -1
  781. package/dist/runtime-pane-private.ps1 +0 -14
  782. package/dist/runtime-pane-process.d.ts +0 -4
  783. package/dist/runtime-pane-process.js +0 -117
  784. package/dist/runtime-pane-process.js.map +0 -1
  785. package/dist/runtime-pane-protocol.d.ts +0 -182
  786. package/dist/runtime-pane-protocol.js +0 -217
  787. package/dist/runtime-pane-protocol.js.map +0 -1
  788. package/dist/runtime-pane-quota-history.d.ts +0 -6
  789. package/dist/runtime-pane-quota-history.js +0 -44
  790. package/dist/runtime-pane-quota-history.js.map +0 -1
  791. package/dist/runtime-pane-screen.d.ts +0 -19
  792. package/dist/runtime-pane-screen.js +0 -76
  793. package/dist/runtime-pane-screen.js.map +0 -1
  794. package/dist/runtime-pane-service.d.ts +0 -16
  795. package/dist/runtime-pane-service.js +0 -256
  796. package/dist/runtime-pane-service.js.map +0 -1
  797. package/dist/runtime-pane-stdio-protocol.d.ts +0 -54
  798. package/dist/runtime-pane-stdio-protocol.js +0 -94
  799. package/dist/runtime-pane-stdio-protocol.js.map +0 -1
  800. package/dist/runtime-pane-stdio.d.ts +0 -3
  801. package/dist/runtime-pane-stdio.js +0 -123
  802. package/dist/runtime-pane-stdio.js.map +0 -1
  803. package/dist/runtime-pane-store.d.ts +0 -33
  804. package/dist/runtime-pane-store.js +0 -164
  805. package/dist/runtime-pane-store.js.map +0 -1
  806. package/dist/runtime-pane-transcript-protocol.d.ts +0 -43
  807. package/dist/runtime-pane-transcript-protocol.js +0 -58
  808. package/dist/runtime-pane-transcript-protocol.js.map +0 -1
  809. package/dist/runtime-pane-transcript.d.ts +0 -50
  810. package/dist/runtime-pane-transcript.js +0 -666
  811. package/dist/runtime-pane-transcript.js.map +0 -1
  812. package/dist/runtime-pane-worker.d.ts +0 -1
  813. package/dist/runtime-pane-worker.js +0 -167
  814. package/dist/runtime-pane-worker.js.map +0 -1
  815. package/dist/runtime-protocol.d.ts +0 -177
  816. package/dist/runtime-protocol.js +0 -49
  817. package/dist/runtime-protocol.js.map +0 -1
  818. package/dist/runtime-switches.d.ts +0 -79
  819. package/dist/runtime-switches.js +0 -90
  820. package/dist/runtime-switches.js.map +0 -1
  821. package/dist/runtime-transcript-delta-reader.d.ts +0 -23
  822. package/dist/runtime-transcript-delta-reader.js +0 -74
  823. package/dist/runtime-transcript-delta-reader.js.map +0 -1
  824. package/dist/runtime-transcript-source.d.ts +0 -36
  825. package/dist/runtime-transcript-source.js +0 -189
  826. package/dist/runtime-transcript-source.js.map +0 -1
  827. package/dist/runtime-update-activity.d.ts +0 -21
  828. package/dist/runtime-update-activity.js +0 -51
  829. package/dist/runtime-update-activity.js.map +0 -1
  830. package/dist/runtime-update-artifact.d.ts +0 -31
  831. package/dist/runtime-update-artifact.js +0 -252
  832. package/dist/runtime-update-artifact.js.map +0 -1
  833. package/dist/runtime-update-install.d.ts +0 -31
  834. package/dist/runtime-update-install.js +0 -205
  835. package/dist/runtime-update-install.js.map +0 -1
  836. package/dist/runtime-update-journal.d.ts +0 -44
  837. package/dist/runtime-update-journal.js +0 -121
  838. package/dist/runtime-update-journal.js.map +0 -1
  839. package/dist/runtime-update-lock.d.ts +0 -48
  840. package/dist/runtime-update-lock.js +0 -217
  841. package/dist/runtime-update-lock.js.map +0 -1
  842. package/dist/runtime-update-owners.d.ts +0 -29
  843. package/dist/runtime-update-owners.js +0 -240
  844. package/dist/runtime-update-owners.js.map +0 -1
  845. package/dist/runtime-update-protocol.d.ts +0 -15
  846. package/dist/runtime-update-protocol.js +0 -13
  847. package/dist/runtime-update-protocol.js.map +0 -1
  848. package/dist/runtime-windows-bridge.d.ts +0 -42
  849. package/dist/runtime-windows-bridge.js +0 -167
  850. package/dist/runtime-windows-bridge.js.map +0 -1
  851. package/dist/service-drain.d.ts +0 -19
  852. package/dist/service-drain.js +0 -64
  853. package/dist/service-drain.js.map +0 -1
  854. package/dist/settings-route-lifetime.d.ts +0 -14
  855. package/dist/settings-route-lifetime.js +0 -48
  856. package/dist/settings-route-lifetime.js.map +0 -1
  857. package/dist/tmux-binary.d.ts +0 -59
  858. package/dist/tmux-binary.js +0 -200
  859. package/dist/tmux-binary.js.map +0 -1
  860. package/dist/tmux-pane-host.d.ts +0 -26
  861. package/dist/tmux-pane-host.js +0 -25
  862. package/dist/tmux-pane-host.js.map +0 -1
  863. package/dist/transcript-needles.d.ts +0 -42
  864. package/dist/transcript-needles.js +0 -166
  865. package/dist/transcript-needles.js.map +0 -1
  866. package/dist/transcript-records.d.ts +0 -21
  867. package/dist/transcript-records.js +0 -141
  868. package/dist/transcript-records.js.map +0 -1
  869. package/dist/ui/account-identity.js +0 -27
  870. package/dist/ui/accounts-view.js +0 -214
  871. package/dist/ui/agent-proposals.js +0 -90
  872. package/dist/ui/agent-runtime-settings.js +0 -68
  873. package/dist/ui/agent-runtime.js +0 -124
  874. package/dist/ui/cli-picker.js +0 -42
  875. package/dist/ui/credential-profile-select.js +0 -54
  876. package/dist/ui/fleet-office-dialogue.d.ts +0 -30
  877. package/dist/ui/fleet-office-dialogue.js +0 -382
  878. package/dist/ui/fleet-task-menu.js +0 -188
  879. package/dist/ui/fleet-task-stats.js +0 -124
  880. package/dist/ui/fleet-task-view.js +0 -340
  881. package/dist/ui/general-location.js +0 -71
  882. package/dist/ui/hub-agent-copy.js +0 -23
  883. package/dist/ui/hub-button-actions.js +0 -65
  884. package/dist/ui/hub-chat-store.js +0 -158
  885. package/dist/ui/hub-chat-strings.js +0 -77
  886. package/dist/ui/hub-client.js +0 -329
  887. package/dist/ui/hub-owner-strings.js +0 -51
  888. package/dist/ui/hub-provider-guidance.js +0 -31
  889. package/dist/ui/hub-quota.js +0 -85
  890. package/dist/ui/hub-strings.js +0 -162
  891. package/dist/ui/hub-switcher.js +0 -27
  892. package/dist/ui/native-instance-settings.js +0 -44
  893. package/dist/ui/native-pane-recovery.js +0 -45
  894. package/dist/ui/panel-hub.js +0 -619
  895. package/dist/ui/panel-runtimes.js +0 -425
  896. package/dist/ui/panel-windows-agent.js +0 -86
  897. package/dist/ui/panel-windows-cli.js +0 -189
  898. package/dist/ui/provider-marks.js +0 -83
  899. package/dist/ui/runtime-catalog.js +0 -55
  900. package/dist/ui/runtime-commands.d.ts +0 -4
  901. package/dist/ui/runtime-commands.js +0 -59
  902. package/dist/ui/settings-access-strings.js +0 -42
  903. package/dist/ui/settings-agent-filters.js +0 -94
  904. package/dist/ui/settings-build-version.js +0 -35
  905. package/dist/ui/settings-devices.js +0 -253
  906. package/dist/ui/settings-hub-browser-certificate.js +0 -74
  907. package/dist/ui/settings-hub-membership.js +0 -72
  908. package/dist/ui/settings-hub-retention.js +0 -52
  909. package/dist/ui/settings-hub.js +0 -196
  910. package/dist/ui/settings-layout.js +0 -242
  911. package/dist/ui/settings-outside.js +0 -242
  912. package/dist/ui/settings-shared-strings.js +0 -143
  913. package/dist/ui/settings-shared.js +0 -345
  914. package/dist/ui/settings-shortcuts.js +0 -65
  915. package/dist/ui/shared/accounts.css +0 -15
  916. package/dist/ui/shared/chat-composer.js +0 -68
  917. package/dist/ui/shared/chat-md-strings.js +0 -9
  918. package/dist/ui/shared/chat-render.js +0 -682
  919. package/dist/ui/shared/chat-strings.js +0 -333
  920. package/dist/ui/shared/chat-thread.js +0 -969
  921. package/dist/ui/shared/chat-time.js +0 -80
  922. package/dist/ui/shared/html-attachment.js +0 -42
  923. package/dist/ui/shared/hub-chat.css +0 -85
  924. package/dist/ui/shared/hub-owner.css +0 -33
  925. package/dist/ui/shared/hub-quota.css +0 -8
  926. package/dist/ui/shared/hub.css +0 -71
  927. package/dist/ui/shared/machine-name.js +0 -13
  928. package/dist/ui/shared/page-head.js +0 -8
  929. package/dist/ui/shared/preview.js +0 -476
  930. package/dist/ui/shared/qrcode.module.js +0 -2237
  931. package/dist/ui/shared/runtime-install.css +0 -26
  932. package/dist/ui/shared/settings-width.js +0 -31
  933. package/dist/ui/shared/side-rail.js +0 -15
  934. package/dist/ui/shared/task-board.css +0 -95
  935. package/dist/ui/shared/vendor/qrcode-generator.LICENSE +0 -27
  936. package/dist/ui/shared/workspace.css +0 -20
  937. package/dist/ui/windows-agents-nav.js +0 -2
  938. package/dist/ui/windows-cli-catalog.js +0 -108
  939. package/dist/ui/workspace-panel.js +0 -189
  940. package/dist/ui/workspace-strings.js +0 -35
  941. package/dist/web-device-login.d.ts +0 -153
  942. package/dist/web-device-login.js +0 -278
  943. package/dist/web-device-login.js.map +0 -1
  944. package/dist/web-remote-access.d.ts +0 -152
  945. package/dist/web-remote-access.js +0 -368
  946. package/dist/web-remote-access.js.map +0 -1
  947. package/dist/windows-agents.d.ts +0 -127
  948. package/dist/windows-agents.js +0 -491
  949. package/dist/windows-agents.js.map +0 -1
  950. package/dist/windows-cli-api.d.ts +0 -34
  951. package/dist/windows-cli-api.js +0 -185
  952. package/dist/windows-cli-api.js.map +0 -1
  953. package/dist/windows-cli-providers.d.ts +0 -106
  954. package/dist/windows-cli-providers.js +0 -424
  955. package/dist/windows-cli-providers.js.map +0 -1
  956. package/dist/windows-cli-worker.d.ts +0 -83
  957. package/dist/windows-cli-worker.js +0 -570
  958. package/dist/windows-cli-worker.js.map +0 -1
  959. package/dist/windows-cli.d.ts +0 -126
  960. package/dist/windows-cli.js +0 -416
  961. package/dist/windows-cli.js.map +0 -1
  962. package/dist/windows-native-mcp.d.ts +0 -19
  963. package/dist/windows-native-mcp.js +0 -143
  964. package/dist/windows-native-mcp.js.map +0 -1
  965. package/dist/windows-pane-mcp.d.ts +0 -26
  966. package/dist/windows-pane-mcp.js +0 -187
  967. package/dist/windows-pane-mcp.js.map +0 -1
  968. package/launcher/launchd-session-type.cjs +0 -14
  969. package/launcher/tmux-bundle.cjs +0 -247
  970. package/templates/runtime-assets/conpty-LICENSE +0 -21
  971. package/templates/runtime-assets/conpty-NOTICE.md +0 -503
  972. package/templates/runtime-assets/local-pane-stage.ps1 +0 -101
  973. package/templates/runtime-assets/runtime-pane-job.ps1 +0 -116
  974. package/templates/runtime-assets/runtime-pane-private.ps1 +0 -14
  975. package/templates/runtime-assets/xterm-LICENSE +0 -21
  976. package/templates/runtime-install/install.ps1 +0 -270
package/dist/web-api.js CHANGED
@@ -1,6 +1,4 @@
1
- import { hubModeOf, hubNameOf } from "./hub-mode.js";
2
1
  import { CANVAS_WORKER_EXPERIMENTAL_MESSAGE } from "./web-experimental.js";
3
- import { MachineSlotLimitError } from "./windows-agents.js";
4
2
  import { daemonTopicMode } from "./web-only-fleet.js";
5
3
  import { webHumanOrigin } from "./human-delivery-receipts.js";
6
4
  import { classifyWebPeer, confirmAfterBody, noAuthority } from "./authority/web-authority.js";
@@ -34,7 +32,6 @@ import { shellRoute } from "./web-shell-routes.js";
34
32
  import { createReadStream, createWriteStream, readFileSync } from "node:fs";
35
33
  import { join, dirname } from "node:path";
36
34
  import { fileURLToPath } from "node:url";
37
- import { createHash, randomUUID } from "node:crypto";
38
35
  import { CreateInstanceArgs, CreateScheduleArgs, UpdateScheduleArgs, validateArgs } from "./outbound-schemas.js";
39
36
  import { scheduleView } from "./web-schedules.js";
40
37
  import { DEFAULT_SCHEDULER_CONFIG } from "./scheduler/index.js";
@@ -47,9 +44,6 @@ import { WEB_CHAT_CARDS_OVERFLOW, catchUpWindow, newWebMessageId, parseLastEvent
47
44
  import { PAGE_SHARE_LIMITS, htmlFences, htmlTitle } from "./page-share.js";
48
45
  import { attachmentDelivery, createPartFile, displayName, fileTooLargeText, INLINE_MIME, isFileId, MEDIA_RANGE_MAX, publicAttachment, UPLOAD_LIMITS, UPLOAD_MAX_MS, UPLOAD_STALL_MS, UploadSniffer, uploadLimits, wellFormed } from "./web-upload.js";
49
46
  import { getAgendHome } from "./paths.js";
50
- import { workspaceChanges, workspaceFile, workspaceImage, workspaceList, workspaceRoot, WorkspaceError } from "./agent-workspace.js";
51
- import { isGeneralInstance } from "./general-instance.js";
52
- import { resolveToolSet } from "./tool-permissions.js";
53
47
  import { OPERATOR, isOwnerEffectKey } from "./web-prefs.js";
54
48
  import { WEB_NAME_FALLBACK, webPersonKey } from "./web-profile.js";
55
49
  import { commitTeamCreate, commitTeamUpdate } from "./outbound-handlers.js";
@@ -60,13 +54,6 @@ import { resolveTz } from "./tz-utils.js";
60
54
  import { QUERY_MAX_CHARS, RESULT_MAX, SEARCH_SOURCES } from "./search/search-store.js";
61
55
  import { xmsgShown } from "./search/search-docs.js";
62
56
  import { WebSendDedupe } from "./web-send-dedupe.js";
63
- import { handleWindowsCliRequest, nativeCliAuthorization } from "./windows-cli-api.js";
64
- import { createNativeInstance, handleNativeInstanceRequest } from "./native-instance-api.js";
65
- import { handleAgentRuntimeChange } from "./agent-runtime-api.js";
66
- import { isWindowsInstance, isNativePaneInstance, isNativeExecInstance } from "./native-instance-registry.js";
67
- import { handleNativeModelCatalog } from "./native-model-catalog.js";
68
- import { claudeDocumentedModels } from "./model-catalog-defaults.js";
69
- import { handleRuntimeRequest } from "./runtime-api.js";
70
57
  import { taskBoardOffNames } from "./dashboard-permissions.js";
71
58
  import { topicFields } from "./instance-topic-delete.js";
72
59
  // ── Strict public-facing schemas ────────────────────────────────────────────
@@ -247,8 +234,8 @@ function visibleNeeds(ctx, gateway, items) {
247
234
  const { hidden } = boardHiding(ctx, true);
248
235
  return items.filter((i) => {
249
236
  const item = i;
250
- if (item.type === "config" || item.type === "hub")
251
- return false; // member-local diagnostics/proposals never cross a public link
237
+ if (item.type === "config")
238
+ return false; // private operator configuration diagnostics never cross a public link
252
239
  if (item.type !== "task")
253
240
  return true;
254
241
  const code = item.card?.code;
@@ -1223,18 +1210,7 @@ function handleBackendLogin(req, res, url, ctx, path, method) {
1223
1210
  }
1224
1211
  const action = /^\/ui\/backend-login\/(check|start|cancel)$/.exec(path)?.[1];
1225
1212
  if (reading && path === "/ui/backend-login" && [...url.searchParams.keys()].length === 0) {
1226
- // The sign-in view (its access code included) is answered at once and never waits for an account to be read: that happens in the background
1227
- // and the page is told to read again when something new is known.
1228
- try {
1229
- ctx.refreshSignInIdentities?.();
1230
- }
1231
- catch { /* the list is served with what is known */ }
1232
- try {
1233
- json(res, 200, { login: logins.view(first.handle), targets: ctx.backendSignInTargets?.() ?? [] });
1234
- }
1235
- catch {
1236
- json(res, 503, { error: "sign_in_unavailable" });
1237
- }
1213
+ json(res, 200, { login: logins.view(first.handle), targets: ctx.backendSignInTargets?.() ?? [] });
1238
1214
  return true;
1239
1215
  }
1240
1216
  if (method !== "POST" || !action) {
@@ -1897,29 +1873,6 @@ export function handleWebRequest(req, res, url, ctx) {
1897
1873
  return false;
1898
1874
  }
1899
1875
  // ── Static files ───────────────────────────────────────
1900
- // Native local tools retain their administrator boundary on the shared chat/read/action routes.
1901
- const nativePath = /^\/ui\/(?:chat|instance|cancel|stop|start|restart)\/([^/]+)$/.exec(path);
1902
- let nativeTarget = url.searchParams.get("instance") ?? "";
1903
- if (nativePath) {
1904
- try {
1905
- nativeTarget = decodeURIComponent(nativePath[1]);
1906
- }
1907
- catch {
1908
- nativeTarget = "";
1909
- }
1910
- }
1911
- if (isWindowsInstance(ctx.fleetConfig?.instances?.[nativeTarget]) && !nativeCliAuthorization(req, url, ctx)) {
1912
- json(res, 403, { error: "Windows runtime requires an administrator on the local dashboard" });
1913
- return true;
1914
- }
1915
- if (handleAgentRuntimeChange(req, res, url, ctx))
1916
- return true;
1917
- if (handleNativeInstanceRequest(req, res, url, ctx))
1918
- return true;
1919
- if (handleWindowsCliRequest(req, res, url, ctx))
1920
- return true;
1921
- if (handleRuntimeRequest(req, res, url, ctx))
1922
- return true;
1923
1876
  // #1408: the app shell, for exactly the paths the classifier names (src/web-shell-routes.ts). One page for every
1924
1877
  // route; the client router mounts the panel. A malformed instance name is a 400, an unknown one is the shell (the
1925
1878
  // panel says "not found"), so the response never tells which names exist.
@@ -1928,11 +1881,6 @@ export function handleWebRequest(req, res, url, ctx) {
1928
1881
  json(res, 400, { error: "invalid instance name" });
1929
1882
  return true;
1930
1883
  }
1931
- // AgEnD Hub P1: the Hub's pages live on a Hub's own listener (slice 1), never on this fleet's: the ordinary not-found.
1932
- if (shell?.kind === "shell" && shell.route.panel === "hub") {
1933
- json(res, 404, { error: "not found" });
1934
- return true;
1935
- }
1936
1884
  if (shell?.kind === "shell") {
1937
1885
  serveAppShell(req, res, ctx, "full");
1938
1886
  return true;
@@ -1980,45 +1928,7 @@ export function handleWebRequest(req, res, url, ctx) {
1980
1928
  json(res, 400, { error: "backend (and optional instance) required" });
1981
1929
  return true;
1982
1930
  }
1983
- const runtime = url.searchParams.get("runtime"), refresh = url.searchParams.get("refresh");
1984
- const machineId = url.searchParams.get("machineId");
1985
- if (machineId !== null && (!/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(machineId) || runtime === "wsl")) {
1986
- json(res, 400, { error: "Invalid model runtime machine" });
1987
- return true;
1988
- }
1989
- if ((runtime !== null && runtime !== "wsl" && runtime !== "windows") || (refresh !== null && refresh !== "1")) {
1990
- json(res, 400, { error: "Invalid model catalog options" });
1991
- return true;
1992
- }
1993
- if (handleNativeModelCatalog(req, res, url, ctx))
1994
- return true;
1995
- const models = ctx.modelCatalogFor?.(backend, instance) ?? [];
1996
- const answerCatalog = () => {
1997
- if (backend === "claude-code" && !models.length) {
1998
- const version = ctx.backendAvailabilityRows?.().find(row => row.backend === backend)?.version;
1999
- json(res, 200, { backend, models: claudeDocumentedModels(version), source: "official-catalog" });
2000
- }
2001
- else
2002
- json(res, 200, { backend, models });
2003
- };
2004
- // The existing catalog belongs to this instance/account and always wins.
2005
- if (models.length || !ctx.cliModelCatalogFor) {
2006
- answerCatalog();
2007
- return true;
2008
- }
2009
- const canAnswer = () => !res.headersSent && !res.destroyed && !res.writableEnded && stillAuthorized(req, res, url, ctx);
2010
- void (async () => {
2011
- const cliModels = await ctx.cliModelCatalogFor?.(backend, instance) ?? [];
2012
- if (!canAnswer())
2013
- return;
2014
- if (cliModels.length)
2015
- json(res, 200, { backend, models: cliModels, source: "cli-cache" });
2016
- else
2017
- answerCatalog();
2018
- })().catch(() => {
2019
- if (canAnswer())
2020
- json(res, 503, { error: "CLI model cache unavailable" });
2021
- });
1931
+ json(res, 200, { backend, models: ctx.modelCatalogFor?.(backend, instance) ?? [] });
2022
1932
  return true;
2023
1933
  }
2024
1934
  if (method === "GET" && path === "/ui/backends") {
@@ -2224,112 +2134,6 @@ export function handleWebRequest(req, res, url, ctx) {
2224
2134
  json(res, 200, { messages, boot: ctx.webChatHistory?.boot ?? null, lastId: ctx.webChatHistory?.lastId ?? 0, ...(allHidden ? { allHidden: true } : {}) });
2225
2135
  return true;
2226
2136
  }
2227
- // ── #3212 PR 1: Settings → Agents → Accounts (read-only) ─────────────────────────────────
2228
- // Each CLI's default sign-in and credential profiles, who uses them and their weekly usage. Names, states, the masked
2229
- // identity and the host login command (which, as in the sign-in list, names the profile's folder) — no credential or
2230
- // full e-mail: only for the fleet's local admin session — never the public link, a guest, a token or the gateway (the
2231
- // same rule as the sign-in list it extends).
2232
- if (method === "GET" && path === "/ui/accounts") {
2233
- res.setHeader("Cache-Control", "private, no-store");
2234
- if (gatewayRequestContext(req)) {
2235
- json(res, 404, { error: "not_found" });
2236
- return true;
2237
- }
2238
- const localAdmin = () => {
2239
- const v = evaluateWebRequest(req, url, ctx.webToken ?? null, ctx.webSessions, { touch: false });
2240
- return v.kind === "allow" && v.via === "session" && v.session.tier === "admin" && v.session.surface === "local" ? v.session : null;
2241
- };
2242
- const who = localAdmin();
2243
- if (!who) {
2244
- json(res, 403, { error: "accounts_need_a_local_admin" });
2245
- return true;
2246
- }
2247
- if (typeof ctx.accountsView !== "function") {
2248
- json(res, 404, { error: "not_found" });
2249
- return true;
2250
- }
2251
- void ctx.accountsView().then(view => {
2252
- if (localAdmin()?.handle !== who.handle) {
2253
- json(res, 403, { error: "accounts_need_a_local_admin" });
2254
- return;
2255
- }
2256
- json(res, 200, view);
2257
- }, err => { ctx.logger.error({ err: err.message }, "Accounts view failed"); json(res, 500, { error: "could not read the accounts" }); });
2258
- return true;
2259
- }
2260
- // ── #3153 P1: an agent's Files / Changes (read-only) ─────────────────────────────────
2261
- // The fleet's local admin session only: never the public link, a guest, a token or a connection from outside. One
2262
- // agent's own working directory (agent-workspace.ts confines and filters every path); not General or a coordinator
2263
- // (they work in the fleet's own directory), not an agent on another machine.
2264
- if (method === "GET" && path === "/ui/workspace") {
2265
- res.setHeader("Cache-Control", "private, no-store");
2266
- res.setHeader("X-Content-Type-Options", "nosniff");
2267
- if (gatewayRequestContext(req)) {
2268
- json(res, 404, { error: "not_found" });
2269
- return true;
2270
- }
2271
- const localAdmin = () => {
2272
- const v = evaluateWebRequest(req, url, ctx.webToken ?? null, ctx.webSessions, { touch: false });
2273
- return v.kind === "allow" && v.via === "session" && v.session.tier === "admin" && v.session.surface === "local" ? v.session : null;
2274
- };
2275
- const who = localAdmin();
2276
- if (!who) {
2277
- json(res, 403, { error: "workspace_needs_a_local_admin" });
2278
- return true;
2279
- }
2280
- const p = url.searchParams, instance = p.get("instance") ?? "", op = p.get("op") ?? "";
2281
- const cfg = ctx.fleetConfig?.instances && Object.hasOwn(ctx.fleetConfig.instances, instance) ? ctx.fleetConfig.instances[instance] : undefined;
2282
- if (!cfg) {
2283
- json(res, 404, { error: "not_found" });
2284
- return true;
2285
- }
2286
- const offered = !isGeneralInstance(ctx.fleetConfig, instance) && resolveToolSet(cfg, instance) !== "coordinator"
2287
- && cfg.runtime !== "windows" && !cfg.machine_id;
2288
- if (!offered) {
2289
- json(res, 404, { error: "workspace_not_offered" });
2290
- return true;
2291
- }
2292
- if (!["changes", "list", "file", "image"].includes(op)) {
2293
- json(res, 400, { error: "op: changes | list | file | image" });
2294
- return true;
2295
- }
2296
- const workDir = String(cfg.working_directory ?? "").replace(/^~(?=$|\/)/, process.env.HOME ?? "~");
2297
- void (async () => {
2298
- try {
2299
- const ws = await workspaceRoot(workDir, getAgendHome());
2300
- // The session must still be the same one when the answer goes out (it may have ended while git ran).
2301
- const answer = async () => {
2302
- if (op === "changes")
2303
- return { kind: "json", body: await workspaceChanges(ws) };
2304
- if (op === "list")
2305
- return { kind: "json", body: await workspaceList(ws, p.get("path") ?? "") };
2306
- if (op === "file")
2307
- return { kind: "json", body: await workspaceFile(ws, p.get("path")) };
2308
- return { kind: "image", body: await workspaceImage(ws, p.get("path")) };
2309
- };
2310
- const out = await answer();
2311
- if (localAdmin()?.handle !== who.handle) {
2312
- json(res, 403, { error: "workspace_needs_a_local_admin" });
2313
- return;
2314
- }
2315
- if (out.kind === "image") {
2316
- res.writeHead(200, { "Content-Type": out.body.mime, "Content-Length": String(out.body.bytes.length), "Content-Security-Policy": "default-src 'none'; sandbox" });
2317
- res.end(out.body.bytes);
2318
- return;
2319
- }
2320
- json(res, 200, out.body);
2321
- }
2322
- catch (err) {
2323
- if (err instanceof WorkspaceError) {
2324
- json(res, err.code === "not_found" || err.code === "not_a_directory" ? 404 : 403, { error: err.code });
2325
- return;
2326
- }
2327
- ctx.logger.error({ err: err.message, instance }, "Workspace read failed");
2328
- json(res, 500, { error: "could not read the folder" });
2329
- }
2330
- })();
2331
- return true;
2332
- }
2333
2137
  // ── #1218: the Log tab ─────────────────────────────────
2334
2138
  // An instance's steps, read on demand from its own transcript (log-service.ts). Read-only, and offered on the public
2335
2139
  // link on purpose (the user's decision): the same masking applies to every viewer. Passive (web-auth.ts).
@@ -3123,203 +2927,6 @@ export function handleWebRequest(req, res, url, ctx) {
3123
2927
  });
3124
2928
  return true;
3125
2929
  }
3126
- // ── #3008: connections from outside (a web-only fleet) ──
3127
- // GET /ui/outside: the state (any admin; over the outside link too, read-only). Everything that changes it is this
3128
- // computer's admin's, on this computer (the fleet asks the live session each time; the public link refuses these
3129
- // routes outright): POST /ui/outside/enroll (a new secret, shown once), POST /ui/outside/enroll/confirm {code},
3130
- // POST /ui/outside/remove, POST /ui/outside/switch {on}. Never a guest (not in GUEST_ROUTES).
3131
- if (method === "GET" && path === "/ui/outside") {
3132
- res.setHeader("Cache-Control", "no-store");
3133
- json(res, 200, ctx.webOutsideStatus?.(req) ?? { webOnly: false, here: false, enrolled: false, enrolledAt: null, outside: false, pausedForMs: 0, link: null });
3134
- return true;
3135
- }
3136
- if (method === "POST" && (path === "/ui/outside/enroll" || path === "/ui/outside/enroll/confirm" || path === "/ui/outside/remove" || path === "/ui/outside/switch")) {
3137
- if (gatewayRequestContext(req)) {
3138
- json(res, 403, { error: "outside_not_here" });
3139
- return true;
3140
- }
3141
- (async () => {
3142
- let body;
3143
- try {
3144
- body = await parseBody(req);
3145
- }
3146
- catch {
3147
- json(res, 400, { error: "Invalid JSON" });
3148
- return;
3149
- }
3150
- if (!permitWebContinuation(req, res, ctx))
3151
- return;
3152
- res.setHeader("Cache-Control", "no-store");
3153
- if (path === "/ui/outside/enroll") {
3154
- const r = ctx.webOutsideBeginEnrollment?.(req) ?? null;
3155
- if (!r) {
3156
- json(res, 403, { error: "outside_not_here" });
3157
- return;
3158
- }
3159
- json(res, 200, r);
3160
- return;
3161
- }
3162
- if (path === "/ui/outside/enroll/confirm") {
3163
- const code = body && typeof body === "object" ? body.code : undefined;
3164
- if (typeof code !== "string" || code.length > 32) {
3165
- json(res, 400, { error: "code required" });
3166
- return;
3167
- }
3168
- const r = ctx.webOutsideConfirmEnrollment?.(req, code) ?? "not_here";
3169
- json(res, r === "ok" ? 200 : r === "not_here" ? 403 : r === "unsaved" ? 503 : 400, r === "ok" ? { ok: true } : { error: r === "not_here" ? "outside_not_here" : r });
3170
- return;
3171
- }
3172
- if (path === "/ui/outside/remove") {
3173
- const r = ctx.webOutsideRemove?.(req) ?? "not_here";
3174
- json(res, r === "ok" ? 200 : r === "unsaved" ? 503 : 403, r === "ok" ? { ok: true } : { error: r === "unsaved" ? "unsaved" : "outside_not_here" });
3175
- return;
3176
- }
3177
- const on = body && typeof body === "object" ? body.on : undefined;
3178
- if (typeof on !== "boolean") {
3179
- json(res, 400, { error: "on must be true or false" });
3180
- return;
3181
- }
3182
- const r = ctx.webOutsideSwitch?.(req, on) ?? "not_here";
3183
- json(res, r === "ok" ? 200 : r === "not_here" ? 403 : r === "unsaved" ? 503 : 409, r === "ok" ? { ok: true } : { error: r === "not_here" ? "outside_not_here" : r });
3184
- })().catch(err => {
3185
- ctx.logger.error({ err: err.message }, "Outside connections change failed");
3186
- try {
3187
- json(res, 500, { error: "outside_failed" });
3188
- }
3189
- catch { /* already answered */ }
3190
- });
3191
- return true;
3192
- }
3193
- // ── Refs #3061 (P2a): signing a new device in with its 8-character code (a web-only fleet) ──
3194
- // GET /ui/devices: whether this is such a fleet and whether THIS session may approve (it is the verified owner — this
3195
- // computer's admin here, or signed in from outside with the authenticator's code). POST /ui/devices/lookup {code}: the
3196
- // request that code names, for the confirm screen; POST /ui/devices/approve {code} and /ui/devices/deny {code}. Every
3197
- // one asks the live session again in the fleet (webDeviceLoginAct) and answers 403 `owner_required` to anyone else —
3198
- // a guest, a LAN or device-approved session, the CLI's header token. Over the public link only for the owner who
3199
- // signed in from outside. A decision hands the new device nothing: its session is made by its own next poll.
3200
- if (method === "GET" && path === "/ui/devices") {
3201
- res.setHeader("Cache-Control", "no-store");
3202
- json(res, 200, ctx.webDevicesStatus?.(req) ?? { webOnly: false, owner: false, devices: [] });
3203
- return true;
3204
- }
3205
- // Refs #3061 (P2b): POST /ui/devices/signout {handle} — the verified owner ends another signed-in device. The same
3206
- // authority as approving one, asked of the live session in the fleet after the body is in (webDeviceSignOut answers
3207
- // 403 `owner_required` to anyone else before it looks the handle up). Over the public link only for the owner signed in
3208
- // from outside, like approving.
3209
- if (method === "POST" && path === "/ui/devices/signout") {
3210
- const act = ctx.webDeviceSignOut?.bind(ctx);
3211
- if (!act) {
3212
- json(res, 404, { error: "not_found" });
3213
- return true;
3214
- }
3215
- (async () => {
3216
- let body;
3217
- try {
3218
- body = await parseBody(req);
3219
- }
3220
- catch {
3221
- json(res, 400, { error: "Invalid JSON" });
3222
- return;
3223
- }
3224
- if (!permitWebContinuation(req, res, ctx))
3225
- return;
3226
- const handle = body && typeof body === "object" ? body.handle : undefined;
3227
- if (typeof handle !== "string" || !/^[0-9a-f]{16}$/.test(handle)) {
3228
- json(res, 400, { error: "handle required" });
3229
- return;
3230
- }
3231
- res.setHeader("Cache-Control", "no-store");
3232
- const r = act(req, handle);
3233
- json(res, r.status, r.body);
3234
- })().catch(err => {
3235
- ctx.logger.error({ err: err.message }, "Device sign-out failed");
3236
- try {
3237
- json(res, 500, { error: "devices_failed" });
3238
- }
3239
- catch { /* already answered */ }
3240
- });
3241
- return true;
3242
- }
3243
- if (method === "POST" && (path === "/ui/devices/lookup" || path === "/ui/devices/approve" || path === "/ui/devices/deny")) {
3244
- const act = ctx.webDeviceLoginAct?.bind(ctx);
3245
- if (!act) {
3246
- json(res, 404, { error: "not_found" });
3247
- return true;
3248
- }
3249
- const op = path === "/ui/devices/lookup" ? "lookup" : path === "/ui/devices/approve" ? "approve" : "deny";
3250
- (async () => {
3251
- let body;
3252
- try {
3253
- body = await parseBody(req);
3254
- }
3255
- catch {
3256
- json(res, 400, { error: "Invalid JSON" });
3257
- return;
3258
- }
3259
- if (!permitWebContinuation(req, res, ctx))
3260
- return;
3261
- const code = body && typeof body === "object" ? body.code : undefined;
3262
- if (typeof code !== "string" || code.length > 32) {
3263
- json(res, 400, { error: "code required" });
3264
- return;
3265
- }
3266
- res.setHeader("Cache-Control", "no-store");
3267
- const r = act(req, op, code);
3268
- if (typeof r.body.retryAfterMs === "number")
3269
- res.setHeader("Retry-After", String(Math.ceil(r.body.retryAfterMs / 1000)));
3270
- json(res, r.status, r.body);
3271
- })().catch(err => {
3272
- ctx.logger.error({ err: err.message }, "New device approval failed");
3273
- try {
3274
- json(res, 500, { error: "devices_failed" });
3275
- }
3276
- catch { /* already answered */ }
3277
- });
3278
- return true;
3279
- }
3280
- // ── alpha.2 (M-2300): an agent's Windows request, decided by a web-only fleet's owner in Needs you ──
3281
- // The list is the owner's only: anyone else (a guest, a LAN or public-link session, a chat fleet's admin) reads an
3282
- // empty one, so nothing actionable ever reaches them. The stream's `agent_proposals` event carries nothing.
3283
- if (method === "GET" && path === "/ui/agent-proposals") {
3284
- const list = ctx.webAgentProposals?.(req) ?? null;
3285
- json(res, 200, { owner: list !== null, proposals: list ?? [] });
3286
- return true;
3287
- }
3288
- const proposalMatch = method === "POST" ? /^\/ui\/agent-proposals\/([0-9a-f]{32})$/.exec(path) : null;
3289
- if (proposalMatch) {
3290
- if (!ctx.webDecideAgentProposal) {
3291
- json(res, 404, { error: "not_found" });
3292
- return true;
3293
- }
3294
- const decide = ctx.webDecideAgentProposal.bind(ctx), id = proposalMatch[1];
3295
- (async () => {
3296
- let body;
3297
- try {
3298
- body = await parseBody(req);
3299
- }
3300
- catch {
3301
- json(res, 400, { error: "Invalid JSON" });
3302
- return;
3303
- }
3304
- if (!permitWebContinuation(req, res, ctx))
3305
- return;
3306
- const decision = body && typeof body === "object" ? body.decision : undefined;
3307
- if (decision !== "confirm" && decision !== "reject") {
3308
- json(res, 400, { error: "decision must be confirm or reject" });
3309
- return;
3310
- }
3311
- const r = await decide(req, id, decision);
3312
- if (!res.headersSent && !res.destroyed)
3313
- json(res, r.status, r.body);
3314
- })().catch(err => {
3315
- ctx.logger.error({ err: err.message }, "Agent request decision failed");
3316
- try {
3317
- json(res, 500, { error: "decide_failed" });
3318
- }
3319
- catch { /* already answered */ }
3320
- });
3321
- return true;
3322
- }
3323
2930
  if (method === "POST" && path === "/ui/needs/ack") {
3324
2931
  if (!ctx.acknowledgeNeedsItem) {
3325
2932
  json(res, 404, { error: "Nothing to acknowledge here" });
@@ -3445,20 +3052,6 @@ export function handleWebRequest(req, res, url, ctx) {
3445
3052
  json(res, 400, { error: "instance and command required" });
3446
3053
  return;
3447
3054
  }
3448
- if (isNativeExecInstance(ctx.fleetConfig?.instances[instance])) {
3449
- json(res, 400, { error: "This runtime does not support CLI control commands; use Agent settings or Cancel" });
3450
- return;
3451
- }
3452
- if (isNativePaneInstance(ctx.fleetConfig?.instances[instance])) {
3453
- if (!nativeCliAuthorization(req, url, ctx)) {
3454
- json(res, 403, { error: "Windows runtime requires an administrator on the local dashboard" });
3455
- return;
3456
- }
3457
- if (command !== "model") {
3458
- json(res, 400, { error: "This persistent Windows runtime supports the model command; use its shared controls for other actions" });
3459
- return;
3460
- }
3461
- }
3462
3055
  if (body.args !== undefined && str(body.args, MAX_COMMAND_ARGS) === undefined) {
3463
3056
  json(res, 400, { error: "args too long" });
3464
3057
  return;
@@ -3727,10 +3320,6 @@ export function handleWebRequest(req, res, url, ctx) {
3727
3320
  const body = await parseBody(req);
3728
3321
  if (!permitWebContinuation(req, res, ctx))
3729
3322
  return;
3730
- if (body?.runtime === "windows") {
3731
- await createNativeInstance(req, res, url, ctx, body);
3732
- return;
3733
- }
3734
3323
  const v = validateArgs(CreateInstanceArgs, body, "create_instance");
3735
3324
  if (!v.ok) {
3736
3325
  json(res, 400, { error: v.error });
@@ -4495,9 +4084,6 @@ function uploadRecipient(ctx, name) {
4495
4084
  /** Closed, path-free explanations; arbitrary launch errors stay in the host log. */
4496
4085
  function webDeliveryFailure(err) {
4497
4086
  const message = err instanceof Error ? err.message : "";
4498
- // M-2297: the per-PC agent limit — say so, with the agents holding its slots (names only: no path, no id).
4499
- if (err instanceof MachineSlotLimitError)
4500
- return { reason: "machine_limit", error: message, limit: err.limit, holders: err.holders.map(h => ({ name: h.name, unknown: h.unknown })) };
4501
4087
  if (/No warm slot is free/.test(message))
4502
4088
  return { reason: "wake_capacity", error: "No slot is free to wake this instance. Retry when another instance is idle." };
4503
4089
  if (/login|log in|sign in|\bauth(?:entication|orization)?\b|credential|api.?key/i.test(message))
@@ -4545,15 +4131,6 @@ function handleSendMessage(req, res, ctx) {
4545
4131
  return;
4546
4132
  }
4547
4133
  const { instance, message: typed, attachments = [], replyTo, clientId } = parsed.data;
4548
- const native = isWindowsInstance(ctx.fleetConfig?.instances[instance]);
4549
- if (native && !nativeCliAuthorization(req, new URL(req.url ?? "/", "http://localhost"), ctx)) {
4550
- json(res, 403, { error: "Windows runtime requires an administrator on the local dashboard" });
4551
- return;
4552
- }
4553
- if (native && attachments.length) {
4554
- json(res, 400, { error: "Attachments are not supported by this runtime yet" });
4555
- return;
4556
- }
4557
4134
  // #1920 step 2b: a guest writes only to an in-scope instance, while guests may chat, and never a command.
4558
4135
  const guest = guestRequestOf(req);
4559
4136
  const refused = guestChatRefusal(guest, instance);
@@ -4607,16 +4184,6 @@ function handleSendMessage(req, res, ctx) {
4607
4184
  break;
4608
4185
  }
4609
4186
  }
4610
- const locationHold = ctx.generalLocationDeliveryHold?.(instance);
4611
- if (locationHold) {
4612
- const messageId = newWebMessageId(), ts = new Date().toISOString();
4613
- // Settle this client ID as answered. A Retry after reconnect must never queue its old input.
4614
- acceptedId = messageId;
4615
- ctx.emitSseEvent("message", { instance, sender: person.name, role: "user", text: typed, ts, messageId, ...(person.bound ? { from: person.voterKey } : {}), ...(clientId ? { clientId } : {}) });
4616
- ctx.emitSseEvent("message", { instance, role: "status", sender: "AgEnD", text: locationHold, ts, messageId: newWebMessageId() });
4617
- json(res, 200, { sent: true, messageId, serviceResponse: true });
4618
- return;
4619
- }
4620
4187
  let files = [];
4621
4188
  if (attachments.length > 0) {
4622
4189
  const taken = ctx.webFiles?.takeForMessage(instance, attachments);
@@ -4639,39 +4206,15 @@ function handleSendMessage(req, res, ctx) {
4639
4206
  // Recheck the same admission all the way through a wake, before the facade's actual IPC handoff.
4640
4207
  const requestUrl = new URL(req.url ?? "/", "http://localhost");
4641
4208
  const admission = admissionOf(req, requestUrl, ctx);
4642
- // The sender's authority, without the request's own lifetime: the same admission, the same guest still allowed, the
4643
- // instance still registered (a Windows one still Windows). A Windows turn is journaled before /ui/send answers and its
4644
- // process starts after, so the bridge rechecks this one (a revoke in between still stops it); never res, which a
4645
- // finished response marks destroyed (S-30: every web-chat turn to a Windows agent was refused).
4646
- const authorityCurrent = () => admission !== null && admissionOf(req, requestUrl, ctx) === admission
4209
+ const stillCurrent = () => !res.destroyed && admission !== null && admissionOf(req, requestUrl, ctx) === admission
4647
4210
  && (!guest || (guest.current() && !guestChatRefusal(guest, instance)))
4648
- && (native ? isWindowsInstance(ctx.fleetConfig?.instances[instance]) && nativeCliAuthorization(req, requestUrl, ctx)
4649
- : registered ? registeredChatInstance(ctx, instance) : ctx.instanceIpcClients.has(instance));
4650
- const stillCurrent = () => !res.destroyed && authorityCurrent();
4211
+ && (registered ? registeredChatInstance(ctx, instance) : ctx.instanceIpcClients.has(instance));
4651
4212
  const message = typed;
4652
4213
  // #1939 S1: what the receipt records about who authorized it (observe only: agents still read web as recognition).
4653
4214
  const { authority } = confirmAfterBody(arrival, webAuthorityOf(req, new URL(req.url ?? "/", "http://localhost"), ctx, instance));
4654
4215
  const ts = new Date().toISOString();
4655
4216
  // The id the agent is given, and the one its delivery reports come back under: the page's ticks.
4656
- const nativeRequestId = isNativeExecInstance(ctx.fleetConfig?.instances[instance]) ? (() => {
4657
- if (!clientId)
4658
- return randomUUID();
4659
- const hash = createHash("sha256").update(`agend-native-web\0${WebSendDedupe.key(person.key, instance, clientId)}`).digest("hex");
4660
- return `${hash.slice(0, 8)}-${hash.slice(8, 12)}-4${hash.slice(13, 16)}-8${hash.slice(17, 20)}-${hash.slice(20, 32)}`;
4661
- })() : undefined;
4662
- const messageId = nativeRequestId ? `native:${nativeRequestId}:user` : newWebMessageId();
4663
- if (nativeRequestId && ctx.nativeInstanceRuntime) {
4664
- const previous = ctx.nativeInstanceRuntime().get(instance)?.turns.find(turn => turn.id === nativeRequestId);
4665
- if (previous) {
4666
- if (previous.prompt !== delivery.text) {
4667
- json(res, 409, { error: "clientId belongs to a different message" });
4668
- return;
4669
- }
4670
- acceptedId = messageId;
4671
- json(res, 200, { sent: true, messageId, repeated: true });
4672
- return;
4673
- }
4674
- }
4217
+ const messageId = newWebMessageId();
4675
4218
  // Use real Telegram context so daemon's lastChatId/lastThreadId are set,
4676
4219
  // enabling reply tool even when first message comes from Web UI.
4677
4220
  // Pure Web UI mode (no channel config) leaves these empty; the agent's reply then comes back to the
@@ -4717,12 +4260,11 @@ function handleSendMessage(req, res, ctx) {
4717
4260
  let delivered;
4718
4261
  try {
4719
4262
  const deliver = (name, payload) => ctx.deliverHumanToInstance
4720
- ? ctx.deliverHumanToInstance(name, payload, webHumanOrigin(false, authority), typed, { stillCurrent, ...(native ? { authorityCurrent } : {}) })
4721
- : ctx.deliverToInstance(name, payload, { stillCurrent, ...(native ? { authorityCurrent } : {}) });
4263
+ ? ctx.deliverHumanToInstance(name, payload, webHumanOrigin(false, authority), typed, { stillCurrent })
4264
+ : ctx.deliverToInstance(name, payload, { stillCurrent });
4722
4265
  delivered = await deliver(instance, {
4723
4266
  type: "fleet_inbound",
4724
4267
  content: delivery.text,
4725
- ...(nativeRequestId ? { requestId: nativeRequestId } : {}),
4726
4268
  targetSession: instance,
4727
4269
  meta: {
4728
4270
  chat_id: groupId ? String(groupId) : "",
@@ -5119,16 +4661,6 @@ function shellHtmlTag(ctx, mode, viewer) {
5119
4661
  function shellOwnerCss(ctx, mode, viewer) {
5120
4662
  return mode === "full" && !viewer?.guest && viewer?.person !== null && viewer?.person !== undefined && ctx.ownerCss ? ctx.ownerCss.active(viewer.person) : null;
5121
4663
  }
5122
- /**
5123
- * AgEnD Hub P1 (docs/design/hub.md, docs/design/hub-ui-client.md): the page's Hub mark — presentation only, never
5124
- * authority, set by the listener that serves the page (never a client's choice): `member` on this fleet's listener when
5125
- * `hub_member.enabled`, never over the public link. `hub` is only the Hub listener's own workspace page
5126
- * (serveHubWorkspaceShell). Nothing otherwise: no Hub UI is drawn and no Hub module loads.
5127
- */
5128
- function hubBodyAttrs(req, config) {
5129
- // hub.md §1: member handlers are local-owner-only and unavailable through the public gateway — no member mark there.
5130
- return hubModeOf(config).member && !gatewayRequestContext(req) ? ' data-hub="member"' : "";
5131
- }
5132
4664
  function guestBodyAttrs(ctx, owner, attr) {
5133
4665
  const badge = ctx.guestBadge?.(owner);
5134
4666
  const trusted = ctx.guestTrusted?.(owner) ? ' data-guest-level="trusted"' : "";
@@ -5165,47 +4697,12 @@ function shellBodyTag(req, ctx, mode, viewer) {
5165
4697
  + `${gatewayRequestContext(req) ? ' data-public-link="1"' : ""}`
5166
4698
  // #2478: search is offered over the public link unless web.search.public_link is false (the page then shows no entry).
5167
4699
  + `${gatewayRequestContext(req) && ctx.fleetConfig?.web?.search?.public_link === false ? ' data-search-link="0"' : ""}`
5168
- // AgEnD Hub P1 (docs/design/hub-ui-client.md): the Hub's marks — only when a switch is on, never on a guest's page.
5169
- + `${mode === "full" && !viewer?.guest ? hubBodyAttrs(req, ctx.fleetConfig) : ""}`
5170
4700
  // #1920 phase 3: a guest's page — the shell shows only what a guest may use, and who it is signed in as.
5171
4701
  + `${mode === "full" && viewer?.guest && viewer.owner ? guestBodyAttrs(ctx, viewer.owner, attr) : ""}>`;
5172
4702
  }
5173
- /**
5174
- * AgEnD Hub P1, slice 3: the app shell as a Hub's own workspace (served only by the Hub's listener, at its own origin).
5175
- * It boots Hub-only (app.js: no fleet stream, chat, Needs you, preferences or themes). Nothing of the request is read
5176
- * — no cookie (the fleet's or the Hub's), no session, no Host: who is signed in is the page's own /hub/v1/session.
5177
- */
5178
- export const HUB_SHELL_DROPS = '<script src="/assets/agend-auth.js"></script>';
5179
- export function serveHubWorkspaceShell(res, hub) {
5180
- try {
5181
- // Without the fleet's fetch wrapper (agend-auth.js): it reads the fleet's /auth/session for a CSRF value and answers
5182
- // a 401 with the fleet's "session ended" banner. The Hub's pages carry the Hub's own CSRF (hub-client.js).
5183
- const html = readFileSync(join(__dirname, "ui", "app.html"), "utf-8").replace(HUB_SHELL_DROPS, "");
5184
- const attr = (v) => v.replace(/[&<>"']/g, c => `&#${c.charCodeAt(0)};`);
5185
- const name = hubNameOf(hub.name);
5186
- const preview = hub.preview;
5187
- const previewAttrs = preview ? ` data-dashboard-origin="${attr(preview.dashboardOrigin)}"`
5188
- + (preview.previewOrigin && preview.bootId ? ` data-preview-origin="${attr(preview.previewOrigin)}" data-preview-boot="${attr(preview.bootId)}"`
5189
- : ` data-preview-reason-code="${attr(preview.reasonCode ?? "notOffered")}" data-preview-reason="${attr(preview.reason ?? "")}"`) : "";
5190
- const body = `<body data-mode="full" data-web-transport="none" data-usage-panel="0" data-log-tab="0" data-hub="hub"${name ? ` data-hub-name="${attr(name)}"` : ""}${previewAttrs}>`;
5191
- sendPanelHtml(res, withAppIconLinks(html).replace("<body>", body), 200, { "Cache-Control": "no-store" }, { mediaSrc: "'none'", ...(preview?.previewOrigin ? { frameSrc: `${preview.previewOrigin}/frame` } : {}) });
5192
- }
5193
- catch {
5194
- json(res, 500, { error: "app.html not found" });
5195
- }
5196
- }
5197
4703
  /** The app shell page for one entry, under the panels' CSP; it may frame exactly <preview origin>/frame, and only
5198
4704
  * when this load chose one. */
5199
- /**
5200
- * The app shell page. `opts.hubWorkspace`: the page is a Hub's own workspace (slice 1's Hub listener only — the fleet's
5201
- * listener never passes it), so it is drawn as the Hub shell.
5202
- */
5203
- export function serveAppShell(req, res, ctx, mode, opts = {}) {
5204
- // A Hub workspace is drawn from nothing of this fleet's: no fleet cookie, session, preference or preview is read.
5205
- if (opts.hubWorkspace) {
5206
- serveHubWorkspaceShell(res, opts.hubWorkspace);
5207
- return;
5208
- }
4705
+ export function serveAppShell(req, res, ctx, mode) {
5209
4706
  try {
5210
4707
  const html = readFileSync(join(__dirname, "ui", "app.html"), "utf-8");
5211
4708
  const viewer = mode === "full" ? prefsViewer(req, new URL(req.url ?? "/", "http://localhost"), ctx) : null;