@indigoai-us/hq-cli 5.314.0 → 5.316.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4320 -1
- package/README.md +113 -0
- package/assets/bot-workers/setup/context/USER-GUIDE.md +404 -0
- package/assets/bot-workers/setup/context/quick-reference.md +199 -0
- package/assets/bot-workers/setup/skills/agents-and-team.md +167 -0
- package/assets/bot-workers/setup/skills/explain-hq.md +35 -0
- package/assets/bot-workers/setup/skills/first-company.md +74 -0
- package/assets/bot-workers/setup/skills/joining-a-team.md +125 -0
- package/assets/bot-workers/setup/skills/pricing.md +92 -0
- package/assets/bot-workers/setup/skills/standing-help.md +81 -0
- package/assets/bot-workers/setup/skills/your-business.md +281 -0
- package/assets/bot-workers/setup/worker.yaml +791 -0
- package/assets/lanes-hooks/hq-lanes-drain.json +15 -0
- package/assets/lanes-hooks/hq-lanes-drain.mjs +275 -0
- package/assets/lanes-hooks/hq-lanes-drain.sh +21 -0
- package/assets/lanes-reconcile/hq-lanes-reconcile.service +11 -0
- package/assets/lanes-reconcile/hq-lanes-reconcile.timer +12 -0
- package/assets/scaffold/.claude/hooks/validate-policy-frontmatter.sh +485 -0
- package/assets/scaffold/core/scripts/audit-log.sh +384 -0
- package/assets/scaffold/core/scripts/checkpoint-stop-gate.sh +281 -43
- package/assets/scaffold/core/scripts/clean-worktree-reconcile-handoff.sh +171 -0
- package/assets/scaffold/core/scripts/detect-stale-review-base.sh +199 -0
- package/assets/scaffold/core/scripts/eval-trigger.sh +193 -0
- package/assets/scaffold/core/scripts/git-pack-extension-check.sh +164 -0
- package/assets/scaffold/core/scripts/handoff-finalize.sh +688 -0
- package/assets/scaffold/core/scripts/handoff-open-steps.sh +81 -0
- package/assets/scaffold/core/scripts/handoff-post.sh +252 -0
- package/assets/scaffold/core/scripts/hook-lib.sh +345 -50
- package/assets/scaffold/core/scripts/hq-delegate-bundle.sh +307 -0
- package/assets/scaffold/core/scripts/hq-delegate-grant.sh +252 -0
- package/assets/scaffold/core/scripts/hq-delegate-pickup.sh +99 -0
- package/assets/scaffold/core/scripts/hq-delegate-publish.sh +91 -0
- package/assets/scaffold/core/scripts/hq-delegate-repo.sh +158 -0
- package/assets/scaffold/core/scripts/hq-delegate-resolve.sh +145 -0
- package/assets/scaffold/core/scripts/hq-delegate-secrets.sh +129 -0
- package/assets/scaffold/core/scripts/hq-delegate-send.sh +259 -0
- package/assets/scaffold/core/scripts/hq-delegate-transfer.sh +175 -0
- package/assets/scaffold/core/scripts/hq-delegate-verify.sh +238 -0
- package/assets/scaffold/core/scripts/hq-dm-bind.sh +585 -0
- package/assets/scaffold/core/scripts/hq-job-notify.sh +389 -0
- package/assets/scaffold/core/scripts/hq-job-probe.sh +835 -0
- package/assets/scaffold/core/scripts/hq-job-remediate.sh +359 -0
- package/assets/scaffold/core/scripts/hq-job-run.sh +1025 -0
- package/assets/scaffold/core/scripts/hq-pin.sh +118 -0
- package/assets/scaffold/core/scripts/hq-session.sh +184 -23
- package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +310 -0
- package/assets/scaffold/core/scripts/jobs-validate.sh +451 -0
- package/assets/scaffold/core/scripts/knowledge-prefs.sh +55 -0
- package/assets/scaffold/core/scripts/lib/portable.sh +211 -0
- package/assets/scaffold/core/scripts/lib/secret-patterns.sh +58 -0
- package/assets/scaffold/core/scripts/lib/session-id.sh +3 -2
- package/assets/scaffold/core/scripts/lib/session-scope-capability.sh +1 -1
- package/assets/scaffold/core/scripts/lib/work-mesh-enqueue.sh +2 -1
- package/assets/scaffold/core/scripts/lib/work-mesh-live-hook.sh +378 -0
- package/assets/scaffold/core/scripts/lib/work-mesh-live-rebind.sh +141 -0
- package/assets/scaffold/core/scripts/migrate-policy-triggers.sh +378 -0
- package/assets/scaffold/core/scripts/ontology-audience-grant.sh +81 -0
- package/assets/scaffold/core/scripts/ontology-brief.mjs +93 -0
- package/assets/scaffold/core/scripts/ontology-candidate.sh +100 -0
- package/assets/scaffold/core/scripts/ontology-garden.mjs +238 -0
- package/assets/scaffold/core/scripts/ontology-source-worklist.sh +79 -0
- package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +834 -0
- package/assets/scaffold/core/scripts/policy-age-report.sh +156 -0
- package/assets/scaffold/core/scripts/policy-retire.sh +199 -0
- package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +10 -87
- package/assets/scaffold/core/scripts/qmd-reindex-bg.sh +40 -0
- package/assets/scaffold/core/scripts/read-policy-frontmatter.sh +32 -0
- package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +36 -3
- package/assets/scaffold/core/scripts/rebuild-projects-index.sh +99 -12
- package/assets/scaffold/core/scripts/refresh-vault-access.sh +188 -0
- package/assets/scaffold/core/scripts/register-project.sh +262 -0
- package/assets/scaffold/core/scripts/repo-run-registry.sh +408 -0
- package/assets/scaffold/core/scripts/resolve-company.sh +199 -0
- package/assets/scaffold/core/scripts/resume-thread-lock.sh +285 -0
- package/assets/scaffold/core/scripts/share-suggestion-state.sh +541 -0
- package/assets/scaffold/core/scripts/source-yaml-validate.sh +36 -0
- package/assets/scaffold/core/scripts/token-usage-report.sh +81 -20
- package/assets/scaffold/core/scripts/verify-story-deliverables.sh +148 -0
- package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +152 -0
- package/assets/scaffold/core/scripts/work-mesh-live-rebind.sh +59 -0
- package/assets/scaffold/core/scripts/worktree-gc.sh +362 -0
- package/contracts/preflight/v1/fixtures.json +87 -0
- package/contracts/preflight/v1/schema.json +58 -0
- package/dist/bin/hq-auth-refresh.d.ts +2 -0
- package/dist/bin/hq-auth-refresh.js +12 -6
- package/dist/command-catalog.generated.d.ts +10798 -0
- package/dist/command-catalog.generated.js +13915 -0
- package/dist/command-registration-plan.d.ts +474 -0
- package/dist/command-registration-plan.js +136 -0
- package/dist/commands/__fixtures__/access-vault.d.ts +2 -0
- package/dist/commands/__fixtures__/access-vault.js +1 -1
- package/dist/commands/_patterns.d.ts +16 -0
- package/dist/commands/_patterns.js +20 -3
- package/dist/commands/access.d.ts +2 -1
- package/dist/commands/access.js +58 -49
- package/dist/commands/agent-enroll.d.ts +146 -0
- package/dist/commands/agent-enroll.js +401 -0
- package/dist/commands/agent-inbox.d.ts +9 -0
- package/dist/commands/agent-inbox.js +102 -0
- package/dist/commands/agent-kit.d.ts +87 -0
- package/dist/commands/agent-kit.js +480 -0
- package/dist/commands/agent-mcp.d.ts +24 -0
- package/dist/commands/agent-mcp.js +127 -0
- package/dist/commands/agent-probe.d.ts +77 -0
- package/dist/commands/agent-probe.js +335 -0
- package/dist/commands/agent.d.ts +13 -0
- package/dist/commands/agent.js +40 -0
- package/dist/commands/agents.d.ts +106 -4
- package/dist/commands/agents.js +924 -45
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.js +189 -19
- package/dist/commands/billing-sponsor.d.ts +83 -0
- package/dist/commands/billing-sponsor.js +344 -0
- package/dist/commands/billing.d.ts +3 -0
- package/dist/commands/billing.js +6 -1
- package/dist/commands/bot-companies.d.ts +40 -0
- package/dist/commands/bot-companies.js +64 -0
- package/dist/commands/bot-continuity.d.ts +28 -0
- package/dist/commands/bot-continuity.js +68 -0
- package/dist/commands/bot-jobs.d.ts +131 -0
- package/dist/commands/bot-jobs.js +474 -0
- package/dist/commands/bot.d.ts +278 -0
- package/dist/commands/bot.js +1982 -0
- package/dist/commands/channels.js +56 -1
- package/dist/commands/cloud-demote.js +3 -2
- package/dist/commands/cloud-provision.d.ts +14 -0
- package/dist/commands/cloud-provision.js +232 -58
- package/dist/commands/cloud-retire.d.ts +51 -0
- package/dist/commands/cloud-retire.js +154 -0
- package/dist/commands/cloud.d.ts +49 -15
- package/dist/commands/cloud.js +357 -122
- package/dist/commands/company-rename-flag.d.ts +4 -0
- package/dist/commands/company-rename-flag.js +7 -0
- package/dist/commands/company-rename.d.ts +4 -0
- package/dist/commands/company-rename.js +90 -0
- package/dist/commands/company-transfer.d.ts +4 -28
- package/dist/commands/company-transfer.js +5 -49
- package/dist/commands/company.js +68 -3
- package/dist/commands/core-audit-log-native.d.ts +9 -0
- package/dist/commands/core-audit-log-native.js +257 -0
- package/dist/commands/core-checkpoint-gate-setting.d.ts +59 -0
- package/dist/commands/core-checkpoint-gate-setting.js +163 -0
- package/dist/commands/core-checkpoint-stop-gate-native.d.ts +34 -0
- package/dist/commands/core-checkpoint-stop-gate-native.js +725 -0
- package/dist/commands/core-checkpoint.d.ts +19 -9
- package/dist/commands/core-checkpoint.js +301 -37
- package/dist/commands/core-command-catalog.d.ts +34 -0
- package/dist/commands/core-command-catalog.js +62 -0
- package/dist/commands/core-company-index-scope-flag.d.ts +3 -0
- package/dist/commands/core-company-index-scope-flag.js +6 -0
- package/dist/commands/core-delegate-w1b.d.ts +10 -0
- package/dist/commands/core-delegate-w1b.js +1219 -0
- package/dist/commands/core-delegate.d.ts +46 -0
- package/dist/commands/core-delegate.js +1040 -0
- package/dist/commands/core-detect-stale-review-base-native.d.ts +23 -0
- package/dist/commands/core-detect-stale-review-base-native.js +178 -0
- package/dist/commands/core-dm-bind-native.d.ts +32 -0
- package/dist/commands/core-dm-bind-native.js +668 -0
- package/dist/commands/core-eval-trigger-native.d.ts +4 -0
- package/dist/commands/core-eval-trigger-native.js +12 -0
- package/dist/commands/core-git-pack-extension-check-native.d.ts +22 -0
- package/dist/commands/core-git-pack-extension-check-native.js +190 -0
- package/dist/commands/core-handoff-fast.d.ts +18 -0
- package/dist/commands/core-handoff-fast.js +104 -0
- package/dist/commands/core-handoff-open-steps.d.ts +21 -0
- package/dist/commands/core-handoff-open-steps.js +264 -0
- package/dist/commands/core-handoff.d.ts +24 -0
- package/dist/commands/core-handoff.js +1144 -0
- package/dist/commands/core-hook-state-helpers-native.d.ts +11 -0
- package/dist/commands/core-hook-state-helpers-native.js +74 -0
- package/dist/commands/core-hq-session-native.d.ts +39 -0
- package/dist/commands/core-hq-session-native.js +579 -0
- package/dist/commands/core-job-native-utils.d.ts +6 -0
- package/dist/commands/core-job-native-utils.js +80 -0
- package/dist/commands/core-job-native.d.ts +5 -0
- package/dist/commands/core-job-native.js +16 -0
- package/dist/commands/core-job-notify-native.d.ts +36 -0
- package/dist/commands/core-job-notify-native.js +359 -0
- package/dist/commands/core-job-probe-native.d.ts +45 -0
- package/dist/commands/core-job-probe-native.js +564 -0
- package/dist/commands/core-job-remediate-native.d.ts +26 -0
- package/dist/commands/core-job-remediate-native.js +374 -0
- package/dist/commands/core-job-remote-launcher.d.ts +7 -0
- package/dist/commands/core-job-remote-launcher.js +51 -0
- package/dist/commands/core-job-run-native.d.ts +47 -0
- package/dist/commands/core-job-run-native.js +1215 -0
- package/dist/commands/core-jobs-native.d.ts +25 -0
- package/dist/commands/core-jobs-native.js +1339 -0
- package/dist/commands/core-knowledge-prefs.d.ts +11 -0
- package/dist/commands/core-knowledge-prefs.js +137 -0
- package/dist/commands/core-migrate-policy-triggers-native.d.ts +21 -0
- package/dist/commands/core-migrate-policy-triggers-native.js +374 -0
- package/dist/commands/core-native-handoff-flag.d.ts +4 -0
- package/dist/commands/core-native-handoff-flag.js +7 -0
- package/dist/commands/core-native-hook-helper-commands.d.ts +4 -0
- package/dist/commands/core-native-hook-helper-commands.js +56 -0
- package/dist/commands/core-native-hook-helpers-flag.d.ts +4 -0
- package/dist/commands/core-native-hook-helpers-flag.js +7 -0
- package/dist/commands/core-native-jobs-flag.d.ts +4 -0
- package/dist/commands/core-native-jobs-flag.js +7 -0
- package/dist/commands/core-native-policy-flag.d.ts +9 -0
- package/dist/commands/core-native-policy-flag.js +12 -0
- package/dist/commands/core-native-session-flag.d.ts +4 -0
- package/dist/commands/core-native-session-flag.js +7 -0
- package/dist/commands/core-native-utilities-flag.d.ts +4 -0
- package/dist/commands/core-native-utilities-flag.js +7 -0
- package/dist/commands/core-native-utilities.d.ts +29 -0
- package/dist/commands/core-native-utilities.js +54 -0
- package/dist/commands/core-native-worker-skills-flag.d.ts +4 -0
- package/dist/commands/core-native-worker-skills-flag.js +7 -0
- package/dist/commands/core-ontology-native.d.ts +17 -0
- package/dist/commands/core-ontology-native.js +916 -0
- package/dist/commands/core-ontology.d.ts +66 -0
- package/dist/commands/core-ontology.js +430 -0
- package/dist/commands/core-pin-native.d.ts +14 -0
- package/dist/commands/core-pin-native.js +236 -0
- package/dist/commands/core-policy-frontmatter.d.ts +8 -0
- package/dist/commands/core-policy-frontmatter.js +52 -0
- package/dist/commands/core-policy.d.ts +14 -0
- package/dist/commands/core-policy.js +1018 -0
- package/dist/commands/core-refresh-vault-access-native.d.ts +20 -0
- package/dist/commands/core-refresh-vault-access-native.js +229 -0
- package/dist/commands/core-register-project-native.d.ts +30 -0
- package/dist/commands/core-register-project-native.js +347 -0
- package/dist/commands/core-repo-run-registry-native.d.ts +19 -0
- package/dist/commands/core-repo-run-registry-native.js +357 -0
- package/dist/commands/core-resolve-company-command.d.ts +4 -0
- package/dist/commands/core-resolve-company-command.js +42 -0
- package/dist/commands/core-resolve-company-native.d.ts +28 -0
- package/dist/commands/core-resolve-company-native.js +408 -0
- package/dist/commands/core-share-suggestion-state-native.d.ts +18 -0
- package/dist/commands/core-share-suggestion-state-native.js +445 -0
- package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +32 -0
- package/dist/commands/core-work-mesh-bind-trusted-native.js +190 -0
- package/dist/commands/core-work-mesh-live-rebind-native.d.ts +18 -0
- package/dist/commands/core-work-mesh-live-rebind-native.js +262 -0
- package/dist/commands/core-worker-lint-native.d.ts +4 -0
- package/dist/commands/core-worker-lint-native.js +160 -0
- package/dist/commands/core-worker-share-native.d.ts +4 -0
- package/dist/commands/core-worker-share-native.js +260 -0
- package/dist/commands/core-worker-skills-command.d.ts +8 -0
- package/dist/commands/core-worker-skills-command.js +33 -0
- package/dist/commands/core-worker-skills-runtime.d.ts +33 -0
- package/dist/commands/core-worker-skills-runtime.js +86 -0
- package/dist/commands/core.d.ts +4 -0
- package/dist/commands/core.js +282 -80
- package/dist/commands/crm.js +52 -3
- package/dist/commands/daemon.d.ts +63 -0
- package/dist/commands/daemon.js +877 -0
- package/dist/commands/db-provision.js +4 -4
- package/dist/commands/db-sql.js +7 -21
- package/dist/commands/deploy-comments.d.ts +3 -0
- package/dist/commands/deploy-comments.js +162 -0
- package/dist/commands/dm.d.ts +119 -12
- package/dist/commands/dm.js +388 -38
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.js +158 -12
- package/dist/commands/feedback.d.ts +6 -0
- package/dist/commands/feedback.js +86 -37
- package/dist/commands/files-browse.d.ts +32 -12
- package/dist/commands/files-browse.js +176 -60
- package/dist/commands/files.d.ts +17 -0
- package/dist/commands/files.js +300 -47
- package/dist/commands/group-grants.js +3 -2
- package/dist/commands/groups.js +6 -5
- package/dist/commands/index-cmd.d.ts +19 -1
- package/dist/commands/index-cmd.js +74 -7
- package/dist/commands/integrations-api.d.ts +15 -10
- package/dist/commands/integrations-api.js +27 -22
- package/dist/commands/integrations-connect.d.ts +51 -13
- package/dist/commands/integrations-connect.js +86 -71
- package/dist/commands/integrations-core.d.ts +6 -6
- package/dist/commands/integrations-core.js +25 -11
- package/dist/commands/integrations-import.d.ts +1 -1
- package/dist/commands/integrations-import.js +43 -24
- package/dist/commands/integrations-manage.js +20 -13
- package/dist/commands/integrations.d.ts +8 -0
- package/dist/commands/integrations.js +94 -7
- package/dist/commands/lanes-accounts.d.ts +28 -0
- package/dist/commands/lanes-accounts.js +595 -0
- package/dist/commands/lanes-autopilot.d.ts +11 -0
- package/dist/commands/lanes-autopilot.js +336 -0
- package/dist/commands/lanes-checks.d.ts +51 -0
- package/dist/commands/lanes-checks.js +941 -0
- package/dist/commands/lanes-hold.d.ts +43 -0
- package/dist/commands/lanes-hold.js +655 -0
- package/dist/commands/lanes-keep-alive-audit.d.ts +10 -0
- package/dist/commands/lanes-keep-alive-audit.js +19 -0
- package/dist/commands/lanes-kpis.d.ts +11 -0
- package/dist/commands/lanes-kpis.js +34 -0
- package/dist/commands/lanes-message.d.ts +9 -0
- package/dist/commands/lanes-message.js +946 -0
- package/dist/commands/lanes-move.d.ts +12 -0
- package/dist/commands/lanes-move.js +397 -0
- package/dist/commands/lanes-questions.d.ts +36 -0
- package/dist/commands/lanes-questions.js +1005 -0
- package/dist/commands/lanes-report.d.ts +11 -0
- package/dist/commands/lanes-report.js +333 -0
- package/dist/commands/lanes-resume.d.ts +6 -0
- package/dist/commands/lanes-resume.js +564 -0
- package/dist/commands/lanes-review.d.ts +10 -0
- package/dist/commands/lanes-review.js +56 -0
- package/dist/commands/lanes-shared.d.ts +449 -0
- package/dist/commands/lanes-shared.js +170 -0
- package/dist/commands/lanes-stories.d.ts +15 -0
- package/dist/commands/lanes-stories.js +347 -0
- package/dist/commands/lanes-watch.d.ts +7 -0
- package/dist/commands/lanes-watch.js +216 -0
- package/dist/commands/lanes.d.ts +149 -0
- package/dist/commands/lanes.js +9013 -0
- package/dist/commands/login.js +49 -6
- package/dist/commands/mcp-registration.d.ts +32 -25
- package/dist/commands/mcp-registration.js +256 -23
- package/dist/commands/mcp-status.js +1 -0
- package/dist/commands/meetings.js +55 -34
- package/dist/commands/members.js +5 -1
- package/dist/commands/mesh.d.ts +11 -0
- package/dist/commands/mesh.js +1086 -76
- package/dist/commands/monitor.d.ts +58 -0
- package/dist/commands/monitor.js +980 -0
- package/dist/commands/onboard-bot-membership.d.ts +32 -0
- package/dist/commands/onboard-bot-membership.js +40 -0
- package/dist/commands/onboard-create-identity.d.ts +26 -0
- package/dist/commands/onboard-create-identity.js +23 -0
- package/dist/commands/onboard-identity-guard.d.ts +1 -1
- package/dist/commands/onboard.js +24 -5
- package/dist/commands/outpost-pruner.d.ts +3 -0
- package/dist/commands/outpost-pruner.js +125 -0
- package/dist/commands/pack-install.js +3 -1
- package/dist/commands/packs.js +11 -1
- package/dist/commands/people.d.ts +4 -0
- package/dist/commands/people.js +37 -3
- package/dist/commands/personal-connector-settings-flag.d.ts +4 -0
- package/dist/commands/personal-connector-settings-flag.js +7 -0
- package/dist/commands/personal-targeted-push-flag.d.ts +4 -0
- package/dist/commands/personal-targeted-push-flag.js +7 -0
- package/dist/commands/personal-targeted-push-paths.d.ts +3 -0
- package/dist/commands/personal-targeted-push-paths.js +67 -0
- package/dist/commands/publish.d.ts +8 -1
- package/dist/commands/publish.js +17 -4
- package/dist/commands/reindex.js +56 -6
- package/dist/commands/report.d.ts +19 -0
- package/dist/commands/report.js +537 -0
- package/dist/commands/rescue.d.ts +4 -0
- package/dist/commands/rescue.js +27 -17
- package/dist/commands/run-feature-telemetry.d.ts +3 -0
- package/dist/commands/run-feature-telemetry.js +6 -0
- package/dist/commands/run.js +18 -4
- package/dist/commands/safe-extract.d.ts +11 -2
- package/dist/commands/safe-extract.js +36 -8
- package/dist/commands/secrets.d.ts +20 -2
- package/dist/commands/secrets.js +175 -71
- package/dist/commands/skill.d.ts +35 -4
- package/dist/commands/skill.js +357 -18
- package/dist/commands/staff/reset-test-account.d.ts +110 -0
- package/dist/commands/staff/reset-test-account.js +268 -0
- package/dist/commands/staff/test-account.d.ts +51 -0
- package/dist/commands/staff/test-account.js +196 -0
- package/dist/commands/sync-mode.d.ts +11 -0
- package/dist/commands/sync-mode.js +30 -0
- package/dist/commands/sync-narrow.js +36 -5
- package/dist/commands/team-sync.js +71 -10
- package/dist/commands/update.js +6 -0
- package/dist/commands/vault-retention-flag.d.ts +3 -0
- package/dist/commands/vault-retention-flag.js +9 -0
- package/dist/commands/vault-retention.d.ts +11 -0
- package/dist/commands/vault-retention.js +69 -0
- package/dist/commands/version.d.ts +10 -0
- package/dist/commands/version.js +11 -0
- package/dist/commands/whoami.d.ts +22 -0
- package/dist/commands/whoami.js +137 -4
- package/dist/commands/workers.d.ts +2 -14
- package/dist/commands/workers.js +7 -10
- package/dist/fast-core.d.ts +7 -7
- package/dist/fast-core.js +91 -24
- package/dist/fast-scaffold.d.ts +86 -0
- package/dist/fast-scaffold.js +381 -0
- package/dist/index.d.ts +3 -4
- package/dist/index.js +59 -9
- package/dist/lanes-drain-hook.d.ts +14 -0
- package/dist/lanes-drain-hook.js +203 -0
- package/dist/lazy-commands.d.ts +20 -44
- package/dist/lazy-commands.js +60 -58
- package/dist/lib/agent-kit/adopt-identity.d.ts +27 -0
- package/dist/lib/agent-kit/adopt-identity.js +60 -0
- package/dist/lib/agent-kit/attachment-download.d.ts +24 -0
- package/dist/lib/agent-kit/attachment-download.js +47 -0
- package/dist/lib/agent-kit/creds.d.ts +106 -0
- package/dist/lib/agent-kit/creds.js +163 -0
- package/dist/lib/agent-kit/fallback.d.ts +78 -0
- package/dist/lib/agent-kit/fallback.js +210 -0
- package/dist/lib/agent-kit/inbox-state.d.ts +83 -0
- package/dist/lib/agent-kit/inbox-state.js +159 -0
- package/dist/lib/agent-kit/kit-config.d.ts +56 -0
- package/dist/lib/agent-kit/kit-config.js +65 -0
- package/dist/lib/agent-kit/log.d.ts +16 -0
- package/dist/lib/agent-kit/log.js +46 -0
- package/dist/lib/agent-kit/mcp/attachments.d.ts +126 -0
- package/dist/lib/agent-kit/mcp/attachments.js +222 -0
- package/dist/lib/agent-kit/mcp/jsonrpc.d.ts +75 -0
- package/dist/lib/agent-kit/mcp/jsonrpc.js +164 -0
- package/dist/lib/agent-kit/mcp/tools.d.ts +64 -0
- package/dist/lib/agent-kit/mcp/tools.js +397 -0
- package/dist/lib/agent-kit/paths.d.ts +65 -0
- package/dist/lib/agent-kit/paths.js +118 -0
- package/dist/lib/agent-kit/private-file.d.ts +29 -0
- package/dist/lib/agent-kit/private-file.js +91 -0
- package/dist/lib/agent-kit/run/heartbeat.d.ts +72 -0
- package/dist/lib/agent-kit/run/heartbeat.js +128 -0
- package/dist/lib/agent-kit/run/inbox.d.ts +76 -0
- package/dist/lib/agent-kit/run/inbox.js +205 -0
- package/dist/lib/agent-kit/run/supervisor.d.ts +35 -0
- package/dist/lib/agent-kit/run/supervisor.js +85 -0
- package/dist/lib/agent-kit/run/sync.d.ts +33 -0
- package/dist/lib/agent-kit/run/sync.js +58 -0
- package/dist/lib/agent-kit/services.d.ts +31 -0
- package/dist/lib/agent-kit/services.js +55 -0
- package/dist/lib/agent-kit/skills.d.ts +18 -0
- package/dist/lib/agent-kit/skills.js +151 -0
- package/dist/lib/agent-kit/wake.d.ts +83 -0
- package/dist/lib/agent-kit/wake.js +243 -0
- package/dist/lib/agents/model-catalog.d.ts +62 -0
- package/dist/lib/agents/model-catalog.js +275 -0
- package/dist/lib/auth-login-provider-state.d.ts +8 -0
- package/dist/lib/auth-login-provider-state.js +63 -0
- package/dist/lib/aws-sdk-node-warning-output.d.ts +12 -0
- package/dist/lib/aws-sdk-node-warning-output.js +22 -0
- package/dist/lib/billing/free-month.d.ts +18 -0
- package/dist/lib/billing/free-month.js +31 -0
- package/dist/lib/billing/plan-limit-refusals.d.ts +69 -0
- package/dist/lib/billing/plan-limit-refusals.js +187 -0
- package/dist/lib/billing/plan-limit-upgrade-url.d.ts +11 -0
- package/dist/lib/billing/plan-limit-upgrade-url.js +66 -0
- package/dist/lib/billing/plan-lock.d.ts +143 -0
- package/dist/lib/billing/plan-lock.js +439 -0
- package/dist/lib/bot/api.d.ts +349 -0
- package/dist/lib/bot/api.js +316 -0
- package/dist/lib/bot/attachments.d.ts +45 -0
- package/dist/lib/bot/attachments.js +89 -0
- package/dist/lib/bot/cli-update.d.ts +138 -0
- package/dist/lib/bot/cli-update.js +278 -0
- package/dist/lib/bot/company-bind.d.ts +27 -0
- package/dist/lib/bot/company-bind.js +62 -0
- package/dist/lib/bot/config.d.ts +153 -0
- package/dist/lib/bot/config.js +233 -0
- package/dist/lib/bot/continuity-download.d.ts +28 -0
- package/dist/lib/bot/continuity-download.js +75 -0
- package/dist/lib/bot/continuity-install.d.ts +14 -0
- package/dist/lib/bot/continuity-install.js +101 -0
- package/dist/lib/bot/continuity.d.ts +67 -0
- package/dist/lib/bot/continuity.js +301 -0
- package/dist/lib/bot/creds.d.ts +24 -0
- package/dist/lib/bot/creds.js +51 -0
- package/dist/lib/bot/daemon.d.ts +173 -0
- package/dist/lib/bot/daemon.js +552 -0
- package/dist/lib/bot/inbox-poll-backoff-flag.d.ts +24 -0
- package/dist/lib/bot/inbox-poll-backoff-flag.js +135 -0
- package/dist/lib/bot/inbox-state.d.ts +18 -0
- package/dist/lib/bot/inbox-state.js +51 -0
- package/dist/lib/bot/index.d.ts +23 -0
- package/dist/lib/bot/index.js +23 -0
- package/dist/lib/bot/inflight.d.ts +119 -0
- package/dist/lib/bot/inflight.js +83 -0
- package/dist/lib/bot/job-completions.d.ts +89 -0
- package/dist/lib/bot/job-completions.js +132 -0
- package/dist/lib/bot/job-quiet-flag.d.ts +4 -0
- package/dist/lib/bot/job-quiet-flag.js +14 -0
- package/dist/lib/bot/job-run.d.ts +114 -0
- package/dist/lib/bot/job-run.js +266 -0
- package/dist/lib/bot/local-config.d.ts +61 -0
- package/dist/lib/bot/local-config.js +145 -0
- package/dist/lib/bot/local-jobs.d.ts +89 -0
- package/dist/lib/bot/local-jobs.js +459 -0
- package/dist/lib/bot/local-name.d.ts +54 -0
- package/dist/lib/bot/local-name.js +114 -0
- package/dist/lib/bot/log.d.ts +13 -0
- package/dist/lib/bot/log.js +59 -0
- package/dist/lib/bot/owner-context.d.ts +79 -0
- package/dist/lib/bot/owner-context.js +175 -0
- package/dist/lib/bot/paths.d.ts +76 -0
- package/dist/lib/bot/paths.js +131 -0
- package/dist/lib/bot/progress.d.ts +132 -0
- package/dist/lib/bot/progress.js +289 -0
- package/dist/lib/bot/promote.d.ts +16 -0
- package/dist/lib/bot/promote.js +106 -0
- package/dist/lib/bot/promotion-hold.d.ts +24 -0
- package/dist/lib/bot/promotion-hold.js +103 -0
- package/dist/lib/bot/promotion-receipt.d.ts +9 -0
- package/dist/lib/bot/promotion-receipt.js +56 -0
- package/dist/lib/bot/promotion-upload.d.ts +16 -0
- package/dist/lib/bot/promotion-upload.js +80 -0
- package/dist/lib/bot/prompt.d.ts +136 -0
- package/dist/lib/bot/prompt.js +433 -0
- package/dist/lib/bot/room-policy.d.ts +63 -0
- package/dist/lib/bot/room-policy.js +91 -0
- package/dist/lib/bot/run.d.ts +219 -0
- package/dist/lib/bot/run.js +1881 -0
- package/dist/lib/bot/runnable.d.ts +51 -0
- package/dist/lib/bot/runnable.js +65 -0
- package/dist/lib/bot/runtime/claude.d.ts +50 -0
- package/dist/lib/bot/runtime/claude.js +170 -0
- package/dist/lib/bot/runtime/codex.d.ts +28 -0
- package/dist/lib/bot/runtime/codex.js +153 -0
- package/dist/lib/bot/runtime/grok-acp.d.ts +40 -0
- package/dist/lib/bot/runtime/grok-acp.js +265 -0
- package/dist/lib/bot/runtime/grok.d.ts +41 -0
- package/dist/lib/bot/runtime/grok.js +169 -0
- package/dist/lib/bot/runtime/index.d.ts +36 -0
- package/dist/lib/bot/runtime/index.js +417 -0
- package/dist/lib/bot/runtime/messages-stream.d.ts +56 -0
- package/dist/lib/bot/runtime/messages-stream.js +194 -0
- package/dist/lib/bot/runtime/sanitize.d.ts +18 -0
- package/dist/lib/bot/runtime/sanitize.js +28 -0
- package/dist/lib/bot/runtime/types.d.ts +159 -0
- package/dist/lib/bot/runtime/types.js +51 -0
- package/dist/lib/bot/runtime/windows.d.ts +10 -0
- package/dist/lib/bot/runtime/windows.js +53 -0
- package/dist/lib/bot/runtime-sign-in.d.ts +24 -0
- package/dist/lib/bot/runtime-sign-in.js +31 -0
- package/dist/lib/bot/scaffold.d.ts +38 -0
- package/dist/lib/bot/scaffold.js +94 -0
- package/dist/lib/bot/self-heal.d.ts +52 -0
- package/dist/lib/bot/self-heal.js +79 -0
- package/dist/lib/bot/self-process.d.ts +19 -0
- package/dist/lib/bot/self-process.js +35 -0
- package/dist/lib/bot/session.d.ts +19 -0
- package/dist/lib/bot/session.js +39 -0
- package/dist/lib/bot/setup-explain.d.ts +64 -0
- package/dist/lib/bot/setup-explain.js +141 -0
- package/dist/lib/bot/split.d.ts +32 -0
- package/dist/lib/bot/split.js +241 -0
- package/dist/lib/bot/status.d.ts +57 -0
- package/dist/lib/bot/status.js +66 -0
- package/dist/lib/bot/worker-source.d.ts +66 -0
- package/dist/lib/bot/worker-source.js +283 -0
- package/dist/lib/checkpoint-ontology/aliases.d.ts +17 -0
- package/dist/lib/checkpoint-ontology/aliases.js +44 -0
- package/dist/lib/checkpoint-ontology/apply.d.ts +110 -0
- package/dist/lib/checkpoint-ontology/apply.js +777 -0
- package/dist/lib/checkpoint-ontology/company-brief.d.ts +18 -0
- package/dist/lib/checkpoint-ontology/company-brief.js +337 -0
- package/dist/lib/checkpoint-ontology/company.d.ts +44 -0
- package/dist/lib/checkpoint-ontology/company.js +118 -0
- package/dist/lib/checkpoint-ontology/drop-aliases.d.ts +41 -0
- package/dist/lib/checkpoint-ontology/drop-aliases.js +76 -0
- package/dist/lib/checkpoint-ontology/entity-file.d.ts +109 -0
- package/dist/lib/checkpoint-ontology/entity-file.js +371 -0
- package/dist/lib/checkpoint-ontology/identity.d.ts +38 -0
- package/dist/lib/checkpoint-ontology/identity.js +95 -0
- package/dist/lib/checkpoint-ontology/merge-copies.d.ts +199 -0
- package/dist/lib/checkpoint-ontology/merge-copies.js +1086 -0
- package/dist/lib/checkpoint-ontology/multi-writer.d.ts +101 -0
- package/dist/lib/checkpoint-ontology/multi-writer.js +394 -0
- package/dist/lib/checkpoint-ontology/plan.d.ts +193 -0
- package/dist/lib/checkpoint-ontology/plan.js +504 -0
- package/dist/lib/checkpoint-ontology/queued-touches.d.ts +29 -0
- package/dist/lib/checkpoint-ontology/queued-touches.js +193 -0
- package/dist/lib/checkpoint-ontology/sync-client.d.ts +38 -0
- package/dist/lib/checkpoint-ontology/sync-client.js +84 -0
- package/dist/lib/checkpoint-ontology/tree.d.ts +55 -0
- package/dist/lib/checkpoint-ontology/tree.js +198 -0
- package/dist/lib/company-errors-sdk-warning-flag.d.ts +5 -0
- package/dist/lib/company-errors-sdk-warning-flag.js +8 -0
- package/dist/lib/company-skill-wrapper.d.ts +1 -0
- package/dist/lib/company-skill-wrapper.js +121 -29
- package/dist/lib/core-utils/codex-skill-bridge.d.ts +2 -1
- package/dist/lib/core-utils/common.d.ts +0 -1
- package/dist/lib/core-utils/common.js +0 -9
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.d.ts +20 -0
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.js +81 -0
- package/dist/lib/core-utils/jq-json-serializer.d.ts +5 -0
- package/dist/lib/core-utils/jq-json-serializer.js +10 -0
- package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +14 -1
- package/dist/lib/core-utils/qmd-reindex-after-sync.js +101 -17
- package/dist/lib/core-utils/secret-patterns.d.ts +43 -0
- package/dist/lib/core-utils/secret-patterns.js +34 -0
- package/dist/lib/core-utils/sentry-report.d.ts +114 -0
- package/dist/lib/core-utils/sentry-report.js +1055 -0
- package/dist/lib/core-utils/soft-timeout.js +1 -1
- package/dist/lib/core-utils/timeout-guard-native.d.ts +7 -0
- package/dist/lib/core-utils/timeout-guard-native.js +40 -0
- package/dist/lib/core-utils/timeout-guard.d.ts +3 -3
- package/dist/lib/core-utils/timeout-guard.js +28 -13
- package/dist/lib/core-utils/token-usage-report.js +17 -3
- package/dist/lib/core-utils/worktree-resume.d.ts +20 -0
- package/dist/lib/core-utils/worktree-resume.js +1198 -0
- package/dist/lib/daemon/catalog.d.ts +134 -0
- package/dist/lib/daemon/catalog.js +358 -0
- package/dist/lib/daemon/config.d.ts +35 -0
- package/dist/lib/daemon/config.js +108 -0
- package/dist/lib/daemon/flag.d.ts +25 -0
- package/dist/lib/daemon/flag.js +59 -0
- package/dist/lib/daemon/handoff.d.ts +56 -0
- package/dist/lib/daemon/handoff.js +161 -0
- package/dist/lib/daemon/hq-cloud.d.ts +79 -0
- package/dist/lib/daemon/hq-cloud.js +183 -0
- package/dist/lib/daemon/install.d.ts +85 -0
- package/dist/lib/daemon/install.js +320 -0
- package/dist/lib/daemon/legacy-sync-env.d.ts +10 -0
- package/dist/lib/daemon/legacy-sync-env.js +58 -0
- package/dist/lib/daemon/legacy.d.ts +45 -0
- package/dist/lib/daemon/legacy.js +133 -0
- package/dist/lib/daemon/lock.d.ts +47 -0
- package/dist/lib/daemon/lock.js +138 -0
- package/dist/lib/daemon/machine-type.d.ts +50 -0
- package/dist/lib/daemon/machine-type.js +159 -0
- package/dist/lib/daemon/migrate.d.ts +77 -0
- package/dist/lib/daemon/migrate.js +265 -0
- package/dist/lib/daemon/paths.d.ts +24 -0
- package/dist/lib/daemon/paths.js +43 -0
- package/dist/lib/daemon/protocol-tail.d.ts +33 -0
- package/dist/lib/daemon/protocol-tail.js +131 -0
- package/dist/lib/daemon/remote-control.d.ts +74 -0
- package/dist/lib/daemon/remote-control.js +153 -0
- package/dist/lib/daemon/requests.d.ts +28 -0
- package/dist/lib/daemon/requests.js +65 -0
- package/dist/lib/daemon/run.d.ts +79 -0
- package/dist/lib/daemon/run.js +755 -0
- package/dist/lib/daemon/succession.d.ts +118 -0
- package/dist/lib/daemon/succession.js +263 -0
- package/dist/lib/daemon/supervisor.d.ts +132 -0
- package/dist/lib/daemon/supervisor.js +836 -0
- package/dist/lib/daemon/sync-runner.d.ts +58 -0
- package/dist/lib/daemon/sync-runner.js +277 -0
- package/dist/lib/daemon/tools.d.ts +52 -0
- package/dist/lib/daemon/tools.js +95 -0
- package/dist/lib/daemon/updater.d.ts +57 -0
- package/dist/lib/daemon/updater.js +163 -0
- package/dist/lib/db/control-plane.js +6 -0
- package/dist/lib/db/local.d.ts +0 -5
- package/dist/lib/db/local.js +1 -1
- package/dist/lib/db/migrate.d.ts +0 -12
- package/dist/lib/db/migrate.js +5 -5
- package/dist/lib/db/remote-sql.d.ts +2 -2
- package/dist/lib/db/remote-sql.js +3 -3
- package/dist/lib/db/sql.d.ts +0 -10
- package/dist/lib/db/sql.js +4 -8
- package/dist/lib/deploy-api.d.ts +5 -0
- package/dist/lib/deploy-api.js +21 -0
- package/dist/lib/deploy-apps.d.ts +13 -0
- package/dist/lib/deploy-apps.js +29 -0
- package/dist/lib/doctor/__testing__/fake-hq-tree.d.ts +1 -1
- package/dist/lib/doctor/__testing__/fake-hq-tree.js +1 -1
- package/dist/lib/doctor/__testing__/run-doctor.d.ts +8 -0
- package/dist/lib/doctor/__testing__/run-doctor.js +52 -0
- package/dist/lib/doctor/checks/bots.d.ts +13 -0
- package/dist/lib/doctor/checks/bots.js +189 -0
- package/dist/lib/doctor/checks/claude-wiring.js +70 -1
- package/dist/lib/doctor/checks/codex-wiring.d.ts +0 -4
- package/dist/lib/doctor/checks/codex-wiring.js +3 -35
- package/dist/lib/doctor/checks/grok-wiring.js +1 -34
- package/dist/lib/doctor/checks/integrations.js +11 -0
- package/dist/lib/doctor/checks/runtime-health.d.ts +4 -17
- package/dist/lib/doctor/checks/runtime-health.js +20 -7
- package/dist/lib/doctor/checks/scaffold-cli-floor.d.ts +6 -0
- package/dist/lib/doctor/checks/scaffold-cli-floor.js +73 -0
- package/dist/lib/doctor/checks/sync-health.d.ts +21 -0
- package/dist/lib/doctor/checks/sync-health.js +72 -2
- package/dist/lib/doctor/checks/sync-runtime.d.ts +11 -0
- package/dist/lib/doctor/checks/sync-runtime.js +216 -0
- package/dist/lib/doctor/checks/work-context.js +20 -6
- package/dist/lib/doctor/client-health-flag-token.d.ts +15 -0
- package/dist/lib/doctor/client-health-flag-token.js +66 -0
- package/dist/lib/doctor/client-health-reason-codes-flag.d.ts +27 -0
- package/dist/lib/doctor/client-health-reason-codes-flag.js +106 -0
- package/dist/lib/doctor/compat.d.ts +0 -16
- package/dist/lib/doctor/compat.js +4 -3
- package/dist/lib/doctor/deep/effects.js +1 -3
- package/dist/lib/doctor/deep/executor.d.ts +4 -10
- package/dist/lib/doctor/deep/executor.js +1 -1
- package/dist/lib/doctor/deep/parity.d.ts +2 -29
- package/dist/lib/doctor/deep/parity.js +7 -7
- package/dist/lib/doctor/deep/sandbox.d.ts +7 -25
- package/dist/lib/doctor/deep/sandbox.js +5 -7
- package/dist/lib/doctor/fix/apply.d.ts +79 -8
- package/dist/lib/doctor/fix/apply.js +292 -80
- package/dist/lib/doctor/fix/json-output.d.ts +28 -0
- package/dist/lib/doctor/fix/json-output.js +33 -0
- package/dist/lib/doctor/fix/refresh-sync-outcome.d.ts +12 -0
- package/dist/lib/doctor/fix/refresh-sync-outcome.js +25 -0
- package/dist/lib/doctor/fix/remediation.d.ts +14 -6
- package/dist/lib/doctor/fix/remediation.js +49 -9
- package/dist/lib/doctor/fixtures/schema.js +1 -3
- package/dist/lib/doctor/json-output.d.ts +17 -1
- package/dist/lib/doctor/json-output.js +7 -2
- package/dist/lib/doctor/platform.d.ts +0 -26
- package/dist/lib/doctor/platform.js +5 -5
- package/dist/lib/doctor/registry.d.ts +14 -0
- package/dist/lib/doctor/registry.js +71 -0
- package/dist/lib/doctor/report.js +1 -1
- package/dist/lib/doctor/shared.d.ts +8 -0
- package/dist/lib/doctor/shared.js +38 -0
- package/dist/lib/doctor/stray-gate-entries.d.ts +35 -0
- package/dist/lib/doctor/stray-gate-entries.js +83 -0
- package/dist/lib/doctor/types.d.ts +5 -0
- package/dist/lib/doctor/types.js +20 -0
- package/dist/lib/first-sync-next-step.d.ts +34 -0
- package/dist/lib/first-sync-next-step.js +179 -0
- package/dist/lib/flag-registry-endpoint.d.ts +5 -0
- package/dist/lib/flag-registry-endpoint.js +9 -0
- package/dist/lib/flag-registry-worker-source.generated.d.ts +2 -0
- package/dist/lib/flag-registry-worker-source.generated.js +3 -0
- package/dist/lib/flag-registry-worker.js +12 -1
- package/dist/lib/flag-registry.d.ts +26 -6
- package/dist/lib/flag-registry.js +133 -16
- package/dist/lib/flag-snapshot-file.d.ts +20 -0
- package/dist/lib/flag-snapshot-file.js +91 -0
- package/dist/lib/heartbeat-identity.d.ts +30 -0
- package/dist/lib/heartbeat-identity.js +76 -0
- package/dist/lib/index-render/companies.d.ts +4 -1
- package/dist/lib/index-render/companies.js +66 -3
- package/dist/lib/index-render/company-knowledge.js +80 -17
- package/dist/lib/index-render/index.d.ts +1 -0
- package/dist/lib/index-render/index.js +2 -1
- package/dist/lib/index-render/projects.js +82 -5
- package/dist/lib/index-render/shared.d.ts +13 -1
- package/dist/lib/index-render/shared.js +41 -2
- package/dist/lib/lanes/account-home.d.ts +8 -0
- package/dist/lib/lanes/account-home.js +10 -0
- package/dist/lib/lanes/accounts.d.ts +117 -0
- package/dist/lib/lanes/accounts.js +366 -0
- package/dist/lib/lanes/admission-host.d.ts +22 -0
- package/dist/lib/lanes/admission-host.js +37 -0
- package/dist/lib/lanes/admission.d.ts +26 -0
- package/dist/lib/lanes/admission.js +210 -0
- package/dist/lib/lanes/approval-gate.d.ts +8 -0
- package/dist/lib/lanes/approval-gate.js +90 -0
- package/dist/lib/lanes/autopilot-metrics.d.ts +99 -0
- package/dist/lib/lanes/autopilot-metrics.js +301 -0
- package/dist/lib/lanes/autopilot-registry.d.ts +62 -0
- package/dist/lib/lanes/autopilot-registry.js +192 -0
- package/dist/lib/lanes/autopilot.d.ts +137 -0
- package/dist/lib/lanes/autopilot.js +1291 -0
- package/dist/lib/lanes/blocker-freshness.d.ts +31 -0
- package/dist/lib/lanes/blocker-freshness.js +168 -0
- package/dist/lib/lanes/checked-company-path.d.ts +3 -0
- package/dist/lib/lanes/checked-company-path.js +39 -0
- package/dist/lib/lanes/claude-balance.d.ts +97 -0
- package/dist/lib/lanes/claude-balance.js +319 -0
- package/dist/lib/lanes/compaction.d.ts +110 -0
- package/dist/lib/lanes/compaction.js +293 -0
- package/dist/lib/lanes/config.d.ts +94 -0
- package/dist/lib/lanes/config.js +606 -0
- package/dist/lib/lanes/constants.d.ts +3 -0
- package/dist/lib/lanes/constants.js +3 -0
- package/dist/lib/lanes/delivery-core.d.ts +15 -0
- package/dist/lib/lanes/delivery-core.js +21 -0
- package/dist/lib/lanes/delivery.d.ts +180 -0
- package/dist/lib/lanes/delivery.js +443 -0
- package/dist/lib/lanes/disk-guard.d.ts +65 -0
- package/dist/lib/lanes/disk-guard.js +172 -0
- package/dist/lib/lanes/dropbox.d.ts +129 -0
- package/dist/lib/lanes/dropbox.js +601 -0
- package/dist/lib/lanes/effort.d.ts +51 -0
- package/dist/lib/lanes/effort.js +113 -0
- package/dist/lib/lanes/envelope-repair-dispatch.d.ts +26 -0
- package/dist/lib/lanes/envelope-repair-dispatch.js +74 -0
- package/dist/lib/lanes/errors.d.ts +39 -0
- package/dist/lib/lanes/errors.js +72 -0
- package/dist/lib/lanes/flag-keys.d.ts +25 -0
- package/dist/lib/lanes/flag-keys.js +25 -0
- package/dist/lib/lanes/grants.d.ts +30 -0
- package/dist/lib/lanes/grants.js +171 -0
- package/dist/lib/lanes/hire-grant-dispatch.d.ts +29 -0
- package/dist/lib/lanes/hire-grant-dispatch.js +315 -0
- package/dist/lib/lanes/hooks-install.d.ts +82 -0
- package/dist/lib/lanes/hooks-install.js +555 -0
- package/dist/lib/lanes/host-capacity.d.ts +69 -0
- package/dist/lib/lanes/host-capacity.js +254 -0
- package/dist/lib/lanes/hq-root.d.ts +19 -0
- package/dist/lib/lanes/hq-root.js +28 -0
- package/dist/lib/lanes/index.d.ts +76 -0
- package/dist/lib/lanes/index.js +42 -0
- package/dist/lib/lanes/keep-alive-audit.d.ts +47 -0
- package/dist/lib/lanes/keep-alive-audit.js +370 -0
- package/dist/lib/lanes/keep-alive.d.ts +68 -0
- package/dist/lib/lanes/keep-alive.js +343 -0
- package/dist/lib/lanes/kr-freshness.d.ts +76 -0
- package/dist/lib/lanes/kr-freshness.js +413 -0
- package/dist/lib/lanes/lane-company.d.ts +10 -0
- package/dist/lib/lanes/lane-company.js +41 -0
- package/dist/lib/lanes/liveness.d.ts +108 -0
- package/dist/lib/lanes/liveness.js +396 -0
- package/dist/lib/lanes/machine-identity.d.ts +34 -0
- package/dist/lib/lanes/machine-identity.js +92 -0
- package/dist/lib/lanes/manager-status-gate.d.ts +17 -0
- package/dist/lib/lanes/manager-status-gate.js +133 -0
- package/dist/lib/lanes/merge-command.d.ts +15 -0
- package/dist/lib/lanes/merge-command.js +629 -0
- package/dist/lib/lanes/mesh-events.d.ts +127 -0
- package/dist/lib/lanes/mesh-events.js +564 -0
- package/dist/lib/lanes/message-replay.d.ts +21 -0
- package/dist/lib/lanes/message-replay.js +122 -0
- package/dist/lib/lanes/models.d.ts +86 -0
- package/dist/lib/lanes/models.js +234 -0
- package/dist/lib/lanes/monitor.d.ts +48 -0
- package/dist/lib/lanes/monitor.js +428 -0
- package/dist/lib/lanes/move-account.d.ts +56 -0
- package/dist/lib/lanes/move-account.js +193 -0
- package/dist/lib/lanes/orphans.d.ts +25 -0
- package/dist/lib/lanes/orphans.js +102 -0
- package/dist/lib/lanes/outpost-dispatch.d.ts +156 -0
- package/dist/lib/lanes/outpost-dispatch.js +293 -0
- package/dist/lib/lanes/outpost-hire-cache.d.ts +22 -0
- package/dist/lib/lanes/outpost-hire-cache.js +153 -0
- package/dist/lib/lanes/outpost-identity.d.ts +33 -0
- package/dist/lib/lanes/outpost-identity.js +59 -0
- package/dist/lib/lanes/outpost-profile-repin.d.ts +17 -0
- package/dist/lib/lanes/outpost-profile-repin.js +84 -0
- package/dist/lib/lanes/outpost-pruner-install.d.ts +37 -0
- package/dist/lib/lanes/outpost-pruner-install.js +238 -0
- package/dist/lib/lanes/outpost-registry-worker-approval.d.ts +18 -0
- package/dist/lib/lanes/outpost-registry-worker-approval.js +109 -0
- package/dist/lib/lanes/outpost-snapshot-memo.d.ts +6 -0
- package/dist/lib/lanes/outpost-snapshot-memo.js +14 -0
- package/dist/lib/lanes/outpost-worktree-pruner-flag.d.ts +19 -0
- package/dist/lib/lanes/outpost-worktree-pruner-flag.js +86 -0
- package/dist/lib/lanes/outpost-worktree-pruner.d.ts +62 -0
- package/dist/lib/lanes/outpost-worktree-pruner.js +1201 -0
- package/dist/lib/lanes/profile.d.ts +69 -0
- package/dist/lib/lanes/profile.js +552 -0
- package/dist/lib/lanes/provider-rejection.d.ts +86 -0
- package/dist/lib/lanes/provider-rejection.js +286 -0
- package/dist/lib/lanes/questions.d.ts +90 -0
- package/dist/lib/lanes/questions.js +384 -0
- package/dist/lib/lanes/quota.d.ts +134 -0
- package/dist/lib/lanes/quota.js +471 -0
- package/dist/lib/lanes/reconcile-install.d.ts +90 -0
- package/dist/lib/lanes/reconcile-install.js +257 -0
- package/dist/lib/lanes/reconcile.d.ts +161 -0
- package/dist/lib/lanes/reconcile.js +3343 -0
- package/dist/lib/lanes/registry-flag.d.ts +35 -0
- package/dist/lib/lanes/registry-flag.js +164 -0
- package/dist/lib/lanes/registry-persona.d.ts +20 -0
- package/dist/lib/lanes/registry-persona.js +329 -0
- package/dist/lib/lanes/registry.d.ts +122 -0
- package/dist/lib/lanes/registry.js +570 -0
- package/dist/lib/lanes/reviews.d.ts +38 -0
- package/dist/lib/lanes/reviews.js +395 -0
- package/dist/lib/lanes/runaway-tool-guard.d.ts +38 -0
- package/dist/lib/lanes/runaway-tool-guard.js +284 -0
- package/dist/lib/lanes/session-relink.d.ts +25 -0
- package/dist/lib/lanes/session-relink.js +216 -0
- package/dist/lib/lanes/spawn.d.ts +355 -0
- package/dist/lib/lanes/spawn.js +2668 -0
- package/dist/lib/lanes/ssm-command-context.d.ts +12 -0
- package/dist/lib/lanes/ssm-command-context.js +52 -0
- package/dist/lib/lanes/store.d.ts +91 -0
- package/dist/lib/lanes/store.js +1822 -0
- package/dist/lib/lanes/stories.d.ts +23 -0
- package/dist/lib/lanes/stories.js +92 -0
- package/dist/lib/lanes/story-ledger.d.ts +80 -0
- package/dist/lib/lanes/story-ledger.js +815 -0
- package/dist/lib/lanes/story-switch.d.ts +21 -0
- package/dist/lib/lanes/story-switch.js +75 -0
- package/dist/lib/lanes/text-scan.d.ts +11 -0
- package/dist/lib/lanes/text-scan.js +103 -0
- package/dist/lib/lanes/throttle.d.ts +116 -0
- package/dist/lib/lanes/throttle.js +437 -0
- package/dist/lib/lanes/timestamp.d.ts +3 -0
- package/dist/lib/lanes/timestamp.js +26 -0
- package/dist/lib/lanes/tracker-checks.d.ts +77 -0
- package/dist/lib/lanes/tracker-checks.js +134 -0
- package/dist/lib/lanes/tracker-report-state.d.ts +10 -0
- package/dist/lib/lanes/tracker-report-state.js +124 -0
- package/dist/lib/lanes/tracker-report.d.ts +203 -0
- package/dist/lib/lanes/tracker-report.js +522 -0
- package/dist/lib/lanes/tracker-store.d.ts +18 -0
- package/dist/lib/lanes/tracker-store.js +106 -0
- package/dist/lib/lanes/types.d.ts +1030 -0
- package/dist/lib/lanes/types.js +418 -0
- package/dist/lib/lanes/wait.d.ts +39 -0
- package/dist/lib/lanes/wait.js +159 -0
- package/dist/lib/lanes/watch.d.ts +39 -0
- package/dist/lib/lanes/watch.js +249 -0
- package/dist/lib/lanes/watcher-main.d.ts +11 -0
- package/dist/lib/lanes/watcher-main.js +108 -0
- package/dist/lib/lanes/watcher.d.ts +287 -0
- package/dist/lib/lanes/watcher.js +1972 -0
- package/dist/lib/mesh/api.d.ts +103 -10
- package/dist/lib/mesh/api.js +334 -64
- package/dist/lib/mesh/client.d.ts +3 -2
- package/dist/lib/mesh/client.js +26 -7
- package/dist/lib/mesh/denial-codes.d.ts +5 -0
- package/dist/lib/mesh/denial-codes.js +14 -0
- package/dist/lib/mesh/live/backfill-held.d.ts +67 -16
- package/dist/lib/mesh/live/backfill-held.js +415 -61
- package/dist/lib/mesh/live/backoff.d.ts +2 -2
- package/dist/lib/mesh/live/backoff.js +16 -3
- package/dist/lib/mesh/live/daemon/board-refresh.d.ts +7 -1
- package/dist/lib/mesh/live/daemon/board-refresh.js +78 -30
- package/dist/lib/mesh/live/daemon/config.d.ts +36 -0
- package/dist/lib/mesh/live/daemon/config.js +120 -0
- package/dist/lib/mesh/live/daemon/credentials.d.ts +64 -10
- package/dist/lib/mesh/live/daemon/credentials.js +270 -20
- package/dist/lib/mesh/live/daemon/doctor.d.ts +53 -0
- package/dist/lib/mesh/live/daemon/doctor.js +190 -6
- package/dist/lib/mesh/live/daemon/index.d.ts +13 -10
- package/dist/lib/mesh/live/daemon/index.js +7 -6
- package/dist/lib/mesh/live/daemon/install.d.ts +255 -1
- package/dist/lib/mesh/live/daemon/install.js +811 -13
- package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +43 -0
- package/dist/lib/mesh/live/daemon/legacy-listen.js +89 -0
- package/dist/lib/mesh/live/daemon/live-cache.d.ts +26 -0
- package/dist/lib/mesh/live/daemon/live-cache.js +116 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +7 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.js +2 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +2 -0
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +10 -0
- package/dist/lib/mesh/live/daemon/paths.d.ts +2 -0
- package/dist/lib/mesh/live/daemon/paths.js +2 -0
- package/dist/lib/mesh/live/daemon/presence.d.ts +24 -5
- package/dist/lib/mesh/live/daemon/presence.js +79 -10
- package/dist/lib/mesh/live/daemon/run.d.ts +48 -2
- package/dist/lib/mesh/live/daemon/run.js +485 -33
- package/dist/lib/mesh/live/daemon/state.d.ts +19 -2
- package/dist/lib/mesh/live/daemon/state.js +34 -2
- package/dist/lib/mesh/live/daemon/transcript-watch.d.ts +45 -9
- package/dist/lib/mesh/live/daemon/transcript-watch.js +227 -31
- package/dist/lib/mesh/live/daemon/version-drift.d.ts +5 -0
- package/dist/lib/mesh/live/daemon/version-drift.js +47 -0
- package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +32 -0
- package/dist/lib/mesh/live/daemon/work-subscribe.js +262 -0
- package/dist/lib/mesh/live/emit-client.d.ts +8 -0
- package/dist/lib/mesh/live/emit-client.js +23 -8
- package/dist/lib/mesh/live/emit-evidence.d.ts +19 -0
- package/dist/lib/mesh/live/emit-evidence.js +20 -2
- package/dist/lib/mesh/live/emit.d.ts +9 -0
- package/dist/lib/mesh/live/emit.js +28 -2
- package/dist/lib/mesh/live/enqueue.d.ts +5 -0
- package/dist/lib/mesh/live/enqueue.js +19 -0
- package/dist/lib/mesh/live/flush.d.ts +17 -5
- package/dist/lib/mesh/live/flush.js +391 -38
- package/dist/lib/mesh/live/format-spool-line.d.ts +5 -2
- package/dist/lib/mesh/live/format-spool-line.js +10 -0
- package/dist/lib/mesh/live/paths.d.ts +2 -0
- package/dist/lib/mesh/live/paths.js +4 -0
- package/dist/lib/mesh/live/report-summary.d.ts +45 -0
- package/dist/lib/mesh/live/report-summary.js +234 -0
- package/dist/lib/mesh/live/session-event.schema.json +24 -1
- package/dist/lib/mesh/live/session-events-client.d.ts +2 -0
- package/dist/lib/mesh/live/session-events-client.js +26 -0
- package/dist/lib/mesh/live/session-seq.d.ts +4 -0
- package/dist/lib/mesh/live/session-seq.js +33 -0
- package/dist/lib/mesh/live/spool.d.ts +19 -0
- package/dist/lib/mesh/live/spool.js +269 -3
- package/dist/lib/mesh/live/validate-session-event.d.ts +1 -1
- package/dist/lib/mesh/live/validate-session-event.js +1 -1
- package/dist/lib/mesh/project-board.d.ts +65 -0
- package/dist/lib/mesh/project-board.js +181 -0
- package/dist/lib/mesh/story-status.d.ts +22 -0
- package/dist/lib/mesh/story-status.js +49 -0
- package/dist/lib/monitor.d.ts +149 -0
- package/dist/lib/monitor.js +519 -0
- package/dist/lib/node-binary.d.ts +50 -0
- package/dist/lib/node-binary.js +133 -0
- package/dist/lib/notify-recipient.d.ts +7 -0
- package/dist/lib/notify-recipient.js +11 -0
- package/dist/lib/onboarding/checkpoint.d.ts +13 -0
- package/dist/lib/onboarding/checkpoint.js +44 -0
- package/dist/lib/onboarding/cli/onboard.d.ts +53 -0
- package/dist/lib/onboarding/cli/onboard.js +135 -0
- package/dist/lib/onboarding/cli/prompts.d.ts +28 -0
- package/dist/lib/onboarding/cli/prompts.js +83 -0
- package/dist/lib/onboarding/errors.d.ts +34 -0
- package/dist/lib/onboarding/errors.js +59 -0
- package/dist/lib/onboarding/index.d.ts +13 -0
- package/dist/lib/onboarding/index.js +13 -0
- package/dist/lib/onboarding/orchestrator.d.ts +47 -0
- package/dist/lib/onboarding/orchestrator.js +569 -0
- package/dist/lib/onboarding/types.d.ts +79 -0
- package/dist/lib/onboarding/types.js +8 -0
- package/dist/lib/plan-limit-nag.d.ts +102 -6
- package/dist/lib/plan-limit-nag.js +348 -43
- package/dist/lib/policy-validator.d.ts +7 -0
- package/dist/lib/policy-validator.js +187 -0
- package/dist/lib/process-flag-company-context.d.ts +8 -0
- package/dist/lib/process-flag-company-context.js +67 -0
- package/dist/lib/report-publish.d.ts +175 -0
- package/dist/lib/report-publish.js +421 -0
- package/dist/lib/report-run.d.ts +62 -0
- package/dist/lib/report-run.js +123 -0
- package/dist/lib/report-snapshot.d.ts +12 -0
- package/dist/lib/report-snapshot.js +135 -0
- package/dist/lib/report-templates.d.ts +9 -0
- package/dist/lib/report-templates.js +21 -0
- package/dist/lib/scaffold-cli-floor.d.ts +8 -0
- package/dist/lib/scaffold-cli-floor.js +50 -0
- package/dist/lib/scan-packages/index.d.ts +2 -0
- package/dist/lib/scan-packages/index.js +168 -6
- package/dist/lib/search-index/background.d.ts +8 -1
- package/dist/lib/search-index/background.js +55 -200
- package/dist/lib/search-index/collection-path-repair-flag.d.ts +4 -0
- package/dist/lib/search-index/collection-path-repair-flag.js +7 -0
- package/dist/lib/search-index/embed-lock.d.ts +34 -0
- package/dist/lib/search-index/embed-lock.js +295 -0
- package/dist/lib/search-index/index.d.ts +12 -0
- package/dist/lib/search-index/index.js +153 -7
- package/dist/lib/search-index/load-gate.d.ts +57 -0
- package/dist/lib/search-index/load-gate.js +270 -0
- package/dist/lib/search-index/max-doc-bytes.d.ts +219 -0
- package/dist/lib/search-index/max-doc-bytes.js +463 -0
- package/dist/lib/search-index/qmd-exit-diagnostics.d.ts +5 -0
- package/dist/lib/search-index/qmd-exit-diagnostics.js +40 -0
- package/dist/lib/search-index/reindex-single-flight-flag.d.ts +5 -0
- package/dist/lib/search-index/reindex-single-flight-flag.js +8 -0
- package/dist/lib/service-manager/index.d.ts +42 -0
- package/dist/lib/service-manager/index.js +105 -0
- package/dist/lib/service-manager/launchd.d.ts +81 -0
- package/dist/lib/service-manager/launchd.js +212 -0
- package/dist/lib/service-manager/systemd.d.ts +19 -0
- package/dist/lib/service-manager/systemd.js +72 -0
- package/dist/lib/service-manager/types.d.ts +34 -0
- package/dist/lib/service-manager/types.js +26 -0
- package/dist/lib/test-utils/isolated-flag-company-context.d.ts +3 -0
- package/dist/lib/test-utils/isolated-flag-company-context.js +18 -0
- package/dist/lib/work-context/bind-best.d.ts +66 -0
- package/dist/lib/work-context/bind-best.js +344 -0
- package/dist/lib/work-context/bind-calling-session.d.ts +26 -0
- package/dist/lib/work-context/bind-calling-session.js +63 -0
- package/dist/lib/work-context/company-rebind.d.ts +23 -0
- package/dist/lib/work-context/company-rebind.js +59 -0
- package/dist/lib/work-context/company.d.ts +22 -20
- package/dist/lib/work-context/company.js +124 -40
- package/dist/lib/work-context/config.d.ts +58 -11
- package/dist/lib/work-context/config.js +334 -83
- package/dist/lib/work-context/contract.d.ts +13 -0
- package/dist/lib/work-context/contract.schema.json +3 -1
- package/dist/lib/work-context/default-company.d.ts +43 -0
- package/dist/lib/work-context/default-company.js +83 -0
- package/dist/lib/work-context/outbox-quarantine-status-flag.d.ts +4 -0
- package/dist/lib/work-context/outbox-quarantine-status-flag.js +7 -0
- package/dist/lib/work-context/outbox.d.ts +27 -5
- package/dist/lib/work-context/outbox.js +135 -6
- package/dist/lib/work-context/prd-sync.d.ts +56 -0
- package/dist/lib/work-context/prd-sync.js +197 -0
- package/dist/lib/work-context/preflight-contract.d.ts +28 -0
- package/dist/lib/work-context/preflight-contract.js +85 -0
- package/dist/lib/work-context/prompt-rebind.d.ts +25 -0
- package/dist/lib/work-context/prompt-rebind.js +85 -0
- package/dist/lib/work-context/reconcile.d.ts +15 -0
- package/dist/lib/work-context/reconcile.js +405 -29
- package/dist/lib/work-context/state.d.ts +93 -10
- package/dist/lib/work-context/state.js +342 -29
- package/dist/lib/work-context/windows-acl.d.ts +123 -0
- package/dist/lib/work-context/windows-acl.js +425 -0
- package/dist/lib/workers-registry/index.js +62 -8
- package/dist/lib/workers-registry/read.d.ts +15 -0
- package/dist/lib/workers-registry/read.js +17 -0
- package/dist/main.d.ts +32 -0
- package/dist/main.js +273 -73
- package/dist/native-fast-route.d.ts +7 -0
- package/dist/native-fast-route.js +45 -0
- package/dist/node-network-compat-core.d.ts +12 -0
- package/dist/node-network-compat-core.js +41 -0
- package/dist/node-network-compat-fast.d.ts +7 -0
- package/dist/node-network-compat-fast.js +23 -0
- package/dist/node-network-compat.d.ts +2 -30
- package/dist/node-network-compat.js +4 -51
- package/dist/node-preflight.d.ts +7 -1
- package/dist/node-preflight.js +5 -5
- package/dist/register-all.d.ts +4 -29
- package/dist/register-all.js +4 -233
- package/dist/run/discover-schemas.d.ts +2 -1
- package/dist/run/env-graph-guard.d.ts +2 -2
- package/dist/run/env-graph-guard.js +5 -2
- package/dist/run/hq-plugin.d.ts +4 -0
- package/dist/run/hq-plugin.js +36 -8
- package/dist/secrets-env-fast-path.d.ts +5 -0
- package/dist/secrets-env-fast-path.js +16 -0
- package/dist/secrets-env-fast-route.d.ts +18 -0
- package/dist/secrets-env-fast-route.js +54 -0
- package/dist/sentry-before-send.js +80 -0
- package/dist/sentry.d.ts +16 -4
- package/dist/sentry.js +179 -18
- package/dist/startup-registration.d.ts +26 -2
- package/dist/startup-registration.js +116 -15
- package/dist/utils/checkpoint-stamp-write-error.d.ts +28 -0
- package/dist/utils/checkpoint-stamp-write-error.js +99 -0
- package/dist/utils/cli-network-lifecycle.d.ts +4 -0
- package/dist/utils/cli-network-lifecycle.js +11 -0
- package/dist/utils/cli-telemetry.d.ts +75 -1
- package/dist/utils/cli-telemetry.js +433 -7
- package/dist/utils/client-health.d.ts +0 -4
- package/dist/utils/client-health.js +2 -2
- package/dist/utils/cognito-refresh-sentry.d.ts +3 -0
- package/dist/utils/cognito-refresh-sentry.js +49 -0
- package/dist/utils/cognito-session.d.ts +71 -0
- package/dist/utils/cognito-session.js +481 -27
- package/dist/utils/console-origin.d.ts +9 -0
- package/dist/utils/console-origin.js +28 -0
- package/dist/utils/contribution-table.d.ts +1 -1
- package/dist/utils/core-eval-trigger.d.ts +4 -0
- package/dist/utils/core-eval-trigger.js +88 -0
- package/dist/utils/environmental-error.d.ts +18 -0
- package/dist/utils/environmental-error.js +240 -7
- package/dist/utils/exclusive-lock.d.ts +32 -0
- package/dist/utils/exclusive-lock.js +75 -0
- package/dist/utils/expected-cli-error.d.ts +2 -0
- package/dist/utils/expected-cli-error.js +4 -0
- package/dist/utils/fast-stream-errors.d.ts +12 -0
- package/dist/utils/fast-stream-errors.js +18 -0
- package/dist/utils/feedback-diagnostics.d.ts +2 -1
- package/dist/utils/feedback-log-bundle.d.ts +51 -26
- package/dist/utils/feedback-log-bundle.js +211 -31
- package/dist/utils/feedback-logs.d.ts +18 -47
- package/dist/utils/feedback-logs.js +50 -21
- package/dist/utils/feedback-screenshots.d.ts +0 -1
- package/dist/utils/feedback-screenshots.js +1 -1
- package/dist/utils/files-browse-acl.d.ts +5 -0
- package/dist/utils/files-browse-acl.js +11 -0
- package/dist/utils/hq-core-yaml.d.ts +10 -0
- package/dist/utils/hq-core-yaml.js +40 -0
- package/dist/utils/hq-root-resolver.d.ts +13 -0
- package/dist/utils/hq-root-resolver.js +103 -0
- package/dist/utils/hq-roots.d.ts +25 -2
- package/dist/utils/hq-roots.js +67 -7
- package/dist/utils/incomplete-install-error.d.ts +87 -19
- package/dist/utils/incomplete-install-error.js +319 -68
- package/dist/utils/install-tree-torn.d.ts +260 -24
- package/dist/utils/install-tree-torn.js +998 -51
- package/dist/utils/large-file-guard.d.ts +0 -10
- package/dist/utils/large-file-guard.js +1 -1
- package/dist/utils/local-files-overview.d.ts +4 -8
- package/dist/utils/local-files-overview.js +48 -7
- package/dist/utils/login-provider.d.ts +7 -0
- package/dist/utils/login-provider.js +34 -0
- package/dist/utils/pack-contributions.d.ts +2 -14
- package/dist/utils/pack-contributions.js +7 -44
- package/dist/utils/package-root-diagnostics.d.ts +1 -1
- package/dist/utils/people.d.ts +7 -11
- package/dist/utils/people.js +5 -20
- package/dist/utils/plan-gate-error.d.ts +52 -10
- package/dist/utils/plan-gate-error.js +364 -41
- package/dist/utils/qmd-model-download-error.d.ts +0 -8
- package/dist/utils/qmd-model-download-error.js +1 -1
- package/dist/utils/qmd-query-document-error.d.ts +0 -6
- package/dist/utils/qmd-query-document-error.js +1 -1
- package/dist/utils/redact-error-text.d.ts +0 -2
- package/dist/utils/redact-error-text.js +3 -2
- package/dist/utils/redact-url.d.ts +14 -0
- package/dist/utils/redact-url.js +218 -0
- package/dist/utils/run-bundled-script.d.ts +6 -0
- package/dist/utils/run-bundled-script.js +117 -4
- package/dist/utils/sandbox-runner-client.d.ts +2 -1
- package/dist/utils/scaffold-fast-import-guard.d.ts +2 -0
- package/dist/utils/scaffold-fast-import-guard.js +40 -0
- package/dist/utils/scaffold-packlist-guard.d.ts +7 -0
- package/dist/utils/scaffold-packlist-guard.js +23 -0
- package/dist/utils/scaffold-sibling-references.d.ts +22 -0
- package/dist/utils/scaffold-sibling-references.js +156 -0
- package/dist/utils/secret-load-availability.d.ts +8 -0
- package/dist/utils/secret-load-availability.js +54 -0
- package/dist/utils/secrets-cache.d.ts +7 -3
- package/dist/utils/secrets-cache.js +162 -14
- package/dist/utils/self-update.d.ts +34 -1
- package/dist/utils/self-update.js +660 -42
- package/dist/utils/sentry-fingerprint.d.ts +23 -1
- package/dist/utils/sentry-fingerprint.js +223 -31
- package/dist/utils/staged-install.d.ts +34 -0
- package/dist/utils/staged-install.js +346 -0
- package/dist/utils/staged-npm-install.d.ts +16 -0
- package/dist/utils/staged-npm-install.js +264 -0
- package/dist/utils/sync-log-sources.d.ts +15 -0
- package/dist/utils/sync-log-sources.js +36 -0
- package/dist/utils/table-width.d.ts +7 -0
- package/dist/utils/table-width.js +15 -0
- package/dist/utils/team-upgrade.d.ts +1 -1
- package/dist/utils/team-upgrade.js +4 -3
- package/dist/utils/update-command-supervisor.cjs +247 -0
- package/dist/utils/upload-author.d.ts +15 -0
- package/dist/utils/upload-author.js +39 -0
- package/dist/utils/vault-api.d.ts +21 -1
- package/dist/utils/vault-api.js +251 -84
- package/dist/utils/version-check.d.ts +11 -1
- package/dist/utils/version-check.js +32 -3
- package/dist/utils/version-gate.d.ts +101 -17
- package/dist/utils/version-gate.js +645 -70
- package/dist/utils/version-report.d.ts +27 -0
- package/dist/utils/version-report.js +105 -0
- package/dist/utils/windows-spawn.d.ts +6 -0
- package/dist/utils/windows-spawn.js +37 -0
- package/dist/version-request.d.ts +14 -0
- package/dist/version-request.js +36 -0
- package/package.json +20 -8
- package/scripts/mesh-daemon-if-stale.mjs +20 -0
- package/templates/reports/blank.md +3 -0
- package/templates/reports/daily-digest.md +11 -0
- package/templates/runbooks/update-report.md +21 -0
- package/dist/commands/scaffold-fast.d.ts +0 -41
- package/dist/commands/scaffold-fast.js +0 -57
- package/dist/lib/work-context/index.d.ts +0 -25
- package/dist/lib/work-context/index.js +0 -21
|
@@ -11,6 +11,7 @@ export type QmdProcessResult = {
|
|
|
11
11
|
*/
|
|
12
12
|
signal?: NodeJS.Signals | string | null;
|
|
13
13
|
};
|
|
14
|
+
export type QmdUpdateEntryPath = 'index-sync';
|
|
14
15
|
export type QmdProcessRunner = (bin: string, args: string[], options: {
|
|
15
16
|
cwd?: string;
|
|
16
17
|
env?: NodeJS.ProcessEnv;
|
|
@@ -113,6 +114,10 @@ export declare class QmdExitError extends Error {
|
|
|
113
114
|
readonly stdout: string;
|
|
114
115
|
readonly stderr: string;
|
|
115
116
|
name: string;
|
|
117
|
+
/** Safe route labels for telemetry; raw qmd streams remain local to the error. */
|
|
118
|
+
entryPath?: QmdUpdateEntryPath;
|
|
119
|
+
/** Present only when the invoked executable is the bundled qmd. */
|
|
120
|
+
qmdVersion?: string;
|
|
116
121
|
constructor(message: string, args: string[], status: number | null, stdout: string, stderr: string);
|
|
117
122
|
}
|
|
118
123
|
export declare class QmdCollectionMissingError extends QmdExitError {
|
|
@@ -375,6 +380,7 @@ export declare function lastQmdStoreEnsureOutcome(): QmdStoreEnsureOutcome | und
|
|
|
375
380
|
* An upstream-contract test pins this rule to the INSTALLED qmd so a bump that
|
|
376
381
|
* changes it turns CI red instead of silently restoring the noise.
|
|
377
382
|
*/
|
|
383
|
+
export declare function resolveQmdHome(env?: NodeJS.ProcessEnv): string;
|
|
378
384
|
export declare function resolveQmdStoreDir(env?: NodeJS.ProcessEnv, cwd?: string): string;
|
|
379
385
|
export type EnsureQmdStoreDirOptions = {
|
|
380
386
|
/**
|
|
@@ -506,6 +512,8 @@ export type ResolveQmdInvocationOptions = {
|
|
|
506
512
|
export declare function resolveQmdInvocation(options?: ResolveQmdInvocationOptions): QmdInvocation;
|
|
507
513
|
export type RunQmdOptions = {
|
|
508
514
|
bin?: string;
|
|
515
|
+
/** Source of an update failure, used only for bounded Sentry tags. */
|
|
516
|
+
entryPath?: QmdUpdateEntryPath;
|
|
509
517
|
cwd?: string;
|
|
510
518
|
env?: NodeJS.ProcessEnv;
|
|
511
519
|
runner?: QmdProcessRunner;
|
|
@@ -536,10 +544,14 @@ export declare function deriveCollections(hqRoot: string): SearchCollection[];
|
|
|
536
544
|
export type ReconcileCollectionsOptions = {
|
|
537
545
|
bin?: string;
|
|
538
546
|
runner?: QmdProcessRunner;
|
|
547
|
+
/** Test seam for the default-off collection-path repair rollout. */
|
|
548
|
+
repairPathDrift?: boolean;
|
|
539
549
|
};
|
|
540
550
|
/**
|
|
541
551
|
* Register expected collections that qmd does not yet know about, returning the
|
|
542
552
|
* collections this call actually created (a `collection add` that exited 0).
|
|
553
|
+
* When the default-off hq-flags rollout is enabled, it also replaces a registered
|
|
554
|
+
* collection whose path matches a known prior HQ-managed layout.
|
|
543
555
|
*
|
|
544
556
|
* A same-name idempotent duplicate — qmd already owns the exact requested name
|
|
545
557
|
* in its YAML config (`Collection '<name>' already exists.`), while the
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
|
-
import { createRequire } from 'node:module';
|
|
4
3
|
import * as os from 'node:os';
|
|
5
4
|
import * as path from 'node:path';
|
|
6
5
|
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { dump, load } from 'js-yaml';
|
|
7
7
|
import { isQmdModelDownloadError } from '../../utils/qmd-model-download-error.js';
|
|
8
8
|
import { isQmdModuleMissingError } from '../../utils/qmd-module-missing-error.js';
|
|
9
9
|
import { isQmdNativeBindingError } from '../../utils/qmd-native-binding-error.js';
|
|
10
10
|
import { isQmdQueryDocumentError } from '../../utils/qmd-query-document-error.js';
|
|
11
11
|
import { isQmdStoreMissingError } from '../../utils/qmd-store-missing-error.js';
|
|
12
12
|
import { isQmdStoreUnopenableError } from '../../utils/qmd-store-unopenable-error.js';
|
|
13
|
+
import { markExpectedUserError } from '../../utils/expected-cli-error.js';
|
|
13
14
|
import { redactErrorText } from '../../utils/redact-error-text.js';
|
|
14
15
|
import { planCommandSpawn } from '../../utils/windows-spawn.js';
|
|
15
|
-
|
|
16
|
+
import { resolveQmdConfigPath } from './max-doc-bytes.js';
|
|
17
|
+
import { qmdCollectionPathRepairEnabled } from './collection-path-repair-flag.js';
|
|
16
18
|
/** The `path` implementation for a (possibly injected) platform. */
|
|
17
19
|
function pathFor(platform) {
|
|
18
20
|
return platform === 'win32' ? path.win32 : path.posix;
|
|
@@ -74,6 +76,10 @@ export class QmdExitError extends Error {
|
|
|
74
76
|
stdout;
|
|
75
77
|
stderr;
|
|
76
78
|
name = 'QmdExitError';
|
|
79
|
+
/** Safe route labels for telemetry; raw qmd streams remain local to the error. */
|
|
80
|
+
entryPath;
|
|
81
|
+
/** Present only when the invoked executable is the bundled qmd. */
|
|
82
|
+
qmdVersion;
|
|
77
83
|
constructor(message, args, status, stdout, stderr) {
|
|
78
84
|
super(message);
|
|
79
85
|
this.args = args;
|
|
@@ -428,13 +434,16 @@ export function lastQmdStoreEnsureOutcome() {
|
|
|
428
434
|
* An upstream-contract test pins this rule to the INSTALLED qmd so a bump that
|
|
429
435
|
* changes it turns CI red instead of silently restoring the noise.
|
|
430
436
|
*/
|
|
437
|
+
export function resolveQmdHome(env = process.env) {
|
|
438
|
+
return env.HOME || env.USERPROFILE || os.homedir() || '/tmp';
|
|
439
|
+
}
|
|
431
440
|
export function resolveQmdStoreDir(env = process.env, cwd = process.cwd()) {
|
|
432
441
|
const indexPath = env.INDEX_PATH;
|
|
433
442
|
// path.resolve leaves an absolute INDEX_PATH untouched and anchors a relative
|
|
434
443
|
// one to the child cwd, so the probed/stamped directory is the one qmd uses.
|
|
435
444
|
if (indexPath)
|
|
436
445
|
return path.dirname(path.resolve(cwd, indexPath));
|
|
437
|
-
const home = env
|
|
446
|
+
const home = resolveQmdHome(env);
|
|
438
447
|
const cacheDir = env.XDG_CACHE_HOME || path.join(home, '.cache');
|
|
439
448
|
return path.join(cacheDir, 'qmd');
|
|
440
449
|
}
|
|
@@ -1002,6 +1011,22 @@ function describeQmdTermination(stdout, stderr) {
|
|
|
1002
1011
|
return `qmd reported: ${summary.reason}`;
|
|
1003
1012
|
return '';
|
|
1004
1013
|
}
|
|
1014
|
+
/**
|
|
1015
|
+
* qmd caller-state failures that the top-level boundary may surface without a
|
|
1016
|
+
* crash report. The match is deliberately against qmd's raw stderr and a
|
|
1017
|
+
* closed subcommand set: a query containing these words must not change the
|
|
1018
|
+
* disposition of an unrelated qmd exit.
|
|
1019
|
+
*/
|
|
1020
|
+
function isExpectedQmdCallerFailure(args, stderr) {
|
|
1021
|
+
const subcommand = args[0];
|
|
1022
|
+
if (subcommand === 'get') {
|
|
1023
|
+
return /^Document not found:\s+[^\r\n]+$/m.test(stderr);
|
|
1024
|
+
}
|
|
1025
|
+
if (subcommand === 'collection') {
|
|
1026
|
+
return /(?:^|\b)Failed to parse\s+[^\r\n]+:\s*.+$/m.test(stderr);
|
|
1027
|
+
}
|
|
1028
|
+
return false;
|
|
1029
|
+
}
|
|
1005
1030
|
/** Normalise a spawn result and raise the typed qmd failures. */
|
|
1006
1031
|
function finishRunQmd(result, bin, args, attribution) {
|
|
1007
1032
|
const normalized = {
|
|
@@ -1212,7 +1237,26 @@ function finishRunQmd(result, bin, args, attribution) {
|
|
|
1212
1237
|
if (alreadyExists) {
|
|
1213
1238
|
throw new QmdCollectionExistsError(message, args, normalized.status, normalized.stdout, normalized.stderr, alreadyExists[1]);
|
|
1214
1239
|
}
|
|
1215
|
-
|
|
1240
|
+
const exitError = new QmdExitError(message, args, normalized.status, normalized.stdout, normalized.stderr);
|
|
1241
|
+
if (isExpectedQmdCallerFailure(args, normalized.stderr)) {
|
|
1242
|
+
throw markExpectedUserError(exitError);
|
|
1243
|
+
}
|
|
1244
|
+
throw exitError;
|
|
1245
|
+
}
|
|
1246
|
+
function finishRunQmdWithDiagnostics(result, bin, args, options, attribution) {
|
|
1247
|
+
try {
|
|
1248
|
+
return finishRunQmd(result, bin, args, attribution);
|
|
1249
|
+
}
|
|
1250
|
+
catch (error) {
|
|
1251
|
+
if (error instanceof QmdExitError) {
|
|
1252
|
+
if (args[0] === 'update' && options.entryPath)
|
|
1253
|
+
error.entryPath = options.entryPath;
|
|
1254
|
+
const bundledBins = [packageLocalBin(), packageLocalNodeEntry()].filter((candidate) => Boolean(candidate));
|
|
1255
|
+
if (bundledBins.includes(bin))
|
|
1256
|
+
error.qmdVersion = resolveQmdVersion();
|
|
1257
|
+
}
|
|
1258
|
+
throw error;
|
|
1259
|
+
}
|
|
1216
1260
|
}
|
|
1217
1261
|
/** Run qmd with captured output and typed failures. */
|
|
1218
1262
|
export function runQmd(args, options = {}) {
|
|
@@ -1221,7 +1265,7 @@ export function runQmd(args, options = {}) {
|
|
|
1221
1265
|
if (options.runner) {
|
|
1222
1266
|
const bin = options.bin ?? resolveQmdBin({ env: options.env });
|
|
1223
1267
|
const result = options.runner(bin, args, { cwd: options.cwd, env: options.env });
|
|
1224
|
-
return
|
|
1268
|
+
return finishRunQmdWithDiagnostics(result, bin, args, options);
|
|
1225
1269
|
}
|
|
1226
1270
|
// Default path: resolve the full invocation (shell-free Node launcher preferred)
|
|
1227
1271
|
// and spawn it through the shared Windows-aware plan. An explicit string bin is
|
|
@@ -1254,7 +1298,7 @@ export function runQmd(args, options = {}) {
|
|
|
1254
1298
|
// genuinely missing qmd — instead of blaming the launcher for all three
|
|
1255
1299
|
// (HQ-CLI-1A). `command` is the process actually spawned; `launcher` is qmd's
|
|
1256
1300
|
// file identity.
|
|
1257
|
-
return
|
|
1301
|
+
return finishRunQmdWithDiagnostics(result, launcher, args, options, {
|
|
1258
1302
|
command: invocation.command,
|
|
1259
1303
|
launcher,
|
|
1260
1304
|
cwd: options.cwd,
|
|
@@ -1328,9 +1372,90 @@ export function deriveCollections(hqRoot) {
|
|
|
1328
1372
|
}
|
|
1329
1373
|
return collections;
|
|
1330
1374
|
}
|
|
1375
|
+
function isRecord(value) {
|
|
1376
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
1377
|
+
}
|
|
1378
|
+
function qmdConfigPath(hqRoot) {
|
|
1379
|
+
const env = {
|
|
1380
|
+
...process.env,
|
|
1381
|
+
HOME: process.env.HOME ?? process.env.USERPROFILE ?? os.homedir(),
|
|
1382
|
+
};
|
|
1383
|
+
return resolveQmdConfigPath({ env, startDir: hqRoot });
|
|
1384
|
+
}
|
|
1385
|
+
/** Read qmd's configured collection metadata from the same config file its CLI uses. */
|
|
1386
|
+
function configuredCollections(hqRoot) {
|
|
1387
|
+
const configPath = qmdConfigPath(hqRoot);
|
|
1388
|
+
if (!configPath || !fs.existsSync(configPath))
|
|
1389
|
+
return new Map();
|
|
1390
|
+
const document = load(fs.readFileSync(configPath, 'utf8'));
|
|
1391
|
+
if (!isRecord(document) || !isRecord(document.collections))
|
|
1392
|
+
return new Map();
|
|
1393
|
+
return new Map(Object.entries(document.collections).flatMap(([name, config]) => isRecord(config) && typeof config.path === 'string' ? [[name, config]] : []));
|
|
1394
|
+
}
|
|
1395
|
+
/** Restore existing collection options after qmd's add command rewrites the entry. */
|
|
1396
|
+
function restoreCollectionMetadata(hqRoot, collection, previousConfig) {
|
|
1397
|
+
const configPath = qmdConfigPath(hqRoot);
|
|
1398
|
+
if (!configPath || !fs.existsSync(configPath)) {
|
|
1399
|
+
throw new Error(`QMD config disappeared while repairing collection '${collection.name}'`);
|
|
1400
|
+
}
|
|
1401
|
+
const document = load(fs.readFileSync(configPath, 'utf8'));
|
|
1402
|
+
if (!isRecord(document) || !isRecord(document.collections)) {
|
|
1403
|
+
throw new Error(`QMD config has no collections map while repairing '${collection.name}'`);
|
|
1404
|
+
}
|
|
1405
|
+
const currentConfig = document.collections[collection.name];
|
|
1406
|
+
document.collections[collection.name] = {
|
|
1407
|
+
...(isRecord(currentConfig) ? currentConfig : {}),
|
|
1408
|
+
...previousConfig,
|
|
1409
|
+
path: collection.path,
|
|
1410
|
+
};
|
|
1411
|
+
fs.writeFileSync(configPath, dump(document, { lineWidth: 0 }));
|
|
1412
|
+
}
|
|
1413
|
+
function resolvedPath(value) {
|
|
1414
|
+
const absolutePath = path.resolve(value);
|
|
1415
|
+
try {
|
|
1416
|
+
return fs.realpathSync(absolutePath);
|
|
1417
|
+
}
|
|
1418
|
+
catch {
|
|
1419
|
+
return absolutePath;
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
function comparablePath(value) {
|
|
1423
|
+
return process.platform === 'win32' ? value.toLowerCase() : value;
|
|
1424
|
+
}
|
|
1425
|
+
/** Repair a known HQ-managed path, including the former company knowledge mirror layout. */
|
|
1426
|
+
function isPreviousHqManagedPath(hqRoot, collection, configuredPath) {
|
|
1427
|
+
const root = resolvedPath(hqRoot);
|
|
1428
|
+
const expectedPath = resolvedPath(collection.path);
|
|
1429
|
+
const managedRelativePath = path.relative(root, expectedPath);
|
|
1430
|
+
if (!managedRelativePath ||
|
|
1431
|
+
path.isAbsolute(managedRelativePath) ||
|
|
1432
|
+
managedRelativePath === '..' ||
|
|
1433
|
+
managedRelativePath.startsWith(`..${path.sep}`)) {
|
|
1434
|
+
return false;
|
|
1435
|
+
}
|
|
1436
|
+
const actualPath = resolvedPath(path.resolve(hqRoot, configuredPath));
|
|
1437
|
+
const suffix = `${path.sep}${managedRelativePath}`;
|
|
1438
|
+
const actualForComparison = comparablePath(actualPath);
|
|
1439
|
+
const suffixForComparison = comparablePath(suffix);
|
|
1440
|
+
const prefixLength = actualForComparison.length - suffixForComparison.length;
|
|
1441
|
+
if (prefixLength > path.parse(actualPath).root.length && actualForComparison.endsWith(suffixForComparison)) {
|
|
1442
|
+
return true;
|
|
1443
|
+
}
|
|
1444
|
+
const expectedParts = managedRelativePath.split(path.sep);
|
|
1445
|
+
if (expectedParts.length !== 3 || expectedParts[0] !== 'companies' || expectedParts[2] !== 'knowledge') {
|
|
1446
|
+
return false;
|
|
1447
|
+
}
|
|
1448
|
+
const slug = expectedParts[1];
|
|
1449
|
+
if (!slug)
|
|
1450
|
+
return false;
|
|
1451
|
+
const formerMirrorPath = resolvedPath(path.join(root, 'repos', 'private', `knowledge-${slug}`));
|
|
1452
|
+
return comparablePath(actualPath) === comparablePath(formerMirrorPath);
|
|
1453
|
+
}
|
|
1331
1454
|
/**
|
|
1332
1455
|
* Register expected collections that qmd does not yet know about, returning the
|
|
1333
1456
|
* collections this call actually created (a `collection add` that exited 0).
|
|
1457
|
+
* When the default-off hq-flags rollout is enabled, it also replaces a registered
|
|
1458
|
+
* collection whose path matches a known prior HQ-managed layout.
|
|
1334
1459
|
*
|
|
1335
1460
|
* A same-name idempotent duplicate — qmd already owns the exact requested name
|
|
1336
1461
|
* in its YAML config (`Collection '<name>' already exists.`), while the
|
|
@@ -1346,11 +1471,29 @@ export function deriveCollections(hqRoot) {
|
|
|
1346
1471
|
export function reconcileCollections(hqRoot, options = {}) {
|
|
1347
1472
|
const runOptions = { bin: options.bin, runner: options.runner, cwd: hqRoot };
|
|
1348
1473
|
const registered = listRegisteredCollections(hqRoot, runOptions);
|
|
1349
|
-
const
|
|
1474
|
+
const expected = deriveCollections(hqRoot);
|
|
1475
|
+
const repairPathDrift = options.repairPathDrift ?? qmdCollectionPathRepairEnabled();
|
|
1476
|
+
const configured = repairPathDrift ? configuredCollections(hqRoot) : new Map();
|
|
1477
|
+
const stale = repairPathDrift
|
|
1478
|
+
? expected.filter((collection) => {
|
|
1479
|
+
const previousConfig = configured.get(collection.name);
|
|
1480
|
+
return previousConfig !== undefined
|
|
1481
|
+
&& comparablePath(resolvedPath(path.resolve(hqRoot, previousConfig.path))) !== comparablePath(resolvedPath(collection.path))
|
|
1482
|
+
&& isPreviousHqManagedPath(hqRoot, collection, previousConfig.path);
|
|
1483
|
+
})
|
|
1484
|
+
: [];
|
|
1485
|
+
for (const collection of stale) {
|
|
1486
|
+
runQmd(['collection', 'remove', collection.name], runOptions);
|
|
1487
|
+
registered.delete(collection.name);
|
|
1488
|
+
}
|
|
1489
|
+
const missing = expected.filter((collection) => !registered.has(collection.name));
|
|
1350
1490
|
const created = [];
|
|
1351
1491
|
for (const collection of missing) {
|
|
1352
1492
|
try {
|
|
1353
1493
|
runQmd(['collection', 'add', collection.path, '--name', collection.name, '--mask', collection.mask], runOptions);
|
|
1494
|
+
const previousConfig = configured.get(collection.name);
|
|
1495
|
+
if (previousConfig)
|
|
1496
|
+
restoreCollectionMetadata(hqRoot, collection, previousConfig);
|
|
1354
1497
|
created.push(collection);
|
|
1355
1498
|
}
|
|
1356
1499
|
catch (error) {
|
|
@@ -1359,6 +1502,9 @@ export function reconcileCollections(hqRoot, options = {}) {
|
|
|
1359
1502
|
// different collection — stays fatal.
|
|
1360
1503
|
if (!(error instanceof QmdCollectionExistsError) || error.collectionName !== collection.name)
|
|
1361
1504
|
throw error;
|
|
1505
|
+
const previousConfig = configured.get(collection.name);
|
|
1506
|
+
if (previousConfig)
|
|
1507
|
+
restoreCollectionMetadata(hqRoot, collection, previousConfig);
|
|
1362
1508
|
}
|
|
1363
1509
|
runQmd(['context', 'add', `qmd://${collection.name}`, collection.context], runOptions);
|
|
1364
1510
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as os from 'node:os';
|
|
2
|
+
export declare const DEFAULT_MAX_LOAD_PERCENT = 50;
|
|
3
|
+
/**
|
|
4
|
+
* Twelve requests is enough to avoid quietly starving a frequently requested
|
|
5
|
+
* index, while still leaving several opportunities for a busy machine to cool
|
|
6
|
+
* down before we spend CPU on an embed. The thirteenth request is forced.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MAX_CONSECUTIVE_DEFERRED_EMBEDS = 12;
|
|
9
|
+
/** Six hours bounds deferral even when indexing requests are infrequent. */
|
|
10
|
+
export declare const MAX_EMBED_DEFERRAL_SECONDS: number;
|
|
11
|
+
export type LoadGateDependencies = {
|
|
12
|
+
env: NodeJS.ProcessEnv;
|
|
13
|
+
now: () => number;
|
|
14
|
+
readFile: (file: string) => string;
|
|
15
|
+
writeFile: (file: string, contents: string) => void;
|
|
16
|
+
rename: (source: string, destination: string) => void;
|
|
17
|
+
mkdir: (directory: string) => void;
|
|
18
|
+
/** A synchronous seam so the existing synchronous qmd entry points stay synchronous. */
|
|
19
|
+
sleep: (milliseconds: number) => void;
|
|
20
|
+
cpus: () => os.CpuInfo[];
|
|
21
|
+
/** Only used outside Linux, where /proc/meminfo is unavailable. */
|
|
22
|
+
freemem: () => number;
|
|
23
|
+
totalmem: () => number;
|
|
24
|
+
};
|
|
25
|
+
export type EmbedLoadDecision = {
|
|
26
|
+
action: 'embed';
|
|
27
|
+
forced: false;
|
|
28
|
+
} | {
|
|
29
|
+
action: 'embed';
|
|
30
|
+
forced: true;
|
|
31
|
+
notice: string;
|
|
32
|
+
} | {
|
|
33
|
+
action: 'skip';
|
|
34
|
+
signal: 'cpu' | 'memory';
|
|
35
|
+
percent: number;
|
|
36
|
+
limit: number;
|
|
37
|
+
notice: string;
|
|
38
|
+
};
|
|
39
|
+
export declare class LoadGateConfigurationError extends Error {
|
|
40
|
+
constructor(value: string);
|
|
41
|
+
}
|
|
42
|
+
export declare function defaultLoadGateDependencies(env?: NodeJS.ProcessEnv): LoadGateDependencies;
|
|
43
|
+
/** Sample aggregate CPU busy time over 200 ms, falling back only without /proc/stat. */
|
|
44
|
+
export declare function measureCpuPercent(dependencies: LoadGateDependencies): number;
|
|
45
|
+
/** Prefer Linux MemAvailable, because MemFree alone treats reclaimable cache as used memory. */
|
|
46
|
+
export declare function measureMemoryPercent(dependencies: LoadGateDependencies): number;
|
|
47
|
+
export declare function parseLoadThreshold(env: NodeJS.ProcessEnv): number | undefined;
|
|
48
|
+
export declare function loadGateStatePath(home: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Decide immediately before qmd embed whether this host can absorb it. The
|
|
51
|
+
* caller must already own the shared embed lock, so state updates are atomic
|
|
52
|
+
* with respect to hq-cli's other embed entry points.
|
|
53
|
+
*/
|
|
54
|
+
export declare function checkEmbedLoad(home: string, dependencies: LoadGateDependencies): EmbedLoadDecision;
|
|
55
|
+
/** Reset the starvation counter only after qmd embed has actually returned successfully. */
|
|
56
|
+
export declare function recordSuccessfulEmbed(home: string, dependencies: LoadGateDependencies): void;
|
|
57
|
+
//# sourceMappingURL=load-gate.d.ts.map
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as os from 'node:os';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
import { lockRoot } from './embed-lock.js';
|
|
5
|
+
export const DEFAULT_MAX_LOAD_PERCENT = 50;
|
|
6
|
+
/**
|
|
7
|
+
* Twelve requests is enough to avoid quietly starving a frequently requested
|
|
8
|
+
* index, while still leaving several opportunities for a busy machine to cool
|
|
9
|
+
* down before we spend CPU on an embed. The thirteenth request is forced.
|
|
10
|
+
*/
|
|
11
|
+
export const MAX_CONSECUTIVE_DEFERRED_EMBEDS = 12;
|
|
12
|
+
/** Six hours bounds deferral even when indexing requests are infrequent. */
|
|
13
|
+
export const MAX_EMBED_DEFERRAL_SECONDS = 6 * 60 * 60;
|
|
14
|
+
const LOAD_GATE_STATE_NAME = 'qmd-embed-load-state';
|
|
15
|
+
const PROC_STAT = '/proc/stat';
|
|
16
|
+
const PROC_MEMINFO = '/proc/meminfo';
|
|
17
|
+
export class LoadGateConfigurationError extends Error {
|
|
18
|
+
constructor(value) {
|
|
19
|
+
super(`HQ_INDEX_MAX_LOAD_PERCENT must be an integer from 1 to 100, 0, or off; received ${JSON.stringify(value)}.`);
|
|
20
|
+
this.name = 'LoadGateConfigurationError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function synchronousSleep(milliseconds) {
|
|
24
|
+
const slot = new Int32Array(new SharedArrayBuffer(4));
|
|
25
|
+
Atomics.wait(slot, 0, 0, milliseconds);
|
|
26
|
+
}
|
|
27
|
+
export function defaultLoadGateDependencies(env = process.env) {
|
|
28
|
+
return {
|
|
29
|
+
env,
|
|
30
|
+
now: () => Math.floor(Date.now() / 1_000),
|
|
31
|
+
readFile: (file) => fs.readFileSync(file, 'utf8'),
|
|
32
|
+
writeFile: (file, contents) => fs.writeFileSync(file, contents),
|
|
33
|
+
rename: (source, destination) => fs.renameSync(source, destination),
|
|
34
|
+
mkdir: (directory) => fs.mkdirSync(directory, { recursive: true }),
|
|
35
|
+
sleep: synchronousSleep,
|
|
36
|
+
cpus: () => os.cpus(),
|
|
37
|
+
// os.freemem() reports MemFree on Linux, which excludes reclaimable cache.
|
|
38
|
+
// Use it only where /proc/meminfo does not exist.
|
|
39
|
+
freemem: () => os.freemem(),
|
|
40
|
+
totalmem: () => os.totalmem(),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function errorCode(error) {
|
|
44
|
+
return error?.code;
|
|
45
|
+
}
|
|
46
|
+
function missing(error) {
|
|
47
|
+
return errorCode(error) === 'ENOENT';
|
|
48
|
+
}
|
|
49
|
+
function parseProcStatAggregate(contents) {
|
|
50
|
+
const line = contents.split('\n').find((candidate) => /^cpu\s+/.test(candidate));
|
|
51
|
+
if (!line)
|
|
52
|
+
return undefined;
|
|
53
|
+
const values = line.trim().split(/\s+/).slice(1).map(Number);
|
|
54
|
+
if (values.length < 5 || values.some((value) => !Number.isFinite(value) || value < 0))
|
|
55
|
+
return undefined;
|
|
56
|
+
// Linux reports guest and guest_nice inside user and nice respectively.
|
|
57
|
+
const total = values.slice(0, 8).reduce((sum, value) => sum + value, 0);
|
|
58
|
+
const idle = values[3] + values[4];
|
|
59
|
+
return total > 0 && Number.isFinite(idle) ? { total, idle } : undefined;
|
|
60
|
+
}
|
|
61
|
+
function cpuBusyPercent(before, after) {
|
|
62
|
+
const totalDelta = after.total - before.total;
|
|
63
|
+
const idleDelta = after.idle - before.idle;
|
|
64
|
+
if (totalDelta <= 0 || idleDelta < 0)
|
|
65
|
+
return undefined;
|
|
66
|
+
return Math.max(0, Math.min(100, (1 - idleDelta / totalDelta) * 100));
|
|
67
|
+
}
|
|
68
|
+
function cpuCountersFromCpus(cpus) {
|
|
69
|
+
let total = 0;
|
|
70
|
+
let idle = 0;
|
|
71
|
+
if (cpus.length === 0)
|
|
72
|
+
return undefined;
|
|
73
|
+
for (const cpu of cpus) {
|
|
74
|
+
const { user, nice, sys, idle: cpuIdle, irq } = cpu.times;
|
|
75
|
+
const values = [user, nice, sys, cpuIdle, irq];
|
|
76
|
+
if (values.some((value) => !Number.isFinite(value) || value < 0))
|
|
77
|
+
return undefined;
|
|
78
|
+
total += values.reduce((sum, value) => sum + value, 0);
|
|
79
|
+
idle += cpuIdle;
|
|
80
|
+
}
|
|
81
|
+
return total > 0 ? { total, idle } : undefined;
|
|
82
|
+
}
|
|
83
|
+
function fallbackCpuPercent(dependencies) {
|
|
84
|
+
const before = cpuCountersFromCpus(dependencies.cpus());
|
|
85
|
+
dependencies.sleep(200);
|
|
86
|
+
const after = cpuCountersFromCpus(dependencies.cpus());
|
|
87
|
+
const busy = before && after ? cpuBusyPercent(before, after) : undefined;
|
|
88
|
+
if (busy === undefined)
|
|
89
|
+
throw new Error('Cannot determine CPU busy time from os.cpus().');
|
|
90
|
+
return busy;
|
|
91
|
+
}
|
|
92
|
+
/** Sample aggregate CPU busy time over 200 ms, falling back only without /proc/stat. */
|
|
93
|
+
export function measureCpuPercent(dependencies) {
|
|
94
|
+
let first;
|
|
95
|
+
try {
|
|
96
|
+
first = dependencies.readFile(PROC_STAT);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (missing(error))
|
|
100
|
+
return fallbackCpuPercent(dependencies);
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
dependencies.sleep(200);
|
|
104
|
+
let second;
|
|
105
|
+
try {
|
|
106
|
+
second = dependencies.readFile(PROC_STAT);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (missing(error))
|
|
110
|
+
return fallbackCpuPercent(dependencies);
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
const before = parseProcStatAggregate(first);
|
|
114
|
+
const after = parseProcStatAggregate(second);
|
|
115
|
+
const busy = before && after ? cpuBusyPercent(before, after) : undefined;
|
|
116
|
+
if (busy === undefined)
|
|
117
|
+
throw new Error('Cannot determine CPU busy time from /proc/stat.');
|
|
118
|
+
return busy;
|
|
119
|
+
}
|
|
120
|
+
function memAvailableFraction(contents) {
|
|
121
|
+
const fields = new Map();
|
|
122
|
+
for (const line of contents.split('\n')) {
|
|
123
|
+
const match = /^(MemTotal|MemAvailable):\s+(\d+)\s+kB$/.exec(line.trim());
|
|
124
|
+
if (match)
|
|
125
|
+
fields.set(match[1], Number(match[2]));
|
|
126
|
+
}
|
|
127
|
+
const total = fields.get('MemTotal');
|
|
128
|
+
const available = fields.get('MemAvailable');
|
|
129
|
+
if (total === undefined || available === undefined || total <= 0 || available < 0 || available > total)
|
|
130
|
+
return undefined;
|
|
131
|
+
return 1 - available / total;
|
|
132
|
+
}
|
|
133
|
+
/** Prefer Linux MemAvailable, because MemFree alone treats reclaimable cache as used memory. */
|
|
134
|
+
export function measureMemoryPercent(dependencies) {
|
|
135
|
+
try {
|
|
136
|
+
const fraction = memAvailableFraction(dependencies.readFile(PROC_MEMINFO));
|
|
137
|
+
if (fraction === undefined)
|
|
138
|
+
throw new Error('Cannot determine memory use from /proc/meminfo.');
|
|
139
|
+
return fraction * 100;
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (!missing(error))
|
|
143
|
+
throw error;
|
|
144
|
+
}
|
|
145
|
+
const total = dependencies.totalmem();
|
|
146
|
+
const free = dependencies.freemem();
|
|
147
|
+
if (total <= 0 || free < 0 || free > total)
|
|
148
|
+
throw new Error('Cannot determine memory use.');
|
|
149
|
+
return (1 - free / total) * 100;
|
|
150
|
+
}
|
|
151
|
+
export function parseLoadThreshold(env) {
|
|
152
|
+
const value = env.HQ_INDEX_MAX_LOAD_PERCENT?.trim() || String(DEFAULT_MAX_LOAD_PERCENT);
|
|
153
|
+
if (value === '0' || value.toLowerCase() === 'off')
|
|
154
|
+
return undefined;
|
|
155
|
+
if (!/^[1-9]\d{0,2}$/.test(value) || Number(value) > 100)
|
|
156
|
+
throw new LoadGateConfigurationError(value);
|
|
157
|
+
return Number(value);
|
|
158
|
+
}
|
|
159
|
+
export function loadGateStatePath(home) {
|
|
160
|
+
return path.join(lockRoot(home), LOAD_GATE_STATE_NAME);
|
|
161
|
+
}
|
|
162
|
+
function readFields(file, dependencies) {
|
|
163
|
+
try {
|
|
164
|
+
const fields = {};
|
|
165
|
+
for (const line of dependencies.readFile(file).split('\n')) {
|
|
166
|
+
if (line === '')
|
|
167
|
+
continue;
|
|
168
|
+
const index = line.indexOf('=');
|
|
169
|
+
const key = line.slice(0, index);
|
|
170
|
+
if (index < 1 || !['skips', 'firstDeferredAt', 'lastSuccessfulEmbedAt'].includes(key) || fields[key] !== undefined)
|
|
171
|
+
return undefined;
|
|
172
|
+
fields[key] = line.slice(index + 1);
|
|
173
|
+
}
|
|
174
|
+
return fields;
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
if (missing(error))
|
|
178
|
+
return undefined;
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function nonnegativeInteger(value) {
|
|
183
|
+
return value !== undefined && /^\d+$/.test(value) ? Number(value) : undefined;
|
|
184
|
+
}
|
|
185
|
+
function readState(home, dependencies) {
|
|
186
|
+
const fields = readFields(loadGateStatePath(home), dependencies);
|
|
187
|
+
if (!fields)
|
|
188
|
+
return { skips: 0 };
|
|
189
|
+
const skips = nonnegativeInteger(fields.skips);
|
|
190
|
+
const firstDeferredAt = nonnegativeInteger(fields.firstDeferredAt);
|
|
191
|
+
const lastSuccessfulEmbedAt = nonnegativeInteger(fields.lastSuccessfulEmbedAt);
|
|
192
|
+
if (skips === undefined
|
|
193
|
+
|| (fields.firstDeferredAt !== undefined && firstDeferredAt === undefined)
|
|
194
|
+
|| (fields.lastSuccessfulEmbedAt !== undefined && lastSuccessfulEmbedAt === undefined)
|
|
195
|
+
|| (skips > 0 && firstDeferredAt === undefined)
|
|
196
|
+
|| (skips === 0 && firstDeferredAt !== undefined))
|
|
197
|
+
return { skips: 0 };
|
|
198
|
+
return {
|
|
199
|
+
skips,
|
|
200
|
+
...(firstDeferredAt === undefined ? {} : { firstDeferredAt }),
|
|
201
|
+
...(lastSuccessfulEmbedAt === undefined ? {} : { lastSuccessfulEmbedAt }),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function writeState(home, state, dependencies) {
|
|
205
|
+
dependencies.mkdir(lockRoot(home));
|
|
206
|
+
const statePath = loadGateStatePath(home);
|
|
207
|
+
const temporaryPath = `${statePath}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
208
|
+
dependencies.writeFile(temporaryPath, [
|
|
209
|
+
`skips=${state.skips}`,
|
|
210
|
+
...(state.firstDeferredAt === undefined ? [] : [`firstDeferredAt=${state.firstDeferredAt}`]),
|
|
211
|
+
...(state.lastSuccessfulEmbedAt === undefined ? [] : [`lastSuccessfulEmbedAt=${state.lastSuccessfulEmbedAt}`]),
|
|
212
|
+
'',
|
|
213
|
+
].join('\n'));
|
|
214
|
+
dependencies.rename(temporaryPath, statePath);
|
|
215
|
+
}
|
|
216
|
+
function rounded(percent) {
|
|
217
|
+
return Math.round(percent);
|
|
218
|
+
}
|
|
219
|
+
function trippedSignal(cpuPercent, memoryPercent, limit) {
|
|
220
|
+
if (cpuPercent >= limit)
|
|
221
|
+
return { signal: 'cpu', percent: rounded(cpuPercent) };
|
|
222
|
+
if (memoryPercent >= limit)
|
|
223
|
+
return { signal: 'memory', percent: rounded(memoryPercent) };
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Decide immediately before qmd embed whether this host can absorb it. The
|
|
228
|
+
* caller must already own the shared embed lock, so state updates are atomic
|
|
229
|
+
* with respect to hq-cli's other embed entry points.
|
|
230
|
+
*/
|
|
231
|
+
export function checkEmbedLoad(home, dependencies) {
|
|
232
|
+
const limit = parseLoadThreshold(dependencies.env);
|
|
233
|
+
if (limit === undefined)
|
|
234
|
+
return { action: 'embed', forced: false };
|
|
235
|
+
const cpuPercent = measureCpuPercent(dependencies);
|
|
236
|
+
const memoryPercent = measureMemoryPercent(dependencies);
|
|
237
|
+
const tripped = trippedSignal(cpuPercent, memoryPercent, limit);
|
|
238
|
+
if (!tripped)
|
|
239
|
+
return { action: 'embed', forced: false };
|
|
240
|
+
const now = dependencies.now();
|
|
241
|
+
const state = readState(home, dependencies);
|
|
242
|
+
const skips = state.skips + 1;
|
|
243
|
+
const deferredSince = state.firstDeferredAt ?? now;
|
|
244
|
+
const exceededSkipBound = skips > MAX_CONSECUTIVE_DEFERRED_EMBEDS;
|
|
245
|
+
const exceededTimeBound = now - deferredSince >= MAX_EMBED_DEFERRAL_SECONDS;
|
|
246
|
+
if (exceededSkipBound || exceededTimeBound) {
|
|
247
|
+
return {
|
|
248
|
+
action: 'embed',
|
|
249
|
+
forced: true,
|
|
250
|
+
notice: `hq: proceeding with qmd embed despite ${tripped.signal} ${tripped.percent}% (limit ${limit}%) because embeddings have been deferred too long.\n`,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
writeState(home, {
|
|
254
|
+
skips,
|
|
255
|
+
firstDeferredAt: state.firstDeferredAt ?? now,
|
|
256
|
+
...(state.lastSuccessfulEmbedAt === undefined ? {} : { lastSuccessfulEmbedAt: state.lastSuccessfulEmbedAt }),
|
|
257
|
+
}, dependencies);
|
|
258
|
+
return {
|
|
259
|
+
action: 'skip',
|
|
260
|
+
signal: tripped.signal,
|
|
261
|
+
percent: tripped.percent,
|
|
262
|
+
limit,
|
|
263
|
+
notice: `hq: skipping qmd embed — ${tripped.signal} ${tripped.percent}% (limit ${limit}%).\n`,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
/** Reset the starvation counter only after qmd embed has actually returned successfully. */
|
|
267
|
+
export function recordSuccessfulEmbed(home, dependencies) {
|
|
268
|
+
writeState(home, { skips: 0, lastSuccessfulEmbedAt: dependencies.now() }, dependencies);
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=load-gate.js.map
|