@songsid/agend 2.3.5-alpha.3 → 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-api.d.ts +4 -0
- package/dist/agent-runtime-api.js +59 -0
- package/dist/agent-runtime-api.js.map +1 -0
- package/dist/agent-runtime-change.d.ts +76 -0
- package/dist/agent-runtime-change.js +114 -0
- package/dist/agent-runtime-change.js.map +1 -0
- 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 +168 -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 +7 -0
- package/dist/backend/codex-footer-hints.js +41 -0
- package/dist/backend/codex-footer-hints.js.map +1 -0
- 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 +85 -24
- 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 +362 -7
- package/dist/fleet-manager.js +1522 -91
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-windows-runtime.d.ts +8 -2
- package/dist/fleet-windows-runtime.js +93 -6
- 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 +3 -3
- 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/public-web-link.d.ts +6 -0
- package/dist/public-web-link.js +9 -0
- package/dist/public-web-link.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 +106 -13
- package/dist/runtime-api.js.map +1 -1
- package/dist/runtime-build-info.d.ts +9 -0
- package/dist/runtime-build-info.js +59 -0
- package/dist/runtime-build-info.js.map +1 -0
- package/dist/runtime-bundle.d.ts +6 -1
- package/dist/runtime-bundle.js +17 -9
- package/dist/runtime-bundle.js.map +1 -1
- package/dist/runtime-cli.d.ts +13 -1
- package/dist/runtime-cli.js +173 -19
- package/dist/runtime-cli.js.map +1 -1
- package/dist/runtime-client-store.d.ts +27 -1
- package/dist/runtime-client-store.js +86 -6
- package/dist/runtime-client-store.js.map +1 -1
- package/dist/runtime-client.d.ts +74 -0
- package/dist/runtime-client.js +336 -26
- package/dist/runtime-client.js.map +1 -1
- package/dist/runtime-connection.d.ts +22 -0
- package/dist/runtime-connection.js +93 -0
- package/dist/runtime-connection.js.map +1 -0
- package/dist/runtime-coordinator.d.ts +16 -0
- package/dist/runtime-coordinator.js +287 -62
- 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-boot.d.ts +7 -0
- package/dist/runtime-pane-boot.js +23 -0
- package/dist/runtime-pane-boot.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 +30 -2
- package/dist/runtime-protocol.js +30 -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 +98 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.d.ts +3 -0
- package/dist/settings-http-confirmation.js +28 -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 +68 -0
- package/dist/ui/agent-runtime.js +20 -2
- package/dist/ui/backend-signin.js +39 -21
- 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-instance-settings.js +5 -8
- package/dist/ui/native-pane-recovery.js +1 -1
- package/dist/ui/office-share-page.js +4 -2
- package/dist/ui/panel-chat.js +36 -49
- package/dist/ui/panel-details.js +1 -1
- package/dist/ui/panel-fleet.js +82 -12
- 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 +239 -45
- package/dist/ui/panel-settings.js +266 -192
- package/dist/ui/panel-windows-cli.js +88 -42
- 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-agent-filters.js +94 -0
- package/dist/ui/settings-appearance.js +122 -23
- 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 +33 -12
- package/dist/ui/settings-guests.js +25 -11
- 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 +242 -0
- package/dist/ui/settings-model.js +24 -2
- package/dist/ui/settings-outside.js +104 -38
- package/dist/ui/settings-registry.js +9 -4
- package/dist/ui/settings-shared-strings.js +143 -0
- package/dist/ui/settings-shared.js +345 -0
- package/dist/ui/settings-shortcuts.js +65 -0
- package/dist/ui/settings-strings.js +89 -32
- package/dist/ui/settings-web-authority.js +17 -11
- 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 +81 -15
- package/dist/ui/shared/app.css +1114 -13
- 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/instance-nav.js +3 -2
- package/dist/ui/shared/machine-name.js +13 -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/settings-width.js +31 -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/tokens.css +1 -0
- package/dist/ui/shared/ui-dialog.js +2 -2
- package/dist/ui/shared/ui-menu.js +3 -3
- 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/windows-cli-catalog.js +41 -12
- 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 +49 -2
- package/dist/web-api.js +279 -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 +4 -1
- package/dist/windows-agents.js +14 -10
- package/dist/windows-agents.js.map +1 -1
- package/dist/windows-cli-api.d.ts +12 -1
- package/dist/windows-cli-api.js +29 -2
- 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 +25 -0
- package/dist/windows-cli-worker.js +98 -7
- package/dist/windows-cli-worker.js.map +1 -1
- package/dist/windows-cli.d.ts +11 -0
- package/dist/windows-cli.js +17 -3
- 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,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `claude auth status`, read once and the same way everywhere (the AgEnD host's `authCheck` and CLI sign-in list, the Windows Runtime's
|
|
3
|
+
* per-profile report and default sign-in): is it signed in, and which account is it, as a MASKED e-mail and a plan.
|
|
4
|
+
*
|
|
5
|
+
* The full e-mail never leaves `parseClaudeAuthStatus`: it is masked inside, before anything is returned, stored, logged, shown or sent
|
|
6
|
+
* (`ab***@example.com`). The same pattern is enforced where a masked value arrives from elsewhere (the server, on a Runtime's report), and a
|
|
7
|
+
* value that does not match it is a protocol error, never "cleaned up". The domain is sent in full on purpose: it lets an admin tell a work
|
|
8
|
+
* account from a personal one.
|
|
9
|
+
*
|
|
10
|
+
* Built-ins only: it is part of the Runtime bundle (RUNTIME_BUNDLE_MODULES).
|
|
11
|
+
*/
|
|
12
|
+
/** Reported in the Runtime's capabilities. A Runtime without it still works; it just shows no account identity. */
|
|
13
|
+
export const ACCOUNT_IDENTITY_CAPABILITY = "account-identity";
|
|
14
|
+
/** The plans that can be reported. Whatever else the CLI says becomes `unknown`; display names belong to the UI (they are product names, not translated). */
|
|
15
|
+
export const PLANS = Object.freeze(["free", "pro", "max", "team", "enterprise", "unknown"]);
|
|
16
|
+
/**
|
|
17
|
+
* The mask contract. ASCII only, one or two visible characters, then `***@`, then a dotted ASCII domain of at most 253 characters
|
|
18
|
+
* (the look-ahead), under a total length cap.
|
|
19
|
+
*/
|
|
20
|
+
const MASKED_EMAIL = /^[A-Za-z0-9._%+-]{1,2}\*\*\*@(?=.{1,253}$)[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)+$/;
|
|
21
|
+
const MAX_MASKED = 260;
|
|
22
|
+
const MAX_EMAIL = 254;
|
|
23
|
+
const ACCOUNT_KEYS = ["maskedEmail", "plan", "apiKey"];
|
|
24
|
+
export function validMaskedEmail(value) { return typeof value === "string" && value.length <= MAX_MASKED && MASKED_EMAIL.test(value); }
|
|
25
|
+
export function validPlan(value) { return typeof value === "string" && PLANS.includes(value); }
|
|
26
|
+
/** Module-private on purpose: the only way to get a masked address is through the parser, so no caller ever holds a raw one. */
|
|
27
|
+
function mask(value) {
|
|
28
|
+
if (typeof value !== "string")
|
|
29
|
+
return undefined;
|
|
30
|
+
const text = value.trim();
|
|
31
|
+
if (!text || text.length > MAX_EMAIL || !/^[\x21-\x7e]+$/.test(text))
|
|
32
|
+
return undefined; // printable ASCII, no space: a non-ASCII address sends none
|
|
33
|
+
const at = text.indexOf("@");
|
|
34
|
+
if (at < 1 || at !== text.lastIndexOf("@"))
|
|
35
|
+
return undefined;
|
|
36
|
+
const local = text.slice(0, at), domain = text.slice(at + 1);
|
|
37
|
+
const masked = `${local.slice(0, local.length <= 2 ? 1 : 2)}***@${domain}`;
|
|
38
|
+
// Self-check with the very pattern the server enforces: anything that does not fit it sends no e-mail, never a partial one.
|
|
39
|
+
return validMaskedEmail(masked) ? masked : undefined;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The subscription type as Claude names it, trimmed and lower-cased: the one normalization both the plan reported here and the usage
|
|
43
|
+
* panel's plan label (src/usage/providers.ts) start from.
|
|
44
|
+
*/
|
|
45
|
+
export function normalizeSubscriptionType(value) {
|
|
46
|
+
if (typeof value !== "string")
|
|
47
|
+
return undefined;
|
|
48
|
+
const plan = value.trim().toLowerCase();
|
|
49
|
+
return plan || undefined;
|
|
50
|
+
}
|
|
51
|
+
function planOf(value) {
|
|
52
|
+
const type = normalizeSubscriptionType(value);
|
|
53
|
+
return type === undefined ? undefined : PLANS.includes(type) && type !== "unknown" ? type : "unknown";
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Closed parse of an identity that arrives from elsewhere (a Runtime's report): `maskedEmail` only in its masked form, `plan` only from
|
|
57
|
+
* the list, `apiKey` only `true`, and nothing else. A violation is an error carrying no value: the rejected text is never echoed.
|
|
58
|
+
*/
|
|
59
|
+
export function parseAccountIdentity(value) {
|
|
60
|
+
const fail = (field) => { throw new Error(`Invalid account identity: ${field}`); };
|
|
61
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
62
|
+
return fail("identity");
|
|
63
|
+
const input = value;
|
|
64
|
+
for (const key of Object.keys(input))
|
|
65
|
+
if (!ACCOUNT_KEYS.includes(key))
|
|
66
|
+
return fail("unknown field");
|
|
67
|
+
if (input.maskedEmail !== undefined && !validMaskedEmail(input.maskedEmail))
|
|
68
|
+
return fail("maskedEmail");
|
|
69
|
+
if (input.plan !== undefined && !validPlan(input.plan))
|
|
70
|
+
return fail("plan");
|
|
71
|
+
if (input.apiKey !== undefined && input.apiKey !== true)
|
|
72
|
+
return fail("apiKey");
|
|
73
|
+
if (input.apiKey === true && (input.maskedEmail !== undefined || input.plan !== undefined))
|
|
74
|
+
return fail("apiKey");
|
|
75
|
+
return { ...(input.maskedEmail !== undefined ? { maskedEmail: input.maskedEmail } : {}), ...(input.plan !== undefined ? { plan: input.plan } : {}), ...(input.apiKey === true ? { apiKey: true } : {}) };
|
|
76
|
+
}
|
|
77
|
+
/** The identity part of a parse, or undefined when there is none. */
|
|
78
|
+
export function identityOf(status) {
|
|
79
|
+
const identity = { ...(status.maskedEmail ? { maskedEmail: status.maskedEmail } : {}), ...(status.plan ? { plan: status.plan } : {}), ...(status.apiKey ? { apiKey: true } : {}) };
|
|
80
|
+
return Object.keys(identity).length ? identity : undefined;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The JSON objects in a text, in order: a balanced `{ … }` (string-aware, so a brace inside a quoted value does not count) from each `{`. Stdout and
|
|
84
|
+
* stderr are merged by every caller, so other text, even text with braces in it, can sit around the answer. Bounded: a step budget, so a hostile
|
|
85
|
+
* or enormous output cannot make this quadratic.
|
|
86
|
+
*/
|
|
87
|
+
function* jsonObjectCandidates(text) {
|
|
88
|
+
let budget = 262_144;
|
|
89
|
+
for (let start = text.indexOf("{"); start >= 0 && budget > 0; start = text.indexOf("{", start + 1)) {
|
|
90
|
+
let depth = 0, inString = false, escaped = false;
|
|
91
|
+
for (let i = start; i < text.length && budget-- > 0; i++) {
|
|
92
|
+
const c = text[i];
|
|
93
|
+
if (inString) {
|
|
94
|
+
if (escaped)
|
|
95
|
+
escaped = false;
|
|
96
|
+
else if (c === "\\")
|
|
97
|
+
escaped = true;
|
|
98
|
+
else if (c === '"')
|
|
99
|
+
inString = false;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (c === '"')
|
|
103
|
+
inString = true;
|
|
104
|
+
else if (c === "{")
|
|
105
|
+
depth++;
|
|
106
|
+
else if (c === "}" && --depth === 0) {
|
|
107
|
+
yield text.slice(start, i + 1);
|
|
108
|
+
start = i;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Parse the output of `claude auth status` (stdout and stderr may be merged, so the JSON object is looked for among other text, braces included):
|
|
116
|
+
* the first balanced object that parses and has a boolean `loggedIn` is the answer.
|
|
117
|
+
* `loggedIn`: the CLI's own boolean, null when there is no readable answer. Only a signed-in answer carries an identity: an account login
|
|
118
|
+
* has a masked e-mail and a plan; an API key (`authMethod: "api_key"`) is marked as such and has neither.
|
|
119
|
+
*/
|
|
120
|
+
export function parseClaudeAuthStatus(text) {
|
|
121
|
+
const unreadable = { loggedIn: null };
|
|
122
|
+
if (typeof text !== "string" || text.length > 64 * 1024)
|
|
123
|
+
return unreadable;
|
|
124
|
+
let row, tried = 0;
|
|
125
|
+
for (const candidate of jsonObjectCandidates(text)) {
|
|
126
|
+
if (++tried > 32)
|
|
127
|
+
break;
|
|
128
|
+
let value;
|
|
129
|
+
try {
|
|
130
|
+
value = JSON.parse(candidate);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (value && typeof value === "object" && !Array.isArray(value) && typeof value.loggedIn === "boolean") {
|
|
136
|
+
row = value;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (!row)
|
|
141
|
+
return unreadable;
|
|
142
|
+
if (row.loggedIn !== true)
|
|
143
|
+
return { loggedIn: false };
|
|
144
|
+
if (row.authMethod === "api_key")
|
|
145
|
+
return { loggedIn: true, apiKey: true };
|
|
146
|
+
const maskedEmail = mask(row.email), plan = planOf(row.subscriptionType);
|
|
147
|
+
return { loggedIn: true, ...(maskedEmail ? { maskedEmail } : {}), ...(plan ? { plan } : {}) };
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=claude-auth-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-auth-status.js","sourceRoot":"","sources":["../src/claude-auth-status.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -16,6 +16,8 @@ applyNetworkReliabilityDefaults();
|
|
|
16
16
|
import { checkNodeVersion } from "./node-version-guard.js";
|
|
17
17
|
checkNodeVersion();
|
|
18
18
|
import { Command, Option } from "commander";
|
|
19
|
+
import { registerBuildInfoCommand } from "./build-provenance-cli.js";
|
|
20
|
+
import { launchdServiceDomain } from "./launchd-service-domain.js";
|
|
19
21
|
import { registerBugReportCommand } from "./bug-report-cli.js";
|
|
20
22
|
import { join, dirname } from "node:path";
|
|
21
23
|
import { SchedulerDb } from "./scheduler/db.js";
|
|
@@ -25,7 +27,8 @@ import { homedir, totalmem, freemem, userInfo } from "node:os";
|
|
|
25
27
|
import { fileURLToPath } from "node:url";
|
|
26
28
|
import { spawnSync, execSync, execFileSync } from "node:child_process";
|
|
27
29
|
import { spawn } from "./child-process.js";
|
|
28
|
-
import { getAgendHome,
|
|
30
|
+
import { getAgendHome, isDefaultAgendHome, realDefaultAgendHome } from "./paths.js";
|
|
31
|
+
import { tmuxArgs as tmuxArgsFor, tmuxBinary as tmuxBin, tmuxEnvOption as tmuxEnvOpt } from "./tmux-binary.js";
|
|
29
32
|
import { hasPausedMarker } from "./pause-marker.js";
|
|
30
33
|
import { COMPLETION_SHELLS, completionScript } from "./completion.js";
|
|
31
34
|
import { getUpdateSelector, isExactVersion, isUnrequestedDowngrade, downgradeRefusal, lookupTargetVersion, reportUpdateRestart, shouldSkipUpdate, runningFleetPredatesInstall, fleetProvenStopped, readFleetPidEvidence, pidAlive, processStartMs, } from "./update-check.js";
|
|
@@ -38,7 +41,7 @@ import { limitFleetCoreDumps } from "./coredump-filter.js";
|
|
|
38
41
|
import { SYSTEMD_RESTART_TIMEOUT_MS, getServicePath, getSystemServicePath, serviceDefinitionHome } from "./service-installer.js";
|
|
39
42
|
import { withFsPlanLock } from "./service-plan.js";
|
|
40
43
|
import { selectSystemdRestartTarget, SYSTEMD_RESTART_INDETERMINATE_EXIT_CODE, } from "./service-restart-selection.js";
|
|
41
|
-
import { loadRawFleetConfig } from "./config.js";
|
|
44
|
+
import { getTmuxSession, loadRawFleetConfig } from "./config.js";
|
|
42
45
|
import { detectLocale, setLocale, getLocale, t } from "./locale.js";
|
|
43
46
|
import { settingsSourceLabel } from "./settings-confirmation.js";
|
|
44
47
|
import { DeliveryOutbox, deliveryStatusSelector } from "./delivery-outbox.js";
|
|
@@ -48,11 +51,8 @@ import { requestSettingsConfirmation } from "./settings-control.js";
|
|
|
48
51
|
import { canonicalCliEntry, selfCommand } from "./cli-entry.js";
|
|
49
52
|
import { DIRECT_FLEET_START_ENV, redirectsToService, serviceRunsHome, startedByServiceManager } from "./service-owner.js";
|
|
50
53
|
import { handOff, shouldHandOff } from "./launchd-handoff.js";
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
const socket = getTmuxSocketName();
|
|
54
|
-
return socket ? ["-L", socket, ...args] : args;
|
|
55
|
-
}
|
|
54
|
+
/** This fleet's tmux socket (and, with the bundled tmux, its config) in front of `args` (tmux-binary.ts). */
|
|
55
|
+
const tmuxArgs = (args) => tmuxArgsFor(args);
|
|
56
56
|
const __filename = fileURLToPath(import.meta.url);
|
|
57
57
|
const __dirname = dirname(__filename);
|
|
58
58
|
const DATA_DIR = getAgendHome();
|
|
@@ -178,6 +178,7 @@ program
|
|
|
178
178
|
// `agend --version`, prints this version and installs nothing.
|
|
179
179
|
.enablePositionalOptions();
|
|
180
180
|
registerBugReportCommand(program, pkgVersion);
|
|
181
|
+
registerBuildInfoCommand(program);
|
|
181
182
|
function signalFleetReload() {
|
|
182
183
|
const pidPath = join(DATA_DIR, "fleet.pid");
|
|
183
184
|
try {
|
|
@@ -312,6 +313,23 @@ fleet
|
|
|
312
313
|
}
|
|
313
314
|
catch { /* fleet not running, fall through */ }
|
|
314
315
|
}
|
|
316
|
+
// A service manager owns stop/start sequencing. Before this replacement claims any shared fleet state,
|
|
317
|
+
// an enabled Hub waits for the previous process and both old listener endpoints to close.
|
|
318
|
+
if (loadRawFleetConfig(FLEET_CONFIG_PATH).hub?.enabled === true) {
|
|
319
|
+
const [{ waitForHubServiceStart, HubServiceStartError }, { ht }] = await Promise.all([
|
|
320
|
+
import("./hub/service-start.js"), import("./hub/init/text.js"),
|
|
321
|
+
]);
|
|
322
|
+
console.log(ht("service_drain_wait"));
|
|
323
|
+
try {
|
|
324
|
+
await waitForHubServiceStart(DATA_DIR);
|
|
325
|
+
}
|
|
326
|
+
catch (err) {
|
|
327
|
+
const reason = err instanceof HubServiceStartError ? err.reason : "config";
|
|
328
|
+
console.error(ht(`service_drain_${reason}`));
|
|
329
|
+
process.exitCode = 1;
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
315
333
|
// Claim the singleton before constructing FleetManager: its constructor and
|
|
316
334
|
// startAll path touch shared tmux, sockets, state files and adapters.
|
|
317
335
|
if (!claimFleetSingleton())
|
|
@@ -852,7 +870,9 @@ backend
|
|
|
852
870
|
// tmux
|
|
853
871
|
try {
|
|
854
872
|
const { execSync } = await import("node:child_process");
|
|
855
|
-
const
|
|
873
|
+
const { tmuxBinary, tmuxEnvOption } = await import("./tmux-binary.js");
|
|
874
|
+
const { execFileSync: run } = await import("node:child_process");
|
|
875
|
+
const ver = run(tmuxBinary(), ["-V"], { stdio: "pipe", ...tmuxEnvOption() }).toString().trim();
|
|
856
876
|
ok(`tmux${" ".repeat(16)} ${ver}`);
|
|
857
877
|
}
|
|
858
878
|
catch {
|
|
@@ -1428,7 +1448,7 @@ program
|
|
|
1428
1448
|
const systemUnit = getSystemServicePath();
|
|
1429
1449
|
const ownService = systemUnit ? null : getServicePath();
|
|
1430
1450
|
const manager = systemUnit ? { kind: "systemd", unit: "agend", user: false, unitPath: systemUnit }
|
|
1431
|
-
: ownService && detectPlatform() === "macos" ? { kind: "launchd", label: "com.agend.fleet", plistPath: ownService, domain:
|
|
1451
|
+
: ownService && detectPlatform() === "macos" ? { kind: "launchd", label: "com.agend.fleet", plistPath: ownService, domain: launchdServiceDomain() }
|
|
1432
1452
|
: ownService ? { kind: "systemd", unit: "com.agend.fleet", user: true, unitPath: ownService }
|
|
1433
1453
|
: { kind: "detached" };
|
|
1434
1454
|
// C6: a failure before the fleet runs the new install puts the previous package back too (taken before npm).
|
|
@@ -1564,8 +1584,7 @@ program
|
|
|
1564
1584
|
// delete so a newer plan published during the slow bootout is left (#2376 / #2439).
|
|
1565
1585
|
if (manager.kind === "launchd") {
|
|
1566
1586
|
const { consumeCarriedOutPlan } = await import("./service-plan.js");
|
|
1567
|
-
|
|
1568
|
-
consumeCarriedOutPlan(DATA_DIR, `gui/${uid}/com.agend.fleet`, planDeps());
|
|
1587
|
+
consumeCarriedOutPlan(DATA_DIR, `${launchdServiceDomain()}/com.agend.fleet`, planDeps());
|
|
1569
1588
|
}
|
|
1570
1589
|
// #1853: in a WSL terminal without the Windows desktop shortcuts, say once how to make them (never makes them).
|
|
1571
1590
|
if (outcome.ok)
|
|
@@ -1889,7 +1908,20 @@ program
|
|
|
1889
1908
|
} })() : null,
|
|
1890
1909
|
isDefault: isDefaultAgendHome,
|
|
1891
1910
|
});
|
|
1892
|
-
const
|
|
1911
|
+
const isHub = loadRawFleetConfig(FLEET_CONFIG_PATH).hub?.enabled === true;
|
|
1912
|
+
if (isHub && opts.activate !== false) {
|
|
1913
|
+
const [{ assertHubServiceInstallIdle }, { ht }] = await Promise.all([import("./hub/service-start.js"), import("./hub/init/text.js")]);
|
|
1914
|
+
try {
|
|
1915
|
+
assertHubServiceInstallIdle(service.workingDirectory);
|
|
1916
|
+
}
|
|
1917
|
+
catch {
|
|
1918
|
+
console.error(ht("service_install_idle"));
|
|
1919
|
+
process.exitCode = 1;
|
|
1920
|
+
return;
|
|
1921
|
+
}
|
|
1922
|
+
}
|
|
1923
|
+
const serviceVars = { label: "com.agend.fleet", execPath, path: process.env.PATH, ...service,
|
|
1924
|
+
...(!existingPath && isHub ? { launchdSessionType: "Background" } : {}) };
|
|
1893
1925
|
// #1450 C6: on launchd, writing a new plist without activating is a PLANNED activation — proven, recorded, and
|
|
1894
1926
|
// left for `agend restart` (a reload there would itself start the job). See service-plan.ts.
|
|
1895
1927
|
if (opts.activate === false && detectPlatform() === "macos") {
|
|
@@ -1905,9 +1937,10 @@ program
|
|
|
1905
1937
|
}
|
|
1906
1938
|
const uid = process.getuid?.() ?? 501;
|
|
1907
1939
|
const plistPath = launchdPlistPath(serviceVars.label);
|
|
1940
|
+
const domain = serviceVars.launchdSessionType === "Background" ? `user/${uid}` : launchdServiceDomain(serviceVars.label);
|
|
1908
1941
|
mkdirSync(dirname(plistPath), { recursive: true });
|
|
1909
1942
|
const outcome = refreshLaunchdWithoutActivating({
|
|
1910
|
-
label: serviceVars.label, target:
|
|
1943
|
+
label: serviceVars.label, target: `${domain}/${serviceVars.label}`, plistPath, newPlist: renderLaunchdPlist(serviceVars),
|
|
1911
1944
|
expected: expectation.expected, pkgDir: dirname(dirname(execPath)), agendHome: DATA_DIR,
|
|
1912
1945
|
}, planDeps());
|
|
1913
1946
|
if (!outcome.ok) {
|
|
@@ -1954,8 +1987,16 @@ program
|
|
|
1954
1987
|
if (opts.activate !== false) {
|
|
1955
1988
|
const pidPath = join(DATA_DIR, "fleet.pid");
|
|
1956
1989
|
try {
|
|
1957
|
-
|
|
1958
|
-
|
|
1990
|
+
if (isHub)
|
|
1991
|
+
activateService(svcPath, pidPath, { preservePidFile: true });
|
|
1992
|
+
else
|
|
1993
|
+
activateService(svcPath, pidPath);
|
|
1994
|
+
if (isHub) {
|
|
1995
|
+
const { ht } = await import("./hub/init/text.js");
|
|
1996
|
+
console.log(ht("service_ok"));
|
|
1997
|
+
}
|
|
1998
|
+
else
|
|
1999
|
+
console.log(t("install.running"));
|
|
1959
2000
|
}
|
|
1960
2001
|
catch (err) {
|
|
1961
2002
|
console.error(t("install.start_failed", err.message));
|
|
@@ -2130,7 +2171,7 @@ program
|
|
|
2130
2171
|
// A service file means the service manager owns this fleet. Falling back
|
|
2131
2172
|
// to a detached process here creates a second fleet when the bus recovers.
|
|
2132
2173
|
console.error("Failed to start the installed AgEnD service; refusing to start a detached duplicate.");
|
|
2133
|
-
console.error(t("cli.service_retry", process.platform === "darwin" ?
|
|
2174
|
+
console.error(t("cli.service_retry", process.platform === "darwin" ? `launchctl print ${launchdServiceDomain()}/com.agend.fleet` : systemServicePath ? "systemctl status agend" : "systemctl --user status com.agend.fleet"));
|
|
2134
2175
|
// #2356: a service file that cannot run here (never activated, no session for it) would otherwise leave no start.
|
|
2135
2176
|
console.error(t("cli.service_direct_hint"));
|
|
2136
2177
|
process.exitCode = 1;
|
|
@@ -2472,7 +2513,8 @@ program
|
|
|
2472
2513
|
if (plat === "macos") {
|
|
2473
2514
|
const uid = process.getuid?.() ?? 501;
|
|
2474
2515
|
const label = "com.agend.fleet";
|
|
2475
|
-
const
|
|
2516
|
+
const domain = launchdServiceDomain(label, { uid });
|
|
2517
|
+
const target = `${domain}/${label}`;
|
|
2476
2518
|
const deps = planDeps();
|
|
2477
2519
|
const printed = deps.run("launchctl", ["print", target]);
|
|
2478
2520
|
if (printed.status === 0) {
|
|
@@ -2494,7 +2536,7 @@ program
|
|
|
2494
2536
|
if (await handOffLaunchdActivation("restart"))
|
|
2495
2537
|
return;
|
|
2496
2538
|
const { activateService } = await import("./service-activation.js");
|
|
2497
|
-
const outcome = activateService({ kind: "launchd", label, plistPath: plan.plistPath, domain
|
|
2539
|
+
const outcome = activateService({ kind: "launchd", label, plistPath: plan.plistPath, domain }, { bin: expectation.expected.entry, entry: expectation.expected.entry, node: expectation.expected.node, dir: pkgDir }, {
|
|
2498
2540
|
...deps,
|
|
2499
2541
|
readFirstLine: path => deps.readFile(path)?.split("\n", 1)[0] ?? null,
|
|
2500
2542
|
isExecutable: path => { try {
|
|
@@ -2523,7 +2565,12 @@ program
|
|
|
2523
2565
|
if (expectation.ok && refuses(guard.guardLaunchd(captureRun, target, plistPath, deps.readFile, expectation.expected, guardDeps)))
|
|
2524
2566
|
return;
|
|
2525
2567
|
if (run(`launchctl kickstart -k ${target}`)) {
|
|
2526
|
-
|
|
2568
|
+
if (loadRawFleetConfig(FLEET_CONFIG_PATH).hub?.enabled === true) {
|
|
2569
|
+
const { ht } = await import("./hub/init/text.js");
|
|
2570
|
+
console.log(ht("service_restart_requested"));
|
|
2571
|
+
}
|
|
2572
|
+
else
|
|
2573
|
+
console.log("Service restarted.");
|
|
2527
2574
|
return;
|
|
2528
2575
|
}
|
|
2529
2576
|
console.error(` ✗ launchctl kickstart -k ${target} failed.`);
|
|
@@ -2773,6 +2820,19 @@ program
|
|
|
2773
2820
|
const { runQuickstart } = await import("./quickstart.js");
|
|
2774
2821
|
await runQuickstart();
|
|
2775
2822
|
});
|
|
2823
|
+
// #3095 Hub (experimental, off by default): `agend hub init` sets up a team Hub on this machine. Nothing Hub-related
|
|
2824
|
+
// loads unless this command runs.
|
|
2825
|
+
const hub = program.command("hub").description("AgEnD Hub (experimental): a team Hub where colleagues sign in with the directory");
|
|
2826
|
+
hub.command("handoff")
|
|
2827
|
+
.description("Show this Hub's installation record, pairing steps and stop/uninstall guidance")
|
|
2828
|
+
.action(async () => { const { runHubHandoffCommand } = await import("./hub/init/handoff.js"); await runHubHandoffCommand(); });
|
|
2829
|
+
hub
|
|
2830
|
+
.command("init")
|
|
2831
|
+
.description("Set up this machine as a team Hub: addresses, browser certificate, directory (LDAPS), administrator, service")
|
|
2832
|
+
.action(async () => {
|
|
2833
|
+
const { runHubInitCommand } = await import("./hub/init/cli.js");
|
|
2834
|
+
await runHubInitCommand();
|
|
2835
|
+
});
|
|
2776
2836
|
program
|
|
2777
2837
|
.command("init")
|
|
2778
2838
|
.description("Interactive advanced wizard (setup-wizard); for first-run use `agend quickstart` or `agend setup`")
|
|
@@ -3355,7 +3415,10 @@ async function listInstanceNames(config) {
|
|
|
3355
3415
|
}
|
|
3356
3416
|
async function lsAction(opts) {
|
|
3357
3417
|
const yaml = (await import("js-yaml")).default;
|
|
3358
|
-
const config = yaml.load(readFileSync(FLEET_CONFIG_PATH, "utf-8"));
|
|
3418
|
+
const config = (yaml.load(readFileSync(FLEET_CONFIG_PATH, "utf-8")) ?? {});
|
|
3419
|
+
// A fleet.yaml without an `instances:` section is an empty fleet (as `agend doctor` and the fleet read it), not a crash.
|
|
3420
|
+
if (!config.instances || typeof config.instances !== "object")
|
|
3421
|
+
config.instances = {};
|
|
3359
3422
|
const names = Object.keys(config.instances);
|
|
3360
3423
|
// --names-only feeds shell completion, so it must return before any tmux or
|
|
3361
3424
|
// status work (a tab press should not wait on the fleet) and must print
|
|
@@ -3413,6 +3476,8 @@ async function lsAction(opts) {
|
|
|
3413
3476
|
}
|
|
3414
3477
|
if (allNames.length === 0) {
|
|
3415
3478
|
console.log("No instances configured.");
|
|
3479
|
+
// The same hint `agend doctor` gives for this file.
|
|
3480
|
+
console.log("Hint: no general_topic instance — there is no general dispatcher to receive un-topic'd messages. Run `agend doctor`.");
|
|
3416
3481
|
await printResources();
|
|
3417
3482
|
return;
|
|
3418
3483
|
}
|
|
@@ -3441,7 +3506,17 @@ async function lsAction(opts) {
|
|
|
3441
3506
|
const singleSource = channelTypes.size === 1
|
|
3442
3507
|
? (channelTypes.has("telegram") ? "TG" : channelTypes.has("discord") ? "DC" : "—")
|
|
3443
3508
|
: null;
|
|
3509
|
+
// A fleet instance's source is the adapter the fleet routes it by: its channel_id, else the first connection
|
|
3510
|
+
// (FleetManager.getInstanceAdapterId) — never guessed from its topic id, so `ls` and routing cannot disagree.
|
|
3511
|
+
const channelList = config.channels?.length ? config.channels : config.channel ? [config.channel] : [];
|
|
3512
|
+
const typeByAdapter = new Map(channelList.map((ch) => [ch.id ?? ch.type, ch.type]));
|
|
3513
|
+
const firstAdapter = channelList[0] ? (channelList[0].id ?? channelList[0].type) : undefined;
|
|
3514
|
+
const sourceOfType = (type) => (type === "telegram" ? "TG" : type === "discord" ? "DC" : "—");
|
|
3515
|
+
const { isNativeExecInstance } = await import("./native-instance-registry.js");
|
|
3444
3516
|
const getSource = (name, inst) => {
|
|
3517
|
+
// A Windows exec agent has no chat binding (getInstanceAdapterId gives none): no source, in any fleet. A pane keeps its own.
|
|
3518
|
+
if (inst && isNativeExecInstance(inst))
|
|
3519
|
+
return "—";
|
|
3445
3520
|
if (singleSource)
|
|
3446
3521
|
return singleSource;
|
|
3447
3522
|
if (classicNames.has(name)) {
|
|
@@ -3449,18 +3524,14 @@ async function lsAction(opts) {
|
|
|
3449
3524
|
const matchedChId = classicChannelIdByName.get(name) ?? "";
|
|
3450
3525
|
return matchedChId.startsWith("-") || matchedChId.length < 17 ? "TG" : "DC";
|
|
3451
3526
|
}
|
|
3452
|
-
const
|
|
3453
|
-
|
|
3454
|
-
return "DC";
|
|
3455
|
-
if (topicId.length > 0 && topicId.length < 17)
|
|
3456
|
-
return "TG";
|
|
3457
|
-
return "—";
|
|
3527
|
+
const bound = typeof inst?.channel_id === "string" && inst.channel_id ? inst.channel_id : firstAdapter;
|
|
3528
|
+
return sourceOfType(bound === undefined ? undefined : typeByAdapter.get(bound));
|
|
3458
3529
|
};
|
|
3459
3530
|
// Row collection runs concurrently (see ls-rows.ts): the per-instance
|
|
3460
3531
|
// tmux captures overlap instead of stacking their 2s bounds serially.
|
|
3461
3532
|
const { collectLsRows, capturePaneAsync, formatTimeSince, lsStatusIcon, lsStatusLabel, displayWidth, computeLsNameWidth, padToDisplayWidth } = await import("./ls-rows.js");
|
|
3462
|
-
const {
|
|
3463
|
-
const socketName =
|
|
3533
|
+
const { tmuxSocket } = await import("./tmux-binary.js");
|
|
3534
|
+
const socketName = tmuxSocket();
|
|
3464
3535
|
const rows = await collectLsRows(allNames.map(name => {
|
|
3465
3536
|
const isClassic = classicNames.has(name);
|
|
3466
3537
|
const inst = config.instances[name];
|
|
@@ -3858,6 +3929,32 @@ program
|
|
|
3858
3929
|
console.log(`\n${classIcon} Fleet: ${classification}`);
|
|
3859
3930
|
process.exit(exitCode);
|
|
3860
3931
|
});
|
|
3932
|
+
program
|
|
3933
|
+
.command("tmux")
|
|
3934
|
+
.description("Run a tmux command on this fleet's own tmux server — its tmux binary and socket — e.g. `agend tmux ls`, `agend tmux capture-pane -p -t <window>`.")
|
|
3935
|
+
.argument("[args...]", "tmux's own command and arguments")
|
|
3936
|
+
.allowUnknownOption(true)
|
|
3937
|
+
.helpOption(false)
|
|
3938
|
+
.action(async (rest = []) => {
|
|
3939
|
+
// Everything after the command goes to tmux as typed (its own options and a `--` included: commander keeps them in
|
|
3940
|
+
// order, with allowUnknownOption), with this fleet's -L socket (and, with AgEnD's bundled tmux, its binary and -f
|
|
3941
|
+
// config) in front: M-2457 §5.
|
|
3942
|
+
let bin;
|
|
3943
|
+
try {
|
|
3944
|
+
bin = tmuxBin();
|
|
3945
|
+
}
|
|
3946
|
+
catch (e) {
|
|
3947
|
+
console.error(e.message);
|
|
3948
|
+
process.exit(1);
|
|
3949
|
+
}
|
|
3950
|
+
const { spawnSync } = await import("node:child_process");
|
|
3951
|
+
const r = spawnSync(bin, tmuxArgs(rest), { stdio: "inherit", ...tmuxEnvOpt() });
|
|
3952
|
+
if (r.error) {
|
|
3953
|
+
console.error(`tmux could not run: ${r.error.message}`);
|
|
3954
|
+
process.exit(1);
|
|
3955
|
+
}
|
|
3956
|
+
process.exit(r.status ?? 1);
|
|
3957
|
+
});
|
|
3861
3958
|
program
|
|
3862
3959
|
.command("attach")
|
|
3863
3960
|
.description("Attach to an instance's tmux window. Accepts display name, instance name, row number from ls, or a substring. No argument: interactive picker.")
|
|
@@ -3880,10 +3977,11 @@ program
|
|
|
3880
3977
|
}
|
|
3881
3978
|
}
|
|
3882
3979
|
catch { /* ignore */ }
|
|
3883
|
-
|
|
3980
|
+
// The fleet's session (AGEND_TMUX_SESSION, else per AGEND_HOME), not a hardcoded "agend" (M-2457 §5).
|
|
3981
|
+
const session = getTmuxSession();
|
|
3884
3982
|
// Verify tmux session exists
|
|
3885
3983
|
try {
|
|
3886
|
-
execFileSync(
|
|
3984
|
+
execFileSync(tmuxBin(), tmuxArgs(["has-session", "-t", session]), { stdio: "pipe" });
|
|
3887
3985
|
}
|
|
3888
3986
|
catch {
|
|
3889
3987
|
console.error(`tmux session "${session}" not found. Is the fleet running?`);
|
|
@@ -3896,7 +3994,7 @@ program
|
|
|
3896
3994
|
let selected = false;
|
|
3897
3995
|
for (const t of targets) {
|
|
3898
3996
|
try {
|
|
3899
|
-
execFileSync(
|
|
3997
|
+
execFileSync(tmuxBin(), tmuxArgs(["select-window", "-t", t]), { stdio: "pipe" });
|
|
3900
3998
|
selected = true;
|
|
3901
3999
|
break;
|
|
3902
4000
|
}
|
|
@@ -3905,13 +4003,13 @@ program
|
|
|
3905
4003
|
// Fallback: search tmux windows for a partial name match (handles CJK truncation)
|
|
3906
4004
|
if (!selected) {
|
|
3907
4005
|
try {
|
|
3908
|
-
const winList = execFileSync(
|
|
4006
|
+
const winList = execFileSync(tmuxBin(), tmuxArgs(["list-windows", "-t", session, "-F", "#{window_id} #{window_name}"]), { stdio: "pipe" }).toString().trim();
|
|
3909
4007
|
for (const line of winList.split("\n")) {
|
|
3910
4008
|
const [wid, ...rest] = line.split(" ");
|
|
3911
4009
|
const wname = rest.join(" ").replace(/-?\*?$/, ""); // strip trailing -/* markers
|
|
3912
4010
|
if (wname === name || name.startsWith(wname) || wname.startsWith(name)) {
|
|
3913
4011
|
try {
|
|
3914
|
-
execFileSync(
|
|
4012
|
+
execFileSync(tmuxBin(), tmuxArgs(["select-window", "-t", `${session}:${wid}`]), { stdio: "pipe" });
|
|
3915
4013
|
selected = true;
|
|
3916
4014
|
break;
|
|
3917
4015
|
}
|
|
@@ -3925,11 +4023,14 @@ program
|
|
|
3925
4023
|
console.error(`Cannot find tmux window for "${name}". The instance may need to be restarted.`);
|
|
3926
4024
|
process.exit(1);
|
|
3927
4025
|
}
|
|
3928
|
-
// Attach or switch-client depending on whether we're already in tmux
|
|
3929
|
-
|
|
4026
|
+
// Attach or switch-client depending on whether we're already in tmux — in THIS fleet's tmux: with the bundled tmux,
|
|
4027
|
+
// $TMUX naming another server (the user's own, on its own socket) is not "inside"; that is an ordinary attach.
|
|
4028
|
+
const { bundledTmuxEnabled, insideFleetTmux, tmuxSocket } = await import("./tmux-binary.js");
|
|
4029
|
+
const insideOurs = insideFleetTmux(process.env.TMUX, bundledTmuxEnabled(), tmuxSocket());
|
|
4030
|
+
if (insideOurs) {
|
|
3930
4031
|
// Already inside tmux — switch client
|
|
3931
4032
|
try {
|
|
3932
|
-
execFileSync(
|
|
4033
|
+
execFileSync(tmuxBin(), tmuxArgs(["switch-client", "-t", session]), { stdio: "inherit", ...tmuxEnvOpt() });
|
|
3933
4034
|
}
|
|
3934
4035
|
catch {
|
|
3935
4036
|
console.error("Failed to switch tmux client.");
|
|
@@ -3939,7 +4040,7 @@ program
|
|
|
3939
4040
|
else {
|
|
3940
4041
|
// Outside tmux — attach
|
|
3941
4042
|
try {
|
|
3942
|
-
execFileSync(
|
|
4043
|
+
execFileSync(tmuxBin(), tmuxArgs(["attach-session", "-t", session]), { stdio: "inherit", ...tmuxEnvOpt() });
|
|
3943
4044
|
}
|
|
3944
4045
|
catch {
|
|
3945
4046
|
console.error("Failed to attach to tmux session.");
|