@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.
- package/THIRD_PARTY_NOTICES.md +52 -0
- package/dist/accounts-view.d.ts +97 -0
- package/dist/accounts-view.js +116 -0
- package/dist/accounts-view.js.map +1 -0
- package/dist/agent-cli-instructions.md +1 -1
- package/dist/agent-credentials.d.ts +24 -0
- package/dist/agent-credentials.js +66 -0
- package/dist/agent-credentials.js.map +1 -0
- package/dist/agent-endpoint.d.ts +3 -1
- package/dist/agent-endpoint.js +13 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.js +1 -1
- package/dist/agent-file-read.js.map +1 -1
- package/dist/agent-runtime-change.d.ts +3 -1
- package/dist/agent-runtime-change.js +15 -3
- package/dist/agent-runtime-change.js.map +1 -1
- package/dist/agent-workspace.d.ts +93 -0
- package/dist/agent-workspace.js +353 -0
- package/dist/agent-workspace.js.map +1 -0
- package/dist/auth-api.d.ts +27 -0
- package/dist/auth-api.js +164 -3
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/session-authorizations.d.ts +28 -4
- package/dist/authority/session-authorizations.js +63 -17
- package/dist/authority/session-authorizations.js.map +1 -1
- package/dist/backend/antigravity.js +3 -1
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/codex-footer-hints.d.ts +3 -0
- package/dist/backend/codex-footer-hints.js +14 -0
- package/dist/backend/codex-footer-hints.js.map +1 -1
- package/dist/backend/codex-metadata.d.ts +14 -0
- package/dist/backend/codex-metadata.js +45 -0
- package/dist/backend/codex-metadata.js.map +1 -1
- package/dist/backend/codex-quota-history.d.ts +7 -0
- package/dist/backend/codex-quota-history.js +57 -0
- package/dist/backend/codex-quota-history.js.map +1 -0
- package/dist/backend/codex-session-lookup.d.ts +6 -0
- package/dist/backend/codex-session-lookup.js +1 -1
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex-speed.d.ts +14 -0
- package/dist/backend/codex-speed.js +35 -0
- package/dist/backend/codex-speed.js.map +1 -0
- package/dist/backend/codex.d.ts +7 -0
- package/dist/backend/codex.js +78 -15
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/grok-weekly-reset.d.ts +24 -0
- package/dist/backend/grok-weekly-reset.js +95 -0
- package/dist/backend/grok-weekly-reset.js.map +1 -0
- package/dist/backend/grok.d.ts +30 -1
- package/dist/backend/grok.js +301 -54
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro.d.ts +3 -0
- package/dist/backend/kiro.js +50 -2
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.js +5 -3
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/native-pane.d.ts +3 -1
- package/dist/backend/native-pane.js +2 -2
- package/dist/backend/native-pane.js.map +1 -1
- package/dist/backend/types.d.ts +13 -1
- package/dist/backend/types.js +3 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/build-provenance-cli.d.ts +3 -0
- package/dist/build-provenance-cli.js +11 -0
- package/dist/build-provenance-cli.js.map +1 -0
- package/dist/build-provenance.d.ts +20 -0
- package/dist/build-provenance.js +67 -0
- package/dist/build-provenance.js.map +1 -0
- package/dist/build-provenance.json +1 -0
- package/dist/cache-ledger.d.ts +95 -0
- package/dist/cache-ledger.js +276 -4
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-service.d.ts +5 -0
- package/dist/cache-service.js +16 -4
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.js +11 -3
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +51 -0
- package/dist/channel/adapters/telegram.js +235 -17
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/mcp-tools.js +3 -3
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/types.d.ts +2 -0
- package/dist/claude-auth-status.d.ts +48 -0
- package/dist/claude-auth-status.js +149 -0
- package/dist/claude-auth-status.js.map +1 -0
- package/dist/cli.js +138 -37
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +21 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/cross-instance-notice.d.ts +10 -0
- package/dist/cross-instance-notice.js +67 -5
- package/dist/cross-instance-notice.js.map +1 -1
- package/dist/daemon.d.ts +70 -1
- package/dist/daemon.js +547 -25
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +8 -0
- package/dist/dashboard-permissions.js +16 -0
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +23 -1
- package/dist/delivery-consumed-watch.js +30 -3
- package/dist/delivery-consumed-watch.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +1 -1
- package/dist/delivery-reconciliation.js +1 -1
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/doctor.js +20 -9
- package/dist/doctor.js.map +1 -1
- package/dist/export-import.d.ts +7 -0
- package/dist/export-import.js +44 -10
- package/dist/export-import.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -0
- package/dist/fleet-manager.d.ts +359 -7
- package/dist/fleet-manager.js +1365 -90
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-windows-runtime.d.ts +2 -1
- package/dist/fleet-windows-runtime.js +25 -7
- package/dist/fleet-windows-runtime.js.map +1 -1
- package/dist/general-knowledge/skills/concepts/SKILL.md +425 -0
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +5 -2
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +1 -0
- package/dist/general-knowledge/skills/fleet-health/SKILL.md +2 -2
- package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +3 -1
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +41 -4
- package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
- package/dist/general-knowledge/skills/tui-effort/SKILL.md +10 -10
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +31 -15
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
- package/dist/general-role.d.ts +1 -1
- package/dist/general-role.js +1 -0
- package/dist/general-role.js.map +1 -1
- package/dist/hub/admission.d.ts +28 -0
- package/dist/hub/admission.js +62 -0
- package/dist/hub/admission.js.map +1 -0
- package/dist/hub/attachments/limits.d.ts +20 -0
- package/dist/hub/attachments/limits.js +48 -0
- package/dist/hub/attachments/limits.js.map +1 -0
- package/dist/hub/attachments/store.d.ts +116 -0
- package/dist/hub/attachments/store.js +246 -0
- package/dist/hub/attachments/store.js.map +1 -0
- package/dist/hub/audit/index.d.ts +62 -0
- package/dist/hub/audit/index.js +344 -0
- package/dist/hub/audit/index.js.map +1 -0
- package/dist/hub/browser-certificate.d.ts +38 -0
- package/dist/hub/browser-certificate.js +247 -0
- package/dist/hub/browser-certificate.js.map +1 -0
- package/dist/hub/buttons-model.d.ts +9 -0
- package/dist/hub/buttons-model.js +42 -0
- package/dist/hub/buttons-model.js.map +1 -0
- package/dist/hub/buttons.d.ts +54 -0
- package/dist/hub/buttons.js +346 -0
- package/dist/hub/buttons.js.map +1 -0
- package/dist/hub/catalog.d.ts +74 -0
- package/dist/hub/catalog.js +195 -0
- package/dist/hub/catalog.js.map +1 -0
- package/dist/hub/client.d.ts +69 -0
- package/dist/hub/client.js +300 -0
- package/dist/hub/client.js.map +1 -0
- package/dist/hub/compose/member.d.ts +139 -0
- package/dist/hub/compose/member.js +450 -0
- package/dist/hub/compose/member.js.map +1 -0
- package/dist/hub/compose/server.d.ts +77 -0
- package/dist/hub/compose/server.js +349 -0
- package/dist/hub/compose/server.js.map +1 -0
- package/dist/hub/compose/views.d.ts +12 -0
- package/dist/hub/compose/views.js +4 -0
- package/dist/hub/compose/views.js.map +1 -0
- package/dist/hub/db.d.ts +56 -0
- package/dist/hub/db.js +188 -0
- package/dist/hub/db.js.map +1 -0
- package/dist/hub/directory/config.d.ts +39 -0
- package/dist/hub/directory/config.js +108 -0
- package/dist/hub/directory/config.js.map +1 -0
- package/dist/hub/directory/directory.d.ts +18 -0
- package/dist/hub/directory/directory.js +320 -0
- package/dist/hub/directory/directory.js.map +1 -0
- package/dist/hub/directory/index.d.ts +7 -0
- package/dist/hub/directory/index.js +4 -0
- package/dist/hub/directory/index.js.map +1 -0
- package/dist/hub/directory/profiles.d.ts +41 -0
- package/dist/hub/directory/profiles.js +90 -0
- package/dist/hub/directory/profiles.js.map +1 -0
- package/dist/hub/directory/types.d.ts +71 -0
- package/dist/hub/directory/types.js +14 -0
- package/dist/hub/directory/types.js.map +1 -0
- package/dist/hub/execution/cli-provider.d.ts +23 -0
- package/dist/hub/execution/cli-provider.js +341 -0
- package/dist/hub/execution/cli-provider.js.map +1 -0
- package/dist/hub/execution/index.d.ts +13 -0
- package/dist/hub/execution/index.js +8 -0
- package/dist/hub/execution/index.js.map +1 -0
- package/dist/hub/execution/model-broker.d.ts +24 -0
- package/dist/hub/execution/model-broker.js +208 -0
- package/dist/hub/execution/model-broker.js.map +1 -0
- package/dist/hub/execution/provider-setup.d.ts +11 -0
- package/dist/hub/execution/provider-setup.js +21 -0
- package/dist/hub/execution/provider-setup.js.map +1 -0
- package/dist/hub/execution/sandbox-runner.d.ts +1 -0
- package/dist/hub/execution/sandbox-runner.js +221 -0
- package/dist/hub/execution/sandbox-runner.js.map +1 -0
- package/dist/hub/execution/service.d.ts +136 -0
- package/dist/hub/execution/service.js +459 -0
- package/dist/hub/execution/service.js.map +1 -0
- package/dist/hub/execution/store.d.ts +61 -0
- package/dist/hub/execution/store.js +182 -0
- package/dist/hub/execution/store.js.map +1 -0
- package/dist/hub/execution/views.d.ts +20 -0
- package/dist/hub/execution/views.js +48 -0
- package/dist/hub/execution/views.js.map +1 -0
- package/dist/hub/http/compose.d.ts +20 -0
- package/dist/hub/http/compose.js +518 -0
- package/dist/hub/http/compose.js.map +1 -0
- package/dist/hub/http/core.d.ts +49 -0
- package/dist/hub/http/core.js +124 -0
- package/dist/hub/http/core.js.map +1 -0
- package/dist/hub/http/deps.d.ts +61 -0
- package/dist/hub/http/deps.js +2 -0
- package/dist/hub/http/deps.js.map +1 -0
- package/dist/hub/http/schema.d.ts +14 -0
- package/dist/hub/http/schema.js +80 -0
- package/dist/hub/http/schema.js.map +1 -0
- package/dist/hub/identity.d.ts +32 -0
- package/dist/hub/identity.js +80 -0
- package/dist/hub/identity.js.map +1 -0
- package/dist/hub/init/browser-certificate.d.ts +9 -0
- package/dist/hub/init/browser-certificate.js +78 -0
- package/dist/hub/init/browser-certificate.js.map +1 -0
- package/dist/hub/init/browser-tls.d.ts +18 -0
- package/dist/hub/init/browser-tls.js +62 -0
- package/dist/hub/init/browser-tls.js.map +1 -0
- package/dist/hub/init/cli.d.ts +3 -0
- package/dist/hub/init/cli.js +83 -0
- package/dist/hub/init/cli.js.map +1 -0
- package/dist/hub/init/directory-certificate.d.ts +24 -0
- package/dist/hub/init/directory-certificate.js +222 -0
- package/dist/hub/init/directory-certificate.js.map +1 -0
- package/dist/hub/init/existing-fleet.d.ts +6 -0
- package/dist/hub/init/existing-fleet.js +58 -0
- package/dist/hub/init/existing-fleet.js.map +1 -0
- package/dist/hub/init/handoff.d.ts +8 -0
- package/dist/hub/init/handoff.js +36 -0
- package/dist/hub/init/handoff.js.map +1 -0
- package/dist/hub/init/identity.d.ts +5 -0
- package/dist/hub/init/identity.js +24 -0
- package/dist/hub/init/identity.js.map +1 -0
- package/dist/hub/init/initializer.d.ts +24 -0
- package/dist/hub/init/initializer.js +385 -0
- package/dist/hub/init/initializer.js.map +1 -0
- package/dist/hub/init/inventory.d.ts +17 -0
- package/dist/hub/init/inventory.js +33 -0
- package/dist/hub/init/inventory.js.map +1 -0
- package/dist/hub/init/layout.d.ts +32 -0
- package/dist/hub/init/layout.js +53 -0
- package/dist/hub/init/layout.js.map +1 -0
- package/dist/hub/init/network.d.ts +18 -0
- package/dist/hub/init/network.js +104 -0
- package/dist/hub/init/network.js.map +1 -0
- package/dist/hub/init/plan-digest.d.ts +5 -0
- package/dist/hub/init/plan-digest.js +47 -0
- package/dist/hub/init/plan-digest.js.map +1 -0
- package/dist/hub/init/prompt.d.ts +26 -0
- package/dist/hub/init/prompt.js +110 -0
- package/dist/hub/init/prompt.js.map +1 -0
- package/dist/hub/init/secret-file.d.ts +1 -0
- package/dist/hub/init/secret-file.js +59 -0
- package/dist/hub/init/secret-file.js.map +1 -0
- package/dist/hub/init/text.d.ts +127 -0
- package/dist/hub/init/text.js +247 -0
- package/dist/hub/init/text.js.map +1 -0
- package/dist/hub/init/types.d.ts +114 -0
- package/dist/hub/init/types.js +9 -0
- package/dist/hub/init/types.js.map +1 -0
- package/dist/hub/init/wizard.d.ts +34 -0
- package/dist/hub/init/wizard.js +554 -0
- package/dist/hub/init/wizard.js.map +1 -0
- package/dist/hub/initialization.d.ts +23 -0
- package/dist/hub/initialization.js +28 -0
- package/dist/hub/initialization.js.map +1 -0
- package/dist/hub/member/agent-mode.d.ts +6 -0
- package/dist/hub/member/agent-mode.js +23 -0
- package/dist/hub/member/agent-mode.js.map +1 -0
- package/dist/hub/member/attachments.d.ts +29 -0
- package/dist/hub/member/attachments.js +107 -0
- package/dist/hub/member/attachments.js.map +1 -0
- package/dist/hub/member/exposure-api.d.ts +87 -0
- package/dist/hub/member/exposure-api.js +64 -0
- package/dist/hub/member/exposure-api.js.map +1 -0
- package/dist/hub/member/exposures.d.ts +123 -0
- package/dist/hub/member/exposures.js +282 -0
- package/dist/hub/member/exposures.js.map +1 -0
- package/dist/hub/member/pairing-api.d.ts +85 -0
- package/dist/hub/member/pairing-api.js +385 -0
- package/dist/hub/member/pairing-api.js.map +1 -0
- package/dist/hub/member/quota.d.ts +20 -0
- package/dist/hub/member/quota.js +98 -0
- package/dist/hub/member/quota.js.map +1 -0
- package/dist/hub/member-journal.d.ts +104 -0
- package/dist/hub/member-journal.js +336 -0
- package/dist/hub/member-journal.js.map +1 -0
- package/dist/hub/member-reconciliation.d.ts +14 -0
- package/dist/hub/member-reconciliation.js +97 -0
- package/dist/hub/member-reconciliation.js.map +1 -0
- package/dist/hub/mount.d.ts +39 -0
- package/dist/hub/mount.js +123 -0
- package/dist/hub/mount.js.map +1 -0
- package/dist/hub/pairing-client.d.ts +17 -0
- package/dist/hub/pairing-client.js +108 -0
- package/dist/hub/pairing-client.js.map +1 -0
- package/dist/hub/pairing.d.ts +65 -0
- package/dist/hub/pairing.js +211 -0
- package/dist/hub/pairing.js.map +1 -0
- package/dist/hub/policy.d.ts +63 -0
- package/dist/hub/policy.js +147 -0
- package/dist/hub/policy.js.map +1 -0
- package/dist/hub/preview.d.ts +32 -0
- package/dist/hub/preview.js +64 -0
- package/dist/hub/preview.js.map +1 -0
- package/dist/hub/private-files.d.ts +5 -0
- package/dist/hub/private-files.js +44 -0
- package/dist/hub/private-files.js.map +1 -0
- package/dist/hub/profile.d.ts +59 -0
- package/dist/hub/profile.js +73 -0
- package/dist/hub/profile.js.map +1 -0
- package/dist/hub/protocol.d.ts +779 -0
- package/dist/hub/protocol.js +93 -0
- package/dist/hub/protocol.js.map +1 -0
- package/dist/hub/quota.d.ts +24 -0
- package/dist/hub/quota.js +112 -0
- package/dist/hub/quota.js.map +1 -0
- package/dist/hub/representative.d.ts +141 -0
- package/dist/hub/representative.js +528 -0
- package/dist/hub/representative.js.map +1 -0
- package/dist/hub/retention.d.ts +17 -0
- package/dist/hub/retention.js +45 -0
- package/dist/hub/retention.js.map +1 -0
- package/dist/hub/rooms.d.ts +120 -0
- package/dist/hub/rooms.js +535 -0
- package/dist/hub/rooms.js.map +1 -0
- package/dist/hub/runtime.d.ts +106 -0
- package/dist/hub/runtime.js +298 -0
- package/dist/hub/runtime.js.map +1 -0
- package/dist/hub/server.d.ts +56 -0
- package/dist/hub/server.js +202 -0
- package/dist/hub/server.js.map +1 -0
- package/dist/hub/service-start.d.ts +17 -0
- package/dist/hub/service-start.js +109 -0
- package/dist/hub/service-start.js.map +1 -0
- package/dist/hub/sessions.d.ts +53 -0
- package/dist/hub/sessions.js +196 -0
- package/dist/hub/sessions.js.map +1 -0
- package/dist/hub/socket.d.ts +24 -0
- package/dist/hub/socket.js +79 -0
- package/dist/hub/socket.js.map +1 -0
- package/dist/hub/store.d.ts +77 -0
- package/dist/hub/store.js +88 -0
- package/dist/hub/store.js.map +1 -0
- package/dist/hub/tls.d.ts +31 -0
- package/dist/hub/tls.js +135 -0
- package/dist/hub/tls.js.map +1 -0
- package/dist/hub/types.d.ts +401 -0
- package/dist/hub/types.js +2 -0
- package/dist/hub/types.js.map +1 -0
- package/dist/hub/validation.d.ts +33 -0
- package/dist/hub/validation.js +136 -0
- package/dist/hub/validation.js.map +1 -0
- package/dist/hub/version-floor.d.ts +10 -0
- package/dist/hub/version-floor.js +45 -0
- package/dist/hub/version-floor.js.map +1 -0
- package/dist/hub-browser-certificate-policy.d.ts +31 -0
- package/dist/hub-browser-certificate-policy.js +25 -0
- package/dist/hub-browser-certificate-policy.js.map +1 -0
- package/dist/hub-membership-settings.d.ts +6 -0
- package/dist/hub-membership-settings.js +21 -0
- package/dist/hub-membership-settings.js.map +1 -0
- package/dist/hub-mode.d.ts +15 -0
- package/dist/hub-mode.js +17 -0
- package/dist/hub-mode.js.map +1 -0
- package/dist/hub-pairing-summary.d.ts +48 -0
- package/dist/hub-pairing-summary.js +36 -0
- package/dist/hub-pairing-summary.js.map +1 -0
- package/dist/hub-report-target.d.ts +32 -0
- package/dist/hub-report-target.js +33 -0
- package/dist/hub-report-target.js.map +1 -0
- package/dist/hub-retention-policy.d.ts +14 -0
- package/dist/hub-retention-policy.js +15 -0
- package/dist/hub-retention-policy.js.map +1 -0
- package/dist/instance-config-impact.js +3 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +17 -2
- package/dist/instance-lifecycle.js +58 -8
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instance-topic-delete.d.ts +77 -0
- package/dist/instance-topic-delete.js +123 -0
- package/dist/instance-topic-delete.js.map +1 -0
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.js +1 -1
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-engine-status.d.ts +11 -0
- package/dist/kiro-engine-status.js +6 -0
- package/dist/kiro-engine-status.js.map +1 -1
- package/dist/launchd-service-domain.d.ts +5 -0
- package/dist/launchd-service-domain.js +21 -0
- package/dist/launchd-service-domain.js.map +1 -0
- package/dist/locale.js +125 -3
- package/dist/locale.js.map +1 -1
- package/dist/log-service.d.ts +28 -0
- package/dist/log-service.js +29 -0
- package/dist/log-service.js.map +1 -1
- package/dist/log-steps.d.ts +4 -3
- package/dist/log-steps.js +32 -7
- package/dist/log-steps.js.map +1 -1
- package/dist/logger.d.ts +16 -2
- package/dist/logger.js +346 -66
- package/dist/logger.js.map +1 -1
- package/dist/login-flows.d.ts +15 -7
- package/dist/login-flows.js +29 -3
- package/dist/login-flows.js.map +1 -1
- package/dist/login-manager.js +25 -4
- package/dist/login-manager.js.map +1 -1
- package/dist/ls-rows.js +3 -4
- package/dist/ls-rows.js.map +1 -1
- package/dist/missed-offline.d.ts +25 -0
- package/dist/missed-offline.js +79 -0
- package/dist/missed-offline.js.map +1 -0
- package/dist/native-instance-api.d.ts +0 -1
- package/dist/native-instance-api.js +15 -3
- package/dist/native-instance-api.js.map +1 -1
- package/dist/native-instance-input.d.ts +3 -0
- package/dist/native-instance-input.js +6 -1
- package/dist/native-instance-input.js.map +1 -1
- package/dist/native-instance-registry.d.ts +6 -0
- package/dist/native-instance-registry.js +24 -0
- package/dist/native-instance-registry.js.map +1 -1
- package/dist/native-mcp.d.ts +3 -0
- package/dist/native-mcp.js +15 -2
- package/dist/native-mcp.js.map +1 -1
- package/dist/native-pane-lifecycle.d.ts +8 -0
- package/dist/native-pane-lifecycle.js +13 -4
- package/dist/native-pane-lifecycle.js.map +1 -1
- package/dist/native-pane-manager.js +17 -9
- package/dist/native-pane-manager.js.map +1 -1
- package/dist/needs-you-hub.d.ts +9 -1
- package/dist/needs-you-hub.js +46 -8
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +47 -2
- package/dist/needs-you.js +31 -3
- package/dist/needs-you.js.map +1 -1
- package/dist/office-share-page.js +2 -2
- package/dist/office-share-page.js.map +1 -1
- package/dist/office-share.d.ts +11 -0
- package/dist/office-share.js +14 -0
- package/dist/office-share.js.map +1 -1
- package/dist/office-talk.d.ts +26 -0
- package/dist/office-talk.js +50 -0
- package/dist/office-talk.js.map +1 -0
- package/dist/outbound-handlers.d.ts +14 -0
- package/dist/outbound-handlers.js +49 -6
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +33 -1
- package/dist/outbound-schemas.js +29 -16
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/pane-quota-history.d.ts +9 -0
- package/dist/pane-quota-history.js +67 -0
- package/dist/pane-quota-history.js.map +1 -0
- package/dist/pause-marker.d.ts +1 -1
- package/dist/pause-marker.js +1 -1
- package/dist/pause-marker.js.map +1 -1
- package/dist/platform-general.d.ts +46 -0
- package/dist/platform-general.js +91 -0
- package/dist/platform-general.js.map +1 -0
- package/dist/public-web-gateway.js +7 -0
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/queued-handoffs.d.ts +33 -0
- package/dist/queued-handoffs.js +75 -0
- package/dist/queued-handoffs.js.map +1 -0
- package/dist/quickstart.d.ts +13 -0
- package/dist/quickstart.js +81 -5
- package/dist/quickstart.js.map +1 -1
- package/dist/quota-notice.d.ts +7 -0
- package/dist/quota-notice.js +40 -0
- package/dist/quota-notice.js.map +1 -1
- package/dist/reply-buttons-controller.js +10 -6
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/reply-polls.d.ts +2 -2
- package/dist/reply-polls.js +3 -3
- package/dist/reply-polls.js.map +1 -1
- package/dist/runtime-api.d.ts +2 -0
- package/dist/runtime-api.js +25 -7
- package/dist/runtime-api.js.map +1 -1
- package/dist/runtime-build-info.js +5 -3
- package/dist/runtime-build-info.js.map +1 -1
- package/dist/runtime-bundle.d.ts +3 -0
- package/dist/runtime-bundle.js +3 -1
- package/dist/runtime-bundle.js.map +1 -1
- package/dist/runtime-cli.d.ts +8 -1
- package/dist/runtime-cli.js +127 -8
- package/dist/runtime-cli.js.map +1 -1
- package/dist/runtime-client-store.d.ts +7 -0
- package/dist/runtime-client-store.js +30 -2
- package/dist/runtime-client-store.js.map +1 -1
- package/dist/runtime-client.d.ts +63 -1
- package/dist/runtime-client.js +295 -21
- package/dist/runtime-client.js.map +1 -1
- package/dist/runtime-coordinator.d.ts +7 -0
- package/dist/runtime-coordinator.js +213 -35
- package/dist/runtime-coordinator.js.map +1 -1
- package/dist/runtime-credential-profiles.d.ts +78 -0
- package/dist/runtime-credential-profiles.js +280 -0
- package/dist/runtime-credential-profiles.js.map +1 -0
- package/dist/runtime-install.d.ts +50 -0
- package/dist/runtime-install.js +186 -0
- package/dist/runtime-install.js.map +1 -0
- package/dist/runtime-pane-assets.d.ts +1 -1
- package/dist/runtime-pane-assets.js +1 -1
- package/dist/runtime-pane-assets.js.map +1 -1
- package/dist/runtime-pane-codex-index.d.ts +10 -1
- package/dist/runtime-pane-codex-index.js +131 -27
- package/dist/runtime-pane-codex-index.js.map +1 -1
- package/dist/runtime-pane-host.d.ts +19 -0
- package/dist/runtime-pane-host.js +50 -7
- package/dist/runtime-pane-host.js.map +1 -1
- package/dist/runtime-pane-link.d.ts +7 -0
- package/dist/runtime-pane-link.js +93 -2
- package/dist/runtime-pane-link.js.map +1 -1
- package/dist/runtime-pane-mcp-relay.d.ts +1 -0
- package/dist/runtime-pane-mcp-relay.js +10 -0
- package/dist/runtime-pane-mcp-relay.js.map +1 -1
- package/dist/runtime-pane-mcp.d.ts +4 -0
- package/dist/runtime-pane-mcp.js +6 -3
- package/dist/runtime-pane-mcp.js.map +1 -1
- package/dist/runtime-pane-native.d.ts +32 -2
- package/dist/runtime-pane-native.js +55 -6
- package/dist/runtime-pane-native.js.map +1 -1
- package/dist/runtime-pane-port.d.ts +5 -0
- package/dist/runtime-pane-port.js +17 -1
- package/dist/runtime-pane-port.js.map +1 -1
- package/dist/runtime-pane-process.d.ts +1 -1
- package/dist/runtime-pane-process.js +11 -2
- package/dist/runtime-pane-process.js.map +1 -1
- package/dist/runtime-pane-protocol.d.ts +11 -1
- package/dist/runtime-pane-protocol.js +27 -5
- package/dist/runtime-pane-protocol.js.map +1 -1
- package/dist/runtime-pane-quota-history.d.ts +6 -0
- package/dist/runtime-pane-quota-history.js +44 -0
- package/dist/runtime-pane-quota-history.js.map +1 -0
- package/dist/runtime-pane-service.d.ts +5 -0
- package/dist/runtime-pane-service.js +47 -12
- package/dist/runtime-pane-service.js.map +1 -1
- package/dist/runtime-pane-transcript.d.ts +5 -0
- package/dist/runtime-pane-transcript.js +66 -5
- package/dist/runtime-pane-transcript.js.map +1 -1
- package/dist/runtime-pane-worker.js +19 -6
- package/dist/runtime-pane-worker.js.map +1 -1
- package/dist/runtime-protocol.d.ts +17 -2
- package/dist/runtime-protocol.js +12 -0
- package/dist/runtime-protocol.js.map +1 -1
- package/dist/runtime-update-activity.d.ts +21 -0
- package/dist/runtime-update-activity.js +51 -0
- package/dist/runtime-update-activity.js.map +1 -0
- package/dist/runtime-update-artifact.d.ts +31 -0
- package/dist/runtime-update-artifact.js +252 -0
- package/dist/runtime-update-artifact.js.map +1 -0
- package/dist/runtime-update-install.d.ts +31 -0
- package/dist/runtime-update-install.js +205 -0
- package/dist/runtime-update-install.js.map +1 -0
- package/dist/runtime-update-journal.d.ts +44 -0
- package/dist/runtime-update-journal.js +121 -0
- package/dist/runtime-update-journal.js.map +1 -0
- package/dist/runtime-update-lock.d.ts +48 -0
- package/dist/runtime-update-lock.js +217 -0
- package/dist/runtime-update-lock.js.map +1 -0
- package/dist/runtime-update-owners.d.ts +29 -0
- package/dist/runtime-update-owners.js +240 -0
- package/dist/runtime-update-owners.js.map +1 -0
- package/dist/runtime-update-protocol.d.ts +15 -0
- package/dist/runtime-update-protocol.js +13 -0
- package/dist/runtime-update-protocol.js.map +1 -0
- package/dist/runtime-windows-bridge.d.ts +2 -1
- package/dist/runtime-windows-bridge.js +11 -1
- package/dist/runtime-windows-bridge.js.map +1 -1
- package/dist/scheduler/db.d.ts +2 -1
- package/dist/scheduler/db.js +23 -9
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/task-board-text.js +1 -1
- package/dist/scheduler/task-board-text.js.map +1 -1
- package/dist/scheduler/task-board.d.ts +13 -0
- package/dist/scheduler/task-board.js +28 -3
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/service-drain.d.ts +19 -0
- package/dist/service-drain.js +64 -0
- package/dist/service-drain.js.map +1 -0
- package/dist/service-installer.d.ts +7 -2
- package/dist/service-installer.js +13 -10
- package/dist/service-installer.js.map +1 -1
- package/dist/settings-api.d.ts +20 -0
- package/dist/settings-api.js +414 -4
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-baseline.d.ts +6 -0
- package/dist/settings-baseline.js +3 -1
- package/dist/settings-baseline.js.map +1 -1
- package/dist/settings-change.js +29 -6
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.d.ts +13 -0
- package/dist/settings-effect.js +97 -0
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.js +13 -1
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/settings-instance-patch.js +27 -0
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-wizard.js +6 -2
- package/dist/setup-wizard.js.map +1 -1
- package/dist/task-board-tool.d.ts +13 -1
- package/dist/task-board-tool.js +104 -4
- package/dist/task-board-tool.js.map +1 -1
- package/dist/task-board-waker.d.ts +6 -0
- package/dist/task-board-waker.js +4 -0
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tmux-binary.d.ts +59 -0
- package/dist/tmux-binary.js +200 -0
- package/dist/tmux-binary.js.map +1 -0
- package/dist/tmux-control.js +4 -4
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-exec-helper.js +32 -1
- package/dist/tmux-exec-helper.js.map +1 -1
- package/dist/tmux-manager.d.ts +1 -1
- package/dist/tmux-manager.js +45 -36
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.js +4 -3
- package/dist/tmux-read.js.map +1 -1
- package/dist/tool-permissions.d.ts +5 -2
- package/dist/tool-permissions.js +6 -5
- package/dist/tool-permissions.js.map +1 -1
- package/dist/tool-progress.d.ts +2 -0
- package/dist/tool-progress.js +19 -3
- package/dist/tool-progress.js.map +1 -1
- package/dist/topic-commands.js +10 -5
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-monitor.d.ts +20 -0
- package/dist/transcript-monitor.js +47 -3
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/transcript-needles.d.ts +7 -0
- package/dist/transcript-needles.js +9 -1
- package/dist/transcript-needles.js.map +1 -1
- package/dist/transcript-records.d.ts +1 -1
- package/dist/transcript-records.js +2 -1
- package/dist/transcript-records.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/ui/account-identity.js +27 -0
- package/dist/ui/accounts-view.js +214 -0
- package/dist/ui/agent-runtime-settings.js +9 -8
- package/dist/ui/backend-signin.js +4 -1
- package/dist/ui/chat-ambient.js +1 -1
- package/dist/ui/chat-md-strings.js +3 -0
- package/dist/ui/chat-render.js +3 -670
- package/dist/ui/chat-store.js +1 -1
- package/dist/ui/chat-strings.js +3 -333
- package/dist/ui/chat-thread.js +3 -919
- package/dist/ui/chat-time.js +3 -80
- package/dist/ui/chat-tour.js +1 -1
- package/dist/ui/credential-profile-select.js +54 -0
- package/dist/ui/fleet-office-dialogue.d.ts +30 -0
- package/dist/ui/fleet-office-dialogue.js +382 -0
- package/dist/ui/fleet-office-pack.d.ts +9 -0
- package/dist/ui/fleet-office-pack.js +76 -4
- package/dist/ui/fleet-office-skin.js +23 -5
- package/dist/ui/fleet-office-store.js +5 -0
- package/dist/ui/fleet-office.js +173 -6
- package/dist/ui/fleet-task-card.js +10 -6
- package/dist/ui/fleet-task-common.js +12 -2
- package/dist/ui/fleet-task-menu.js +188 -0
- package/dist/ui/fleet-task-stats.js +124 -0
- package/dist/ui/fleet-task-view.js +340 -0
- package/dist/ui/fleet-tasks.js +131 -43
- package/dist/ui/fleet-usage.js +90 -27
- package/dist/ui/html-attachment.js +3 -40
- package/dist/ui/hub-agent-copy.js +23 -0
- package/dist/ui/hub-button-actions.js +65 -0
- package/dist/ui/hub-chat-store.js +158 -0
- package/dist/ui/hub-chat-strings.js +77 -0
- package/dist/ui/hub-client.js +329 -0
- package/dist/ui/hub-owner-strings.js +51 -0
- package/dist/ui/hub-provider-guidance.js +31 -0
- package/dist/ui/hub-quota.js +85 -0
- package/dist/ui/hub-strings.js +162 -0
- package/dist/ui/hub-switcher.js +27 -0
- package/dist/ui/native-pane-recovery.js +1 -1
- package/dist/ui/office-share-page.js +4 -2
- package/dist/ui/panel-chat.js +34 -48
- package/dist/ui/panel-details.js +1 -1
- package/dist/ui/panel-fleet.js +78 -10
- package/dist/ui/panel-hub.js +619 -0
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/panel-needs.js +24 -8
- package/dist/ui/panel-runtimes.js +114 -23
- package/dist/ui/panel-settings.js +69 -80
- package/dist/ui/panel-windows-cli.js +12 -2
- package/dist/ui/preview-pages.js +1 -1
- package/dist/ui/preview-panel.js +92 -6
- package/dist/ui/preview-versions.js +1 -1
- package/dist/ui/preview.js +3 -476
- package/dist/ui/runtime-commands.d.ts +4 -0
- package/dist/ui/runtime-commands.js +59 -0
- package/dist/ui/search-dialog.js +2 -0
- package/dist/ui/settings-access-strings.js +42 -0
- package/dist/ui/settings-build-version.js +35 -0
- package/dist/ui/settings-codex-copy.js +19 -0
- package/dist/ui/settings-devices.js +253 -0
- package/dist/ui/settings-dialogs.js +28 -7
- package/dist/ui/settings-hub-browser-certificate.js +74 -0
- package/dist/ui/settings-hub-membership.js +72 -0
- package/dist/ui/settings-hub-retention.js +52 -0
- package/dist/ui/settings-hub.js +196 -0
- package/dist/ui/settings-layout.js +8 -11
- package/dist/ui/settings-model.js +16 -2
- package/dist/ui/settings-outside.js +104 -38
- package/dist/ui/settings-registry.js +4 -1
- package/dist/ui/settings-shared-strings.js +143 -0
- package/dist/ui/settings-shared.js +345 -0
- package/dist/ui/settings-strings.js +10 -46
- package/dist/ui/settings-web-authority.js +5 -2
- package/dist/ui/shared/accounts.css +15 -0
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-needs.js +1 -1
- package/dist/ui/shared/app-route.js +6 -1
- package/dist/ui/shared/app-session.js +6 -2
- package/dist/ui/shared/app-shell.js +64 -8
- package/dist/ui/shared/app.css +121 -30
- package/dist/ui/shared/app.js +12 -3
- package/dist/ui/shared/chat-composer.js +68 -0
- package/dist/ui/shared/chat-md-strings.js +9 -0
- package/dist/ui/shared/chat-render.js +682 -0
- package/dist/ui/shared/chat-strings.js +333 -0
- package/dist/ui/shared/chat-thread.js +969 -0
- package/dist/ui/shared/chat-time.js +80 -0
- package/dist/ui/shared/header-tools.js +3 -5
- package/dist/ui/shared/html-attachment.js +42 -0
- package/dist/ui/shared/hub-chat.css +85 -0
- package/dist/ui/shared/hub-owner.css +33 -0
- package/dist/ui/shared/hub-quota.css +8 -0
- package/dist/ui/shared/hub.css +71 -0
- package/dist/ui/shared/page-head.js +8 -0
- package/dist/ui/shared/panel-view.js +77 -4
- package/dist/ui/shared/preview.js +476 -0
- package/dist/ui/shared/runtime-install.css +26 -0
- package/dist/ui/shared/side-rail.js +15 -0
- package/dist/ui/shared/signin.js +172 -0
- package/dist/ui/shared/task-board.css +95 -0
- package/dist/ui/shared/usage-dialog.js +18 -1
- package/dist/ui/shared/view-history.css +17 -0
- package/dist/ui/shared/view-history.js +438 -0
- package/dist/ui/shared/view-strings.js +16 -0
- package/dist/ui/shared/workspace.css +20 -0
- package/dist/ui/signin.html +21 -0
- package/dist/ui/workspace-panel.js +189 -0
- package/dist/ui/workspace-strings.js +35 -0
- package/dist/unattended-install.d.ts +11 -2
- package/dist/unattended-install.js +41 -6
- package/dist/unattended-install.js.map +1 -1
- package/dist/usage/capacity.d.ts +69 -0
- package/dist/usage/capacity.js +119 -0
- package/dist/usage/capacity.js.map +1 -0
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +3 -0
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/profile-timeline.d.ts +16 -0
- package/dist/usage/profile-timeline.js +58 -0
- package/dist/usage/profile-timeline.js.map +1 -0
- package/dist/usage/providers.js +2 -1
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/quota-history.d.ts +43 -0
- package/dist/usage/quota-history.js +168 -0
- package/dist/usage/quota-history.js.map +1 -0
- package/dist/usage/usage-api.d.ts +31 -0
- package/dist/usage/usage-api.js +80 -1
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/usage-report.d.ts +25 -1
- package/dist/usage-report.js +55 -4
- package/dist/usage-report.js.map +1 -1
- package/dist/usage-rollup.d.ts +6 -1
- package/dist/usage-rollup.js +16 -4
- package/dist/usage-rollup.js.map +1 -1
- package/dist/view-api.d.ts +16 -0
- package/dist/view-api.js +105 -23
- package/dist/view-api.js.map +1 -1
- package/dist/view-history.d.ts +84 -0
- package/dist/view-history.js +116 -0
- package/dist/view-history.js.map +1 -0
- package/dist/web-api.d.ts +48 -2
- package/dist/web-api.js +276 -8
- package/dist/web-api.js.map +1 -1
- package/dist/web-backend-login.d.ts +23 -1
- package/dist/web-backend-login.js +11 -17
- package/dist/web-backend-login.js.map +1 -1
- package/dist/web-device-login.d.ts +153 -0
- package/dist/web-device-login.js +278 -0
- package/dist/web-device-login.js.map +1 -0
- package/dist/web-office-skins.d.ts +9 -0
- package/dist/web-office-skins.js +16 -1
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-session-authorization.d.ts +13 -2
- package/dist/web-session-authorization.js +10 -3
- package/dist/web-session-authorization.js.map +1 -1
- package/dist/web-session.d.ts +35 -0
- package/dist/web-session.js +7 -0
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +3 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-shell-routes.d.ts +6 -0
- package/dist/web-shell-routes.js +7 -0
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-terminal.d.ts +4 -30
- package/dist/web-terminal.js +9 -6
- package/dist/web-terminal.js.map +1 -1
- package/dist/windows-agents.d.ts +1 -0
- package/dist/windows-agents.js +1 -0
- package/dist/windows-agents.js.map +1 -1
- package/dist/windows-cli-api.d.ts +12 -1
- package/dist/windows-cli-api.js +27 -1
- package/dist/windows-cli-api.js.map +1 -1
- package/dist/windows-cli-providers.d.ts +0 -9
- package/dist/windows-cli-providers.js +4 -9
- package/dist/windows-cli-providers.js.map +1 -1
- package/dist/windows-cli-worker.d.ts +24 -0
- package/dist/windows-cli-worker.js +96 -5
- package/dist/windows-cli-worker.js.map +1 -1
- package/dist/windows-cli.d.ts +10 -0
- package/dist/windows-cli.js +10 -1
- package/dist/windows-cli.js.map +1 -1
- package/dist/yaml-shared-nodes.js +8 -3
- package/dist/yaml-shared-nodes.js.map +1 -1
- package/launcher/agend-install.cjs +8 -1
- package/launcher/launchd-session-type.cjs +14 -0
- package/launcher/postinstall.cjs +27 -2
- package/launcher/private-home.cjs +1 -1
- package/launcher/tmux-bundle.cjs +247 -0
- package/package.json +3 -2
- package/templates/launchd.plist.ejs +3 -1
- package/templates/runtime-install/install.ps1 +270 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** Hub F's four chat-store hooks. Shared thread markup stays unchanged; the server owns authorization and votes. */
|
|
2
|
+
const SET_ID = /^[a-f0-9]{32}$/;
|
|
3
|
+
const ownStorage = () => { try { return globalThis.sessionStorage || null; } catch { return null; } };
|
|
4
|
+
const indexes = v => Array.isArray(v) && v.length <= 10 && v.every(i => Number.isInteger(i) && i >= 0 && i < 10) && new Set(v).size === v.length;
|
|
5
|
+
|
|
6
|
+
export function createHubButtonActions(room, { client, entries, refresh, changed = () => {}, storage = ownStorage(), newKey = () => crypto.randomUUID() }) {
|
|
7
|
+
const roomId = String(room.id), prefix = `agend-hub-buttons:${roomId}:`;
|
|
8
|
+
const busy = new Set(), votes = new Map(), pending = new Map();
|
|
9
|
+
let stopped = false;
|
|
10
|
+
const notify = () => { if (!stopped) { try { changed(); } catch { /* a subscriber does not alter a committed action */ } } };
|
|
11
|
+
const read = key => { try { return JSON.parse(storage?.getItem(prefix + key) || "null"); } catch { return null; } };
|
|
12
|
+
const write = (key, value) => { try { if (value === null) storage?.removeItem(prefix + key); else storage?.setItem(prefix + key, JSON.stringify(value)); } catch { /* memory still works when storage is disabled */ } };
|
|
13
|
+
const mine = id => {
|
|
14
|
+
if (!votes.has(id)) { const saved = read(`mine:${id}`); votes.set(id, indexes(saved) ? [...saved].sort((a, b) => a - b) : []); }
|
|
15
|
+
return [...votes.get(id)];
|
|
16
|
+
};
|
|
17
|
+
const view = id => (entries() || []).find(e => e.buttons?.id === id)?.buttons;
|
|
18
|
+
const intent = body => JSON.stringify([body.setId, body.index ?? null, body.options ?? null]);
|
|
19
|
+
async function post(setId, fields) {
|
|
20
|
+
if (stopped) return { ok: false, code: "stopped" };
|
|
21
|
+
if (!room.features?.includes("buttons-v1") || typeof client.chooseButtons !== "function") return { ok: false, code: "unsupported" };
|
|
22
|
+
if (!SET_ID.test(setId)) return { ok: false, code: "invalid" };
|
|
23
|
+
const b = view(setId);
|
|
24
|
+
if (!b || b.state !== "open") return { ok: false, code: "expired" };
|
|
25
|
+
if (busy.has(setId)) return { ok: false, code: "busy" };
|
|
26
|
+
const desired = { setId, ...fields };
|
|
27
|
+
let prior = pending.get(setId) || read(`pending:${setId}`);
|
|
28
|
+
if (prior && (prior.setId !== setId || typeof prior.idempotencyKey !== "string" || intent(prior) !== intent(desired))) return { ok: false, code: "uncertain" };
|
|
29
|
+
const body = prior || { ...desired, idempotencyKey: newKey() };
|
|
30
|
+
pending.set(setId, body); write(`pending:${setId}`, body);
|
|
31
|
+
busy.add(setId); notify();
|
|
32
|
+
try {
|
|
33
|
+
let result;
|
|
34
|
+
try { result = await client.chooseButtons(roomId, body); } catch { result = { ok: false, status: 0, code: "unreachable" }; }
|
|
35
|
+
if (stopped) return { ok: false, code: "stopped" };
|
|
36
|
+
if (result.ok) {
|
|
37
|
+
pending.delete(setId); write(`pending:${setId}`, null);
|
|
38
|
+
if (Array.isArray(body.options)) { votes.set(setId, [...body.options]); write(`mine:${setId}`, body.options); }
|
|
39
|
+
await refresh();
|
|
40
|
+
} else if (result.status >= 400 && result.status < 500) {
|
|
41
|
+
// A definitive refusal may be retried as a new intent. Unknown outcomes retain the SAME key and payload.
|
|
42
|
+
pending.delete(setId); write(`pending:${setId}`, null);
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
} finally { busy.delete(setId); notify(); }
|
|
46
|
+
}
|
|
47
|
+
function vote(setId, options) {
|
|
48
|
+
const b = view(setId);
|
|
49
|
+
if (!b?.poll || !indexes(options) || options.some(i => i >= b.labels.length) || !b.poll.multi && options.length !== 1) return Promise.resolve({ ok: false, code: "invalid" });
|
|
50
|
+
return post(setId, { options: [...options].sort((a, b) => a - b) });
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
clickButton(setId, index) {
|
|
54
|
+
const b = view(setId);
|
|
55
|
+
if (!b || !Number.isInteger(index) || index < 0 || index >= b.labels.length) return Promise.resolve({ ok: false, code: "invalid" });
|
|
56
|
+
if (!b.poll) return post(setId, { index });
|
|
57
|
+
const before = mine(setId), next = b.poll.multi ? (before.includes(index) ? before.filter(i => i !== index) : [...before, index]) : [index];
|
|
58
|
+
return vote(setId, next);
|
|
59
|
+
},
|
|
60
|
+
vote,
|
|
61
|
+
busy: setId => busy.has(setId),
|
|
62
|
+
mine,
|
|
63
|
+
stop() { stopped = true; busy.clear(); },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// #3226 B: one Hub room's chat as the shared thread (/assets/chat-thread.js) draws it — the room's entries read over the
|
|
2
|
+
// Hub's API (hub-client.js), turned into the fleet thread's messages (hubEntryToMessages, the one mapping D, E and F
|
|
3
|
+
// extend), polled while the room is shown, and the asker's own questions sent.
|
|
4
|
+
//
|
|
5
|
+
// Polling: at most once per POLL_MS (the server paces each session's room at the same rate and answers a faster read
|
|
6
|
+
// with backpressure), one request at a time, paused while the page is hidden. Unanswered entries are read again (from
|
|
7
|
+
// just before the oldest open one); answered history is kept. The messages answer carries the room itself (its state,
|
|
8
|
+
// its grant's end, what its link negotiated: `room.features`), fresh each poll.
|
|
9
|
+
import { hubClient } from "./hub-client.js";
|
|
10
|
+
import { createHubButtonActions } from "./hub-button-actions.js";
|
|
11
|
+
|
|
12
|
+
export const POLL_MS = 10_000;
|
|
13
|
+
/** The server's page: at most this many entries per read, the oldest first (rooms.read LIMIT 100). */
|
|
14
|
+
export const PAGE = 100;
|
|
15
|
+
/** How often (every n-th read) an open entry older than the tail page is read from its own place (each in turn). */
|
|
16
|
+
export const FAR_EVERY = 6;
|
|
17
|
+
/** Settled for paging: nothing about them changes on a later read ("uncertain" stays so: it is held, never resolved here). */
|
|
18
|
+
const SETTLED = new Set(["answered", "rejected", "cancelled", "failed", "uncertain"]);
|
|
19
|
+
const iso = (ms) => (Number.isFinite(ms) && ms > 0 ? new Date(ms).toISOString() : undefined);
|
|
20
|
+
|
|
21
|
+
/** A question's stage as the thread's delivery mark: waiting (◷), at the fleet (✓), answered (✓✓), refused (!). */
|
|
22
|
+
export function stageMark(stage) {
|
|
23
|
+
return stage === "queued" ? "queued" : stage === "delivered" || stage === "consumed" ? "processing" : stage === "answered" ? "delivered"
|
|
24
|
+
: stage === "uncertain" ? "cancelled" : "failed";
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* One entry of GET /hub/v1/rooms/:id/messages → the thread's messages: the question (the asker's own, "user"), then the
|
|
29
|
+
* answer (the agent's, under the exposure's name) or, for a question that was not answered, a status line saying why.
|
|
30
|
+
* `question`/`answer` are plain strings (an older tab prints them as text); the files, buttons and quote D, E and F add
|
|
31
|
+
* sit beside them (#3226 seams).
|
|
32
|
+
*/
|
|
33
|
+
export function hubEntryToMessages(entry, room, { me = "", reason = (code) => code || "" } = {}) {
|
|
34
|
+
if (!entry || !Number.isSafeInteger(entry.sequence)) return [];
|
|
35
|
+
const stage = entry.receipt ? entry.receipt.stage : "queued", at = entry.receipt ? entry.receipt.at : undefined;
|
|
36
|
+
const id = entry.sequence * 2, out = [];
|
|
37
|
+
const files = (list) => (Array.isArray(list) && list.length ? { attachments: list } : {});
|
|
38
|
+
out.push({ boot: "hub", id, role: "user", sender: me, ts: iso(entry.askedAt) ?? iso(at),
|
|
39
|
+
text: entry.expired && entry.question === undefined ? "" : String(entry.question ?? ""), delivery: stageMark(stage),
|
|
40
|
+
...files(entry.questionFiles), ...(entry.quote ? { quote: entry.quote } : {}) });
|
|
41
|
+
if (entry.answer !== undefined) {
|
|
42
|
+
out.push({ boot: "hub", id: id + 1, role: "agent", sender: (room && room.exposureName) || "", ts: iso(at), text: String(entry.answer),
|
|
43
|
+
...files(entry.answerFiles), ...(entry.buttons ? { buttons: entry.buttons } : {}) });
|
|
44
|
+
} else if (stage === "rejected" || stage === "cancelled" || stage === "failed" || stage === "uncertain") {
|
|
45
|
+
out.push({ boot: "hub", id: id + 1, role: "status", sender: "", ts: iso(at), text: reason(entry.receipt && entry.receipt.reasonCode, stage) });
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The store of one room: `subscribe(fn)` (fn() on any change) → unsubscribe; `messages()`, `room()`, `working()` (the
|
|
52
|
+
* question being worked on, if any: { since }), `closed()`; `refresh()` (a read now); `send(text, extras)`;
|
|
53
|
+
* F's `clickButton(setId, index)`, `vote(setId, options)`, `busy(setId)`, `mine(setId)`; `stop()`.
|
|
54
|
+
*/
|
|
55
|
+
export function createHubChatStore(room, { client = hubClient(), me = "", reason, timers = globalThis, doc = typeof document !== "undefined" ? document : null } = {}) {
|
|
56
|
+
const subs = new Set();
|
|
57
|
+
const st = { live: true, timer: 0, inflight: false, entries: [], room: { ...room }, closed: false, error: null, pending: [], full: false, reads: 0, farTurn: 0 };
|
|
58
|
+
const emit = () => { for (const fn of subs) { try { fn(); } catch { /* a subscriber's own failure */ } } };
|
|
59
|
+
const merge = (got) => {
|
|
60
|
+
const byId = new Map(st.entries.map((e) => [e.messageId, e]));
|
|
61
|
+
for (const e of got) {
|
|
62
|
+
const next = { ...byId.get(e.messageId), ...e };
|
|
63
|
+
// A returned entry is complete: removed/retained-away controls must not survive in the cache.
|
|
64
|
+
if (!e.buttons) delete next.buttons;
|
|
65
|
+
byId.set(e.messageId, next);
|
|
66
|
+
}
|
|
67
|
+
st.entries = [...byId.values()].sort((a, b) => a.sequence - b.sequence);
|
|
68
|
+
};
|
|
69
|
+
const schedule = (ms) => { timers.clearTimeout(st.timer); if (st.live && !st.closed) st.timer = timers.setTimeout(poll, ms); };
|
|
70
|
+
async function poll() {
|
|
71
|
+
if (!st.live || st.inflight || st.closed) return;
|
|
72
|
+
if (doc && doc.hidden) { schedule(POLL_MS); return; }
|
|
73
|
+
st.inflight = true;
|
|
74
|
+
// Unsettled entries are read again (from just before the oldest one) — but a full page means there is more after
|
|
75
|
+
// it: read on from the last one first, so an old open entry can never pin the read to the same page (#3246 review).
|
|
76
|
+
const last = st.entries.length ? st.entries[st.entries.length - 1].sequence : 0;
|
|
77
|
+
// Keep one response slot for an unseen entry: PAGE known rows would hide every newer row behind LIMIT PAGE.
|
|
78
|
+
const tail = Math.max(0, last - PAGE + 1);
|
|
79
|
+
const open = st.full ? null : st.entries.find((e) => !SETTLED.has(e.receipt && e.receipt.stage) || e.buttons?.state === "open");
|
|
80
|
+
// The tail page is always read again (the newest entries' stages move); an open entry older than that is read from
|
|
81
|
+
// its own place only every FAR_EVERY-th read, so it never holds back the newer ones (#3246 review, residual).
|
|
82
|
+
// Every FAR_EVERY-th read goes back to one of them, in turn (#3261 review: each old unsettled entry, not only the oldest).
|
|
83
|
+
st.reads += 1;
|
|
84
|
+
const old = st.full ? [] : st.entries.filter((e) => e.sequence - 1 < tail && (!SETTLED.has(e.receipt && e.receipt.stage) || e.buttons?.state === "open"));
|
|
85
|
+
const far = old.length > 0 && st.reads % FAR_EVERY === 0 ? old[(st.farTurn++) % old.length] : null;
|
|
86
|
+
const after = far ? far.sequence - 1 : open ? Math.max(open.sequence - 1, tail) : last;
|
|
87
|
+
let r;
|
|
88
|
+
try { r = await client.read(st.room.id, after); } catch { r = { ok: false, code: "unreachable" }; }
|
|
89
|
+
st.inflight = false;
|
|
90
|
+
if (!st.live) return;
|
|
91
|
+
if (r.ok) {
|
|
92
|
+
const got = r.entries || [], known = st.entries.length ? st.entries[st.entries.length - 1].sequence : 0;
|
|
93
|
+
merge(got);
|
|
94
|
+
// More may follow only when a page came back full AND reached past what was known (a re-read tail page of exactly
|
|
95
|
+
// PAGE rows is not "more").
|
|
96
|
+
st.full = got.length >= PAGE && got[got.length - 1].sequence > known;
|
|
97
|
+
// The room as the server says it now. Its quota is the server's to give: absent means withdrawn (the owner hid it,
|
|
98
|
+
// the grant is gone), never "unchanged" — a band once shown must not outlive that. An answer with no room at all
|
|
99
|
+
// (an older Hub) keeps what is known.
|
|
100
|
+
if (r.room) { st.room = { ...st.room, ...r.room }; if (!Object.prototype.hasOwnProperty.call(r.room, "quota")) delete st.room.quota; }
|
|
101
|
+
st.pending = st.pending.filter((p) => !st.entries.some((e) => e.messageId === p.messageId));
|
|
102
|
+
st.error = null; emit(); schedule(POLL_MS); return;
|
|
103
|
+
}
|
|
104
|
+
if (r.code === "revoked" || r.code === "not-found") { st.closed = true; emit(); return; }
|
|
105
|
+
st.error = r.code || "failed"; emit();
|
|
106
|
+
schedule(r.code === "backpressure" ? Math.max(POLL_MS, (r.retryAfter || 10) * 1000) : POLL_MS);
|
|
107
|
+
}
|
|
108
|
+
const onVisible = () => { if (doc && !doc.hidden) schedule(0); };
|
|
109
|
+
if (doc) doc.addEventListener("visibilitychange", onVisible);
|
|
110
|
+
poll();
|
|
111
|
+
const newKey = () => {
|
|
112
|
+
if (typeof crypto !== "undefined" && crypto.randomUUID) return crypto.randomUUID();
|
|
113
|
+
const b = new Uint8Array(16); crypto.getRandomValues(b); b[6] = (b[6] & 15) | 64; b[8] = (b[8] & 63) | 128;
|
|
114
|
+
const x = [...b].map((v) => v.toString(16).padStart(2, "0")).join("");
|
|
115
|
+
return `${x.slice(0, 8)}-${x.slice(8, 12)}-${x.slice(12, 16)}-${x.slice(16, 20)}-${x.slice(20)}`;
|
|
116
|
+
};
|
|
117
|
+
const actions = createHubButtonActions({ id: room.id, get features() { return st.closed ? [] : st.room.features; } }, {
|
|
118
|
+
client, entries: () => st.entries, refresh: () => schedule(0), changed: emit,
|
|
119
|
+
});
|
|
120
|
+
return {
|
|
121
|
+
subscribe(fn) { subs.add(fn); return () => subs.delete(fn); },
|
|
122
|
+
room: () => st.room,
|
|
123
|
+
closed: () => st.closed,
|
|
124
|
+
error: () => st.error,
|
|
125
|
+
entries: () => st.entries,
|
|
126
|
+
messages() {
|
|
127
|
+
const shown = st.entries.flatMap((e) => hubEntryToMessages(e, st.room, { me, reason }));
|
|
128
|
+
// A question just sent shows at once (the next read brings its entry and replaces it).
|
|
129
|
+
const last = st.entries.length ? st.entries[st.entries.length - 1].sequence : 0;
|
|
130
|
+
const pend = st.pending.flatMap((p, i) => hubEntryToMessages({ messageId: p.messageId, sequence: last + 1 + i, askedAt: p.at, receipt: { stage: "queued", at: p.at }, question: p.text }, st.room, { me, reason }));
|
|
131
|
+
return [...shown, ...pend];
|
|
132
|
+
},
|
|
133
|
+
/** The question the agent is working on now (the oldest "consumed" one), with when it started; null when none. */
|
|
134
|
+
working() {
|
|
135
|
+
const w = st.entries.find((e) => e.receipt && e.receipt.stage === "consumed");
|
|
136
|
+
return w ? { since: w.receipt.at } : null;
|
|
137
|
+
},
|
|
138
|
+
refresh() { schedule(0); },
|
|
139
|
+
async send(text, extras = {}) {
|
|
140
|
+
const q = String(text || "").trim();
|
|
141
|
+
if (!q || st.closed) return { ok: false, code: "invalid" };
|
|
142
|
+
let r;
|
|
143
|
+
try { r = await client.ask(st.room.id, newKey(), q, extras); } catch { r = { ok: false, code: "unreachable" }; }
|
|
144
|
+
if (!r.ok) { if (r.code === "revoked") { st.closed = true; emit(); } return r; }
|
|
145
|
+
st.pending.push({ messageId: r.receipt.messageId, text: q, at: r.receipt.at || Date.now() });
|
|
146
|
+
emit();
|
|
147
|
+
return r;
|
|
148
|
+
},
|
|
149
|
+
clickButton: actions.clickButton,
|
|
150
|
+
vote: actions.vote,
|
|
151
|
+
busy: actions.busy,
|
|
152
|
+
mine: actions.mine,
|
|
153
|
+
stop() {
|
|
154
|
+
st.live = false; actions.stop(); timers.clearTimeout(st.timer); subs.clear();
|
|
155
|
+
if (doc) doc.removeEventListener("visibilitychange", onVisible);
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// #3226 B: the Hub chat's own words (the conversation list, the room, the right-hand panel, the menu), en and zh-TW, and
|
|
2
|
+
// its stylesheet. A module of its own (a tab opened before an upgrade holds an older hub-strings.js without these words,
|
|
3
|
+
// and an older hub.css without these rules). The thread's own words are the fleet chat's (/assets/chat-strings.js).
|
|
4
|
+
import { register, t } from "/assets/app-i18n.js";
|
|
5
|
+
|
|
6
|
+
register("hubChat", {
|
|
7
|
+
en: {
|
|
8
|
+
chats: "Chats", newChat: "New chat", search: "Search chats", noChats: "No chats yet", noChatsHint: "Start one with New chat: it lists the agents someone allowed you to ask.",
|
|
9
|
+
noMatch: "No chat matches.", waiting: "Waiting for an answer", represents: "Answers for {0}",
|
|
10
|
+
pickTitle: "New chat", pickSearch: "Search agents or owners", pickHint: "Only the agents someone allowed you to ask are listed.",
|
|
11
|
+
pickUntil: "Answers for {0} · you can ask until {1}", pickAsk: "Ask", pickOpen: "Open", pickNone: "No agent matches.", pickEmpty: "No agents you can ask yet",
|
|
12
|
+
choose: "Pick a chat", chooseHint: "Or start one with New chat.",
|
|
13
|
+
emptyRoom: "Ask {0} your first question", emptyRoomHint: "It answers for {0}. An answer can take a few minutes.",
|
|
14
|
+
composer: "Ask {0}", composerHint: "You ask as yourself; {0} sees that it was you.", send: "Send", stop: "Stop",
|
|
15
|
+
working: "{0} is working on it", elapsed: "Time since it started",
|
|
16
|
+
tick_queued: "Waiting for the owner's fleet", tick_processing: "At the owner's fleet", tick_delivered: "Answered",
|
|
17
|
+
tick_failed: "Not answered", tick_cancelled: "Outcome unknown",
|
|
18
|
+
notAnswered: "Not answered: {0}", uncertain: "Outcome unknown: it may or may not have been answered.",
|
|
19
|
+
reason_expired: "the question expired before an answer", reason_revoked: "your permission ended", reason_frozen: "the owner paused questions",
|
|
20
|
+
reason_withdrawn: "the agent is no longer shared", reason_unknown: "no reason given",
|
|
21
|
+
closed: "This chat has closed: your permission ended, or the agent is no longer shared.",
|
|
22
|
+
frozen: "The owner has paused questions to {0}. What is here stays readable.",
|
|
23
|
+
tagCanAsk: "Can ask", tagFrozen: "Paused", tagClosed: "Closed",
|
|
24
|
+
info: "Info", infoLabel: "About this chat", showInfo: "Show info", hideInfo: "Hide",
|
|
25
|
+
answersFor: "Answers for {0}", yourAccess: "Your access", canDo: "May", canDoValue: "Ask, and read your own chat",
|
|
26
|
+
until: "Until", daysLeft: "{0} days left", dayLeft: "1 day left", endsToday: "Ends today",
|
|
27
|
+
whoSees: "Who sees this chat", you: "You", youSee: "Only you see this chat's history, while your permission lasts.",
|
|
28
|
+
ownerSees: "Your questions show in {0}'s own fleet chat, marked with your Hub identity.",
|
|
29
|
+
agentShares: "It shares one conversation with everyone allowed to ask it, so it may remember what others asked. Keep out what others mustn't know.",
|
|
30
|
+
adminTitle: "Hub administrator", adminSees: "Can't see the content.",
|
|
31
|
+
notHere: "Not here", notHereText: "{0}'s files and changes, its terminal (View) and its tool progress: only {1} sees them, in their own fleet.",
|
|
32
|
+
oneToOne: "A chat has only you and this agent.",
|
|
33
|
+
menu: "Menu", mine: "My shared agents", mineHint: "Who may ask them, until when", admin: "Administration", adminHint: "Pair fleets",
|
|
34
|
+
back: "Chats",
|
|
35
|
+
},
|
|
36
|
+
"zh-TW": {
|
|
37
|
+
chats: "對話", newChat: "新對話", search: "搜尋對話", noChats: "還沒有對話", noChatsHint: "用「新對話」開始:會列出有人允許你提問的 Agent。",
|
|
38
|
+
noMatch: "沒有符合的對話。", waiting: "等待回答", represents: "代表 {0} 回答",
|
|
39
|
+
pickTitle: "新對話", pickSearch: "搜尋 Agent 或擁有者", pickHint: "只列出有人允許你提問的 Agent。",
|
|
40
|
+
pickUntil: "代表 {0} · 你可以問到 {1}", pickAsk: "提問", pickOpen: "開啟", pickNone: "沒有符合的 Agent。", pickEmpty: "還沒有可以提問的 Agent",
|
|
41
|
+
choose: "選一個對話", chooseHint: "或用「新對話」開始一個。",
|
|
42
|
+
emptyRoom: "問 {0} 第一個問題", emptyRoomHint: "它代表 {0} 回答;回答可能要幾分鐘。",
|
|
43
|
+
composer: "問 {0}", composerHint: "你以自己的 Hub 身分提問;{0} 會看到是你問的。", send: "送出", stop: "停止",
|
|
44
|
+
working: "{0} 正在處理", elapsed: "開始處理後經過的時間",
|
|
45
|
+
tick_queued: "等待擁有者的 fleet", tick_processing: "已送達擁有者的 fleet", tick_delivered: "已回答",
|
|
46
|
+
tick_failed: "未回答", tick_cancelled: "結果未知",
|
|
47
|
+
notAnswered: "未回答:{0}", uncertain: "結果未知:可能已回答,也可能沒有。",
|
|
48
|
+
reason_expired: "問題在回答前就過期了", reason_revoked: "你的權限已結束", reason_frozen: "擁有者暫停了提問",
|
|
49
|
+
reason_withdrawn: "這個 Agent 不再分享", reason_unknown: "沒有說明原因",
|
|
50
|
+
closed: "這個對話已關閉:你的權限已結束,或這個 Agent 不再分享。",
|
|
51
|
+
frozen: "擁有者暫停了 {0} 的提問。這裡的內容仍然看得到。",
|
|
52
|
+
tagCanAsk: "可提問", tagFrozen: "已暫停", tagClosed: "已關閉",
|
|
53
|
+
info: "資訊", infoLabel: "這段對話的資訊", showInfo: "顯示資訊", hideInfo: "關閉",
|
|
54
|
+
answersFor: "代表 {0} 回答", yourAccess: "你的權限", canDo: "可以", canDoValue: "提問、看自己的紀錄",
|
|
55
|
+
until: "期限", daysLeft: "還有 {0} 天", dayLeft: "還有 1 天", endsToday: "今天到期",
|
|
56
|
+
whoSees: "誰看得到這段對話", you: "你", youSee: "這個聊天室的紀錄只有你看得到,而且只在權限有效期間。",
|
|
57
|
+
ownerSees: "你的問題會出現在 {0} 的 fleet 聊天裡,標示你的 Hub 身分。",
|
|
58
|
+
agentShares: "它和其他有權限的人共用同一段對話,可能記得別人問過的事。別放不想讓別人知道的內容。",
|
|
59
|
+
adminTitle: "Hub 管理員", adminSees: "看不到內容。",
|
|
60
|
+
notHere: "這裡沒有", notHereText: "{0} 的檔案與變更、終端機畫面(View)、工具進度:只有 {1} 在自己的 fleet 看得到。",
|
|
61
|
+
oneToOne: "一個聊天室只有你和這個 Agent。",
|
|
62
|
+
menu: "選單", mine: "我分享的 Agent", mineHint: "誰可以提問、到什麼時候", admin: "管理", adminHint: "配對 fleet",
|
|
63
|
+
back: "對話",
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
/** hubChat.* words. */
|
|
67
|
+
export const hc = (key, ...values) => t(`hubChat.${key}`, ...values);
|
|
68
|
+
|
|
69
|
+
/** The Hub chat's stylesheet, linked once (an older hub.css or app.css lacks these rules). */
|
|
70
|
+
export function linkHubChatCss(doc = typeof document !== "undefined" ? document : null) {
|
|
71
|
+
try {
|
|
72
|
+
if (!doc || !doc.head || doc.querySelector('link[data-hub-chat-css="1"]')) return;
|
|
73
|
+
const link = doc.createElement("link");
|
|
74
|
+
link.setAttribute("rel", "stylesheet"); link.setAttribute("href", "/assets/hub-chat.css"); link.setAttribute("data-hub-chat-css", "1");
|
|
75
|
+
doc.head.appendChild(link);
|
|
76
|
+
} catch { /* the chat still works without it */ }
|
|
77
|
+
}
|