@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
|
@@ -4,8 +4,9 @@ import { randomBytes } from "node:crypto";
|
|
|
4
4
|
import { inboxTempName } from "../inbox-temp-name.js";
|
|
5
5
|
import { Agent as HttpAgent } from "node:http";
|
|
6
6
|
import { Agent as HttpsAgent } from "node:https";
|
|
7
|
-
import { createReadStream, mkdirSync, readdirSync, statSync, unlinkSync } from "node:fs";
|
|
7
|
+
import { createReadStream, mkdirSync, readdirSync, readFileSync, statSync, unlinkSync } from "node:fs";
|
|
8
8
|
import { join, extname, basename } from "node:path";
|
|
9
|
+
import { atomicWriteFileSync } from "../../atomic-write.js";
|
|
9
10
|
import { Bot, GrammyError, HttpError, InputFile } from "grammy";
|
|
10
11
|
import { InlineKeyboard } from "grammy";
|
|
11
12
|
import { stripPlaceRefs } from "../../topic-link.js";
|
|
@@ -52,9 +53,34 @@ export const TELEGRAM_ALLOWED_UPDATES = [
|
|
|
52
53
|
"callback_query",
|
|
53
54
|
"message_reaction",
|
|
54
55
|
];
|
|
56
|
+
/**
|
|
57
|
+
* Pending Telegram updates older than this are filed as a Needs-you item
|
|
58
|
+
* ("missed while AgEnD was offline") and never auto-injected into an agent.
|
|
59
|
+
* Telegram itself keeps the getUpdates queue for about 24 hours.
|
|
60
|
+
*/
|
|
61
|
+
export const TELEGRAM_PENDING_LIVE_MAX_MS = 2 * 60 * 60 * 1000;
|
|
62
|
+
/**
|
|
63
|
+
* Telegram may pick a new random `update_id` after about a week with no
|
|
64
|
+
* updates (Bot API). A floor older than this is ignored so inbound is not
|
|
65
|
+
* dropped forever.
|
|
66
|
+
*/
|
|
67
|
+
export const TELEGRAM_UPDATE_ID_FLOOR_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
68
|
+
/** Telegram's default getUpdates page size; a shorter page means the queue drained. */
|
|
69
|
+
export const TELEGRAM_GETUPDATES_LIMIT = 100;
|
|
70
|
+
/** Crash-safe last processed `update_id` for this adapter (inside inboxDir; prune skips it). */
|
|
71
|
+
export function telegramLastUpdateIdPath(inboxDir, adapterId) {
|
|
72
|
+
const safe = adapterId.replace(/[^A-Za-z0-9._-]+/g, "_") || "adapter";
|
|
73
|
+
return join(inboxDir, `telegram-${safe}-last-update-id`);
|
|
74
|
+
}
|
|
55
75
|
function errorMessage(err) {
|
|
56
76
|
return err instanceof Error ? err.message : String(err);
|
|
57
77
|
}
|
|
78
|
+
function telegramUpdateAgeMs(update, now) {
|
|
79
|
+
const date = update.message?.date ?? update.callback_query?.message?.date;
|
|
80
|
+
if (typeof date !== "number" || !Number.isFinite(date))
|
|
81
|
+
return null;
|
|
82
|
+
return now - date * 1000;
|
|
83
|
+
}
|
|
58
84
|
/** Remove Bot API credentials from nested node-fetch errors before logging. */
|
|
59
85
|
export function redactTelegramSecrets(value, botToken = "") {
|
|
60
86
|
let redacted = value.replace(/\/bot[^/\s]+(?=\/)/gi, "/bot[REDACTED]");
|
|
@@ -247,6 +273,14 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
247
273
|
/** Topics the probe itself is addressing right now — their failures are results, not hints. */
|
|
248
274
|
probingThreads = new Set();
|
|
249
275
|
topicGoneHintAt = new Map();
|
|
276
|
+
/** Last processed `update_id`; 0 means no floor. Telegram ids are usually monotonic. */
|
|
277
|
+
lastUpdateId = 0;
|
|
278
|
+
floorBotId;
|
|
279
|
+
floorRecordedAt = 0;
|
|
280
|
+
/** False until a getUpdates page shorter than TELEGRAM_GETUPDATES_LIMIT (the queue drained). */
|
|
281
|
+
backlogDrained = false;
|
|
282
|
+
backlogUpdateIds = new Set();
|
|
283
|
+
persistFloorTimer;
|
|
250
284
|
constructor(opts) {
|
|
251
285
|
super();
|
|
252
286
|
this.id = opts.id;
|
|
@@ -297,6 +331,7 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
297
331
|
}
|
|
298
332
|
},
|
|
299
333
|
});
|
|
334
|
+
this.loadFloor();
|
|
300
335
|
this._registerHandlers();
|
|
301
336
|
}
|
|
302
337
|
/**
|
|
@@ -314,11 +349,21 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
314
349
|
if (!this.bot.api.config?.use)
|
|
315
350
|
return;
|
|
316
351
|
this.bot.api.config.use(async (prev, method, payload, signal) => {
|
|
352
|
+
// grammY.stop sends a final offset ACK, and an already-fetched batch can finish later.
|
|
353
|
+
// Once fenced, neither path may confirm or admit updates for the stopping fleet.
|
|
354
|
+
if (method === "getUpdates" && this.stopped)
|
|
355
|
+
return { ok: true, result: [] };
|
|
317
356
|
const requestGeneration = this.httpAgentGeneration;
|
|
318
357
|
try {
|
|
319
|
-
|
|
358
|
+
const result = await prev(method, payload, signal);
|
|
359
|
+
if (method === "getUpdates" && this.stopped)
|
|
360
|
+
return { ok: true, result: [] };
|
|
361
|
+
this.noteGetUpdatesBacklog(method, result);
|
|
362
|
+
return result;
|
|
320
363
|
}
|
|
321
364
|
catch (err) {
|
|
365
|
+
if (method === "getUpdates" && this.stopped)
|
|
366
|
+
return { ok: true, result: [] };
|
|
322
367
|
if (!(err instanceof HttpError))
|
|
323
368
|
throw err;
|
|
324
369
|
const firstDetail = telegramNetworkErrorDetails(err, this.botToken);
|
|
@@ -326,6 +371,8 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
326
371
|
console.warn(`[telegram] ${method} transport failed; HTTP pool ${reset ? "reset" : "reset suppressed by cooldown"}: ${firstDetail}`);
|
|
327
372
|
if (isDefinitelyPreDeliveryNetworkError(err) && !signal?.aborted) {
|
|
328
373
|
await new Promise(resolve => setTimeout(resolve, TELEGRAM_NETWORK_RETRY_MS));
|
|
374
|
+
if (method === "getUpdates" && this.stopped)
|
|
375
|
+
return { ok: true, result: [] };
|
|
329
376
|
const retryGeneration = this.httpAgentGeneration;
|
|
330
377
|
try {
|
|
331
378
|
return await prev(method, payload, signal);
|
|
@@ -370,14 +417,42 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
370
417
|
return true;
|
|
371
418
|
}
|
|
372
419
|
_registerHandlers() {
|
|
373
|
-
//
|
|
374
|
-
//
|
|
375
|
-
// Put this ahead of rich-message middleware as well as ordinary messages.
|
|
420
|
+
// Dedup, own-message skip, and the downtime age cap run before any handler.
|
|
421
|
+
// Record the update_id before acting so a crash mid-batch cannot inject twice.
|
|
376
422
|
this.bot.use(async (ctx, next) => {
|
|
377
|
-
|
|
423
|
+
if (this.stopped)
|
|
424
|
+
return; // Before the durable floor as well as handler dispatch.
|
|
425
|
+
const update = ctx.update;
|
|
426
|
+
const updateId = update.update_id;
|
|
427
|
+
this.discardFloorIfStale(Date.now());
|
|
428
|
+
if (typeof updateId === "number") {
|
|
429
|
+
if (this.lastUpdateId > 0 && updateId <= this.lastUpdateId)
|
|
430
|
+
return;
|
|
431
|
+
this.lastUpdateId = updateId;
|
|
432
|
+
this.floorRecordedAt = Date.now();
|
|
433
|
+
if (this.bot.botInfo?.id != null)
|
|
434
|
+
this.floorBotId = this.bot.botInfo.id;
|
|
435
|
+
this.schedulePersistFloor();
|
|
436
|
+
}
|
|
437
|
+
const message = update.message;
|
|
378
438
|
const sender = message?.from?.id;
|
|
379
439
|
if (sender != null && sender === this.bot.botInfo?.id)
|
|
380
440
|
return;
|
|
441
|
+
// Age cap / stale callbacks apply to the downtime queue (pages until a short getUpdates).
|
|
442
|
+
const isBacklog = typeof updateId === "number" && this.backlogUpdateIds.has(updateId);
|
|
443
|
+
if (isBacklog) {
|
|
444
|
+
if (update.callback_query) {
|
|
445
|
+
// The card's date is not the click's; queued callbacks are stale by being in the backlog.
|
|
446
|
+
ctx.answerCallbackQuery().catch(() => { });
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
const ageMs = telegramUpdateAgeMs(update, Date.now());
|
|
450
|
+
if (ageMs != null && ageMs > TELEGRAM_PENDING_LIVE_MAX_MS
|
|
451
|
+
&& message && !this._isServiceMessage(message)) {
|
|
452
|
+
this.emitMissedOffline(updateId ?? 0, message);
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
381
456
|
return next();
|
|
382
457
|
});
|
|
383
458
|
// Middleware: catch Rich Message updates that grammy doesn't route to bot.on("message")
|
|
@@ -640,6 +715,8 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
640
715
|
authRejected = false;
|
|
641
716
|
/** #1537 review: stop() was called (and no start() since). */
|
|
642
717
|
stopped = false;
|
|
718
|
+
pollingGeneration = 0;
|
|
719
|
+
receiveStop = null;
|
|
643
720
|
connectionEvidence() {
|
|
644
721
|
return { ready: this.pollingReady, authRejected: this.authRejected, stopped: this.stopped };
|
|
645
722
|
}
|
|
@@ -647,6 +724,10 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
647
724
|
// #1537 review: a new start borrows nothing from the last one — not ready until its own onStart, and not stopped.
|
|
648
725
|
this.pollingReady = false;
|
|
649
726
|
this.stopped = false;
|
|
727
|
+
this.receiveStop = null;
|
|
728
|
+
const generation = ++this.pollingGeneration, current = () => !this.stopped && this.pollingGeneration === generation;
|
|
729
|
+
this.backlogDrained = false;
|
|
730
|
+
this.backlogUpdateIds.clear();
|
|
650
731
|
this.queue.start();
|
|
651
732
|
this._pruneInbox();
|
|
652
733
|
this.cleanupTimer = setInterval(() => this._pruneInbox(), 60 * 60 * 1000);
|
|
@@ -663,15 +744,18 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
663
744
|
const MAX_RECONNECT_RETRIES = 10; // auto-reconnect on non-409 errors
|
|
664
745
|
void (async () => {
|
|
665
746
|
let reconnects = 0;
|
|
666
|
-
while (
|
|
667
|
-
for (let attempt = 1; attempt <= MAX_409_RETRIES; attempt++) {
|
|
747
|
+
while (current()) {
|
|
748
|
+
for (let attempt = 1; current() && attempt <= MAX_409_RETRIES; attempt++) {
|
|
668
749
|
try {
|
|
669
750
|
await this.bot.start({
|
|
670
751
|
// Keep the server-side long poll comfortably below both 30s
|
|
671
752
|
// client deadlines. Equal 30s deadlines race the normal empty
|
|
672
753
|
// getUpdates response and would churn the HTTP pool while idle.
|
|
673
754
|
timeout: TELEGRAM_LONG_POLL_TIMEOUT_SECONDS,
|
|
674
|
-
|
|
755
|
+
// Telegram queues ~24h of updates. Dropping them on a cold start
|
|
756
|
+
// discards messages sent while AgEnD was stopped. Keep them; the
|
|
757
|
+
// adapter delivers recent ones and files older ones as Needs-you.
|
|
758
|
+
drop_pending_updates: false,
|
|
675
759
|
// Telegram's DEFAULT allowed_updates excludes message_reaction, so
|
|
676
760
|
// reactions cannot arrive unless the set is listed explicitly. Passing
|
|
677
761
|
// this list also FREEZES the set: any update type omitted here stops
|
|
@@ -681,15 +765,20 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
681
765
|
// added here too, or it will never fire.
|
|
682
766
|
allowed_updates: TELEGRAM_ALLOWED_UPDATES,
|
|
683
767
|
onStart: (info) => {
|
|
768
|
+
if (!current())
|
|
769
|
+
return;
|
|
684
770
|
reconnects = 0; // reset on successful start
|
|
685
771
|
this.pollingReady = true;
|
|
686
772
|
this.authRejected = false;
|
|
773
|
+
this.discardFloorIfStale(Date.now(), info.id);
|
|
687
774
|
this.emit("started", info.username, String(info.id));
|
|
688
775
|
},
|
|
689
776
|
});
|
|
690
777
|
return; // bot.stop() was called — clean exit
|
|
691
778
|
}
|
|
692
779
|
catch (err) {
|
|
780
|
+
if (!current())
|
|
781
|
+
return;
|
|
693
782
|
// #1519 P6: what the connection's status reports — not polling now, and whether Telegram refused the token.
|
|
694
783
|
this.pollingReady = false;
|
|
695
784
|
if (err instanceof GrammyError && err.error_code === 401)
|
|
@@ -720,10 +809,19 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
720
809
|
}
|
|
721
810
|
})();
|
|
722
811
|
}
|
|
723
|
-
|
|
724
|
-
|
|
812
|
+
stopReceiving() {
|
|
813
|
+
if (this.receiveStop)
|
|
814
|
+
return this.receiveStop;
|
|
815
|
+
// Set before bot.stop (and its final getUpdates ACK); do not close the outbound queue yet.
|
|
725
816
|
this.pollingReady = false;
|
|
726
817
|
this.stopped = true;
|
|
818
|
+
this.pollingGeneration++;
|
|
819
|
+
this.flushPersistFloor();
|
|
820
|
+
this.receiveStop = this.bot.stop();
|
|
821
|
+
return this.receiveStop;
|
|
822
|
+
}
|
|
823
|
+
async stop() {
|
|
824
|
+
const receivingStopped = this.stopReceiving();
|
|
727
825
|
// Invalidate queued status work before any await. Re-created adapters must
|
|
728
826
|
// not inherit proof from this object's pending requests.
|
|
729
827
|
this.reactionGeneration = (this.reactionGeneration ?? 0) + 1;
|
|
@@ -733,9 +831,126 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
733
831
|
if (this.cleanupTimer)
|
|
734
832
|
clearInterval(this.cleanupTimer);
|
|
735
833
|
this.queue.stop();
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
834
|
+
try {
|
|
835
|
+
await receivingStopped;
|
|
836
|
+
}
|
|
837
|
+
finally {
|
|
838
|
+
this.httpAgent.destroy();
|
|
839
|
+
this.httpsAgent.destroy();
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
lastUpdateIdFile() {
|
|
843
|
+
return telegramLastUpdateIdPath(this.inboxDir, this.id);
|
|
844
|
+
}
|
|
845
|
+
loadFloor() {
|
|
846
|
+
try {
|
|
847
|
+
const parsed = JSON.parse(readFileSync(this.lastUpdateIdFile(), "utf8"));
|
|
848
|
+
if (!parsed || typeof parsed !== "object")
|
|
849
|
+
return;
|
|
850
|
+
const rec = parsed;
|
|
851
|
+
const id = rec.update_id;
|
|
852
|
+
if (typeof id !== "number" || !Number.isSafeInteger(id) || id < 0)
|
|
853
|
+
return;
|
|
854
|
+
this.lastUpdateId = id;
|
|
855
|
+
this.floorBotId = typeof rec.bot_id === "number" && Number.isSafeInteger(rec.bot_id) ? rec.bot_id : undefined;
|
|
856
|
+
this.floorRecordedAt = typeof rec.recorded_at === "number" && Number.isFinite(rec.recorded_at) ? rec.recorded_at : 0;
|
|
857
|
+
this.discardFloorIfStale(Date.now());
|
|
858
|
+
}
|
|
859
|
+
catch { /* no floor yet */ }
|
|
860
|
+
}
|
|
861
|
+
clearFloor() {
|
|
862
|
+
this.lastUpdateId = 0;
|
|
863
|
+
this.floorBotId = undefined;
|
|
864
|
+
this.floorRecordedAt = 0;
|
|
865
|
+
}
|
|
866
|
+
/** Drop a floor that belongs to another bot, or that is older than a week of silence. */
|
|
867
|
+
discardFloorIfStale(now, botId) {
|
|
868
|
+
if (this.lastUpdateId <= 0)
|
|
869
|
+
return;
|
|
870
|
+
if (this.floorRecordedAt > 0 && now - this.floorRecordedAt > TELEGRAM_UPDATE_ID_FLOOR_MAX_AGE_MS) {
|
|
871
|
+
this.clearFloor();
|
|
872
|
+
return;
|
|
873
|
+
}
|
|
874
|
+
const id = botId ?? (this.bot.isInited() ? this.bot.botInfo.id : undefined);
|
|
875
|
+
if (this.floorBotId != null && id != null && this.floorBotId !== id)
|
|
876
|
+
this.clearFloor();
|
|
877
|
+
}
|
|
878
|
+
schedulePersistFloor() {
|
|
879
|
+
if (this.persistFloorTimer)
|
|
880
|
+
return;
|
|
881
|
+
this.persistFloorTimer = setImmediate(() => {
|
|
882
|
+
this.persistFloorTimer = undefined;
|
|
883
|
+
this.writeFloor();
|
|
884
|
+
});
|
|
885
|
+
}
|
|
886
|
+
flushPersistFloor() {
|
|
887
|
+
if (this.persistFloorTimer) {
|
|
888
|
+
clearImmediate(this.persistFloorTimer);
|
|
889
|
+
this.persistFloorTimer = undefined;
|
|
890
|
+
}
|
|
891
|
+
this.writeFloor();
|
|
892
|
+
}
|
|
893
|
+
writeFloor() {
|
|
894
|
+
try {
|
|
895
|
+
const rec = { update_id: this.lastUpdateId };
|
|
896
|
+
if (this.floorBotId != null)
|
|
897
|
+
rec.bot_id = this.floorBotId;
|
|
898
|
+
if (this.floorRecordedAt > 0)
|
|
899
|
+
rec.recorded_at = this.floorRecordedAt;
|
|
900
|
+
atomicWriteFileSync(this.lastUpdateIdFile(), `${JSON.stringify(rec)}\n`, { mode: 0o600 });
|
|
901
|
+
}
|
|
902
|
+
catch (err) {
|
|
903
|
+
console.warn(`[telegram:${this.id}] could not persist last update_id (${errorMessage(err)})`);
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
noteGetUpdatesBacklog(method, result) {
|
|
907
|
+
if (method !== "getUpdates" || this.backlogDrained)
|
|
908
|
+
return;
|
|
909
|
+
if (result && typeof result === "object" && "ok" in result && result.ok !== true)
|
|
910
|
+
return;
|
|
911
|
+
// Transformers see the raw Bot API envelope `{ ok, result }`; callApi unwraps after.
|
|
912
|
+
const updates = result && typeof result === "object" && "result" in result
|
|
913
|
+
? result.result
|
|
914
|
+
: result;
|
|
915
|
+
if (!Array.isArray(updates))
|
|
916
|
+
return;
|
|
917
|
+
const ids = [];
|
|
918
|
+
for (const item of updates) {
|
|
919
|
+
if (item && typeof item === "object" && typeof item.update_id === "number") {
|
|
920
|
+
ids.push(item.update_id);
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
// A new random sequence after a week of silence can land entirely below the stored floor.
|
|
924
|
+
if (ids.length > 0 && this.lastUpdateId > 0 && Math.max(...ids) < this.lastUpdateId) {
|
|
925
|
+
this.clearFloor();
|
|
926
|
+
this.schedulePersistFloor();
|
|
927
|
+
}
|
|
928
|
+
for (const id of ids)
|
|
929
|
+
this.backlogUpdateIds.add(id);
|
|
930
|
+
if (updates.length < TELEGRAM_GETUPDATES_LIMIT)
|
|
931
|
+
this.backlogDrained = true;
|
|
932
|
+
}
|
|
933
|
+
emitMissedOffline(updateId, msg) {
|
|
934
|
+
const userId = msg.from?.id;
|
|
935
|
+
if (userId == null || msg.chat?.id == null)
|
|
936
|
+
return;
|
|
937
|
+
const text = String(msg.text ?? msg.caption ?? "").replace(/\s+/g, " ").trim();
|
|
938
|
+
const preview = text.length > 160 ? `${text.slice(0, 159)}…` : text;
|
|
939
|
+
const threadId = msg.message_thread_id != null ? String(msg.message_thread_id) : undefined;
|
|
940
|
+
const payload = {
|
|
941
|
+
source: "telegram",
|
|
942
|
+
adapterId: this.id,
|
|
943
|
+
updateId,
|
|
944
|
+
chatId: String(msg.chat.id),
|
|
945
|
+
...(threadId !== undefined ? { threadId } : {}),
|
|
946
|
+
messageId: String(msg.message_id ?? ""),
|
|
947
|
+
userId: String(userId),
|
|
948
|
+
username: msg.from?.username ?? msg.from?.first_name ?? String(userId),
|
|
949
|
+
preview,
|
|
950
|
+
timestamp: new Date((msg.date ?? 0) * 1000),
|
|
951
|
+
...(msg.chat.title ? { chatTitle: String(msg.chat.title) } : {}),
|
|
952
|
+
};
|
|
953
|
+
this.emit("missed_offline", payload);
|
|
739
954
|
}
|
|
740
955
|
/** Delete inbox files older than 1 hour */
|
|
741
956
|
_pruneInbox() {
|
|
@@ -743,6 +958,8 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
743
958
|
const now = Date.now();
|
|
744
959
|
try {
|
|
745
960
|
for (const name of readdirSync(this.inboxDir)) {
|
|
961
|
+
if (/^telegram-.+-last-update-id$/.test(name))
|
|
962
|
+
continue;
|
|
746
963
|
const filePath = join(this.inboxDir, name);
|
|
747
964
|
try {
|
|
748
965
|
const mtime = statSync(filePath).mtimeMs;
|
|
@@ -1498,12 +1715,13 @@ export class TelegramAdapter extends EventEmitter {
|
|
|
1498
1715
|
return res.message_thread_id;
|
|
1499
1716
|
}
|
|
1500
1717
|
async deleteTopic(topicId) {
|
|
1501
|
-
// Telegram's General topic is the forum root, not a deletable topic.
|
|
1718
|
+
// Telegram's General topic is the forum root, not a deletable topic. Refused, never "done": a caller reports what
|
|
1719
|
+
// happened (delete_instance's topic_deleted), and silence would read as a deletion.
|
|
1502
1720
|
if (String(topicId) === "1")
|
|
1503
|
-
|
|
1721
|
+
throw new Error("the General topic is never deleted");
|
|
1504
1722
|
const chatId = this.getChatId();
|
|
1505
1723
|
if (!chatId)
|
|
1506
|
-
|
|
1724
|
+
throw new Error("the Telegram bot is not connected to its group");
|
|
1507
1725
|
await this.bot.api.raw.deleteForumTopic({ chat_id: Number(chatId), message_thread_id: Number(topicId) });
|
|
1508
1726
|
}
|
|
1509
1727
|
async probeTopicPresence(topicId) {
|