@songsid/agend 2.3.5-alpha.4 → 2.3.5-alpha.5

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 (838) hide show
  1. package/THIRD_PARTY_NOTICES.md +52 -0
  2. package/dist/accounts-view.d.ts +97 -0
  3. package/dist/accounts-view.js +116 -0
  4. package/dist/accounts-view.js.map +1 -0
  5. package/dist/agent-cli-instructions.md +1 -1
  6. package/dist/agent-credentials.d.ts +24 -0
  7. package/dist/agent-credentials.js +66 -0
  8. package/dist/agent-credentials.js.map +1 -0
  9. package/dist/agent-endpoint.d.ts +3 -1
  10. package/dist/agent-endpoint.js +13 -0
  11. package/dist/agent-endpoint.js.map +1 -1
  12. package/dist/agent-file-read.js +1 -1
  13. package/dist/agent-file-read.js.map +1 -1
  14. package/dist/agent-runtime-change.d.ts +3 -1
  15. package/dist/agent-runtime-change.js +15 -3
  16. package/dist/agent-runtime-change.js.map +1 -1
  17. package/dist/agent-workspace.d.ts +93 -0
  18. package/dist/agent-workspace.js +353 -0
  19. package/dist/agent-workspace.js.map +1 -0
  20. package/dist/auth-api.d.ts +27 -0
  21. package/dist/auth-api.js +164 -3
  22. package/dist/auth-api.js.map +1 -1
  23. package/dist/authority/session-authorizations.d.ts +28 -4
  24. package/dist/authority/session-authorizations.js +63 -17
  25. package/dist/authority/session-authorizations.js.map +1 -1
  26. package/dist/backend/antigravity.js +3 -1
  27. package/dist/backend/antigravity.js.map +1 -1
  28. package/dist/backend/codex-footer-hints.d.ts +3 -0
  29. package/dist/backend/codex-footer-hints.js +14 -0
  30. package/dist/backend/codex-footer-hints.js.map +1 -1
  31. package/dist/backend/codex-metadata.d.ts +14 -0
  32. package/dist/backend/codex-metadata.js +45 -0
  33. package/dist/backend/codex-metadata.js.map +1 -1
  34. package/dist/backend/codex-quota-history.d.ts +7 -0
  35. package/dist/backend/codex-quota-history.js +57 -0
  36. package/dist/backend/codex-quota-history.js.map +1 -0
  37. package/dist/backend/codex-session-lookup.d.ts +6 -0
  38. package/dist/backend/codex-session-lookup.js +1 -1
  39. package/dist/backend/codex-session-lookup.js.map +1 -1
  40. package/dist/backend/codex-speed.d.ts +14 -0
  41. package/dist/backend/codex-speed.js +35 -0
  42. package/dist/backend/codex-speed.js.map +1 -0
  43. package/dist/backend/codex.d.ts +7 -0
  44. package/dist/backend/codex.js +78 -15
  45. package/dist/backend/codex.js.map +1 -1
  46. package/dist/backend/grok-weekly-reset.d.ts +24 -0
  47. package/dist/backend/grok-weekly-reset.js +95 -0
  48. package/dist/backend/grok-weekly-reset.js.map +1 -0
  49. package/dist/backend/grok.d.ts +30 -1
  50. package/dist/backend/grok.js +301 -54
  51. package/dist/backend/grok.js.map +1 -1
  52. package/dist/backend/kiro.d.ts +3 -0
  53. package/dist/backend/kiro.js +50 -2
  54. package/dist/backend/kiro.js.map +1 -1
  55. package/dist/backend/muse.js +5 -3
  56. package/dist/backend/muse.js.map +1 -1
  57. package/dist/backend/native-pane.d.ts +3 -1
  58. package/dist/backend/native-pane.js +2 -2
  59. package/dist/backend/native-pane.js.map +1 -1
  60. package/dist/backend/types.d.ts +13 -1
  61. package/dist/backend/types.js +3 -0
  62. package/dist/backend/types.js.map +1 -1
  63. package/dist/build-provenance-cli.d.ts +3 -0
  64. package/dist/build-provenance-cli.js +11 -0
  65. package/dist/build-provenance-cli.js.map +1 -0
  66. package/dist/build-provenance.d.ts +20 -0
  67. package/dist/build-provenance.js +67 -0
  68. package/dist/build-provenance.js.map +1 -0
  69. package/dist/build-provenance.json +1 -0
  70. package/dist/cache-ledger.d.ts +95 -0
  71. package/dist/cache-ledger.js +276 -4
  72. package/dist/cache-ledger.js.map +1 -1
  73. package/dist/cache-service.d.ts +5 -0
  74. package/dist/cache-service.js +16 -4
  75. package/dist/cache-service.js.map +1 -1
  76. package/dist/channel/adapters/discord.js +11 -3
  77. package/dist/channel/adapters/discord.js.map +1 -1
  78. package/dist/channel/adapters/telegram.d.ts +51 -0
  79. package/dist/channel/adapters/telegram.js +235 -17
  80. package/dist/channel/adapters/telegram.js.map +1 -1
  81. package/dist/channel/mcp-tools.js +3 -3
  82. package/dist/channel/mcp-tools.js.map +1 -1
  83. package/dist/channel/types.d.ts +2 -0
  84. package/dist/claude-auth-status.d.ts +48 -0
  85. package/dist/claude-auth-status.js +149 -0
  86. package/dist/claude-auth-status.js.map +1 -0
  87. package/dist/cli.js +138 -37
  88. package/dist/cli.js.map +1 -1
  89. package/dist/config-validator.js +21 -1
  90. package/dist/config-validator.js.map +1 -1
  91. package/dist/cross-instance-notice.d.ts +10 -0
  92. package/dist/cross-instance-notice.js +67 -5
  93. package/dist/cross-instance-notice.js.map +1 -1
  94. package/dist/daemon.d.ts +70 -1
  95. package/dist/daemon.js +547 -25
  96. package/dist/daemon.js.map +1 -1
  97. package/dist/dashboard-permissions.d.ts +8 -0
  98. package/dist/dashboard-permissions.js +16 -0
  99. package/dist/dashboard-permissions.js.map +1 -1
  100. package/dist/delivery-consumed-watch.d.ts +23 -1
  101. package/dist/delivery-consumed-watch.js +30 -3
  102. package/dist/delivery-consumed-watch.js.map +1 -1
  103. package/dist/delivery-reconciliation.d.ts +1 -1
  104. package/dist/delivery-reconciliation.js +1 -1
  105. package/dist/delivery-reconciliation.js.map +1 -1
  106. package/dist/doctor.js +20 -9
  107. package/dist/doctor.js.map +1 -1
  108. package/dist/export-import.d.ts +7 -0
  109. package/dist/export-import.js +44 -10
  110. package/dist/export-import.js.map +1 -1
  111. package/dist/fleet-context.d.ts +2 -0
  112. package/dist/fleet-manager.d.ts +359 -7
  113. package/dist/fleet-manager.js +1365 -90
  114. package/dist/fleet-manager.js.map +1 -1
  115. package/dist/fleet-windows-runtime.d.ts +2 -1
  116. package/dist/fleet-windows-runtime.js +25 -7
  117. package/dist/fleet-windows-runtime.js.map +1 -1
  118. package/dist/general-knowledge/skills/concepts/SKILL.md +425 -0
  119. package/dist/general-knowledge/skills/credential-profiles/SKILL.md +5 -2
  120. package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +1 -0
  121. package/dist/general-knowledge/skills/fleet-health/SKILL.md +2 -2
  122. package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +3 -1
  123. package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +41 -4
  124. package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
  125. package/dist/general-knowledge/skills/tui-effort/SKILL.md +10 -10
  126. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +31 -15
  127. package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
  128. package/dist/general-role.d.ts +1 -1
  129. package/dist/general-role.js +1 -0
  130. package/dist/general-role.js.map +1 -1
  131. package/dist/hub/admission.d.ts +28 -0
  132. package/dist/hub/admission.js +62 -0
  133. package/dist/hub/admission.js.map +1 -0
  134. package/dist/hub/attachments/limits.d.ts +20 -0
  135. package/dist/hub/attachments/limits.js +48 -0
  136. package/dist/hub/attachments/limits.js.map +1 -0
  137. package/dist/hub/attachments/store.d.ts +116 -0
  138. package/dist/hub/attachments/store.js +246 -0
  139. package/dist/hub/attachments/store.js.map +1 -0
  140. package/dist/hub/audit/index.d.ts +62 -0
  141. package/dist/hub/audit/index.js +344 -0
  142. package/dist/hub/audit/index.js.map +1 -0
  143. package/dist/hub/browser-certificate.d.ts +38 -0
  144. package/dist/hub/browser-certificate.js +247 -0
  145. package/dist/hub/browser-certificate.js.map +1 -0
  146. package/dist/hub/buttons-model.d.ts +9 -0
  147. package/dist/hub/buttons-model.js +42 -0
  148. package/dist/hub/buttons-model.js.map +1 -0
  149. package/dist/hub/buttons.d.ts +54 -0
  150. package/dist/hub/buttons.js +346 -0
  151. package/dist/hub/buttons.js.map +1 -0
  152. package/dist/hub/catalog.d.ts +74 -0
  153. package/dist/hub/catalog.js +195 -0
  154. package/dist/hub/catalog.js.map +1 -0
  155. package/dist/hub/client.d.ts +69 -0
  156. package/dist/hub/client.js +300 -0
  157. package/dist/hub/client.js.map +1 -0
  158. package/dist/hub/compose/member.d.ts +139 -0
  159. package/dist/hub/compose/member.js +450 -0
  160. package/dist/hub/compose/member.js.map +1 -0
  161. package/dist/hub/compose/server.d.ts +77 -0
  162. package/dist/hub/compose/server.js +349 -0
  163. package/dist/hub/compose/server.js.map +1 -0
  164. package/dist/hub/compose/views.d.ts +12 -0
  165. package/dist/hub/compose/views.js +4 -0
  166. package/dist/hub/compose/views.js.map +1 -0
  167. package/dist/hub/db.d.ts +56 -0
  168. package/dist/hub/db.js +188 -0
  169. package/dist/hub/db.js.map +1 -0
  170. package/dist/hub/directory/config.d.ts +39 -0
  171. package/dist/hub/directory/config.js +108 -0
  172. package/dist/hub/directory/config.js.map +1 -0
  173. package/dist/hub/directory/directory.d.ts +18 -0
  174. package/dist/hub/directory/directory.js +320 -0
  175. package/dist/hub/directory/directory.js.map +1 -0
  176. package/dist/hub/directory/index.d.ts +7 -0
  177. package/dist/hub/directory/index.js +4 -0
  178. package/dist/hub/directory/index.js.map +1 -0
  179. package/dist/hub/directory/profiles.d.ts +41 -0
  180. package/dist/hub/directory/profiles.js +90 -0
  181. package/dist/hub/directory/profiles.js.map +1 -0
  182. package/dist/hub/directory/types.d.ts +71 -0
  183. package/dist/hub/directory/types.js +14 -0
  184. package/dist/hub/directory/types.js.map +1 -0
  185. package/dist/hub/execution/cli-provider.d.ts +23 -0
  186. package/dist/hub/execution/cli-provider.js +341 -0
  187. package/dist/hub/execution/cli-provider.js.map +1 -0
  188. package/dist/hub/execution/index.d.ts +13 -0
  189. package/dist/hub/execution/index.js +8 -0
  190. package/dist/hub/execution/index.js.map +1 -0
  191. package/dist/hub/execution/model-broker.d.ts +24 -0
  192. package/dist/hub/execution/model-broker.js +208 -0
  193. package/dist/hub/execution/model-broker.js.map +1 -0
  194. package/dist/hub/execution/provider-setup.d.ts +11 -0
  195. package/dist/hub/execution/provider-setup.js +21 -0
  196. package/dist/hub/execution/provider-setup.js.map +1 -0
  197. package/dist/hub/execution/sandbox-runner.d.ts +1 -0
  198. package/dist/hub/execution/sandbox-runner.js +221 -0
  199. package/dist/hub/execution/sandbox-runner.js.map +1 -0
  200. package/dist/hub/execution/service.d.ts +136 -0
  201. package/dist/hub/execution/service.js +459 -0
  202. package/dist/hub/execution/service.js.map +1 -0
  203. package/dist/hub/execution/store.d.ts +61 -0
  204. package/dist/hub/execution/store.js +182 -0
  205. package/dist/hub/execution/store.js.map +1 -0
  206. package/dist/hub/execution/views.d.ts +20 -0
  207. package/dist/hub/execution/views.js +48 -0
  208. package/dist/hub/execution/views.js.map +1 -0
  209. package/dist/hub/http/compose.d.ts +20 -0
  210. package/dist/hub/http/compose.js +518 -0
  211. package/dist/hub/http/compose.js.map +1 -0
  212. package/dist/hub/http/core.d.ts +49 -0
  213. package/dist/hub/http/core.js +124 -0
  214. package/dist/hub/http/core.js.map +1 -0
  215. package/dist/hub/http/deps.d.ts +61 -0
  216. package/dist/hub/http/deps.js +2 -0
  217. package/dist/hub/http/deps.js.map +1 -0
  218. package/dist/hub/http/schema.d.ts +14 -0
  219. package/dist/hub/http/schema.js +80 -0
  220. package/dist/hub/http/schema.js.map +1 -0
  221. package/dist/hub/identity.d.ts +32 -0
  222. package/dist/hub/identity.js +80 -0
  223. package/dist/hub/identity.js.map +1 -0
  224. package/dist/hub/init/browser-certificate.d.ts +9 -0
  225. package/dist/hub/init/browser-certificate.js +78 -0
  226. package/dist/hub/init/browser-certificate.js.map +1 -0
  227. package/dist/hub/init/browser-tls.d.ts +18 -0
  228. package/dist/hub/init/browser-tls.js +62 -0
  229. package/dist/hub/init/browser-tls.js.map +1 -0
  230. package/dist/hub/init/cli.d.ts +3 -0
  231. package/dist/hub/init/cli.js +83 -0
  232. package/dist/hub/init/cli.js.map +1 -0
  233. package/dist/hub/init/directory-certificate.d.ts +24 -0
  234. package/dist/hub/init/directory-certificate.js +222 -0
  235. package/dist/hub/init/directory-certificate.js.map +1 -0
  236. package/dist/hub/init/existing-fleet.d.ts +6 -0
  237. package/dist/hub/init/existing-fleet.js +58 -0
  238. package/dist/hub/init/existing-fleet.js.map +1 -0
  239. package/dist/hub/init/handoff.d.ts +8 -0
  240. package/dist/hub/init/handoff.js +36 -0
  241. package/dist/hub/init/handoff.js.map +1 -0
  242. package/dist/hub/init/identity.d.ts +5 -0
  243. package/dist/hub/init/identity.js +24 -0
  244. package/dist/hub/init/identity.js.map +1 -0
  245. package/dist/hub/init/initializer.d.ts +24 -0
  246. package/dist/hub/init/initializer.js +385 -0
  247. package/dist/hub/init/initializer.js.map +1 -0
  248. package/dist/hub/init/inventory.d.ts +17 -0
  249. package/dist/hub/init/inventory.js +33 -0
  250. package/dist/hub/init/inventory.js.map +1 -0
  251. package/dist/hub/init/layout.d.ts +32 -0
  252. package/dist/hub/init/layout.js +53 -0
  253. package/dist/hub/init/layout.js.map +1 -0
  254. package/dist/hub/init/network.d.ts +18 -0
  255. package/dist/hub/init/network.js +104 -0
  256. package/dist/hub/init/network.js.map +1 -0
  257. package/dist/hub/init/plan-digest.d.ts +5 -0
  258. package/dist/hub/init/plan-digest.js +47 -0
  259. package/dist/hub/init/plan-digest.js.map +1 -0
  260. package/dist/hub/init/prompt.d.ts +26 -0
  261. package/dist/hub/init/prompt.js +110 -0
  262. package/dist/hub/init/prompt.js.map +1 -0
  263. package/dist/hub/init/secret-file.d.ts +1 -0
  264. package/dist/hub/init/secret-file.js +59 -0
  265. package/dist/hub/init/secret-file.js.map +1 -0
  266. package/dist/hub/init/text.d.ts +127 -0
  267. package/dist/hub/init/text.js +247 -0
  268. package/dist/hub/init/text.js.map +1 -0
  269. package/dist/hub/init/types.d.ts +114 -0
  270. package/dist/hub/init/types.js +9 -0
  271. package/dist/hub/init/types.js.map +1 -0
  272. package/dist/hub/init/wizard.d.ts +34 -0
  273. package/dist/hub/init/wizard.js +554 -0
  274. package/dist/hub/init/wizard.js.map +1 -0
  275. package/dist/hub/initialization.d.ts +23 -0
  276. package/dist/hub/initialization.js +28 -0
  277. package/dist/hub/initialization.js.map +1 -0
  278. package/dist/hub/member/agent-mode.d.ts +6 -0
  279. package/dist/hub/member/agent-mode.js +23 -0
  280. package/dist/hub/member/agent-mode.js.map +1 -0
  281. package/dist/hub/member/attachments.d.ts +29 -0
  282. package/dist/hub/member/attachments.js +107 -0
  283. package/dist/hub/member/attachments.js.map +1 -0
  284. package/dist/hub/member/exposure-api.d.ts +87 -0
  285. package/dist/hub/member/exposure-api.js +64 -0
  286. package/dist/hub/member/exposure-api.js.map +1 -0
  287. package/dist/hub/member/exposures.d.ts +123 -0
  288. package/dist/hub/member/exposures.js +282 -0
  289. package/dist/hub/member/exposures.js.map +1 -0
  290. package/dist/hub/member/pairing-api.d.ts +85 -0
  291. package/dist/hub/member/pairing-api.js +385 -0
  292. package/dist/hub/member/pairing-api.js.map +1 -0
  293. package/dist/hub/member/quota.d.ts +20 -0
  294. package/dist/hub/member/quota.js +98 -0
  295. package/dist/hub/member/quota.js.map +1 -0
  296. package/dist/hub/member-journal.d.ts +104 -0
  297. package/dist/hub/member-journal.js +336 -0
  298. package/dist/hub/member-journal.js.map +1 -0
  299. package/dist/hub/member-reconciliation.d.ts +14 -0
  300. package/dist/hub/member-reconciliation.js +97 -0
  301. package/dist/hub/member-reconciliation.js.map +1 -0
  302. package/dist/hub/mount.d.ts +39 -0
  303. package/dist/hub/mount.js +123 -0
  304. package/dist/hub/mount.js.map +1 -0
  305. package/dist/hub/pairing-client.d.ts +17 -0
  306. package/dist/hub/pairing-client.js +108 -0
  307. package/dist/hub/pairing-client.js.map +1 -0
  308. package/dist/hub/pairing.d.ts +65 -0
  309. package/dist/hub/pairing.js +211 -0
  310. package/dist/hub/pairing.js.map +1 -0
  311. package/dist/hub/policy.d.ts +63 -0
  312. package/dist/hub/policy.js +147 -0
  313. package/dist/hub/policy.js.map +1 -0
  314. package/dist/hub/preview.d.ts +32 -0
  315. package/dist/hub/preview.js +64 -0
  316. package/dist/hub/preview.js.map +1 -0
  317. package/dist/hub/private-files.d.ts +5 -0
  318. package/dist/hub/private-files.js +44 -0
  319. package/dist/hub/private-files.js.map +1 -0
  320. package/dist/hub/profile.d.ts +59 -0
  321. package/dist/hub/profile.js +73 -0
  322. package/dist/hub/profile.js.map +1 -0
  323. package/dist/hub/protocol.d.ts +779 -0
  324. package/dist/hub/protocol.js +93 -0
  325. package/dist/hub/protocol.js.map +1 -0
  326. package/dist/hub/quota.d.ts +24 -0
  327. package/dist/hub/quota.js +112 -0
  328. package/dist/hub/quota.js.map +1 -0
  329. package/dist/hub/representative.d.ts +141 -0
  330. package/dist/hub/representative.js +528 -0
  331. package/dist/hub/representative.js.map +1 -0
  332. package/dist/hub/retention.d.ts +17 -0
  333. package/dist/hub/retention.js +45 -0
  334. package/dist/hub/retention.js.map +1 -0
  335. package/dist/hub/rooms.d.ts +120 -0
  336. package/dist/hub/rooms.js +535 -0
  337. package/dist/hub/rooms.js.map +1 -0
  338. package/dist/hub/runtime.d.ts +106 -0
  339. package/dist/hub/runtime.js +298 -0
  340. package/dist/hub/runtime.js.map +1 -0
  341. package/dist/hub/server.d.ts +56 -0
  342. package/dist/hub/server.js +202 -0
  343. package/dist/hub/server.js.map +1 -0
  344. package/dist/hub/service-start.d.ts +17 -0
  345. package/dist/hub/service-start.js +109 -0
  346. package/dist/hub/service-start.js.map +1 -0
  347. package/dist/hub/sessions.d.ts +53 -0
  348. package/dist/hub/sessions.js +196 -0
  349. package/dist/hub/sessions.js.map +1 -0
  350. package/dist/hub/socket.d.ts +24 -0
  351. package/dist/hub/socket.js +79 -0
  352. package/dist/hub/socket.js.map +1 -0
  353. package/dist/hub/store.d.ts +77 -0
  354. package/dist/hub/store.js +88 -0
  355. package/dist/hub/store.js.map +1 -0
  356. package/dist/hub/tls.d.ts +31 -0
  357. package/dist/hub/tls.js +135 -0
  358. package/dist/hub/tls.js.map +1 -0
  359. package/dist/hub/types.d.ts +401 -0
  360. package/dist/hub/types.js +2 -0
  361. package/dist/hub/types.js.map +1 -0
  362. package/dist/hub/validation.d.ts +33 -0
  363. package/dist/hub/validation.js +136 -0
  364. package/dist/hub/validation.js.map +1 -0
  365. package/dist/hub/version-floor.d.ts +10 -0
  366. package/dist/hub/version-floor.js +45 -0
  367. package/dist/hub/version-floor.js.map +1 -0
  368. package/dist/hub-browser-certificate-policy.d.ts +31 -0
  369. package/dist/hub-browser-certificate-policy.js +25 -0
  370. package/dist/hub-browser-certificate-policy.js.map +1 -0
  371. package/dist/hub-membership-settings.d.ts +6 -0
  372. package/dist/hub-membership-settings.js +21 -0
  373. package/dist/hub-membership-settings.js.map +1 -0
  374. package/dist/hub-mode.d.ts +15 -0
  375. package/dist/hub-mode.js +17 -0
  376. package/dist/hub-mode.js.map +1 -0
  377. package/dist/hub-pairing-summary.d.ts +48 -0
  378. package/dist/hub-pairing-summary.js +36 -0
  379. package/dist/hub-pairing-summary.js.map +1 -0
  380. package/dist/hub-report-target.d.ts +32 -0
  381. package/dist/hub-report-target.js +33 -0
  382. package/dist/hub-report-target.js.map +1 -0
  383. package/dist/hub-retention-policy.d.ts +14 -0
  384. package/dist/hub-retention-policy.js +15 -0
  385. package/dist/hub-retention-policy.js.map +1 -0
  386. package/dist/instance-config-impact.js +3 -0
  387. package/dist/instance-config-impact.js.map +1 -1
  388. package/dist/instance-lifecycle.d.ts +17 -2
  389. package/dist/instance-lifecycle.js +58 -8
  390. package/dist/instance-lifecycle.js.map +1 -1
  391. package/dist/instance-topic-delete.d.ts +77 -0
  392. package/dist/instance-topic-delete.js +123 -0
  393. package/dist/instance-topic-delete.js.map +1 -0
  394. package/dist/instructions.d.ts +1 -1
  395. package/dist/instructions.js +1 -1
  396. package/dist/instructions.js.map +1 -1
  397. package/dist/kiro-engine-status.d.ts +11 -0
  398. package/dist/kiro-engine-status.js +6 -0
  399. package/dist/kiro-engine-status.js.map +1 -1
  400. package/dist/launchd-service-domain.d.ts +5 -0
  401. package/dist/launchd-service-domain.js +21 -0
  402. package/dist/launchd-service-domain.js.map +1 -0
  403. package/dist/locale.js +125 -3
  404. package/dist/locale.js.map +1 -1
  405. package/dist/log-service.d.ts +28 -0
  406. package/dist/log-service.js +29 -0
  407. package/dist/log-service.js.map +1 -1
  408. package/dist/log-steps.d.ts +4 -3
  409. package/dist/log-steps.js +32 -7
  410. package/dist/log-steps.js.map +1 -1
  411. package/dist/logger.d.ts +16 -2
  412. package/dist/logger.js +346 -66
  413. package/dist/logger.js.map +1 -1
  414. package/dist/login-flows.d.ts +15 -7
  415. package/dist/login-flows.js +29 -3
  416. package/dist/login-flows.js.map +1 -1
  417. package/dist/login-manager.js +25 -4
  418. package/dist/login-manager.js.map +1 -1
  419. package/dist/ls-rows.js +3 -4
  420. package/dist/ls-rows.js.map +1 -1
  421. package/dist/missed-offline.d.ts +25 -0
  422. package/dist/missed-offline.js +79 -0
  423. package/dist/missed-offline.js.map +1 -0
  424. package/dist/native-instance-api.d.ts +0 -1
  425. package/dist/native-instance-api.js +15 -3
  426. package/dist/native-instance-api.js.map +1 -1
  427. package/dist/native-instance-input.d.ts +3 -0
  428. package/dist/native-instance-input.js +6 -1
  429. package/dist/native-instance-input.js.map +1 -1
  430. package/dist/native-instance-registry.d.ts +6 -0
  431. package/dist/native-instance-registry.js +24 -0
  432. package/dist/native-instance-registry.js.map +1 -1
  433. package/dist/native-mcp.d.ts +3 -0
  434. package/dist/native-mcp.js +15 -2
  435. package/dist/native-mcp.js.map +1 -1
  436. package/dist/native-pane-lifecycle.d.ts +8 -0
  437. package/dist/native-pane-lifecycle.js +13 -4
  438. package/dist/native-pane-lifecycle.js.map +1 -1
  439. package/dist/native-pane-manager.js +17 -9
  440. package/dist/native-pane-manager.js.map +1 -1
  441. package/dist/needs-you-hub.d.ts +9 -1
  442. package/dist/needs-you-hub.js +46 -8
  443. package/dist/needs-you-hub.js.map +1 -1
  444. package/dist/needs-you.d.ts +47 -2
  445. package/dist/needs-you.js +31 -3
  446. package/dist/needs-you.js.map +1 -1
  447. package/dist/office-share-page.js +2 -2
  448. package/dist/office-share-page.js.map +1 -1
  449. package/dist/office-share.d.ts +11 -0
  450. package/dist/office-share.js +14 -0
  451. package/dist/office-share.js.map +1 -1
  452. package/dist/office-talk.d.ts +26 -0
  453. package/dist/office-talk.js +50 -0
  454. package/dist/office-talk.js.map +1 -0
  455. package/dist/outbound-handlers.d.ts +14 -0
  456. package/dist/outbound-handlers.js +49 -6
  457. package/dist/outbound-handlers.js.map +1 -1
  458. package/dist/outbound-schemas.d.ts +33 -1
  459. package/dist/outbound-schemas.js +29 -16
  460. package/dist/outbound-schemas.js.map +1 -1
  461. package/dist/pane-quota-history.d.ts +9 -0
  462. package/dist/pane-quota-history.js +67 -0
  463. package/dist/pane-quota-history.js.map +1 -0
  464. package/dist/pause-marker.d.ts +1 -1
  465. package/dist/pause-marker.js +1 -1
  466. package/dist/pause-marker.js.map +1 -1
  467. package/dist/platform-general.d.ts +46 -0
  468. package/dist/platform-general.js +91 -0
  469. package/dist/platform-general.js.map +1 -0
  470. package/dist/public-web-gateway.js +7 -0
  471. package/dist/public-web-gateway.js.map +1 -1
  472. package/dist/queued-handoffs.d.ts +33 -0
  473. package/dist/queued-handoffs.js +75 -0
  474. package/dist/queued-handoffs.js.map +1 -0
  475. package/dist/quickstart.d.ts +13 -0
  476. package/dist/quickstart.js +81 -5
  477. package/dist/quickstart.js.map +1 -1
  478. package/dist/quota-notice.d.ts +7 -0
  479. package/dist/quota-notice.js +40 -0
  480. package/dist/quota-notice.js.map +1 -1
  481. package/dist/reply-buttons-controller.js +10 -6
  482. package/dist/reply-buttons-controller.js.map +1 -1
  483. package/dist/reply-polls.d.ts +2 -2
  484. package/dist/reply-polls.js +3 -3
  485. package/dist/reply-polls.js.map +1 -1
  486. package/dist/runtime-api.d.ts +2 -0
  487. package/dist/runtime-api.js +25 -7
  488. package/dist/runtime-api.js.map +1 -1
  489. package/dist/runtime-build-info.js +5 -3
  490. package/dist/runtime-build-info.js.map +1 -1
  491. package/dist/runtime-bundle.d.ts +3 -0
  492. package/dist/runtime-bundle.js +3 -1
  493. package/dist/runtime-bundle.js.map +1 -1
  494. package/dist/runtime-cli.d.ts +8 -1
  495. package/dist/runtime-cli.js +127 -8
  496. package/dist/runtime-cli.js.map +1 -1
  497. package/dist/runtime-client-store.d.ts +7 -0
  498. package/dist/runtime-client-store.js +30 -2
  499. package/dist/runtime-client-store.js.map +1 -1
  500. package/dist/runtime-client.d.ts +63 -1
  501. package/dist/runtime-client.js +295 -21
  502. package/dist/runtime-client.js.map +1 -1
  503. package/dist/runtime-coordinator.d.ts +7 -0
  504. package/dist/runtime-coordinator.js +213 -35
  505. package/dist/runtime-coordinator.js.map +1 -1
  506. package/dist/runtime-credential-profiles.d.ts +78 -0
  507. package/dist/runtime-credential-profiles.js +280 -0
  508. package/dist/runtime-credential-profiles.js.map +1 -0
  509. package/dist/runtime-install.d.ts +50 -0
  510. package/dist/runtime-install.js +186 -0
  511. package/dist/runtime-install.js.map +1 -0
  512. package/dist/runtime-pane-assets.d.ts +1 -1
  513. package/dist/runtime-pane-assets.js +1 -1
  514. package/dist/runtime-pane-assets.js.map +1 -1
  515. package/dist/runtime-pane-codex-index.d.ts +10 -1
  516. package/dist/runtime-pane-codex-index.js +131 -27
  517. package/dist/runtime-pane-codex-index.js.map +1 -1
  518. package/dist/runtime-pane-host.d.ts +19 -0
  519. package/dist/runtime-pane-host.js +50 -7
  520. package/dist/runtime-pane-host.js.map +1 -1
  521. package/dist/runtime-pane-link.d.ts +7 -0
  522. package/dist/runtime-pane-link.js +93 -2
  523. package/dist/runtime-pane-link.js.map +1 -1
  524. package/dist/runtime-pane-mcp-relay.d.ts +1 -0
  525. package/dist/runtime-pane-mcp-relay.js +10 -0
  526. package/dist/runtime-pane-mcp-relay.js.map +1 -1
  527. package/dist/runtime-pane-mcp.d.ts +4 -0
  528. package/dist/runtime-pane-mcp.js +6 -3
  529. package/dist/runtime-pane-mcp.js.map +1 -1
  530. package/dist/runtime-pane-native.d.ts +32 -2
  531. package/dist/runtime-pane-native.js +55 -6
  532. package/dist/runtime-pane-native.js.map +1 -1
  533. package/dist/runtime-pane-port.d.ts +5 -0
  534. package/dist/runtime-pane-port.js +17 -1
  535. package/dist/runtime-pane-port.js.map +1 -1
  536. package/dist/runtime-pane-process.d.ts +1 -1
  537. package/dist/runtime-pane-process.js +11 -2
  538. package/dist/runtime-pane-process.js.map +1 -1
  539. package/dist/runtime-pane-protocol.d.ts +11 -1
  540. package/dist/runtime-pane-protocol.js +27 -5
  541. package/dist/runtime-pane-protocol.js.map +1 -1
  542. package/dist/runtime-pane-quota-history.d.ts +6 -0
  543. package/dist/runtime-pane-quota-history.js +44 -0
  544. package/dist/runtime-pane-quota-history.js.map +1 -0
  545. package/dist/runtime-pane-service.d.ts +5 -0
  546. package/dist/runtime-pane-service.js +47 -12
  547. package/dist/runtime-pane-service.js.map +1 -1
  548. package/dist/runtime-pane-transcript.d.ts +5 -0
  549. package/dist/runtime-pane-transcript.js +66 -5
  550. package/dist/runtime-pane-transcript.js.map +1 -1
  551. package/dist/runtime-pane-worker.js +19 -6
  552. package/dist/runtime-pane-worker.js.map +1 -1
  553. package/dist/runtime-protocol.d.ts +17 -2
  554. package/dist/runtime-protocol.js +12 -0
  555. package/dist/runtime-protocol.js.map +1 -1
  556. package/dist/runtime-update-activity.d.ts +21 -0
  557. package/dist/runtime-update-activity.js +51 -0
  558. package/dist/runtime-update-activity.js.map +1 -0
  559. package/dist/runtime-update-artifact.d.ts +31 -0
  560. package/dist/runtime-update-artifact.js +252 -0
  561. package/dist/runtime-update-artifact.js.map +1 -0
  562. package/dist/runtime-update-install.d.ts +31 -0
  563. package/dist/runtime-update-install.js +205 -0
  564. package/dist/runtime-update-install.js.map +1 -0
  565. package/dist/runtime-update-journal.d.ts +44 -0
  566. package/dist/runtime-update-journal.js +121 -0
  567. package/dist/runtime-update-journal.js.map +1 -0
  568. package/dist/runtime-update-lock.d.ts +48 -0
  569. package/dist/runtime-update-lock.js +217 -0
  570. package/dist/runtime-update-lock.js.map +1 -0
  571. package/dist/runtime-update-owners.d.ts +29 -0
  572. package/dist/runtime-update-owners.js +240 -0
  573. package/dist/runtime-update-owners.js.map +1 -0
  574. package/dist/runtime-update-protocol.d.ts +15 -0
  575. package/dist/runtime-update-protocol.js +13 -0
  576. package/dist/runtime-update-protocol.js.map +1 -0
  577. package/dist/runtime-windows-bridge.d.ts +2 -1
  578. package/dist/runtime-windows-bridge.js +11 -1
  579. package/dist/runtime-windows-bridge.js.map +1 -1
  580. package/dist/scheduler/db.d.ts +2 -1
  581. package/dist/scheduler/db.js +23 -9
  582. package/dist/scheduler/db.js.map +1 -1
  583. package/dist/scheduler/task-board-text.js +1 -1
  584. package/dist/scheduler/task-board-text.js.map +1 -1
  585. package/dist/scheduler/task-board.d.ts +13 -0
  586. package/dist/scheduler/task-board.js +28 -3
  587. package/dist/scheduler/task-board.js.map +1 -1
  588. package/dist/service-drain.d.ts +19 -0
  589. package/dist/service-drain.js +64 -0
  590. package/dist/service-drain.js.map +1 -0
  591. package/dist/service-installer.d.ts +7 -2
  592. package/dist/service-installer.js +13 -10
  593. package/dist/service-installer.js.map +1 -1
  594. package/dist/settings-api.d.ts +20 -0
  595. package/dist/settings-api.js +414 -4
  596. package/dist/settings-api.js.map +1 -1
  597. package/dist/settings-baseline.d.ts +6 -0
  598. package/dist/settings-baseline.js +3 -1
  599. package/dist/settings-baseline.js.map +1 -1
  600. package/dist/settings-change.js +29 -6
  601. package/dist/settings-change.js.map +1 -1
  602. package/dist/settings-effect.d.ts +13 -0
  603. package/dist/settings-effect.js +97 -0
  604. package/dist/settings-effect.js.map +1 -1
  605. package/dist/settings-http-confirmation.js +13 -1
  606. package/dist/settings-http-confirmation.js.map +1 -1
  607. package/dist/settings-instance-patch.js +27 -0
  608. package/dist/settings-instance-patch.js.map +1 -1
  609. package/dist/setup-wizard.js +6 -2
  610. package/dist/setup-wizard.js.map +1 -1
  611. package/dist/task-board-tool.d.ts +13 -1
  612. package/dist/task-board-tool.js +104 -4
  613. package/dist/task-board-tool.js.map +1 -1
  614. package/dist/task-board-waker.d.ts +6 -0
  615. package/dist/task-board-waker.js +4 -0
  616. package/dist/task-board-waker.js.map +1 -1
  617. package/dist/tmux-binary.d.ts +59 -0
  618. package/dist/tmux-binary.js +200 -0
  619. package/dist/tmux-binary.js.map +1 -0
  620. package/dist/tmux-control.js +4 -4
  621. package/dist/tmux-control.js.map +1 -1
  622. package/dist/tmux-exec-helper.js +32 -1
  623. package/dist/tmux-exec-helper.js.map +1 -1
  624. package/dist/tmux-manager.d.ts +1 -1
  625. package/dist/tmux-manager.js +45 -36
  626. package/dist/tmux-manager.js.map +1 -1
  627. package/dist/tmux-read.js +4 -3
  628. package/dist/tmux-read.js.map +1 -1
  629. package/dist/tool-permissions.d.ts +5 -2
  630. package/dist/tool-permissions.js +6 -5
  631. package/dist/tool-permissions.js.map +1 -1
  632. package/dist/tool-progress.d.ts +2 -0
  633. package/dist/tool-progress.js +19 -3
  634. package/dist/tool-progress.js.map +1 -1
  635. package/dist/topic-commands.js +10 -5
  636. package/dist/topic-commands.js.map +1 -1
  637. package/dist/transcript-monitor.d.ts +20 -0
  638. package/dist/transcript-monitor.js +47 -3
  639. package/dist/transcript-monitor.js.map +1 -1
  640. package/dist/transcript-needles.d.ts +7 -0
  641. package/dist/transcript-needles.js +9 -1
  642. package/dist/transcript-needles.js.map +1 -1
  643. package/dist/transcript-records.d.ts +1 -1
  644. package/dist/transcript-records.js +2 -1
  645. package/dist/transcript-records.js.map +1 -1
  646. package/dist/types.d.ts +6 -0
  647. package/dist/ui/account-identity.js +27 -0
  648. package/dist/ui/accounts-view.js +214 -0
  649. package/dist/ui/agent-runtime-settings.js +9 -8
  650. package/dist/ui/backend-signin.js +4 -1
  651. package/dist/ui/chat-ambient.js +1 -1
  652. package/dist/ui/chat-md-strings.js +3 -0
  653. package/dist/ui/chat-render.js +3 -670
  654. package/dist/ui/chat-store.js +1 -1
  655. package/dist/ui/chat-strings.js +3 -333
  656. package/dist/ui/chat-thread.js +3 -919
  657. package/dist/ui/chat-time.js +3 -80
  658. package/dist/ui/chat-tour.js +1 -1
  659. package/dist/ui/credential-profile-select.js +54 -0
  660. package/dist/ui/fleet-office-dialogue.d.ts +30 -0
  661. package/dist/ui/fleet-office-dialogue.js +382 -0
  662. package/dist/ui/fleet-office-pack.d.ts +9 -0
  663. package/dist/ui/fleet-office-pack.js +76 -4
  664. package/dist/ui/fleet-office-skin.js +23 -5
  665. package/dist/ui/fleet-office-store.js +5 -0
  666. package/dist/ui/fleet-office.js +173 -6
  667. package/dist/ui/fleet-task-card.js +10 -6
  668. package/dist/ui/fleet-task-common.js +12 -2
  669. package/dist/ui/fleet-task-menu.js +188 -0
  670. package/dist/ui/fleet-task-stats.js +124 -0
  671. package/dist/ui/fleet-task-view.js +340 -0
  672. package/dist/ui/fleet-tasks.js +131 -43
  673. package/dist/ui/fleet-usage.js +90 -27
  674. package/dist/ui/html-attachment.js +3 -40
  675. package/dist/ui/hub-agent-copy.js +23 -0
  676. package/dist/ui/hub-button-actions.js +65 -0
  677. package/dist/ui/hub-chat-store.js +158 -0
  678. package/dist/ui/hub-chat-strings.js +77 -0
  679. package/dist/ui/hub-client.js +329 -0
  680. package/dist/ui/hub-owner-strings.js +51 -0
  681. package/dist/ui/hub-provider-guidance.js +31 -0
  682. package/dist/ui/hub-quota.js +85 -0
  683. package/dist/ui/hub-strings.js +162 -0
  684. package/dist/ui/hub-switcher.js +27 -0
  685. package/dist/ui/native-pane-recovery.js +1 -1
  686. package/dist/ui/office-share-page.js +4 -2
  687. package/dist/ui/panel-chat.js +34 -48
  688. package/dist/ui/panel-details.js +1 -1
  689. package/dist/ui/panel-fleet.js +78 -10
  690. package/dist/ui/panel-hub.js +619 -0
  691. package/dist/ui/panel-log.js +2 -2
  692. package/dist/ui/panel-needs.js +24 -8
  693. package/dist/ui/panel-runtimes.js +114 -23
  694. package/dist/ui/panel-settings.js +69 -80
  695. package/dist/ui/panel-windows-cli.js +12 -2
  696. package/dist/ui/preview-pages.js +1 -1
  697. package/dist/ui/preview-panel.js +92 -6
  698. package/dist/ui/preview-versions.js +1 -1
  699. package/dist/ui/preview.js +3 -476
  700. package/dist/ui/runtime-commands.d.ts +4 -0
  701. package/dist/ui/runtime-commands.js +59 -0
  702. package/dist/ui/search-dialog.js +2 -0
  703. package/dist/ui/settings-access-strings.js +42 -0
  704. package/dist/ui/settings-build-version.js +35 -0
  705. package/dist/ui/settings-codex-copy.js +19 -0
  706. package/dist/ui/settings-devices.js +253 -0
  707. package/dist/ui/settings-dialogs.js +28 -7
  708. package/dist/ui/settings-hub-browser-certificate.js +74 -0
  709. package/dist/ui/settings-hub-membership.js +72 -0
  710. package/dist/ui/settings-hub-retention.js +52 -0
  711. package/dist/ui/settings-hub.js +196 -0
  712. package/dist/ui/settings-layout.js +8 -11
  713. package/dist/ui/settings-model.js +16 -2
  714. package/dist/ui/settings-outside.js +104 -38
  715. package/dist/ui/settings-registry.js +4 -1
  716. package/dist/ui/settings-shared-strings.js +143 -0
  717. package/dist/ui/settings-shared.js +345 -0
  718. package/dist/ui/settings-strings.js +10 -46
  719. package/dist/ui/settings-web-authority.js +5 -2
  720. package/dist/ui/shared/accounts.css +15 -0
  721. package/dist/ui/shared/app-i18n.js +2 -2
  722. package/dist/ui/shared/app-needs.js +1 -1
  723. package/dist/ui/shared/app-route.js +6 -1
  724. package/dist/ui/shared/app-session.js +6 -2
  725. package/dist/ui/shared/app-shell.js +64 -8
  726. package/dist/ui/shared/app.css +121 -30
  727. package/dist/ui/shared/app.js +12 -3
  728. package/dist/ui/shared/chat-composer.js +68 -0
  729. package/dist/ui/shared/chat-md-strings.js +9 -0
  730. package/dist/ui/shared/chat-render.js +682 -0
  731. package/dist/ui/shared/chat-strings.js +333 -0
  732. package/dist/ui/shared/chat-thread.js +969 -0
  733. package/dist/ui/shared/chat-time.js +80 -0
  734. package/dist/ui/shared/header-tools.js +3 -5
  735. package/dist/ui/shared/html-attachment.js +42 -0
  736. package/dist/ui/shared/hub-chat.css +85 -0
  737. package/dist/ui/shared/hub-owner.css +33 -0
  738. package/dist/ui/shared/hub-quota.css +8 -0
  739. package/dist/ui/shared/hub.css +71 -0
  740. package/dist/ui/shared/page-head.js +8 -0
  741. package/dist/ui/shared/panel-view.js +77 -4
  742. package/dist/ui/shared/preview.js +476 -0
  743. package/dist/ui/shared/runtime-install.css +26 -0
  744. package/dist/ui/shared/side-rail.js +15 -0
  745. package/dist/ui/shared/signin.js +172 -0
  746. package/dist/ui/shared/task-board.css +95 -0
  747. package/dist/ui/shared/usage-dialog.js +18 -1
  748. package/dist/ui/shared/view-history.css +17 -0
  749. package/dist/ui/shared/view-history.js +438 -0
  750. package/dist/ui/shared/view-strings.js +16 -0
  751. package/dist/ui/shared/workspace.css +20 -0
  752. package/dist/ui/signin.html +21 -0
  753. package/dist/ui/workspace-panel.js +189 -0
  754. package/dist/ui/workspace-strings.js +35 -0
  755. package/dist/unattended-install.d.ts +11 -2
  756. package/dist/unattended-install.js +41 -6
  757. package/dist/unattended-install.js.map +1 -1
  758. package/dist/usage/capacity.d.ts +69 -0
  759. package/dist/usage/capacity.js +119 -0
  760. package/dist/usage/capacity.js.map +1 -0
  761. package/dist/usage/i18n-keys.d.ts +1 -1
  762. package/dist/usage/i18n-keys.js +3 -0
  763. package/dist/usage/i18n-keys.js.map +1 -1
  764. package/dist/usage/profile-timeline.d.ts +16 -0
  765. package/dist/usage/profile-timeline.js +58 -0
  766. package/dist/usage/profile-timeline.js.map +1 -0
  767. package/dist/usage/providers.js +2 -1
  768. package/dist/usage/providers.js.map +1 -1
  769. package/dist/usage/quota-history.d.ts +43 -0
  770. package/dist/usage/quota-history.js +168 -0
  771. package/dist/usage/quota-history.js.map +1 -0
  772. package/dist/usage/usage-api.d.ts +31 -0
  773. package/dist/usage/usage-api.js +80 -1
  774. package/dist/usage/usage-api.js.map +1 -1
  775. package/dist/usage-report.d.ts +25 -1
  776. package/dist/usage-report.js +55 -4
  777. package/dist/usage-report.js.map +1 -1
  778. package/dist/usage-rollup.d.ts +6 -1
  779. package/dist/usage-rollup.js +16 -4
  780. package/dist/usage-rollup.js.map +1 -1
  781. package/dist/view-api.d.ts +16 -0
  782. package/dist/view-api.js +105 -23
  783. package/dist/view-api.js.map +1 -1
  784. package/dist/view-history.d.ts +84 -0
  785. package/dist/view-history.js +116 -0
  786. package/dist/view-history.js.map +1 -0
  787. package/dist/web-api.d.ts +48 -2
  788. package/dist/web-api.js +276 -8
  789. package/dist/web-api.js.map +1 -1
  790. package/dist/web-backend-login.d.ts +23 -1
  791. package/dist/web-backend-login.js +11 -17
  792. package/dist/web-backend-login.js.map +1 -1
  793. package/dist/web-device-login.d.ts +153 -0
  794. package/dist/web-device-login.js +278 -0
  795. package/dist/web-device-login.js.map +1 -0
  796. package/dist/web-office-skins.d.ts +9 -0
  797. package/dist/web-office-skins.js +16 -1
  798. package/dist/web-office-skins.js.map +1 -1
  799. package/dist/web-session-authorization.d.ts +13 -2
  800. package/dist/web-session-authorization.js +10 -3
  801. package/dist/web-session-authorization.js.map +1 -1
  802. package/dist/web-session.d.ts +35 -0
  803. package/dist/web-session.js +7 -0
  804. package/dist/web-session.js.map +1 -1
  805. package/dist/web-settings-patch.d.ts +3 -1
  806. package/dist/web-settings-patch.js +4 -1
  807. package/dist/web-settings-patch.js.map +1 -1
  808. package/dist/web-shell-routes.d.ts +6 -0
  809. package/dist/web-shell-routes.js +7 -0
  810. package/dist/web-shell-routes.js.map +1 -1
  811. package/dist/web-terminal.d.ts +4 -30
  812. package/dist/web-terminal.js +9 -6
  813. package/dist/web-terminal.js.map +1 -1
  814. package/dist/windows-agents.d.ts +1 -0
  815. package/dist/windows-agents.js +1 -0
  816. package/dist/windows-agents.js.map +1 -1
  817. package/dist/windows-cli-api.d.ts +12 -1
  818. package/dist/windows-cli-api.js +27 -1
  819. package/dist/windows-cli-api.js.map +1 -1
  820. package/dist/windows-cli-providers.d.ts +0 -9
  821. package/dist/windows-cli-providers.js +4 -9
  822. package/dist/windows-cli-providers.js.map +1 -1
  823. package/dist/windows-cli-worker.d.ts +24 -0
  824. package/dist/windows-cli-worker.js +96 -5
  825. package/dist/windows-cli-worker.js.map +1 -1
  826. package/dist/windows-cli.d.ts +10 -0
  827. package/dist/windows-cli.js +10 -1
  828. package/dist/windows-cli.js.map +1 -1
  829. package/dist/yaml-shared-nodes.js +8 -3
  830. package/dist/yaml-shared-nodes.js.map +1 -1
  831. package/launcher/agend-install.cjs +8 -1
  832. package/launcher/launchd-session-type.cjs +14 -0
  833. package/launcher/postinstall.cjs +27 -2
  834. package/launcher/private-home.cjs +1 -1
  835. package/launcher/tmux-bundle.cjs +247 -0
  836. package/package.json +3 -2
  837. package/templates/launchd.plist.ejs +3 -1
  838. package/templates/runtime-install/install.ps1 +270 -0
@@ -0,0 +1,80 @@
1
+ // #1770: the time a chat line shows, read in the fleet's zone (the one chat-logs, fleet.log and the #1586 DMs use) —
2
+ // "17:38" today, "Yesterday 17:38", "10/11 17:38" earlier this year, "2025/10/11 17:38" before. The hour and minute keep
3
+ // the browser's own format (12- or 24-hour), as they always had. No imports: the thread, the preview panel and the
4
+ // tests read it as it is.
5
+
6
+ const cache = new Map();
7
+ /** One formatter per (kind, zone, locale): a thread may label 500 lines on every render. */
8
+ function fmt(kind, tz, locale) {
9
+ const key = `${kind}|${tz || ""}|${locale || ""}`;
10
+ let f = cache.get(key);
11
+ if (!f) {
12
+ const o = kind === "hm" ? { hour: "2-digit", minute: "2-digit" }
13
+ : kind === "ymd" ? { year: "numeric", month: "numeric", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric", hourCycle: "h23" }
14
+ : { year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", timeZoneName: "short" };
15
+ f = new Intl.DateTimeFormat(kind === "ymd" ? "en-US" : (locale || []), { ...o, timeZone: tz || undefined });
16
+ cache.set(key, f);
17
+ }
18
+ return f;
19
+ }
20
+ /** `tz` when this browser knows it, else undefined (the browser's own zone): a label must still be drawn. */
21
+ function known(tz) {
22
+ if (!tz) return undefined;
23
+ try { fmt("ymd", tz); return tz; } catch { return undefined; }
24
+ }
25
+ /** The fleet's zone, as the page was served it (<body data-fleet-tz>); undefined when absent or unknown here. */
26
+ export function fleetTz() { return known(globalThis.document?.body?.dataset?.fleetTz); }
27
+
28
+ const toMs = (ts) => (typeof ts === "number" ? ts : Date.parse(String(ts || "")));
29
+ function wall(ms, tz) {
30
+ const p = {};
31
+ for (const x of fmt("ymd", tz).formatToParts(ms)) p[x.type] = Number(x.value);
32
+ return p;
33
+ }
34
+
35
+ /**
36
+ * The label for `ts` (ISO string or epoch ms), "" when it cannot be read. opts: tz (default the fleet's), now (epoch ms),
37
+ * yesterday(hm) → the word for "yesterday" around hm (default: hm alone), locale (tests).
38
+ */
39
+ export function chatTime(ts, opts = {}) {
40
+ const ms = toMs(ts);
41
+ if (!Number.isFinite(ms)) return "";
42
+ const tz = "tz" in opts ? known(opts.tz) : fleetTz();
43
+ const hm = fmt("hm", tz, opts.locale).format(ms);
44
+ const d = wall(ms, tz), today = wall(opts.now ?? Date.now(), tz);
45
+ if (d.year === today.year && d.month === today.month && d.day === today.day) return hm;
46
+ const y = new Date(Date.UTC(today.year, today.month - 1, today.day - 1));
47
+ if (d.year === y.getUTCFullYear() && d.month === y.getUTCMonth() + 1 && d.day === y.getUTCDate()) return opts.yesterday ? opts.yesterday(hm) : hm;
48
+ return d.year === today.year ? `${d.month}/${d.day} ${hm}` : `${d.year}/${d.month}/${d.day} ${hm}`;
49
+ }
50
+
51
+ /** The full date, time and zone of `ts`, for a tooltip; "" when it cannot be read. */
52
+ export function chatTimeFull(ts, opts = {}) {
53
+ const ms = toMs(ts);
54
+ if (!Number.isFinite(ms)) return "";
55
+ return fmt("full", "tz" in opts ? known(opts.tz) : fleetTz(), opts.locale).format(ms);
56
+ }
57
+
58
+ /** Milliseconds until the fleet's next midnight (when "today" labels change), at most an hour (a DST day self-corrects). */
59
+ export function msToNextDay(now = Date.now(), tz = fleetTz()) {
60
+ const w = wall(now, known(tz));
61
+ const into = ((w.hour * 60 + w.minute) * 60 + w.second) * 1000 + (now % 1000);
62
+ return Math.max(1000, Math.min(3_600_000, 86_400_000 - into + 1000));
63
+ }
64
+
65
+ /**
66
+ * Call `fn` when the fleet's day may have changed — at its next midnight, then again for each one after (an hour at
67
+ * most between looks, so a DST day or a late timer corrects itself). Each subscriber holds its own timer, and no
68
+ * module-wide state: the unsubscribe it returns leaves nothing armed.
69
+ */
70
+ export function onDayChange(fn) {
71
+ let timer = null, live = true;
72
+ const arm = () => {
73
+ timer = setTimeout(() => {
74
+ timer = null;
75
+ try { fn(); } finally { if (live) arm(); }
76
+ }, msToNextDay());
77
+ };
78
+ arm();
79
+ return () => { live = false; if (timer !== null) { clearTimeout(timer); timer = null; } };
80
+ }
@@ -10,6 +10,7 @@ import { t } from "./app-i18n.js";
10
10
  import { appStore, createStore, useStore } from "./app-store.js";
11
11
  import { Icon } from "./ui-icons.js";
12
12
  import { UsageBody, UsageCompactToggle, UsageDialog } from "./usage-dialog.js";
13
+ import { RailFrame } from "./side-rail.js";
13
14
 
14
15
  export const TEXT_SIZE_KEY = "agend_text_size";
15
16
  export const VIEW_FIT_KEY = "agend_view_fit";
@@ -127,11 +128,8 @@ export function UsageRail({ route }) {
127
128
  const { instances = [] } = useStore(appStore);
128
129
  const instance = instances.find(item => item.name === route?.instance);
129
130
  if (!wide || !open || !route || !RAIL_PANELS.includes(route.panel) || !usageOffered() || instance?.capabilities?.usage === false) return null;
130
- return html`<aside data-trust="usage" class="u-rail" aria-label=${t("view.usage.title_plain")}>
131
- <div class="u-rail-head"><h2>${t("view.usage.title")}</h2><${UsageCompactToggle} />
132
- <button type="button" class="icon-btn" onClick=${() => setUsageRail(false)} aria-label=${t("app.usageHide")} title=${t("app.usageHide")}><${Icon} name="close" size=${16} /></button></div>
133
- <div class="u-rail-body"><${UsageBody} owner="usage-rail" /></div>
134
- </aside>`;
131
+ return html`<${RailFrame} trust="usage" label=${t("view.usage.title_plain")} title=${t("view.usage.title")} tools=${html`<${UsageCompactToggle} />`}
132
+ closeLabel=${t("app.usageHide")} onClose=${() => setUsageRail(false)}><${UsageBody} owner="usage-rail" /></${RailFrame}>`;
135
133
  }
136
134
 
137
135
  /**
@@ -0,0 +1,42 @@
1
+ // #1306 §6.1 (Q4): an agent's .html / .htm attachment gets the same preview card as a ```html block. Its HTML is read
2
+ // from /ui/file/<id> — same origin, this session's cookie — only on a click (Preview, Open in panel), never to show a
3
+ // card. What runs is then handed to the preview frame exactly like a block's (AgendPreview.start): the file URL itself
4
+ // is never opened or framed on the dashboard's origin.
5
+
6
+ /**
7
+ * #2863: the sizes a preview takes (UTF-8 bytes of the HTML), the same as a block's (preview.js LIMITS): up to ASK it
8
+ * runs at once; above it the person is asked first ("Preview anyway?"); above MAX there is no preview, only the
9
+ * download. MAX is the frame's own ceiling (web-preview.ts PREVIEW_HTML_MAX_BYTES).
10
+ */
11
+ export const HTML_PREVIEW_ASK = 8 * 1024 * 1024;
12
+ export const HTML_PREVIEW_MAX = 50 * 1024 * 1024;
13
+
14
+ /**
15
+ * Read an attachment's HTML: { ok: true, code } or { ok: false, reason } with reason "large" (above `ask` and not
16
+ * `anyway`: nothing is fetched when its listed size says so; `size` is what it is), "over" (above `max`: its listed size
17
+ * is checked before anything is fetched, the bytes again after), "gone" (the fleet no longer serves that id — the file
18
+ * changed, or the fleet restarted), or "failed". The text card reads with its own, single cap (ask = max).
19
+ */
20
+ export async function loadHtmlAttachment(att, fetchImpl = globalThis.fetch, { ask = HTML_PREVIEW_ASK, max = HTML_PREVIEW_MAX, anyway = false } = {}) {
21
+ if (!att || typeof att.id !== "string" || !/^[0-9a-f]{32}$/.test(att.id)) return { ok: false, reason: "failed" };
22
+ if (typeof att.size === "number" && att.size > max) return { ok: false, reason: "over" };
23
+ if (typeof att.size === "number" && att.size > ask && !anyway) return { ok: false, reason: "large", size: att.size };
24
+ let res;
25
+ // Hub PR A (#3226): a Hub file is read from its own room-scoped URL (chat-render's attachmentUrl: a plain same-origin path).
26
+ const url = globalThis.AgendChatRender?.attachmentUrl ? globalThis.AgendChatRender.attachmentUrl(att) : `/ui/file/${att.id}`;
27
+ try { res = await fetchImpl(url, { credentials: "same-origin", cache: "no-store" }); }
28
+ catch { return { ok: false, reason: "failed" }; }
29
+ if (!res || !res.ok) return { ok: false, reason: res && res.status === 404 ? "gone" : "failed" };
30
+ let bytes;
31
+ try { bytes = await res.arrayBuffer(); } catch { return { ok: false, reason: "failed" }; }
32
+ if (bytes.byteLength > max) return { ok: false, reason: "over" };
33
+ if (bytes.byteLength > ask && !anyway) return { ok: false, reason: "large", size: bytes.byteLength };
34
+ // UTF-8, as a block's text is; a BOM is dropped.
35
+ return { ok: true, code: new TextDecoder("utf-8").decode(bytes) };
36
+ }
37
+
38
+ /** #2863: a size as the person reads it: "12.3 MB" (1 MB = 1024 × 1024 bytes, as the caps are). */
39
+ export function sizeLabel(bytes) {
40
+ const mb = bytes / (1024 * 1024);
41
+ return `${mb >= 10 ? Math.round(mb) : Math.round(mb * 10) / 10} MB`;
42
+ }
@@ -0,0 +1,85 @@
1
+ /* #3226 B: the Hub chat — the conversation list (in the sidebar; the page itself on a phone), a room (its header, the
2
+ fleet chat's thread and composer) and the right-hand panel (the usage rail's frame and cards). Linked by the Hub's
3
+ hub-chat-strings.js (an older hub.css or app.css lacks these rules). Tokens only: both themes follow. No style= anywhere
4
+ (#1300): every look here is a class. */
5
+
6
+ /* ── the conversation list ── */
7
+ .hub-side-nav { display: flex; flex-direction: column; min-height: 0; flex: 1; }
8
+ .hub-nav { display: flex; flex-direction: column; gap: var(--s-1); min-height: 0; padding: 0 var(--s-2) var(--s-2); }
9
+ .hub-new { justify-content: flex-start; gap: var(--s-2); margin: var(--s-1) 0 var(--s-2); }
10
+ .hub-search { display: flex; align-items: center; gap: var(--s-2); background: var(--surface); border-radius: var(--r-sm); padding: 0 var(--s-2); color: var(--text-3); }
11
+ .hub-search input { flex: 1; min-width: 0; border: 0; background: transparent; color: var(--text); padding: 7px 0; font: inherit; font-size: var(--fs-sm); outline: none; }
12
+ .hub-sec { font-size: var(--fs-xs); color: var(--text-3); letter-spacing: .06em; padding: var(--s-3) var(--s-2) var(--s-1); }
13
+ .hub-rooms { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1px; }
14
+ .hub-room-row, .hub-pick-row { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: var(--s-2); align-items: center; padding: 7px var(--s-2);
15
+ border-radius: var(--r-sm); color: var(--text); text-decoration: none; }
16
+ .hub-room-row:hover { background: var(--surface); }
17
+ .hub-room-row.active { background: var(--surface-2); }
18
+ .hub-room-row.closed .t, .hub-room-row.closed .s { color: var(--text-3); }
19
+ .hub-room-text { min-width: 0; display: flex; flex-direction: column; }
20
+ .hub-room-text .t { font-weight: var(--fw-semibold, 600); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
21
+ .hub-room-text .s { color: var(--text-3); font-size: var(--fs-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
22
+ .hub-room-side { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; font-size: 11.5px; color: var(--text-3); font-variant-numeric: tabular-nums; }
23
+ .hub-room-side .pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--warn); animation: hub-pulse 1.4s ease-in-out infinite; }
24
+ @keyframes hub-pulse { 50% { opacity: .3; } }
25
+ @media (prefers-reduced-motion: reduce) { .hub-room-side .pulse { animation: none; } }
26
+ .hub-list-empty, .hub-list-err { margin: var(--s-2); font-size: var(--fs-sm); }
27
+
28
+ /* a name's letter on a tone (the same tones in both themes) */
29
+ .hub-av { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; font-weight: 600; font-size: 14px; color: #fff; flex: none; }
30
+ .hub-av.sm { width: 28px; height: 28px; font-size: 12px; border-radius: 8px; }
31
+ .hub-av.lg { width: 56px; height: 56px; font-size: 22px; border-radius: 16px; }
32
+ .hub-av.t0 { background: #4f6bd8; } .hub-av.t1 { background: #2f8f83; } .hub-av.t2 { background: #b4643a; }
33
+ .hub-av.t3 { background: #7b5bc4; } .hub-av.t4 { background: #6b7280; } .hub-av.t5 { background: #b8447a; }
34
+
35
+ /* ── the page: a phone's list, or a wide screen's "pick a chat" ── */
36
+ .hub-chat-body { display: flex; flex-direction: column; overflow: hidden; padding: 0; }
37
+ .hub-home { flex: 1; min-height: 0; display: flex; }
38
+ .hub-home-list { display: none; }
39
+ .hub-home-pick { flex: 1; display: flex; align-items: center; justify-content: center; padding: var(--s-6); }
40
+ @media (max-width: 899px) {
41
+ .hub-home-list { display: block; flex: 1; overflow-y: auto; padding-top: var(--s-2); }
42
+ .hub-home-pick { display: none; }
43
+ }
44
+
45
+ /* ── a room ── */
46
+ .hub-chat { flex: 1; min-height: 0; display: flex; }
47
+ .hub-chat-main { flex: 1; min-width: 0; display: flex; flex-direction: column; min-height: 0; }
48
+ .hub-chat-head { display: flex; align-items: center; gap: var(--s-2); min-height: var(--header-h, 52px); padding: 0 var(--s-4); border-bottom: 1px solid var(--border); flex: none; }
49
+ .hub-chat-title { flex: 1; min-width: 0; display: flex; flex-direction: column; }
50
+ .hub-chat-title strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
51
+ .hub-chat-title .s { color: var(--text-3); font-size: var(--fs-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
52
+ .hub-back { flex: none; }
53
+ .hub-scroller { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; position: relative; }
54
+ .hub-scroller .thread { max-width: var(--col); margin: 0 auto; padding: var(--s-4) var(--s-5); }
55
+ .hub-room-empty { padding: var(--s-6) var(--s-4); }
56
+ .hub-banner { margin: 0; padding: var(--s-2) var(--s-3); border-radius: var(--r-md); font-size: var(--fs-sm); background: var(--surface); color: var(--text-2); }
57
+ .hub-banner.danger { background: var(--danger-bg, var(--surface)); color: var(--danger); }
58
+ .hub-banner.warn { background: var(--warn-bg, var(--surface)); color: var(--warn); }
59
+
60
+ /* ── the right-hand panel: the usage rail's frame (side-rail.js), its cards ── */
61
+ .hub-chat > .u-rail { width: 320px; flex-shrink: 0; }
62
+ .hub-card { gap: var(--s-2); }
63
+ .hub-agent-card { align-items: center; text-align: center; }
64
+ .hub-agent-card strong { font-size: var(--fs-lg, 17px); }
65
+ .hub-kv { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; font-size: var(--fs-sm); }
66
+ .hub-kv dt { color: var(--text-3); } .hub-kv dd { margin: 0; min-width: 0; }
67
+ .hub-aud { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-2); font-size: var(--fs-sm); color: var(--text-2); }
68
+ .hub-aud li { display: grid; grid-template-columns: 18px 1fr; gap: var(--s-2); }
69
+ .hub-aud li > .icon { margin-top: 2px; color: var(--text-3); }
70
+ .hub-aud b { color: var(--text); }
71
+ .hub-p1 { margin: 0 var(--s-1); font-size: var(--fs-xs); }
72
+ .hub-rail-sheet { display: flex; flex-direction: column; gap: var(--s-3); }
73
+
74
+ /* ── New chat ── */
75
+ .hub-pick { display: flex; flex-direction: column; gap: var(--s-2); }
76
+ .hub-pick-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
77
+ .hub-pick-row { grid-template-columns: 34px minmax(0, 1fr) auto; }
78
+ .hub-pick-row .hub-room-text .s { white-space: normal; }
79
+ .hub-dock .composer-row .hint { white-space: normal; overflow: visible; text-overflow: clip; }
80
+
81
+ /* the session's menu sits at the sidebar's foot: it always opens upward */
82
+ .hub-session .hub-menu .menu-list { top: auto; bottom: calc(100% + 6px); right: 0; left: auto; }
83
+
84
+ /* An HTML block's Download needs the preview (#3226 E): not offered in the Hub's thread until then. */
85
+ .hub-scroller .pv-dl { display: none; }
@@ -0,0 +1,33 @@
1
+ /* #3226 C: My shared agents and Administration as Settings-like pages (linked by hub-owner-strings.js; an older
2
+ hub-chat.css lacks these rules). Tokens only; no style= anywhere (#1300). */
3
+ /* ── My shared agents and Administration (#3226 C): Settings' page layout ── */
4
+ .hub-page-body { padding: var(--s-4) max(var(--s-5), env(safe-area-inset-right)) var(--s-6) max(var(--s-5), env(safe-area-inset-left)); }
5
+ .hub-owner { width: 100%; max-width: 860px; min-width: 0; margin: 0 auto; display: flex; flex-direction: column; gap: var(--s-3); }
6
+ .hub-crumb { display: inline-flex; align-items: center; gap: var(--s-1); color: var(--text-2); font-size: var(--fs-sm); text-decoration: none; width: fit-content; }
7
+ .hub-rows { display: flex; flex-direction: column; gap: var(--s-2); margin-top: var(--s-2); }
8
+ .hub-rows .s-row.hub-row { display: flex; align-items: center; gap: var(--s-3); flex-wrap: nowrap; background: var(--surface-2); }
9
+ .hub-row > :not(.hub-row-text) { flex: none; }
10
+ .hub-row-link { color: var(--text); text-decoration: none; }
11
+ .hub-row-link:hover { background: var(--surface-2); }
12
+ .hub-row-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
13
+ .hub-row-text strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
14
+ .hub-row-text .note { overflow-wrap: anywhere; }
15
+ .hub-card-head { display: flex; align-items: center; justify-content: space-between; gap: var(--s-2); }
16
+ .hub-card-head h3 { margin: 0; color: var(--text); font-size: var(--fs-lg); text-transform: none; letter-spacing: 0; }
17
+ .hub-grant { display: flex; flex-direction: column; gap: var(--s-3); }
18
+ .hub-grant .field { margin: 0; }
19
+ .hub-danger h3 { color: var(--danger); }
20
+ .hub-steps { list-style: none; margin: var(--s-2) 0 0; padding: 0; display: flex; flex-direction: column; gap: var(--s-3); counter-reset: hub-step; }
21
+ .hub-steps > li { display: flex; align-items: flex-start; gap: var(--s-3); counter-increment: hub-step; }
22
+ .hub-steps > li::before { content: counter(hub-step); flex: none; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; font-weight: 600;
23
+ background: var(--surface-2); color: var(--text-2); }
24
+ .hub-step-body { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: var(--s-2); text-align: start; }
25
+ .hub-steps > li.done::before { content: "✓"; background: var(--ok-bg, var(--surface)); color: var(--ok); }
26
+ .hub-steps > li.now::before { background: var(--text); color: var(--bg); }
27
+ .hub-step-body > span { display: flex; flex-direction: column; gap: 2px; }
28
+ .hub-step-form { display: flex; gap: var(--s-2); align-items: center; flex-wrap: wrap; width: 100%; }
29
+ .hub-step-form .field { margin: 0; flex: 1; min-width: 12em; }
30
+ .hub-steps .hub-offer { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: start; margin: 0; padding: 0; }
31
+ .hub-steps > li::before { align-self: flex-start; margin-top: 1px; }
32
+ .hub-steps .hub-offer > * { text-align: start; align-self: flex-start; justify-self: start; }
33
+ @media (max-width: 899px) { .hub-page-body { padding: var(--s-3) var(--s-4) var(--s-6); } }
@@ -0,0 +1,8 @@
1
+ /* The lazy quota components own these additions, including on a retained shell stylesheet. */
2
+ .hub-quota-card .u-row { flex-wrap: wrap; gap: var(--s-2); }
3
+ .hub-quota-chip { max-width: 100%; white-space: normal; }
4
+ .hub-quota-banner { overflow-wrap: anywhere; }
5
+ .hub-quota-visibility > h3 { margin: 0 0 var(--s-3); }
6
+ .hub-quota-setting { display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); }
7
+ .hub-quota-setting > span { min-width: 0; }
8
+ .hub-quota-setting .note { display: block; margin: var(--s-1) 0 0; }
@@ -0,0 +1,71 @@
1
+ /* AgEnD Hub P1, slice 3: the Hub pages' own stylesheet, linked by their lazy modules (hub-strings.js linkHubCss), so a
2
+ tab opened before an upgrade (an app.css without these rules) draws them the same. Never loaded while the Hub is off. */
3
+ .hub-brand-name { color: var(--text-2); font-weight: var(--fw-medium); }
4
+ .hub-switch { display: flex; gap: 2px; margin: 0 var(--s-3) var(--s-2); padding: 2px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface-2); }
5
+ .hub-switch-item { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: var(--s-1); min-height: 28px; padding: 0 var(--s-2);
6
+ border-radius: var(--r-sm); font-size: var(--fs-sm); color: var(--text-2); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
7
+ .hub-switch-item.is-current { background: var(--surface); color: var(--text); box-shadow: var(--shadow-1); font-weight: var(--fw-medium); }
8
+ a.hub-switch-item:hover { color: var(--text); }
9
+ a.hub-switch-item:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
10
+ .hub-preview { border-left: 3px solid var(--warn-line); background: var(--warn-bg); padding: var(--s-2) var(--s-3); }
11
+ .hub-empty { padding: var(--s-6) 0; }
12
+ .s-hub-connect .hub-connect { max-width: 520px; }
13
+ .hub-state { display: grid; gap: var(--s-2); margin-top: var(--s-3); }
14
+ .hub-state h4 { margin: 0; display: flex; align-items: center; gap: var(--s-2); flex-wrap: wrap; }
15
+ .hub-origin code { overflow-wrap: anywhere; }
16
+ .hub-fp { display: grid; gap: var(--s-1); }
17
+ .hub-fp-label { font-size: var(--fs-sm); color: var(--text-2); }
18
+ .hub-fp-groups { font-family: var(--font-mono); font-size: var(--fs-md); letter-spacing: .04em; word-spacing: .3em; overflow-wrap: anywhere; }
19
+ .hub-fp-full { font-family: var(--font-mono); font-size: var(--fs-xs); overflow-wrap: anywhere; color: var(--text-2); }
20
+ .hub-fp .btn-link { justify-self: start; }
21
+ .hub-steps-lead { margin: var(--s-1) 0 0; }
22
+ .hub-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-1); }
23
+ .hub-steps li { display: flex; align-items: center; gap: var(--s-2); color: var(--text-2); }
24
+ .hub-steps li.is-done { color: var(--ok); }
25
+ .hub-steps small { margin-left: auto; color: var(--text-3); }
26
+ .hub-link { font-size: var(--fs-xs); font-weight: var(--fw-medium); padding: 1px var(--s-2); border-radius: var(--r-full); }
27
+ .hub-link.is-online { background: var(--ok-bg); color: var(--ok); }
28
+ .hub-link.is-offline { background: var(--warn-bg); color: var(--warn); }
29
+ .hub-key-changed, .hub-held { border-left: 3px solid var(--danger-line); padding-left: var(--s-3); }
30
+ .hub-exposures { margin-top: var(--s-4); border-top: 1px solid var(--border); padding-top: var(--s-3); }
31
+ .hub-exposures h4 { margin: 0 0 var(--s-1); }
32
+ .hub-exposure-list { list-style: none; margin: var(--s-2) 0 0; padding: 0; display: grid; gap: var(--s-2); }
33
+ .hub-exposure { display: grid; gap: 2px; padding: var(--s-2) var(--s-3); border: 1px solid var(--border); border-radius: var(--r-md); }
34
+ .hub-exposure.is-shared { border-color: var(--accent); }
35
+ .hub-exposure-main { display: flex; align-items: center; gap: var(--s-2); min-height: var(--tap); }
36
+ .hub-exposure-name { min-width: 0; overflow-wrap: anywhere; }
37
+ .hub-exposure-why { color: var(--text-3); padding-left: calc(var(--s-2) + 18px); }
38
+ /* S3b: the Hub workspace's pages */
39
+ .hub-body { display: grid; gap: var(--s-3); align-content: start; padding: var(--s-4) var(--s-3) var(--s-6); }
40
+ .hub-ask, .hub-mine, .hub-admin { display: grid; gap: var(--s-3); align-content: start; }
41
+ .hub-body > * { width: 100%; max-width: 860px; min-width: 0; }
42
+ .hub-body .card { margin-bottom: 0; }
43
+ @media (max-width: 899px) { .hub-body { padding: var(--s-3) var(--s-4) var(--s-6); } }
44
+ .hub-signin { max-width: 420px; }
45
+ .hub-signin h2 { margin: 0 0 var(--s-1); }
46
+ .hub-list { list-style: none; margin: var(--s-2) 0 0; padding: 0; display: grid; gap: var(--s-2); }
47
+ .hub-item { display: flex; align-items: center; gap: var(--s-2); flex-wrap: wrap; padding: var(--s-2) var(--s-3); border: 1px solid var(--border); border-radius: var(--r-md); }
48
+ .hub-item .grow { flex: 1; min-width: 0; display: grid; gap: 2px; overflow-wrap: anywhere; }
49
+ .hub-room { display: grid; gap: var(--s-2); }
50
+ .hub-room-head { display: flex; align-items: center; gap: var(--s-2); }
51
+ .hub-room-head h3 { margin: 0; min-width: 0; overflow-wrap: anywhere; }
52
+ .hub-identity { margin: 0; }
53
+ .hub-entries { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-3); }
54
+ .hub-entry { display: grid; gap: var(--s-1); }
55
+ .hub-q, .hub-a { white-space: pre-wrap; overflow-wrap: anywhere; padding: var(--s-2) var(--s-3); border-radius: var(--r-md); }
56
+ .hub-q { justify-self: end; max-width: 85%; background: var(--surface-2); }
57
+ .hub-a { justify-self: start; max-width: 95%; border: 1px solid var(--border); }
58
+ .hub-stage { font-size: var(--fs-sm); color: var(--text-3); }
59
+ .hub-stage.stage-uncertain, .hub-stage.stage-failed, .hub-stage.stage-cancelled, .hub-stage.stage-rejected { color: var(--warn); }
60
+ .hub-compose textarea { width: 100%; min-height: 72px; resize: vertical; }
61
+ .hub-exposure-card h3 { display: flex; align-items: center; gap: var(--s-2); flex-wrap: wrap; margin: 0; }
62
+ .hub-badge { font-size: var(--fs-xs); font-weight: var(--fw-medium); padding: 1px var(--s-2); border-radius: var(--r-full); background: var(--surface-2); color: var(--text-2); }
63
+ .hub-badge.state-published { background: var(--ok-bg); color: var(--ok); }
64
+ .hub-badge.state-frozen { background: var(--warn-bg); color: var(--warn); }
65
+ .hub-grant { display: flex; flex-direction: row; flex-wrap: wrap; align-items: flex-end; gap: var(--s-2); margin-top: var(--s-2); }
66
+ .hub-grant .field { flex: 1 1 200px; min-width: 0; }
67
+ .hub-grant .field-row { flex: 1 1 100%; flex-wrap: wrap; }
68
+ .hub-offer { display: grid; gap: var(--s-1); margin-top: var(--s-2); }
69
+ .hub-code { font-family: var(--font-mono); font-size: var(--fs-lg); letter-spacing: .12em; user-select: all; }
70
+ .hub-session { display: flex; align-items: center; gap: var(--s-2); }
71
+ .hub-session .side-row { flex: 1; min-width: 0; }
@@ -0,0 +1,8 @@
1
+ // Hub PR A (#3226): a page's head as Settings draws it (#1408: `.s-page-head`) — the title with its scope beside it, the
2
+ // lead under them and the page's actions on the right — shared so the Hub's owner and admin pages are the same thing.
3
+ // Drawing only: the words are the caller's (Settings' SettingsPageHead passes its own).
4
+ import { html } from "./app-html.js";
5
+
6
+ export function PageHead({ title, scope, lead, children }) {
7
+ return html`<header class="s-page-head"><div><div class="s-page-title"><h2>${title}</h2><span class="s-scope">${scope}</span></div><p class="s-page-lead">${lead}</p></div>${children ? html`<div class="s-page-actions">${children}</div>` : null}</header>`;
8
+ }
@@ -282,6 +282,13 @@ const REDRAWS_IN_PLACE = new Set(["grok"]);
282
282
  const FULL_SCREEN = new Set(["claude-code", "opencode", "grok"]); // agy: its chat UI unverified — found by the read
283
283
  /** The full-screen CLIs whose earlier output the Log tab shows (it reads their transcript: log-service.ts). */
284
284
  const LOG_HAS_HISTORY = new Set(["claude-code"]);
285
+ /**
286
+ * Claude history in the View (view-history.js): the full-screen CLIs whose View shows their earlier conversation from
287
+ * their transcript, above the live screen. A server without it (an older one) leaves them as before: no scrollback.
288
+ */
289
+ const TRANSCRIPT_HISTORY = new Set(["claude-code"]);
290
+ /** How near the top (px) a history being read asks for the page before it. */
291
+ const OLDER_AT_PX = 48;
285
292
  /**
286
293
  * M-2267 option (2), the leader's safe default: where a full-screen CLI's earlier output is — its Log tab (or that the
287
294
  * Log tab is off, and where to turn it on). Only for whom the Log tab is (a signed-in session on the full app; never a
@@ -304,8 +311,11 @@ function Terminal({ name, lease, density, every = 800, backend = "", signedIn =
304
311
  const [newBelow, setNewBelow] = useState(false);
305
312
  const [historyNote, setHistoryNoteState] = useState(null);
306
313
  // A CLI found to keep no scrollback (full screen): nothing is offered or read again for it; the note says why, briefly.
307
- const [noScrollback, setNoScrollback] = useState(FULL_SCREEN.has(backend));
308
- const noScrollbackRef = useRef(FULL_SCREEN.has(backend));
314
+ const keepsNone = FULL_SCREEN.has(backend) && !TRANSCRIPT_HISTORY.has(backend);
315
+ const [noScrollback, setNoScrollback] = useState(keepsNone);
316
+ const noScrollbackRef = useRef(keepsNone);
317
+ // Claude history in the View: the history shown while reading (view-history.js's createHistory), or null.
318
+ const transcript = useRef(null);
309
319
  const logLink = logLinkFor(name, backend, signedIn);
310
320
  const noteTimer = useRef(null);
311
321
  const setHistoryNote = (note, brief = false) => {
@@ -402,6 +412,7 @@ function Terminal({ name, lease, density, every = 800, backend = "", signedIn =
402
412
  // The person asked for what scrolled off: one bounded read, then reading (or why there is nothing to read).
403
413
  const loadEarlier = useRef(null);
404
414
  const follow = useRef(null);
415
+ const olderPage = useRef(null);
405
416
  useEffect(() => {
406
417
  const reads = readStream(lease);
407
418
  const refresh = async () => {
@@ -439,6 +450,7 @@ function Terminal({ name, lease, density, every = 800, backend = "", signedIn =
439
450
  const from = modeRef.current;
440
451
  if (from !== "follow" && !(from === "reading" && !screenAt.current.history)) return;
441
452
  if (noScrollbackRef.current) { setHistoryNote(tn("noEarlier"), true); return; } // known: nothing to read
453
+ if (TRANSCRIPT_HISTORY.has(backend)) { await loadTranscript(from); return; }
442
454
  const box0 = term.current;
443
455
  // Where the person is, measured from the end: the screen's lines stay where they are under the scrollback added.
444
456
  const fromEnd = box0 ? box0.scrollHeight - box0.scrollTop : 0;
@@ -477,8 +489,65 @@ function Terminal({ name, lease, density, every = 800, backend = "", signedIn =
477
489
  }
478
490
  } catch { if (lease.current()) { back(); setHistoryNote(tn("earlierFailed"), true); } }
479
491
  };
492
+ /**
493
+ * Claude history in the View: the conversation before the live screen, from the transcript (the renderer is its own
494
+ * lazy module), drawn above the screen as it is now — then reading, as for a scrollback. Older pages come as the
495
+ * person nears the top. A server without it: this CLI keeps no scrollback, as before.
496
+ */
497
+ const loadTranscript = async (from) => {
498
+ const back = () => { setMode(from); if (from === "follow") toBottom(); };
499
+ const screen = screenAt.current.drawn == null ? "" : screenAt.current.drawn;
500
+ setMode("loading"); setHistoryNote(tn("loadingEarlier"));
501
+ try {
502
+ const mod = await import("./view-history.js");
503
+ if (!lease.current() || modeRef.current !== "loading" || !pre.current) return;
504
+ let h = null;
505
+ h = mod.createHistory({ name, fetch: (u) => lease.fetch(u), alive: () => lease.current() && transcript.current === h,
506
+ doc: document, font: getComputedStyle(pre.current).fontFamily, cols: grid.current.cols });
507
+ transcript.current = h;
508
+ const got = await h.first(screen);
509
+ if (!lease.current() || modeRef.current !== "loading" || !pre.current || transcript.current !== h) return;
510
+ if (got.kind !== "ok") {
511
+ transcript.current = null;
512
+ if (got.kind === "unsupported") { noScrollbackRef.current = true; setNoScrollback(true); back(); setHistoryNote(tn("noEarlier"), true); return; }
513
+ back();
514
+ setHistoryNote(got.kind === "empty" ? tn("nothingEarlier") : got.status === 429 ? null : tn("earlierFailed"), true);
515
+ return;
516
+ }
517
+ screenAt.current.reading = screen; screenAt.current.history = true;
518
+ setNewBelow(screenAt.current.latest != null && !sameScreen(screen, screenAt.current.latest));
519
+ setMode("reading"); setHistoryNote(null);
520
+ draw(screen); // the screen as it is (the one frame write), then the history above it
521
+ pre.current.insertBefore(h.root, pre.current.firstChild);
522
+ fit();
523
+ const box = term.current;
524
+ if (box) {
525
+ const px = parseFloat(getComputedStyle(pre.current).fontSize);
526
+ const lineH = Number.isFinite(px) && px > 0 ? px * 1.2 : 16;
527
+ // The history's last lines and the divider right above the screen.
528
+ box.scrollTop = Math.max(0, box.scrollHeight - box.clientHeight - lineH * 3);
529
+ }
530
+ } catch { if (lease.current() && modeRef.current === "loading") { transcript.current = null; back(); setHistoryNote(tn("earlierFailed"), true); } }
531
+ };
532
+ /** The page before the history shown, above it — where the person is stays where it is. */
533
+ let olderBusy = false;
534
+ olderPage.current = async () => {
535
+ const h = transcript.current, box = term.current;
536
+ if (olderBusy || !h || !box || modeRef.current !== "reading" || !screenAt.current.history) return;
537
+ olderBusy = true;
538
+ const fromEnd = box.scrollHeight - box.scrollTop;
539
+ const capped = !h.hasOlder();
540
+ if (!capped) setHistoryNote(tn("loadingEarlier"));
541
+ try {
542
+ const got = await h.older();
543
+ if (!lease.current() || transcript.current !== h) return;
544
+ box.scrollTop = Math.max(0, box.scrollHeight - fromEnd);
545
+ if (!capped) setHistoryNote(got.kind === "failed" ? tn("earlierFailed") : null, got.kind === "failed");
546
+ } finally { olderBusy = false; }
547
+ };
480
548
  follow.current = () => {
481
549
  if (modeRef.current === "follow") return;
550
+ transcript.current = null;
482
551
  setMode("follow"); setNewBelow(false); setHistoryNote(null); screenAt.current.history = false;
483
552
  const latest = screenAt.current.latest;
484
553
  if (latest != null && pre.current) { draw(latest); fit(); }
@@ -501,7 +570,9 @@ function Terminal({ name, lease, density, every = 800, backend = "", signedIn =
501
570
  // Asking for the earlier output: from following, or from reading the screen as it was — at the top.
502
571
  const mayLoad = () => (modeRef.current === "follow" || (modeRef.current === "reading" && !screenAt.current.history)) && box.scrollTop <= 0;
503
572
  const gesture = () => { gestureAt.current = performance.now(); };
504
- lease.on(box, "wheel", (e) => { gesture(); if (e.deltaY < 0 && mayLoad()) loadEarlier.current(); }, { passive: true });
573
+ // Claude's history being read, at (or near) its top: the page before it.
574
+ const nearTop = () => modeRef.current === "reading" && screenAt.current.history && transcript.current && box.scrollTop <= OLDER_AT_PX;
575
+ lease.on(box, "wheel", (e) => { gesture(); if (e.deltaY < 0 && mayLoad()) loadEarlier.current(); else if (e.deltaY < 0 && nearTop()) olderPage.current(); }, { passive: true });
505
576
  let touchY = null;
506
577
  lease.on(box, "touchstart", (e) => { gesture(); touchY = e.touches && e.touches[0] ? e.touches[0].clientY : null; }, { passive: true });
507
578
  lease.on(box, "touchmove", (e) => {
@@ -509,15 +580,17 @@ function Terminal({ name, lease, density, every = 800, backend = "", signedIn =
509
580
  const y = e.touches && e.touches[0] ? e.touches[0].clientY : null;
510
581
  if (touchY == null || y == null) return;
511
582
  if (y - touchY > 24 && mayLoad()) { touchY = null; loadEarlier.current(); }
583
+ else if (y - touchY > 24 && nearTop()) { touchY = null; olderPage.current(); }
512
584
  }, { passive: true });
513
585
  lease.on(box, "pointerdown", gesture, { passive: true }); // the scrollbar, dragged
514
586
  lease.on(box, "keydown", (e) => {
515
587
  gesture();
516
588
  if ((e.key === "PageUp" || e.key === "ArrowUp" || e.key === "Home") && mayLoad()) { e.preventDefault(); loadEarlier.current(); }
589
+ else if ((e.key === "PageUp" || e.key === "ArrowUp" || e.key === "Home") && nearTop()) olderPage.current();
517
590
  else if (modeRef.current === "reading" && e.key === "End") { e.preventDefault(); follow.current(); }
518
591
  });
519
592
  lease.on(box, "scroll", () => {
520
- if (modeRef.current === "reading") { if (atBottom()) follow.current(); return; }
593
+ if (modeRef.current === "reading") { if (atBottom()) follow.current(); else if (nearTop()) olderPage.current(); return; }
521
594
  // #2969 review (Prism P2): a screen taller than its box (a larger Aa), moved up from the bottom by the person:
522
595
  // reading what is on it — the refresh no longer pulls them back down.
523
596
  if (modeRef.current === "follow" && recentGesture() && !atBottom()) startReading(screenAt.current.drawn, false);