@indigoai-us/hq-cli 5.314.0 → 5.316.0
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/CHANGELOG.md +4320 -1
- package/README.md +113 -0
- package/assets/bot-workers/setup/context/USER-GUIDE.md +404 -0
- package/assets/bot-workers/setup/context/quick-reference.md +199 -0
- package/assets/bot-workers/setup/skills/agents-and-team.md +167 -0
- package/assets/bot-workers/setup/skills/explain-hq.md +35 -0
- package/assets/bot-workers/setup/skills/first-company.md +74 -0
- package/assets/bot-workers/setup/skills/joining-a-team.md +125 -0
- package/assets/bot-workers/setup/skills/pricing.md +92 -0
- package/assets/bot-workers/setup/skills/standing-help.md +81 -0
- package/assets/bot-workers/setup/skills/your-business.md +281 -0
- package/assets/bot-workers/setup/worker.yaml +791 -0
- package/assets/lanes-hooks/hq-lanes-drain.json +15 -0
- package/assets/lanes-hooks/hq-lanes-drain.mjs +275 -0
- package/assets/lanes-hooks/hq-lanes-drain.sh +21 -0
- package/assets/lanes-reconcile/hq-lanes-reconcile.service +11 -0
- package/assets/lanes-reconcile/hq-lanes-reconcile.timer +12 -0
- package/assets/scaffold/.claude/hooks/validate-policy-frontmatter.sh +485 -0
- package/assets/scaffold/core/scripts/audit-log.sh +384 -0
- package/assets/scaffold/core/scripts/checkpoint-stop-gate.sh +281 -43
- package/assets/scaffold/core/scripts/clean-worktree-reconcile-handoff.sh +171 -0
- package/assets/scaffold/core/scripts/detect-stale-review-base.sh +199 -0
- package/assets/scaffold/core/scripts/eval-trigger.sh +193 -0
- package/assets/scaffold/core/scripts/git-pack-extension-check.sh +164 -0
- package/assets/scaffold/core/scripts/handoff-finalize.sh +688 -0
- package/assets/scaffold/core/scripts/handoff-open-steps.sh +81 -0
- package/assets/scaffold/core/scripts/handoff-post.sh +252 -0
- package/assets/scaffold/core/scripts/hook-lib.sh +345 -50
- package/assets/scaffold/core/scripts/hq-delegate-bundle.sh +307 -0
- package/assets/scaffold/core/scripts/hq-delegate-grant.sh +252 -0
- package/assets/scaffold/core/scripts/hq-delegate-pickup.sh +99 -0
- package/assets/scaffold/core/scripts/hq-delegate-publish.sh +91 -0
- package/assets/scaffold/core/scripts/hq-delegate-repo.sh +158 -0
- package/assets/scaffold/core/scripts/hq-delegate-resolve.sh +145 -0
- package/assets/scaffold/core/scripts/hq-delegate-secrets.sh +129 -0
- package/assets/scaffold/core/scripts/hq-delegate-send.sh +259 -0
- package/assets/scaffold/core/scripts/hq-delegate-transfer.sh +175 -0
- package/assets/scaffold/core/scripts/hq-delegate-verify.sh +238 -0
- package/assets/scaffold/core/scripts/hq-dm-bind.sh +585 -0
- package/assets/scaffold/core/scripts/hq-job-notify.sh +389 -0
- package/assets/scaffold/core/scripts/hq-job-probe.sh +835 -0
- package/assets/scaffold/core/scripts/hq-job-remediate.sh +359 -0
- package/assets/scaffold/core/scripts/hq-job-run.sh +1025 -0
- package/assets/scaffold/core/scripts/hq-pin.sh +118 -0
- package/assets/scaffold/core/scripts/hq-session.sh +184 -23
- package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +310 -0
- package/assets/scaffold/core/scripts/jobs-validate.sh +451 -0
- package/assets/scaffold/core/scripts/knowledge-prefs.sh +55 -0
- package/assets/scaffold/core/scripts/lib/portable.sh +211 -0
- package/assets/scaffold/core/scripts/lib/secret-patterns.sh +58 -0
- package/assets/scaffold/core/scripts/lib/session-id.sh +3 -2
- package/assets/scaffold/core/scripts/lib/session-scope-capability.sh +1 -1
- package/assets/scaffold/core/scripts/lib/work-mesh-enqueue.sh +2 -1
- package/assets/scaffold/core/scripts/lib/work-mesh-live-hook.sh +378 -0
- package/assets/scaffold/core/scripts/lib/work-mesh-live-rebind.sh +141 -0
- package/assets/scaffold/core/scripts/migrate-policy-triggers.sh +378 -0
- package/assets/scaffold/core/scripts/ontology-audience-grant.sh +81 -0
- package/assets/scaffold/core/scripts/ontology-brief.mjs +93 -0
- package/assets/scaffold/core/scripts/ontology-candidate.sh +100 -0
- package/assets/scaffold/core/scripts/ontology-garden.mjs +238 -0
- package/assets/scaffold/core/scripts/ontology-source-worklist.sh +79 -0
- package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +834 -0
- package/assets/scaffold/core/scripts/policy-age-report.sh +156 -0
- package/assets/scaffold/core/scripts/policy-retire.sh +199 -0
- package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +10 -87
- package/assets/scaffold/core/scripts/qmd-reindex-bg.sh +40 -0
- package/assets/scaffold/core/scripts/read-policy-frontmatter.sh +32 -0
- package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +36 -3
- package/assets/scaffold/core/scripts/rebuild-projects-index.sh +99 -12
- package/assets/scaffold/core/scripts/refresh-vault-access.sh +188 -0
- package/assets/scaffold/core/scripts/register-project.sh +262 -0
- package/assets/scaffold/core/scripts/repo-run-registry.sh +408 -0
- package/assets/scaffold/core/scripts/resolve-company.sh +199 -0
- package/assets/scaffold/core/scripts/resume-thread-lock.sh +285 -0
- package/assets/scaffold/core/scripts/share-suggestion-state.sh +541 -0
- package/assets/scaffold/core/scripts/source-yaml-validate.sh +36 -0
- package/assets/scaffold/core/scripts/token-usage-report.sh +81 -20
- package/assets/scaffold/core/scripts/verify-story-deliverables.sh +148 -0
- package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +152 -0
- package/assets/scaffold/core/scripts/work-mesh-live-rebind.sh +59 -0
- package/assets/scaffold/core/scripts/worktree-gc.sh +362 -0
- package/contracts/preflight/v1/fixtures.json +87 -0
- package/contracts/preflight/v1/schema.json +58 -0
- package/dist/bin/hq-auth-refresh.d.ts +2 -0
- package/dist/bin/hq-auth-refresh.js +12 -6
- package/dist/command-catalog.generated.d.ts +10798 -0
- package/dist/command-catalog.generated.js +13915 -0
- package/dist/command-registration-plan.d.ts +474 -0
- package/dist/command-registration-plan.js +136 -0
- package/dist/commands/__fixtures__/access-vault.d.ts +2 -0
- package/dist/commands/__fixtures__/access-vault.js +1 -1
- package/dist/commands/_patterns.d.ts +16 -0
- package/dist/commands/_patterns.js +20 -3
- package/dist/commands/access.d.ts +2 -1
- package/dist/commands/access.js +58 -49
- package/dist/commands/agent-enroll.d.ts +146 -0
- package/dist/commands/agent-enroll.js +401 -0
- package/dist/commands/agent-inbox.d.ts +9 -0
- package/dist/commands/agent-inbox.js +102 -0
- package/dist/commands/agent-kit.d.ts +87 -0
- package/dist/commands/agent-kit.js +480 -0
- package/dist/commands/agent-mcp.d.ts +24 -0
- package/dist/commands/agent-mcp.js +127 -0
- package/dist/commands/agent-probe.d.ts +77 -0
- package/dist/commands/agent-probe.js +335 -0
- package/dist/commands/agent.d.ts +13 -0
- package/dist/commands/agent.js +40 -0
- package/dist/commands/agents.d.ts +106 -4
- package/dist/commands/agents.js +924 -45
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.js +189 -19
- package/dist/commands/billing-sponsor.d.ts +83 -0
- package/dist/commands/billing-sponsor.js +344 -0
- package/dist/commands/billing.d.ts +3 -0
- package/dist/commands/billing.js +6 -1
- package/dist/commands/bot-companies.d.ts +40 -0
- package/dist/commands/bot-companies.js +64 -0
- package/dist/commands/bot-continuity.d.ts +28 -0
- package/dist/commands/bot-continuity.js +68 -0
- package/dist/commands/bot-jobs.d.ts +131 -0
- package/dist/commands/bot-jobs.js +474 -0
- package/dist/commands/bot.d.ts +278 -0
- package/dist/commands/bot.js +1982 -0
- package/dist/commands/channels.js +56 -1
- package/dist/commands/cloud-demote.js +3 -2
- package/dist/commands/cloud-provision.d.ts +14 -0
- package/dist/commands/cloud-provision.js +232 -58
- package/dist/commands/cloud-retire.d.ts +51 -0
- package/dist/commands/cloud-retire.js +154 -0
- package/dist/commands/cloud.d.ts +49 -15
- package/dist/commands/cloud.js +357 -122
- package/dist/commands/company-rename-flag.d.ts +4 -0
- package/dist/commands/company-rename-flag.js +7 -0
- package/dist/commands/company-rename.d.ts +4 -0
- package/dist/commands/company-rename.js +90 -0
- package/dist/commands/company-transfer.d.ts +4 -28
- package/dist/commands/company-transfer.js +5 -49
- package/dist/commands/company.js +68 -3
- package/dist/commands/core-audit-log-native.d.ts +9 -0
- package/dist/commands/core-audit-log-native.js +257 -0
- package/dist/commands/core-checkpoint-gate-setting.d.ts +59 -0
- package/dist/commands/core-checkpoint-gate-setting.js +163 -0
- package/dist/commands/core-checkpoint-stop-gate-native.d.ts +34 -0
- package/dist/commands/core-checkpoint-stop-gate-native.js +725 -0
- package/dist/commands/core-checkpoint.d.ts +19 -9
- package/dist/commands/core-checkpoint.js +301 -37
- package/dist/commands/core-command-catalog.d.ts +34 -0
- package/dist/commands/core-command-catalog.js +62 -0
- package/dist/commands/core-company-index-scope-flag.d.ts +3 -0
- package/dist/commands/core-company-index-scope-flag.js +6 -0
- package/dist/commands/core-delegate-w1b.d.ts +10 -0
- package/dist/commands/core-delegate-w1b.js +1219 -0
- package/dist/commands/core-delegate.d.ts +46 -0
- package/dist/commands/core-delegate.js +1040 -0
- package/dist/commands/core-detect-stale-review-base-native.d.ts +23 -0
- package/dist/commands/core-detect-stale-review-base-native.js +178 -0
- package/dist/commands/core-dm-bind-native.d.ts +32 -0
- package/dist/commands/core-dm-bind-native.js +668 -0
- package/dist/commands/core-eval-trigger-native.d.ts +4 -0
- package/dist/commands/core-eval-trigger-native.js +12 -0
- package/dist/commands/core-git-pack-extension-check-native.d.ts +22 -0
- package/dist/commands/core-git-pack-extension-check-native.js +190 -0
- package/dist/commands/core-handoff-fast.d.ts +18 -0
- package/dist/commands/core-handoff-fast.js +104 -0
- package/dist/commands/core-handoff-open-steps.d.ts +21 -0
- package/dist/commands/core-handoff-open-steps.js +264 -0
- package/dist/commands/core-handoff.d.ts +24 -0
- package/dist/commands/core-handoff.js +1144 -0
- package/dist/commands/core-hook-state-helpers-native.d.ts +11 -0
- package/dist/commands/core-hook-state-helpers-native.js +74 -0
- package/dist/commands/core-hq-session-native.d.ts +39 -0
- package/dist/commands/core-hq-session-native.js +579 -0
- package/dist/commands/core-job-native-utils.d.ts +6 -0
- package/dist/commands/core-job-native-utils.js +80 -0
- package/dist/commands/core-job-native.d.ts +5 -0
- package/dist/commands/core-job-native.js +16 -0
- package/dist/commands/core-job-notify-native.d.ts +36 -0
- package/dist/commands/core-job-notify-native.js +359 -0
- package/dist/commands/core-job-probe-native.d.ts +45 -0
- package/dist/commands/core-job-probe-native.js +564 -0
- package/dist/commands/core-job-remediate-native.d.ts +26 -0
- package/dist/commands/core-job-remediate-native.js +374 -0
- package/dist/commands/core-job-remote-launcher.d.ts +7 -0
- package/dist/commands/core-job-remote-launcher.js +51 -0
- package/dist/commands/core-job-run-native.d.ts +47 -0
- package/dist/commands/core-job-run-native.js +1215 -0
- package/dist/commands/core-jobs-native.d.ts +25 -0
- package/dist/commands/core-jobs-native.js +1339 -0
- package/dist/commands/core-knowledge-prefs.d.ts +11 -0
- package/dist/commands/core-knowledge-prefs.js +137 -0
- package/dist/commands/core-migrate-policy-triggers-native.d.ts +21 -0
- package/dist/commands/core-migrate-policy-triggers-native.js +374 -0
- package/dist/commands/core-native-handoff-flag.d.ts +4 -0
- package/dist/commands/core-native-handoff-flag.js +7 -0
- package/dist/commands/core-native-hook-helper-commands.d.ts +4 -0
- package/dist/commands/core-native-hook-helper-commands.js +56 -0
- package/dist/commands/core-native-hook-helpers-flag.d.ts +4 -0
- package/dist/commands/core-native-hook-helpers-flag.js +7 -0
- package/dist/commands/core-native-jobs-flag.d.ts +4 -0
- package/dist/commands/core-native-jobs-flag.js +7 -0
- package/dist/commands/core-native-policy-flag.d.ts +9 -0
- package/dist/commands/core-native-policy-flag.js +12 -0
- package/dist/commands/core-native-session-flag.d.ts +4 -0
- package/dist/commands/core-native-session-flag.js +7 -0
- package/dist/commands/core-native-utilities-flag.d.ts +4 -0
- package/dist/commands/core-native-utilities-flag.js +7 -0
- package/dist/commands/core-native-utilities.d.ts +29 -0
- package/dist/commands/core-native-utilities.js +54 -0
- package/dist/commands/core-native-worker-skills-flag.d.ts +4 -0
- package/dist/commands/core-native-worker-skills-flag.js +7 -0
- package/dist/commands/core-ontology-native.d.ts +17 -0
- package/dist/commands/core-ontology-native.js +916 -0
- package/dist/commands/core-ontology.d.ts +66 -0
- package/dist/commands/core-ontology.js +430 -0
- package/dist/commands/core-pin-native.d.ts +14 -0
- package/dist/commands/core-pin-native.js +236 -0
- package/dist/commands/core-policy-frontmatter.d.ts +8 -0
- package/dist/commands/core-policy-frontmatter.js +52 -0
- package/dist/commands/core-policy.d.ts +14 -0
- package/dist/commands/core-policy.js +1018 -0
- package/dist/commands/core-refresh-vault-access-native.d.ts +20 -0
- package/dist/commands/core-refresh-vault-access-native.js +229 -0
- package/dist/commands/core-register-project-native.d.ts +30 -0
- package/dist/commands/core-register-project-native.js +347 -0
- package/dist/commands/core-repo-run-registry-native.d.ts +19 -0
- package/dist/commands/core-repo-run-registry-native.js +357 -0
- package/dist/commands/core-resolve-company-command.d.ts +4 -0
- package/dist/commands/core-resolve-company-command.js +42 -0
- package/dist/commands/core-resolve-company-native.d.ts +28 -0
- package/dist/commands/core-resolve-company-native.js +408 -0
- package/dist/commands/core-share-suggestion-state-native.d.ts +18 -0
- package/dist/commands/core-share-suggestion-state-native.js +445 -0
- package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +32 -0
- package/dist/commands/core-work-mesh-bind-trusted-native.js +190 -0
- package/dist/commands/core-work-mesh-live-rebind-native.d.ts +18 -0
- package/dist/commands/core-work-mesh-live-rebind-native.js +262 -0
- package/dist/commands/core-worker-lint-native.d.ts +4 -0
- package/dist/commands/core-worker-lint-native.js +160 -0
- package/dist/commands/core-worker-share-native.d.ts +4 -0
- package/dist/commands/core-worker-share-native.js +260 -0
- package/dist/commands/core-worker-skills-command.d.ts +8 -0
- package/dist/commands/core-worker-skills-command.js +33 -0
- package/dist/commands/core-worker-skills-runtime.d.ts +33 -0
- package/dist/commands/core-worker-skills-runtime.js +86 -0
- package/dist/commands/core.d.ts +4 -0
- package/dist/commands/core.js +282 -80
- package/dist/commands/crm.js +52 -3
- package/dist/commands/daemon.d.ts +63 -0
- package/dist/commands/daemon.js +877 -0
- package/dist/commands/db-provision.js +4 -4
- package/dist/commands/db-sql.js +7 -21
- package/dist/commands/deploy-comments.d.ts +3 -0
- package/dist/commands/deploy-comments.js +162 -0
- package/dist/commands/dm.d.ts +119 -12
- package/dist/commands/dm.js +388 -38
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.js +158 -12
- package/dist/commands/feedback.d.ts +6 -0
- package/dist/commands/feedback.js +86 -37
- package/dist/commands/files-browse.d.ts +32 -12
- package/dist/commands/files-browse.js +176 -60
- package/dist/commands/files.d.ts +17 -0
- package/dist/commands/files.js +300 -47
- package/dist/commands/group-grants.js +3 -2
- package/dist/commands/groups.js +6 -5
- package/dist/commands/index-cmd.d.ts +19 -1
- package/dist/commands/index-cmd.js +74 -7
- package/dist/commands/integrations-api.d.ts +15 -10
- package/dist/commands/integrations-api.js +27 -22
- package/dist/commands/integrations-connect.d.ts +51 -13
- package/dist/commands/integrations-connect.js +86 -71
- package/dist/commands/integrations-core.d.ts +6 -6
- package/dist/commands/integrations-core.js +25 -11
- package/dist/commands/integrations-import.d.ts +1 -1
- package/dist/commands/integrations-import.js +43 -24
- package/dist/commands/integrations-manage.js +20 -13
- package/dist/commands/integrations.d.ts +8 -0
- package/dist/commands/integrations.js +94 -7
- package/dist/commands/lanes-accounts.d.ts +28 -0
- package/dist/commands/lanes-accounts.js +595 -0
- package/dist/commands/lanes-autopilot.d.ts +11 -0
- package/dist/commands/lanes-autopilot.js +336 -0
- package/dist/commands/lanes-checks.d.ts +51 -0
- package/dist/commands/lanes-checks.js +941 -0
- package/dist/commands/lanes-hold.d.ts +43 -0
- package/dist/commands/lanes-hold.js +655 -0
- package/dist/commands/lanes-keep-alive-audit.d.ts +10 -0
- package/dist/commands/lanes-keep-alive-audit.js +19 -0
- package/dist/commands/lanes-kpis.d.ts +11 -0
- package/dist/commands/lanes-kpis.js +34 -0
- package/dist/commands/lanes-message.d.ts +9 -0
- package/dist/commands/lanes-message.js +946 -0
- package/dist/commands/lanes-move.d.ts +12 -0
- package/dist/commands/lanes-move.js +397 -0
- package/dist/commands/lanes-questions.d.ts +36 -0
- package/dist/commands/lanes-questions.js +1005 -0
- package/dist/commands/lanes-report.d.ts +11 -0
- package/dist/commands/lanes-report.js +333 -0
- package/dist/commands/lanes-resume.d.ts +6 -0
- package/dist/commands/lanes-resume.js +564 -0
- package/dist/commands/lanes-review.d.ts +10 -0
- package/dist/commands/lanes-review.js +56 -0
- package/dist/commands/lanes-shared.d.ts +449 -0
- package/dist/commands/lanes-shared.js +170 -0
- package/dist/commands/lanes-stories.d.ts +15 -0
- package/dist/commands/lanes-stories.js +347 -0
- package/dist/commands/lanes-watch.d.ts +7 -0
- package/dist/commands/lanes-watch.js +216 -0
- package/dist/commands/lanes.d.ts +149 -0
- package/dist/commands/lanes.js +9013 -0
- package/dist/commands/login.js +49 -6
- package/dist/commands/mcp-registration.d.ts +32 -25
- package/dist/commands/mcp-registration.js +256 -23
- package/dist/commands/mcp-status.js +1 -0
- package/dist/commands/meetings.js +55 -34
- package/dist/commands/members.js +5 -1
- package/dist/commands/mesh.d.ts +11 -0
- package/dist/commands/mesh.js +1086 -76
- package/dist/commands/monitor.d.ts +58 -0
- package/dist/commands/monitor.js +980 -0
- package/dist/commands/onboard-bot-membership.d.ts +32 -0
- package/dist/commands/onboard-bot-membership.js +40 -0
- package/dist/commands/onboard-create-identity.d.ts +26 -0
- package/dist/commands/onboard-create-identity.js +23 -0
- package/dist/commands/onboard-identity-guard.d.ts +1 -1
- package/dist/commands/onboard.js +24 -5
- package/dist/commands/outpost-pruner.d.ts +3 -0
- package/dist/commands/outpost-pruner.js +125 -0
- package/dist/commands/pack-install.js +3 -1
- package/dist/commands/packs.js +11 -1
- package/dist/commands/people.d.ts +4 -0
- package/dist/commands/people.js +37 -3
- package/dist/commands/personal-connector-settings-flag.d.ts +4 -0
- package/dist/commands/personal-connector-settings-flag.js +7 -0
- package/dist/commands/personal-targeted-push-flag.d.ts +4 -0
- package/dist/commands/personal-targeted-push-flag.js +7 -0
- package/dist/commands/personal-targeted-push-paths.d.ts +3 -0
- package/dist/commands/personal-targeted-push-paths.js +67 -0
- package/dist/commands/publish.d.ts +8 -1
- package/dist/commands/publish.js +17 -4
- package/dist/commands/reindex.js +56 -6
- package/dist/commands/report.d.ts +19 -0
- package/dist/commands/report.js +537 -0
- package/dist/commands/rescue.d.ts +4 -0
- package/dist/commands/rescue.js +27 -17
- package/dist/commands/run-feature-telemetry.d.ts +3 -0
- package/dist/commands/run-feature-telemetry.js +6 -0
- package/dist/commands/run.js +18 -4
- package/dist/commands/safe-extract.d.ts +11 -2
- package/dist/commands/safe-extract.js +36 -8
- package/dist/commands/secrets.d.ts +20 -2
- package/dist/commands/secrets.js +175 -71
- package/dist/commands/skill.d.ts +35 -4
- package/dist/commands/skill.js +357 -18
- package/dist/commands/staff/reset-test-account.d.ts +110 -0
- package/dist/commands/staff/reset-test-account.js +268 -0
- package/dist/commands/staff/test-account.d.ts +51 -0
- package/dist/commands/staff/test-account.js +196 -0
- package/dist/commands/sync-mode.d.ts +11 -0
- package/dist/commands/sync-mode.js +30 -0
- package/dist/commands/sync-narrow.js +36 -5
- package/dist/commands/team-sync.js +71 -10
- package/dist/commands/update.js +6 -0
- package/dist/commands/vault-retention-flag.d.ts +3 -0
- package/dist/commands/vault-retention-flag.js +9 -0
- package/dist/commands/vault-retention.d.ts +11 -0
- package/dist/commands/vault-retention.js +69 -0
- package/dist/commands/version.d.ts +10 -0
- package/dist/commands/version.js +11 -0
- package/dist/commands/whoami.d.ts +22 -0
- package/dist/commands/whoami.js +137 -4
- package/dist/commands/workers.d.ts +2 -14
- package/dist/commands/workers.js +7 -10
- package/dist/fast-core.d.ts +7 -7
- package/dist/fast-core.js +91 -24
- package/dist/fast-scaffold.d.ts +86 -0
- package/dist/fast-scaffold.js +381 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.js +59 -9
- package/dist/lanes-drain-hook.d.ts +14 -0
- package/dist/lanes-drain-hook.js +203 -0
- package/dist/lazy-commands.d.ts +20 -44
- package/dist/lazy-commands.js +60 -58
- package/dist/lib/agent-kit/adopt-identity.d.ts +27 -0
- package/dist/lib/agent-kit/adopt-identity.js +60 -0
- package/dist/lib/agent-kit/attachment-download.d.ts +24 -0
- package/dist/lib/agent-kit/attachment-download.js +47 -0
- package/dist/lib/agent-kit/creds.d.ts +106 -0
- package/dist/lib/agent-kit/creds.js +163 -0
- package/dist/lib/agent-kit/fallback.d.ts +78 -0
- package/dist/lib/agent-kit/fallback.js +210 -0
- package/dist/lib/agent-kit/inbox-state.d.ts +83 -0
- package/dist/lib/agent-kit/inbox-state.js +159 -0
- package/dist/lib/agent-kit/kit-config.d.ts +56 -0
- package/dist/lib/agent-kit/kit-config.js +65 -0
- package/dist/lib/agent-kit/log.d.ts +16 -0
- package/dist/lib/agent-kit/log.js +46 -0
- package/dist/lib/agent-kit/mcp/attachments.d.ts +126 -0
- package/dist/lib/agent-kit/mcp/attachments.js +222 -0
- package/dist/lib/agent-kit/mcp/jsonrpc.d.ts +75 -0
- package/dist/lib/agent-kit/mcp/jsonrpc.js +164 -0
- package/dist/lib/agent-kit/mcp/tools.d.ts +64 -0
- package/dist/lib/agent-kit/mcp/tools.js +397 -0
- package/dist/lib/agent-kit/paths.d.ts +65 -0
- package/dist/lib/agent-kit/paths.js +118 -0
- package/dist/lib/agent-kit/private-file.d.ts +29 -0
- package/dist/lib/agent-kit/private-file.js +91 -0
- package/dist/lib/agent-kit/run/heartbeat.d.ts +72 -0
- package/dist/lib/agent-kit/run/heartbeat.js +128 -0
- package/dist/lib/agent-kit/run/inbox.d.ts +76 -0
- package/dist/lib/agent-kit/run/inbox.js +205 -0
- package/dist/lib/agent-kit/run/supervisor.d.ts +35 -0
- package/dist/lib/agent-kit/run/supervisor.js +85 -0
- package/dist/lib/agent-kit/run/sync.d.ts +33 -0
- package/dist/lib/agent-kit/run/sync.js +58 -0
- package/dist/lib/agent-kit/services.d.ts +31 -0
- package/dist/lib/agent-kit/services.js +55 -0
- package/dist/lib/agent-kit/skills.d.ts +18 -0
- package/dist/lib/agent-kit/skills.js +151 -0
- package/dist/lib/agent-kit/wake.d.ts +83 -0
- package/dist/lib/agent-kit/wake.js +243 -0
- package/dist/lib/agents/model-catalog.d.ts +62 -0
- package/dist/lib/agents/model-catalog.js +275 -0
- package/dist/lib/auth-login-provider-state.d.ts +8 -0
- package/dist/lib/auth-login-provider-state.js +63 -0
- package/dist/lib/aws-sdk-node-warning-output.d.ts +12 -0
- package/dist/lib/aws-sdk-node-warning-output.js +22 -0
- package/dist/lib/billing/free-month.d.ts +18 -0
- package/dist/lib/billing/free-month.js +31 -0
- package/dist/lib/billing/plan-limit-refusals.d.ts +69 -0
- package/dist/lib/billing/plan-limit-refusals.js +187 -0
- package/dist/lib/billing/plan-limit-upgrade-url.d.ts +11 -0
- package/dist/lib/billing/plan-limit-upgrade-url.js +66 -0
- package/dist/lib/billing/plan-lock.d.ts +143 -0
- package/dist/lib/billing/plan-lock.js +439 -0
- package/dist/lib/bot/api.d.ts +349 -0
- package/dist/lib/bot/api.js +316 -0
- package/dist/lib/bot/attachments.d.ts +45 -0
- package/dist/lib/bot/attachments.js +89 -0
- package/dist/lib/bot/cli-update.d.ts +138 -0
- package/dist/lib/bot/cli-update.js +278 -0
- package/dist/lib/bot/company-bind.d.ts +27 -0
- package/dist/lib/bot/company-bind.js +62 -0
- package/dist/lib/bot/config.d.ts +153 -0
- package/dist/lib/bot/config.js +233 -0
- package/dist/lib/bot/continuity-download.d.ts +28 -0
- package/dist/lib/bot/continuity-download.js +75 -0
- package/dist/lib/bot/continuity-install.d.ts +14 -0
- package/dist/lib/bot/continuity-install.js +101 -0
- package/dist/lib/bot/continuity.d.ts +67 -0
- package/dist/lib/bot/continuity.js +301 -0
- package/dist/lib/bot/creds.d.ts +24 -0
- package/dist/lib/bot/creds.js +51 -0
- package/dist/lib/bot/daemon.d.ts +173 -0
- package/dist/lib/bot/daemon.js +552 -0
- package/dist/lib/bot/inbox-poll-backoff-flag.d.ts +24 -0
- package/dist/lib/bot/inbox-poll-backoff-flag.js +135 -0
- package/dist/lib/bot/inbox-state.d.ts +18 -0
- package/dist/lib/bot/inbox-state.js +51 -0
- package/dist/lib/bot/index.d.ts +23 -0
- package/dist/lib/bot/index.js +23 -0
- package/dist/lib/bot/inflight.d.ts +119 -0
- package/dist/lib/bot/inflight.js +83 -0
- package/dist/lib/bot/job-completions.d.ts +89 -0
- package/dist/lib/bot/job-completions.js +132 -0
- package/dist/lib/bot/job-quiet-flag.d.ts +4 -0
- package/dist/lib/bot/job-quiet-flag.js +14 -0
- package/dist/lib/bot/job-run.d.ts +114 -0
- package/dist/lib/bot/job-run.js +266 -0
- package/dist/lib/bot/local-config.d.ts +61 -0
- package/dist/lib/bot/local-config.js +145 -0
- package/dist/lib/bot/local-jobs.d.ts +89 -0
- package/dist/lib/bot/local-jobs.js +459 -0
- package/dist/lib/bot/local-name.d.ts +54 -0
- package/dist/lib/bot/local-name.js +114 -0
- package/dist/lib/bot/log.d.ts +13 -0
- package/dist/lib/bot/log.js +59 -0
- package/dist/lib/bot/owner-context.d.ts +79 -0
- package/dist/lib/bot/owner-context.js +175 -0
- package/dist/lib/bot/paths.d.ts +76 -0
- package/dist/lib/bot/paths.js +131 -0
- package/dist/lib/bot/progress.d.ts +132 -0
- package/dist/lib/bot/progress.js +289 -0
- package/dist/lib/bot/promote.d.ts +16 -0
- package/dist/lib/bot/promote.js +106 -0
- package/dist/lib/bot/promotion-hold.d.ts +24 -0
- package/dist/lib/bot/promotion-hold.js +103 -0
- package/dist/lib/bot/promotion-receipt.d.ts +9 -0
- package/dist/lib/bot/promotion-receipt.js +56 -0
- package/dist/lib/bot/promotion-upload.d.ts +16 -0
- package/dist/lib/bot/promotion-upload.js +80 -0
- package/dist/lib/bot/prompt.d.ts +136 -0
- package/dist/lib/bot/prompt.js +433 -0
- package/dist/lib/bot/room-policy.d.ts +63 -0
- package/dist/lib/bot/room-policy.js +91 -0
- package/dist/lib/bot/run.d.ts +219 -0
- package/dist/lib/bot/run.js +1881 -0
- package/dist/lib/bot/runnable.d.ts +51 -0
- package/dist/lib/bot/runnable.js +65 -0
- package/dist/lib/bot/runtime/claude.d.ts +50 -0
- package/dist/lib/bot/runtime/claude.js +170 -0
- package/dist/lib/bot/runtime/codex.d.ts +28 -0
- package/dist/lib/bot/runtime/codex.js +153 -0
- package/dist/lib/bot/runtime/grok-acp.d.ts +40 -0
- package/dist/lib/bot/runtime/grok-acp.js +265 -0
- package/dist/lib/bot/runtime/grok.d.ts +41 -0
- package/dist/lib/bot/runtime/grok.js +169 -0
- package/dist/lib/bot/runtime/index.d.ts +36 -0
- package/dist/lib/bot/runtime/index.js +417 -0
- package/dist/lib/bot/runtime/messages-stream.d.ts +56 -0
- package/dist/lib/bot/runtime/messages-stream.js +194 -0
- package/dist/lib/bot/runtime/sanitize.d.ts +18 -0
- package/dist/lib/bot/runtime/sanitize.js +28 -0
- package/dist/lib/bot/runtime/types.d.ts +159 -0
- package/dist/lib/bot/runtime/types.js +51 -0
- package/dist/lib/bot/runtime/windows.d.ts +10 -0
- package/dist/lib/bot/runtime/windows.js +53 -0
- package/dist/lib/bot/runtime-sign-in.d.ts +24 -0
- package/dist/lib/bot/runtime-sign-in.js +31 -0
- package/dist/lib/bot/scaffold.d.ts +38 -0
- package/dist/lib/bot/scaffold.js +94 -0
- package/dist/lib/bot/self-heal.d.ts +52 -0
- package/dist/lib/bot/self-heal.js +79 -0
- package/dist/lib/bot/self-process.d.ts +19 -0
- package/dist/lib/bot/self-process.js +35 -0
- package/dist/lib/bot/session.d.ts +19 -0
- package/dist/lib/bot/session.js +39 -0
- package/dist/lib/bot/setup-explain.d.ts +64 -0
- package/dist/lib/bot/setup-explain.js +141 -0
- package/dist/lib/bot/split.d.ts +32 -0
- package/dist/lib/bot/split.js +241 -0
- package/dist/lib/bot/status.d.ts +57 -0
- package/dist/lib/bot/status.js +66 -0
- package/dist/lib/bot/worker-source.d.ts +66 -0
- package/dist/lib/bot/worker-source.js +283 -0
- package/dist/lib/checkpoint-ontology/aliases.d.ts +17 -0
- package/dist/lib/checkpoint-ontology/aliases.js +44 -0
- package/dist/lib/checkpoint-ontology/apply.d.ts +110 -0
- package/dist/lib/checkpoint-ontology/apply.js +777 -0
- package/dist/lib/checkpoint-ontology/company-brief.d.ts +18 -0
- package/dist/lib/checkpoint-ontology/company-brief.js +337 -0
- package/dist/lib/checkpoint-ontology/company.d.ts +44 -0
- package/dist/lib/checkpoint-ontology/company.js +118 -0
- package/dist/lib/checkpoint-ontology/drop-aliases.d.ts +41 -0
- package/dist/lib/checkpoint-ontology/drop-aliases.js +76 -0
- package/dist/lib/checkpoint-ontology/entity-file.d.ts +109 -0
- package/dist/lib/checkpoint-ontology/entity-file.js +371 -0
- package/dist/lib/checkpoint-ontology/identity.d.ts +38 -0
- package/dist/lib/checkpoint-ontology/identity.js +95 -0
- package/dist/lib/checkpoint-ontology/merge-copies.d.ts +199 -0
- package/dist/lib/checkpoint-ontology/merge-copies.js +1086 -0
- package/dist/lib/checkpoint-ontology/multi-writer.d.ts +101 -0
- package/dist/lib/checkpoint-ontology/multi-writer.js +394 -0
- package/dist/lib/checkpoint-ontology/plan.d.ts +193 -0
- package/dist/lib/checkpoint-ontology/plan.js +504 -0
- package/dist/lib/checkpoint-ontology/queued-touches.d.ts +29 -0
- package/dist/lib/checkpoint-ontology/queued-touches.js +193 -0
- package/dist/lib/checkpoint-ontology/sync-client.d.ts +38 -0
- package/dist/lib/checkpoint-ontology/sync-client.js +84 -0
- package/dist/lib/checkpoint-ontology/tree.d.ts +55 -0
- package/dist/lib/checkpoint-ontology/tree.js +198 -0
- package/dist/lib/company-errors-sdk-warning-flag.d.ts +5 -0
- package/dist/lib/company-errors-sdk-warning-flag.js +8 -0
- package/dist/lib/company-skill-wrapper.d.ts +1 -0
- package/dist/lib/company-skill-wrapper.js +121 -29
- package/dist/lib/core-utils/codex-skill-bridge.d.ts +2 -1
- package/dist/lib/core-utils/common.d.ts +0 -1
- package/dist/lib/core-utils/common.js +0 -9
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.d.ts +20 -0
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.js +81 -0
- package/dist/lib/core-utils/jq-json-serializer.d.ts +5 -0
- package/dist/lib/core-utils/jq-json-serializer.js +10 -0
- package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +14 -1
- package/dist/lib/core-utils/qmd-reindex-after-sync.js +101 -17
- package/dist/lib/core-utils/secret-patterns.d.ts +43 -0
- package/dist/lib/core-utils/secret-patterns.js +34 -0
- package/dist/lib/core-utils/sentry-report.d.ts +114 -0
- package/dist/lib/core-utils/sentry-report.js +1055 -0
- package/dist/lib/core-utils/soft-timeout.js +1 -1
- package/dist/lib/core-utils/timeout-guard-native.d.ts +7 -0
- package/dist/lib/core-utils/timeout-guard-native.js +40 -0
- package/dist/lib/core-utils/timeout-guard.d.ts +3 -3
- package/dist/lib/core-utils/timeout-guard.js +28 -13
- package/dist/lib/core-utils/token-usage-report.js +17 -3
- package/dist/lib/core-utils/worktree-resume.d.ts +20 -0
- package/dist/lib/core-utils/worktree-resume.js +1198 -0
- package/dist/lib/daemon/catalog.d.ts +134 -0
- package/dist/lib/daemon/catalog.js +358 -0
- package/dist/lib/daemon/config.d.ts +35 -0
- package/dist/lib/daemon/config.js +108 -0
- package/dist/lib/daemon/flag.d.ts +25 -0
- package/dist/lib/daemon/flag.js +59 -0
- package/dist/lib/daemon/handoff.d.ts +56 -0
- package/dist/lib/daemon/handoff.js +161 -0
- package/dist/lib/daemon/hq-cloud.d.ts +79 -0
- package/dist/lib/daemon/hq-cloud.js +183 -0
- package/dist/lib/daemon/install.d.ts +85 -0
- package/dist/lib/daemon/install.js +320 -0
- package/dist/lib/daemon/legacy-sync-env.d.ts +10 -0
- package/dist/lib/daemon/legacy-sync-env.js +58 -0
- package/dist/lib/daemon/legacy.d.ts +45 -0
- package/dist/lib/daemon/legacy.js +133 -0
- package/dist/lib/daemon/lock.d.ts +47 -0
- package/dist/lib/daemon/lock.js +138 -0
- package/dist/lib/daemon/machine-type.d.ts +50 -0
- package/dist/lib/daemon/machine-type.js +159 -0
- package/dist/lib/daemon/migrate.d.ts +77 -0
- package/dist/lib/daemon/migrate.js +265 -0
- package/dist/lib/daemon/paths.d.ts +24 -0
- package/dist/lib/daemon/paths.js +43 -0
- package/dist/lib/daemon/protocol-tail.d.ts +33 -0
- package/dist/lib/daemon/protocol-tail.js +131 -0
- package/dist/lib/daemon/remote-control.d.ts +74 -0
- package/dist/lib/daemon/remote-control.js +153 -0
- package/dist/lib/daemon/requests.d.ts +28 -0
- package/dist/lib/daemon/requests.js +65 -0
- package/dist/lib/daemon/run.d.ts +79 -0
- package/dist/lib/daemon/run.js +755 -0
- package/dist/lib/daemon/succession.d.ts +118 -0
- package/dist/lib/daemon/succession.js +263 -0
- package/dist/lib/daemon/supervisor.d.ts +132 -0
- package/dist/lib/daemon/supervisor.js +836 -0
- package/dist/lib/daemon/sync-runner.d.ts +58 -0
- package/dist/lib/daemon/sync-runner.js +277 -0
- package/dist/lib/daemon/tools.d.ts +52 -0
- package/dist/lib/daemon/tools.js +95 -0
- package/dist/lib/daemon/updater.d.ts +57 -0
- package/dist/lib/daemon/updater.js +163 -0
- package/dist/lib/db/control-plane.js +6 -0
- package/dist/lib/db/local.d.ts +0 -5
- package/dist/lib/db/local.js +1 -1
- package/dist/lib/db/migrate.d.ts +0 -12
- package/dist/lib/db/migrate.js +5 -5
- package/dist/lib/db/remote-sql.d.ts +2 -2
- package/dist/lib/db/remote-sql.js +3 -3
- package/dist/lib/db/sql.d.ts +0 -10
- package/dist/lib/db/sql.js +4 -8
- package/dist/lib/deploy-api.d.ts +5 -0
- package/dist/lib/deploy-api.js +21 -0
- package/dist/lib/deploy-apps.d.ts +13 -0
- package/dist/lib/deploy-apps.js +29 -0
- package/dist/lib/doctor/__testing__/fake-hq-tree.d.ts +1 -1
- package/dist/lib/doctor/__testing__/fake-hq-tree.js +1 -1
- package/dist/lib/doctor/__testing__/run-doctor.d.ts +8 -0
- package/dist/lib/doctor/__testing__/run-doctor.js +52 -0
- package/dist/lib/doctor/checks/bots.d.ts +13 -0
- package/dist/lib/doctor/checks/bots.js +189 -0
- package/dist/lib/doctor/checks/claude-wiring.js +70 -1
- package/dist/lib/doctor/checks/codex-wiring.d.ts +0 -4
- package/dist/lib/doctor/checks/codex-wiring.js +3 -35
- package/dist/lib/doctor/checks/grok-wiring.js +1 -34
- package/dist/lib/doctor/checks/integrations.js +11 -0
- package/dist/lib/doctor/checks/runtime-health.d.ts +4 -17
- package/dist/lib/doctor/checks/runtime-health.js +20 -7
- package/dist/lib/doctor/checks/scaffold-cli-floor.d.ts +6 -0
- package/dist/lib/doctor/checks/scaffold-cli-floor.js +73 -0
- package/dist/lib/doctor/checks/sync-health.d.ts +21 -0
- package/dist/lib/doctor/checks/sync-health.js +72 -2
- package/dist/lib/doctor/checks/sync-runtime.d.ts +11 -0
- package/dist/lib/doctor/checks/sync-runtime.js +216 -0
- package/dist/lib/doctor/checks/work-context.js +20 -6
- package/dist/lib/doctor/client-health-flag-token.d.ts +15 -0
- package/dist/lib/doctor/client-health-flag-token.js +66 -0
- package/dist/lib/doctor/client-health-reason-codes-flag.d.ts +27 -0
- package/dist/lib/doctor/client-health-reason-codes-flag.js +106 -0
- package/dist/lib/doctor/compat.d.ts +0 -16
- package/dist/lib/doctor/compat.js +4 -3
- package/dist/lib/doctor/deep/effects.js +1 -3
- package/dist/lib/doctor/deep/executor.d.ts +4 -10
- package/dist/lib/doctor/deep/executor.js +1 -1
- package/dist/lib/doctor/deep/parity.d.ts +2 -29
- package/dist/lib/doctor/deep/parity.js +7 -7
- package/dist/lib/doctor/deep/sandbox.d.ts +7 -25
- package/dist/lib/doctor/deep/sandbox.js +5 -7
- package/dist/lib/doctor/fix/apply.d.ts +79 -8
- package/dist/lib/doctor/fix/apply.js +292 -80
- package/dist/lib/doctor/fix/json-output.d.ts +28 -0
- package/dist/lib/doctor/fix/json-output.js +33 -0
- package/dist/lib/doctor/fix/refresh-sync-outcome.d.ts +12 -0
- package/dist/lib/doctor/fix/refresh-sync-outcome.js +25 -0
- package/dist/lib/doctor/fix/remediation.d.ts +14 -6
- package/dist/lib/doctor/fix/remediation.js +49 -9
- package/dist/lib/doctor/fixtures/schema.js +1 -3
- package/dist/lib/doctor/json-output.d.ts +17 -1
- package/dist/lib/doctor/json-output.js +7 -2
- package/dist/lib/doctor/platform.d.ts +0 -26
- package/dist/lib/doctor/platform.js +5 -5
- package/dist/lib/doctor/registry.d.ts +14 -0
- package/dist/lib/doctor/registry.js +71 -0
- package/dist/lib/doctor/report.js +1 -1
- package/dist/lib/doctor/shared.d.ts +8 -0
- package/dist/lib/doctor/shared.js +38 -0
- package/dist/lib/doctor/stray-gate-entries.d.ts +35 -0
- package/dist/lib/doctor/stray-gate-entries.js +83 -0
- package/dist/lib/doctor/types.d.ts +5 -0
- package/dist/lib/doctor/types.js +20 -0
- package/dist/lib/first-sync-next-step.d.ts +34 -0
- package/dist/lib/first-sync-next-step.js +179 -0
- package/dist/lib/flag-registry-endpoint.d.ts +5 -0
- package/dist/lib/flag-registry-endpoint.js +9 -0
- package/dist/lib/flag-registry-worker-source.generated.d.ts +2 -0
- package/dist/lib/flag-registry-worker-source.generated.js +3 -0
- package/dist/lib/flag-registry-worker.js +12 -1
- package/dist/lib/flag-registry.d.ts +26 -6
- package/dist/lib/flag-registry.js +133 -16
- package/dist/lib/flag-snapshot-file.d.ts +20 -0
- package/dist/lib/flag-snapshot-file.js +91 -0
- package/dist/lib/heartbeat-identity.d.ts +30 -0
- package/dist/lib/heartbeat-identity.js +76 -0
- package/dist/lib/index-render/companies.d.ts +4 -1
- package/dist/lib/index-render/companies.js +66 -3
- package/dist/lib/index-render/company-knowledge.js +80 -17
- package/dist/lib/index-render/index.d.ts +1 -0
- package/dist/lib/index-render/index.js +2 -1
- package/dist/lib/index-render/projects.js +82 -5
- package/dist/lib/index-render/shared.d.ts +13 -1
- package/dist/lib/index-render/shared.js +41 -2
- package/dist/lib/lanes/account-home.d.ts +8 -0
- package/dist/lib/lanes/account-home.js +10 -0
- package/dist/lib/lanes/accounts.d.ts +117 -0
- package/dist/lib/lanes/accounts.js +366 -0
- package/dist/lib/lanes/admission-host.d.ts +22 -0
- package/dist/lib/lanes/admission-host.js +37 -0
- package/dist/lib/lanes/admission.d.ts +26 -0
- package/dist/lib/lanes/admission.js +210 -0
- package/dist/lib/lanes/approval-gate.d.ts +8 -0
- package/dist/lib/lanes/approval-gate.js +90 -0
- package/dist/lib/lanes/autopilot-metrics.d.ts +99 -0
- package/dist/lib/lanes/autopilot-metrics.js +301 -0
- package/dist/lib/lanes/autopilot-registry.d.ts +62 -0
- package/dist/lib/lanes/autopilot-registry.js +192 -0
- package/dist/lib/lanes/autopilot.d.ts +137 -0
- package/dist/lib/lanes/autopilot.js +1291 -0
- package/dist/lib/lanes/blocker-freshness.d.ts +31 -0
- package/dist/lib/lanes/blocker-freshness.js +168 -0
- package/dist/lib/lanes/checked-company-path.d.ts +3 -0
- package/dist/lib/lanes/checked-company-path.js +39 -0
- package/dist/lib/lanes/claude-balance.d.ts +97 -0
- package/dist/lib/lanes/claude-balance.js +319 -0
- package/dist/lib/lanes/compaction.d.ts +110 -0
- package/dist/lib/lanes/compaction.js +293 -0
- package/dist/lib/lanes/config.d.ts +94 -0
- package/dist/lib/lanes/config.js +606 -0
- package/dist/lib/lanes/constants.d.ts +3 -0
- package/dist/lib/lanes/constants.js +3 -0
- package/dist/lib/lanes/delivery-core.d.ts +15 -0
- package/dist/lib/lanes/delivery-core.js +21 -0
- package/dist/lib/lanes/delivery.d.ts +180 -0
- package/dist/lib/lanes/delivery.js +443 -0
- package/dist/lib/lanes/disk-guard.d.ts +65 -0
- package/dist/lib/lanes/disk-guard.js +172 -0
- package/dist/lib/lanes/dropbox.d.ts +129 -0
- package/dist/lib/lanes/dropbox.js +601 -0
- package/dist/lib/lanes/effort.d.ts +51 -0
- package/dist/lib/lanes/effort.js +113 -0
- package/dist/lib/lanes/envelope-repair-dispatch.d.ts +26 -0
- package/dist/lib/lanes/envelope-repair-dispatch.js +74 -0
- package/dist/lib/lanes/errors.d.ts +39 -0
- package/dist/lib/lanes/errors.js +72 -0
- package/dist/lib/lanes/flag-keys.d.ts +25 -0
- package/dist/lib/lanes/flag-keys.js +25 -0
- package/dist/lib/lanes/grants.d.ts +30 -0
- package/dist/lib/lanes/grants.js +171 -0
- package/dist/lib/lanes/hire-grant-dispatch.d.ts +29 -0
- package/dist/lib/lanes/hire-grant-dispatch.js +315 -0
- package/dist/lib/lanes/hooks-install.d.ts +82 -0
- package/dist/lib/lanes/hooks-install.js +555 -0
- package/dist/lib/lanes/host-capacity.d.ts +69 -0
- package/dist/lib/lanes/host-capacity.js +254 -0
- package/dist/lib/lanes/hq-root.d.ts +19 -0
- package/dist/lib/lanes/hq-root.js +28 -0
- package/dist/lib/lanes/index.d.ts +76 -0
- package/dist/lib/lanes/index.js +42 -0
- package/dist/lib/lanes/keep-alive-audit.d.ts +47 -0
- package/dist/lib/lanes/keep-alive-audit.js +370 -0
- package/dist/lib/lanes/keep-alive.d.ts +68 -0
- package/dist/lib/lanes/keep-alive.js +343 -0
- package/dist/lib/lanes/kr-freshness.d.ts +76 -0
- package/dist/lib/lanes/kr-freshness.js +413 -0
- package/dist/lib/lanes/lane-company.d.ts +10 -0
- package/dist/lib/lanes/lane-company.js +41 -0
- package/dist/lib/lanes/liveness.d.ts +108 -0
- package/dist/lib/lanes/liveness.js +396 -0
- package/dist/lib/lanes/machine-identity.d.ts +34 -0
- package/dist/lib/lanes/machine-identity.js +92 -0
- package/dist/lib/lanes/manager-status-gate.d.ts +17 -0
- package/dist/lib/lanes/manager-status-gate.js +133 -0
- package/dist/lib/lanes/merge-command.d.ts +15 -0
- package/dist/lib/lanes/merge-command.js +629 -0
- package/dist/lib/lanes/mesh-events.d.ts +127 -0
- package/dist/lib/lanes/mesh-events.js +564 -0
- package/dist/lib/lanes/message-replay.d.ts +21 -0
- package/dist/lib/lanes/message-replay.js +122 -0
- package/dist/lib/lanes/models.d.ts +86 -0
- package/dist/lib/lanes/models.js +234 -0
- package/dist/lib/lanes/monitor.d.ts +48 -0
- package/dist/lib/lanes/monitor.js +428 -0
- package/dist/lib/lanes/move-account.d.ts +56 -0
- package/dist/lib/lanes/move-account.js +193 -0
- package/dist/lib/lanes/orphans.d.ts +25 -0
- package/dist/lib/lanes/orphans.js +102 -0
- package/dist/lib/lanes/outpost-dispatch.d.ts +156 -0
- package/dist/lib/lanes/outpost-dispatch.js +293 -0
- package/dist/lib/lanes/outpost-hire-cache.d.ts +22 -0
- package/dist/lib/lanes/outpost-hire-cache.js +153 -0
- package/dist/lib/lanes/outpost-identity.d.ts +33 -0
- package/dist/lib/lanes/outpost-identity.js +59 -0
- package/dist/lib/lanes/outpost-profile-repin.d.ts +17 -0
- package/dist/lib/lanes/outpost-profile-repin.js +84 -0
- package/dist/lib/lanes/outpost-pruner-install.d.ts +37 -0
- package/dist/lib/lanes/outpost-pruner-install.js +238 -0
- package/dist/lib/lanes/outpost-registry-worker-approval.d.ts +18 -0
- package/dist/lib/lanes/outpost-registry-worker-approval.js +109 -0
- package/dist/lib/lanes/outpost-snapshot-memo.d.ts +6 -0
- package/dist/lib/lanes/outpost-snapshot-memo.js +14 -0
- package/dist/lib/lanes/outpost-worktree-pruner-flag.d.ts +19 -0
- package/dist/lib/lanes/outpost-worktree-pruner-flag.js +86 -0
- package/dist/lib/lanes/outpost-worktree-pruner.d.ts +62 -0
- package/dist/lib/lanes/outpost-worktree-pruner.js +1201 -0
- package/dist/lib/lanes/profile.d.ts +69 -0
- package/dist/lib/lanes/profile.js +552 -0
- package/dist/lib/lanes/provider-rejection.d.ts +86 -0
- package/dist/lib/lanes/provider-rejection.js +286 -0
- package/dist/lib/lanes/questions.d.ts +90 -0
- package/dist/lib/lanes/questions.js +384 -0
- package/dist/lib/lanes/quota.d.ts +134 -0
- package/dist/lib/lanes/quota.js +471 -0
- package/dist/lib/lanes/reconcile-install.d.ts +90 -0
- package/dist/lib/lanes/reconcile-install.js +257 -0
- package/dist/lib/lanes/reconcile.d.ts +161 -0
- package/dist/lib/lanes/reconcile.js +3343 -0
- package/dist/lib/lanes/registry-flag.d.ts +35 -0
- package/dist/lib/lanes/registry-flag.js +164 -0
- package/dist/lib/lanes/registry-persona.d.ts +20 -0
- package/dist/lib/lanes/registry-persona.js +329 -0
- package/dist/lib/lanes/registry.d.ts +122 -0
- package/dist/lib/lanes/registry.js +570 -0
- package/dist/lib/lanes/reviews.d.ts +38 -0
- package/dist/lib/lanes/reviews.js +395 -0
- package/dist/lib/lanes/runaway-tool-guard.d.ts +38 -0
- package/dist/lib/lanes/runaway-tool-guard.js +284 -0
- package/dist/lib/lanes/session-relink.d.ts +25 -0
- package/dist/lib/lanes/session-relink.js +216 -0
- package/dist/lib/lanes/spawn.d.ts +355 -0
- package/dist/lib/lanes/spawn.js +2668 -0
- package/dist/lib/lanes/ssm-command-context.d.ts +12 -0
- package/dist/lib/lanes/ssm-command-context.js +52 -0
- package/dist/lib/lanes/store.d.ts +91 -0
- package/dist/lib/lanes/store.js +1822 -0
- package/dist/lib/lanes/stories.d.ts +23 -0
- package/dist/lib/lanes/stories.js +92 -0
- package/dist/lib/lanes/story-ledger.d.ts +80 -0
- package/dist/lib/lanes/story-ledger.js +815 -0
- package/dist/lib/lanes/story-switch.d.ts +21 -0
- package/dist/lib/lanes/story-switch.js +75 -0
- package/dist/lib/lanes/text-scan.d.ts +11 -0
- package/dist/lib/lanes/text-scan.js +103 -0
- package/dist/lib/lanes/throttle.d.ts +116 -0
- package/dist/lib/lanes/throttle.js +437 -0
- package/dist/lib/lanes/timestamp.d.ts +3 -0
- package/dist/lib/lanes/timestamp.js +26 -0
- package/dist/lib/lanes/tracker-checks.d.ts +77 -0
- package/dist/lib/lanes/tracker-checks.js +134 -0
- package/dist/lib/lanes/tracker-report-state.d.ts +10 -0
- package/dist/lib/lanes/tracker-report-state.js +124 -0
- package/dist/lib/lanes/tracker-report.d.ts +203 -0
- package/dist/lib/lanes/tracker-report.js +522 -0
- package/dist/lib/lanes/tracker-store.d.ts +18 -0
- package/dist/lib/lanes/tracker-store.js +106 -0
- package/dist/lib/lanes/types.d.ts +1030 -0
- package/dist/lib/lanes/types.js +418 -0
- package/dist/lib/lanes/wait.d.ts +39 -0
- package/dist/lib/lanes/wait.js +159 -0
- package/dist/lib/lanes/watch.d.ts +39 -0
- package/dist/lib/lanes/watch.js +249 -0
- package/dist/lib/lanes/watcher-main.d.ts +11 -0
- package/dist/lib/lanes/watcher-main.js +108 -0
- package/dist/lib/lanes/watcher.d.ts +287 -0
- package/dist/lib/lanes/watcher.js +1972 -0
- package/dist/lib/mesh/api.d.ts +103 -10
- package/dist/lib/mesh/api.js +334 -64
- package/dist/lib/mesh/client.d.ts +3 -2
- package/dist/lib/mesh/client.js +26 -7
- package/dist/lib/mesh/denial-codes.d.ts +5 -0
- package/dist/lib/mesh/denial-codes.js +14 -0
- package/dist/lib/mesh/live/backfill-held.d.ts +67 -16
- package/dist/lib/mesh/live/backfill-held.js +415 -61
- package/dist/lib/mesh/live/backoff.d.ts +2 -2
- package/dist/lib/mesh/live/backoff.js +16 -3
- package/dist/lib/mesh/live/daemon/board-refresh.d.ts +7 -1
- package/dist/lib/mesh/live/daemon/board-refresh.js +78 -30
- package/dist/lib/mesh/live/daemon/config.d.ts +36 -0
- package/dist/lib/mesh/live/daemon/config.js +120 -0
- package/dist/lib/mesh/live/daemon/credentials.d.ts +64 -10
- package/dist/lib/mesh/live/daemon/credentials.js +270 -20
- package/dist/lib/mesh/live/daemon/doctor.d.ts +53 -0
- package/dist/lib/mesh/live/daemon/doctor.js +190 -6
- package/dist/lib/mesh/live/daemon/index.d.ts +13 -10
- package/dist/lib/mesh/live/daemon/index.js +7 -6
- package/dist/lib/mesh/live/daemon/install.d.ts +255 -1
- package/dist/lib/mesh/live/daemon/install.js +811 -13
- package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +43 -0
- package/dist/lib/mesh/live/daemon/legacy-listen.js +89 -0
- package/dist/lib/mesh/live/daemon/live-cache.d.ts +26 -0
- package/dist/lib/mesh/live/daemon/live-cache.js +116 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +7 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.js +2 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +2 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +10 -0
- package/dist/lib/mesh/live/daemon/paths.d.ts +2 -0
- package/dist/lib/mesh/live/daemon/paths.js +2 -0
- package/dist/lib/mesh/live/daemon/presence.d.ts +24 -5
- package/dist/lib/mesh/live/daemon/presence.js +79 -10
- package/dist/lib/mesh/live/daemon/run.d.ts +48 -2
- package/dist/lib/mesh/live/daemon/run.js +485 -33
- package/dist/lib/mesh/live/daemon/state.d.ts +19 -2
- package/dist/lib/mesh/live/daemon/state.js +34 -2
- package/dist/lib/mesh/live/daemon/transcript-watch.d.ts +45 -9
- package/dist/lib/mesh/live/daemon/transcript-watch.js +227 -31
- package/dist/lib/mesh/live/daemon/version-drift.d.ts +5 -0
- package/dist/lib/mesh/live/daemon/version-drift.js +47 -0
- package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +32 -0
- package/dist/lib/mesh/live/daemon/work-subscribe.js +262 -0
- package/dist/lib/mesh/live/emit-client.d.ts +8 -0
- package/dist/lib/mesh/live/emit-client.js +23 -8
- package/dist/lib/mesh/live/emit-evidence.d.ts +19 -0
- package/dist/lib/mesh/live/emit-evidence.js +20 -2
- package/dist/lib/mesh/live/emit.d.ts +9 -0
- package/dist/lib/mesh/live/emit.js +28 -2
- package/dist/lib/mesh/live/enqueue.d.ts +5 -0
- package/dist/lib/mesh/live/enqueue.js +19 -0
- package/dist/lib/mesh/live/flush.d.ts +17 -5
- package/dist/lib/mesh/live/flush.js +391 -38
- package/dist/lib/mesh/live/format-spool-line.d.ts +5 -2
- package/dist/lib/mesh/live/format-spool-line.js +10 -0
- package/dist/lib/mesh/live/paths.d.ts +2 -0
- package/dist/lib/mesh/live/paths.js +4 -0
- package/dist/lib/mesh/live/report-summary.d.ts +45 -0
- package/dist/lib/mesh/live/report-summary.js +234 -0
- package/dist/lib/mesh/live/session-event.schema.json +24 -1
- package/dist/lib/mesh/live/session-events-client.d.ts +2 -0
- package/dist/lib/mesh/live/session-events-client.js +26 -0
- package/dist/lib/mesh/live/session-seq.d.ts +4 -0
- package/dist/lib/mesh/live/session-seq.js +33 -0
- package/dist/lib/mesh/live/spool.d.ts +19 -0
- package/dist/lib/mesh/live/spool.js +269 -3
- package/dist/lib/mesh/live/validate-session-event.d.ts +1 -1
- package/dist/lib/mesh/live/validate-session-event.js +1 -1
- package/dist/lib/mesh/project-board.d.ts +65 -0
- package/dist/lib/mesh/project-board.js +181 -0
- package/dist/lib/mesh/story-status.d.ts +22 -0
- package/dist/lib/mesh/story-status.js +49 -0
- package/dist/lib/monitor.d.ts +149 -0
- package/dist/lib/monitor.js +519 -0
- package/dist/lib/node-binary.d.ts +50 -0
- package/dist/lib/node-binary.js +133 -0
- package/dist/lib/notify-recipient.d.ts +7 -0
- package/dist/lib/notify-recipient.js +11 -0
- package/dist/lib/onboarding/checkpoint.d.ts +13 -0
- package/dist/lib/onboarding/checkpoint.js +44 -0
- package/dist/lib/onboarding/cli/onboard.d.ts +53 -0
- package/dist/lib/onboarding/cli/onboard.js +135 -0
- package/dist/lib/onboarding/cli/prompts.d.ts +28 -0
- package/dist/lib/onboarding/cli/prompts.js +83 -0
- package/dist/lib/onboarding/errors.d.ts +34 -0
- package/dist/lib/onboarding/errors.js +59 -0
- package/dist/lib/onboarding/index.d.ts +13 -0
- package/dist/lib/onboarding/index.js +13 -0
- package/dist/lib/onboarding/orchestrator.d.ts +47 -0
- package/dist/lib/onboarding/orchestrator.js +569 -0
- package/dist/lib/onboarding/types.d.ts +79 -0
- package/dist/lib/onboarding/types.js +8 -0
- package/dist/lib/plan-limit-nag.d.ts +102 -6
- package/dist/lib/plan-limit-nag.js +348 -43
- package/dist/lib/policy-validator.d.ts +7 -0
- package/dist/lib/policy-validator.js +187 -0
- package/dist/lib/process-flag-company-context.d.ts +8 -0
- package/dist/lib/process-flag-company-context.js +67 -0
- package/dist/lib/report-publish.d.ts +175 -0
- package/dist/lib/report-publish.js +421 -0
- package/dist/lib/report-run.d.ts +62 -0
- package/dist/lib/report-run.js +123 -0
- package/dist/lib/report-snapshot.d.ts +12 -0
- package/dist/lib/report-snapshot.js +135 -0
- package/dist/lib/report-templates.d.ts +9 -0
- package/dist/lib/report-templates.js +21 -0
- package/dist/lib/scaffold-cli-floor.d.ts +8 -0
- package/dist/lib/scaffold-cli-floor.js +50 -0
- package/dist/lib/scan-packages/index.d.ts +2 -0
- package/dist/lib/scan-packages/index.js +168 -6
- package/dist/lib/search-index/background.d.ts +8 -1
- package/dist/lib/search-index/background.js +55 -200
- package/dist/lib/search-index/collection-path-repair-flag.d.ts +4 -0
- package/dist/lib/search-index/collection-path-repair-flag.js +7 -0
- package/dist/lib/search-index/embed-lock.d.ts +34 -0
- package/dist/lib/search-index/embed-lock.js +295 -0
- package/dist/lib/search-index/index.d.ts +12 -0
- package/dist/lib/search-index/index.js +153 -7
- package/dist/lib/search-index/load-gate.d.ts +57 -0
- package/dist/lib/search-index/load-gate.js +270 -0
- package/dist/lib/search-index/max-doc-bytes.d.ts +219 -0
- package/dist/lib/search-index/max-doc-bytes.js +463 -0
- package/dist/lib/search-index/qmd-exit-diagnostics.d.ts +5 -0
- package/dist/lib/search-index/qmd-exit-diagnostics.js +40 -0
- package/dist/lib/search-index/reindex-single-flight-flag.d.ts +5 -0
- package/dist/lib/search-index/reindex-single-flight-flag.js +8 -0
- package/dist/lib/service-manager/index.d.ts +42 -0
- package/dist/lib/service-manager/index.js +105 -0
- package/dist/lib/service-manager/launchd.d.ts +81 -0
- package/dist/lib/service-manager/launchd.js +212 -0
- package/dist/lib/service-manager/systemd.d.ts +19 -0
- package/dist/lib/service-manager/systemd.js +72 -0
- package/dist/lib/service-manager/types.d.ts +34 -0
- package/dist/lib/service-manager/types.js +26 -0
- package/dist/lib/test-utils/isolated-flag-company-context.d.ts +3 -0
- package/dist/lib/test-utils/isolated-flag-company-context.js +18 -0
- package/dist/lib/work-context/bind-best.d.ts +66 -0
- package/dist/lib/work-context/bind-best.js +344 -0
- package/dist/lib/work-context/bind-calling-session.d.ts +26 -0
- package/dist/lib/work-context/bind-calling-session.js +63 -0
- package/dist/lib/work-context/company-rebind.d.ts +23 -0
- package/dist/lib/work-context/company-rebind.js +59 -0
- package/dist/lib/work-context/company.d.ts +22 -20
- package/dist/lib/work-context/company.js +124 -40
- package/dist/lib/work-context/config.d.ts +58 -11
- package/dist/lib/work-context/config.js +334 -83
- package/dist/lib/work-context/contract.d.ts +13 -0
- package/dist/lib/work-context/contract.schema.json +3 -1
- package/dist/lib/work-context/default-company.d.ts +43 -0
- package/dist/lib/work-context/default-company.js +83 -0
- package/dist/lib/work-context/outbox-quarantine-status-flag.d.ts +4 -0
- package/dist/lib/work-context/outbox-quarantine-status-flag.js +7 -0
- package/dist/lib/work-context/outbox.d.ts +27 -5
- package/dist/lib/work-context/outbox.js +135 -6
- package/dist/lib/work-context/prd-sync.d.ts +56 -0
- package/dist/lib/work-context/prd-sync.js +197 -0
- package/dist/lib/work-context/preflight-contract.d.ts +28 -0
- package/dist/lib/work-context/preflight-contract.js +85 -0
- package/dist/lib/work-context/prompt-rebind.d.ts +25 -0
- package/dist/lib/work-context/prompt-rebind.js +85 -0
- package/dist/lib/work-context/reconcile.d.ts +15 -0
- package/dist/lib/work-context/reconcile.js +405 -29
- package/dist/lib/work-context/state.d.ts +93 -10
- package/dist/lib/work-context/state.js +342 -29
- package/dist/lib/work-context/windows-acl.d.ts +123 -0
- package/dist/lib/work-context/windows-acl.js +425 -0
- package/dist/lib/workers-registry/index.js +62 -8
- package/dist/lib/workers-registry/read.d.ts +15 -0
- package/dist/lib/workers-registry/read.js +17 -0
- package/dist/main.d.ts +32 -0
- package/dist/main.js +273 -73
- package/dist/native-fast-route.d.ts +7 -0
- package/dist/native-fast-route.js +45 -0
- package/dist/node-network-compat-core.d.ts +12 -0
- package/dist/node-network-compat-core.js +41 -0
- package/dist/node-network-compat-fast.d.ts +7 -0
- package/dist/node-network-compat-fast.js +23 -0
- package/dist/node-network-compat.d.ts +2 -30
- package/dist/node-network-compat.js +4 -51
- package/dist/node-preflight.d.ts +7 -1
- package/dist/node-preflight.js +5 -5
- package/dist/register-all.d.ts +4 -29
- package/dist/register-all.js +4 -233
- package/dist/run/discover-schemas.d.ts +2 -1
- package/dist/run/env-graph-guard.d.ts +2 -2
- package/dist/run/env-graph-guard.js +5 -2
- package/dist/run/hq-plugin.d.ts +4 -0
- package/dist/run/hq-plugin.js +36 -8
- package/dist/secrets-env-fast-path.d.ts +5 -0
- package/dist/secrets-env-fast-path.js +16 -0
- package/dist/secrets-env-fast-route.d.ts +18 -0
- package/dist/secrets-env-fast-route.js +54 -0
- package/dist/sentry-before-send.js +80 -0
- package/dist/sentry.d.ts +16 -4
- package/dist/sentry.js +179 -18
- package/dist/startup-registration.d.ts +26 -2
- package/dist/startup-registration.js +116 -15
- package/dist/utils/checkpoint-stamp-write-error.d.ts +28 -0
- package/dist/utils/checkpoint-stamp-write-error.js +99 -0
- package/dist/utils/cli-network-lifecycle.d.ts +4 -0
- package/dist/utils/cli-network-lifecycle.js +11 -0
- package/dist/utils/cli-telemetry.d.ts +75 -1
- package/dist/utils/cli-telemetry.js +433 -7
- package/dist/utils/client-health.d.ts +0 -4
- package/dist/utils/client-health.js +2 -2
- package/dist/utils/cognito-refresh-sentry.d.ts +3 -0
- package/dist/utils/cognito-refresh-sentry.js +49 -0
- package/dist/utils/cognito-session.d.ts +71 -0
- package/dist/utils/cognito-session.js +481 -27
- package/dist/utils/console-origin.d.ts +9 -0
- package/dist/utils/console-origin.js +28 -0
- package/dist/utils/contribution-table.d.ts +1 -1
- package/dist/utils/core-eval-trigger.d.ts +4 -0
- package/dist/utils/core-eval-trigger.js +88 -0
- package/dist/utils/environmental-error.d.ts +18 -0
- package/dist/utils/environmental-error.js +240 -7
- package/dist/utils/exclusive-lock.d.ts +32 -0
- package/dist/utils/exclusive-lock.js +75 -0
- package/dist/utils/expected-cli-error.d.ts +2 -0
- package/dist/utils/expected-cli-error.js +4 -0
- package/dist/utils/fast-stream-errors.d.ts +12 -0
- package/dist/utils/fast-stream-errors.js +18 -0
- package/dist/utils/feedback-diagnostics.d.ts +2 -1
- package/dist/utils/feedback-log-bundle.d.ts +51 -26
- package/dist/utils/feedback-log-bundle.js +211 -31
- package/dist/utils/feedback-logs.d.ts +18 -47
- package/dist/utils/feedback-logs.js +50 -21
- package/dist/utils/feedback-screenshots.d.ts +0 -1
- package/dist/utils/feedback-screenshots.js +1 -1
- package/dist/utils/files-browse-acl.d.ts +5 -0
- package/dist/utils/files-browse-acl.js +11 -0
- package/dist/utils/hq-core-yaml.d.ts +10 -0
- package/dist/utils/hq-core-yaml.js +40 -0
- package/dist/utils/hq-root-resolver.d.ts +13 -0
- package/dist/utils/hq-root-resolver.js +103 -0
- package/dist/utils/hq-roots.d.ts +25 -2
- package/dist/utils/hq-roots.js +67 -7
- package/dist/utils/incomplete-install-error.d.ts +87 -19
- package/dist/utils/incomplete-install-error.js +319 -68
- package/dist/utils/install-tree-torn.d.ts +260 -24
- package/dist/utils/install-tree-torn.js +998 -51
- package/dist/utils/large-file-guard.d.ts +0 -10
- package/dist/utils/large-file-guard.js +1 -1
- package/dist/utils/local-files-overview.d.ts +4 -8
- package/dist/utils/local-files-overview.js +48 -7
- package/dist/utils/login-provider.d.ts +7 -0
- package/dist/utils/login-provider.js +34 -0
- package/dist/utils/pack-contributions.d.ts +2 -14
- package/dist/utils/pack-contributions.js +7 -44
- package/dist/utils/package-root-diagnostics.d.ts +1 -1
- package/dist/utils/people.d.ts +7 -11
- package/dist/utils/people.js +5 -20
- package/dist/utils/plan-gate-error.d.ts +52 -10
- package/dist/utils/plan-gate-error.js +364 -41
- package/dist/utils/qmd-model-download-error.d.ts +0 -8
- package/dist/utils/qmd-model-download-error.js +1 -1
- package/dist/utils/qmd-query-document-error.d.ts +0 -6
- package/dist/utils/qmd-query-document-error.js +1 -1
- package/dist/utils/redact-error-text.d.ts +0 -2
- package/dist/utils/redact-error-text.js +3 -2
- package/dist/utils/redact-url.d.ts +14 -0
- package/dist/utils/redact-url.js +218 -0
- package/dist/utils/run-bundled-script.d.ts +6 -0
- package/dist/utils/run-bundled-script.js +117 -4
- package/dist/utils/sandbox-runner-client.d.ts +2 -1
- package/dist/utils/scaffold-fast-import-guard.d.ts +2 -0
- package/dist/utils/scaffold-fast-import-guard.js +40 -0
- package/dist/utils/scaffold-packlist-guard.d.ts +7 -0
- package/dist/utils/scaffold-packlist-guard.js +23 -0
- package/dist/utils/scaffold-sibling-references.d.ts +22 -0
- package/dist/utils/scaffold-sibling-references.js +156 -0
- package/dist/utils/secret-load-availability.d.ts +8 -0
- package/dist/utils/secret-load-availability.js +54 -0
- package/dist/utils/secrets-cache.d.ts +7 -3
- package/dist/utils/secrets-cache.js +162 -14
- package/dist/utils/self-update.d.ts +34 -1
- package/dist/utils/self-update.js +660 -42
- package/dist/utils/sentry-fingerprint.d.ts +23 -1
- package/dist/utils/sentry-fingerprint.js +223 -31
- package/dist/utils/staged-install.d.ts +34 -0
- package/dist/utils/staged-install.js +346 -0
- package/dist/utils/staged-npm-install.d.ts +16 -0
- package/dist/utils/staged-npm-install.js +264 -0
- package/dist/utils/sync-log-sources.d.ts +15 -0
- package/dist/utils/sync-log-sources.js +36 -0
- package/dist/utils/table-width.d.ts +7 -0
- package/dist/utils/table-width.js +15 -0
- package/dist/utils/team-upgrade.d.ts +1 -1
- package/dist/utils/team-upgrade.js +4 -3
- package/dist/utils/update-command-supervisor.cjs +247 -0
- package/dist/utils/upload-author.d.ts +15 -0
- package/dist/utils/upload-author.js +39 -0
- package/dist/utils/vault-api.d.ts +21 -1
- package/dist/utils/vault-api.js +251 -84
- package/dist/utils/version-check.d.ts +11 -1
- package/dist/utils/version-check.js +32 -3
- package/dist/utils/version-gate.d.ts +101 -17
- package/dist/utils/version-gate.js +645 -70
- package/dist/utils/version-report.d.ts +27 -0
- package/dist/utils/version-report.js +105 -0
- package/dist/utils/windows-spawn.d.ts +6 -0
- package/dist/utils/windows-spawn.js +37 -0
- package/dist/version-request.d.ts +14 -0
- package/dist/version-request.js +36 -0
- package/package.json +20 -8
- package/scripts/mesh-daemon-if-stale.mjs +20 -0
- package/templates/reports/blank.md +3 -0
- package/templates/reports/daily-digest.md +11 -0
- package/templates/runbooks/update-report.md +21 -0
- package/dist/commands/scaffold-fast.d.ts +0 -41
- package/dist/commands/scaffold-fast.js +0 -57
- package/dist/lib/work-context/index.d.ts +0 -25
- package/dist/lib/work-context/index.js +0 -21
|
@@ -18,15 +18,19 @@
|
|
|
18
18
|
* HQ_COGNITO_CALLBACK_PORT — Loopback OAuth callback port
|
|
19
19
|
* HQ_VAULT_API_URL — vault-service API Gateway URL
|
|
20
20
|
*/
|
|
21
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
22
|
+
import { randomBytes } from "node:crypto";
|
|
21
23
|
import * as fs from "fs";
|
|
22
24
|
import * as os from "os";
|
|
23
25
|
import * as path from "path";
|
|
24
26
|
import * as yaml from "js-yaml";
|
|
25
27
|
import chalk from "chalk";
|
|
26
|
-
import { loadCachedTokens, isExpiring, refreshTokens, browserLogin, detectHqCoreVersion, isMachineIdentity, getValidMachineTokens, CognitoRefreshError, accessTokenFingerprint, invalidateCachedTokensByFingerprint, } from "@indigoai-us/hq-cloud";
|
|
28
|
+
import { loadCachedTokens, isExpiring, refreshTokens, saveCachedTokens, browserLogin, detectHqCoreVersion, isMachineIdentity, getValidMachineTokens, CognitoRefreshError, accessTokenFingerprint, invalidateCachedTokensByFingerprint, } from "@indigoai-us/hq-cloud";
|
|
27
29
|
import { CLI_NAME, CLI_VERSION } from "../cli-version.js";
|
|
28
30
|
import { daemonDir } from "../lib/mesh/live/daemon/paths.js";
|
|
29
31
|
import { workMeshRoot } from "../lib/mesh/live/paths.js";
|
|
32
|
+
import { acquireLockFileExclusively } from "./exclusive-lock.js";
|
|
33
|
+
import { reportNoninteractivePersonRefreshRejection } from "./cognito-refresh-sentry.js";
|
|
30
34
|
// Re-export the cached-session primitives for callers that must deliberately
|
|
31
35
|
// avoid the refresh/login behavior in the higher-level helpers below.
|
|
32
36
|
export { isExpiring, isMachineIdentity, loadCachedTokens };
|
|
@@ -101,22 +105,24 @@ export const DEFAULT_VAULT_API_URL = process.env.HQ_VAULT_API_URL ?? "https://hq
|
|
|
101
105
|
* Re-importable as a function for command-time resolution and tests.
|
|
102
106
|
*/
|
|
103
107
|
export function resolveDefaultHqRoot(opts = {}) {
|
|
108
|
+
const env = opts.env ?? process.env;
|
|
109
|
+
const home = opts.home ?? os.homedir();
|
|
104
110
|
// Tier 1: explicit override.
|
|
105
|
-
if (
|
|
106
|
-
return path.resolve(
|
|
111
|
+
if (env.HQ_ROOT)
|
|
112
|
+
return path.resolve(env.HQ_ROOT);
|
|
107
113
|
// Tier 2: working-tree walk-up — operate on the HQ tree you're inside.
|
|
108
|
-
let cur = path.resolve(process.cwd());
|
|
114
|
+
let cur = path.resolve(opts.cwd ?? process.cwd());
|
|
109
115
|
while (cur !== path.dirname(cur)) {
|
|
110
116
|
if (isHqRoot(cur))
|
|
111
117
|
return cur;
|
|
112
118
|
cur = path.dirname(cur);
|
|
113
119
|
}
|
|
114
120
|
// Tiers 3–4: the installer/menubar's canonical "where is HQ" records.
|
|
115
|
-
const fromConfig = readHqRootFromHqConfig(path.join(
|
|
121
|
+
const fromConfig = readHqRootFromHqConfig(path.join(home, ".hq"));
|
|
116
122
|
if (fromConfig)
|
|
117
123
|
return path.resolve(fromConfig);
|
|
118
124
|
// Tier 5: discover a valid HQ root in the well-known locations.
|
|
119
|
-
const discovered = discoverHqRootViaCoreYaml();
|
|
125
|
+
const discovered = discoverHqRootViaCoreYaml(home);
|
|
120
126
|
if (discovered)
|
|
121
127
|
return discovered;
|
|
122
128
|
// Tier 6: nothing resolved.
|
|
@@ -126,7 +132,7 @@ export function resolveDefaultHqRoot(opts = {}) {
|
|
|
126
132
|
"or install HQ via the installer/menubar so ~/.hq/menubar.json records " +
|
|
127
133
|
"its location.");
|
|
128
134
|
}
|
|
129
|
-
return path.join(
|
|
135
|
+
return path.join(home, "hq");
|
|
130
136
|
}
|
|
131
137
|
/**
|
|
132
138
|
* Read the configured HQ root from the installer/menubar records under
|
|
@@ -155,8 +161,7 @@ function readJsonStringField(file, field) {
|
|
|
155
161
|
}
|
|
156
162
|
}
|
|
157
163
|
/** Well-known parent locations an HQ tree commonly lives in (mirrors hq-sync). */
|
|
158
|
-
function hqDiscoveryCandidates() {
|
|
159
|
-
const home = os.homedir();
|
|
164
|
+
function hqDiscoveryCandidates(home = os.homedir()) {
|
|
160
165
|
return [
|
|
161
166
|
path.join(home, "HQ"),
|
|
162
167
|
path.join(home, "hq"),
|
|
@@ -171,8 +176,8 @@ function hqDiscoveryCandidates() {
|
|
|
171
176
|
* signature. First match wins; returns undefined if none qualify. Cheap — a
|
|
172
177
|
* few stats plus one small YAML parse on a hit.
|
|
173
178
|
*/
|
|
174
|
-
function discoverHqRootViaCoreYaml() {
|
|
175
|
-
return hqDiscoveryCandidates().find(isValidHqRootSignature);
|
|
179
|
+
function discoverHqRootViaCoreYaml(home) {
|
|
180
|
+
return hqDiscoveryCandidates(home).find(isValidHqRootSignature);
|
|
176
181
|
}
|
|
177
182
|
/**
|
|
178
183
|
* True iff `dir` carries a valid hq-core `core.yaml` — canonical
|
|
@@ -408,6 +413,308 @@ function decodeJwtPayload(token) {
|
|
|
408
413
|
return null;
|
|
409
414
|
}
|
|
410
415
|
}
|
|
416
|
+
/**
|
|
417
|
+
* Refresh wrote a different Cognito subject than the active cache.
|
|
418
|
+
* Callers must not fall through to browser login or machine mint — that
|
|
419
|
+
* would replace the operator session the refusal is protecting.
|
|
420
|
+
*/
|
|
421
|
+
export class IdentitySwapRefusal extends Error {
|
|
422
|
+
constructor(message) {
|
|
423
|
+
super(message);
|
|
424
|
+
this.name = "IdentitySwapRefusal";
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
export function isIdentitySwapRefusal(err) {
|
|
428
|
+
return err instanceof IdentitySwapRefusal;
|
|
429
|
+
}
|
|
430
|
+
/** `sub` plus `custom:entityUid` from an unverified JWT. Either may be absent. */
|
|
431
|
+
export function cognitoSubjectFromToken(token) {
|
|
432
|
+
const claims = decodeJwtPayload(token);
|
|
433
|
+
const sub = typeof claims?.sub === "string" && claims.sub.length > 0 ? claims.sub : null;
|
|
434
|
+
const entity = claims?.["custom:entityUid"];
|
|
435
|
+
const entityUid = typeof entity === "string" && entity.length > 0 ? entity : null;
|
|
436
|
+
return { sub, entityUid };
|
|
437
|
+
}
|
|
438
|
+
/** Stable local cache identity for a Cognito person or agent principal. */
|
|
439
|
+
export function cognitoCachePrincipalUid(token) {
|
|
440
|
+
const claims = cognitoSubjectFromToken(token);
|
|
441
|
+
return claims.entityUid ?? claims.sub;
|
|
442
|
+
}
|
|
443
|
+
/** Stable subject key. Null when neither sub nor entity uid is present. */
|
|
444
|
+
export function cognitoSubjectKey(tokens) {
|
|
445
|
+
if (!tokens)
|
|
446
|
+
return null;
|
|
447
|
+
const fromId = cognitoSubjectFromToken(tokens.idToken);
|
|
448
|
+
const fromAccess = cognitoSubjectFromToken(tokens.accessToken);
|
|
449
|
+
const sub = fromId.sub ?? fromAccess.sub;
|
|
450
|
+
const entityUid = fromId.entityUid ?? fromAccess.entityUid;
|
|
451
|
+
if (!sub && !entityUid)
|
|
452
|
+
return null;
|
|
453
|
+
return `${sub ?? ""}|${entityUid ?? ""}`;
|
|
454
|
+
}
|
|
455
|
+
/** Doctor/status line. Claims only — never token material. */
|
|
456
|
+
export function formatCognitoSubject(tokens) {
|
|
457
|
+
if (!tokens)
|
|
458
|
+
return "sub=- entityUid=-";
|
|
459
|
+
const fromId = cognitoSubjectFromToken(tokens.idToken);
|
|
460
|
+
const fromAccess = cognitoSubjectFromToken(tokens.accessToken);
|
|
461
|
+
return `sub=${fromId.sub ?? fromAccess.sub ?? "-"} entityUid=${fromId.entityUid ?? fromAccess.entityUid ?? "-"}`;
|
|
462
|
+
}
|
|
463
|
+
function readTokenFile(file) {
|
|
464
|
+
try {
|
|
465
|
+
if (!fs.existsSync(file))
|
|
466
|
+
return null;
|
|
467
|
+
const raw = JSON.parse(fs.readFileSync(file, "utf8"));
|
|
468
|
+
if (typeof raw.accessToken !== "string" || typeof raw.idToken !== "string")
|
|
469
|
+
return null;
|
|
470
|
+
return raw;
|
|
471
|
+
}
|
|
472
|
+
catch {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Person cache as stored on disk for `env`. Does not consult hq-cloud's
|
|
478
|
+
* in-memory fallback, which can surface a different session when the file
|
|
479
|
+
* is missing or unreadable.
|
|
480
|
+
*/
|
|
481
|
+
export function readPersonTokenFile(home = os.homedir(), env = process.env) {
|
|
482
|
+
return readTokenFile(personTokenCacheFile(home, env));
|
|
483
|
+
}
|
|
484
|
+
function restoreTokenFile(file, before) {
|
|
485
|
+
if (before) {
|
|
486
|
+
const dir = path.dirname(file);
|
|
487
|
+
if (!fs.existsSync(dir))
|
|
488
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
489
|
+
const tmp = path.join(dir, `.cognito-tokens.json.restore.${process.pid}`);
|
|
490
|
+
fs.writeFileSync(tmp, before, { mode: 0o600 });
|
|
491
|
+
fs.renameSync(tmp, file);
|
|
492
|
+
return;
|
|
493
|
+
}
|
|
494
|
+
if (fs.existsSync(file))
|
|
495
|
+
fs.unlinkSync(file);
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Refresh the active person session and refuse a subject change.
|
|
499
|
+
*
|
|
500
|
+
* hq-cloud's `refreshTokens` saves as soon as Cognito responds, and on a
|
|
501
|
+
* cache miss or unreadable file it can refresh an in-memory session for a
|
|
502
|
+
* different subject (same app client). Snapshot the active file first; if
|
|
503
|
+
* the response subject differs, put the bytes back and leave them there.
|
|
504
|
+
*/
|
|
505
|
+
export async function refreshActivePersonTokens(cached, env = process.env) {
|
|
506
|
+
const file = personTokenCacheFile(os.homedir(), env);
|
|
507
|
+
const onDisk = readTokenFile(file);
|
|
508
|
+
const diskKey = cognitoSubjectKey(onDisk);
|
|
509
|
+
const cachedKey = cognitoSubjectKey(cached);
|
|
510
|
+
if (diskKey && cachedKey && diskKey !== cachedKey) {
|
|
511
|
+
const message = `refusing token refresh: cached subject ${formatCognitoSubject(cached)} ` +
|
|
512
|
+
`does not match active subject ${formatCognitoSubject(onDisk)}; token file left unchanged`;
|
|
513
|
+
console.error(message);
|
|
514
|
+
throw new IdentitySwapRefusal(message);
|
|
515
|
+
}
|
|
516
|
+
const activeTokens = diskKey && cachedKey && diskKey === cachedKey ? onDisk : cached;
|
|
517
|
+
const activeKey = cognitoSubjectKey(activeTokens);
|
|
518
|
+
const before = fs.existsSync(file) ? fs.readFileSync(file) : null;
|
|
519
|
+
const refreshed = await refreshTokens(DEFAULT_COGNITO, activeTokens.refreshToken, activeTokens.accessToken);
|
|
520
|
+
const nextKey = cognitoSubjectKey(refreshed);
|
|
521
|
+
if (activeKey && nextKey && nextKey !== activeKey) {
|
|
522
|
+
restoreTokenFile(file, before);
|
|
523
|
+
const message = `refusing token refresh: refreshed subject ${formatCognitoSubject(refreshed)} ` +
|
|
524
|
+
`does not match active subject ${formatCognitoSubject(activeTokens)}; token file left unchanged`;
|
|
525
|
+
console.error(message);
|
|
526
|
+
throw new IdentitySwapRefusal(message);
|
|
527
|
+
}
|
|
528
|
+
return refreshed;
|
|
529
|
+
}
|
|
530
|
+
function throwIfAborted(signal) {
|
|
531
|
+
if (signal.aborted)
|
|
532
|
+
throw signal.reason ?? new Error("Token acquisition was aborted");
|
|
533
|
+
}
|
|
534
|
+
function waitForRefreshLock(signal, delayMs) {
|
|
535
|
+
return new Promise((resolve, reject) => {
|
|
536
|
+
const finish = (error) => {
|
|
537
|
+
clearTimeout(timer);
|
|
538
|
+
signal.removeEventListener("abort", onAbort);
|
|
539
|
+
if (error)
|
|
540
|
+
reject(error);
|
|
541
|
+
else
|
|
542
|
+
resolve();
|
|
543
|
+
};
|
|
544
|
+
const timer = setTimeout(() => finish(), delayMs);
|
|
545
|
+
const onAbort = () => finish(signal.reason ?? new Error("Token acquisition was aborted"));
|
|
546
|
+
if (signal.aborted)
|
|
547
|
+
onAbort();
|
|
548
|
+
else
|
|
549
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Refresh-lock protocol shared with hq-cloud, with caller cancellation while
|
|
554
|
+
* waiting. The flag lookup is best-effort, so it never refreshes unlocked.
|
|
555
|
+
*/
|
|
556
|
+
async function withAbortablePersonRefreshLock(signal, fn) {
|
|
557
|
+
const lockFile = `${personTokenCacheFile()}.lock`;
|
|
558
|
+
const stateDir = path.dirname(lockFile);
|
|
559
|
+
fs.mkdirSync(stateDir, { recursive: true, mode: 0o700 });
|
|
560
|
+
const candidate = `${lockFile}.candidate.${process.pid}.${randomBytes(8).toString("hex")}`;
|
|
561
|
+
fs.writeFileSync(candidate, String(process.pid), { flag: "wx", mode: 0o600 });
|
|
562
|
+
let held = false;
|
|
563
|
+
try {
|
|
564
|
+
for (;;) {
|
|
565
|
+
throwIfAborted(signal);
|
|
566
|
+
try {
|
|
567
|
+
acquireLockFileExclusively(candidate, lockFile, stateDir);
|
|
568
|
+
held = true;
|
|
569
|
+
break;
|
|
570
|
+
}
|
|
571
|
+
catch (error) {
|
|
572
|
+
if (error.code !== "EEXIST")
|
|
573
|
+
throw error;
|
|
574
|
+
let ownerPid = null;
|
|
575
|
+
try {
|
|
576
|
+
const parsed = Number.parseInt(fs.readFileSync(lockFile, "utf8").trim(), 10);
|
|
577
|
+
if (Number.isInteger(parsed) && parsed > 0)
|
|
578
|
+
ownerPid = parsed;
|
|
579
|
+
}
|
|
580
|
+
catch {
|
|
581
|
+
// An absent or malformed lock may be reclaimed below.
|
|
582
|
+
}
|
|
583
|
+
let ownerAlive = false;
|
|
584
|
+
if (ownerPid !== null) {
|
|
585
|
+
try {
|
|
586
|
+
process.kill(ownerPid, 0);
|
|
587
|
+
ownerAlive = true;
|
|
588
|
+
}
|
|
589
|
+
catch (probeError) {
|
|
590
|
+
ownerAlive = probeError.code === "EPERM";
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
if (!ownerAlive) {
|
|
594
|
+
try {
|
|
595
|
+
fs.unlinkSync(lockFile);
|
|
596
|
+
}
|
|
597
|
+
catch {
|
|
598
|
+
// Another contender may have reclaimed it first.
|
|
599
|
+
}
|
|
600
|
+
continue;
|
|
601
|
+
}
|
|
602
|
+
await waitForRefreshLock(signal, 50);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
throwIfAborted(signal);
|
|
606
|
+
return await fn();
|
|
607
|
+
}
|
|
608
|
+
finally {
|
|
609
|
+
if (held) {
|
|
610
|
+
try {
|
|
611
|
+
const owner = Number.parseInt(fs.readFileSync(lockFile, "utf8").trim(), 10);
|
|
612
|
+
if (owner === process.pid)
|
|
613
|
+
fs.unlinkSync(lockFile);
|
|
614
|
+
}
|
|
615
|
+
catch {
|
|
616
|
+
// A failed request must not mask its original error.
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
try {
|
|
620
|
+
fs.unlinkSync(candidate);
|
|
621
|
+
}
|
|
622
|
+
catch {
|
|
623
|
+
// The candidate may already have been removed.
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Client-health's short-lived flag read cannot use hq-cloud's unbounded refresh
|
|
629
|
+
* helper. Reuse its lockfile protocol, attach the caller signal to the refresh
|
|
630
|
+
* request, and persist only after the request has completed before the deadline.
|
|
631
|
+
*/
|
|
632
|
+
export async function refreshActivePersonTokensForClientHealth(cached, signal) {
|
|
633
|
+
// Cognito refresh rotation is off for this client (#2603; ALLOW_REFRESH_TOKEN_AUTH stays), so aborting loses no rotated token; keep this lock protocol identical to hq-cloud withRefreshLock.
|
|
634
|
+
return withAbortablePersonRefreshLock(signal, async () => {
|
|
635
|
+
throwIfAborted(signal);
|
|
636
|
+
const onDisk = readPersonTokenFile();
|
|
637
|
+
const diskKey = cognitoSubjectKey(onDisk);
|
|
638
|
+
const cachedKey = cognitoSubjectKey(cached);
|
|
639
|
+
if (diskKey && cachedKey && diskKey !== cachedKey) {
|
|
640
|
+
throw new IdentitySwapRefusal(`refusing token refresh: cached subject ${formatCognitoSubject(cached)} ` +
|
|
641
|
+
`does not match active subject ${formatCognitoSubject(onDisk)}`);
|
|
642
|
+
}
|
|
643
|
+
const activeTokens = onDisk ?? cached;
|
|
644
|
+
if (!isExpiring(activeTokens, 120))
|
|
645
|
+
return activeTokens;
|
|
646
|
+
if (!activeTokens.refreshToken) {
|
|
647
|
+
throw new CognitoRefreshError("No refresh token is available for the cached HQ session", true);
|
|
648
|
+
}
|
|
649
|
+
const body = new URLSearchParams({
|
|
650
|
+
grant_type: "refresh_token",
|
|
651
|
+
client_id: DEFAULT_COGNITO.clientId,
|
|
652
|
+
refresh_token: activeTokens.refreshToken,
|
|
653
|
+
});
|
|
654
|
+
const endpoint = `https://${DEFAULT_COGNITO.userPoolDomain}.auth.${DEFAULT_COGNITO.region}.amazoncognito.com/oauth2/token`;
|
|
655
|
+
const fingerprint = accessTokenFingerprint(activeTokens.accessToken);
|
|
656
|
+
let response;
|
|
657
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
658
|
+
throwIfAborted(signal);
|
|
659
|
+
try {
|
|
660
|
+
response = await fetch(endpoint, {
|
|
661
|
+
method: "POST",
|
|
662
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
663
|
+
body: body.toString(),
|
|
664
|
+
signal,
|
|
665
|
+
});
|
|
666
|
+
}
|
|
667
|
+
catch (err) {
|
|
668
|
+
throwIfAborted(signal);
|
|
669
|
+
if (attempt === 0)
|
|
670
|
+
continue;
|
|
671
|
+
throw new CognitoRefreshError(`Cognito refresh request failed: ${err instanceof Error ? err.message : String(err)}`, false, undefined, fingerprint);
|
|
672
|
+
}
|
|
673
|
+
throwIfAborted(signal);
|
|
674
|
+
if (response.ok)
|
|
675
|
+
break;
|
|
676
|
+
const retryable = response.status === 401 ||
|
|
677
|
+
response.status === 408 ||
|
|
678
|
+
response.status === 429 ||
|
|
679
|
+
response.status >= 500;
|
|
680
|
+
if (retryable && attempt === 0)
|
|
681
|
+
continue;
|
|
682
|
+
const reauth = response.status === 401 ||
|
|
683
|
+
(response.status >= 400 && response.status < 500 && ![408, 429].includes(response.status));
|
|
684
|
+
throw new CognitoRefreshError(`Cognito refresh failed (${response.status})`, reauth, response.status, fingerprint);
|
|
685
|
+
}
|
|
686
|
+
if (!response?.ok) {
|
|
687
|
+
throw new CognitoRefreshError("Cognito refresh failed after retry", false, undefined, fingerprint);
|
|
688
|
+
}
|
|
689
|
+
const data = (await response.json());
|
|
690
|
+
throwIfAborted(signal);
|
|
691
|
+
if (typeof data.access_token !== "string" ||
|
|
692
|
+
typeof data.id_token !== "string" ||
|
|
693
|
+
typeof data.expires_in !== "number" ||
|
|
694
|
+
!Number.isFinite(data.expires_in) ||
|
|
695
|
+
data.expires_in <= 0) {
|
|
696
|
+
throw new CognitoRefreshError("Cognito refresh returned an invalid token response", false);
|
|
697
|
+
}
|
|
698
|
+
const refreshed = {
|
|
699
|
+
accessToken: data.access_token,
|
|
700
|
+
idToken: data.id_token,
|
|
701
|
+
refreshToken: typeof data.refresh_token === "string" && data.refresh_token.length > 0
|
|
702
|
+
? data.refresh_token
|
|
703
|
+
: activeTokens.refreshToken,
|
|
704
|
+
expiresAt: Date.now() + data.expires_in * 1_000,
|
|
705
|
+
tokenType: "Bearer",
|
|
706
|
+
};
|
|
707
|
+
const activeKey = cognitoSubjectKey(activeTokens);
|
|
708
|
+
const nextKey = cognitoSubjectKey(refreshed);
|
|
709
|
+
if (activeKey && nextKey && nextKey !== activeKey) {
|
|
710
|
+
throw new IdentitySwapRefusal(`refusing token refresh: refreshed subject ${formatCognitoSubject(refreshed)} ` +
|
|
711
|
+
`does not match active subject ${formatCognitoSubject(activeTokens)}`);
|
|
712
|
+
}
|
|
713
|
+
throwIfAborted(signal);
|
|
714
|
+
saveCachedTokens(refreshed);
|
|
715
|
+
return refreshed;
|
|
716
|
+
});
|
|
717
|
+
}
|
|
411
718
|
/** Derive actor kind from an ID token's custom:entity* claims (no verify). */
|
|
412
719
|
export function actorKindFromIdToken(idToken) {
|
|
413
720
|
const claims = decodeJwtPayload(idToken);
|
|
@@ -496,23 +803,52 @@ export function describeCognitoTokenSource(opts = {}) {
|
|
|
496
803
|
* `HQ_MACHINE_TOKEN_STATE_DIR` instead. Restores the prior env afterwards.
|
|
497
804
|
*/
|
|
498
805
|
export async function withMachineTokenStateDir(fn, opts = {}) {
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
806
|
+
return withTokenStateDirSection(async () => {
|
|
807
|
+
const home = opts.home ?? os.homedir();
|
|
808
|
+
const env = opts.env ?? process.env;
|
|
809
|
+
const prev = process.env.HQ_STATE_DIR;
|
|
810
|
+
process.env.HQ_STATE_DIR = machineTokenStateDir(home, env);
|
|
811
|
+
try {
|
|
812
|
+
return await fn();
|
|
813
|
+
}
|
|
814
|
+
finally {
|
|
815
|
+
if (prev === undefined)
|
|
816
|
+
delete process.env.HQ_STATE_DIR;
|
|
817
|
+
else
|
|
818
|
+
process.env.HQ_STATE_DIR = prev;
|
|
819
|
+
}
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
/**
|
|
823
|
+
* The token cache location (`HQ_STATE_DIR`) is process-wide, and a machine mint
|
|
824
|
+
* points it at the machine cache across an await. A person-session read in the
|
|
825
|
+
* same process while that mint is in flight would load the MACHINE tokens: a
|
|
826
|
+
* local bot's resident (machine identity for its own calls) checking its
|
|
827
|
+
* owner's sign-in at startup got the bot's token and "No person entity found".
|
|
828
|
+
* Every section that swaps or reads the cache location runs one at a time;
|
|
829
|
+
* nested sections (a person read falling back to a machine mint) run inline.
|
|
830
|
+
*/
|
|
831
|
+
const tokenStateDirSection = new AsyncLocalStorage();
|
|
832
|
+
let tokenStateDirTail = Promise.resolve();
|
|
833
|
+
function withTokenStateDirSection(fn) {
|
|
834
|
+
if (tokenStateDirSection.getStore())
|
|
835
|
+
return fn();
|
|
836
|
+
const run = tokenStateDirTail.then(() => tokenStateDirSection.run(true, fn));
|
|
837
|
+
tokenStateDirTail = run.catch(() => undefined);
|
|
838
|
+
return run;
|
|
512
839
|
}
|
|
513
840
|
async function ensureMachineTokens() {
|
|
514
841
|
return withMachineTokenStateDir(() => getValidMachineTokens(DEFAULT_COGNITO));
|
|
515
842
|
}
|
|
843
|
+
/**
|
|
844
|
+
* Ensure the current machine identity has a valid session and return only the
|
|
845
|
+
* access/ID token pair needed by supported machine-session handoff scripts.
|
|
846
|
+
* The machine state directory is isolated from the person's session cache.
|
|
847
|
+
*/
|
|
848
|
+
export async function ensureMachineSessionTokens() {
|
|
849
|
+
const tokens = await ensureMachineTokensMaybeFallback({ tokenSource: "machine" });
|
|
850
|
+
return { accessToken: tokens.accessToken, idToken: tokens.idToken, expiresAt: tokens.expiresAt };
|
|
851
|
+
}
|
|
516
852
|
/**
|
|
517
853
|
* Mint machine tokens (daemon state dir cache). Logs once when the fresh-box
|
|
518
854
|
* default-creds fallback is what selected the machine path.
|
|
@@ -553,6 +889,37 @@ export function isDefinitivePersonAuthRejection(err) {
|
|
|
553
889
|
function markPersonSessionRejected(accessToken) {
|
|
554
890
|
invalidateCachedTokensByFingerprint(accessTokenFingerprint(accessToken));
|
|
555
891
|
}
|
|
892
|
+
async function reportPersonRefreshRejectionBestEffort(error) {
|
|
893
|
+
try {
|
|
894
|
+
await reportNoninteractivePersonRefreshRejection(error);
|
|
895
|
+
}
|
|
896
|
+
catch {
|
|
897
|
+
// Reporting is deliberately non-blocking for auth recovery and invalidation.
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
/**
|
|
901
|
+
* A refresh rejection applies to the snapshot sent to Cognito. Reread the
|
|
902
|
+
* shared person cache before rejecting the session because another process
|
|
903
|
+
* may have atomically installed a fresh generation while the request ran.
|
|
904
|
+
*/
|
|
905
|
+
function resolvePersonSessionAfterRefreshRejection(cached) {
|
|
906
|
+
const current = readPersonTokenFile();
|
|
907
|
+
const cachedKey = cognitoSubjectKey(cached);
|
|
908
|
+
const currentKey = cognitoSubjectKey(current);
|
|
909
|
+
if (!current || current.accessToken === cached.accessToken)
|
|
910
|
+
return { kind: "none" };
|
|
911
|
+
if (cachedKey && currentKey && cachedKey !== currentKey) {
|
|
912
|
+
return {
|
|
913
|
+
kind: "identity-swap",
|
|
914
|
+
error: new IdentitySwapRefusal("refusing rejected refresh for " + formatCognitoSubject(cached) +
|
|
915
|
+
": the active token file now belongs to " + formatCognitoSubject(current)),
|
|
916
|
+
};
|
|
917
|
+
}
|
|
918
|
+
if (cachedKey && currentKey === cachedKey && !isExpiring(current, 120)) {
|
|
919
|
+
return { kind: "fresh", tokens: current };
|
|
920
|
+
}
|
|
921
|
+
return { kind: "none" };
|
|
922
|
+
}
|
|
556
923
|
/**
|
|
557
924
|
* Return a non-expired Cognito access token, refreshing or browser-logging-in
|
|
558
925
|
* as needed. Person cache lives at ~/.hq/cognito-tokens.json. Machine minting
|
|
@@ -567,6 +934,11 @@ function markPersonSessionRejected(accessToken) {
|
|
|
567
934
|
* a browser.
|
|
568
935
|
*/
|
|
569
936
|
export async function ensureCognitoToken(options = {}) {
|
|
937
|
+
if (wantsMachineCognitoTokens(options))
|
|
938
|
+
return ensureCognitoTokenUnserialized(options);
|
|
939
|
+
return withTokenStateDirSection(() => ensureCognitoTokenUnserialized(options));
|
|
940
|
+
}
|
|
941
|
+
async function ensureCognitoTokenUnserialized(options) {
|
|
570
942
|
const interactive = options.interactive ?? true;
|
|
571
943
|
// Machine identities (company agents) mint sessions on demand via
|
|
572
944
|
// USER_PASSWORD_AUTH — no refresh-token dance, no browser. The vault API's
|
|
@@ -590,14 +962,25 @@ export async function ensureCognitoToken(options = {}) {
|
|
|
590
962
|
if (interactive) {
|
|
591
963
|
console.error(chalk.dim(" Refreshing expiring HQ session..."));
|
|
592
964
|
}
|
|
593
|
-
const refreshed = await
|
|
965
|
+
const refreshed = await refreshActivePersonTokens(cached);
|
|
594
966
|
return refreshed.accessToken;
|
|
595
967
|
}
|
|
596
968
|
catch (err) {
|
|
969
|
+
if (isIdentitySwapRefusal(err))
|
|
970
|
+
throw err;
|
|
597
971
|
// Transient/network/server errors stay person errors — never mint machine.
|
|
598
972
|
if (!isDefinitivePersonAuthRejection(err)) {
|
|
599
973
|
throw err;
|
|
600
974
|
}
|
|
975
|
+
const resolution = resolvePersonSessionAfterRefreshRejection(cached);
|
|
976
|
+
if (resolution.kind === "identity-swap")
|
|
977
|
+
throw resolution.error;
|
|
978
|
+
if (resolution.kind === "fresh") {
|
|
979
|
+
return resolution.tokens.accessToken;
|
|
980
|
+
}
|
|
981
|
+
if (!interactive) {
|
|
982
|
+
await reportPersonRefreshRejectionBestEffort(err);
|
|
983
|
+
}
|
|
601
984
|
markPersonSessionRejected(cached.accessToken);
|
|
602
985
|
const fallback = await tryDefaultMachineCredsFallback(options);
|
|
603
986
|
if (fallback)
|
|
@@ -615,6 +998,15 @@ export async function ensureCognitoToken(options = {}) {
|
|
|
615
998
|
if (!interactive) {
|
|
616
999
|
throw new Error("No valid HQ session and interactive login is disabled. Run `hq login` first.");
|
|
617
1000
|
}
|
|
1001
|
+
if (isHeadlessHost() && hostRunsAnAgent()) {
|
|
1002
|
+
// An agent host with no display has no one to complete a browser sign-in,
|
|
1003
|
+
// which then blocks until something kills the process. Fail with the fix
|
|
1004
|
+
// instead. Scoped to agent hosts so an ordinary headless run keeps the
|
|
1005
|
+
// existing sign-in and its remedies.
|
|
1006
|
+
throw new Error("No valid HQ session, and this host has no display for a browser sign-in. " +
|
|
1007
|
+
"If this is an enrolled agent, set HQ_AGENT_DIR to its agent directory " +
|
|
1008
|
+
"(or HQ_MACHINE_CREDS_FILE to its machine-creds.json). Otherwise run `hq login` on a computer with a browser.");
|
|
1009
|
+
}
|
|
618
1010
|
console.error(chalk.cyan(" No cached HQ session — launching browser sign-in..."));
|
|
619
1011
|
const tokens = await browserLogin(DEFAULT_COGNITO);
|
|
620
1012
|
return tokens.accessToken;
|
|
@@ -631,7 +1023,16 @@ export async function ensureCognitoToken(options = {}) {
|
|
|
631
1023
|
* identical to `ensureCognitoToken` there.
|
|
632
1024
|
*/
|
|
633
1025
|
export async function ensureCognitoIdToken(options = {}) {
|
|
1026
|
+
if (options.signal?.aborted)
|
|
1027
|
+
throw options.signal.reason ?? new Error("Token acquisition was aborted");
|
|
1028
|
+
if (wantsMachineCognitoTokens(options))
|
|
1029
|
+
return ensureCognitoIdTokenUnserialized(options);
|
|
1030
|
+
return withTokenStateDirSection(() => ensureCognitoIdTokenUnserialized(options));
|
|
1031
|
+
}
|
|
1032
|
+
async function ensureCognitoIdTokenUnserialized(options) {
|
|
634
1033
|
const interactive = options.interactive ?? true;
|
|
1034
|
+
if (options.signal?.aborted)
|
|
1035
|
+
throw options.signal.reason ?? new Error("Token acquisition was aborted");
|
|
635
1036
|
if (wantsMachineCognitoTokens(options)) {
|
|
636
1037
|
const machine = await ensureMachineTokensMaybeFallback(options);
|
|
637
1038
|
return machine.idToken;
|
|
@@ -645,13 +1046,24 @@ export async function ensureCognitoIdToken(options = {}) {
|
|
|
645
1046
|
if (interactive) {
|
|
646
1047
|
console.error(chalk.dim(" Refreshing expiring HQ session..."));
|
|
647
1048
|
}
|
|
648
|
-
const refreshed =
|
|
1049
|
+
const refreshed = options.signal
|
|
1050
|
+
? await refreshActivePersonTokensForClientHealth(cached, options.signal)
|
|
1051
|
+
: await refreshActivePersonTokens(cached);
|
|
649
1052
|
return refreshed.idToken;
|
|
650
1053
|
}
|
|
651
1054
|
catch (err) {
|
|
1055
|
+
if (options.signal?.aborted || isIdentitySwapRefusal(err))
|
|
1056
|
+
throw err;
|
|
652
1057
|
if (!isDefinitivePersonAuthRejection(err)) {
|
|
653
1058
|
throw err;
|
|
654
1059
|
}
|
|
1060
|
+
const resolution = resolvePersonSessionAfterRefreshRejection(cached);
|
|
1061
|
+
if (resolution.kind === "identity-swap")
|
|
1062
|
+
throw resolution.error;
|
|
1063
|
+
if (resolution.kind === "fresh")
|
|
1064
|
+
return resolution.tokens.idToken;
|
|
1065
|
+
if (!interactive)
|
|
1066
|
+
await reportPersonRefreshRejectionBestEffort(err);
|
|
655
1067
|
markPersonSessionRejected(cached.accessToken);
|
|
656
1068
|
const fallback = await tryDefaultMachineCredsFallback(options);
|
|
657
1069
|
if (fallback)
|
|
@@ -669,6 +1081,13 @@ export async function ensureCognitoIdToken(options = {}) {
|
|
|
669
1081
|
if (!interactive) {
|
|
670
1082
|
throw new Error("No valid HQ session and interactive login is disabled. Run `hq login` first.");
|
|
671
1083
|
}
|
|
1084
|
+
if (isHeadlessHost() && hostRunsAnAgent()) {
|
|
1085
|
+
// A browser sign-in on a server has no one to complete it and blocks
|
|
1086
|
+
// until something kills the process. Fail with the fix instead.
|
|
1087
|
+
throw new Error("No valid HQ session, and this host has no display for a browser sign-in. " +
|
|
1088
|
+
"If this is an enrolled agent, set HQ_AGENT_DIR to its agent directory " +
|
|
1089
|
+
"(or HQ_MACHINE_CREDS_FILE to its machine-creds.json). Otherwise run `hq login` on a computer with a browser.");
|
|
1090
|
+
}
|
|
672
1091
|
console.error(chalk.cyan(" No cached HQ session — launching browser sign-in..."));
|
|
673
1092
|
const tokens = await browserLogin(DEFAULT_COGNITO);
|
|
674
1093
|
return tokens.idToken;
|
|
@@ -704,6 +1123,11 @@ export function buildVaultConfig(authToken) {
|
|
|
704
1123
|
* reason string and can decide what to do next. Never opens a browser.
|
|
705
1124
|
*/
|
|
706
1125
|
export async function refreshCachedSession(options = {}) {
|
|
1126
|
+
if (wantsMachineCognitoTokens(options))
|
|
1127
|
+
return refreshCachedSessionUnserialized(options);
|
|
1128
|
+
return withTokenStateDirSection(() => refreshCachedSessionUnserialized(options));
|
|
1129
|
+
}
|
|
1130
|
+
async function refreshCachedSessionUnserialized(options) {
|
|
707
1131
|
// Machine identities have no refresh token; ensure a valid cached machine
|
|
708
1132
|
// session without forcing a re-mint when the cache is already healthy.
|
|
709
1133
|
// Tokens land under the dedicated machine/daemon state dir.
|
|
@@ -742,10 +1166,13 @@ export async function refreshCachedSession(options = {}) {
|
|
|
742
1166
|
return { refreshed: true };
|
|
743
1167
|
}
|
|
744
1168
|
try {
|
|
745
|
-
await
|
|
1169
|
+
await refreshActivePersonTokens(cached);
|
|
746
1170
|
return { refreshed: true };
|
|
747
1171
|
}
|
|
748
1172
|
catch (err) {
|
|
1173
|
+
if (isIdentitySwapRefusal(err)) {
|
|
1174
|
+
return { refreshed: false, reason: err.message };
|
|
1175
|
+
}
|
|
749
1176
|
// Transient/network/server refresh errors stay person failures.
|
|
750
1177
|
if (!isDefinitivePersonAuthRejection(err)) {
|
|
751
1178
|
return {
|
|
@@ -753,6 +1180,13 @@ export async function refreshCachedSession(options = {}) {
|
|
|
753
1180
|
reason: err instanceof Error ? err.message : String(err),
|
|
754
1181
|
};
|
|
755
1182
|
}
|
|
1183
|
+
const resolution = resolvePersonSessionAfterRefreshRejection(cached);
|
|
1184
|
+
if (resolution.kind === "identity-swap") {
|
|
1185
|
+
return { refreshed: false, reason: resolution.error.message };
|
|
1186
|
+
}
|
|
1187
|
+
if (resolution.kind === "fresh")
|
|
1188
|
+
return { refreshed: true };
|
|
1189
|
+
await reportPersonRefreshRejectionBestEffort(err);
|
|
756
1190
|
// Definitive rejection — person session is dead; mark it and fall back.
|
|
757
1191
|
markPersonSessionRejected(cached.accessToken);
|
|
758
1192
|
try {
|
|
@@ -772,4 +1206,24 @@ export async function refreshCachedSession(options = {}) {
|
|
|
772
1206
|
};
|
|
773
1207
|
}
|
|
774
1208
|
}
|
|
1209
|
+
/**
|
|
1210
|
+
* True on a Linux host with no terminal and no display — a container or
|
|
1211
|
+
* server, where a browser sign-in can never be completed. macOS and Windows
|
|
1212
|
+
* always have a way to open a browser, and a terminal means a person is there.
|
|
1213
|
+
*/
|
|
1214
|
+
export function isHeadlessHost(env = process.env, platform = process.platform, tty = Boolean(process.stdin.isTTY || process.stdout.isTTY || process.stderr.isTTY)) {
|
|
1215
|
+
if (platform !== "linux")
|
|
1216
|
+
return false;
|
|
1217
|
+
if (tty)
|
|
1218
|
+
return false;
|
|
1219
|
+
return !env.DISPLAY?.trim() && !env.WAYLAND_DISPLAY?.trim();
|
|
1220
|
+
}
|
|
1221
|
+
/**
|
|
1222
|
+
* True when the environment explicitly names an HQ agent identity. Only the
|
|
1223
|
+
* explicit variables count: guessing from the filesystem is unreliable, and a
|
|
1224
|
+
* wrong guess would take an ordinary headless run off its sign-in path.
|
|
1225
|
+
*/
|
|
1226
|
+
export function hostRunsAnAgent(env = process.env) {
|
|
1227
|
+
return Boolean(env.HQ_AGENT_DIR?.trim() || env.HQ_MACHINE_CREDS_FILE?.trim());
|
|
1228
|
+
}
|
|
775
1229
|
//# sourceMappingURL=cognito-session.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The console that fronts the control plane this CLI is pointed at.
|
|
3
|
+
*
|
|
4
|
+
* A handoff must land on the console for the same backend. When an override is
|
|
5
|
+
* active, derive its console from the control-plane host instead of assuming
|
|
6
|
+
* production. `HQ_CONSOLE_URL` remains an explicit override.
|
|
7
|
+
*/
|
|
8
|
+
export declare function consoleOrigin(vaultApiUrl?: string): string | undefined;
|
|
9
|
+
//# sourceMappingURL=console-origin.d.ts.map
|