@indigoai-us/hq-cli 5.313.0 → 5.314.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 +1 -4300
- package/assets/scaffold/core/scripts/checkpoint-stop-gate.sh +43 -281
- package/assets/scaffold/core/scripts/hook-lib.sh +50 -345
- package/assets/scaffold/core/scripts/hq-session.sh +23 -184
- package/assets/scaffold/core/scripts/lib/session-id.sh +2 -3
- package/assets/scaffold/core/scripts/lib/session-scope-capability.sh +1 -1
- package/assets/scaffold/core/scripts/lib/work-mesh-enqueue.sh +1 -2
- package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +87 -10
- package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +3 -36
- package/assets/scaffold/core/scripts/rebuild-projects-index.sh +12 -99
- package/assets/scaffold/core/scripts/token-usage-report.sh +20 -81
- package/dist/bin/hq-auth-refresh.d.ts +0 -2
- package/dist/bin/hq-auth-refresh.js +6 -12
- package/dist/commands/__fixtures__/access-vault.d.ts +0 -2
- package/dist/commands/__fixtures__/access-vault.js +1 -1
- package/dist/commands/_patterns.d.ts +0 -16
- package/dist/commands/_patterns.js +3 -20
- package/dist/commands/access.d.ts +1 -2
- package/dist/commands/access.js +49 -58
- package/dist/commands/agents.d.ts +4 -106
- package/dist/commands/agents.js +45 -924
- package/dist/commands/auth.d.ts +0 -1
- package/dist/commands/auth.js +19 -189
- package/dist/commands/billing.d.ts +0 -3
- package/dist/commands/billing.js +1 -6
- package/dist/commands/channels.js +1 -56
- package/dist/commands/cloud-demote.js +2 -3
- package/dist/commands/cloud-provision.d.ts +0 -14
- package/dist/commands/cloud-provision.js +58 -232
- package/dist/commands/cloud.d.ts +15 -49
- package/dist/commands/cloud.js +122 -357
- package/dist/commands/company-transfer.d.ts +28 -4
- package/dist/commands/company-transfer.js +49 -5
- package/dist/commands/company.js +3 -68
- package/dist/commands/core-checkpoint.d.ts +9 -19
- package/dist/commands/core-checkpoint.js +37 -301
- package/dist/commands/core.d.ts +0 -4
- package/dist/commands/core.js +80 -277
- package/dist/commands/crm.js +3 -52
- package/dist/commands/db-provision.js +4 -4
- package/dist/commands/db-sql.js +21 -7
- package/dist/commands/dm.d.ts +12 -119
- package/dist/commands/dm.js +38 -388
- package/dist/commands/doctor.d.ts +0 -12
- package/dist/commands/doctor.js +12 -158
- package/dist/commands/feedback.d.ts +0 -6
- package/dist/commands/feedback.js +37 -86
- package/dist/commands/files-browse.d.ts +12 -32
- package/dist/commands/files-browse.js +60 -176
- package/dist/commands/files.d.ts +0 -17
- package/dist/commands/files.js +47 -300
- package/dist/commands/group-grants.js +2 -3
- package/dist/commands/groups.js +5 -6
- package/dist/commands/index-cmd.d.ts +1 -19
- package/dist/commands/index-cmd.js +7 -74
- package/dist/commands/integrations-api.d.ts +10 -15
- package/dist/commands/integrations-api.js +22 -27
- package/dist/commands/integrations-connect.d.ts +13 -51
- package/dist/commands/integrations-connect.js +71 -86
- package/dist/commands/integrations-core.d.ts +6 -6
- package/dist/commands/integrations-core.js +11 -25
- package/dist/commands/integrations-import.d.ts +1 -1
- package/dist/commands/integrations-import.js +24 -43
- package/dist/commands/integrations-manage.js +13 -20
- package/dist/commands/integrations.d.ts +0 -8
- package/dist/commands/integrations.js +7 -94
- package/dist/commands/login.js +6 -49
- package/dist/commands/mcp-registration.d.ts +25 -32
- package/dist/commands/mcp-registration.js +23 -256
- package/dist/commands/mcp-status.js +0 -1
- package/dist/commands/meetings.js +34 -55
- package/dist/commands/members.js +1 -5
- package/dist/commands/mesh.d.ts +0 -11
- package/dist/commands/mesh.js +76 -1086
- package/dist/commands/onboard-identity-guard.d.ts +1 -1
- package/dist/commands/onboard.js +5 -24
- package/dist/commands/pack-install.js +1 -3
- package/dist/commands/packs.js +1 -11
- package/dist/commands/people.d.ts +0 -4
- package/dist/commands/people.js +3 -37
- package/dist/commands/publish.d.ts +1 -8
- package/dist/commands/publish.js +4 -17
- package/dist/commands/reindex.js +6 -56
- package/dist/commands/rescue.d.ts +0 -4
- package/dist/commands/rescue.js +17 -27
- package/dist/commands/run.js +4 -18
- package/dist/commands/safe-extract.d.ts +2 -11
- package/dist/commands/safe-extract.js +8 -36
- package/dist/commands/scaffold-fast.d.ts +41 -0
- package/dist/commands/scaffold-fast.js +57 -0
- package/dist/commands/secrets.d.ts +2 -20
- package/dist/commands/secrets.js +71 -175
- package/dist/commands/skill.d.ts +4 -35
- package/dist/commands/skill.js +18 -357
- package/dist/commands/sync-mode.d.ts +0 -11
- package/dist/commands/sync-mode.js +0 -30
- package/dist/commands/sync-narrow.js +5 -36
- package/dist/commands/team-sync.js +10 -71
- package/dist/commands/update.js +0 -6
- package/dist/commands/whoami.d.ts +0 -22
- package/dist/commands/whoami.js +4 -137
- package/dist/commands/workers.d.ts +14 -2
- package/dist/commands/workers.js +10 -7
- package/dist/fast-core.d.ts +7 -6
- package/dist/fast-core.js +24 -87
- package/dist/index.d.ts +4 -3
- package/dist/index.js +9 -59
- package/dist/lazy-commands.d.ts +44 -20
- package/dist/lazy-commands.js +58 -60
- package/dist/lib/company-skill-wrapper.d.ts +0 -1
- package/dist/lib/company-skill-wrapper.js +29 -121
- package/dist/lib/core-utils/codex-skill-bridge.d.ts +1 -2
- package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +1 -14
- package/dist/lib/core-utils/qmd-reindex-after-sync.js +17 -101
- package/dist/lib/core-utils/soft-timeout.js +1 -1
- package/dist/lib/core-utils/timeout-guard.d.ts +3 -3
- package/dist/lib/core-utils/timeout-guard.js +13 -28
- package/dist/lib/core-utils/token-usage-report.js +3 -17
- package/dist/lib/db/control-plane.js +0 -6
- package/dist/lib/db/local.d.ts +5 -0
- package/dist/lib/db/local.js +1 -1
- package/dist/lib/db/migrate.d.ts +12 -0
- 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 +10 -0
- package/dist/lib/db/sql.js +8 -4
- 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/checks/claude-wiring.js +1 -70
- package/dist/lib/doctor/checks/codex-wiring.d.ts +4 -0
- package/dist/lib/doctor/checks/codex-wiring.js +35 -3
- package/dist/lib/doctor/checks/grok-wiring.js +34 -1
- package/dist/lib/doctor/checks/integrations.js +0 -11
- package/dist/lib/doctor/checks/runtime-health.d.ts +17 -4
- package/dist/lib/doctor/checks/runtime-health.js +7 -20
- package/dist/lib/doctor/checks/sync-health.d.ts +0 -21
- package/dist/lib/doctor/checks/sync-health.js +2 -72
- package/dist/lib/doctor/checks/work-context.js +6 -20
- package/dist/lib/doctor/compat.d.ts +16 -0
- package/dist/lib/doctor/compat.js +3 -4
- package/dist/lib/doctor/deep/effects.js +3 -1
- package/dist/lib/doctor/deep/executor.d.ts +10 -4
- package/dist/lib/doctor/deep/executor.js +1 -1
- package/dist/lib/doctor/deep/parity.d.ts +29 -2
- package/dist/lib/doctor/deep/parity.js +7 -7
- package/dist/lib/doctor/deep/sandbox.d.ts +25 -7
- package/dist/lib/doctor/deep/sandbox.js +7 -5
- package/dist/lib/doctor/fix/apply.d.ts +8 -79
- package/dist/lib/doctor/fix/apply.js +80 -292
- package/dist/lib/doctor/fix/remediation.d.ts +6 -14
- package/dist/lib/doctor/fix/remediation.js +9 -49
- package/dist/lib/doctor/fixtures/schema.js +3 -1
- package/dist/lib/doctor/json-output.d.ts +1 -17
- package/dist/lib/doctor/json-output.js +2 -7
- package/dist/lib/doctor/platform.d.ts +26 -0
- package/dist/lib/doctor/platform.js +5 -5
- package/dist/lib/doctor/registry.d.ts +0 -14
- package/dist/lib/doctor/registry.js +0 -71
- package/dist/lib/doctor/report.js +1 -1
- package/dist/lib/doctor/types.d.ts +0 -5
- package/dist/lib/doctor/types.js +0 -20
- package/dist/lib/flag-registry-worker.js +1 -12
- package/dist/lib/flag-registry.d.ts +6 -26
- package/dist/lib/flag-registry.js +16 -133
- package/dist/lib/index-render/companies.d.ts +1 -4
- package/dist/lib/index-render/companies.js +3 -66
- package/dist/lib/index-render/company-knowledge.js +17 -80
- package/dist/lib/index-render/index.d.ts +0 -1
- package/dist/lib/index-render/index.js +1 -2
- package/dist/lib/index-render/projects.js +5 -82
- package/dist/lib/index-render/shared.d.ts +1 -13
- package/dist/lib/index-render/shared.js +2 -41
- package/dist/lib/mesh/api.d.ts +10 -103
- package/dist/lib/mesh/api.js +64 -334
- package/dist/lib/mesh/client.d.ts +2 -3
- package/dist/lib/mesh/client.js +7 -26
- package/dist/lib/mesh/live/backfill-held.d.ts +16 -67
- package/dist/lib/mesh/live/backfill-held.js +61 -415
- package/dist/lib/mesh/live/backoff.d.ts +2 -2
- package/dist/lib/mesh/live/backoff.js +3 -16
- package/dist/lib/mesh/live/daemon/board-refresh.d.ts +1 -7
- package/dist/lib/mesh/live/daemon/board-refresh.js +30 -78
- package/dist/lib/mesh/live/daemon/credentials.d.ts +10 -64
- package/dist/lib/mesh/live/daemon/credentials.js +20 -270
- package/dist/lib/mesh/live/daemon/doctor.d.ts +0 -53
- package/dist/lib/mesh/live/daemon/doctor.js +6 -190
- package/dist/lib/mesh/live/daemon/index.d.ts +10 -13
- package/dist/lib/mesh/live/daemon/index.js +6 -7
- package/dist/lib/mesh/live/daemon/install.d.ts +1 -255
- package/dist/lib/mesh/live/daemon/install.js +13 -811
- package/dist/lib/mesh/live/daemon/paths.d.ts +0 -2
- package/dist/lib/mesh/live/daemon/paths.js +0 -2
- package/dist/lib/mesh/live/daemon/presence.d.ts +5 -24
- package/dist/lib/mesh/live/daemon/presence.js +10 -79
- package/dist/lib/mesh/live/daemon/run.d.ts +2 -48
- package/dist/lib/mesh/live/daemon/run.js +33 -485
- package/dist/lib/mesh/live/daemon/state.d.ts +2 -19
- package/dist/lib/mesh/live/daemon/state.js +2 -34
- package/dist/lib/mesh/live/daemon/transcript-watch.d.ts +9 -45
- package/dist/lib/mesh/live/daemon/transcript-watch.js +31 -227
- package/dist/lib/mesh/live/emit-client.d.ts +0 -8
- package/dist/lib/mesh/live/emit-client.js +8 -23
- package/dist/lib/mesh/live/emit-evidence.d.ts +0 -19
- package/dist/lib/mesh/live/emit-evidence.js +2 -20
- package/dist/lib/mesh/live/emit.d.ts +0 -9
- package/dist/lib/mesh/live/emit.js +2 -28
- package/dist/lib/mesh/live/enqueue.d.ts +0 -5
- package/dist/lib/mesh/live/enqueue.js +0 -19
- package/dist/lib/mesh/live/flush.d.ts +5 -17
- package/dist/lib/mesh/live/flush.js +38 -391
- package/dist/lib/mesh/live/format-spool-line.d.ts +2 -5
- package/dist/lib/mesh/live/format-spool-line.js +0 -10
- package/dist/lib/mesh/live/paths.d.ts +0 -2
- package/dist/lib/mesh/live/paths.js +0 -4
- package/dist/lib/mesh/live/session-event.schema.json +1 -24
- package/dist/lib/mesh/live/session-events-client.d.ts +0 -2
- package/dist/lib/mesh/live/session-events-client.js +0 -26
- package/dist/lib/mesh/live/spool.d.ts +0 -19
- package/dist/lib/mesh/live/spool.js +3 -269
- 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/plan-limit-nag.d.ts +6 -102
- package/dist/lib/plan-limit-nag.js +43 -348
- package/dist/lib/scan-packages/index.d.ts +0 -2
- package/dist/lib/scan-packages/index.js +6 -168
- package/dist/lib/search-index/background.d.ts +1 -8
- package/dist/lib/search-index/background.js +200 -55
- package/dist/lib/search-index/index.d.ts +0 -12
- package/dist/lib/search-index/index.js +7 -153
- package/dist/lib/work-context/company.d.ts +20 -22
- package/dist/lib/work-context/company.js +40 -124
- package/dist/lib/work-context/config.d.ts +11 -58
- package/dist/lib/work-context/config.js +83 -334
- package/dist/lib/work-context/contract.d.ts +0 -13
- package/dist/lib/work-context/contract.schema.json +1 -3
- package/dist/lib/work-context/index.d.ts +25 -0
- package/dist/lib/work-context/index.js +21 -0
- package/dist/lib/work-context/outbox.d.ts +5 -27
- package/dist/lib/work-context/outbox.js +6 -135
- package/dist/lib/work-context/reconcile.d.ts +0 -15
- package/dist/lib/work-context/reconcile.js +29 -405
- package/dist/lib/work-context/state.d.ts +10 -93
- package/dist/lib/work-context/state.js +29 -342
- package/dist/lib/workers-registry/index.js +8 -62
- package/dist/main.d.ts +0 -32
- package/dist/main.js +73 -273
- package/dist/node-network-compat.d.ts +30 -2
- package/dist/node-network-compat.js +51 -4
- package/dist/node-preflight.d.ts +1 -7
- package/dist/node-preflight.js +5 -5
- package/dist/register-all.d.ts +29 -4
- package/dist/register-all.js +233 -4
- package/dist/run/discover-schemas.d.ts +1 -2
- package/dist/run/env-graph-guard.d.ts +2 -2
- package/dist/run/env-graph-guard.js +2 -5
- package/dist/run/hq-plugin.d.ts +0 -4
- package/dist/run/hq-plugin.js +8 -36
- package/dist/sentry-before-send.js +0 -80
- package/dist/sentry.d.ts +2 -8
- package/dist/sentry.js +13 -117
- package/dist/startup-registration.d.ts +2 -26
- package/dist/startup-registration.js +15 -116
- package/dist/utils/cli-telemetry.d.ts +1 -74
- package/dist/utils/cli-telemetry.js +7 -434
- package/dist/utils/client-health.d.ts +4 -0
- package/dist/utils/client-health.js +2 -2
- package/dist/utils/cognito-session.d.ts +0 -71
- package/dist/utils/cognito-session.js +27 -481
- package/dist/utils/contribution-table.d.ts +1 -1
- package/dist/utils/environmental-error.d.ts +0 -18
- package/dist/utils/environmental-error.js +7 -240
- package/dist/utils/expected-cli-error.d.ts +0 -2
- package/dist/utils/expected-cli-error.js +0 -4
- package/dist/utils/feedback-diagnostics.d.ts +1 -2
- package/dist/utils/feedback-log-bundle.d.ts +26 -51
- package/dist/utils/feedback-log-bundle.js +31 -211
- package/dist/utils/feedback-logs.d.ts +47 -18
- package/dist/utils/feedback-logs.js +21 -50
- package/dist/utils/feedback-screenshots.d.ts +1 -0
- package/dist/utils/feedback-screenshots.js +1 -1
- package/dist/utils/hq-roots.d.ts +2 -25
- package/dist/utils/hq-roots.js +7 -67
- package/dist/utils/incomplete-install-error.d.ts +19 -87
- package/dist/utils/incomplete-install-error.js +68 -319
- package/dist/utils/install-tree-torn.d.ts +24 -260
- package/dist/utils/install-tree-torn.js +51 -998
- package/dist/utils/large-file-guard.d.ts +10 -0
- package/dist/utils/large-file-guard.js +1 -1
- package/dist/utils/local-files-overview.d.ts +8 -4
- package/dist/utils/local-files-overview.js +7 -48
- package/dist/utils/login-provider.d.ts +0 -7
- package/dist/utils/login-provider.js +0 -34
- package/dist/utils/pack-contributions.d.ts +14 -2
- package/dist/utils/pack-contributions.js +44 -7
- package/dist/utils/package-root-diagnostics.d.ts +1 -1
- package/dist/utils/people.d.ts +11 -7
- package/dist/utils/people.js +20 -5
- package/dist/utils/plan-gate-error.d.ts +10 -52
- package/dist/utils/plan-gate-error.js +41 -364
- package/dist/utils/qmd-model-download-error.d.ts +8 -0
- package/dist/utils/qmd-model-download-error.js +1 -1
- package/dist/utils/qmd-query-document-error.d.ts +6 -0
- package/dist/utils/qmd-query-document-error.js +1 -1
- package/dist/utils/redact-error-text.d.ts +2 -0
- package/dist/utils/redact-error-text.js +2 -3
- package/dist/utils/run-bundled-script.d.ts +0 -6
- package/dist/utils/run-bundled-script.js +4 -117
- package/dist/utils/sandbox-runner-client.d.ts +1 -2
- package/dist/utils/secrets-cache.d.ts +3 -7
- package/dist/utils/secrets-cache.js +14 -162
- package/dist/utils/self-update.d.ts +1 -34
- package/dist/utils/self-update.js +42 -660
- package/dist/utils/sentry-fingerprint.d.ts +1 -23
- package/dist/utils/sentry-fingerprint.js +31 -223
- package/dist/utils/team-upgrade.d.ts +1 -1
- package/dist/utils/team-upgrade.js +3 -4
- package/dist/utils/vault-api.d.ts +1 -21
- package/dist/utils/vault-api.js +84 -251
- package/dist/utils/version-check.d.ts +1 -11
- package/dist/utils/version-check.js +3 -32
- package/dist/utils/version-gate.d.ts +17 -101
- package/dist/utils/version-gate.js +70 -645
- package/dist/utils/windows-spawn.d.ts +0 -6
- package/dist/utils/windows-spawn.js +0 -37
- package/package.json +8 -20
- package/README.md +0 -113
- package/assets/bot-workers/setup/context/USER-GUIDE.md +0 -404
- package/assets/bot-workers/setup/context/quick-reference.md +0 -199
- package/assets/bot-workers/setup/skills/agents-and-team.md +0 -167
- package/assets/bot-workers/setup/skills/explain-hq.md +0 -35
- package/assets/bot-workers/setup/skills/first-company.md +0 -74
- package/assets/bot-workers/setup/skills/joining-a-team.md +0 -125
- package/assets/bot-workers/setup/skills/pricing.md +0 -92
- package/assets/bot-workers/setup/skills/standing-help.md +0 -81
- package/assets/bot-workers/setup/skills/your-business.md +0 -281
- package/assets/bot-workers/setup/worker.yaml +0 -791
- package/assets/lanes-hooks/hq-lanes-drain.json +0 -15
- package/assets/lanes-hooks/hq-lanes-drain.mjs +0 -275
- package/assets/lanes-hooks/hq-lanes-drain.sh +0 -21
- package/assets/lanes-reconcile/hq-lanes-reconcile.service +0 -11
- package/assets/lanes-reconcile/hq-lanes-reconcile.timer +0 -12
- package/assets/scaffold/.claude/hooks/validate-policy-frontmatter.sh +0 -485
- package/assets/scaffold/core/scripts/audit-log.sh +0 -384
- package/assets/scaffold/core/scripts/clean-worktree-reconcile-handoff.sh +0 -171
- package/assets/scaffold/core/scripts/eval-trigger.sh +0 -193
- package/assets/scaffold/core/scripts/git-pack-extension-check.sh +0 -164
- package/assets/scaffold/core/scripts/handoff-finalize.sh +0 -688
- package/assets/scaffold/core/scripts/handoff-open-steps.sh +0 -81
- package/assets/scaffold/core/scripts/handoff-post.sh +0 -252
- package/assets/scaffold/core/scripts/hq-delegate-bundle.sh +0 -307
- package/assets/scaffold/core/scripts/hq-delegate-grant.sh +0 -252
- package/assets/scaffold/core/scripts/hq-delegate-pickup.sh +0 -99
- package/assets/scaffold/core/scripts/hq-delegate-publish.sh +0 -91
- package/assets/scaffold/core/scripts/hq-delegate-repo.sh +0 -158
- package/assets/scaffold/core/scripts/hq-delegate-resolve.sh +0 -145
- package/assets/scaffold/core/scripts/hq-delegate-secrets.sh +0 -129
- package/assets/scaffold/core/scripts/hq-delegate-send.sh +0 -259
- package/assets/scaffold/core/scripts/hq-delegate-transfer.sh +0 -175
- package/assets/scaffold/core/scripts/hq-delegate-verify.sh +0 -238
- package/assets/scaffold/core/scripts/hq-dm-bind.sh +0 -585
- package/assets/scaffold/core/scripts/hq-job-notify.sh +0 -389
- package/assets/scaffold/core/scripts/hq-job-probe.sh +0 -835
- package/assets/scaffold/core/scripts/hq-job-remediate.sh +0 -359
- package/assets/scaffold/core/scripts/hq-job-run.sh +0 -1025
- package/assets/scaffold/core/scripts/hq-pin.sh +0 -118
- package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +0 -310
- package/assets/scaffold/core/scripts/jobs-validate.sh +0 -451
- package/assets/scaffold/core/scripts/knowledge-prefs.sh +0 -55
- package/assets/scaffold/core/scripts/lib/portable.sh +0 -211
- package/assets/scaffold/core/scripts/lib/secret-patterns.sh +0 -58
- package/assets/scaffold/core/scripts/lib/work-mesh-live-hook.sh +0 -378
- package/assets/scaffold/core/scripts/lib/work-mesh-live-rebind.sh +0 -141
- package/assets/scaffold/core/scripts/migrate-policy-triggers.sh +0 -373
- package/assets/scaffold/core/scripts/ontology-audience-grant.sh +0 -81
- package/assets/scaffold/core/scripts/ontology-brief.mjs +0 -93
- package/assets/scaffold/core/scripts/ontology-candidate.sh +0 -100
- package/assets/scaffold/core/scripts/ontology-garden.mjs +0 -238
- package/assets/scaffold/core/scripts/ontology-source-worklist.sh +0 -79
- package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +0 -834
- package/assets/scaffold/core/scripts/policy-age-report.sh +0 -156
- package/assets/scaffold/core/scripts/policy-retire.sh +0 -199
- package/assets/scaffold/core/scripts/qmd-reindex-bg.sh +0 -40
- package/assets/scaffold/core/scripts/read-policy-frontmatter.sh +0 -32
- package/assets/scaffold/core/scripts/refresh-vault-access.sh +0 -188
- package/assets/scaffold/core/scripts/register-project.sh +0 -262
- package/assets/scaffold/core/scripts/resolve-company.sh +0 -199
- package/assets/scaffold/core/scripts/resume-thread-lock.sh +0 -285
- package/assets/scaffold/core/scripts/source-yaml-validate.sh +0 -36
- package/assets/scaffold/core/scripts/verify-story-deliverables.sh +0 -148
- package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +0 -152
- package/assets/scaffold/core/scripts/work-mesh-live-rebind.sh +0 -59
- package/assets/scaffold/core/scripts/worktree-gc.sh +0 -362
- package/contracts/preflight/v1/fixtures.json +0 -87
- package/contracts/preflight/v1/schema.json +0 -58
- package/dist/command-catalog.generated.d.ts +0 -10735
- package/dist/command-catalog.generated.js +0 -13836
- package/dist/command-registration-plan.d.ts +0 -474
- package/dist/command-registration-plan.js +0 -136
- package/dist/commands/agent-enroll.d.ts +0 -146
- package/dist/commands/agent-enroll.js +0 -401
- package/dist/commands/agent-inbox.d.ts +0 -9
- package/dist/commands/agent-inbox.js +0 -102
- package/dist/commands/agent-kit.d.ts +0 -87
- package/dist/commands/agent-kit.js +0 -480
- package/dist/commands/agent-mcp.d.ts +0 -24
- package/dist/commands/agent-mcp.js +0 -127
- package/dist/commands/agent-probe.d.ts +0 -77
- package/dist/commands/agent-probe.js +0 -335
- package/dist/commands/agent.d.ts +0 -13
- package/dist/commands/agent.js +0 -40
- package/dist/commands/billing-sponsor.d.ts +0 -83
- package/dist/commands/billing-sponsor.js +0 -344
- package/dist/commands/bot-companies.d.ts +0 -40
- package/dist/commands/bot-companies.js +0 -64
- package/dist/commands/bot-continuity.d.ts +0 -28
- package/dist/commands/bot-continuity.js +0 -68
- package/dist/commands/bot-jobs.d.ts +0 -127
- package/dist/commands/bot-jobs.js +0 -454
- package/dist/commands/bot.d.ts +0 -278
- package/dist/commands/bot.js +0 -1982
- package/dist/commands/cloud-retire.d.ts +0 -51
- package/dist/commands/cloud-retire.js +0 -154
- package/dist/commands/company-rename-flag.d.ts +0 -4
- package/dist/commands/company-rename-flag.js +0 -7
- package/dist/commands/company-rename.d.ts +0 -4
- package/dist/commands/company-rename.js +0 -90
- package/dist/commands/core-audit-log-native.d.ts +0 -9
- package/dist/commands/core-audit-log-native.js +0 -257
- package/dist/commands/core-checkpoint-gate-setting.d.ts +0 -59
- package/dist/commands/core-checkpoint-gate-setting.js +0 -163
- package/dist/commands/core-checkpoint-stop-gate-native.d.ts +0 -34
- package/dist/commands/core-checkpoint-stop-gate-native.js +0 -725
- package/dist/commands/core-command-catalog.d.ts +0 -34
- package/dist/commands/core-command-catalog.js +0 -62
- package/dist/commands/core-company-index-scope-flag.d.ts +0 -3
- package/dist/commands/core-company-index-scope-flag.js +0 -6
- package/dist/commands/core-delegate-w1b.d.ts +0 -10
- package/dist/commands/core-delegate-w1b.js +0 -1219
- package/dist/commands/core-delegate.d.ts +0 -46
- package/dist/commands/core-delegate.js +0 -1040
- package/dist/commands/core-dm-bind-native.d.ts +0 -32
- package/dist/commands/core-dm-bind-native.js +0 -668
- package/dist/commands/core-eval-trigger-native.d.ts +0 -4
- package/dist/commands/core-eval-trigger-native.js +0 -12
- package/dist/commands/core-git-pack-extension-check-native.d.ts +0 -22
- package/dist/commands/core-git-pack-extension-check-native.js +0 -190
- package/dist/commands/core-handoff-fast.d.ts +0 -18
- package/dist/commands/core-handoff-fast.js +0 -104
- package/dist/commands/core-handoff-open-steps.d.ts +0 -21
- package/dist/commands/core-handoff-open-steps.js +0 -264
- package/dist/commands/core-handoff.d.ts +0 -24
- package/dist/commands/core-handoff.js +0 -1144
- package/dist/commands/core-hq-session-native.d.ts +0 -39
- package/dist/commands/core-hq-session-native.js +0 -579
- package/dist/commands/core-job-native-utils.d.ts +0 -6
- package/dist/commands/core-job-native-utils.js +0 -80
- package/dist/commands/core-job-native.d.ts +0 -5
- package/dist/commands/core-job-native.js +0 -16
- package/dist/commands/core-job-notify-native.d.ts +0 -36
- package/dist/commands/core-job-notify-native.js +0 -359
- package/dist/commands/core-job-probe-native.d.ts +0 -45
- package/dist/commands/core-job-probe-native.js +0 -564
- package/dist/commands/core-job-remediate-native.d.ts +0 -26
- package/dist/commands/core-job-remediate-native.js +0 -374
- package/dist/commands/core-job-remote-launcher.d.ts +0 -7
- package/dist/commands/core-job-remote-launcher.js +0 -51
- package/dist/commands/core-job-run-native.d.ts +0 -47
- package/dist/commands/core-job-run-native.js +0 -1215
- package/dist/commands/core-jobs-native.d.ts +0 -25
- package/dist/commands/core-jobs-native.js +0 -1339
- package/dist/commands/core-knowledge-prefs.d.ts +0 -11
- package/dist/commands/core-knowledge-prefs.js +0 -137
- package/dist/commands/core-migrate-policy-triggers-native.d.ts +0 -21
- package/dist/commands/core-migrate-policy-triggers-native.js +0 -378
- package/dist/commands/core-native-handoff-flag.d.ts +0 -4
- package/dist/commands/core-native-handoff-flag.js +0 -7
- package/dist/commands/core-native-hook-helper-commands.d.ts +0 -4
- package/dist/commands/core-native-hook-helper-commands.js +0 -56
- package/dist/commands/core-native-hook-helpers-flag.d.ts +0 -4
- package/dist/commands/core-native-hook-helpers-flag.js +0 -7
- package/dist/commands/core-native-jobs-flag.d.ts +0 -4
- package/dist/commands/core-native-jobs-flag.js +0 -7
- package/dist/commands/core-native-policy-flag.d.ts +0 -9
- package/dist/commands/core-native-policy-flag.js +0 -12
- package/dist/commands/core-native-session-flag.d.ts +0 -4
- package/dist/commands/core-native-session-flag.js +0 -7
- package/dist/commands/core-native-utilities-flag.d.ts +0 -4
- package/dist/commands/core-native-utilities-flag.js +0 -7
- package/dist/commands/core-native-utilities.d.ts +0 -29
- package/dist/commands/core-native-utilities.js +0 -54
- package/dist/commands/core-native-worker-skills-flag.d.ts +0 -4
- package/dist/commands/core-native-worker-skills-flag.js +0 -7
- package/dist/commands/core-ontology-native.d.ts +0 -17
- package/dist/commands/core-ontology-native.js +0 -916
- package/dist/commands/core-ontology.d.ts +0 -66
- package/dist/commands/core-ontology.js +0 -430
- package/dist/commands/core-pin-native.d.ts +0 -14
- package/dist/commands/core-pin-native.js +0 -236
- package/dist/commands/core-policy-frontmatter.d.ts +0 -8
- package/dist/commands/core-policy-frontmatter.js +0 -52
- package/dist/commands/core-policy.d.ts +0 -14
- package/dist/commands/core-policy.js +0 -1018
- package/dist/commands/core-refresh-vault-access-native.d.ts +0 -20
- package/dist/commands/core-refresh-vault-access-native.js +0 -229
- package/dist/commands/core-register-project-native.d.ts +0 -30
- package/dist/commands/core-register-project-native.js +0 -347
- package/dist/commands/core-resolve-company-command.d.ts +0 -4
- package/dist/commands/core-resolve-company-command.js +0 -42
- package/dist/commands/core-resolve-company-native.d.ts +0 -28
- package/dist/commands/core-resolve-company-native.js +0 -408
- package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +0 -32
- package/dist/commands/core-work-mesh-bind-trusted-native.js +0 -190
- package/dist/commands/core-work-mesh-live-rebind-native.d.ts +0 -18
- package/dist/commands/core-work-mesh-live-rebind-native.js +0 -262
- package/dist/commands/core-worker-lint-native.d.ts +0 -4
- package/dist/commands/core-worker-lint-native.js +0 -160
- package/dist/commands/core-worker-share-native.d.ts +0 -4
- package/dist/commands/core-worker-share-native.js +0 -260
- package/dist/commands/core-worker-skills-command.d.ts +0 -8
- package/dist/commands/core-worker-skills-command.js +0 -33
- package/dist/commands/core-worker-skills-runtime.d.ts +0 -33
- package/dist/commands/core-worker-skills-runtime.js +0 -86
- package/dist/commands/daemon.d.ts +0 -63
- package/dist/commands/daemon.js +0 -877
- package/dist/commands/deploy-comments.d.ts +0 -3
- package/dist/commands/deploy-comments.js +0 -162
- package/dist/commands/lanes-accounts.d.ts +0 -28
- package/dist/commands/lanes-accounts.js +0 -595
- package/dist/commands/lanes-autopilot.d.ts +0 -11
- package/dist/commands/lanes-autopilot.js +0 -336
- package/dist/commands/lanes-checks.d.ts +0 -51
- package/dist/commands/lanes-checks.js +0 -941
- package/dist/commands/lanes-hold.d.ts +0 -43
- package/dist/commands/lanes-hold.js +0 -655
- package/dist/commands/lanes-kpis.d.ts +0 -11
- package/dist/commands/lanes-kpis.js +0 -34
- package/dist/commands/lanes-message.d.ts +0 -9
- package/dist/commands/lanes-message.js +0 -937
- package/dist/commands/lanes-move.d.ts +0 -12
- package/dist/commands/lanes-move.js +0 -397
- package/dist/commands/lanes-questions.d.ts +0 -36
- package/dist/commands/lanes-questions.js +0 -1005
- package/dist/commands/lanes-report.d.ts +0 -11
- package/dist/commands/lanes-report.js +0 -333
- package/dist/commands/lanes-resume.d.ts +0 -6
- package/dist/commands/lanes-resume.js +0 -564
- package/dist/commands/lanes-review.d.ts +0 -10
- package/dist/commands/lanes-review.js +0 -56
- package/dist/commands/lanes-shared.d.ts +0 -448
- package/dist/commands/lanes-shared.js +0 -170
- package/dist/commands/lanes-stories.d.ts +0 -15
- package/dist/commands/lanes-stories.js +0 -347
- package/dist/commands/lanes-watch.d.ts +0 -7
- package/dist/commands/lanes-watch.js +0 -216
- package/dist/commands/lanes.d.ts +0 -149
- package/dist/commands/lanes.js +0 -8973
- package/dist/commands/monitor.d.ts +0 -58
- package/dist/commands/monitor.js +0 -980
- package/dist/commands/onboard-bot-membership.d.ts +0 -32
- package/dist/commands/onboard-bot-membership.js +0 -40
- package/dist/commands/onboard-create-identity.d.ts +0 -26
- package/dist/commands/onboard-create-identity.js +0 -23
- package/dist/commands/outpost-pruner.d.ts +0 -3
- package/dist/commands/outpost-pruner.js +0 -125
- package/dist/commands/personal-connector-settings-flag.d.ts +0 -4
- package/dist/commands/personal-connector-settings-flag.js +0 -7
- package/dist/commands/personal-targeted-push-flag.d.ts +0 -4
- package/dist/commands/personal-targeted-push-flag.js +0 -7
- package/dist/commands/personal-targeted-push-paths.d.ts +0 -3
- package/dist/commands/personal-targeted-push-paths.js +0 -67
- package/dist/commands/report.d.ts +0 -19
- package/dist/commands/report.js +0 -537
- package/dist/commands/run-feature-telemetry.d.ts +0 -3
- package/dist/commands/run-feature-telemetry.js +0 -6
- package/dist/commands/staff/reset-test-account.d.ts +0 -110
- package/dist/commands/staff/reset-test-account.js +0 -268
- package/dist/commands/staff/test-account.d.ts +0 -51
- package/dist/commands/staff/test-account.js +0 -196
- package/dist/commands/vault-retention-flag.d.ts +0 -3
- package/dist/commands/vault-retention-flag.js +0 -9
- package/dist/commands/vault-retention.d.ts +0 -11
- package/dist/commands/vault-retention.js +0 -69
- package/dist/commands/version.d.ts +0 -10
- package/dist/commands/version.js +0 -11
- package/dist/fast-scaffold.d.ts +0 -86
- package/dist/fast-scaffold.js +0 -364
- package/dist/lanes-drain-hook.d.ts +0 -14
- package/dist/lanes-drain-hook.js +0 -203
- package/dist/lib/agent-kit/adopt-identity.d.ts +0 -27
- package/dist/lib/agent-kit/adopt-identity.js +0 -60
- package/dist/lib/agent-kit/attachment-download.d.ts +0 -24
- package/dist/lib/agent-kit/attachment-download.js +0 -47
- package/dist/lib/agent-kit/creds.d.ts +0 -106
- package/dist/lib/agent-kit/creds.js +0 -163
- package/dist/lib/agent-kit/fallback.d.ts +0 -78
- package/dist/lib/agent-kit/fallback.js +0 -210
- package/dist/lib/agent-kit/inbox-state.d.ts +0 -83
- package/dist/lib/agent-kit/inbox-state.js +0 -159
- package/dist/lib/agent-kit/kit-config.d.ts +0 -56
- package/dist/lib/agent-kit/kit-config.js +0 -65
- package/dist/lib/agent-kit/log.d.ts +0 -16
- package/dist/lib/agent-kit/log.js +0 -46
- package/dist/lib/agent-kit/mcp/attachments.d.ts +0 -126
- package/dist/lib/agent-kit/mcp/attachments.js +0 -222
- package/dist/lib/agent-kit/mcp/jsonrpc.d.ts +0 -75
- package/dist/lib/agent-kit/mcp/jsonrpc.js +0 -164
- package/dist/lib/agent-kit/mcp/tools.d.ts +0 -64
- package/dist/lib/agent-kit/mcp/tools.js +0 -397
- package/dist/lib/agent-kit/paths.d.ts +0 -65
- package/dist/lib/agent-kit/paths.js +0 -118
- package/dist/lib/agent-kit/private-file.d.ts +0 -29
- package/dist/lib/agent-kit/private-file.js +0 -91
- package/dist/lib/agent-kit/run/heartbeat.d.ts +0 -72
- package/dist/lib/agent-kit/run/heartbeat.js +0 -128
- package/dist/lib/agent-kit/run/inbox.d.ts +0 -76
- package/dist/lib/agent-kit/run/inbox.js +0 -205
- package/dist/lib/agent-kit/run/supervisor.d.ts +0 -35
- package/dist/lib/agent-kit/run/supervisor.js +0 -85
- package/dist/lib/agent-kit/run/sync.d.ts +0 -33
- package/dist/lib/agent-kit/run/sync.js +0 -58
- package/dist/lib/agent-kit/services.d.ts +0 -31
- package/dist/lib/agent-kit/services.js +0 -55
- package/dist/lib/agent-kit/skills.d.ts +0 -18
- package/dist/lib/agent-kit/skills.js +0 -151
- package/dist/lib/agent-kit/wake.d.ts +0 -83
- package/dist/lib/agent-kit/wake.js +0 -243
- package/dist/lib/agents/model-catalog.d.ts +0 -62
- package/dist/lib/agents/model-catalog.js +0 -275
- package/dist/lib/auth-login-provider-state.d.ts +0 -8
- package/dist/lib/auth-login-provider-state.js +0 -63
- package/dist/lib/aws-sdk-node-warning-output.d.ts +0 -12
- package/dist/lib/aws-sdk-node-warning-output.js +0 -22
- package/dist/lib/billing/free-month.d.ts +0 -18
- package/dist/lib/billing/free-month.js +0 -31
- package/dist/lib/billing/plan-limit-refusals.d.ts +0 -69
- package/dist/lib/billing/plan-limit-refusals.js +0 -187
- package/dist/lib/billing/plan-limit-upgrade-url.d.ts +0 -11
- package/dist/lib/billing/plan-limit-upgrade-url.js +0 -66
- package/dist/lib/billing/plan-lock.d.ts +0 -143
- package/dist/lib/billing/plan-lock.js +0 -439
- package/dist/lib/bot/api.d.ts +0 -349
- package/dist/lib/bot/api.js +0 -316
- package/dist/lib/bot/attachments.d.ts +0 -45
- package/dist/lib/bot/attachments.js +0 -89
- package/dist/lib/bot/cli-update.d.ts +0 -138
- package/dist/lib/bot/cli-update.js +0 -278
- package/dist/lib/bot/company-bind.d.ts +0 -27
- package/dist/lib/bot/company-bind.js +0 -62
- package/dist/lib/bot/config.d.ts +0 -153
- package/dist/lib/bot/config.js +0 -233
- package/dist/lib/bot/continuity-download.d.ts +0 -28
- package/dist/lib/bot/continuity-download.js +0 -75
- package/dist/lib/bot/continuity-install.d.ts +0 -14
- package/dist/lib/bot/continuity-install.js +0 -101
- package/dist/lib/bot/continuity.d.ts +0 -67
- package/dist/lib/bot/continuity.js +0 -301
- package/dist/lib/bot/creds.d.ts +0 -24
- package/dist/lib/bot/creds.js +0 -51
- package/dist/lib/bot/daemon.d.ts +0 -173
- package/dist/lib/bot/daemon.js +0 -552
- package/dist/lib/bot/inbox-poll-backoff-flag.d.ts +0 -24
- package/dist/lib/bot/inbox-poll-backoff-flag.js +0 -135
- package/dist/lib/bot/inbox-state.d.ts +0 -18
- package/dist/lib/bot/inbox-state.js +0 -51
- package/dist/lib/bot/index.d.ts +0 -23
- package/dist/lib/bot/index.js +0 -23
- package/dist/lib/bot/inflight.d.ts +0 -119
- package/dist/lib/bot/inflight.js +0 -83
- package/dist/lib/bot/job-completions.d.ts +0 -89
- package/dist/lib/bot/job-completions.js +0 -132
- package/dist/lib/bot/job-run.d.ts +0 -109
- package/dist/lib/bot/job-run.js +0 -246
- package/dist/lib/bot/local-config.d.ts +0 -61
- package/dist/lib/bot/local-config.js +0 -145
- package/dist/lib/bot/local-jobs.d.ts +0 -89
- package/dist/lib/bot/local-jobs.js +0 -459
- package/dist/lib/bot/local-name.d.ts +0 -54
- package/dist/lib/bot/local-name.js +0 -114
- package/dist/lib/bot/log.d.ts +0 -13
- package/dist/lib/bot/log.js +0 -59
- package/dist/lib/bot/owner-context.d.ts +0 -79
- package/dist/lib/bot/owner-context.js +0 -175
- package/dist/lib/bot/paths.d.ts +0 -76
- package/dist/lib/bot/paths.js +0 -131
- package/dist/lib/bot/progress.d.ts +0 -132
- package/dist/lib/bot/progress.js +0 -289
- package/dist/lib/bot/promote.d.ts +0 -16
- package/dist/lib/bot/promote.js +0 -106
- package/dist/lib/bot/promotion-hold.d.ts +0 -24
- package/dist/lib/bot/promotion-hold.js +0 -103
- package/dist/lib/bot/promotion-receipt.d.ts +0 -9
- package/dist/lib/bot/promotion-receipt.js +0 -56
- package/dist/lib/bot/promotion-upload.d.ts +0 -16
- package/dist/lib/bot/promotion-upload.js +0 -80
- package/dist/lib/bot/prompt.d.ts +0 -136
- package/dist/lib/bot/prompt.js +0 -433
- package/dist/lib/bot/room-policy.d.ts +0 -63
- package/dist/lib/bot/room-policy.js +0 -91
- package/dist/lib/bot/run.d.ts +0 -217
- package/dist/lib/bot/run.js +0 -1869
- package/dist/lib/bot/runnable.d.ts +0 -51
- package/dist/lib/bot/runnable.js +0 -65
- package/dist/lib/bot/runtime/claude.d.ts +0 -50
- package/dist/lib/bot/runtime/claude.js +0 -170
- package/dist/lib/bot/runtime/codex.d.ts +0 -28
- package/dist/lib/bot/runtime/codex.js +0 -153
- package/dist/lib/bot/runtime/grok-acp.d.ts +0 -40
- package/dist/lib/bot/runtime/grok-acp.js +0 -265
- package/dist/lib/bot/runtime/grok.d.ts +0 -41
- package/dist/lib/bot/runtime/grok.js +0 -169
- package/dist/lib/bot/runtime/index.d.ts +0 -36
- package/dist/lib/bot/runtime/index.js +0 -417
- package/dist/lib/bot/runtime/messages-stream.d.ts +0 -56
- package/dist/lib/bot/runtime/messages-stream.js +0 -194
- package/dist/lib/bot/runtime/sanitize.d.ts +0 -18
- package/dist/lib/bot/runtime/sanitize.js +0 -28
- package/dist/lib/bot/runtime/types.d.ts +0 -159
- package/dist/lib/bot/runtime/types.js +0 -51
- package/dist/lib/bot/runtime/windows.d.ts +0 -10
- package/dist/lib/bot/runtime/windows.js +0 -53
- package/dist/lib/bot/runtime-sign-in.d.ts +0 -24
- package/dist/lib/bot/runtime-sign-in.js +0 -31
- package/dist/lib/bot/scaffold.d.ts +0 -38
- package/dist/lib/bot/scaffold.js +0 -94
- package/dist/lib/bot/self-heal.d.ts +0 -52
- package/dist/lib/bot/self-heal.js +0 -79
- package/dist/lib/bot/self-process.d.ts +0 -19
- package/dist/lib/bot/self-process.js +0 -35
- package/dist/lib/bot/session.d.ts +0 -19
- package/dist/lib/bot/session.js +0 -39
- package/dist/lib/bot/setup-explain.d.ts +0 -64
- package/dist/lib/bot/setup-explain.js +0 -141
- package/dist/lib/bot/split.d.ts +0 -32
- package/dist/lib/bot/split.js +0 -241
- package/dist/lib/bot/status.d.ts +0 -57
- package/dist/lib/bot/status.js +0 -66
- package/dist/lib/bot/worker-source.d.ts +0 -66
- package/dist/lib/bot/worker-source.js +0 -283
- package/dist/lib/checkpoint-ontology/aliases.d.ts +0 -17
- package/dist/lib/checkpoint-ontology/aliases.js +0 -44
- package/dist/lib/checkpoint-ontology/apply.d.ts +0 -110
- package/dist/lib/checkpoint-ontology/apply.js +0 -777
- package/dist/lib/checkpoint-ontology/company-brief.d.ts +0 -18
- package/dist/lib/checkpoint-ontology/company-brief.js +0 -337
- package/dist/lib/checkpoint-ontology/company.d.ts +0 -44
- package/dist/lib/checkpoint-ontology/company.js +0 -118
- package/dist/lib/checkpoint-ontology/drop-aliases.d.ts +0 -41
- package/dist/lib/checkpoint-ontology/drop-aliases.js +0 -76
- package/dist/lib/checkpoint-ontology/entity-file.d.ts +0 -109
- package/dist/lib/checkpoint-ontology/entity-file.js +0 -371
- package/dist/lib/checkpoint-ontology/identity.d.ts +0 -38
- package/dist/lib/checkpoint-ontology/identity.js +0 -95
- package/dist/lib/checkpoint-ontology/merge-copies.d.ts +0 -199
- package/dist/lib/checkpoint-ontology/merge-copies.js +0 -1086
- package/dist/lib/checkpoint-ontology/multi-writer.d.ts +0 -101
- package/dist/lib/checkpoint-ontology/multi-writer.js +0 -394
- package/dist/lib/checkpoint-ontology/plan.d.ts +0 -193
- package/dist/lib/checkpoint-ontology/plan.js +0 -504
- package/dist/lib/checkpoint-ontology/queued-touches.d.ts +0 -29
- package/dist/lib/checkpoint-ontology/queued-touches.js +0 -193
- package/dist/lib/checkpoint-ontology/sync-client.d.ts +0 -38
- package/dist/lib/checkpoint-ontology/sync-client.js +0 -84
- package/dist/lib/checkpoint-ontology/tree.d.ts +0 -55
- package/dist/lib/checkpoint-ontology/tree.js +0 -198
- package/dist/lib/company-errors-sdk-warning-flag.d.ts +0 -5
- package/dist/lib/company-errors-sdk-warning-flag.js +0 -8
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.d.ts +0 -20
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.js +0 -81
- package/dist/lib/core-utils/jq-json-serializer.d.ts +0 -5
- package/dist/lib/core-utils/jq-json-serializer.js +0 -10
- package/dist/lib/core-utils/secret-patterns.d.ts +0 -43
- package/dist/lib/core-utils/secret-patterns.js +0 -34
- package/dist/lib/core-utils/sentry-report.d.ts +0 -114
- package/dist/lib/core-utils/sentry-report.js +0 -1034
- package/dist/lib/core-utils/timeout-guard-native.d.ts +0 -7
- package/dist/lib/core-utils/timeout-guard-native.js +0 -40
- package/dist/lib/core-utils/worktree-resume.d.ts +0 -20
- package/dist/lib/core-utils/worktree-resume.js +0 -1198
- package/dist/lib/daemon/catalog.d.ts +0 -134
- package/dist/lib/daemon/catalog.js +0 -358
- package/dist/lib/daemon/config.d.ts +0 -35
- package/dist/lib/daemon/config.js +0 -108
- package/dist/lib/daemon/flag.d.ts +0 -25
- package/dist/lib/daemon/flag.js +0 -59
- package/dist/lib/daemon/handoff.d.ts +0 -56
- package/dist/lib/daemon/handoff.js +0 -161
- package/dist/lib/daemon/hq-cloud.d.ts +0 -79
- package/dist/lib/daemon/hq-cloud.js +0 -183
- package/dist/lib/daemon/install.d.ts +0 -85
- package/dist/lib/daemon/install.js +0 -320
- package/dist/lib/daemon/legacy-sync-env.d.ts +0 -10
- package/dist/lib/daemon/legacy-sync-env.js +0 -58
- package/dist/lib/daemon/legacy.d.ts +0 -45
- package/dist/lib/daemon/legacy.js +0 -133
- package/dist/lib/daemon/lock.d.ts +0 -47
- package/dist/lib/daemon/lock.js +0 -138
- package/dist/lib/daemon/machine-type.d.ts +0 -50
- package/dist/lib/daemon/machine-type.js +0 -159
- package/dist/lib/daemon/migrate.d.ts +0 -77
- package/dist/lib/daemon/migrate.js +0 -265
- package/dist/lib/daemon/paths.d.ts +0 -24
- package/dist/lib/daemon/paths.js +0 -43
- package/dist/lib/daemon/protocol-tail.d.ts +0 -33
- package/dist/lib/daemon/protocol-tail.js +0 -131
- package/dist/lib/daemon/remote-control.d.ts +0 -74
- package/dist/lib/daemon/remote-control.js +0 -153
- package/dist/lib/daemon/requests.d.ts +0 -28
- package/dist/lib/daemon/requests.js +0 -65
- package/dist/lib/daemon/run.d.ts +0 -79
- package/dist/lib/daemon/run.js +0 -755
- package/dist/lib/daemon/succession.d.ts +0 -118
- package/dist/lib/daemon/succession.js +0 -263
- package/dist/lib/daemon/supervisor.d.ts +0 -132
- package/dist/lib/daemon/supervisor.js +0 -836
- package/dist/lib/daemon/sync-runner.d.ts +0 -58
- package/dist/lib/daemon/sync-runner.js +0 -277
- package/dist/lib/daemon/tools.d.ts +0 -52
- package/dist/lib/daemon/tools.js +0 -95
- package/dist/lib/daemon/updater.d.ts +0 -57
- package/dist/lib/daemon/updater.js +0 -163
- package/dist/lib/deploy-api.d.ts +0 -5
- package/dist/lib/deploy-api.js +0 -21
- package/dist/lib/deploy-apps.d.ts +0 -13
- package/dist/lib/deploy-apps.js +0 -29
- package/dist/lib/doctor/__testing__/run-doctor.d.ts +0 -8
- package/dist/lib/doctor/__testing__/run-doctor.js +0 -52
- package/dist/lib/doctor/checks/bots.d.ts +0 -13
- package/dist/lib/doctor/checks/bots.js +0 -189
- package/dist/lib/doctor/checks/scaffold-cli-floor.d.ts +0 -6
- package/dist/lib/doctor/checks/scaffold-cli-floor.js +0 -73
- package/dist/lib/doctor/checks/sync-runtime.d.ts +0 -11
- package/dist/lib/doctor/checks/sync-runtime.js +0 -216
- package/dist/lib/doctor/client-health-flag-token.d.ts +0 -15
- package/dist/lib/doctor/client-health-flag-token.js +0 -66
- package/dist/lib/doctor/client-health-reason-codes-flag.d.ts +0 -27
- package/dist/lib/doctor/client-health-reason-codes-flag.js +0 -106
- package/dist/lib/doctor/fix/json-output.d.ts +0 -28
- package/dist/lib/doctor/fix/json-output.js +0 -33
- package/dist/lib/doctor/fix/refresh-sync-outcome.d.ts +0 -12
- package/dist/lib/doctor/fix/refresh-sync-outcome.js +0 -25
- package/dist/lib/doctor/shared.d.ts +0 -8
- package/dist/lib/doctor/shared.js +0 -38
- package/dist/lib/doctor/stray-gate-entries.d.ts +0 -35
- package/dist/lib/doctor/stray-gate-entries.js +0 -83
- package/dist/lib/first-sync-next-step.d.ts +0 -37
- package/dist/lib/first-sync-next-step.js +0 -189
- package/dist/lib/flag-registry-endpoint.d.ts +0 -5
- package/dist/lib/flag-registry-endpoint.js +0 -9
- package/dist/lib/flag-registry-worker-source.generated.d.ts +0 -2
- package/dist/lib/flag-registry-worker-source.generated.js +0 -3
- package/dist/lib/flag-snapshot-file.d.ts +0 -20
- package/dist/lib/flag-snapshot-file.js +0 -91
- package/dist/lib/heartbeat-identity.d.ts +0 -30
- package/dist/lib/heartbeat-identity.js +0 -76
- package/dist/lib/lanes/account-home.d.ts +0 -8
- package/dist/lib/lanes/account-home.js +0 -10
- package/dist/lib/lanes/accounts.d.ts +0 -117
- package/dist/lib/lanes/accounts.js +0 -366
- package/dist/lib/lanes/admission-host.d.ts +0 -22
- package/dist/lib/lanes/admission-host.js +0 -37
- package/dist/lib/lanes/admission.d.ts +0 -26
- package/dist/lib/lanes/admission.js +0 -210
- package/dist/lib/lanes/approval-gate.d.ts +0 -8
- package/dist/lib/lanes/approval-gate.js +0 -90
- package/dist/lib/lanes/autopilot-metrics.d.ts +0 -99
- package/dist/lib/lanes/autopilot-metrics.js +0 -301
- package/dist/lib/lanes/autopilot-registry.d.ts +0 -62
- package/dist/lib/lanes/autopilot-registry.js +0 -192
- package/dist/lib/lanes/autopilot.d.ts +0 -120
- package/dist/lib/lanes/autopilot.js +0 -1061
- package/dist/lib/lanes/blocker-freshness.d.ts +0 -31
- package/dist/lib/lanes/blocker-freshness.js +0 -168
- package/dist/lib/lanes/checked-company-path.d.ts +0 -3
- package/dist/lib/lanes/checked-company-path.js +0 -39
- package/dist/lib/lanes/claude-balance.d.ts +0 -97
- package/dist/lib/lanes/claude-balance.js +0 -319
- package/dist/lib/lanes/compaction.d.ts +0 -110
- package/dist/lib/lanes/compaction.js +0 -293
- package/dist/lib/lanes/config.d.ts +0 -94
- package/dist/lib/lanes/config.js +0 -606
- package/dist/lib/lanes/constants.d.ts +0 -3
- package/dist/lib/lanes/constants.js +0 -3
- package/dist/lib/lanes/delivery-core.d.ts +0 -15
- package/dist/lib/lanes/delivery-core.js +0 -21
- package/dist/lib/lanes/delivery.d.ts +0 -180
- package/dist/lib/lanes/delivery.js +0 -443
- package/dist/lib/lanes/disk-guard.d.ts +0 -66
- package/dist/lib/lanes/disk-guard.js +0 -172
- package/dist/lib/lanes/dropbox.d.ts +0 -129
- package/dist/lib/lanes/dropbox.js +0 -601
- package/dist/lib/lanes/effort.d.ts +0 -51
- package/dist/lib/lanes/effort.js +0 -113
- package/dist/lib/lanes/envelope-repair-dispatch.d.ts +0 -26
- package/dist/lib/lanes/envelope-repair-dispatch.js +0 -74
- package/dist/lib/lanes/errors.d.ts +0 -39
- package/dist/lib/lanes/errors.js +0 -72
- package/dist/lib/lanes/flag-keys.d.ts +0 -15
- package/dist/lib/lanes/flag-keys.js +0 -15
- package/dist/lib/lanes/grants.d.ts +0 -30
- package/dist/lib/lanes/grants.js +0 -171
- package/dist/lib/lanes/hire-grant-dispatch.d.ts +0 -29
- package/dist/lib/lanes/hire-grant-dispatch.js +0 -315
- package/dist/lib/lanes/hooks-install.d.ts +0 -82
- package/dist/lib/lanes/hooks-install.js +0 -479
- package/dist/lib/lanes/host-capacity.d.ts +0 -69
- package/dist/lib/lanes/host-capacity.js +0 -254
- package/dist/lib/lanes/hq-root.d.ts +0 -19
- package/dist/lib/lanes/hq-root.js +0 -28
- package/dist/lib/lanes/index.d.ts +0 -76
- package/dist/lib/lanes/index.js +0 -42
- package/dist/lib/lanes/keep-alive.d.ts +0 -68
- package/dist/lib/lanes/keep-alive.js +0 -343
- package/dist/lib/lanes/kr-freshness.d.ts +0 -76
- package/dist/lib/lanes/kr-freshness.js +0 -413
- package/dist/lib/lanes/lane-company.d.ts +0 -10
- package/dist/lib/lanes/lane-company.js +0 -41
- package/dist/lib/lanes/liveness.d.ts +0 -108
- package/dist/lib/lanes/liveness.js +0 -396
- package/dist/lib/lanes/machine-identity.d.ts +0 -34
- package/dist/lib/lanes/machine-identity.js +0 -92
- package/dist/lib/lanes/manager-status-gate.d.ts +0 -17
- package/dist/lib/lanes/manager-status-gate.js +0 -133
- package/dist/lib/lanes/merge-command.d.ts +0 -15
- package/dist/lib/lanes/merge-command.js +0 -629
- package/dist/lib/lanes/mesh-events.d.ts +0 -127
- package/dist/lib/lanes/mesh-events.js +0 -564
- package/dist/lib/lanes/message-replay.d.ts +0 -21
- package/dist/lib/lanes/message-replay.js +0 -122
- package/dist/lib/lanes/models.d.ts +0 -86
- package/dist/lib/lanes/models.js +0 -234
- package/dist/lib/lanes/monitor.d.ts +0 -48
- package/dist/lib/lanes/monitor.js +0 -428
- package/dist/lib/lanes/move-account.d.ts +0 -56
- package/dist/lib/lanes/move-account.js +0 -193
- package/dist/lib/lanes/orphans.d.ts +0 -25
- package/dist/lib/lanes/orphans.js +0 -102
- package/dist/lib/lanes/outpost-dispatch.d.ts +0 -147
- package/dist/lib/lanes/outpost-dispatch.js +0 -271
- package/dist/lib/lanes/outpost-hire-cache.d.ts +0 -22
- package/dist/lib/lanes/outpost-hire-cache.js +0 -153
- package/dist/lib/lanes/outpost-identity.d.ts +0 -33
- package/dist/lib/lanes/outpost-identity.js +0 -59
- package/dist/lib/lanes/outpost-profile-repin.d.ts +0 -17
- package/dist/lib/lanes/outpost-profile-repin.js +0 -84
- package/dist/lib/lanes/outpost-pruner-install.d.ts +0 -37
- package/dist/lib/lanes/outpost-pruner-install.js +0 -238
- package/dist/lib/lanes/outpost-registry-worker-approval.d.ts +0 -18
- package/dist/lib/lanes/outpost-registry-worker-approval.js +0 -109
- package/dist/lib/lanes/outpost-snapshot-memo.d.ts +0 -6
- package/dist/lib/lanes/outpost-snapshot-memo.js +0 -14
- package/dist/lib/lanes/outpost-worktree-pruner-flag.d.ts +0 -19
- package/dist/lib/lanes/outpost-worktree-pruner-flag.js +0 -86
- package/dist/lib/lanes/outpost-worktree-pruner.d.ts +0 -62
- package/dist/lib/lanes/outpost-worktree-pruner.js +0 -1201
- package/dist/lib/lanes/profile.d.ts +0 -69
- package/dist/lib/lanes/profile.js +0 -552
- package/dist/lib/lanes/provider-rejection.d.ts +0 -86
- package/dist/lib/lanes/provider-rejection.js +0 -286
- package/dist/lib/lanes/questions.d.ts +0 -90
- package/dist/lib/lanes/questions.js +0 -384
- package/dist/lib/lanes/quota.d.ts +0 -134
- package/dist/lib/lanes/quota.js +0 -471
- package/dist/lib/lanes/reconcile-install.d.ts +0 -90
- package/dist/lib/lanes/reconcile-install.js +0 -257
- package/dist/lib/lanes/reconcile.d.ts +0 -161
- package/dist/lib/lanes/reconcile.js +0 -3324
- package/dist/lib/lanes/registry-flag.d.ts +0 -35
- package/dist/lib/lanes/registry-flag.js +0 -164
- package/dist/lib/lanes/registry-persona.d.ts +0 -20
- package/dist/lib/lanes/registry-persona.js +0 -329
- package/dist/lib/lanes/registry.d.ts +0 -122
- package/dist/lib/lanes/registry.js +0 -570
- package/dist/lib/lanes/reviews.d.ts +0 -38
- package/dist/lib/lanes/reviews.js +0 -395
- package/dist/lib/lanes/runaway-tool-guard.d.ts +0 -38
- package/dist/lib/lanes/runaway-tool-guard.js +0 -284
- package/dist/lib/lanes/session-relink.d.ts +0 -25
- package/dist/lib/lanes/session-relink.js +0 -216
- package/dist/lib/lanes/spawn.d.ts +0 -355
- package/dist/lib/lanes/spawn.js +0 -2668
- package/dist/lib/lanes/ssm-command-context.d.ts +0 -12
- package/dist/lib/lanes/ssm-command-context.js +0 -52
- package/dist/lib/lanes/store.d.ts +0 -91
- package/dist/lib/lanes/store.js +0 -1822
- package/dist/lib/lanes/stories.d.ts +0 -23
- package/dist/lib/lanes/stories.js +0 -92
- package/dist/lib/lanes/story-ledger.d.ts +0 -80
- package/dist/lib/lanes/story-ledger.js +0 -815
- package/dist/lib/lanes/story-switch.d.ts +0 -21
- package/dist/lib/lanes/story-switch.js +0 -75
- package/dist/lib/lanes/text-scan.d.ts +0 -11
- package/dist/lib/lanes/text-scan.js +0 -103
- package/dist/lib/lanes/throttle.d.ts +0 -116
- package/dist/lib/lanes/throttle.js +0 -437
- package/dist/lib/lanes/timestamp.d.ts +0 -3
- package/dist/lib/lanes/timestamp.js +0 -26
- package/dist/lib/lanes/tracker-checks.d.ts +0 -77
- package/dist/lib/lanes/tracker-checks.js +0 -134
- package/dist/lib/lanes/tracker-report-state.d.ts +0 -10
- package/dist/lib/lanes/tracker-report-state.js +0 -124
- package/dist/lib/lanes/tracker-report.d.ts +0 -203
- package/dist/lib/lanes/tracker-report.js +0 -522
- package/dist/lib/lanes/tracker-store.d.ts +0 -18
- package/dist/lib/lanes/tracker-store.js +0 -106
- package/dist/lib/lanes/types.d.ts +0 -1030
- package/dist/lib/lanes/types.js +0 -418
- package/dist/lib/lanes/wait.d.ts +0 -39
- package/dist/lib/lanes/wait.js +0 -159
- package/dist/lib/lanes/watch.d.ts +0 -39
- package/dist/lib/lanes/watch.js +0 -249
- package/dist/lib/lanes/watcher-main.d.ts +0 -11
- package/dist/lib/lanes/watcher-main.js +0 -108
- package/dist/lib/lanes/watcher.d.ts +0 -287
- package/dist/lib/lanes/watcher.js +0 -1972
- package/dist/lib/mesh/denial-codes.d.ts +0 -5
- package/dist/lib/mesh/denial-codes.js +0 -14
- package/dist/lib/mesh/live/daemon/config.d.ts +0 -36
- package/dist/lib/mesh/live/daemon/config.js +0 -120
- package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +0 -43
- package/dist/lib/mesh/live/daemon/legacy-listen.js +0 -89
- package/dist/lib/mesh/live/daemon/live-cache.d.ts +0 -26
- package/dist/lib/mesh/live/daemon/live-cache.js +0 -116
- package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +0 -7
- package/dist/lib/mesh/live/daemon/mqtt-events.js +0 -2
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +0 -2
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +0 -10
- package/dist/lib/mesh/live/daemon/version-drift.d.ts +0 -5
- package/dist/lib/mesh/live/daemon/version-drift.js +0 -47
- package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +0 -32
- package/dist/lib/mesh/live/daemon/work-subscribe.js +0 -262
- package/dist/lib/mesh/live/report-summary.d.ts +0 -45
- package/dist/lib/mesh/live/report-summary.js +0 -234
- package/dist/lib/mesh/live/session-seq.d.ts +0 -4
- package/dist/lib/mesh/live/session-seq.js +0 -33
- package/dist/lib/mesh/project-board.d.ts +0 -65
- package/dist/lib/mesh/project-board.js +0 -181
- package/dist/lib/mesh/story-status.d.ts +0 -22
- package/dist/lib/mesh/story-status.js +0 -49
- package/dist/lib/monitor.d.ts +0 -149
- package/dist/lib/monitor.js +0 -519
- package/dist/lib/node-binary.d.ts +0 -50
- package/dist/lib/node-binary.js +0 -133
- package/dist/lib/notify-recipient.d.ts +0 -7
- package/dist/lib/notify-recipient.js +0 -11
- package/dist/lib/onboarding/checkpoint.d.ts +0 -13
- package/dist/lib/onboarding/checkpoint.js +0 -44
- package/dist/lib/onboarding/cli/onboard.d.ts +0 -53
- package/dist/lib/onboarding/cli/onboard.js +0 -135
- package/dist/lib/onboarding/cli/prompts.d.ts +0 -28
- package/dist/lib/onboarding/cli/prompts.js +0 -83
- package/dist/lib/onboarding/errors.d.ts +0 -34
- package/dist/lib/onboarding/errors.js +0 -59
- package/dist/lib/onboarding/index.d.ts +0 -13
- package/dist/lib/onboarding/index.js +0 -13
- package/dist/lib/onboarding/orchestrator.d.ts +0 -47
- package/dist/lib/onboarding/orchestrator.js +0 -569
- package/dist/lib/onboarding/types.d.ts +0 -79
- package/dist/lib/onboarding/types.js +0 -8
- package/dist/lib/policy-validator.d.ts +0 -7
- package/dist/lib/policy-validator.js +0 -187
- package/dist/lib/process-flag-company-context.d.ts +0 -8
- package/dist/lib/process-flag-company-context.js +0 -67
- package/dist/lib/report-publish.d.ts +0 -175
- package/dist/lib/report-publish.js +0 -421
- package/dist/lib/report-run.d.ts +0 -62
- package/dist/lib/report-run.js +0 -123
- package/dist/lib/report-snapshot.d.ts +0 -12
- package/dist/lib/report-snapshot.js +0 -135
- package/dist/lib/report-templates.d.ts +0 -9
- package/dist/lib/report-templates.js +0 -21
- package/dist/lib/scaffold-cli-floor.d.ts +0 -8
- package/dist/lib/scaffold-cli-floor.js +0 -50
- package/dist/lib/search-index/collection-path-repair-flag.d.ts +0 -4
- package/dist/lib/search-index/collection-path-repair-flag.js +0 -7
- package/dist/lib/search-index/embed-lock.d.ts +0 -34
- package/dist/lib/search-index/embed-lock.js +0 -295
- package/dist/lib/search-index/load-gate.d.ts +0 -57
- package/dist/lib/search-index/load-gate.js +0 -270
- package/dist/lib/search-index/max-doc-bytes.d.ts +0 -219
- package/dist/lib/search-index/max-doc-bytes.js +0 -463
- package/dist/lib/search-index/qmd-exit-diagnostics.d.ts +0 -5
- package/dist/lib/search-index/qmd-exit-diagnostics.js +0 -40
- package/dist/lib/search-index/reindex-single-flight-flag.d.ts +0 -5
- package/dist/lib/search-index/reindex-single-flight-flag.js +0 -8
- package/dist/lib/service-manager/index.d.ts +0 -42
- package/dist/lib/service-manager/index.js +0 -105
- package/dist/lib/service-manager/launchd.d.ts +0 -81
- package/dist/lib/service-manager/launchd.js +0 -212
- package/dist/lib/service-manager/systemd.d.ts +0 -19
- package/dist/lib/service-manager/systemd.js +0 -72
- package/dist/lib/service-manager/types.d.ts +0 -34
- package/dist/lib/service-manager/types.js +0 -26
- package/dist/lib/test-utils/isolated-flag-company-context.d.ts +0 -3
- package/dist/lib/test-utils/isolated-flag-company-context.js +0 -18
- package/dist/lib/work-context/bind-best.d.ts +0 -66
- package/dist/lib/work-context/bind-best.js +0 -344
- package/dist/lib/work-context/bind-calling-session.d.ts +0 -26
- package/dist/lib/work-context/bind-calling-session.js +0 -63
- package/dist/lib/work-context/company-rebind.d.ts +0 -23
- package/dist/lib/work-context/company-rebind.js +0 -59
- package/dist/lib/work-context/default-company.d.ts +0 -43
- package/dist/lib/work-context/default-company.js +0 -83
- package/dist/lib/work-context/outbox-quarantine-status-flag.d.ts +0 -4
- package/dist/lib/work-context/outbox-quarantine-status-flag.js +0 -7
- package/dist/lib/work-context/prd-sync.d.ts +0 -56
- package/dist/lib/work-context/prd-sync.js +0 -197
- package/dist/lib/work-context/preflight-contract.d.ts +0 -28
- package/dist/lib/work-context/preflight-contract.js +0 -85
- package/dist/lib/work-context/prompt-rebind.d.ts +0 -25
- package/dist/lib/work-context/prompt-rebind.js +0 -85
- package/dist/lib/work-context/windows-acl.d.ts +0 -123
- package/dist/lib/work-context/windows-acl.js +0 -425
- package/dist/lib/workers-registry/read.d.ts +0 -15
- package/dist/lib/workers-registry/read.js +0 -17
- package/dist/native-fast-route.d.ts +0 -7
- package/dist/native-fast-route.js +0 -45
- package/dist/node-network-compat-core.d.ts +0 -12
- package/dist/node-network-compat-core.js +0 -41
- package/dist/node-network-compat-fast.d.ts +0 -7
- package/dist/node-network-compat-fast.js +0 -23
- package/dist/secrets-env-fast-path.d.ts +0 -5
- package/dist/secrets-env-fast-path.js +0 -16
- package/dist/secrets-env-fast-route.d.ts +0 -18
- package/dist/secrets-env-fast-route.js +0 -54
- package/dist/utils/checkpoint-stamp-write-error.d.ts +0 -28
- package/dist/utils/checkpoint-stamp-write-error.js +0 -99
- package/dist/utils/cli-network-lifecycle.d.ts +0 -4
- package/dist/utils/cli-network-lifecycle.js +0 -11
- package/dist/utils/cognito-refresh-sentry.d.ts +0 -3
- package/dist/utils/cognito-refresh-sentry.js +0 -49
- package/dist/utils/console-origin.d.ts +0 -9
- package/dist/utils/console-origin.js +0 -28
- package/dist/utils/core-eval-trigger.d.ts +0 -4
- package/dist/utils/core-eval-trigger.js +0 -88
- package/dist/utils/exclusive-lock.d.ts +0 -32
- package/dist/utils/exclusive-lock.js +0 -75
- package/dist/utils/fast-stream-errors.d.ts +0 -12
- package/dist/utils/fast-stream-errors.js +0 -18
- package/dist/utils/files-browse-acl.d.ts +0 -5
- package/dist/utils/files-browse-acl.js +0 -11
- package/dist/utils/hq-core-yaml.d.ts +0 -10
- package/dist/utils/hq-core-yaml.js +0 -40
- package/dist/utils/hq-root-resolver.d.ts +0 -13
- package/dist/utils/hq-root-resolver.js +0 -103
- package/dist/utils/redact-url.d.ts +0 -14
- package/dist/utils/redact-url.js +0 -218
- package/dist/utils/scaffold-fast-import-guard.d.ts +0 -2
- package/dist/utils/scaffold-fast-import-guard.js +0 -40
- package/dist/utils/scaffold-packlist-guard.d.ts +0 -7
- package/dist/utils/scaffold-packlist-guard.js +0 -23
- package/dist/utils/scaffold-sibling-references.d.ts +0 -22
- package/dist/utils/scaffold-sibling-references.js +0 -156
- package/dist/utils/secret-load-availability.d.ts +0 -8
- package/dist/utils/secret-load-availability.js +0 -54
- package/dist/utils/staged-install.d.ts +0 -34
- package/dist/utils/staged-install.js +0 -346
- package/dist/utils/staged-npm-install.d.ts +0 -16
- package/dist/utils/staged-npm-install.js +0 -264
- package/dist/utils/sync-log-sources.d.ts +0 -15
- package/dist/utils/sync-log-sources.js +0 -36
- package/dist/utils/table-width.d.ts +0 -7
- package/dist/utils/table-width.js +0 -15
- package/dist/utils/update-command-supervisor.cjs +0 -247
- package/dist/utils/upload-author.d.ts +0 -15
- package/dist/utils/upload-author.js +0 -39
- package/dist/utils/version-report.d.ts +0 -27
- package/dist/utils/version-report.js +0 -105
- package/dist/version-request.d.ts +0 -14
- package/dist/version-request.js +0 -36
- package/scripts/mesh-daemon-if-stale.mjs +0 -20
- package/templates/reports/blank.md +0 -3
- package/templates/reports/daily-digest.md +0 -11
- package/templates/runbooks/update-report.md +0 -21
|
@@ -28,33 +28,25 @@
|
|
|
28
28
|
* to silence both check + gate).
|
|
29
29
|
*/
|
|
30
30
|
import { spawnSync } from "node:child_process";
|
|
31
|
-
import { createHash } from "node:crypto";
|
|
32
31
|
import { buildSpawnPlan, quoteForWindowsShell } from "./windows-spawn.js";
|
|
33
|
-
import { accessSync, closeSync, constants as fsConstants,
|
|
32
|
+
import { accessSync, closeSync, constants as fsConstants, existsSync, mkdtempSync, openSync, readdirSync, readFileSync, rmSync, } from "node:fs";
|
|
34
33
|
import os from "node:os";
|
|
35
34
|
import path from "node:path";
|
|
36
35
|
import { fileURLToPath } from "node:url";
|
|
37
36
|
import chalk from "chalk";
|
|
38
37
|
import semver from "semver";
|
|
39
38
|
import { CLI_NAME, CLI_VERSION } from "../cli-version.js";
|
|
40
|
-
import { Sentry } from "../sentry.js";
|
|
41
|
-
import { isCliTelemetryDisabled } from "./cli-telemetry.js";
|
|
42
39
|
import { DEFAULT_VAULT_API_URL } from "./cognito-session.js";
|
|
43
40
|
import { acquireUpdateLock, } from "./update-lock.js";
|
|
44
41
|
const CLIENT_ID = "hq-cli";
|
|
45
42
|
const ENDPOINT_PATH = "/v1/client-version/check";
|
|
46
43
|
const FETCH_TIMEOUT_MS = 3_000;
|
|
47
44
|
const LATEST_PACKAGE_SPEC = `${CLI_NAME}@latest`;
|
|
48
|
-
let currentVersionGatePhase = "unknown";
|
|
49
|
-
/** The last closed version-gate phase observed in this process. */
|
|
50
|
-
export function getVersionGatePhase() {
|
|
51
|
-
return currentVersionGatePhase;
|
|
52
|
-
}
|
|
53
45
|
function isOptedOut() {
|
|
54
46
|
return process.env.HQ_NO_UPDATE_CHECK === "1";
|
|
55
47
|
}
|
|
56
|
-
function
|
|
57
|
-
let dir =
|
|
48
|
+
function findRunningPackageRoot() {
|
|
49
|
+
let dir = path.dirname(fileURLToPath(import.meta.url));
|
|
58
50
|
while (true) {
|
|
59
51
|
try {
|
|
60
52
|
const pkg = JSON.parse(readFileSync(path.join(dir, "package.json"), "utf-8"));
|
|
@@ -70,105 +62,6 @@ function findCliPackageRoot(startDir) {
|
|
|
70
62
|
dir = parent;
|
|
71
63
|
}
|
|
72
64
|
}
|
|
73
|
-
function findRunningPackageRoot() {
|
|
74
|
-
return findCliPackageRoot(path.dirname(fileURLToPath(import.meta.url)));
|
|
75
|
-
}
|
|
76
|
-
/** Resolve an on-PATH executable back to the installed hq-cli package it loads. */
|
|
77
|
-
function findPackageRootForExecutable(bin) {
|
|
78
|
-
try {
|
|
79
|
-
const packageRoot = findCliPackageRoot(path.dirname(realpathSync(bin)));
|
|
80
|
-
if (packageRoot)
|
|
81
|
-
return packageRoot;
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
// A missing or inaccessible executable may still be recoverable from the
|
|
85
|
-
// configured pnpm global layout below.
|
|
86
|
-
}
|
|
87
|
-
// pnpm emits shell/.cmd shims into its global bin directory. realpathSync()
|
|
88
|
-
// resolves symlinks, but a generated shim is a regular file, so walking up
|
|
89
|
-
// from its real path never reaches the package it invokes. Look up only the
|
|
90
|
-
// hq-cli package under the matching PNPM_HOME/global layout instead.
|
|
91
|
-
const binDir = path.dirname(bin);
|
|
92
|
-
const configuredHome = process.env.PNPM_HOME;
|
|
93
|
-
const inferredHome = path.basename(binDir).toLowerCase() === "bin"
|
|
94
|
-
? path.dirname(binDir)
|
|
95
|
-
: binDir;
|
|
96
|
-
const candidateHomes = [configuredHome, inferredHome].filter((home, index, homes) => Boolean(home) && homes.findIndex((candidate) => candidate === home) === index);
|
|
97
|
-
const home = candidateHomes.find((candidate) => samePath(binDir, candidate) ||
|
|
98
|
-
samePath(binDir, path.join(candidate, "bin")));
|
|
99
|
-
if (!home)
|
|
100
|
-
return null;
|
|
101
|
-
const globalRoot = path.join(home, "global");
|
|
102
|
-
let storeVersions;
|
|
103
|
-
try {
|
|
104
|
-
storeVersions = readdirSync(globalRoot);
|
|
105
|
-
}
|
|
106
|
-
catch {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
const packageSegments = CLI_NAME.split("/");
|
|
110
|
-
for (const storeVersion of storeVersions) {
|
|
111
|
-
const storeRoot = path.join(globalRoot, storeVersion);
|
|
112
|
-
const packageRoots = [
|
|
113
|
-
path.join(storeRoot, "node_modules", ...packageSegments),
|
|
114
|
-
];
|
|
115
|
-
// pnpm v11 adds a hash between its global store version and node_modules.
|
|
116
|
-
// Its documented `vN` global layout is recognized unconditionally below.
|
|
117
|
-
if (/^v\d+$/.test(storeVersion)) {
|
|
118
|
-
try {
|
|
119
|
-
for (const hash of readdirSync(storeRoot)) {
|
|
120
|
-
packageRoots.push(path.join(storeRoot, hash, "node_modules", ...packageSegments));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
// A missing or unreadable version directory is simply not a candidate.
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
for (const candidate of packageRoots) {
|
|
128
|
-
const packageRoot = findCliPackageRoot(candidate);
|
|
129
|
-
if (packageRoot &&
|
|
130
|
-
samePath(packageRoot, candidate) &&
|
|
131
|
-
isPnpmManagedPackageDir(packageRoot, true)) {
|
|
132
|
-
return packageRoot;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
function samePath(left, right) {
|
|
139
|
-
const canonical = (value) => {
|
|
140
|
-
try {
|
|
141
|
-
return realpathSync(value);
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
return path.resolve(value);
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
const a = canonical(left);
|
|
148
|
-
const b = canonical(right);
|
|
149
|
-
return process.platform === "win32"
|
|
150
|
-
? a.toLowerCase() === b.toLowerCase()
|
|
151
|
-
: a === b;
|
|
152
|
-
}
|
|
153
|
-
function globalInstallManagerForPath(bin, packageRoot) {
|
|
154
|
-
if (isPnpmManagedPackageDir(packageRoot, true)) {
|
|
155
|
-
return "pnpm";
|
|
156
|
-
}
|
|
157
|
-
if (isBunManagedPackageDir(packageRoot))
|
|
158
|
-
return "bun";
|
|
159
|
-
const prefix = npmPrefixFromPackageDir(packageRoot);
|
|
160
|
-
if (!prefix)
|
|
161
|
-
return null;
|
|
162
|
-
const normalizedRoot = packageRoot.replace(/\\/g, "/");
|
|
163
|
-
const normalizedPrefix = prefix.replace(/\\/g, "/").replace(/\/$/, "");
|
|
164
|
-
// POSIX global npm packages live under <prefix>/lib/node_modules. On
|
|
165
|
-
// Windows npm puts hq.cmd directly in <prefix>, so also verify the bin's
|
|
166
|
-
// directory against the prefix-derived shim location there.
|
|
167
|
-
const posixGlobal = normalizedRoot.includes("/lib/node_modules/");
|
|
168
|
-
const windowsGlobal = process.platform === "win32" &&
|
|
169
|
-
samePath(path.dirname(bin), normalizedPrefix);
|
|
170
|
-
return posixGlobal || windowsGlobal ? "npm" : null;
|
|
171
|
-
}
|
|
172
65
|
export function npmPrefixFromPackageDir(pkgDir) {
|
|
173
66
|
const normalized = pkgDir.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
174
67
|
const segments = normalized.split("/");
|
|
@@ -200,8 +93,8 @@ function pnpmHomeGlobalRoot() {
|
|
|
200
93
|
* on PATH:
|
|
201
94
|
*
|
|
202
95
|
* $PNPM_HOME/hq <- shim on PATH
|
|
203
|
-
*
|
|
204
|
-
*
|
|
96
|
+
* $PNPM_HOME/global/5/node_modules/@indigoai-us/hq-cli <- symlink
|
|
97
|
+
* $PNPM_HOME/global/5/.pnpm/@indigoai-us+hq-cli@5.61.0/node_modules/…
|
|
205
98
|
*
|
|
206
99
|
* Both the symlinked and the resolved (`.pnpm`) form are recognised, because
|
|
207
100
|
* whether `import.meta.url` reports the link or its target depends on how node
|
|
@@ -215,26 +108,18 @@ function pnpmHomeGlobalRoot() {
|
|
|
215
108
|
* i.e. the gate would re-fire and re-install globally on every subsequent run.
|
|
216
109
|
* Those layouts fall through to the ordinary npm-prefix/manual handling.
|
|
217
110
|
*/
|
|
218
|
-
export function isPnpmManagedPackageDir(pkgDir
|
|
111
|
+
export function isPnpmManagedPackageDir(pkgDir) {
|
|
219
112
|
const normalized = pkgDir.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
220
113
|
const segments = normalized.split("/").filter(Boolean);
|
|
221
|
-
//
|
|
222
|
-
// `
|
|
223
|
-
// version segment so `global/next` or a `v11` directory elsewhere cannot be
|
|
224
|
-
// mistaken for a global install.
|
|
114
|
+
// `global/<digits>` — pnpm's global root, in either the symlinked or the
|
|
115
|
+
// resolved (`.pnpm`) form, and independent of where PNPM_HOME points.
|
|
225
116
|
for (let i = 0; i < segments.length - 1; i += 1) {
|
|
226
|
-
if (segments[i]
|
|
227
|
-
continue;
|
|
228
|
-
const globalDirVersion = segments[i + 1];
|
|
229
|
-
if (/^\d+$/.test(globalDirVersion))
|
|
117
|
+
if (segments[i] === "global" && /^\d+$/.test(segments[i + 1]))
|
|
230
118
|
return true;
|
|
231
|
-
if (acceptVersionPrefixedGlobalDir && /^v\d+$/.test(globalDirVersion)) {
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
119
|
}
|
|
235
|
-
//
|
|
236
|
-
//
|
|
237
|
-
//
|
|
120
|
+
// Belt-and-braces for a future pnpm layout whose store dir is not numeric:
|
|
121
|
+
// anything under `$PNPM_HOME/global` is global by construction. Still keyed
|
|
122
|
+
// on the `global` segment so `$PNPM_HOME/store/**` (dlx caches) stays out.
|
|
238
123
|
const globalRoot = pnpmHomeGlobalRoot();
|
|
239
124
|
if (globalRoot) {
|
|
240
125
|
if (normalized === globalRoot || normalized.startsWith(`${globalRoot}/`)) {
|
|
@@ -361,7 +246,7 @@ export function resolveRunningInstall() {
|
|
|
361
246
|
const packageRoot = findRunningPackageRoot();
|
|
362
247
|
if (!packageRoot)
|
|
363
248
|
return { manager: "npm", prefix: null, packageRoot: null };
|
|
364
|
-
if (isPnpmManagedPackageDir(packageRoot
|
|
249
|
+
if (isPnpmManagedPackageDir(packageRoot)) {
|
|
365
250
|
return { manager: "pnpm", prefix: null, packageRoot };
|
|
366
251
|
}
|
|
367
252
|
if (isBunManagedPackageDir(packageRoot)) {
|
|
@@ -393,9 +278,9 @@ export function resolveRunningPrefix() {
|
|
|
393
278
|
return resolveRunningInstall().prefix;
|
|
394
279
|
}
|
|
395
280
|
/**
|
|
396
|
-
* Whether the current process can write the npm global
|
|
397
|
-
*
|
|
398
|
-
*
|
|
281
|
+
* Whether the current process can write the npm global `prefix` — i.e. whether
|
|
282
|
+
* an `npm install -g --prefix <prefix>` could actually replace the installed
|
|
283
|
+
* CLI, or would fail with EACCES.
|
|
399
284
|
*
|
|
400
285
|
* The path npm rewrites is the prefix's `bin` dir (`<prefix>/bin/hq` on unix
|
|
401
286
|
* globals — the `rename /usr/bin/hq` EACCES the agent boxes hit), so that is
|
|
@@ -424,119 +309,17 @@ export function isPrefixWritable(prefix, access = (target, mode) => accessSync(t
|
|
|
424
309
|
return false;
|
|
425
310
|
}
|
|
426
311
|
/**
|
|
427
|
-
*
|
|
428
|
-
*
|
|
429
|
-
*
|
|
430
|
-
*
|
|
431
|
-
*
|
|
432
|
-
* When one of those directories has not been created yet, check its nearest
|
|
433
|
-
* existing ancestor: npm can create a child only if that ancestor is writable.
|
|
312
|
+
* One-line operator explanation for a failed global update whose prefix the
|
|
313
|
+
* running user cannot write. This is the agent-box case: the CLI is a
|
|
314
|
+
* root-owned `/usr` global install and the runtime is unprivileged, so the
|
|
315
|
+
* update genuinely cannot converge from here and re-trying it silently would
|
|
316
|
+
* loop. Says so plainly and points at the paths that CAN update it.
|
|
434
317
|
*/
|
|
435
|
-
export function
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
nodeModulesRoot = cursor;
|
|
441
|
-
break;
|
|
442
|
-
}
|
|
443
|
-
const parent = path.dirname(cursor);
|
|
444
|
-
if (parent === cursor)
|
|
445
|
-
break;
|
|
446
|
-
cursor = parent;
|
|
447
|
-
}
|
|
448
|
-
const mode = fsConstants.W_OK | fsConstants.X_OK;
|
|
449
|
-
// npm needs write access to the directories it replaces or links into. The
|
|
450
|
-
// prefix root itself need not be writable when those directories already
|
|
451
|
-
// exist; when one is missing, the nearest-existing-ancestor check below
|
|
452
|
-
// still verifies permission to create it.
|
|
453
|
-
const targets = [path.join(prefix, "bin"), nodeModulesRoot, path.dirname(packageRoot)];
|
|
454
|
-
return targets.every((target) => {
|
|
455
|
-
let candidate = path.resolve(target);
|
|
456
|
-
while (true) {
|
|
457
|
-
try {
|
|
458
|
-
access(candidate, mode);
|
|
459
|
-
return true;
|
|
460
|
-
}
|
|
461
|
-
catch (error) {
|
|
462
|
-
if (error?.code !== "ENOENT") {
|
|
463
|
-
return false;
|
|
464
|
-
}
|
|
465
|
-
const parent = path.dirname(candidate);
|
|
466
|
-
if (parent === candidate)
|
|
467
|
-
return false;
|
|
468
|
-
candidate = parent;
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
});
|
|
472
|
-
}
|
|
473
|
-
const nonWritablePrefixNotices = new Set();
|
|
474
|
-
/** Claim the one local warning/report for this installed version and prefix. */
|
|
475
|
-
export function claimNonWritableNpmPrefixNotice(install, fromVersion, homeDir = os.homedir(), kind = "user") {
|
|
476
|
-
const installIdentity = path.resolve(install.packageRoot ?? install.prefix ?? `${install.manager}:unknown-install`);
|
|
477
|
-
const identity = createHash("sha256")
|
|
478
|
-
.update(`${installIdentity}\0${fromVersion}`)
|
|
479
|
-
.digest("hex");
|
|
480
|
-
const localKey = path.join(homeDir, ".hq", "self-update", "prefix-not-writable", `${kind}-${identity}`);
|
|
481
|
-
if (nonWritablePrefixNotices.has(localKey))
|
|
482
|
-
return false;
|
|
483
|
-
try {
|
|
484
|
-
mkdirSync(path.dirname(localKey), { recursive: true, mode: 0o700 });
|
|
485
|
-
const descriptor = openSync(localKey, "wx", 0o600);
|
|
486
|
-
closeSync(descriptor);
|
|
487
|
-
nonWritablePrefixNotices.add(localKey);
|
|
488
|
-
return true;
|
|
489
|
-
}
|
|
490
|
-
catch (error) {
|
|
491
|
-
if (error?.code === "EEXIST") {
|
|
492
|
-
nonWritablePrefixNotices.add(localKey);
|
|
493
|
-
return false;
|
|
494
|
-
}
|
|
495
|
-
// Preserve the warning/report for this process if the home directory is
|
|
496
|
-
// unavailable. The marker is normally durable across CLI invocations.
|
|
497
|
-
console.error(chalk.dim("hq: could not persist the self-update permission notice rate limit."));
|
|
498
|
-
nonWritablePrefixNotices.add(localKey);
|
|
499
|
-
return true;
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
/** Emit one path-free warning event for a handled non-writable npm prefix. */
|
|
503
|
-
export function captureNonWritableNpmPrefixNotice(input) {
|
|
504
|
-
if (isCliTelemetryDisabled(input.env ?? process.env))
|
|
505
|
-
return Promise.resolve();
|
|
506
|
-
const claimed = claimNonWritableNpmPrefixNotice(input.install, input.fromVersion, input.homeDir, "report");
|
|
507
|
-
if (!claimed)
|
|
508
|
-
return Promise.resolve();
|
|
509
|
-
Sentry.captureMessage("Self-update deferred: npm prefix is not writable", {
|
|
510
|
-
level: "warning",
|
|
511
|
-
fingerprint: ["self-update", "npm-prefix-not-writable"],
|
|
512
|
-
tags: {
|
|
513
|
-
from_version: input.fromVersion,
|
|
514
|
-
target_version: input.targetVersion,
|
|
515
|
-
install_flavor: "npm",
|
|
516
|
-
error_class: "prefix_not_writable",
|
|
517
|
-
error_reason: "permission_denied",
|
|
518
|
-
},
|
|
519
|
-
});
|
|
520
|
-
return Sentry.flush(2_000).then((flushed) => {
|
|
521
|
-
if (!flushed) {
|
|
522
|
-
console.error(chalk.dim("hq: the self-update permission notice could not be sent to Sentry yet."));
|
|
523
|
-
}
|
|
524
|
-
});
|
|
525
|
-
}
|
|
526
|
-
/** One-line repair guidance for a global npm install the current user cannot write. */
|
|
527
|
-
export function nonWritablePrefixNote(prefix, platform = process.platform) {
|
|
528
|
-
const prefixArg = `'${prefix.replace(/'/g, "'\\''")}'`;
|
|
529
|
-
if (platform === "win32") {
|
|
530
|
-
const windowsPrefixArg = `"${prefix.replace(/"/g, '""')}"`;
|
|
531
|
-
return (`The npm global prefix ${prefix} is not writable by the current user, so hq-cli was not updated. ` +
|
|
532
|
-
`Open PowerShell as Administrator and run \`npm install -g --prefix ${windowsPrefixArg} ${CLI_NAME}@latest\`, ` +
|
|
533
|
-
`or set a user-owned prefix with \`npm config set prefix "$env:APPDATA\\npm"\` and run ` +
|
|
534
|
-
`\`npm install -g ${CLI_NAME}@latest\` from that PowerShell session.`);
|
|
535
|
-
}
|
|
536
|
-
return (`The npm global prefix ${prefix} is not writable by the current user, so hq-cli was not updated. ` +
|
|
537
|
-
`Run \`sudo npm install -g --prefix ${prefixArg} ${CLI_NAME}@latest\` to update this install, ` +
|
|
538
|
-
`or switch to a user-owned prefix with \`npm config set prefix ~/.npm-global\`, then run ` +
|
|
539
|
-
`\`npm install -g ${CLI_NAME}@latest\` after adding ~/.npm-global/bin to PATH.`);
|
|
318
|
+
export function nonWritablePrefixNote(prefix) {
|
|
319
|
+
return (`The npm global prefix ${prefix} is not writable by the current user, so this update cannot ` +
|
|
320
|
+
`take effect here. On an agent box this is expected: the CLI is a root-owned global install and ` +
|
|
321
|
+
`updates land as root — via the box's hq-cli-update timer, or \`sudo npm install -g ${CLI_NAME}@latest\` — ` +
|
|
322
|
+
`not from the unprivileged runtime.`);
|
|
540
323
|
}
|
|
541
324
|
/**
|
|
542
325
|
* Derive `PNPM_HOME` from a pnpm-managed install's own path. pnpm resolves its
|
|
@@ -687,7 +470,7 @@ export function cleanStalePartialInstall(prefix, fs = nodeStaleInstallFs) {
|
|
|
687
470
|
* `null` on any failure (caller treats as "no gate"). Tight 3s timeout —
|
|
688
471
|
* a hung server must not delay CLI startup.
|
|
689
472
|
*/
|
|
690
|
-
async function fetchVersionDecision(
|
|
473
|
+
async function fetchVersionDecision() {
|
|
691
474
|
try {
|
|
692
475
|
const url = `${DEFAULT_VAULT_API_URL}${ENDPOINT_PATH}`;
|
|
693
476
|
const res = await fetch(url, {
|
|
@@ -701,7 +484,7 @@ async function fetchVersionDecision(timeoutMs = FETCH_TIMEOUT_MS) {
|
|
|
701
484
|
currentVersion: CLI_VERSION,
|
|
702
485
|
platform: `${process.platform}-${process.arch}`,
|
|
703
486
|
}),
|
|
704
|
-
signal: AbortSignal.timeout(
|
|
487
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
705
488
|
});
|
|
706
489
|
if (!res.ok)
|
|
707
490
|
return null;
|
|
@@ -747,185 +530,20 @@ export { buildSpawnPlan, quoteForWindowsShell };
|
|
|
747
530
|
* protection silently disappearing.
|
|
748
531
|
*/
|
|
749
532
|
export function inOwnProcessGroup(options) {
|
|
750
|
-
return { ...options, detached: true
|
|
533
|
+
return { ...options, detached: true };
|
|
751
534
|
}
|
|
752
535
|
/** Tail of captured installer stderr kept to explain a failure. */
|
|
753
536
|
const INSTALL_DETAIL_MAX_CHARS = 400;
|
|
754
|
-
const KNOWN_NPM_UPDATE_ERROR_CODES = new Set([
|
|
755
|
-
"E404",
|
|
756
|
-
"EACCES",
|
|
757
|
-
"EAI_AGAIN",
|
|
758
|
-
"ECONNREFUSED",
|
|
759
|
-
"ECONNRESET",
|
|
760
|
-
"ENOTFOUND",
|
|
761
|
-
"EPERM",
|
|
762
|
-
"ETARGET",
|
|
763
|
-
"ETIMEDOUT",
|
|
764
|
-
]);
|
|
765
|
-
function knownNpmUpdateErrorCode(stderr) {
|
|
766
|
-
const escape = String.fromCharCode(0x1b);
|
|
767
|
-
const plainStderr = stderr.replace(new RegExp(`${escape}\\[[0-9;]*m`, "g"), "");
|
|
768
|
-
const match = /^[ \t]*npm[ \t]+(?:ERR!|error)[ \t]+code[ \t]+([A-Z0-9_]{1,32})[ \t]*$/im.exec(plainStderr);
|
|
769
|
-
const code = match?.[1]?.toUpperCase();
|
|
770
|
-
return code && KNOWN_NPM_UPDATE_ERROR_CODES.has(code) ? code : undefined;
|
|
771
|
-
}
|
|
772
|
-
function readKnownNpmDiagnosticCode(filename) {
|
|
773
|
-
if (!existsSync(filename))
|
|
774
|
-
return undefined;
|
|
775
|
-
try {
|
|
776
|
-
const contents = readFileSync(filename, "utf-8").trim();
|
|
777
|
-
if (KNOWN_NPM_UPDATE_ERROR_CODES.has(contents))
|
|
778
|
-
return contents;
|
|
779
|
-
return knownNpmUpdateErrorCode(contents);
|
|
780
|
-
}
|
|
781
|
-
catch (error) {
|
|
782
|
-
const code = error &&
|
|
783
|
-
typeof error === "object" &&
|
|
784
|
-
"code" in error &&
|
|
785
|
-
typeof error.code === "string" &&
|
|
786
|
-
/^[A-Z0-9_]{1,32}$/.test(error.code)
|
|
787
|
-
? error.code
|
|
788
|
-
: error instanceof Error
|
|
789
|
-
? "Error"
|
|
790
|
-
: "UnknownError";
|
|
791
|
-
console.error(chalk.yellow(`Could not read update diagnostic output (${code}).`));
|
|
792
|
-
return undefined;
|
|
793
|
-
}
|
|
794
|
-
}
|
|
795
|
-
/** Give a package-manager update ample time without letting it wedge every CLI call. */
|
|
796
|
-
const DEFAULT_UPDATE_TIMEOUT_MS = 30 * 60 * 1_000;
|
|
797
|
-
/** Node clamps longer timer delays to 1ms, so accepting them would invert the deadline. */
|
|
798
|
-
const MAX_UPDATE_TIMEOUT_MS = 2_147_483_647;
|
|
799
|
-
/** Let a well-behaved updater stop before force-killing the rest of its group. */
|
|
800
|
-
const UPDATE_TERMINATE_GRACE_MS = 1_000;
|
|
801
|
-
/** A successful group kill must still yield a close event so the supervisor reaps its child. */
|
|
802
|
-
const UPDATE_REAP_GRACE_MS = 1_000;
|
|
803
|
-
function updateTimeoutMs(env = process.env) {
|
|
804
|
-
const value = env.HQ_UPDATE_TIMEOUT_MS;
|
|
805
|
-
if (value === undefined || value.trim() === "")
|
|
806
|
-
return DEFAULT_UPDATE_TIMEOUT_MS;
|
|
807
|
-
const parsed = Number(value);
|
|
808
|
-
if (Number.isInteger(parsed) && parsed > 0 && parsed <= MAX_UPDATE_TIMEOUT_MS) {
|
|
809
|
-
return parsed;
|
|
810
|
-
}
|
|
811
|
-
// Falling back rather than clamping is deliberate: a clamp would silently
|
|
812
|
-
// substitute a materially different deadline. The warning tells operators
|
|
813
|
-
// their requested value was rejected before any update begins.
|
|
814
|
-
console.error(chalk.yellow(`⚠ Ignoring HQ_UPDATE_TIMEOUT_MS=${JSON.stringify(value)}: expected a positive integer no greater than ${MAX_UPDATE_TIMEOUT_MS}ms; using ${DEFAULT_UPDATE_TIMEOUT_MS}ms.`));
|
|
815
|
-
return DEFAULT_UPDATE_TIMEOUT_MS;
|
|
816
|
-
}
|
|
817
|
-
/**
|
|
818
|
-
* The actual installer runs in a small asynchronous supervisor, rather than
|
|
819
|
-
* directly under `spawnSync`. `spawnSync({ timeout })` only signals its direct
|
|
820
|
-
* child. That is unsafe here because the installer deliberately runs in its
|
|
821
|
-
* own process group: the leader can exit while its descendants keep the global
|
|
822
|
-
* store and registry connection alive. The CommonJS file is copied next to the
|
|
823
|
-
* compiled module for production and is directly runnable from source tests.
|
|
824
|
-
*/
|
|
825
|
-
const UPDATE_COMMAND_SUPERVISOR = fileURLToPath(new URL("./update-command-supervisor.cjs", import.meta.url));
|
|
826
|
-
/** Set while a self-update runs the installer through a copy of the supervisor. */
|
|
827
|
-
let detachedSupervisor = null;
|
|
828
|
-
/** The supervisor script the next install runs under. */
|
|
829
|
-
export function updateSupervisorPath() {
|
|
830
|
-
return detachedSupervisor ?? UPDATE_COMMAND_SUPERVISOR;
|
|
831
|
-
}
|
|
832
|
-
/**
|
|
833
|
-
* Copies the supervisor to a temp dir and runs installs through the copy until
|
|
834
|
-
* disposed. The in-place self-update moves the whole hq-cli package aside
|
|
835
|
-
* before it starts the installer, and the supervisor ships inside that package
|
|
836
|
-
* (5.290.0-5.292.0 failed every npm global self-update with MODULE_NOT_FOUND).
|
|
837
|
-
* The script needs only Node builtins, so the copy runs on its own. Returns
|
|
838
|
-
* null when the copy cannot be made; the caller then keeps the bundled path.
|
|
839
|
-
*/
|
|
840
|
-
export function detachUpdateSupervisor() {
|
|
841
|
-
if (detachedSupervisor)
|
|
842
|
-
return null;
|
|
843
|
-
let dir;
|
|
844
|
-
try {
|
|
845
|
-
dir = mkdtempSync(path.join(os.tmpdir(), "hq-cli-update-supervisor-"));
|
|
846
|
-
const copy = path.join(dir, "update-command-supervisor.cjs");
|
|
847
|
-
copyFileSync(UPDATE_COMMAND_SUPERVISOR, copy);
|
|
848
|
-
detachedSupervisor = copy;
|
|
849
|
-
const tempDir = dir;
|
|
850
|
-
return {
|
|
851
|
-
path: copy,
|
|
852
|
-
dispose: () => {
|
|
853
|
-
if (detachedSupervisor === copy)
|
|
854
|
-
detachedSupervisor = null;
|
|
855
|
-
try {
|
|
856
|
-
rmSync(tempDir, { recursive: true, force: true });
|
|
857
|
-
}
|
|
858
|
-
catch (error) {
|
|
859
|
-
const failureClass = error &&
|
|
860
|
-
typeof error === "object" &&
|
|
861
|
-
"code" in error &&
|
|
862
|
-
typeof error.code === "string" &&
|
|
863
|
-
/^[A-Z0-9_]{1,32}$/.test(error.code)
|
|
864
|
-
? error.code
|
|
865
|
-
: error instanceof Error
|
|
866
|
-
? "Error"
|
|
867
|
-
: "UnknownError";
|
|
868
|
-
console.error(chalk.yellow(`Could not remove update supervisor temp dir (${failureClass}).`));
|
|
869
|
-
}
|
|
870
|
-
},
|
|
871
|
-
};
|
|
872
|
-
}
|
|
873
|
-
catch (error) {
|
|
874
|
-
const failureClass = error &&
|
|
875
|
-
typeof error === "object" &&
|
|
876
|
-
"code" in error &&
|
|
877
|
-
typeof error.code === "string" &&
|
|
878
|
-
/^[A-Z0-9_]{1,32}$/.test(error.code)
|
|
879
|
-
? error.code
|
|
880
|
-
: error instanceof Error
|
|
881
|
-
? "Error"
|
|
882
|
-
: "UnknownError";
|
|
883
|
-
console.error(chalk.yellow(`Could not copy update supervisor (${failureClass}).`));
|
|
884
|
-
if (dir)
|
|
885
|
-
rmSync(dir, { recursive: true, force: true });
|
|
886
|
-
return null;
|
|
887
|
-
}
|
|
888
|
-
}
|
|
889
|
-
function readSupervisorSpawnError(errorMarker) {
|
|
890
|
-
try {
|
|
891
|
-
const value = JSON.parse(readFileSync(errorMarker, "utf-8"));
|
|
892
|
-
const code = typeof value.code === "string" ? value.code : undefined;
|
|
893
|
-
const detail = typeof value.detail === "string" ? value.detail : undefined;
|
|
894
|
-
return code === undefined && detail === undefined ? undefined : { code, detail };
|
|
895
|
-
}
|
|
896
|
-
catch {
|
|
897
|
-
return undefined;
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
537
|
export function openInstallOutput(verbose, isTty = process.stdout.isTTY === true && process.stderr.isTTY === true) {
|
|
901
538
|
if (verbose && isTty) {
|
|
902
|
-
const dir = mkdtempSync(path.join(os.tmpdir(), "hq-cli-install-"));
|
|
903
|
-
const timeoutMarker = path.join(dir, "timed-out");
|
|
904
|
-
const errorMarker = path.join(dir, "spawn-error.json");
|
|
905
|
-
const diagnosticMarker = path.join(dir, "npm-error-code");
|
|
906
539
|
return {
|
|
907
540
|
stdio: ["ignore", "inherit", "inherit"],
|
|
908
541
|
stderrTail: () => "",
|
|
909
|
-
|
|
910
|
-
diagnosticMarker,
|
|
911
|
-
timeoutMarker,
|
|
912
|
-
errorMarker,
|
|
913
|
-
timedOut: () => existsSync(timeoutMarker),
|
|
914
|
-
spawnError: () => readSupervisorSpawnError(errorMarker),
|
|
915
|
-
dispose: () => {
|
|
916
|
-
try {
|
|
917
|
-
rmSync(dir, { recursive: true, force: true });
|
|
918
|
-
}
|
|
919
|
-
catch {
|
|
920
|
-
// Best-effort cleanup of the supervisor's timeout marker.
|
|
921
|
-
}
|
|
922
|
-
},
|
|
542
|
+
dispose: () => { },
|
|
923
543
|
};
|
|
924
544
|
}
|
|
925
545
|
const dir = mkdtempSync(path.join(os.tmpdir(), "hq-cli-install-"));
|
|
926
546
|
const errPath = path.join(dir, "stderr.log");
|
|
927
|
-
const timeoutPath = path.join(dir, "timed-out");
|
|
928
|
-
const errorPath = path.join(dir, "spawn-error.json");
|
|
929
547
|
const out = openSync(path.join(dir, "stdout.log"), "a");
|
|
930
548
|
const err = openSync(errPath, "a");
|
|
931
549
|
return {
|
|
@@ -938,11 +556,6 @@ export function openInstallOutput(verbose, isTty = process.stdout.isTTY === true
|
|
|
938
556
|
return "";
|
|
939
557
|
}
|
|
940
558
|
},
|
|
941
|
-
diagnosticCode: () => readKnownNpmDiagnosticCode(errPath),
|
|
942
|
-
timeoutMarker: timeoutPath,
|
|
943
|
-
errorMarker: errorPath,
|
|
944
|
-
timedOut: () => existsSync(timeoutPath),
|
|
945
|
-
spawnError: () => readSupervisorSpawnError(errorPath),
|
|
946
559
|
dispose: () => {
|
|
947
560
|
for (const fd of [out, err]) {
|
|
948
561
|
try {
|
|
@@ -961,29 +574,13 @@ export function openInstallOutput(verbose, isTty = process.stdout.isTTY === true
|
|
|
961
574
|
},
|
|
962
575
|
};
|
|
963
576
|
}
|
|
964
|
-
export function
|
|
577
|
+
export function runUpdateCommand(cmd, args, env) {
|
|
578
|
+
const output = openInstallOutput(true);
|
|
965
579
|
try {
|
|
966
580
|
const plan = buildSpawnPlan(cmd, args);
|
|
967
|
-
const
|
|
968
|
-
// The outer sync spawn waits only for our supervisor. The supervisor owns
|
|
969
|
-
// the wall-clock deadline, sends TERM to the updater's whole process group,
|
|
970
|
-
// waits briefly, sends KILL to survivors, and waits for its direct child so
|
|
971
|
-
// the completed result leaves no zombie behind.
|
|
972
|
-
const result = spawnSync(process.execPath, [
|
|
973
|
-
updateSupervisorPath(),
|
|
974
|
-
JSON.stringify({
|
|
975
|
-
cmd: plan.cmd,
|
|
976
|
-
args: plan.args,
|
|
977
|
-
shell: plan.shell,
|
|
978
|
-
timeoutMs,
|
|
979
|
-
graceMs: UPDATE_TERMINATE_GRACE_MS,
|
|
980
|
-
reapMs: UPDATE_REAP_GRACE_MS,
|
|
981
|
-
timeoutMarker: output.timeoutMarker,
|
|
982
|
-
errorMarker: output.errorMarker,
|
|
983
|
-
diagnosticMarker: output.diagnosticMarker,
|
|
984
|
-
}),
|
|
985
|
-
], inOwnProcessGroup({
|
|
581
|
+
const result = spawnSync(plan.cmd, plan.args, inOwnProcessGroup({
|
|
986
582
|
stdio: output.stdio,
|
|
583
|
+
shell: plan.shell,
|
|
987
584
|
...(env ? { env } : {}),
|
|
988
585
|
}));
|
|
989
586
|
// spawnSync reports a missing executable via `error`, not a throw.
|
|
@@ -991,34 +588,12 @@ export function runSupervisedUpdateCommand(cmd, args, output, env) {
|
|
|
991
588
|
const code = result.error.code;
|
|
992
589
|
return { ok: false, code, detail: result.error.message };
|
|
993
590
|
}
|
|
994
|
-
if (output.timedOut()) {
|
|
995
|
-
const command = [cmd, ...args].join(" ");
|
|
996
|
-
const supervisorError = output.spawnError();
|
|
997
|
-
const detail = [
|
|
998
|
-
`timed out after ${timeoutMs}ms: ${command}`,
|
|
999
|
-
supervisorError?.detail,
|
|
1000
|
-
]
|
|
1001
|
-
.filter(Boolean)
|
|
1002
|
-
.join("; ");
|
|
1003
|
-
console.error(chalk.red(`✗ Update ${detail}.`));
|
|
1004
|
-
return { ok: false, code: "ETIMEDOUT", detail };
|
|
1005
|
-
}
|
|
1006
|
-
const spawnedError = output.spawnError();
|
|
1007
|
-
if (spawnedError) {
|
|
1008
|
-
return {
|
|
1009
|
-
ok: false,
|
|
1010
|
-
code: spawnedError.code,
|
|
1011
|
-
detail: spawnedError.detail ?? "failed to start updater",
|
|
1012
|
-
};
|
|
1013
|
-
}
|
|
1014
591
|
if (result.status !== 0) {
|
|
1015
592
|
// When output went to a file rather than the user's terminal, its tail is
|
|
1016
593
|
// the only explanation anyone will ever see for this failure.
|
|
1017
594
|
const captured = output.stderrTail();
|
|
1018
595
|
return {
|
|
1019
596
|
ok: false,
|
|
1020
|
-
diagnosticCode: output.diagnosticCode(),
|
|
1021
|
-
failureKind: "package_manager_exit",
|
|
1022
597
|
detail: captured || `exit ${result.status ?? "signal"}`,
|
|
1023
598
|
};
|
|
1024
599
|
}
|
|
@@ -1031,12 +606,6 @@ export function runSupervisedUpdateCommand(cmd, args, output, env) {
|
|
|
1031
606
|
detail: err instanceof Error ? err.message : String(err),
|
|
1032
607
|
};
|
|
1033
608
|
}
|
|
1034
|
-
}
|
|
1035
|
-
export function runUpdateCommand(cmd, args, env) {
|
|
1036
|
-
const output = openInstallOutput(true);
|
|
1037
|
-
try {
|
|
1038
|
-
return runSupervisedUpdateCommand(cmd, args, output, env);
|
|
1039
|
-
}
|
|
1040
609
|
finally {
|
|
1041
610
|
output.dispose();
|
|
1042
611
|
}
|
|
@@ -1087,9 +656,7 @@ function manualUpdateCommand(install, decision) {
|
|
|
1087
656
|
* remains for callers that pass no handler.
|
|
1088
657
|
*/
|
|
1089
658
|
function nudgeUpdateRecommended(decision, install = resolveRunningInstall()) {
|
|
1090
|
-
|
|
1091
|
-
return;
|
|
1092
|
-
const msg = chalk.yellow(`⚠ A new version of hq-cli is available: ${decision.latestVersion} (current: ${CLI_VERSION}).`);
|
|
659
|
+
const msg = chalk.yellow(`⚠ A new version of hq-cli is available: ${decision.latestVersion} (current: ${decision.currentVersion}).`);
|
|
1093
660
|
console.error(msg);
|
|
1094
661
|
// A local copy is not updated by any global command. Printing the server's
|
|
1095
662
|
// npm-shaped one would send the user to install a second copy that this
|
|
@@ -1140,44 +707,6 @@ export function resolveHqOnPath() {
|
|
|
1140
707
|
return null;
|
|
1141
708
|
}
|
|
1142
709
|
}
|
|
1143
|
-
/**
|
|
1144
|
-
* Pull the CLI version out of `hq --version` / `hq version` output.
|
|
1145
|
-
*
|
|
1146
|
-
* Compare CLI to CLI. Never take the first version-shaped token: 5.119.13–
|
|
1147
|
-
* 5.121.0 printed `HQ <core>` above `CLI <cli>`, and scraping the HQ line
|
|
1148
|
-
* made a successful install look like a PATH shadow.
|
|
1149
|
-
*
|
|
1150
|
-
* Accepts:
|
|
1151
|
-
* - bare semver (historical `--version`, and `--version` again after this fix)
|
|
1152
|
-
* - labelled `CLI x.y.z` (those 5.119.13–5.121.0 builds)
|
|
1153
|
-
* - JSON `{ "cli": "x.y.z", ... }` from `--json`
|
|
1154
|
-
*/
|
|
1155
|
-
export function parseReportedCliVersion(stdout) {
|
|
1156
|
-
const text = stdout.trim();
|
|
1157
|
-
if (!text)
|
|
1158
|
-
return null;
|
|
1159
|
-
if (text.startsWith("{")) {
|
|
1160
|
-
try {
|
|
1161
|
-
const parsed = JSON.parse(text);
|
|
1162
|
-
if (typeof parsed.cli === "string" && parsed.cli.trim()) {
|
|
1163
|
-
return parsed.cli.trim();
|
|
1164
|
-
}
|
|
1165
|
-
}
|
|
1166
|
-
catch {
|
|
1167
|
-
// Fall through to labelled / bare parsers.
|
|
1168
|
-
}
|
|
1169
|
-
}
|
|
1170
|
-
const labelled = /^[ \t]*CLI[ \t]+(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/m.exec(text);
|
|
1171
|
-
if (labelled)
|
|
1172
|
-
return labelled[1];
|
|
1173
|
-
const lines = text
|
|
1174
|
-
.split(/\r?\n/)
|
|
1175
|
-
.map((line) => line.trim())
|
|
1176
|
-
.filter(Boolean);
|
|
1177
|
-
if (lines.length === 1)
|
|
1178
|
-
return lines[0];
|
|
1179
|
-
return null;
|
|
1180
|
-
}
|
|
1181
710
|
/** `<bin> --version` output (trimmed), or null on any failure/timeout. */
|
|
1182
711
|
export function probeCliVersion(bin) {
|
|
1183
712
|
try {
|
|
@@ -1187,7 +716,8 @@ export function probeCliVersion(bin) {
|
|
|
1187
716
|
});
|
|
1188
717
|
if (result.error || result.status !== 0)
|
|
1189
718
|
return null;
|
|
1190
|
-
|
|
719
|
+
const out = (result.stdout ?? "").trim();
|
|
720
|
+
return out || null;
|
|
1191
721
|
}
|
|
1192
722
|
catch {
|
|
1193
723
|
return null;
|
|
@@ -1202,10 +732,9 @@ export function probeCliVersion(bin) {
|
|
|
1202
732
|
* pnpm-global shim at `~/Library/pnpm/bin/hq` shadowing the npm bin dir),
|
|
1203
733
|
* every updater on the box probes the ghost's version, sees it stale, installs
|
|
1204
734
|
* into the npm prefix, reports success, and repeats forever — the production
|
|
1205
|
-
* updater-war this fix exists for. Detect
|
|
1206
|
-
*
|
|
1207
|
-
*
|
|
1208
|
-
* what PATH resolves.
|
|
735
|
+
* updater-war this fix exists for. Detect the divergence here, warn ONCE with
|
|
736
|
+
* the exact shadowing path, and never retry: no number of retries into the
|
|
737
|
+
* same prefix can change what PATH resolves.
|
|
1209
738
|
*
|
|
1210
739
|
* Advisory only — resolution failure warns once and continues; nothing in
|
|
1211
740
|
* here may crash or block the CLI.
|
|
@@ -1225,6 +754,12 @@ export function checkUpdateConvergence(targetVersion, deps = {}) {
|
|
|
1225
754
|
}
|
|
1226
755
|
if (reported === targetVersion)
|
|
1227
756
|
return true; // converged — the normal case
|
|
757
|
+
console.error(chalk.yellow(`⚠ hq updated to ${targetVersion} but PATH still resolves ${bin} at version ${reported} — ` +
|
|
758
|
+
`a second install is shadowing the managed one. Remove it (e.g. \`pnpm remove -g ${CLI_NAME}\`) ` +
|
|
759
|
+
"or the updater will loop forever."));
|
|
760
|
+
// The warning above fires for ANY mismatch — something other than the copy
|
|
761
|
+
// we just wrote is winning PATH resolution, which is worth saying either
|
|
762
|
+
// way. But only a STALE result disproves convergence.
|
|
1228
763
|
//
|
|
1229
764
|
// The install runs `@latest`, not `@<targetVersion>`, so it can legitimately
|
|
1230
765
|
// land a version NEWER than the `latestVersion` the gate was handed: the npm
|
|
@@ -1239,36 +774,6 @@ export function checkUpdateConvergence(targetVersion, deps = {}) {
|
|
|
1239
774
|
semver.gte(reportedSemver, targetSemver)) {
|
|
1240
775
|
return true;
|
|
1241
776
|
}
|
|
1242
|
-
const runningInstall = (deps.currentInstall ?? resolveRunningInstall)();
|
|
1243
|
-
const packageRoot = (deps.packageRootForBin ?? findPackageRootForExecutable)(bin);
|
|
1244
|
-
const manager = packageRoot &&
|
|
1245
|
-
runningInstall.packageRoot &&
|
|
1246
|
-
!samePath(packageRoot, runningInstall.packageRoot)
|
|
1247
|
-
? globalInstallManagerForPath(bin, packageRoot)
|
|
1248
|
-
: null;
|
|
1249
|
-
let detail;
|
|
1250
|
-
if (manager) {
|
|
1251
|
-
const removeCommand = manager === "pnpm"
|
|
1252
|
-
? `pnpm remove -g ${CLI_NAME}`
|
|
1253
|
-
: manager === "bun"
|
|
1254
|
-
? `bun remove -g ${CLI_NAME}`
|
|
1255
|
-
: `npm uninstall -g ${CLI_NAME}`;
|
|
1256
|
-
let realPath = bin;
|
|
1257
|
-
try {
|
|
1258
|
-
realPath = realpathSync(bin);
|
|
1259
|
-
}
|
|
1260
|
-
catch {
|
|
1261
|
-
// Keep the shell-resolved path when a platform shim is not canonicalizable.
|
|
1262
|
-
}
|
|
1263
|
-
detail =
|
|
1264
|
-
`PATH resolves ${realPath} at version ${reported} (manager: ${manager}); ` +
|
|
1265
|
-
`that second hq-cli install is shadowing the managed one. Remove it with \`${removeCommand}\`.`;
|
|
1266
|
-
}
|
|
1267
|
-
else {
|
|
1268
|
-
detail =
|
|
1269
|
-
`PATH resolves ${bin} at version ${reported}, but no second managed hq-cli install was confirmed.`;
|
|
1270
|
-
}
|
|
1271
|
-
console.error(chalk.yellow(`⚠ hq updated to ${targetVersion} but did not converge: ${detail}`));
|
|
1272
777
|
return false;
|
|
1273
778
|
}
|
|
1274
779
|
catch {
|
|
@@ -1291,13 +796,9 @@ export function checkUpdateConvergence(targetVersion, deps = {}) {
|
|
|
1291
796
|
* Exit codes:
|
|
1292
797
|
* 0 — update succeeded; user must rerun their command
|
|
1293
798
|
* 75 — update failed (EX_TEMPFAIL; common for sudo/EACCES on system npm)
|
|
1294
|
-
*
|
|
1295
|
-
* A timed-out updater is the exception: it has been forcibly reaped, so the
|
|
1296
|
-
* gate returns and lets the user's command run on the current version.
|
|
1297
799
|
*/
|
|
1298
800
|
function enforceUpdateRequired(decision, deps = {}) {
|
|
1299
|
-
|
|
1300
|
-
const banner = chalk.red.bold(`✗ hq-cli ${CLI_VERSION} is below the minimum required version (${decision.minVersion}).`);
|
|
801
|
+
const banner = chalk.red.bold(`✗ hq-cli ${decision.currentVersion} is below the minimum required version (${decision.minVersion}).`);
|
|
1301
802
|
console.error(banner);
|
|
1302
803
|
if (decision.message)
|
|
1303
804
|
console.error(chalk.dim(` ${decision.message}`));
|
|
@@ -1323,8 +824,8 @@ function enforceUpdateRequired(decision, deps = {}) {
|
|
|
1323
824
|
// stale dist-tag, a bad cache, a misconfigured pin), reinstalling it on every
|
|
1324
825
|
// invocation and announcing success each time is strictly worse than saying
|
|
1325
826
|
// so once.
|
|
1326
|
-
if (!isNewerVersion(decision.latestVersion,
|
|
1327
|
-
console.error(chalk.red(` Refusing to update: the offered version ${decision.latestVersion} is not newer than the
|
|
827
|
+
if (!isNewerVersion(decision.latestVersion, decision.currentVersion)) {
|
|
828
|
+
console.error(chalk.red(` Refusing to update: the offered version ${decision.latestVersion} is not newer than the installed ${decision.currentVersion}.`));
|
|
1328
829
|
console.error(chalk.dim(" This is a server-side or registry problem, not a local one — reinstalling would loop without ever converging."));
|
|
1329
830
|
process.exit(75);
|
|
1330
831
|
}
|
|
@@ -1347,30 +848,17 @@ function enforceUpdateRequired(decision, deps = {}) {
|
|
|
1347
848
|
console.error(chalk.dim(" Another hq updater is already installing (update lock held); continuing on the current version."));
|
|
1348
849
|
return;
|
|
1349
850
|
}
|
|
1350
|
-
|
|
1351
|
-
let attempt;
|
|
851
|
+
let exitCode;
|
|
1352
852
|
try {
|
|
1353
|
-
|
|
853
|
+
exitCode = attemptRequiredUpdate(decision, deps, install);
|
|
1354
854
|
}
|
|
1355
|
-
|
|
855
|
+
finally {
|
|
856
|
+
// `process.exit` skips `finally` blocks, so the exit itself lives OUTSIDE
|
|
857
|
+
// the lock scope; this `finally` releases on the normal path and on any
|
|
858
|
+
// unexpected throw from the install attempt.
|
|
1356
859
|
lock.release();
|
|
1357
|
-
throw error;
|
|
1358
860
|
}
|
|
1359
|
-
|
|
1360
|
-
return attempt.then((exitCode) => {
|
|
1361
|
-
lock.release();
|
|
1362
|
-
if (exitCode !== "continue")
|
|
1363
|
-
process.exit(exitCode);
|
|
1364
|
-
}, (error) => {
|
|
1365
|
-
lock.release();
|
|
1366
|
-
throw error;
|
|
1367
|
-
});
|
|
1368
|
-
}
|
|
1369
|
-
// `process.exit` skips `finally`, so release explicitly before exiting.
|
|
1370
|
-
lock.release();
|
|
1371
|
-
if (attempt === "continue")
|
|
1372
|
-
return;
|
|
1373
|
-
process.exit(attempt);
|
|
861
|
+
process.exit(exitCode);
|
|
1374
862
|
}
|
|
1375
863
|
/**
|
|
1376
864
|
* The install attempt itself (npm/pnpm/bun routing, stale-partial cleanup,
|
|
@@ -1382,7 +870,6 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1382
870
|
const command = decision.updateCommand;
|
|
1383
871
|
const isManagedOutsideNpm = install.manager !== "npm";
|
|
1384
872
|
const prefix = install.prefix;
|
|
1385
|
-
const stagedNpmPrefix = Boolean(!isManagedOutsideNpm && prefix && /\s/.test(prefix));
|
|
1386
873
|
const runner = deps.runner ?? runUpdateCommand;
|
|
1387
874
|
// Resolve the concrete install argv once so the sudo fallback below can re-run
|
|
1388
875
|
// the EXACT same command under elevation.
|
|
@@ -1412,8 +899,6 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1412
899
|
// npm/bun and when PNPM_HOME is already set.
|
|
1413
900
|
const updateEnv = pnpmUpdateEnv(install);
|
|
1414
901
|
let result;
|
|
1415
|
-
let noticeFlush = null;
|
|
1416
|
-
currentVersionGatePhase = "installer_running";
|
|
1417
902
|
if (isManagedOutsideNpm) {
|
|
1418
903
|
console.error(chalk.dim(` Detected a ${install.manager}-managed global install; updating with ${install.manager}`));
|
|
1419
904
|
console.error(chalk.dim(` Running: ${primaryCmd} ${primaryArgs.join(" ")}`));
|
|
@@ -1421,20 +906,8 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1421
906
|
}
|
|
1422
907
|
else if (prefix) {
|
|
1423
908
|
console.error(chalk.dim(` Installing into npm prefix: ${prefix}`));
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
const installStaged = deps.installNpmPackageStaged;
|
|
1427
|
-
if (!installStaged) {
|
|
1428
|
-
result = { ok: false, detail: "staged npm installer was not loaded" };
|
|
1429
|
-
}
|
|
1430
|
-
else {
|
|
1431
|
-
result = installStaged(prefix, LATEST_PACKAGE_SPEC, runner);
|
|
1432
|
-
}
|
|
1433
|
-
}
|
|
1434
|
-
else {
|
|
1435
|
-
console.error(chalk.dim(` Running: npm ${primaryArgs.join(" ")}`));
|
|
1436
|
-
result = performUpdateCommand("npm", primaryArgs, runner);
|
|
1437
|
-
}
|
|
909
|
+
console.error(chalk.dim(` Running: npm ${primaryArgs.join(" ")}`));
|
|
910
|
+
result = performUpdateCommand("npm", primaryArgs, runner);
|
|
1438
911
|
}
|
|
1439
912
|
else {
|
|
1440
913
|
console.error(chalk.dim(` Running: ${command}`));
|
|
@@ -1450,7 +923,7 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1450
923
|
// artifacts and retry the install ONCE. Guarded on `cleaned.length > 0` so a
|
|
1451
924
|
// plain EACCES on an otherwise-healthy prefix falls straight through to the
|
|
1452
925
|
// sudo retry below without a redundant reinstall attempt.
|
|
1453
|
-
if (!result.ok &&
|
|
926
|
+
if (!result.ok && prefix) {
|
|
1454
927
|
const cleaner = deps.cleanStale ?? cleanStalePartialInstall;
|
|
1455
928
|
const cleaned = cleaner(prefix);
|
|
1456
929
|
if (cleaned.length > 0) {
|
|
@@ -1470,37 +943,20 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1470
943
|
// Never for pnpm or Bun: elevation changes the package manager's global home,
|
|
1471
944
|
// leaving the user's shim untouched while reporting success. A failed
|
|
1472
945
|
// non-npm update must surface instead.
|
|
1473
|
-
|
|
1474
|
-
if (platform !== "win32" &&
|
|
1475
|
-
!result.ok &&
|
|
1476
|
-
result.code !== "ETIMEDOUT" &&
|
|
1477
|
-
primaryCmd &&
|
|
1478
|
-
!isManagedOutsideNpm &&
|
|
1479
|
-
!stagedNpmPrefix) {
|
|
946
|
+
if (!result.ok && primaryCmd && !isManagedOutsideNpm) {
|
|
1480
947
|
console.error(chalk.dim(` Update failed unprivileged; retrying with: sudo -n ${primaryCmd} ${primaryArgs.join(" ")}`));
|
|
1481
948
|
const sudoResult = performUpdateCommand("sudo", ["-n", primaryCmd, ...primaryArgs], runner);
|
|
1482
949
|
if (sudoResult.ok)
|
|
1483
950
|
result = sudoResult;
|
|
1484
951
|
}
|
|
1485
952
|
if (!result.ok) {
|
|
1486
|
-
currentVersionGatePhase = "failed";
|
|
1487
953
|
console.error(chalk.red(`✗ Update failed${result.detail ? `: ${result.detail}` : ""}.`));
|
|
1488
|
-
//
|
|
1489
|
-
//
|
|
1490
|
-
//
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
install.packageRoot &&
|
|
1494
|
-
!(deps.canWriteNpmInstall ?? ((resolved) => canWriteNpmInstall(resolved.prefix, resolved.packageRoot)))(install);
|
|
1495
|
-
if (npmPrefixNotWritable) {
|
|
954
|
+
// A root-owned global prefix the running user cannot write is the agent-box
|
|
955
|
+
// case: even the `sudo -n` retry above cannot help without passwordless
|
|
956
|
+
// sudo, so name the wall plainly rather than leaving `exit 75` to read as a
|
|
957
|
+
// generic failure. Only for npm-prefix installs (pnpm/Bun route elsewhere).
|
|
958
|
+
if (!isManagedOutsideNpm && prefix && !isPrefixWritable(prefix)) {
|
|
1496
959
|
console.error(chalk.yellow(` ${nonWritablePrefixNote(prefix)}`));
|
|
1497
|
-
noticeFlush = captureNonWritableNpmPrefixNotice({
|
|
1498
|
-
fromVersion: CLI_VERSION,
|
|
1499
|
-
targetVersion: decision.latestVersion,
|
|
1500
|
-
install,
|
|
1501
|
-
env: process.env,
|
|
1502
|
-
homeDir: deps.homeDir,
|
|
1503
|
-
});
|
|
1504
960
|
}
|
|
1505
961
|
// The package manager itself is missing from this environment — the usual
|
|
1506
962
|
// cause is a minimal-PATH parent (launchd, cron, a bare systemd unit) that
|
|
@@ -1517,37 +973,25 @@ function attemptRequiredUpdate(decision, deps, install) {
|
|
|
1517
973
|
if (isManagedOutsideNpm && result.code === "ENOENT" && command) {
|
|
1518
974
|
console.error(chalk.dim(` (hq-pro suggests \`${command}\` — that is for npm-managed installs; use it only if you have switched this install to npm.)`));
|
|
1519
975
|
}
|
|
1520
|
-
|
|
1521
|
-
// into a second, indefinite denial of the user's command. The supervisor
|
|
1522
|
-
// either reaped the group or recorded why the OS denied that signal; in
|
|
1523
|
-
// neither case did an update land. Continue on the current CLI rather than
|
|
1524
|
-
// pretending it did or aborting the command that caused the gate to run.
|
|
1525
|
-
if (result.code === "ETIMEDOUT") {
|
|
1526
|
-
console.error(chalk.dim(" Continuing on the current hq-cli version."));
|
|
1527
|
-
return "continue";
|
|
1528
|
-
}
|
|
1529
|
-
return noticeFlush ? noticeFlush.then(() => 75) : 75;
|
|
976
|
+
return 75;
|
|
1530
977
|
}
|
|
1531
978
|
// Read-your-writes: a "successful" install into the npm prefix does not
|
|
1532
979
|
// prove the user's PATH resolves it. Verify BEFORE announcing, so a ghost
|
|
1533
980
|
// install shadowing the copy we just wrote is reported as the failed update
|
|
1534
981
|
// it is rather than as a success the caller will keep retrying — see
|
|
1535
982
|
// checkUpdateConvergence.
|
|
1536
|
-
currentVersionGatePhase = "verifying";
|
|
1537
983
|
const converged = (deps.checkConvergence ?? checkUpdateConvergence)(decision.latestVersion);
|
|
1538
984
|
if (converged === false) {
|
|
1539
|
-
currentVersionGatePhase = "failed";
|
|
1540
985
|
console.error(chalk.red(`✗ Update did not take effect: \`hq\` on PATH still resolves a different build than ${decision.latestVersion}.`));
|
|
1541
986
|
return 75;
|
|
1542
987
|
}
|
|
1543
|
-
currentVersionGatePhase = "complete";
|
|
1544
988
|
console.error(chalk.green(`✓ Updated to hq-cli ${decision.latestVersion}. Rerun your command.`));
|
|
1545
989
|
return 0;
|
|
1546
990
|
}
|
|
1547
|
-
export async function enforceVersionGate(onUpdateRecommended
|
|
991
|
+
export async function enforceVersionGate(onUpdateRecommended) {
|
|
1548
992
|
if (isOptedOut())
|
|
1549
993
|
return "continue";
|
|
1550
|
-
const decision = await fetchVersionDecision(
|
|
994
|
+
const decision = await fetchVersionDecision();
|
|
1551
995
|
if (!decision)
|
|
1552
996
|
return "continue"; // best-effort: silent on any failure
|
|
1553
997
|
if (!decision.updateRequired && !decision.updateRecommended)
|
|
@@ -1556,18 +1000,9 @@ export async function enforceVersionGate(onUpdateRecommended, options = {}) {
|
|
|
1556
1000
|
// neither downstream path repeats it.
|
|
1557
1001
|
const install = resolveRunningInstall();
|
|
1558
1002
|
if (decision.updateRequired) {
|
|
1559
|
-
// Load the staged installer only for the uncommon spaced npm-prefix path.
|
|
1560
|
-
// The version gate is imported during every CLI startup, including native
|
|
1561
|
-
// fast routes, so eagerly importing this filesystem-heavy module adds cost
|
|
1562
|
-
// to commands that never update.
|
|
1563
|
-
const installNpmPackageStaged = install.manager === "npm" && install.prefix && /\s/.test(install.prefix)
|
|
1564
|
-
? (await import("./staged-npm-install.js")).installNpmPackageStaged
|
|
1565
|
-
: undefined;
|
|
1566
1003
|
// Exits the process, EXCEPT when another updater holds the shared update
|
|
1567
1004
|
// lock — then it returns and the CLI continues on the current version.
|
|
1568
|
-
|
|
1569
|
-
if (requiredUpdate)
|
|
1570
|
-
await requiredUpdate;
|
|
1005
|
+
enforceUpdateRequired(decision, { resolveInstall: () => install });
|
|
1571
1006
|
return "continue";
|
|
1572
1007
|
}
|
|
1573
1008
|
if (decision.updateRecommended) {
|
|
@@ -1588,18 +1023,11 @@ export async function enforceVersionGate(onUpdateRecommended, options = {}) {
|
|
|
1588
1023
|
* force-upgraded.
|
|
1589
1024
|
*/
|
|
1590
1025
|
export function shouldSkipGate(argv) {
|
|
1591
|
-
return argv.some((a) => a === "--version" ||
|
|
1592
|
-
a === "-V" ||
|
|
1593
|
-
a === "-v" ||
|
|
1594
|
-
a === "--help" ||
|
|
1595
|
-
a === "-h" ||
|
|
1596
|
-
a === "version");
|
|
1026
|
+
return argv.some((a) => a === "--version" || a === "-V" || a === "-v" || a === "--help" || a === "-h");
|
|
1597
1027
|
}
|
|
1598
1028
|
export const __test__ = {
|
|
1599
1029
|
CLIENT_ID,
|
|
1600
|
-
getVersionGatePhase,
|
|
1601
1030
|
CONVERGENCE_TIMEOUT_MS,
|
|
1602
|
-
DEFAULT_UPDATE_TIMEOUT_MS,
|
|
1603
1031
|
ENDPOINT_PATH,
|
|
1604
1032
|
FETCH_TIMEOUT_MS,
|
|
1605
1033
|
checkUpdateConvergence,
|
|
@@ -1609,8 +1037,6 @@ export const __test__ = {
|
|
|
1609
1037
|
buildPnpmInstallArgv,
|
|
1610
1038
|
buildPrefixedInstallArgv,
|
|
1611
1039
|
buildSpawnPlan,
|
|
1612
|
-
canWriteNpmInstall,
|
|
1613
|
-
claimNonWritableNpmPrefixNotice,
|
|
1614
1040
|
cleanStalePartialInstall,
|
|
1615
1041
|
derivePnpmHome,
|
|
1616
1042
|
enforceUpdateRequired,
|
|
@@ -1632,6 +1058,5 @@ export const __test__ = {
|
|
|
1632
1058
|
resolveRunningInstall,
|
|
1633
1059
|
resolveRunningManager,
|
|
1634
1060
|
resolveRunningPrefix,
|
|
1635
|
-
updateTimeoutMs,
|
|
1636
1061
|
};
|
|
1637
1062
|
//# sourceMappingURL=version-gate.js.map
|