@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
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windows DACL check for the work-context config (US-018).
|
|
3
|
+
*
|
|
4
|
+
* NTFS has no POSIX mode bits: Node reports `mode` 0666 for every regular
|
|
5
|
+
* file on win32, so the POSIX `mode & 0o022` test in config.ts can never pass
|
|
6
|
+
* there. Instead of skipping the check on Windows, this module reads the real
|
|
7
|
+
* DACL and refuses the config when any principal other than the current user,
|
|
8
|
+
* SYSTEM, Administrators, or the owner is granted write/modify/full access.
|
|
9
|
+
*
|
|
10
|
+
* How the DACL is read (no native dependency):
|
|
11
|
+
* `icacls <path> /save <tmpfile>` writes the DACL as an SDDL string
|
|
12
|
+
* (`D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;FA;;;S-1-5-21-...)`). SDDL carries
|
|
13
|
+
* SIDs or well-known SID abbreviations, never display names, so the check is
|
|
14
|
+
* independent of the OS language (VORDEFINIERT\Administratoren is still BA /
|
|
15
|
+
* S-1-5-32-544). The current user's SID comes from `whoami /user`. Display
|
|
16
|
+
* names are only resolved (via PowerShell) for the error message.
|
|
17
|
+
*
|
|
18
|
+
* Trust is decided by SID: S-1-5-18 (SYSTEM), S-1-5-32-544 (Administrators),
|
|
19
|
+
* S-1-3-0 (CREATOR OWNER), S-1-3-4 (OWNER RIGHTS), the current user's SID and
|
|
20
|
+
* the owner's SID when known.
|
|
21
|
+
*
|
|
22
|
+
* Reduced-guarantee path (explicit, documented): the check does NOT throw and
|
|
23
|
+
* instead emits one stderr diagnostic that the config is unprotected on this
|
|
24
|
+
* platform when, and only when, the DACL cannot be evaluated:
|
|
25
|
+
* - icacls is missing, fails, or its output has no SDDL line (unreadable);
|
|
26
|
+
* - an ACE grants write to a principal whose SID we cannot resolve (an SDDL
|
|
27
|
+
* abbreviation this module does not know), or carries a rights token we
|
|
28
|
+
* cannot decode, or the current user's SID is unknown and the grant is to
|
|
29
|
+
* a non-well-known SID (unresolvable).
|
|
30
|
+
* A DACL that parses and grants write to a resolved SID outside the trusted
|
|
31
|
+
* set always throws UnsafeConfigPathError. Nothing else falls back.
|
|
32
|
+
*/
|
|
33
|
+
export interface SddlAce {
|
|
34
|
+
/** ACE type token, e.g. `A` (allow) or `D` (deny). */
|
|
35
|
+
type: string;
|
|
36
|
+
/** ACE flag string, e.g. `OICIID`. */
|
|
37
|
+
flags: string;
|
|
38
|
+
/** Rights field as written, e.g. `FA`, `0x1200a9`, `CCDCLCSWRPWPRC`. */
|
|
39
|
+
rights: string;
|
|
40
|
+
/** Account field as written: full SID or two-letter abbreviation. */
|
|
41
|
+
account: string;
|
|
42
|
+
}
|
|
43
|
+
export type AclReadResult = {
|
|
44
|
+
readable: true;
|
|
45
|
+
sddl: string;
|
|
46
|
+
} | {
|
|
47
|
+
readable: false;
|
|
48
|
+
reason: string;
|
|
49
|
+
};
|
|
50
|
+
export interface WindowsAclCheckOptions {
|
|
51
|
+
/** Current user SID (defaults to `whoami /user`). `null` = unknown. */
|
|
52
|
+
currentUserSid?: string | null;
|
|
53
|
+
/** Owner SID when known (icacls /save does not include the owner). */
|
|
54
|
+
ownerSid?: string | null;
|
|
55
|
+
/** DACL reader; injectable for tests. Defaults to `icacls <path> /save`. */
|
|
56
|
+
readAcl?: (targetPath: string) => AclReadResult;
|
|
57
|
+
/** SID → display name for error messages; injectable for tests. */
|
|
58
|
+
resolveSidName?: (sid: string) => string | null;
|
|
59
|
+
/** Diagnostic sink for the reduced-guarantee path (defaults to stderr). */
|
|
60
|
+
diagnostic?: (line: string) => void;
|
|
61
|
+
}
|
|
62
|
+
export type AclVerdict = {
|
|
63
|
+
kind: "safe";
|
|
64
|
+
} | {
|
|
65
|
+
kind: "unsafe";
|
|
66
|
+
sid: string;
|
|
67
|
+
rights: string;
|
|
68
|
+
} | {
|
|
69
|
+
kind: "unresolvable";
|
|
70
|
+
reason: string;
|
|
71
|
+
};
|
|
72
|
+
export declare const SID_SYSTEM = "S-1-5-18";
|
|
73
|
+
export declare const SID_ADMINISTRATORS = "S-1-5-32-544";
|
|
74
|
+
export declare const SID_CREATOR_OWNER = "S-1-3-0";
|
|
75
|
+
export declare const SID_OWNER_RIGHTS = "S-1-3-4";
|
|
76
|
+
/** Resolve an SDDL account field to a SID, or null when unknown. */
|
|
77
|
+
export declare function sddlAccountToSid(account: string): string | null;
|
|
78
|
+
/** Any of these bits lets the holder change the file or replace it. */
|
|
79
|
+
export declare const WRITE_MASK: number;
|
|
80
|
+
/** Decode an SDDL rights field to an access mask, or null when undecodable. */
|
|
81
|
+
export declare function sddlRightsToMask(rights: string): number | null;
|
|
82
|
+
/**
|
|
83
|
+
* Parse the DACL portion of an SDDL string into ACEs. Accepts a full security
|
|
84
|
+
* descriptor string (`O:...G:...D:...S:...`) or just the `D:` section.
|
|
85
|
+
* Returns null when no DACL section is present or an ACE is malformed.
|
|
86
|
+
*/
|
|
87
|
+
export declare function parseSddlDacl(sddl: string): SddlAce[] | null;
|
|
88
|
+
/**
|
|
89
|
+
* Parse the file `icacls <path> /save <file>` writes: UTF-16LE (optional BOM),
|
|
90
|
+
* CRLF, alternating `<name>` / `<sddl>` lines. Returns the SDDL of the first
|
|
91
|
+
* entry (the target itself), or an unreadable result.
|
|
92
|
+
*/
|
|
93
|
+
export declare function parseIcaclsSaveOutput(raw: string | Buffer): AclReadResult;
|
|
94
|
+
/**
|
|
95
|
+
* Absolute path of a System32 tool. PATH lookup is not safe here: Git Bash and
|
|
96
|
+
* MSYS environments put a coreutils `whoami` ahead of Windows' `whoami.exe`,
|
|
97
|
+
* which does not understand `/user` and would make the current user SID look
|
|
98
|
+
* unknown on every run.
|
|
99
|
+
*/
|
|
100
|
+
export declare function system32Tool(exe: string): string;
|
|
101
|
+
export declare function readAclWithIcaclsSave(targetPath: string): AclReadResult;
|
|
102
|
+
/** Current user's SID via `whoami /user /fo csv /nh`; null when unavailable. */
|
|
103
|
+
export declare function readCurrentUserSid(): string | null;
|
|
104
|
+
/** Best-effort SID → account name (only used to build error messages). */
|
|
105
|
+
export declare function resolveSidNameWithPowerShell(sid: string): string | null;
|
|
106
|
+
/**
|
|
107
|
+
* Evaluate parsed ACEs against the trusted SID set.
|
|
108
|
+
* - `unsafe`: an allow ACE grants a write bit to a resolved, untrusted SID.
|
|
109
|
+
* - `unresolvable`: a write-granting ACE whose SID or rights cannot be decoded,
|
|
110
|
+
* or whose SID is a per-machine/domain SID while the current user is unknown.
|
|
111
|
+
* - `safe`: everything else (deny ACEs and read-only grants are ignored).
|
|
112
|
+
*/
|
|
113
|
+
export declare function evaluateDacl(aces: SddlAce[], opts: Pick<WindowsAclCheckOptions, "currentUserSid" | "ownerSid">): AclVerdict;
|
|
114
|
+
/**
|
|
115
|
+
* Assert the Windows DACL of `targetPath` grants write only to trusted
|
|
116
|
+
* principals. Throws UnsafeConfigPathError naming the offending principal.
|
|
117
|
+
* Unreadable or unresolvable DACL → reduced-guarantee diagnostic (once per
|
|
118
|
+
* path), no throw. See the module header for the exact conditions.
|
|
119
|
+
*/
|
|
120
|
+
export declare function assertWindowsOwnerOnlyAcl(targetPath: string, kind: "file" | "directory", opts?: WindowsAclCheckOptions): void;
|
|
121
|
+
/** Test hook: forget which paths already emitted the reduced-guarantee line. */
|
|
122
|
+
export declare function resetWindowsAclDiagnostics(): void;
|
|
123
|
+
//# sourceMappingURL=windows-acl.d.ts.map
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windows DACL check for the work-context config (US-018).
|
|
3
|
+
*
|
|
4
|
+
* NTFS has no POSIX mode bits: Node reports `mode` 0666 for every regular
|
|
5
|
+
* file on win32, so the POSIX `mode & 0o022` test in config.ts can never pass
|
|
6
|
+
* there. Instead of skipping the check on Windows, this module reads the real
|
|
7
|
+
* DACL and refuses the config when any principal other than the current user,
|
|
8
|
+
* SYSTEM, Administrators, or the owner is granted write/modify/full access.
|
|
9
|
+
*
|
|
10
|
+
* How the DACL is read (no native dependency):
|
|
11
|
+
* `icacls <path> /save <tmpfile>` writes the DACL as an SDDL string
|
|
12
|
+
* (`D:AI(A;ID;FA;;;SY)(A;ID;FA;;;BA)(A;ID;FA;;;S-1-5-21-...)`). SDDL carries
|
|
13
|
+
* SIDs or well-known SID abbreviations, never display names, so the check is
|
|
14
|
+
* independent of the OS language (VORDEFINIERT\Administratoren is still BA /
|
|
15
|
+
* S-1-5-32-544). The current user's SID comes from `whoami /user`. Display
|
|
16
|
+
* names are only resolved (via PowerShell) for the error message.
|
|
17
|
+
*
|
|
18
|
+
* Trust is decided by SID: S-1-5-18 (SYSTEM), S-1-5-32-544 (Administrators),
|
|
19
|
+
* S-1-3-0 (CREATOR OWNER), S-1-3-4 (OWNER RIGHTS), the current user's SID and
|
|
20
|
+
* the owner's SID when known.
|
|
21
|
+
*
|
|
22
|
+
* Reduced-guarantee path (explicit, documented): the check does NOT throw and
|
|
23
|
+
* instead emits one stderr diagnostic that the config is unprotected on this
|
|
24
|
+
* platform when, and only when, the DACL cannot be evaluated:
|
|
25
|
+
* - icacls is missing, fails, or its output has no SDDL line (unreadable);
|
|
26
|
+
* - an ACE grants write to a principal whose SID we cannot resolve (an SDDL
|
|
27
|
+
* abbreviation this module does not know), or carries a rights token we
|
|
28
|
+
* cannot decode, or the current user's SID is unknown and the grant is to
|
|
29
|
+
* a non-well-known SID (unresolvable).
|
|
30
|
+
* A DACL that parses and grants write to a resolved SID outside the trusted
|
|
31
|
+
* set always throws UnsafeConfigPathError. Nothing else falls back.
|
|
32
|
+
*/
|
|
33
|
+
import * as fs from "node:fs";
|
|
34
|
+
import * as os from "node:os";
|
|
35
|
+
import * as path from "node:path";
|
|
36
|
+
import { spawnSync } from "node:child_process";
|
|
37
|
+
import { UnsafeConfigPathError } from "./errors.js";
|
|
38
|
+
// --- SIDs ---------------------------------------------------------------
|
|
39
|
+
export const SID_SYSTEM = "S-1-5-18";
|
|
40
|
+
export const SID_ADMINISTRATORS = "S-1-5-32-544";
|
|
41
|
+
export const SID_CREATOR_OWNER = "S-1-3-0";
|
|
42
|
+
export const SID_OWNER_RIGHTS = "S-1-3-4";
|
|
43
|
+
/** SDDL well-known account abbreviations (subset relevant to file DACLs). */
|
|
44
|
+
const SDDL_SID_ABBREVIATIONS = {
|
|
45
|
+
SY: SID_SYSTEM,
|
|
46
|
+
BA: SID_ADMINISTRATORS,
|
|
47
|
+
BU: "S-1-5-32-545", // Users
|
|
48
|
+
BG: "S-1-5-32-546", // Guests
|
|
49
|
+
PU: "S-1-5-32-547", // Power Users
|
|
50
|
+
WD: "S-1-1-0", // Everyone
|
|
51
|
+
AU: "S-1-5-11", // Authenticated Users
|
|
52
|
+
IU: "S-1-5-4", // Interactive
|
|
53
|
+
NU: "S-1-5-2", // Network
|
|
54
|
+
SU: "S-1-5-6", // Service
|
|
55
|
+
AN: "S-1-5-7", // Anonymous
|
|
56
|
+
LS: "S-1-5-19", // Local Service
|
|
57
|
+
NS: "S-1-5-20", // Network Service
|
|
58
|
+
CO: SID_CREATOR_OWNER,
|
|
59
|
+
CG: "S-1-3-1", // Creator Group
|
|
60
|
+
OW: SID_OWNER_RIGHTS,
|
|
61
|
+
RC: "S-1-5-12", // Restricted Code
|
|
62
|
+
AC: "S-1-15-2-1", // All application packages
|
|
63
|
+
DA: "S-1-5-21-<domain>-512", // Domain Admins (domain-relative; never trusted)
|
|
64
|
+
DU: "S-1-5-21-<domain>-513", // Domain Users
|
|
65
|
+
LA: "S-1-5-21-<domain>-500", // Local Administrator account
|
|
66
|
+
LG: "S-1-5-21-<domain>-501", // Local Guest account
|
|
67
|
+
};
|
|
68
|
+
/** Resolve an SDDL account field to a SID, or null when unknown. */
|
|
69
|
+
export function sddlAccountToSid(account) {
|
|
70
|
+
const a = account.trim();
|
|
71
|
+
if (/^S-1-\d+(-\d+)+$/i.test(a))
|
|
72
|
+
return a.toUpperCase();
|
|
73
|
+
const abbr = SDDL_SID_ABBREVIATIONS[a.toUpperCase()];
|
|
74
|
+
if (!abbr || abbr.includes("<domain>"))
|
|
75
|
+
return null;
|
|
76
|
+
return abbr;
|
|
77
|
+
}
|
|
78
|
+
// --- rights -------------------------------------------------------------
|
|
79
|
+
const FILE_WRITE_DATA = 0x2;
|
|
80
|
+
const FILE_APPEND_DATA = 0x4;
|
|
81
|
+
const FILE_WRITE_EA = 0x10;
|
|
82
|
+
const FILE_DELETE_CHILD = 0x40;
|
|
83
|
+
const FILE_WRITE_ATTRIBUTES = 0x100;
|
|
84
|
+
const DELETE = 0x10000;
|
|
85
|
+
const WRITE_DAC = 0x40000;
|
|
86
|
+
const WRITE_OWNER = 0x80000;
|
|
87
|
+
const GENERIC_ALL = 0x10000000;
|
|
88
|
+
const GENERIC_WRITE = 0x40000000;
|
|
89
|
+
/** Any of these bits lets the holder change the file or replace it. */
|
|
90
|
+
export const WRITE_MASK = FILE_WRITE_DATA |
|
|
91
|
+
FILE_APPEND_DATA |
|
|
92
|
+
FILE_WRITE_EA |
|
|
93
|
+
FILE_DELETE_CHILD |
|
|
94
|
+
FILE_WRITE_ATTRIBUTES |
|
|
95
|
+
DELETE |
|
|
96
|
+
WRITE_DAC |
|
|
97
|
+
WRITE_OWNER |
|
|
98
|
+
GENERIC_ALL |
|
|
99
|
+
GENERIC_WRITE;
|
|
100
|
+
/** SDDL rights tokens → access mask (generic + file-specific + DS bits). */
|
|
101
|
+
const SDDL_RIGHTS_TOKENS = {
|
|
102
|
+
GA: GENERIC_ALL,
|
|
103
|
+
GR: 0x80000000,
|
|
104
|
+
GW: GENERIC_WRITE,
|
|
105
|
+
GX: 0x20000000,
|
|
106
|
+
FA: 0x1f01ff,
|
|
107
|
+
FR: 0x120089,
|
|
108
|
+
FW: 0x120116,
|
|
109
|
+
FX: 0x1200a0,
|
|
110
|
+
KA: 0xf003f,
|
|
111
|
+
KR: 0x20019,
|
|
112
|
+
KW: 0x20006,
|
|
113
|
+
KX: 0x20019,
|
|
114
|
+
RC: 0x20000,
|
|
115
|
+
SD: DELETE,
|
|
116
|
+
WD: WRITE_DAC,
|
|
117
|
+
WO: WRITE_OWNER,
|
|
118
|
+
RP: 0x10,
|
|
119
|
+
WP: 0x20,
|
|
120
|
+
CC: 0x1,
|
|
121
|
+
DC: 0x2,
|
|
122
|
+
LC: 0x4,
|
|
123
|
+
SW: 0x8,
|
|
124
|
+
LO: 0x80,
|
|
125
|
+
DT: 0x40,
|
|
126
|
+
CR: 0x100,
|
|
127
|
+
};
|
|
128
|
+
/** Decode an SDDL rights field to an access mask, or null when undecodable. */
|
|
129
|
+
export function sddlRightsToMask(rights) {
|
|
130
|
+
const r = rights.trim();
|
|
131
|
+
if (!r)
|
|
132
|
+
return 0;
|
|
133
|
+
if (/^0x[0-9a-f]+$/i.test(r))
|
|
134
|
+
return Number.parseInt(r, 16) >>> 0;
|
|
135
|
+
if (/^\d+$/.test(r))
|
|
136
|
+
return Number.parseInt(r, 10) >>> 0;
|
|
137
|
+
if (r.length % 2 !== 0)
|
|
138
|
+
return null;
|
|
139
|
+
let mask = 0;
|
|
140
|
+
for (let i = 0; i < r.length; i += 2) {
|
|
141
|
+
const bits = SDDL_RIGHTS_TOKENS[r.slice(i, i + 2).toUpperCase()];
|
|
142
|
+
if (bits === undefined)
|
|
143
|
+
return null;
|
|
144
|
+
mask = (mask | bits) >>> 0;
|
|
145
|
+
}
|
|
146
|
+
return mask;
|
|
147
|
+
}
|
|
148
|
+
// --- parsing ------------------------------------------------------------
|
|
149
|
+
/**
|
|
150
|
+
* Parse the DACL portion of an SDDL string into ACEs. Accepts a full security
|
|
151
|
+
* descriptor string (`O:...G:...D:...S:...`) or just the `D:` section.
|
|
152
|
+
* Returns null when no DACL section is present or an ACE is malformed.
|
|
153
|
+
*/
|
|
154
|
+
export function parseSddlDacl(sddl) {
|
|
155
|
+
const text = sddl.trim();
|
|
156
|
+
// Colons never occur inside an ACE or a SID, so section markers are unambiguous.
|
|
157
|
+
const dIdx = text.indexOf("D:");
|
|
158
|
+
if (dIdx < 0)
|
|
159
|
+
return null;
|
|
160
|
+
let body = text.slice(dIdx + 2);
|
|
161
|
+
const sIdx = body.indexOf("S:");
|
|
162
|
+
if (sIdx >= 0)
|
|
163
|
+
body = body.slice(0, sIdx);
|
|
164
|
+
// Strip DACL control flags (P, AI, AR, NO_ACCESS_CONTROL) before the first ACE.
|
|
165
|
+
const firstAce = body.indexOf("(");
|
|
166
|
+
const flags = firstAce < 0 ? body : body.slice(0, firstAce);
|
|
167
|
+
if (!/^[A-Z_]*$/i.test(flags.trim()))
|
|
168
|
+
return null;
|
|
169
|
+
if (firstAce < 0)
|
|
170
|
+
return [];
|
|
171
|
+
const aceText = body.slice(firstAce);
|
|
172
|
+
const aces = [];
|
|
173
|
+
const aceRe = /\(([^()]*)\)/g;
|
|
174
|
+
let consumed = 0;
|
|
175
|
+
let m;
|
|
176
|
+
while ((m = aceRe.exec(aceText)) !== null) {
|
|
177
|
+
if (m.index !== consumed)
|
|
178
|
+
return null; // junk between ACEs
|
|
179
|
+
consumed = m.index + m[0].length;
|
|
180
|
+
const fields = m[1].split(";");
|
|
181
|
+
if (fields.length < 6)
|
|
182
|
+
return null;
|
|
183
|
+
const [type, aceFlags, rights, , , account] = fields;
|
|
184
|
+
if (!type || !account)
|
|
185
|
+
return null;
|
|
186
|
+
aces.push({
|
|
187
|
+
type: type.trim().toUpperCase(),
|
|
188
|
+
flags: aceFlags.trim().toUpperCase(),
|
|
189
|
+
rights: rights.trim(),
|
|
190
|
+
account: account.trim(),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
if (consumed !== aceText.trim().length)
|
|
194
|
+
return null;
|
|
195
|
+
return aces;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Parse the file `icacls <path> /save <file>` writes: UTF-16LE (optional BOM),
|
|
199
|
+
* CRLF, alternating `<name>` / `<sddl>` lines. Returns the SDDL of the first
|
|
200
|
+
* entry (the target itself), or an unreadable result.
|
|
201
|
+
*/
|
|
202
|
+
export function parseIcaclsSaveOutput(raw) {
|
|
203
|
+
let text;
|
|
204
|
+
if (Buffer.isBuffer(raw)) {
|
|
205
|
+
const hasLeBom = raw.length >= 2 && raw[0] === 0xff && raw[1] === 0xfe;
|
|
206
|
+
text = raw.toString("utf16le", hasLeBom ? 2 : 0);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
text = raw;
|
|
210
|
+
}
|
|
211
|
+
text = text.replace(/^\uFEFF/, "");
|
|
212
|
+
const lines = text.split(/\r?\n/).map((l) => l.trim());
|
|
213
|
+
const sddl = lines.find((l) => /^(O:|G:|D:|S:)/.test(l));
|
|
214
|
+
if (!sddl) {
|
|
215
|
+
return { readable: false, reason: "no SDDL line in icacls /save output" };
|
|
216
|
+
}
|
|
217
|
+
return { readable: true, sddl };
|
|
218
|
+
}
|
|
219
|
+
// --- platform readers ---------------------------------------------------
|
|
220
|
+
/**
|
|
221
|
+
* Absolute path of a System32 tool. PATH lookup is not safe here: Git Bash and
|
|
222
|
+
* MSYS environments put a coreutils `whoami` ahead of Windows' `whoami.exe`,
|
|
223
|
+
* which does not understand `/user` and would make the current user SID look
|
|
224
|
+
* unknown on every run.
|
|
225
|
+
*/
|
|
226
|
+
export function system32Tool(exe) {
|
|
227
|
+
const winDir = process.env.SystemRoot ?? process.env.windir ?? "C:\\Windows";
|
|
228
|
+
return path.join(winDir, "System32", exe);
|
|
229
|
+
}
|
|
230
|
+
export function readAclWithIcaclsSave(targetPath) {
|
|
231
|
+
const stamp = `${process.pid}-${Date.now()}-${Math.random().toString(16).slice(2)}`;
|
|
232
|
+
const saveFile = path.join(os.tmpdir(), `hq-acl-${stamp}.txt`);
|
|
233
|
+
try {
|
|
234
|
+
const res = spawnSync(system32Tool("icacls.exe"), [targetPath, "/save", saveFile], {
|
|
235
|
+
encoding: "utf8",
|
|
236
|
+
windowsHide: true,
|
|
237
|
+
timeout: 10_000,
|
|
238
|
+
});
|
|
239
|
+
if (res.error) {
|
|
240
|
+
return { readable: false, reason: `icacls unavailable: ${res.error.message}` };
|
|
241
|
+
}
|
|
242
|
+
if (res.status !== 0) {
|
|
243
|
+
const stderr = String(res.stderr ?? "").trim();
|
|
244
|
+
return {
|
|
245
|
+
readable: false,
|
|
246
|
+
reason: `icacls exited ${String(res.status)}${stderr ? `: ${stderr}` : ""}`,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
let raw;
|
|
250
|
+
try {
|
|
251
|
+
raw = fs.readFileSync(saveFile);
|
|
252
|
+
}
|
|
253
|
+
catch (err) {
|
|
254
|
+
return { readable: false, reason: `icacls /save wrote nothing: ${err.message}` };
|
|
255
|
+
}
|
|
256
|
+
return parseIcaclsSaveOutput(raw);
|
|
257
|
+
}
|
|
258
|
+
catch (err) {
|
|
259
|
+
return { readable: false, reason: `icacls failed: ${err.message}` };
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
try {
|
|
263
|
+
fs.rmSync(saveFile, { force: true });
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
// best effort
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
let cachedCurrentUserSid;
|
|
271
|
+
/** Current user's SID via `whoami /user /fo csv /nh`; null when unavailable. */
|
|
272
|
+
export function readCurrentUserSid() {
|
|
273
|
+
if (cachedCurrentUserSid !== undefined)
|
|
274
|
+
return cachedCurrentUserSid;
|
|
275
|
+
try {
|
|
276
|
+
const res = spawnSync(system32Tool("whoami.exe"), ["/user", "/fo", "csv", "/nh"], {
|
|
277
|
+
encoding: "utf8",
|
|
278
|
+
windowsHide: true,
|
|
279
|
+
timeout: 10_000,
|
|
280
|
+
});
|
|
281
|
+
const m = /"(S-1-\d+(?:-\d+)+)"/i.exec(String(res.stdout ?? ""));
|
|
282
|
+
cachedCurrentUserSid = res.status === 0 && m ? m[1].toUpperCase() : null;
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
cachedCurrentUserSid = null;
|
|
286
|
+
}
|
|
287
|
+
return cachedCurrentUserSid;
|
|
288
|
+
}
|
|
289
|
+
/** Best-effort SID → account name (only used to build error messages). */
|
|
290
|
+
export function resolveSidNameWithPowerShell(sid) {
|
|
291
|
+
if (!/^S-1-\d+(-\d+)+$/i.test(sid))
|
|
292
|
+
return null;
|
|
293
|
+
try {
|
|
294
|
+
const script = `(New-Object System.Security.Principal.SecurityIdentifier('${sid}'))` +
|
|
295
|
+
`.Translate([System.Security.Principal.NTAccount]).Value`;
|
|
296
|
+
const res = spawnSync(system32Tool("WindowsPowerShell/v1.0/powershell.exe"), ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", script], { encoding: "utf8", windowsHide: true, timeout: 15_000 });
|
|
297
|
+
const out = String(res.stdout ?? "").trim();
|
|
298
|
+
return res.status === 0 && out ? out : null;
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// --- evaluation ---------------------------------------------------------
|
|
305
|
+
/**
|
|
306
|
+
* Evaluate parsed ACEs against the trusted SID set.
|
|
307
|
+
* - `unsafe`: an allow ACE grants a write bit to a resolved, untrusted SID.
|
|
308
|
+
* - `unresolvable`: a write-granting ACE whose SID or rights cannot be decoded,
|
|
309
|
+
* or whose SID is a per-machine/domain SID while the current user is unknown.
|
|
310
|
+
* - `safe`: everything else (deny ACEs and read-only grants are ignored).
|
|
311
|
+
*/
|
|
312
|
+
export function evaluateDacl(aces, opts) {
|
|
313
|
+
const trusted = new Set([SID_SYSTEM, SID_ADMINISTRATORS, SID_CREATOR_OWNER, SID_OWNER_RIGHTS]);
|
|
314
|
+
if (opts.currentUserSid)
|
|
315
|
+
trusted.add(opts.currentUserSid.toUpperCase());
|
|
316
|
+
if (opts.ownerSid)
|
|
317
|
+
trusted.add(opts.ownerSid.toUpperCase());
|
|
318
|
+
for (const ace of aces) {
|
|
319
|
+
if (ace.type !== "A")
|
|
320
|
+
continue; // deny / audit / object ACEs never grant
|
|
321
|
+
if (ace.flags.includes("IO"))
|
|
322
|
+
continue; // inherit-only: no effect on this object
|
|
323
|
+
const mask = sddlRightsToMask(ace.rights);
|
|
324
|
+
if (mask === null) {
|
|
325
|
+
return {
|
|
326
|
+
kind: "unresolvable",
|
|
327
|
+
reason: `cannot decode rights "${ace.rights}" for ${ace.account}`,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
if ((mask & WRITE_MASK) === 0)
|
|
331
|
+
continue;
|
|
332
|
+
const sid = sddlAccountToSid(ace.account);
|
|
333
|
+
if (!sid) {
|
|
334
|
+
return { kind: "unresolvable", reason: `cannot resolve principal "${ace.account}" to a SID` };
|
|
335
|
+
}
|
|
336
|
+
if (trusted.has(sid))
|
|
337
|
+
continue;
|
|
338
|
+
if (!opts.currentUserSid && /^S-1-5-21-/.test(sid)) {
|
|
339
|
+
return {
|
|
340
|
+
kind: "unresolvable",
|
|
341
|
+
reason: `current user SID unknown; cannot tell whether ${sid} is the current user`,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
return { kind: "unsafe", sid, rights: ace.rights };
|
|
345
|
+
}
|
|
346
|
+
return { kind: "safe" };
|
|
347
|
+
}
|
|
348
|
+
const reducedGuaranteeReported = new Set();
|
|
349
|
+
/**
|
|
350
|
+
* Per-process memo of non-throwing verdicts, keyed by the object's identity
|
|
351
|
+
* and NTFS ChangeTime (Node `ctimeMs`), which advances whenever the DACL is
|
|
352
|
+
* modified. Spawning icacls costs ~100-200ms; hooks may read the config many
|
|
353
|
+
* times per process. Unsafe verdicts are never cached.
|
|
354
|
+
*/
|
|
355
|
+
const verdictCache = new Map();
|
|
356
|
+
function cacheKey(targetPath) {
|
|
357
|
+
try {
|
|
358
|
+
const st = fs.lstatSync(targetPath);
|
|
359
|
+
return { ino: st.ino, ctimeMs: st.ctimeMs };
|
|
360
|
+
}
|
|
361
|
+
catch {
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Assert the Windows DACL of `targetPath` grants write only to trusted
|
|
367
|
+
* principals. Throws UnsafeConfigPathError naming the offending principal.
|
|
368
|
+
* Unreadable or unresolvable DACL → reduced-guarantee diagnostic (once per
|
|
369
|
+
* path), no throw. See the module header for the exact conditions.
|
|
370
|
+
*/
|
|
371
|
+
export function assertWindowsOwnerOnlyAcl(targetPath, kind, opts = {}) {
|
|
372
|
+
const readAcl = opts.readAcl ?? readAclWithIcaclsSave;
|
|
373
|
+
const resolveSidName = opts.resolveSidName ?? resolveSidNameWithPowerShell;
|
|
374
|
+
const diagnostic = opts.diagnostic ?? ((line) => process.stderr.write(`${line}\n`));
|
|
375
|
+
const currentUserSid = opts.currentUserSid === undefined ? readCurrentUserSid() : opts.currentUserSid;
|
|
376
|
+
const reducedGuarantee = (reason) => {
|
|
377
|
+
// Reduced-guarantee path: see module header. Deliberately not a throw.
|
|
378
|
+
if (reducedGuaranteeReported.has(targetPath))
|
|
379
|
+
return;
|
|
380
|
+
reducedGuaranteeReported.add(targetPath);
|
|
381
|
+
diagnostic(`work-context: could not evaluate Windows ACL for ${kind} ${targetPath} (${reason}); ` +
|
|
382
|
+
"config is unprotected on this platform (reduced guarantee)");
|
|
383
|
+
};
|
|
384
|
+
const key = cacheKey(targetPath);
|
|
385
|
+
const cached = key ? verdictCache.get(targetPath) : undefined;
|
|
386
|
+
if (key && cached && cached.ino === key.ino && cached.ctimeMs === key.ctimeMs)
|
|
387
|
+
return;
|
|
388
|
+
const acl = readAcl(targetPath);
|
|
389
|
+
if (!acl.readable) {
|
|
390
|
+
reducedGuarantee(acl.reason);
|
|
391
|
+
if (key)
|
|
392
|
+
verdictCache.set(targetPath, key);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const aces = parseSddlDacl(acl.sddl);
|
|
396
|
+
if (aces === null) {
|
|
397
|
+
reducedGuarantee(`unparseable SDDL "${acl.sddl}"`);
|
|
398
|
+
if (key)
|
|
399
|
+
verdictCache.set(targetPath, key);
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
const verdict = evaluateDacl(aces, { currentUserSid, ownerSid: opts.ownerSid ?? null });
|
|
403
|
+
if (verdict.kind === "safe") {
|
|
404
|
+
if (key)
|
|
405
|
+
verdictCache.set(targetPath, key);
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
408
|
+
if (verdict.kind === "unresolvable") {
|
|
409
|
+
reducedGuarantee(verdict.reason);
|
|
410
|
+
if (key)
|
|
411
|
+
verdictCache.set(targetPath, key);
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
const name = resolveSidName(verdict.sid);
|
|
415
|
+
const who = name ? `${name} (${verdict.sid})` : verdict.sid;
|
|
416
|
+
throw new UnsafeConfigPathError(`Config ${kind} ${targetPath} is writable by ${who} [rights ${verdict.rights}] ` +
|
|
417
|
+
"(expected owner-only: current user, SYSTEM, Administrators)");
|
|
418
|
+
}
|
|
419
|
+
/** Test hook: forget which paths already emitted the reduced-guarantee line. */
|
|
420
|
+
export function resetWindowsAclDiagnostics() {
|
|
421
|
+
reducedGuaranteeReported.clear();
|
|
422
|
+
verdictCache.clear();
|
|
423
|
+
cachedCurrentUserSid = undefined;
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=windows-acl.js.map
|
|
@@ -18,10 +18,26 @@ function isFile(target) {
|
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* A sorted `find -L … -name worker.yaml -type f` equivalent, including
|
|
23
|
+
* symlinked pack workers.
|
|
24
|
+
*
|
|
25
|
+
* Excluded subtrees are pruned at the descent, not filtered from the result.
|
|
26
|
+
* That distinction is the whole cost of this scan: a tenant's `repos/` holds
|
|
27
|
+
* source checkouts, so filtering afterwards means reading every `node_modules`
|
|
28
|
+
* and `.git` directory inside them — tens of thousands of directories on a real
|
|
29
|
+
* root — to produce matches that are discarded a moment later.
|
|
30
|
+
*
|
|
31
|
+
* Directory entries carry their own type, so the common case costs one
|
|
32
|
+
* `readdir` per directory instead of an extra `stat` per entry. Symlinks are
|
|
33
|
+
* the exception: their dirent type describes the link, so resolving one still
|
|
34
|
+
* needs a `stat`, which is what keeps this faithful to `find -L`.
|
|
35
|
+
*/
|
|
22
36
|
function workerYamlFiles(root, relativeRoot) {
|
|
23
37
|
const output = [];
|
|
24
38
|
const walk = (relative, ancestors) => {
|
|
39
|
+
if (isExcludedWorkerDirectory(relative))
|
|
40
|
+
return;
|
|
25
41
|
const absolute = path.join(root, relative);
|
|
26
42
|
if (!isDirectory(absolute))
|
|
27
43
|
return;
|
|
@@ -35,20 +51,23 @@ function workerYamlFiles(root, relativeRoot) {
|
|
|
35
51
|
if (ancestors.has(physical))
|
|
36
52
|
return; // `find -L` reports loops; a bounded walk is safer here.
|
|
37
53
|
const nextAncestors = new Set(ancestors).add(physical);
|
|
38
|
-
let
|
|
54
|
+
let entries;
|
|
39
55
|
try {
|
|
40
|
-
|
|
56
|
+
entries = fs.readdirSync(absolute, { withFileTypes: true });
|
|
41
57
|
}
|
|
42
58
|
catch {
|
|
43
59
|
return;
|
|
44
60
|
}
|
|
45
|
-
|
|
46
|
-
|
|
61
|
+
entries.sort((left, right) => (left.name < right.name ? -1 : left.name > right.name ? 1 : 0));
|
|
62
|
+
for (const entry of entries) {
|
|
63
|
+
const childRelative = path.join(relative, entry.name);
|
|
47
64
|
const child = path.join(root, childRelative);
|
|
48
|
-
if (name === 'worker.yaml' && isFile(child))
|
|
65
|
+
if (entry.name === 'worker.yaml' && (entry.isFile() || isFile(child))) {
|
|
49
66
|
output.push(childRelative);
|
|
50
|
-
|
|
67
|
+
}
|
|
68
|
+
else if (entry.isDirectory() || (entry.isSymbolicLink() && isDirectory(child))) {
|
|
51
69
|
walk(childRelative, nextAncestors);
|
|
70
|
+
}
|
|
52
71
|
}
|
|
53
72
|
};
|
|
54
73
|
walk(relativeRoot, new Set());
|
|
@@ -124,6 +143,41 @@ function registryText(now, entries) {
|
|
|
124
143
|
function withoutTimestamp(content) {
|
|
125
144
|
return content.split('\n').filter((line) => !line.startsWith('generated_at:')).join('\n');
|
|
126
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Worker roots hold two kinds of `worker.yaml` that must never reach the
|
|
148
|
+
* registry.
|
|
149
|
+
*
|
|
150
|
+
* The `_template` company and any `_overrides` directory are scaffolding —
|
|
151
|
+
* copies kept so a new tenant or a pack override can be stamped out from them.
|
|
152
|
+
*
|
|
153
|
+
* A checkout nested under a tenant's `repos/` is a source repository that tenant
|
|
154
|
+
* happens to keep inside HQ, and when that repository is HQ itself, its own
|
|
155
|
+
* `core/workers` and template trees are full of worker.yaml files. Indexing them
|
|
156
|
+
* treats product source as deployed workers: they claim ids real workers already
|
|
157
|
+
* own, and because duplicates resolve by path order — a tenant path sorts before
|
|
158
|
+
* both `core` and `personal` — the checkout wins. The operator's actual worker
|
|
159
|
+
* then silently vanishes from the registry every skill reads.
|
|
160
|
+
*/
|
|
161
|
+
function isExcludedWorkerDirectory(relativeDirectory) {
|
|
162
|
+
const normalized = relativeDirectory.replaceAll('\\', '/');
|
|
163
|
+
const [root, tenant, nested] = normalized.split('/');
|
|
164
|
+
if (root !== 'companies')
|
|
165
|
+
return /(?:^|\/)_overrides(?:\/|$)/.test(normalized);
|
|
166
|
+
if (tenant === '_template')
|
|
167
|
+
return true;
|
|
168
|
+
if (nested === 'repos')
|
|
169
|
+
return true;
|
|
170
|
+
return /(?:^|\/)_overrides(?:\/|$)/.test(normalized);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Every exclusion is a property of the directory holding the `worker.yaml`, so
|
|
174
|
+
* the file rule is the directory rule applied to its parent. Deriving it keeps
|
|
175
|
+
* the pruned descent and this final filter from ever disagreeing — a drift that
|
|
176
|
+
* would either resurrect a shadowing copy or silently drop a real worker.
|
|
177
|
+
*/
|
|
178
|
+
function isExcludedWorkerPath(relativeFile) {
|
|
179
|
+
return isExcludedWorkerDirectory(path.dirname(relativeFile));
|
|
180
|
+
}
|
|
127
181
|
/**
|
|
128
182
|
* Generate core/workers/registry.yaml from worker.yaml files. Invalid workers
|
|
129
183
|
* are quarantined but do not prevent all valid workers from being registered.
|
|
@@ -138,7 +192,7 @@ export function generateWorkersRegistry(hqRoot, options = {}) {
|
|
|
138
192
|
...workerYamlFiles(hqRoot, 'personal/workers'),
|
|
139
193
|
].sort();
|
|
140
194
|
for (const relativeFile of files) {
|
|
141
|
-
if (
|
|
195
|
+
if (isExcludedWorkerPath(relativeFile))
|
|
142
196
|
continue;
|
|
143
197
|
const fields = readWorkerFields(path.join(hqRoot, relativeFile));
|
|
144
198
|
const missing = ['id', 'type', 'description'].filter((key) => !fields[key]);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface RegistryWorker {
|
|
2
|
+
id: string;
|
|
3
|
+
path: string;
|
|
4
|
+
type: string;
|
|
5
|
+
visibility: string;
|
|
6
|
+
company?: string;
|
|
7
|
+
team?: string;
|
|
8
|
+
status?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
triggers?: string;
|
|
11
|
+
grants?: string;
|
|
12
|
+
}
|
|
13
|
+
/** Read + parse the worker registry. Empty array if it does not exist. */
|
|
14
|
+
export declare function readWorkerRegistry(hqRoot: string): RegistryWorker[];
|
|
15
|
+
//# sourceMappingURL=read.d.ts.map
|