@indigoai-us/hq-cli 5.314.0 → 5.315.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 +4311 -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/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/resolve-company.sh +199 -0
- package/assets/scaffold/core/scripts/resume-thread-lock.sh +285 -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 +10753 -0
- package/dist/command-catalog.generated.js +13859 -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 +127 -0
- package/dist/commands/bot-jobs.js +454 -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-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-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-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-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 +277 -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 +8983 -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 +6 -7
- package/dist/fast-core.js +87 -24
- package/dist/fast-scaffold.d.ts +86 -0
- package/dist/fast-scaffold.js +364 -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-run.d.ts +109 -0
- package/dist/lib/bot/job-run.js +246 -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 +217 -0
- package/dist/lib/bot/run.js +1869 -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/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 +133 -0
- package/dist/lib/lanes/autopilot.js +1222 -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 +66 -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 +22 -0
- package/dist/lib/lanes/flag-keys.js +22 -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 +479 -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 +46 -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 +147 -0
- package/dist/lib/lanes/outpost-dispatch.js +271 -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
package/dist/commands/files.js
CHANGED
|
@@ -4,10 +4,22 @@ import * as readline from "node:readline";
|
|
|
4
4
|
import { resolveVaultCredential } from "../utils/resolve-vault-credential.js";
|
|
5
5
|
import { gateApiKeyCapabilities } from "../utils/api-key-command-gate.js";
|
|
6
6
|
import { vaultApiFetch, getCompanyUid } from "./secrets.js";
|
|
7
|
-
import { GROUP_ID_PATTERN, EMAIL_PATTERN, normalizeFilePrefix } from "./_patterns.js";
|
|
7
|
+
import { GROUP_ID_PATTERN, EMAIL_PATTERN, isPrivateFolderPattern, normalizeFilePrefix, toSharedFolderGlob, } from "./_patterns.js";
|
|
8
8
|
import { looksLikeCompanyUid } from "../utils/vault-api.js";
|
|
9
9
|
import { AuthError } from "../utils/auth-error.js";
|
|
10
10
|
import { formatAccessDenied, offerAccessLadder, } from "../utils/access-denied-hint.js";
|
|
11
|
+
import { fetchChannels, matchChannelsByName } from "./dm.js";
|
|
12
|
+
import { resolveCompanySlug, resolvePersonWithRosterFallback, } from "./people.js";
|
|
13
|
+
import { findHqRoot } from "../utils/manifest.js";
|
|
14
|
+
import { maxLength } from "../utils/table-width.js";
|
|
15
|
+
import { resolveCompanyFlagGate } from "../lib/flag-registry.js";
|
|
16
|
+
const PERSON_UID_PATTERN = /^(prs|agt)_[A-Za-z0-9_-]+$/;
|
|
17
|
+
const AGENT_UID_PATTERN = /^agt_[A-Za-z0-9_-]+$/;
|
|
18
|
+
export const FILES_SHARE_EMPTY_PREFIX_WARNING_FLAG = "files.share-empty-prefix-warning";
|
|
19
|
+
const FILES_SHARE_EMPTY_PREFIX_CHECK_TIMEOUT_MS = 5_000;
|
|
20
|
+
function collectMentions(value, previous) {
|
|
21
|
+
return [...previous, value];
|
|
22
|
+
}
|
|
11
23
|
// ---------------------------------------------------------------------------
|
|
12
24
|
// Pure helpers (exported for unit tests)
|
|
13
25
|
// ---------------------------------------------------------------------------
|
|
@@ -33,6 +45,27 @@ export function parseDuration(input) {
|
|
|
33
45
|
}
|
|
34
46
|
/** PRD upper bound on browser-launch share-session expiry. */
|
|
35
47
|
export const MAX_SHARE_SESSION_EXPIRY_MS = 24 * 60 * 60 * 1000; // 24h
|
|
48
|
+
/** Render the ACL-specific meaning of a path without changing its wire value. */
|
|
49
|
+
function displayAclPattern(prefix) {
|
|
50
|
+
return isPrivateFolderPattern(prefix)
|
|
51
|
+
? `${prefix} (private folder)`
|
|
52
|
+
: prefix;
|
|
53
|
+
}
|
|
54
|
+
function privateFolderExplanation(prefix) {
|
|
55
|
+
return (`Private folder '${prefix}' — write can create only a new direct child. ` +
|
|
56
|
+
"Children are creator-only; this grant does not read, list, overwrite, or delete them.");
|
|
57
|
+
}
|
|
58
|
+
function formatAclPatternConflict(prefix, serverMessage) {
|
|
59
|
+
const privatePattern = prefix.endsWith("/*")
|
|
60
|
+
? prefix.slice(0, -1)
|
|
61
|
+
: prefix.endsWith("/")
|
|
62
|
+
? prefix
|
|
63
|
+
: `${prefix}/`;
|
|
64
|
+
const sharedPattern = `${privatePattern}*`;
|
|
65
|
+
const detail = serverMessage ? `${serverMessage}. ` : "";
|
|
66
|
+
return (`${detail}A private folder '${privatePattern}' and shared folder glob ` +
|
|
67
|
+
`'${sharedPattern}' cannot both exist. Remove the conflicting ACL pattern and retry.`);
|
|
68
|
+
}
|
|
36
69
|
/**
|
|
37
70
|
* POST /files/{companyUid}/share-session — mint a browser-launch share
|
|
38
71
|
* session token. Returns the parsed response. Throws ShareSessionHttpError
|
|
@@ -94,7 +127,7 @@ export function formatShareSessionError(err) {
|
|
|
94
127
|
export function registerFilesCommand(program) {
|
|
95
128
|
const files = program
|
|
96
129
|
.command("files")
|
|
97
|
-
.description("Manage file access controls in HQ vault")
|
|
130
|
+
.description("Manage file access controls in HQ vault. A trailing folder slash (foo/) is a private folder; the quoted glob 'foo/*' shares all children.")
|
|
98
131
|
.option("--company <slug>", "Company slug (resolves to companyUid)");
|
|
99
132
|
// An exported HQ_API_KEY must never fall back to the caller's Cognito session
|
|
100
133
|
// (that would ignore the key's scope entirely), so every subcommand is gated.
|
|
@@ -123,14 +156,29 @@ export function registerFilesCommand(program) {
|
|
|
123
156
|
});
|
|
124
157
|
files
|
|
125
158
|
.command("share [paths...]")
|
|
126
|
-
.description("Share file paths. Without --with: mint a share-session URL and open it in the browser. With --with: grant access directly to a person, group, or @all.")
|
|
159
|
+
.description("Share file paths. foo/ is a private folder (children stay creator-only); quote the shared-folder glob 'foo/*' so the shell passes it literally. Without --with: mint a share-session URL and open it in the browser. With --with: grant access directly to a person, group, or @all.")
|
|
127
160
|
.option("--with <principal>", "Email address, group id, or '@all' to share with every active company member")
|
|
128
161
|
.option("--permission <level>", "Permission level (only with --with): read | write")
|
|
129
162
|
.option("--full", "Grant access to the ENTIRE vault (the '*' wildcard prefix) — no need to quote a glob. Requires --with; defaults to write permission.")
|
|
130
163
|
.option("--expires <duration>", "Token expiry duration for share-session URL (e.g. 15m, 1h, 24h). Default 15m. Max 24h.")
|
|
131
164
|
.option("--no-open", "Print the share-session URL but do not launch the browser")
|
|
165
|
+
.option("--channel <name>", "Post the share record to this named channel instead of a DM")
|
|
166
|
+
.option("--mention <person>", "Mention a person on the channel share record (repeatable)", collectMentions, [])
|
|
132
167
|
.action(async (paths, opts) => {
|
|
133
168
|
try {
|
|
169
|
+
const mentions = opts.mention ?? [];
|
|
170
|
+
if (mentions.length > 0 && opts.channel === undefined) {
|
|
171
|
+
console.error(chalk.red("--mention requires --channel <name>."));
|
|
172
|
+
process.exit(1);
|
|
173
|
+
}
|
|
174
|
+
const companySlug = files.opts().company;
|
|
175
|
+
const channelTarget = opts.channel !== undefined
|
|
176
|
+
? await resolveShareChannelTarget({
|
|
177
|
+
channelName: opts.channel,
|
|
178
|
+
mentions,
|
|
179
|
+
companySlug,
|
|
180
|
+
})
|
|
181
|
+
: undefined;
|
|
134
182
|
// Full-vault grant: a glob-safe affordance for "give this person the
|
|
135
183
|
// whole vault" so admins never have to quote a `*` (an unquoted glob
|
|
136
184
|
// expands to local filenames and instantly fails the one-prefix
|
|
@@ -150,8 +198,9 @@ export function registerFilesCommand(program) {
|
|
|
150
198
|
prefix: "*",
|
|
151
199
|
principal: opts.with,
|
|
152
200
|
permission: opts.permission ?? "write",
|
|
153
|
-
companySlug
|
|
201
|
+
companySlug,
|
|
154
202
|
fullVault: true,
|
|
203
|
+
...channelTarget,
|
|
155
204
|
});
|
|
156
205
|
return;
|
|
157
206
|
}
|
|
@@ -159,9 +208,9 @@ export function registerFilesCommand(program) {
|
|
|
159
208
|
console.error(chalk.red("usage: hq files share <paths...> [--with <principal>]"));
|
|
160
209
|
process.exit(1);
|
|
161
210
|
}
|
|
162
|
-
// Fork: --with present → existing direct-grant path.
|
|
163
|
-
//
|
|
164
|
-
//
|
|
211
|
+
// Fork: --with present → existing direct-grant path. --channel without
|
|
212
|
+
// --with grants each --mention as a person. No --with and no --channel
|
|
213
|
+
// → browser-launch share-session path.
|
|
165
214
|
if (opts.with !== undefined) {
|
|
166
215
|
if (paths.length !== 1) {
|
|
167
216
|
console.error(chalk.red("Direct grant (--with) takes exactly one prefix. Pass multiple paths only when minting a share-session URL."));
|
|
@@ -171,15 +220,42 @@ export function registerFilesCommand(program) {
|
|
|
171
220
|
prefix: paths[0],
|
|
172
221
|
principal: opts.with,
|
|
173
222
|
permission: opts.permission,
|
|
174
|
-
companySlug
|
|
223
|
+
companySlug,
|
|
224
|
+
...channelTarget,
|
|
175
225
|
});
|
|
176
226
|
return;
|
|
177
227
|
}
|
|
228
|
+
if (channelTarget) {
|
|
229
|
+
if (channelTarget.mentionPersonUids.length === 0) {
|
|
230
|
+
console.error(chalk.red("--channel requires --with <principal> or --mention <person>."));
|
|
231
|
+
process.exit(1);
|
|
232
|
+
}
|
|
233
|
+
if (paths.length !== 1) {
|
|
234
|
+
console.error(chalk.red("Channel share takes exactly one prefix. Pass multiple paths only when minting a share-session URL."));
|
|
235
|
+
process.exit(1);
|
|
236
|
+
}
|
|
237
|
+
const permission = opts.permission ?? "read";
|
|
238
|
+
for (const [index, uid] of channelTarget.mentionPersonUids.entries()) {
|
|
239
|
+
await runDirectGrant({
|
|
240
|
+
prefix: paths[0],
|
|
241
|
+
principal: uid,
|
|
242
|
+
permission,
|
|
243
|
+
companySlug,
|
|
244
|
+
...(index === 0
|
|
245
|
+
? {
|
|
246
|
+
channelId: channelTarget.channelId,
|
|
247
|
+
mentionPersonUids: channelTarget.mentionPersonUids,
|
|
248
|
+
}
|
|
249
|
+
: {}),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
178
254
|
await runShareSession({
|
|
179
255
|
paths,
|
|
180
256
|
expires: opts.expires,
|
|
181
257
|
launchBrowser: opts.open,
|
|
182
|
-
companySlug
|
|
258
|
+
companySlug,
|
|
183
259
|
});
|
|
184
260
|
}
|
|
185
261
|
catch (err) {
|
|
@@ -189,15 +265,16 @@ export function registerFilesCommand(program) {
|
|
|
189
265
|
});
|
|
190
266
|
files
|
|
191
267
|
.command("unshare <prefix>")
|
|
192
|
-
.description("Remove a file access grant")
|
|
193
|
-
.requiredOption("--with <principal>", "
|
|
268
|
+
.description("Remove a file access grant. A trailing slash targets the private-folder row exactly.")
|
|
269
|
+
.requiredOption("--with <principal>", "Person uid, agent uid, email address, group id, or '@all' to remove the grant")
|
|
194
270
|
.action(async (prefix, opts) => {
|
|
195
271
|
try {
|
|
196
|
-
// Unshare MUTATES access with no preview
|
|
197
|
-
//
|
|
198
|
-
//
|
|
272
|
+
// Unshare MUTATES access with no preview. Anchored content paths remain
|
|
273
|
+
// refused; the exact company-root ACL row is the sole exception and
|
|
274
|
+
// resolves its anchor against the selected company before revoking.
|
|
199
275
|
const canonicalPrefix = normalizeCompanyFilePrefix(prefix, {
|
|
200
276
|
mutating: true,
|
|
277
|
+
allowCompanyRootAclRow: true,
|
|
201
278
|
...(files.opts().company !== undefined
|
|
202
279
|
? { companySlug: files.opts().company }
|
|
203
280
|
: {}),
|
|
@@ -206,15 +283,21 @@ export function registerFilesCommand(program) {
|
|
|
206
283
|
const isAll = principal === "@all";
|
|
207
284
|
const isEmail = !isAll && EMAIL_PATTERN.test(principal);
|
|
208
285
|
const isGroup = !isAll && GROUP_ID_PATTERN.test(principal);
|
|
209
|
-
|
|
210
|
-
|
|
286
|
+
const isAgent = !isAll && !isEmail && !isGroup && AGENT_UID_PATTERN.test(principal);
|
|
287
|
+
const isPerson = !isAll && !isEmail && !isGroup && !isAgent && PERSON_UID_PATTERN.test(principal);
|
|
288
|
+
if (!isAll && !isEmail && !isGroup && !isPerson && !isAgent) {
|
|
289
|
+
console.error(chalk.red(`Invalid principal '${principal}': must be '@all', an email address, a person uid matching prs_<alphanumeric>, an agent uid matching agt_<alphanumeric>, or a group id matching grp_<alphanumeric>`));
|
|
211
290
|
process.exit(1);
|
|
212
291
|
}
|
|
292
|
+
// The vault ACL API stores first-class agent access on its backwards-
|
|
293
|
+
// compatible person tuple: { granteeType: "person", granteeId: "agt_*" }.
|
|
213
294
|
const granteeType = isAll
|
|
214
295
|
? "company-wide"
|
|
215
296
|
: isEmail
|
|
216
297
|
? "email"
|
|
217
|
-
:
|
|
298
|
+
: isGroup
|
|
299
|
+
? "group"
|
|
300
|
+
: "person";
|
|
218
301
|
const granteeId = isAll
|
|
219
302
|
? ""
|
|
220
303
|
: isEmail
|
|
@@ -222,8 +305,14 @@ export function registerFilesCommand(program) {
|
|
|
222
305
|
: principal;
|
|
223
306
|
const principalLabel = isAll ? "everyone in the company" : granteeId;
|
|
224
307
|
const token = (await resolveVaultCredential()).token;
|
|
225
|
-
const
|
|
226
|
-
const
|
|
308
|
+
const explicitCompanySlug = files.opts().company;
|
|
309
|
+
const companyRootSlug = stripRedundantCompanyScope(prefix)?.prefix === ""
|
|
310
|
+
? companySlugFromAnchor(prefix)
|
|
311
|
+
: undefined;
|
|
312
|
+
const companyUid = await resolveCompanyUidForAnchoredPath(token, {
|
|
313
|
+
explicit: explicitCompanySlug,
|
|
314
|
+
anchorSlug: companyRootSlug,
|
|
315
|
+
});
|
|
227
316
|
const res = await vaultApiFetch({
|
|
228
317
|
token,
|
|
229
318
|
path: `/files/${encodeURIComponent(companyUid)}/acl/revoke`,
|
|
@@ -266,7 +355,7 @@ export function registerFilesCommand(program) {
|
|
|
266
355
|
}
|
|
267
356
|
process.exit(1);
|
|
268
357
|
}
|
|
269
|
-
console.log(chalk.green(`Removed grant for ${principalLabel} on '${canonicalPrefix}'`));
|
|
358
|
+
console.log(chalk.green(`Removed grant for ${principalLabel} on '${displayAclPattern(canonicalPrefix)}'`));
|
|
270
359
|
}
|
|
271
360
|
catch (err) {
|
|
272
361
|
console.error(chalk.red("Error:"), err instanceof Error ? err.message : String(err));
|
|
@@ -275,13 +364,15 @@ export function registerFilesCommand(program) {
|
|
|
275
364
|
});
|
|
276
365
|
files
|
|
277
366
|
.command("acl <prefix>")
|
|
278
|
-
.description("Show the ACL (access control list) for a file prefix")
|
|
279
|
-
.
|
|
367
|
+
.description("Show the ACL (access control list) for a file prefix. foo/ is a private folder whose children are creator-only; the quoted glob 'foo/*' is shared.")
|
|
368
|
+
.option("--json", "Output structured ACL data, including explicit absence")
|
|
369
|
+
.action(async (prefix, opts) => {
|
|
280
370
|
try {
|
|
281
371
|
// Read-only, so stripping is safe — but a mismatched anchor would show
|
|
282
372
|
// a DIFFERENT company's ACL than the one the operator pasted.
|
|
283
373
|
const explicitCompany = files.opts().company;
|
|
284
374
|
const canonicalPrefix = normalizeCompanyFilePrefix(prefix, {
|
|
375
|
+
allowCompanyRootAclRow: true,
|
|
285
376
|
...(explicitCompany !== undefined
|
|
286
377
|
? { companySlug: explicitCompany }
|
|
287
378
|
: {}),
|
|
@@ -321,7 +412,16 @@ export function registerFilesCommand(program) {
|
|
|
321
412
|
process.exit(1);
|
|
322
413
|
}
|
|
323
414
|
const tree = (await treeRes.json());
|
|
415
|
+
if (!tree || typeof tree.prefix !== 'string' || !Array.isArray(tree.direct)
|
|
416
|
+
|| !Array.isArray(tree.inherited) || !Array.isArray(tree.children)
|
|
417
|
+
|| !(tree.directRow === null || (typeof tree.directRow === 'object' && tree.directRow))) {
|
|
418
|
+
throw new Error('Invalid ACL tree response');
|
|
419
|
+
}
|
|
324
420
|
const row = tree.directRow;
|
|
421
|
+
if (opts.json) {
|
|
422
|
+
console.log(JSON.stringify({ ...tree, schemaVersion: 1, companyUid, exists: row !== null }, null, 2));
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
325
425
|
// No own row AND nothing inherited or granted below — preserve the
|
|
326
426
|
// original "no ACL record" exit path.
|
|
327
427
|
if (!row && tree.inherited.length === 0 && tree.children.length === 0) {
|
|
@@ -329,7 +429,10 @@ export function registerFilesCommand(program) {
|
|
|
329
429
|
process.exit(1);
|
|
330
430
|
}
|
|
331
431
|
const aclStatus = row?.open ? "open" : "restricted";
|
|
332
|
-
console.log(chalk.green(`ACL for ${tree.prefix} (${aclStatus})`));
|
|
432
|
+
console.log(chalk.green(`ACL for ${displayAclPattern(tree.prefix)} (${aclStatus})`));
|
|
433
|
+
if (isPrivateFolderPattern(tree.prefix)) {
|
|
434
|
+
console.log(chalk.gray(privateFolderExplanation(tree.prefix)));
|
|
435
|
+
}
|
|
333
436
|
if (row) {
|
|
334
437
|
console.log(`Creator: ${row.creatorUid}`);
|
|
335
438
|
}
|
|
@@ -353,7 +456,7 @@ export function registerFilesCommand(program) {
|
|
|
353
456
|
const PERM_W = Math.max(10, ...rows.map((e) => e.permission.length));
|
|
354
457
|
const BY_W = Math.max(10, ...rows.map((e) => e.grantedBy.length));
|
|
355
458
|
const SRC_W = showSource
|
|
356
|
-
? Math.max(6, ...rows.map((e) => (e.sourcePrefix ?? "").length))
|
|
459
|
+
? Math.max(6, ...rows.map((e) => displayAclPattern(e.sourcePrefix ?? "").length))
|
|
357
460
|
: 0;
|
|
358
461
|
const headerCols = [
|
|
359
462
|
"TYPE".padEnd(TYPE_W),
|
|
@@ -375,7 +478,7 @@ export function registerFilesCommand(program) {
|
|
|
375
478
|
grantedAt,
|
|
376
479
|
];
|
|
377
480
|
if (showSource)
|
|
378
|
-
cols.splice(4, 0, (e.sourcePrefix ?? "").padEnd(SRC_W));
|
|
481
|
+
cols.splice(4, 0, displayAclPattern(e.sourcePrefix ?? "").padEnd(SRC_W));
|
|
379
482
|
console.log(cols.join(" "));
|
|
380
483
|
}
|
|
381
484
|
}
|
|
@@ -408,7 +511,7 @@ export function registerFilesCommand(program) {
|
|
|
408
511
|
});
|
|
409
512
|
files
|
|
410
513
|
.command("delete <prefix>")
|
|
411
|
-
.description("Delete vault objects
|
|
514
|
+
.description("Delete vault objects by exact key or bounded prefix. A trailing slash expands recursively; use * for an explicit wildcard prefix. Always previews the exact count first; prompts for confirmation unless --yes. Use --personal to target your own personal vault instead of a company.")
|
|
412
515
|
.option("--dry-run", "List what WOULD be deleted without deleting anything")
|
|
413
516
|
.option("--personal", "Target your own personal vault instead of a company vault (mutually exclusive with --company)")
|
|
414
517
|
.option("-y, --yes", "Skip the confirmation prompt (for scripts)")
|
|
@@ -501,6 +604,114 @@ export function registerFilesCommand(program) {
|
|
|
501
604
|
// files-browse.ts) onto the same group without re-creating it.
|
|
502
605
|
return files;
|
|
503
606
|
}
|
|
607
|
+
/** Best-effort, default-off warning after the ACL grant has succeeded. */
|
|
608
|
+
async function warnIfEmptySharePrefix(params) {
|
|
609
|
+
if (isPrivateFolderPattern(params.prefix))
|
|
610
|
+
return;
|
|
611
|
+
let enabled;
|
|
612
|
+
try {
|
|
613
|
+
enabled = await resolveCompanyFlagGate(params.companyUid, params.token, FILES_SHARE_EMPTY_PREFIX_WARNING_FLAG, { fallback: false }, () => false);
|
|
614
|
+
}
|
|
615
|
+
catch (error) {
|
|
616
|
+
const errorClass = error instanceof Error ? error.name : "unknown error";
|
|
617
|
+
console.error(`hq: Could not resolve ${FILES_SHARE_EMPTY_PREFIX_WARNING_FLAG} (${errorClass}); using its fallback.`);
|
|
618
|
+
return;
|
|
619
|
+
}
|
|
620
|
+
if (!enabled)
|
|
621
|
+
return;
|
|
622
|
+
const listPrefix = params.fullVault
|
|
623
|
+
? ""
|
|
624
|
+
: params.prefix.endsWith("*")
|
|
625
|
+
? params.prefix.slice(0, -1)
|
|
626
|
+
: params.prefix;
|
|
627
|
+
try {
|
|
628
|
+
const query = {
|
|
629
|
+
company: params.companyUid,
|
|
630
|
+
};
|
|
631
|
+
if (listPrefix)
|
|
632
|
+
query.prefix = listPrefix;
|
|
633
|
+
const listed = await vaultApiFetch({
|
|
634
|
+
token: params.token,
|
|
635
|
+
path: "/v1/files/list",
|
|
636
|
+
query,
|
|
637
|
+
signal: AbortSignal.timeout(FILES_SHARE_EMPTY_PREFIX_CHECK_TIMEOUT_MS),
|
|
638
|
+
});
|
|
639
|
+
if (!listed.ok)
|
|
640
|
+
throw new Error(`files list failed (${listed.status})`);
|
|
641
|
+
const body = (await listed.json());
|
|
642
|
+
const objects = Array.isArray(body.objects) ? body.objects : [];
|
|
643
|
+
const hasMatchingObject = params.fullVault || params.prefix.endsWith("*")
|
|
644
|
+
? objects.length > 0
|
|
645
|
+
: objects.some((object) => object.key === listPrefix);
|
|
646
|
+
if (!hasMatchingObject) {
|
|
647
|
+
console.warn(chalk.yellow(`Warning: no files exist under '${displayAclPattern(params.prefix)}'. ` +
|
|
648
|
+
`The recipient will see nothing until files sync there.`));
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
catch (error) {
|
|
652
|
+
const errorClass = error instanceof Error ? error.name : "unknown error";
|
|
653
|
+
console.warn(chalk.yellow(`Could not check whether '${displayAclPattern(params.prefix)}' has files; ` +
|
|
654
|
+
`the share succeeded (${errorClass}).`));
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
async function resolveShareChannelTarget(params) {
|
|
658
|
+
const token = (await resolveVaultCredential()).token;
|
|
659
|
+
const channels = await fetchChannels(token);
|
|
660
|
+
const matches = matchChannelsByName(channels, params.channelName);
|
|
661
|
+
if (matches.length === 0) {
|
|
662
|
+
console.error(chalk.red(`No channel named '${params.channelName}' — run \`hq channels\` to see your channels.`));
|
|
663
|
+
process.exit(1);
|
|
664
|
+
}
|
|
665
|
+
if (matches.length > 1) {
|
|
666
|
+
const scopes = matches
|
|
667
|
+
.map((c) => c.scope ?? "unknown")
|
|
668
|
+
.join(", ");
|
|
669
|
+
console.error(chalk.red(`'${params.channelName}' matches ${matches.length} channels (${scopes}) — this is ambiguous.`));
|
|
670
|
+
process.exit(1);
|
|
671
|
+
}
|
|
672
|
+
const channelId = matches[0].channelId;
|
|
673
|
+
const mentionPersonUids = [];
|
|
674
|
+
for (const mention of params.mentions) {
|
|
675
|
+
mentionPersonUids.push(await resolveMentionPersonUid(mention, params.companySlug));
|
|
676
|
+
}
|
|
677
|
+
return { channelId, mentionPersonUids };
|
|
678
|
+
}
|
|
679
|
+
async function resolveMentionPersonUid(mention, companySlug) {
|
|
680
|
+
const trimmed = mention.trim();
|
|
681
|
+
if (PERSON_UID_PATTERN.test(trimmed))
|
|
682
|
+
return trimmed;
|
|
683
|
+
const hqRoot = findHqRoot();
|
|
684
|
+
const slug = resolveCompanySlug(hqRoot, companySlug);
|
|
685
|
+
const result = await resolvePersonWithRosterFallback({
|
|
686
|
+
hqRoot,
|
|
687
|
+
slug,
|
|
688
|
+
name: trimmed,
|
|
689
|
+
});
|
|
690
|
+
if (result.status === "found" && result.person.personUid) {
|
|
691
|
+
return result.person.personUid;
|
|
692
|
+
}
|
|
693
|
+
if (result.status === "ambiguous") {
|
|
694
|
+
const names = result.matches.map((p) => p.name).join(", ");
|
|
695
|
+
console.error(chalk.red(`'${trimmed}' matches multiple people (${names}) — use a person uid or email.`));
|
|
696
|
+
process.exit(1);
|
|
697
|
+
}
|
|
698
|
+
const membership = await resolvePersonWithRosterFallback({
|
|
699
|
+
hqRoot,
|
|
700
|
+
slug,
|
|
701
|
+
name: trimmed,
|
|
702
|
+
opts: { membershipOnly: true },
|
|
703
|
+
});
|
|
704
|
+
if (membership.status === "found" && membership.person.personUid) {
|
|
705
|
+
return membership.person.personUid;
|
|
706
|
+
}
|
|
707
|
+
if (membership.status === "ambiguous") {
|
|
708
|
+
const names = membership.matches.map((p) => p.name).join(", ");
|
|
709
|
+
console.error(chalk.red(`'${trimmed}' matches multiple people (${names}) — use a person uid or email.`));
|
|
710
|
+
process.exit(1);
|
|
711
|
+
}
|
|
712
|
+
console.error(chalk.red(`Could not resolve --mention '${trimmed}' to a person.`));
|
|
713
|
+
process.exit(1);
|
|
714
|
+
}
|
|
504
715
|
async function runDirectGrant(params) {
|
|
505
716
|
const canonicalPrefix = normalizeCompanyFilePrefix(params.prefix, {
|
|
506
717
|
mutating: true,
|
|
@@ -525,11 +736,18 @@ async function runDirectGrant(params) {
|
|
|
525
736
|
const isAll = principal === "@all";
|
|
526
737
|
const isEmail = !isAll && EMAIL_PATTERN.test(principal);
|
|
527
738
|
const isGroup = !isAll && GROUP_ID_PATTERN.test(principal);
|
|
528
|
-
|
|
529
|
-
|
|
739
|
+
const isPerson = !isAll && !isEmail && !isGroup && PERSON_UID_PATTERN.test(principal);
|
|
740
|
+
if (!isAll && !isEmail && !isGroup && !isPerson) {
|
|
741
|
+
console.error(chalk.red(`Invalid principal '${principal}': must be '@all', an email address, a person uid, or a group id matching grp_<alphanumeric>`));
|
|
530
742
|
process.exit(1);
|
|
531
743
|
}
|
|
532
|
-
const granteeType = isAll
|
|
744
|
+
const granteeType = isAll
|
|
745
|
+
? "company-wide"
|
|
746
|
+
: isEmail
|
|
747
|
+
? "email"
|
|
748
|
+
: isPerson
|
|
749
|
+
? "person"
|
|
750
|
+
: "group";
|
|
533
751
|
const granteeId = isAll
|
|
534
752
|
? ""
|
|
535
753
|
: isEmail
|
|
@@ -548,6 +766,10 @@ async function runDirectGrant(params) {
|
|
|
548
766
|
granteeType,
|
|
549
767
|
granteeId,
|
|
550
768
|
permission: params.permission,
|
|
769
|
+
...(params.channelId ? { channelId: params.channelId } : {}),
|
|
770
|
+
...(params.mentionPersonUids && params.mentionPersonUids.length > 0
|
|
771
|
+
? { mentionPersonUids: params.mentionPersonUids }
|
|
772
|
+
: {}),
|
|
551
773
|
},
|
|
552
774
|
});
|
|
553
775
|
// No ACL row exists yet for this prefix. Auto-create one with this
|
|
@@ -562,6 +784,10 @@ async function runDirectGrant(params) {
|
|
|
562
784
|
body: {
|
|
563
785
|
prefix: canonicalPrefix,
|
|
564
786
|
entries: [{ granteeType, granteeId, permission: params.permission }],
|
|
787
|
+
...(params.channelId ? { channelId: params.channelId } : {}),
|
|
788
|
+
...(params.mentionPersonUids && params.mentionPersonUids.length > 0
|
|
789
|
+
? { mentionPersonUids: params.mentionPersonUids }
|
|
790
|
+
: {}),
|
|
565
791
|
},
|
|
566
792
|
});
|
|
567
793
|
autoCreated = res.ok;
|
|
@@ -580,6 +806,9 @@ async function runDirectGrant(params) {
|
|
|
580
806
|
else if (res.status === 404) {
|
|
581
807
|
console.error(chalk.red("ACL record not found — the prefix may not have an ACL yet"));
|
|
582
808
|
}
|
|
809
|
+
else if (res.status === 409 && body.code === "ACL_PATTERN_CONFLICT") {
|
|
810
|
+
console.error(chalk.red(formatAclPatternConflict(canonicalPrefix, body.message)));
|
|
811
|
+
}
|
|
583
812
|
else if (res.status === 409) {
|
|
584
813
|
console.error(chalk.red("Concurrent modification — please retry"));
|
|
585
814
|
}
|
|
@@ -593,12 +822,26 @@ async function runDirectGrant(params) {
|
|
|
593
822
|
}
|
|
594
823
|
const data = (await res.json());
|
|
595
824
|
const printedPrefix = data.acl?.path ?? data.acl?.prefix ?? canonicalPrefix;
|
|
825
|
+
await warnIfEmptySharePrefix({
|
|
826
|
+
token,
|
|
827
|
+
companyUid,
|
|
828
|
+
prefix: canonicalPrefix,
|
|
829
|
+
fullVault: params.fullVault === true,
|
|
830
|
+
});
|
|
596
831
|
const verb = autoCreated ? "Created ACL and granted" : "Granted";
|
|
597
832
|
if (params.fullVault) {
|
|
598
833
|
console.log(chalk.green(`${verb} ${params.permission} on the ENTIRE vault to ${principalLabel}`));
|
|
599
834
|
}
|
|
600
835
|
else {
|
|
601
|
-
console.log(chalk.green(`${verb} ${params.permission} on ${printedPrefix} to ${principalLabel}`));
|
|
836
|
+
console.log(chalk.green(`${verb} ${params.permission} on ${displayAclPattern(printedPrefix)} to ${principalLabel}`));
|
|
837
|
+
}
|
|
838
|
+
if (isPrivateFolderPattern(printedPrefix)) {
|
|
839
|
+
console.log(chalk.gray(privateFolderExplanation(printedPrefix)));
|
|
840
|
+
}
|
|
841
|
+
if (typeof data.record?.error === "string" &&
|
|
842
|
+
typeof data.record.status === "number" &&
|
|
843
|
+
data.record.status >= 400) {
|
|
844
|
+
console.log(data.record.error);
|
|
602
845
|
}
|
|
603
846
|
}
|
|
604
847
|
async function runShareSession(params) {
|
|
@@ -707,7 +950,7 @@ function realConfirm(message) {
|
|
|
707
950
|
* person + bucket from the authenticated caller — we send NO uid, just the
|
|
708
951
|
* `personal` flag — so there is nothing for the client to get wrong or spoof.
|
|
709
952
|
*/
|
|
710
|
-
async function callDeleteEndpoint(params) {
|
|
953
|
+
export async function callDeleteEndpoint(params) {
|
|
711
954
|
const res = await vaultApiFetch({
|
|
712
955
|
token: params.token,
|
|
713
956
|
path: "/v1/files/delete",
|
|
@@ -854,9 +1097,11 @@ export function companySlugFromAnchor(prefix, personal) {
|
|
|
854
1097
|
* Normalize company paths at the CLI boundary, preserving personal keys.
|
|
855
1098
|
*
|
|
856
1099
|
* `mutating` marks a route that CHANGES access and has no preview or
|
|
857
|
-
* confirmation step (grant, share, unshare). Those refuse
|
|
858
|
-
*
|
|
1100
|
+
* confirmation step (grant, share, unshare). Those refuse anchored content
|
|
1101
|
+
* paths rather than guessing, because stripping the anchor changes which
|
|
859
1102
|
* objects the operation reaches and there is nothing downstream to catch it.
|
|
1103
|
+
* `allowCompanyRootAclRow` is limited to exact-root ACL inspect/revoke calls:
|
|
1104
|
+
* those need the original anchor to match a legacy company-root ACL row.
|
|
860
1105
|
*
|
|
861
1106
|
* `companySlug` is the company the command is actually targeting. When the
|
|
862
1107
|
* anchor names a DIFFERENT company we refuse in every mode: stripping would
|
|
@@ -884,9 +1129,12 @@ function normalizeCompanyFilePrefix(prefix, options = {}) {
|
|
|
884
1129
|
`operation to '${options.companySlug}' instead. Re-run with ` +
|
|
885
1130
|
`--company ${scope.strippedSlug}, or pass the bucket-relative path.`);
|
|
886
1131
|
}
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
1132
|
+
if (!scope.prefix && options.allowCompanyRootAclRow) {
|
|
1133
|
+
return normalizeFilePrefix(prefix);
|
|
1134
|
+
}
|
|
1135
|
+
// A bare anchor strips to nothing. Content operations must fail with a
|
|
1136
|
+
// message that says what to do instead; exact-root ACL operations preserve
|
|
1137
|
+
// the original anchor above. `deferRootReject` is for callers that already have a
|
|
890
1138
|
// root guard with better copy — `runFilesDelete` says "Refusing to delete the
|
|
891
1139
|
// vault root", which beats anything this generic helper could write.
|
|
892
1140
|
if (!scope.prefix && !options.deferRootReject) {
|
|
@@ -911,19 +1159,20 @@ export async function runFilesDelete(params, deps = {}) {
|
|
|
911
1159
|
const confirm = deps.confirm ?? realConfirm;
|
|
912
1160
|
// Strip the local company anchor before preview/confirmation (HQ-8F/HQ-CA).
|
|
913
1161
|
// Personal keys are already bucket-relative and must keep any such anchor.
|
|
914
|
-
//
|
|
1162
|
+
// Deletion intentionally expands a folder spelling to a recursive glob, then
|
|
1163
|
+
// rejects the root/empty prefix before
|
|
915
1164
|
// any network call, including when stripping a bare company anchor empties it.
|
|
916
1165
|
// The anchor names a company. Compare it with --company (refusing a
|
|
917
1166
|
// mismatch), and when --company was omitted ADOPT it rather than letting the
|
|
918
1167
|
// membership fallback pick a different company to delete from.
|
|
919
1168
|
const anchorSlug = companySlugFromAnchor(params.prefix, params.personal);
|
|
920
|
-
const normalized = normalizeCompanyFilePrefix(params.prefix, {
|
|
1169
|
+
const normalized = toSharedFolderGlob(normalizeCompanyFilePrefix(params.prefix, {
|
|
921
1170
|
personal: params.personal,
|
|
922
1171
|
deferRootReject: true,
|
|
923
1172
|
...(params.companySlug !== undefined
|
|
924
1173
|
? { companySlug: params.companySlug }
|
|
925
1174
|
: {}),
|
|
926
|
-
});
|
|
1175
|
+
}));
|
|
927
1176
|
if (normalized === "" || normalized === "*" || normalized === "/*") {
|
|
928
1177
|
console.error(chalk.red("Refusing to delete the vault root. Pass a bounded prefix (e.g. 'projects/foo/' or 'projects/foo/*') or an exact key."));
|
|
929
1178
|
process.exit(1);
|
|
@@ -1058,13 +1307,15 @@ export function formatFilesVersionsTable(rows) {
|
|
|
1058
1307
|
row.lastModified,
|
|
1059
1308
|
row.isDeleteMarker ? "—" : formatBytes(row.size),
|
|
1060
1309
|
]);
|
|
1061
|
-
const widths = cols.map((col, index) =>
|
|
1310
|
+
const widths = cols.map((col, index) => maxLength(data, (row) => row[index].length, col.length));
|
|
1062
1311
|
const renderRow = (row) => row.map((cell, index) => cell.padEnd(widths[index])).join(" ");
|
|
1063
|
-
|
|
1312
|
+
const lines = [
|
|
1064
1313
|
chalk.bold(renderRow(cols)),
|
|
1065
1314
|
chalk.dim(renderRow(widths.map((width) => "─".repeat(width)))),
|
|
1066
|
-
|
|
1067
|
-
|
|
1315
|
+
];
|
|
1316
|
+
for (const row of data)
|
|
1317
|
+
lines.push(renderRow(row));
|
|
1318
|
+
return lines.join("\n");
|
|
1068
1319
|
}
|
|
1069
1320
|
/** Render durable delete tombstones without implying the objects still exist. */
|
|
1070
1321
|
export function formatFilesTrashTable(rows) {
|
|
@@ -1078,13 +1329,15 @@ export function formatFilesTrashTable(rows) {
|
|
|
1078
1329
|
row.deletedBy,
|
|
1079
1330
|
row.deletedPrefix,
|
|
1080
1331
|
]);
|
|
1081
|
-
const widths = cols.map((col, index) =>
|
|
1332
|
+
const widths = cols.map((col, index) => maxLength(data, (row) => row[index].length, col.length));
|
|
1082
1333
|
const renderRow = (row) => row.map((cell, index) => cell.padEnd(widths[index])).join(" ");
|
|
1083
|
-
|
|
1334
|
+
const lines = [
|
|
1084
1335
|
chalk.bold(renderRow(cols)),
|
|
1085
1336
|
chalk.dim(renderRow(widths.map((width) => "─".repeat(width)))),
|
|
1086
|
-
|
|
1087
|
-
|
|
1337
|
+
];
|
|
1338
|
+
for (const row of data)
|
|
1339
|
+
lines.push(renderRow(row));
|
|
1340
|
+
return lines.join("\n");
|
|
1088
1341
|
}
|
|
1089
1342
|
function throwRecoveryHttpError(status, body, statusText) {
|
|
1090
1343
|
throw new FilesRecoveryHttpError(status, body.message ?? body.error ?? statusText, body.code);
|
|
@@ -242,8 +242,9 @@ export function registerGroupGrantsCommand(program) {
|
|
|
242
242
|
});
|
|
243
243
|
grants
|
|
244
244
|
.command("outbound")
|
|
245
|
-
.description("List grants a source-company group holds on other companies"
|
|
246
|
-
|
|
245
|
+
.description("List grants a source-company group holds on other companies; " +
|
|
246
|
+
"requires --group <groupId>.")
|
|
247
|
+
.requiredOption("--group <groupId>", "Group id to inspect (required)")
|
|
247
248
|
.action(async (opts) => {
|
|
248
249
|
try {
|
|
249
250
|
const token = await ensureCognitoToken();
|
package/dist/commands/groups.js
CHANGED
|
@@ -2,6 +2,7 @@ import chalk from "chalk";
|
|
|
2
2
|
import { ensureCognitoToken } from "../utils/cognito-session.js";
|
|
3
3
|
import { vaultApiFetch, getCompanyUid } from "./secrets.js";
|
|
4
4
|
import { GROUP_ID_PATTERN } from "./_patterns.js";
|
|
5
|
+
import { maxLength } from "../utils/table-width.js";
|
|
5
6
|
const EMAIL_PATTERN = /^[^\s]+@[^\s]+$/;
|
|
6
7
|
const PERSON_UID_PATTERN = /^prs_[A-Za-z0-9_-]+$/;
|
|
7
8
|
const AGENT_UID_PATTERN = /^agt_[A-Za-z0-9_-]+$/;
|
|
@@ -261,9 +262,9 @@ export function registerGroupsCommand(program) {
|
|
|
261
262
|
console.log(chalk.gray("No groups in this company yet."));
|
|
262
263
|
return;
|
|
263
264
|
}
|
|
264
|
-
const idW =
|
|
265
|
-
const nameW =
|
|
266
|
-
const descW =
|
|
265
|
+
const idW = maxLength(data.groups, (group) => group.groupId.length, 8);
|
|
266
|
+
const nameW = maxLength(data.groups, (group) => group.name.length, 4);
|
|
267
|
+
const descW = maxLength(data.groups, (group) => (group.description ?? "").length, 11);
|
|
267
268
|
console.log(chalk.bold([
|
|
268
269
|
"GROUP_ID".padEnd(idW),
|
|
269
270
|
"NAME".padEnd(nameW),
|
|
@@ -326,8 +327,8 @@ export function registerGroupsCommand(program) {
|
|
|
326
327
|
console.log(chalk.gray("No members yet — use 'hq groups add' to add."));
|
|
327
328
|
return;
|
|
328
329
|
}
|
|
329
|
-
const uidW =
|
|
330
|
-
const byW =
|
|
330
|
+
const uidW = maxLength(data.members, (member) => member.personUid.length, 10);
|
|
331
|
+
const byW = maxLength(data.members, (member) => member.addedBy.length, 8);
|
|
331
332
|
console.log(chalk.bold([
|
|
332
333
|
"PERSON_UID".padEnd(uidW),
|
|
333
334
|
"ADDED_BY".padEnd(byW),
|