@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/dm.js
CHANGED
|
@@ -2,11 +2,9 @@ import chalk from "chalk";
|
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { ensureCognitoToken } from "../utils/cognito-session.js";
|
|
4
4
|
import { vaultApiFetch } from "../utils/vault-api.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// agt_* recipients into the agent's durable box inbox.
|
|
9
|
-
const RECIPIENT_UID_PATTERN = /^(prs|agt)_[A-Za-z0-9_-]+$/;
|
|
5
|
+
import { isMachineIdentity } from "@indigoai-us/hq-cloud";
|
|
6
|
+
import { peekIdToken } from "../utils/id-token.js";
|
|
7
|
+
import { EMAIL_PATTERN, RECIPIENT_UID_PATTERN } from "../lib/notify-recipient.js";
|
|
10
8
|
/**
|
|
11
9
|
* Classify a recipient arg as an email or a person/agent uid. Mirrors the
|
|
12
10
|
* email/uid heuristic used by `hq members`. Returns null for neither.
|
|
@@ -86,6 +84,13 @@ export function parseChannelName(recipient) {
|
|
|
86
84
|
* unit-testable.
|
|
87
85
|
*/
|
|
88
86
|
export function matchChannelsByName(channels, name) {
|
|
87
|
+
// A channel id is exact and names nothing else, so it may target any scope,
|
|
88
|
+
// including an unnamed group DM. Bots reply this way: their inbox carries
|
|
89
|
+
// the id of the conversation a message arrived in, not its name.
|
|
90
|
+
const trimmed = name.trim().replace(/^#/, "");
|
|
91
|
+
if (/^chn_[A-Za-z0-9]+$/.test(trimmed)) {
|
|
92
|
+
return channels.filter((c) => c.channelId === trimmed);
|
|
93
|
+
}
|
|
89
94
|
const targetSlug = channelSlug(name);
|
|
90
95
|
const targetName = name.trim().toLowerCase();
|
|
91
96
|
if (!targetSlug && !targetName)
|
|
@@ -136,6 +141,15 @@ export function mentionParticipantType(uid) {
|
|
|
136
141
|
* Trailing punctuation is trimmed ("@Izzy," → "Izzy"), so a name is never
|
|
137
142
|
* polluted by the sentence around it.
|
|
138
143
|
*/
|
|
144
|
+
/**
|
|
145
|
+
* Once a quoted token has resolved to a real mention, the quotes have done
|
|
146
|
+
* their job (they only exist so a multi-word name parses as one token). Post
|
|
147
|
+
* the body with `@"Jacob Posel"` rewritten to `@Jacob Posel`, which is how a
|
|
148
|
+
* person would have typed it and how the room should read it. Pure.
|
|
149
|
+
*/
|
|
150
|
+
export function stripMentionQuotes(body) {
|
|
151
|
+
return body.replace(/(^|[\s([{<])@"([^"\n]{1,80})"/g, "$1@$2");
|
|
152
|
+
}
|
|
139
153
|
export function parseMentionTokens(body) {
|
|
140
154
|
const pattern = /(^|[\s([{<])@(?:"([^"\n]{1,80})"|([A-Za-z0-9][A-Za-z0-9._-]*))/g;
|
|
141
155
|
const names = [];
|
|
@@ -269,6 +283,7 @@ export function parseDuration(input) {
|
|
|
269
283
|
};
|
|
270
284
|
return n * mult[m[2]];
|
|
271
285
|
}
|
|
286
|
+
const DM_AUDIENCE_VALUES = ["human", "agent", "both"];
|
|
272
287
|
/**
|
|
273
288
|
* Build the POST /v1/notify/dm request body from CLI inputs. Pure (no I/O,
|
|
274
289
|
* no clock) so the option-resolution logic is unit-testable; the caller
|
|
@@ -305,12 +320,20 @@ export function buildDmBody(args) {
|
|
|
305
320
|
}
|
|
306
321
|
const prompt = args.prompt?.trim();
|
|
307
322
|
const details = args.details?.trim();
|
|
323
|
+
let audience;
|
|
324
|
+
if (args.audience !== undefined && args.audience !== "") {
|
|
325
|
+
if (!DM_AUDIENCE_VALUES.includes(args.audience)) {
|
|
326
|
+
throw new Error(`Invalid --audience '${args.audience}': must be human, agent, or both.`);
|
|
327
|
+
}
|
|
328
|
+
audience = args.audience;
|
|
329
|
+
}
|
|
308
330
|
return {
|
|
309
331
|
...rcpt,
|
|
310
332
|
body,
|
|
311
333
|
...(prompt ? { prompt } : {}),
|
|
312
334
|
...(details ? { details } : {}),
|
|
313
335
|
...(deliverAt ? { deliverAt } : {}),
|
|
336
|
+
...(audience ? { audience } : {}),
|
|
314
337
|
};
|
|
315
338
|
}
|
|
316
339
|
function friendlyDmError(status, code, fallback) {
|
|
@@ -344,25 +367,22 @@ export function matchRequest(requests, identifier) {
|
|
|
344
367
|
return null;
|
|
345
368
|
}
|
|
346
369
|
/**
|
|
347
|
-
* Build the POST body for an accept/decline/block action.
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
* `withEmail`). Pure → unit-testable.
|
|
370
|
+
* Build the POST body for an accept/decline/block action. The connections
|
|
371
|
+
* endpoints accept the requester's `personUid`, so resolve friendly email or
|
|
372
|
+
* pairKey input through the pending request before building the body. Pure →
|
|
373
|
+
* unit-testable.
|
|
352
374
|
*
|
|
353
375
|
* Throws Error with a user-facing message when the identifier can't be resolved.
|
|
354
376
|
*/
|
|
355
377
|
export function buildConnectionActionBody(identifier, matched) {
|
|
356
378
|
if (matched) {
|
|
357
|
-
return {
|
|
379
|
+
return { personUid: matched.fromPersonUid };
|
|
358
380
|
}
|
|
359
381
|
const r = identifier.trim();
|
|
360
382
|
const rcpt = detectRecipient(r);
|
|
361
383
|
if (rcpt?.toPersonUid)
|
|
362
|
-
return {
|
|
363
|
-
|
|
364
|
-
return { withEmail: rcpt.toEmail };
|
|
365
|
-
throw new Error(`Could not resolve '${identifier}' to a pending request — pass the requester's email, personUid, or the pairKey from \`hq dm requests\`.`);
|
|
384
|
+
return { personUid: rcpt.toPersonUid };
|
|
385
|
+
throw new Error(`Could not resolve '${identifier}' to a pending request — pass the requester's email or personUid, or a pairKey from \`hq dm requests\`.`);
|
|
366
386
|
}
|
|
367
387
|
const CONNECTION_ACTIONS = {
|
|
368
388
|
accept: { path: "accept", done: "Connection accepted" },
|
|
@@ -387,7 +407,12 @@ async function runConnectionAction(action, identifier) {
|
|
|
387
407
|
const token = await ensureCognitoToken();
|
|
388
408
|
// Resolve the pairKey from the caller's pending requests when possible so
|
|
389
409
|
// accept/decline/block work against a friendly email or personUid.
|
|
390
|
-
const requests = await fetchRequests(token).catch(() =>
|
|
410
|
+
const requests = await fetchRequests(token).catch((err) => {
|
|
411
|
+
console.error("hq dm: pending connection request lookup failed", {
|
|
412
|
+
errorName: err instanceof Error ? err.name : typeof err,
|
|
413
|
+
});
|
|
414
|
+
return [];
|
|
415
|
+
});
|
|
391
416
|
const matched = matchRequest(requests, identifier);
|
|
392
417
|
const body = buildConnectionActionBody(identifier, matched);
|
|
393
418
|
const res = await vaultApiFetch({
|
|
@@ -478,7 +503,7 @@ async function runGroupSend(recipients, message) {
|
|
|
478
503
|
}
|
|
479
504
|
}
|
|
480
505
|
/** Fetch the caller's channels (GET /v1/notify/channels). */
|
|
481
|
-
async function fetchChannels(token) {
|
|
506
|
+
export async function fetchChannels(token) {
|
|
482
507
|
const res = await vaultApiFetch({ token, path: "/v1/notify/channels" });
|
|
483
508
|
if (!res.ok) {
|
|
484
509
|
const err = (await res.json().catch(() => ({})));
|
|
@@ -492,7 +517,7 @@ async function fetchChannels(token) {
|
|
|
492
517
|
* who can read the channel may read its members, so this is the same gate the
|
|
493
518
|
* post itself passes. Used to resolve `@name` mentions into participant uids.
|
|
494
519
|
*/
|
|
495
|
-
async function fetchChannelMembers(token, channelId) {
|
|
520
|
+
export async function fetchChannelMembers(token, channelId) {
|
|
496
521
|
const res = await vaultApiFetch({
|
|
497
522
|
token,
|
|
498
523
|
path: `/v1/notify/channels/${encodeURIComponent(channelId)}/members`,
|
|
@@ -504,6 +529,20 @@ async function fetchChannelMembers(token, channelId) {
|
|
|
504
529
|
const data = (await res.json());
|
|
505
530
|
return data.members ?? [];
|
|
506
531
|
}
|
|
532
|
+
/** Fetch a channel history page (GET /v1/notify/channels/{id}/messages). Newest-first. */
|
|
533
|
+
async function fetchChannelMessages(token, channelId, query = {}) {
|
|
534
|
+
const res = await vaultApiFetch({
|
|
535
|
+
token,
|
|
536
|
+
path: `/v1/notify/channels/${encodeURIComponent(channelId)}/messages`,
|
|
537
|
+
query,
|
|
538
|
+
});
|
|
539
|
+
if (!res.ok) {
|
|
540
|
+
const err = (await res.json().catch(() => ({})));
|
|
541
|
+
throw new Error(friendlyDmError(res.status, err.code, err.error ?? err.message ?? res.statusText));
|
|
542
|
+
}
|
|
543
|
+
const data = (await res.json());
|
|
544
|
+
return data.messages ?? [];
|
|
545
|
+
}
|
|
507
546
|
/**
|
|
508
547
|
* Channel DM path: `hq dm vyg-dev "msg"`, `hq dm '#vyg-dev' "msg"`, or
|
|
509
548
|
* `hq dm --channel vyg-dev "msg"`. Resolves the caller's channel by name via
|
|
@@ -513,7 +552,7 @@ async function fetchChannelMembers(token, channelId) {
|
|
|
513
552
|
*/
|
|
514
553
|
async function runChannelSend(channelName, message, opts) {
|
|
515
554
|
try {
|
|
516
|
-
|
|
555
|
+
let body = (message ?? "").trim();
|
|
517
556
|
if (!body) {
|
|
518
557
|
console.error(chalk.red(`A message body is required: hq dm ${channelName} "<message>" (or hq dm --channel ${channelName} "<message>").`));
|
|
519
558
|
process.exit(1);
|
|
@@ -541,6 +580,20 @@ async function runChannelSend(channelName, message, opts) {
|
|
|
541
580
|
process.exit(1);
|
|
542
581
|
}
|
|
543
582
|
const channel = matches[0];
|
|
583
|
+
let rootEventId;
|
|
584
|
+
if (opts.thread !== undefined) {
|
|
585
|
+
let recent = [];
|
|
586
|
+
if (opts.thread.trim().toLowerCase() === "last") {
|
|
587
|
+
recent = await fetchChannelMessages(token, channel.channelId);
|
|
588
|
+
}
|
|
589
|
+
const resolved = resolveThreadFlag(opts.thread, recent, callerFromToken(token));
|
|
590
|
+
if (!resolved.ok) {
|
|
591
|
+
console.error(chalk.red(resolved.error));
|
|
592
|
+
process.exit(1);
|
|
593
|
+
return;
|
|
594
|
+
}
|
|
595
|
+
rootEventId = resolved.rootEventId;
|
|
596
|
+
}
|
|
544
597
|
// Mentions are structured-only server-side: resolve `@name` against the
|
|
545
598
|
// roster and send the array, or fail before posting. --no-mentions opts out
|
|
546
599
|
// and posts the text literally.
|
|
@@ -558,11 +611,19 @@ async function runChannelSend(channelName, message, opts) {
|
|
|
558
611
|
mentions = resolved.mentions;
|
|
559
612
|
}
|
|
560
613
|
}
|
|
614
|
+
// Send the human-readable form: the quotes only existed for parsing.
|
|
615
|
+
if (mentions.length > 0)
|
|
616
|
+
body = stripMentionQuotes(body);
|
|
617
|
+
const payload = { body };
|
|
618
|
+
if (mentions.length > 0)
|
|
619
|
+
payload.mentions = mentions;
|
|
620
|
+
if (rootEventId)
|
|
621
|
+
payload.rootEventId = rootEventId;
|
|
561
622
|
const sendRes = await vaultApiFetch({
|
|
562
623
|
token,
|
|
563
624
|
path: `/v1/notify/channels/${encodeURIComponent(channel.channelId)}/messages`,
|
|
564
625
|
method: "POST",
|
|
565
|
-
body:
|
|
626
|
+
body: payload,
|
|
566
627
|
});
|
|
567
628
|
if (!sendRes.ok) {
|
|
568
629
|
const err = (await sendRes.json().catch(() => ({})));
|
|
@@ -572,7 +633,8 @@ async function runChannelSend(channelName, message, opts) {
|
|
|
572
633
|
const mentionSuffix = mentions.length > 0
|
|
573
634
|
? ` Mentioned ${mentions.map((m) => m.displayName).join(", ")}.`
|
|
574
635
|
: "";
|
|
575
|
-
|
|
636
|
+
const threadSuffix = rootEventId ? ` Reply in thread ${rootEventId}.` : "";
|
|
637
|
+
console.log(chalk.green(`Message posted to #${channel.name ?? channelName}.${mentionSuffix}${threadSuffix}`));
|
|
576
638
|
}
|
|
577
639
|
catch (err) {
|
|
578
640
|
console.error(chalk.red("Error:"), err instanceof Error ? err.message : String(err));
|
|
@@ -594,6 +656,11 @@ async function runDmSend(recipient, message, opts) {
|
|
|
594
656
|
// A comma in the recipient means a group DM — fan into the channel path.
|
|
595
657
|
const group = parseGroupRecipients(recipient);
|
|
596
658
|
if (group) {
|
|
659
|
+
if (opts.thread !== undefined) {
|
|
660
|
+
console.error(chalk.red("--thread is only supported for named channel messages (hq dm <channel> --thread <eventId|last> \"…\")."));
|
|
661
|
+
process.exit(1);
|
|
662
|
+
return;
|
|
663
|
+
}
|
|
597
664
|
await runGroupSend(group, message);
|
|
598
665
|
return;
|
|
599
666
|
}
|
|
@@ -603,6 +670,11 @@ async function runDmSend(recipient, message, opts) {
|
|
|
603
670
|
await runChannelSend(channelName, message, opts);
|
|
604
671
|
return;
|
|
605
672
|
}
|
|
673
|
+
if (opts.thread !== undefined) {
|
|
674
|
+
console.error(chalk.red("--thread is only supported for channel messages (hq dm <channel> --thread <eventId|last> \"…\")."));
|
|
675
|
+
process.exit(1);
|
|
676
|
+
return;
|
|
677
|
+
}
|
|
606
678
|
try {
|
|
607
679
|
// Resolve prompt/details from inline text or a file.
|
|
608
680
|
let prompt = opts.prompt;
|
|
@@ -619,6 +691,7 @@ async function runDmSend(recipient, message, opts) {
|
|
|
619
691
|
at: opts.at,
|
|
620
692
|
inDelay: opts.in,
|
|
621
693
|
now: Date.now(),
|
|
694
|
+
audience: opts.audience,
|
|
622
695
|
});
|
|
623
696
|
const token = await ensureCognitoToken();
|
|
624
697
|
const res = await vaultApiFetch({
|
|
@@ -679,6 +752,27 @@ async function runDmRequests() {
|
|
|
679
752
|
process.exit(1);
|
|
680
753
|
}
|
|
681
754
|
}
|
|
755
|
+
/**
|
|
756
|
+
* Render the attachment lines for one message. An agent reading its DMs through
|
|
757
|
+
* the CLI only ever sees this text, so the vault path AND the command that
|
|
758
|
+
* fetches it both have to be on screen — a bare "[image]" marker is why a bot
|
|
759
|
+
* answers "no image came through". Returns "" when there is nothing attached.
|
|
760
|
+
* Pure → unit-testable.
|
|
761
|
+
*/
|
|
762
|
+
export function formatAttachments(m, indent = " ") {
|
|
763
|
+
const files = (m.attachments?.length ? m.attachments : m.attachment ? [m.attachment] : [])
|
|
764
|
+
.filter((f) => Boolean(f?.vaultPath));
|
|
765
|
+
if (files.length === 0)
|
|
766
|
+
return "";
|
|
767
|
+
return files
|
|
768
|
+
.map((f) => {
|
|
769
|
+
const label = f.name?.trim() || f.vaultPath.split("/").pop() || "file";
|
|
770
|
+
const type = f.contentType ? ` ${chalk.dim(f.contentType)}` : "";
|
|
771
|
+
const company = f.companyUid ? chalk.dim(` company=${f.companyUid}`) : "";
|
|
772
|
+
return `\n${indent}${chalk.dim("[file]")} ${label}${type}\n${indent} ${chalk.dim(`vault: ${f.vaultPath}`)}${company}`;
|
|
773
|
+
})
|
|
774
|
+
.join("");
|
|
775
|
+
}
|
|
682
776
|
/**
|
|
683
777
|
* Human label for a message sender — display name, else email, else uid. Pure →
|
|
684
778
|
* unit-testable.
|
|
@@ -759,20 +853,179 @@ export function formatInboxEvent(e, nowMs) {
|
|
|
759
853
|
const when = chalk.dim(formatRelativeTime(e.createdAt, nowMs));
|
|
760
854
|
const who = chalk.bold(senderLabel(e));
|
|
761
855
|
const email = e.fromEmail && e.fromDisplayName ? chalk.dim(` <${e.fromEmail}>`) : "";
|
|
762
|
-
|
|
856
|
+
const audienceTag = e.audience === "agent" ? chalk.dim(" [agent]") : "";
|
|
857
|
+
return `${marker} ${when} ${who}${email}${audienceTag}\n ${firstLine(e.body)}${formatAttachments(e)}`;
|
|
763
858
|
}
|
|
764
859
|
/** Render one 1:1 thread line, tagged by direction. */
|
|
765
860
|
export function formatThreadMessage(m, nowMs) {
|
|
766
861
|
const arrow = m.direction === "out" ? chalk.dim("→") : chalk.cyan("←");
|
|
767
862
|
const who = m.direction === "out" ? "you" : senderLabel(m);
|
|
768
863
|
const when = chalk.dim(formatRelativeTime(m.createdAt, nowMs));
|
|
769
|
-
|
|
864
|
+
const audienceTag = m.audience === "agent" ? chalk.dim(" [agent]") : "";
|
|
865
|
+
return `${arrow} ${chalk.bold(who)} ${when}${audienceTag}\n ${firstLine(m.body)}${formatAttachments(m)}`;
|
|
770
866
|
}
|
|
771
867
|
/** Render one channel/group message line. */
|
|
772
|
-
export function formatChannelMessage(m, nowMs) {
|
|
868
|
+
export function formatChannelMessage(m, nowMs, opts = {}) {
|
|
869
|
+
const indent = opts.indent ?? "";
|
|
773
870
|
const who = chalk.bold(senderLabel(m));
|
|
774
871
|
const when = chalk.dim(formatRelativeTime(m.createdAt, nowMs));
|
|
775
|
-
|
|
872
|
+
const id = opts.showEventId ? (m.eventId ?? m.messageId) : undefined;
|
|
873
|
+
const idPart = id ? ` ${chalk.dim(id)}` : "";
|
|
874
|
+
const bodyIndent = `${indent} `;
|
|
875
|
+
const body = firstLine(m.body);
|
|
876
|
+
const readableBody = body ||
|
|
877
|
+
(senderLabel(m).toLowerCase() === "hq"
|
|
878
|
+
? "System notification (no text provided)."
|
|
879
|
+
: "(no message text)");
|
|
880
|
+
return `${indent}${who} ${when}${idPart}\n${bodyIndent}${readableBody}${formatAttachments(m, bodyIndent)}`;
|
|
881
|
+
}
|
|
882
|
+
/**
|
|
883
|
+
* Read the caller's person/agent uid and email from a JWT we already hold.
|
|
884
|
+
* Used to resolve `--thread last` (most recent top-level message *by us*).
|
|
885
|
+
* Pure → unit-testable.
|
|
886
|
+
*/
|
|
887
|
+
export function callerFromToken(token) {
|
|
888
|
+
const claims = peekIdToken(token);
|
|
889
|
+
const uid = claims["custom:entityUid"];
|
|
890
|
+
const email = claims.email;
|
|
891
|
+
const personUid = typeof uid === "string" && uid.trim() ? uid.trim() : undefined;
|
|
892
|
+
const emailNorm = typeof email === "string" && email.trim()
|
|
893
|
+
? email.trim().toLowerCase()
|
|
894
|
+
: undefined;
|
|
895
|
+
return {
|
|
896
|
+
...(personUid ? { personUid } : {}),
|
|
897
|
+
...(emailNorm ? { email: emailNorm } : {}),
|
|
898
|
+
};
|
|
899
|
+
}
|
|
900
|
+
function isCallerMessage(m, me) {
|
|
901
|
+
if (me.personUid && m.fromPersonUid === me.personUid)
|
|
902
|
+
return true;
|
|
903
|
+
if (me.email && (m.fromEmail ?? "").trim().toLowerCase() === me.email) {
|
|
904
|
+
return true;
|
|
905
|
+
}
|
|
906
|
+
return false;
|
|
907
|
+
}
|
|
908
|
+
function messageEventId(m) {
|
|
909
|
+
const id = (m.eventId ?? m.messageId ?? "").trim();
|
|
910
|
+
return id || undefined;
|
|
911
|
+
}
|
|
912
|
+
/**
|
|
913
|
+
* Newest-first channel history → the caller's most recent top-level eventId.
|
|
914
|
+
* Replies (those with rootEventId) are skipped. Pure → unit-testable.
|
|
915
|
+
*/
|
|
916
|
+
export function lastCallerRootEventId(messagesNewestFirst, me) {
|
|
917
|
+
for (const m of messagesNewestFirst) {
|
|
918
|
+
if ((m.rootEventId ?? "").trim())
|
|
919
|
+
continue;
|
|
920
|
+
if (!isCallerMessage(m, me))
|
|
921
|
+
continue;
|
|
922
|
+
const id = messageEventId(m);
|
|
923
|
+
if (id)
|
|
924
|
+
return id;
|
|
925
|
+
}
|
|
926
|
+
return undefined;
|
|
927
|
+
}
|
|
928
|
+
/**
|
|
929
|
+
* Resolve `--thread <eventId|last>` against a newest-first message page.
|
|
930
|
+
* An explicit eventId is passed through; `last` picks our most recent
|
|
931
|
+
* top-level message. Pure → unit-testable (the fetch is the caller's job).
|
|
932
|
+
*/
|
|
933
|
+
export function resolveThreadFlag(thread, messagesNewestFirst, me) {
|
|
934
|
+
if (thread === undefined)
|
|
935
|
+
return { ok: true };
|
|
936
|
+
const value = thread.trim();
|
|
937
|
+
if (!value) {
|
|
938
|
+
return { ok: false, error: "--thread requires an eventId or 'last'." };
|
|
939
|
+
}
|
|
940
|
+
if (value.toLowerCase() !== "last") {
|
|
941
|
+
return { ok: true, rootEventId: value };
|
|
942
|
+
}
|
|
943
|
+
if (!me.personUid && !me.email) {
|
|
944
|
+
return {
|
|
945
|
+
ok: false,
|
|
946
|
+
error: "Cannot resolve --thread last: the session token has no person uid or email. Pass --thread <eventId> from `hq dm channel`.",
|
|
947
|
+
};
|
|
948
|
+
}
|
|
949
|
+
const id = lastCallerRootEventId(messagesNewestFirst, me);
|
|
950
|
+
if (!id) {
|
|
951
|
+
return {
|
|
952
|
+
ok: false,
|
|
953
|
+
error: "No top-level message from you in this channel's recent history. Pass --thread <eventId> (copy it from `hq dm channel <name>`).",
|
|
954
|
+
};
|
|
955
|
+
}
|
|
956
|
+
return { ok: true, rootEventId: id };
|
|
957
|
+
}
|
|
958
|
+
function sortByCreatedAt(a, b) {
|
|
959
|
+
return (a.createdAt ?? "").localeCompare(b.createdAt ?? "");
|
|
960
|
+
}
|
|
961
|
+
/**
|
|
962
|
+
* Group a channel history page into roots with their replies underneath.
|
|
963
|
+
* Orphan replies (root not in this page) hang off a placeholder carrying the
|
|
964
|
+
* missing root's eventId. Pure → unit-testable.
|
|
965
|
+
*/
|
|
966
|
+
export function groupChannelMessages(messages) {
|
|
967
|
+
const roots = [];
|
|
968
|
+
const repliesByRoot = new Map();
|
|
969
|
+
for (const m of messages) {
|
|
970
|
+
const rootId = (m.rootEventId ?? "").trim();
|
|
971
|
+
if (!rootId) {
|
|
972
|
+
roots.push(m);
|
|
973
|
+
continue;
|
|
974
|
+
}
|
|
975
|
+
const bucket = repliesByRoot.get(rootId) ?? [];
|
|
976
|
+
bucket.push(m);
|
|
977
|
+
repliesByRoot.set(rootId, bucket);
|
|
978
|
+
}
|
|
979
|
+
const used = new Set();
|
|
980
|
+
const threads = [];
|
|
981
|
+
roots.sort(sortByCreatedAt);
|
|
982
|
+
for (const root of roots) {
|
|
983
|
+
const id = messageEventId(root) ?? "";
|
|
984
|
+
if (id)
|
|
985
|
+
used.add(id);
|
|
986
|
+
threads.push({
|
|
987
|
+
root,
|
|
988
|
+
replies: (repliesByRoot.get(id) ?? []).slice().sort(sortByCreatedAt),
|
|
989
|
+
});
|
|
990
|
+
}
|
|
991
|
+
for (const [rootId, replies] of repliesByRoot) {
|
|
992
|
+
if (used.has(rootId))
|
|
993
|
+
continue;
|
|
994
|
+
const sorted = replies.slice().sort(sortByCreatedAt);
|
|
995
|
+
threads.push({
|
|
996
|
+
root: {
|
|
997
|
+
eventId: rootId,
|
|
998
|
+
body: "",
|
|
999
|
+
createdAt: sorted[0]?.createdAt ?? "",
|
|
1000
|
+
},
|
|
1001
|
+
replies: sorted,
|
|
1002
|
+
missingRoot: true,
|
|
1003
|
+
});
|
|
1004
|
+
}
|
|
1005
|
+
return threads;
|
|
1006
|
+
}
|
|
1007
|
+
/**
|
|
1008
|
+
* Human channel history: each root prints its eventId so `--thread` can copy
|
|
1009
|
+
* it; replies render indented under their root. `--json` does not use this.
|
|
1010
|
+
* Pure → unit-testable.
|
|
1011
|
+
*/
|
|
1012
|
+
export function formatChannelTranscript(messages, nowMs) {
|
|
1013
|
+
const threads = groupChannelMessages(messages);
|
|
1014
|
+
const blocks = [];
|
|
1015
|
+
for (const t of threads) {
|
|
1016
|
+
const parts = [];
|
|
1017
|
+
if (t.missingRoot) {
|
|
1018
|
+
parts.push(chalk.dim(`… ${t.root.eventId ?? ""} (root not in this page)`));
|
|
1019
|
+
}
|
|
1020
|
+
else {
|
|
1021
|
+
parts.push(formatChannelMessage(t.root, nowMs, { showEventId: true }));
|
|
1022
|
+
}
|
|
1023
|
+
for (const reply of t.replies) {
|
|
1024
|
+
parts.push(formatChannelMessage(reply, nowMs, { indent: " " }));
|
|
1025
|
+
}
|
|
1026
|
+
blocks.push(parts.join("\n"));
|
|
1027
|
+
}
|
|
1028
|
+
return blocks.join("\n\n");
|
|
776
1029
|
}
|
|
777
1030
|
/** POST /v1/notify/inbox/ack — idempotently mark messages read. */
|
|
778
1031
|
async function ackEvents(token, eventIds) {
|
|
@@ -789,9 +1042,89 @@ async function ackEvents(token, eventIds) {
|
|
|
789
1042
|
throw new Error(friendlyDmError(res.status, err.code, err.error ?? err.message ?? res.statusText));
|
|
790
1043
|
}
|
|
791
1044
|
}
|
|
1045
|
+
/**
|
|
1046
|
+
* The agent uid when the caller is an agent (machine) identity, else null.
|
|
1047
|
+
* Agents may not read /v1/notify/inbox or /v1/notify/thread (the server
|
|
1048
|
+
* allow-list is intentionally human-only); their read surface is
|
|
1049
|
+
* GET /v1/agents/{uid}/inbox.
|
|
1050
|
+
*/
|
|
1051
|
+
export function agentCallerUid(token, machine = isMachineIdentity) {
|
|
1052
|
+
const claims = peekIdToken(token);
|
|
1053
|
+
const uid = claims["custom:entityUid"];
|
|
1054
|
+
if (typeof uid !== "string" || !uid.startsWith("agt_"))
|
|
1055
|
+
return null;
|
|
1056
|
+
if (claims["custom:entityType"] === "agent")
|
|
1057
|
+
return uid;
|
|
1058
|
+
try {
|
|
1059
|
+
return machine() ? uid : null;
|
|
1060
|
+
}
|
|
1061
|
+
catch {
|
|
1062
|
+
return null;
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
export const AGENT_THREAD_UNAVAILABLE = "`hq dm thread` reads /v1/notify/thread, which is not available to agent identities. " +
|
|
1066
|
+
"Use `hq dm inbox` — for agents it reads GET /v1/agents/{uid}/inbox.";
|
|
1067
|
+
/** One-line summary of an agent inbox item (DM, email, … — shapes vary by channel). Pure. */
|
|
1068
|
+
function formatAgentInboxItem(item) {
|
|
1069
|
+
const str = (k) => (typeof item[k] === "string" ? item[k] : "");
|
|
1070
|
+
const id = str("messageId") || str("id") || "?";
|
|
1071
|
+
const channel = str("channel") || "inbox";
|
|
1072
|
+
const from = str("fromDisplayName") || str("fromEmail") || str("from") || str("fromPersonUid") || "unknown";
|
|
1073
|
+
const when = str("createdAt") || str("receivedAt");
|
|
1074
|
+
const text = str("text") || str("body") || str("subject");
|
|
1075
|
+
return `${chalk.bold(from)} ${chalk.dim(`[${channel}] ${id}${when ? ` ${when}` : ""}`)}\n ${firstLine(text)}`;
|
|
1076
|
+
}
|
|
1077
|
+
/** Remove delegated execution context before agent inbox items can be emitted. */
|
|
1078
|
+
function redactAgentInboxItem(item) {
|
|
1079
|
+
const { actingContext: _actingContext, ...safe } = item;
|
|
1080
|
+
return safe;
|
|
1081
|
+
}
|
|
1082
|
+
async function runAgentInbox(token, agentUid, opts) {
|
|
1083
|
+
const route = `/v1/agents/${encodeURIComponent(agentUid)}/inbox`;
|
|
1084
|
+
const res = await vaultApiFetch({ token, path: route });
|
|
1085
|
+
if (!res.ok) {
|
|
1086
|
+
// Error bodies are not constrained to the success response shape. Do not
|
|
1087
|
+
// echo them: a proxy or partial failure could include inbox items.
|
|
1088
|
+
console.error(chalk.red(`GET ${route} → ${res.status}`));
|
|
1089
|
+
process.exit(1);
|
|
1090
|
+
}
|
|
1091
|
+
const data = (await res.json().catch(() => ({})));
|
|
1092
|
+
let items = (Array.isArray(data.messages) ? data.messages : []).map(redactAgentInboxItem);
|
|
1093
|
+
if (opts.limit && Number(opts.limit) > 0)
|
|
1094
|
+
items = items.slice(0, Number(opts.limit));
|
|
1095
|
+
if (opts.json) {
|
|
1096
|
+
console.log(JSON.stringify(items, null, 2));
|
|
1097
|
+
}
|
|
1098
|
+
else if (items.length === 0) {
|
|
1099
|
+
console.log(chalk.dim("No pending inbox items."));
|
|
1100
|
+
}
|
|
1101
|
+
else {
|
|
1102
|
+
console.log(chalk.green(`${items.length} pending inbox item${items.length === 1 ? "" : "s"}:`));
|
|
1103
|
+
for (const item of items)
|
|
1104
|
+
console.log(`\n${formatAgentInboxItem(item)}`);
|
|
1105
|
+
}
|
|
1106
|
+
if (opts.markRead) {
|
|
1107
|
+
let acked = 0;
|
|
1108
|
+
for (const item of items) {
|
|
1109
|
+
const id = typeof item.messageId === "string" ? item.messageId : typeof item.id === "string" ? item.id : null;
|
|
1110
|
+
if (!id)
|
|
1111
|
+
continue;
|
|
1112
|
+
const ack = await vaultApiFetch({ token, path: `${route}/${encodeURIComponent(id)}/ack`, method: "POST" });
|
|
1113
|
+
if (ack.ok)
|
|
1114
|
+
acked += 1;
|
|
1115
|
+
}
|
|
1116
|
+
if (!opts.json && acked > 0)
|
|
1117
|
+
console.log(chalk.dim(`\nAcked ${acked}.`));
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
792
1120
|
async function runDmInbox(opts) {
|
|
793
1121
|
try {
|
|
794
1122
|
const token = await ensureCognitoToken();
|
|
1123
|
+
const agentUid = agentCallerUid(token);
|
|
1124
|
+
if (agentUid) {
|
|
1125
|
+
await runAgentInbox(token, agentUid, opts);
|
|
1126
|
+
return;
|
|
1127
|
+
}
|
|
795
1128
|
const query = {};
|
|
796
1129
|
if (opts.limit)
|
|
797
1130
|
query.limit = opts.limit;
|
|
@@ -841,6 +1174,10 @@ async function runDmThread(identifier, opts) {
|
|
|
841
1174
|
if (opts.limit)
|
|
842
1175
|
query.limit = opts.limit;
|
|
843
1176
|
const token = await ensureCognitoToken();
|
|
1177
|
+
if (agentCallerUid(token)) {
|
|
1178
|
+
console.error(chalk.yellow(AGENT_THREAD_UNAVAILABLE));
|
|
1179
|
+
process.exit(1);
|
|
1180
|
+
}
|
|
844
1181
|
const res = await vaultApiFetch({
|
|
845
1182
|
token,
|
|
846
1183
|
path: "/v1/notify/thread",
|
|
@@ -895,26 +1232,27 @@ async function runDmThread(identifier, opts) {
|
|
|
895
1232
|
* `hq channels`). Throws a user-facing message when nothing matches or a name is
|
|
896
1233
|
* ambiguous.
|
|
897
1234
|
*/
|
|
898
|
-
async function
|
|
1235
|
+
async function resolveChannel(token, target) {
|
|
899
1236
|
const raw = target.trim().replace(/^#/, "");
|
|
900
1237
|
if (!raw)
|
|
901
1238
|
throw new Error("A channel name or id is required.");
|
|
902
1239
|
const channels = await fetchChannels(token);
|
|
903
1240
|
const named = matchChannelsByName(channels, raw);
|
|
904
1241
|
if (named.length === 1)
|
|
905
|
-
return named[0]
|
|
1242
|
+
return named[0];
|
|
906
1243
|
if (named.length > 1) {
|
|
907
1244
|
throw new Error(`'${raw}' matches ${named.length} channels — pass the channel id instead (see \`hq channels\`).`);
|
|
908
1245
|
}
|
|
909
1246
|
const byId = channels.find((c) => c.channelId === raw);
|
|
910
1247
|
if (byId)
|
|
911
|
-
return byId
|
|
1248
|
+
return byId;
|
|
912
1249
|
throw new Error(`No channel named or with id '${raw}' — run \`hq channels\` to see yours.`);
|
|
913
1250
|
}
|
|
914
1251
|
async function runDmChannel(target, opts) {
|
|
915
1252
|
try {
|
|
916
1253
|
const token = await ensureCognitoToken();
|
|
917
|
-
const
|
|
1254
|
+
const channel = await resolveChannel(token, target);
|
|
1255
|
+
const channelId = channel.channelId;
|
|
918
1256
|
const query = {};
|
|
919
1257
|
if (opts.limit)
|
|
920
1258
|
query.limit = opts.limit;
|
|
@@ -930,18 +1268,28 @@ async function runDmChannel(target, opts) {
|
|
|
930
1268
|
}
|
|
931
1269
|
const data = (await res.json());
|
|
932
1270
|
const messages = data.messages ?? [];
|
|
933
|
-
const
|
|
1271
|
+
const agentCaller = agentCallerUid(token) !== null;
|
|
1272
|
+
const ordered = [...messages].reverse().map((message) => agentCaller ? redactAgentInboxItem(message) : message); // oldest-first for reading; agent JSON must not expose delegated context
|
|
934
1273
|
if (opts.json) {
|
|
935
1274
|
console.log(JSON.stringify(ordered, null, 2));
|
|
936
1275
|
}
|
|
937
1276
|
else if (ordered.length === 0) {
|
|
938
|
-
|
|
1277
|
+
const channelType = channel.scope === "personal"
|
|
1278
|
+
? "personal"
|
|
1279
|
+
: channel.scope === "group"
|
|
1280
|
+
? "group"
|
|
1281
|
+
: "shared";
|
|
1282
|
+
const channelName = channel.name?.trim() || channel.slug?.trim() || channelId;
|
|
1283
|
+
const requestedTarget = target.trim().replace(/^#/, "");
|
|
1284
|
+
const sendTarget = requestedTarget === channelId
|
|
1285
|
+
? channelId
|
|
1286
|
+
: channel.slug?.trim() || requestedTarget;
|
|
1287
|
+
console.log(chalk.dim(`No messages in ${channelType} channel "${channelName}" yet.\nSend a message with: hq dm ${sendTarget} "Hello"`));
|
|
939
1288
|
}
|
|
940
1289
|
else {
|
|
941
1290
|
console.log(chalk.green(`${ordered.length} message${ordered.length === 1 ? "" : "s"}:`));
|
|
942
1291
|
const now = Date.now();
|
|
943
|
-
|
|
944
|
-
console.log(`\n${formatChannelMessage(m, now)}`);
|
|
1292
|
+
console.log(`\n${formatChannelTranscript(ordered, now)}`);
|
|
945
1293
|
}
|
|
946
1294
|
if (opts.markRead) {
|
|
947
1295
|
// messages are newest-first from the server; advance the read cursor to
|
|
@@ -969,15 +1317,17 @@ export function registerDmCommand(program) {
|
|
|
969
1317
|
.description("Send and read direct messages, and manage connection requests.");
|
|
970
1318
|
dm
|
|
971
1319
|
.command("send [recipient] [message]", { isDefault: true, hidden: true })
|
|
972
|
-
.description('Send a direct message. RECIPIENT can be a person (email, personUid, or agentUid), a GROUP DM (comma-separated: "a@x.com,b@y.com"), or one of your DM CHANNELS by name — bare (hq dm vyg-dev "hi"), hash form (hq dm "#vyg-dev" "hi"), or via --channel (hq dm --channel vyg-dev "hi"). A person receives a DM as an HQ Sync notification; an agent receives it in its durable box inbox. If you aren\'t connected yet, it sends a connection request that holds your message. See your channels with `hq channels`.\n\nCHANNEL MENTIONS: HQ mentions are structured — the server never reads `@name` out of your text, so a channel message has to carry the participants alongside the body. When you write `@name` in a channel message, this command looks the name up in the channel roster (case-insensitive on display name and slug/handle; quote multi-word names as @"Jacob Posel") and sends it as a real mention, which notifies people and wakes agents. If a name is unknown or matches more than one member, the send FAILS with the candidates instead of posting something that mentions nobody. A bare "@" or an email address in your prose is never treated as a mention. Pass --no-mentions to post the text literally.')
|
|
1320
|
+
.description('Send a direct message. RECIPIENT can be a person (email, personUid, or agentUid), a GROUP DM (comma-separated: "a@x.com,b@y.com"), or one of your DM CHANNELS by name — bare (hq dm vyg-dev "hi"), hash form (hq dm "#vyg-dev" "hi"), or via --channel (hq dm --channel vyg-dev "hi"). A person receives a DM as an HQ Sync notification; an agent receives it in its durable box inbox. If you aren\'t connected yet, it sends a connection request that holds your message. See your channels with `hq channels`.\n\nCHANNEL MENTIONS: HQ mentions are structured — the server never reads `@name` out of your text, so a channel message has to carry the participants alongside the body. When you write `@name` in a channel message, this command looks the name up in the channel roster (case-insensitive on display name and slug/handle; quote multi-word names as @"Jacob Posel") and sends it as a real mention, which notifies people and wakes agents. If a name is unknown or matches more than one member, the send FAILS with the candidates instead of posting something that mentions nobody. A bare "@" or an email address in your prose is never treated as a mention. Pass --no-mentions to post the text literally.\n\nCHANNEL THREADS: `hq dm <channel> --thread <eventId> "…"` replies under an existing root (the request carries rootEventId). `--thread last` replies to your most recent top-level message in that channel. Copy a root eventId from `hq dm channel <name>`, which prints each root\'s id and indents replies underneath.')
|
|
973
1321
|
.option("--channel <name>", "Post the message to one of your DM channels by name (e.g. --channel vyg-dev)")
|
|
974
1322
|
.option("--no-mentions", "Do not resolve `@name` in a channel message into structured mentions — post the text literally")
|
|
1323
|
+
.option("--thread <eventId>", 'Reply in a channel thread. Pass a root eventId from `hq dm channel`, or `last` for your most recent top-level message in that channel')
|
|
975
1324
|
.option("--prompt <text>", "Agent-context prompt the recipient can one-click copy into their agent (1:1 DMs only)")
|
|
976
1325
|
.option("--prompt-file <path>", "Read the agent prompt from a file (1:1 DMs only)")
|
|
977
1326
|
.option("--details <text>", "Longer detail shown in the recipient's DM detail window (1:1 DMs only)")
|
|
978
1327
|
.option("--details-file <path>", "Read the details from a file (1:1 DMs only)")
|
|
979
1328
|
.option("--at <iso>", "Schedule delivery at an ISO8601 time (store-and-forward; delivered within ~60s of the time; 1:1 DMs only)")
|
|
980
1329
|
.option("--in <duration>", "Schedule delivery after a relative delay: 30s, 10m, 2h, 1d (1:1 DMs only)")
|
|
1330
|
+
.option("--audience <human|agent|both>", "Tag who this message is for: human (a person must read it), agent (progress/status, hidden from humans by default), or both (1:1 DMs only)")
|
|
981
1331
|
.action(async (recipient, message, opts) => {
|
|
982
1332
|
await runDmSend(recipient, message, opts);
|
|
983
1333
|
});
|
|
@@ -1004,7 +1354,7 @@ export function registerDmCommand(program) {
|
|
|
1004
1354
|
dm
|
|
1005
1355
|
.command("channel <target>")
|
|
1006
1356
|
.alias("history")
|
|
1007
|
-
.description("Show recent messages in a DM channel or group DM — by name, #name, or a channel id from `hq channels`.")
|
|
1357
|
+
.description("Show recent messages in a DM channel or group DM — by name, #name, or a channel id from `hq channels`. Roots print their eventId; replies indent under their root. --json is the raw oldest-first array (ungrouped).")
|
|
1008
1358
|
.option("--limit <n>", "Max messages to fetch (server-capped)")
|
|
1009
1359
|
.option("--mark-read", "Advance your read marker to the newest message")
|
|
1010
1360
|
.option("--json", "Output raw JSON instead of a transcript")
|
|
@@ -1019,19 +1369,19 @@ export function registerDmCommand(program) {
|
|
|
1019
1369
|
});
|
|
1020
1370
|
dm
|
|
1021
1371
|
.command("accept <person>")
|
|
1022
|
-
.description("Accept a pending connection request (by email, personUid, or pairKey). Their held message is then delivered.")
|
|
1372
|
+
.description("Accept a pending connection request (by requester email, personUid, or pairKey from `hq dm requests`). Their held message is then delivered.")
|
|
1023
1373
|
.action(async (person) => {
|
|
1024
1374
|
await runConnectionAction("accept", person);
|
|
1025
1375
|
});
|
|
1026
1376
|
dm
|
|
1027
1377
|
.command("decline <person>")
|
|
1028
|
-
.description("Decline a pending connection request (by email, personUid, or pairKey).")
|
|
1378
|
+
.description("Decline a pending connection request (by requester email, personUid, or pairKey from `hq dm requests`).")
|
|
1029
1379
|
.action(async (person) => {
|
|
1030
1380
|
await runConnectionAction("decline", person);
|
|
1031
1381
|
});
|
|
1032
1382
|
dm
|
|
1033
1383
|
.command("block <person>")
|
|
1034
|
-
.description("Block a person so they can't send you further requests (by email, personUid, or pairKey).")
|
|
1384
|
+
.description("Block a person so they can't send you further requests (by requester email, personUid, or pairKey from `hq dm requests`).")
|
|
1035
1385
|
.action(async (person) => {
|
|
1036
1386
|
await runConnectionAction("block", person);
|
|
1037
1387
|
});
|