@indigoai-us/hq-cli 5.313.0 → 5.314.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -4300
- package/assets/scaffold/core/scripts/checkpoint-stop-gate.sh +43 -281
- package/assets/scaffold/core/scripts/hook-lib.sh +50 -345
- package/assets/scaffold/core/scripts/hq-session.sh +23 -184
- package/assets/scaffold/core/scripts/lib/session-id.sh +2 -3
- package/assets/scaffold/core/scripts/lib/session-scope-capability.sh +1 -1
- package/assets/scaffold/core/scripts/lib/work-mesh-enqueue.sh +1 -2
- package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +87 -10
- package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +3 -36
- package/assets/scaffold/core/scripts/rebuild-projects-index.sh +12 -99
- package/assets/scaffold/core/scripts/token-usage-report.sh +20 -81
- package/dist/bin/hq-auth-refresh.d.ts +0 -2
- package/dist/bin/hq-auth-refresh.js +6 -12
- package/dist/commands/__fixtures__/access-vault.d.ts +0 -2
- package/dist/commands/__fixtures__/access-vault.js +1 -1
- package/dist/commands/_patterns.d.ts +0 -16
- package/dist/commands/_patterns.js +3 -20
- package/dist/commands/access.d.ts +1 -2
- package/dist/commands/access.js +49 -58
- package/dist/commands/agents.d.ts +4 -106
- package/dist/commands/agents.js +45 -924
- package/dist/commands/auth.d.ts +0 -1
- package/dist/commands/auth.js +19 -189
- package/dist/commands/billing.d.ts +0 -3
- package/dist/commands/billing.js +1 -6
- package/dist/commands/channels.js +1 -56
- package/dist/commands/cloud-demote.js +2 -3
- package/dist/commands/cloud-provision.d.ts +0 -14
- package/dist/commands/cloud-provision.js +58 -232
- package/dist/commands/cloud.d.ts +15 -49
- package/dist/commands/cloud.js +122 -357
- package/dist/commands/company-transfer.d.ts +28 -4
- package/dist/commands/company-transfer.js +49 -5
- package/dist/commands/company.js +3 -68
- package/dist/commands/core-checkpoint.d.ts +9 -19
- package/dist/commands/core-checkpoint.js +37 -301
- package/dist/commands/core.d.ts +0 -4
- package/dist/commands/core.js +80 -277
- package/dist/commands/crm.js +3 -52
- package/dist/commands/db-provision.js +4 -4
- package/dist/commands/db-sql.js +21 -7
- package/dist/commands/dm.d.ts +12 -119
- package/dist/commands/dm.js +38 -388
- package/dist/commands/doctor.d.ts +0 -12
- package/dist/commands/doctor.js +12 -158
- package/dist/commands/feedback.d.ts +0 -6
- package/dist/commands/feedback.js +37 -86
- package/dist/commands/files-browse.d.ts +12 -32
- package/dist/commands/files-browse.js +60 -176
- package/dist/commands/files.d.ts +0 -17
- package/dist/commands/files.js +47 -300
- package/dist/commands/group-grants.js +2 -3
- package/dist/commands/groups.js +5 -6
- package/dist/commands/index-cmd.d.ts +1 -19
- package/dist/commands/index-cmd.js +7 -74
- package/dist/commands/integrations-api.d.ts +10 -15
- package/dist/commands/integrations-api.js +22 -27
- package/dist/commands/integrations-connect.d.ts +13 -51
- package/dist/commands/integrations-connect.js +71 -86
- package/dist/commands/integrations-core.d.ts +6 -6
- package/dist/commands/integrations-core.js +11 -25
- package/dist/commands/integrations-import.d.ts +1 -1
- package/dist/commands/integrations-import.js +24 -43
- package/dist/commands/integrations-manage.js +13 -20
- package/dist/commands/integrations.d.ts +0 -8
- package/dist/commands/integrations.js +7 -94
- package/dist/commands/login.js +6 -49
- package/dist/commands/mcp-registration.d.ts +25 -32
- package/dist/commands/mcp-registration.js +23 -256
- package/dist/commands/mcp-status.js +0 -1
- package/dist/commands/meetings.js +34 -55
- package/dist/commands/members.js +1 -5
- package/dist/commands/mesh.d.ts +0 -11
- package/dist/commands/mesh.js +76 -1086
- package/dist/commands/onboard-identity-guard.d.ts +1 -1
- package/dist/commands/onboard.js +5 -24
- package/dist/commands/pack-install.js +1 -3
- package/dist/commands/packs.js +1 -11
- package/dist/commands/people.d.ts +0 -4
- package/dist/commands/people.js +3 -37
- package/dist/commands/publish.d.ts +1 -8
- package/dist/commands/publish.js +4 -17
- package/dist/commands/reindex.js +6 -56
- package/dist/commands/rescue.d.ts +0 -4
- package/dist/commands/rescue.js +17 -27
- package/dist/commands/run.js +4 -18
- package/dist/commands/safe-extract.d.ts +2 -11
- package/dist/commands/safe-extract.js +8 -36
- package/dist/commands/scaffold-fast.d.ts +41 -0
- package/dist/commands/scaffold-fast.js +57 -0
- package/dist/commands/secrets.d.ts +2 -20
- package/dist/commands/secrets.js +71 -175
- package/dist/commands/skill.d.ts +4 -35
- package/dist/commands/skill.js +18 -357
- package/dist/commands/sync-mode.d.ts +0 -11
- package/dist/commands/sync-mode.js +0 -30
- package/dist/commands/sync-narrow.js +5 -36
- package/dist/commands/team-sync.js +10 -71
- package/dist/commands/update.js +0 -6
- package/dist/commands/whoami.d.ts +0 -22
- package/dist/commands/whoami.js +4 -137
- package/dist/commands/workers.d.ts +14 -2
- package/dist/commands/workers.js +10 -7
- package/dist/fast-core.d.ts +7 -6
- package/dist/fast-core.js +24 -87
- package/dist/index.d.ts +4 -3
- package/dist/index.js +9 -59
- package/dist/lazy-commands.d.ts +44 -20
- package/dist/lazy-commands.js +58 -60
- package/dist/lib/company-skill-wrapper.d.ts +0 -1
- package/dist/lib/company-skill-wrapper.js +29 -121
- package/dist/lib/core-utils/codex-skill-bridge.d.ts +1 -2
- package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +1 -14
- package/dist/lib/core-utils/qmd-reindex-after-sync.js +17 -101
- package/dist/lib/core-utils/soft-timeout.js +1 -1
- package/dist/lib/core-utils/timeout-guard.d.ts +3 -3
- package/dist/lib/core-utils/timeout-guard.js +13 -28
- package/dist/lib/core-utils/token-usage-report.js +3 -17
- package/dist/lib/db/control-plane.js +0 -6
- package/dist/lib/db/local.d.ts +5 -0
- package/dist/lib/db/local.js +1 -1
- package/dist/lib/db/migrate.d.ts +12 -0
- package/dist/lib/db/migrate.js +5 -5
- package/dist/lib/db/remote-sql.d.ts +2 -2
- package/dist/lib/db/remote-sql.js +3 -3
- package/dist/lib/db/sql.d.ts +10 -0
- package/dist/lib/db/sql.js +8 -4
- package/dist/lib/doctor/__testing__/fake-hq-tree.d.ts +1 -1
- package/dist/lib/doctor/__testing__/fake-hq-tree.js +1 -1
- package/dist/lib/doctor/checks/claude-wiring.js +1 -70
- package/dist/lib/doctor/checks/codex-wiring.d.ts +4 -0
- package/dist/lib/doctor/checks/codex-wiring.js +35 -3
- package/dist/lib/doctor/checks/grok-wiring.js +34 -1
- package/dist/lib/doctor/checks/integrations.js +0 -11
- package/dist/lib/doctor/checks/runtime-health.d.ts +17 -4
- package/dist/lib/doctor/checks/runtime-health.js +7 -20
- package/dist/lib/doctor/checks/sync-health.d.ts +0 -21
- package/dist/lib/doctor/checks/sync-health.js +2 -72
- package/dist/lib/doctor/checks/work-context.js +6 -20
- package/dist/lib/doctor/compat.d.ts +16 -0
- package/dist/lib/doctor/compat.js +3 -4
- package/dist/lib/doctor/deep/effects.js +3 -1
- package/dist/lib/doctor/deep/executor.d.ts +10 -4
- package/dist/lib/doctor/deep/executor.js +1 -1
- package/dist/lib/doctor/deep/parity.d.ts +29 -2
- package/dist/lib/doctor/deep/parity.js +7 -7
- package/dist/lib/doctor/deep/sandbox.d.ts +25 -7
- package/dist/lib/doctor/deep/sandbox.js +7 -5
- package/dist/lib/doctor/fix/apply.d.ts +8 -79
- package/dist/lib/doctor/fix/apply.js +80 -292
- package/dist/lib/doctor/fix/remediation.d.ts +6 -14
- package/dist/lib/doctor/fix/remediation.js +9 -49
- package/dist/lib/doctor/fixtures/schema.js +3 -1
- package/dist/lib/doctor/json-output.d.ts +1 -17
- package/dist/lib/doctor/json-output.js +2 -7
- package/dist/lib/doctor/platform.d.ts +26 -0
- package/dist/lib/doctor/platform.js +5 -5
- package/dist/lib/doctor/registry.d.ts +0 -14
- package/dist/lib/doctor/registry.js +0 -71
- package/dist/lib/doctor/report.js +1 -1
- package/dist/lib/doctor/types.d.ts +0 -5
- package/dist/lib/doctor/types.js +0 -20
- package/dist/lib/flag-registry-worker.js +1 -12
- package/dist/lib/flag-registry.d.ts +6 -26
- package/dist/lib/flag-registry.js +16 -133
- package/dist/lib/index-render/companies.d.ts +1 -4
- package/dist/lib/index-render/companies.js +3 -66
- package/dist/lib/index-render/company-knowledge.js +17 -80
- package/dist/lib/index-render/index.d.ts +0 -1
- package/dist/lib/index-render/index.js +1 -2
- package/dist/lib/index-render/projects.js +5 -82
- package/dist/lib/index-render/shared.d.ts +1 -13
- package/dist/lib/index-render/shared.js +2 -41
- package/dist/lib/mesh/api.d.ts +10 -103
- package/dist/lib/mesh/api.js +64 -334
- package/dist/lib/mesh/client.d.ts +2 -3
- package/dist/lib/mesh/client.js +7 -26
- package/dist/lib/mesh/live/backfill-held.d.ts +16 -67
- package/dist/lib/mesh/live/backfill-held.js +61 -415
- package/dist/lib/mesh/live/backoff.d.ts +2 -2
- package/dist/lib/mesh/live/backoff.js +3 -16
- package/dist/lib/mesh/live/daemon/board-refresh.d.ts +1 -7
- package/dist/lib/mesh/live/daemon/board-refresh.js +30 -78
- package/dist/lib/mesh/live/daemon/credentials.d.ts +10 -64
- package/dist/lib/mesh/live/daemon/credentials.js +20 -270
- package/dist/lib/mesh/live/daemon/doctor.d.ts +0 -53
- package/dist/lib/mesh/live/daemon/doctor.js +6 -190
- package/dist/lib/mesh/live/daemon/index.d.ts +10 -13
- package/dist/lib/mesh/live/daemon/index.js +6 -7
- package/dist/lib/mesh/live/daemon/install.d.ts +1 -255
- package/dist/lib/mesh/live/daemon/install.js +13 -811
- package/dist/lib/mesh/live/daemon/paths.d.ts +0 -2
- package/dist/lib/mesh/live/daemon/paths.js +0 -2
- package/dist/lib/mesh/live/daemon/presence.d.ts +5 -24
- package/dist/lib/mesh/live/daemon/presence.js +10 -79
- package/dist/lib/mesh/live/daemon/run.d.ts +2 -48
- package/dist/lib/mesh/live/daemon/run.js +33 -485
- package/dist/lib/mesh/live/daemon/state.d.ts +2 -19
- package/dist/lib/mesh/live/daemon/state.js +2 -34
- package/dist/lib/mesh/live/daemon/transcript-watch.d.ts +9 -45
- package/dist/lib/mesh/live/daemon/transcript-watch.js +31 -227
- package/dist/lib/mesh/live/emit-client.d.ts +0 -8
- package/dist/lib/mesh/live/emit-client.js +8 -23
- package/dist/lib/mesh/live/emit-evidence.d.ts +0 -19
- package/dist/lib/mesh/live/emit-evidence.js +2 -20
- package/dist/lib/mesh/live/emit.d.ts +0 -9
- package/dist/lib/mesh/live/emit.js +2 -28
- package/dist/lib/mesh/live/enqueue.d.ts +0 -5
- package/dist/lib/mesh/live/enqueue.js +0 -19
- package/dist/lib/mesh/live/flush.d.ts +5 -17
- package/dist/lib/mesh/live/flush.js +38 -391
- package/dist/lib/mesh/live/format-spool-line.d.ts +2 -5
- package/dist/lib/mesh/live/format-spool-line.js +0 -10
- package/dist/lib/mesh/live/paths.d.ts +0 -2
- package/dist/lib/mesh/live/paths.js +0 -4
- package/dist/lib/mesh/live/session-event.schema.json +1 -24
- package/dist/lib/mesh/live/session-events-client.d.ts +0 -2
- package/dist/lib/mesh/live/session-events-client.js +0 -26
- package/dist/lib/mesh/live/spool.d.ts +0 -19
- package/dist/lib/mesh/live/spool.js +3 -269
- package/dist/lib/mesh/live/validate-session-event.d.ts +1 -1
- package/dist/lib/mesh/live/validate-session-event.js +1 -1
- package/dist/lib/plan-limit-nag.d.ts +6 -102
- package/dist/lib/plan-limit-nag.js +43 -348
- package/dist/lib/scan-packages/index.d.ts +0 -2
- package/dist/lib/scan-packages/index.js +6 -168
- package/dist/lib/search-index/background.d.ts +1 -8
- package/dist/lib/search-index/background.js +200 -55
- package/dist/lib/search-index/index.d.ts +0 -12
- package/dist/lib/search-index/index.js +7 -153
- package/dist/lib/work-context/company.d.ts +20 -22
- package/dist/lib/work-context/company.js +40 -124
- package/dist/lib/work-context/config.d.ts +11 -58
- package/dist/lib/work-context/config.js +83 -334
- package/dist/lib/work-context/contract.d.ts +0 -13
- package/dist/lib/work-context/contract.schema.json +1 -3
- package/dist/lib/work-context/index.d.ts +25 -0
- package/dist/lib/work-context/index.js +21 -0
- package/dist/lib/work-context/outbox.d.ts +5 -27
- package/dist/lib/work-context/outbox.js +6 -135
- package/dist/lib/work-context/reconcile.d.ts +0 -15
- package/dist/lib/work-context/reconcile.js +29 -405
- package/dist/lib/work-context/state.d.ts +10 -93
- package/dist/lib/work-context/state.js +29 -342
- package/dist/lib/workers-registry/index.js +8 -62
- package/dist/main.d.ts +0 -32
- package/dist/main.js +73 -273
- package/dist/node-network-compat.d.ts +30 -2
- package/dist/node-network-compat.js +51 -4
- package/dist/node-preflight.d.ts +1 -7
- package/dist/node-preflight.js +5 -5
- package/dist/register-all.d.ts +29 -4
- package/dist/register-all.js +233 -4
- package/dist/run/discover-schemas.d.ts +1 -2
- package/dist/run/env-graph-guard.d.ts +2 -2
- package/dist/run/env-graph-guard.js +2 -5
- package/dist/run/hq-plugin.d.ts +0 -4
- package/dist/run/hq-plugin.js +8 -36
- package/dist/sentry-before-send.js +0 -80
- package/dist/sentry.d.ts +2 -8
- package/dist/sentry.js +13 -117
- package/dist/startup-registration.d.ts +2 -26
- package/dist/startup-registration.js +15 -116
- package/dist/utils/cli-telemetry.d.ts +1 -74
- package/dist/utils/cli-telemetry.js +7 -434
- package/dist/utils/client-health.d.ts +4 -0
- package/dist/utils/client-health.js +2 -2
- package/dist/utils/cognito-session.d.ts +0 -71
- package/dist/utils/cognito-session.js +27 -481
- package/dist/utils/contribution-table.d.ts +1 -1
- package/dist/utils/environmental-error.d.ts +0 -18
- package/dist/utils/environmental-error.js +7 -240
- package/dist/utils/expected-cli-error.d.ts +0 -2
- package/dist/utils/expected-cli-error.js +0 -4
- package/dist/utils/feedback-diagnostics.d.ts +1 -2
- package/dist/utils/feedback-log-bundle.d.ts +26 -51
- package/dist/utils/feedback-log-bundle.js +31 -211
- package/dist/utils/feedback-logs.d.ts +47 -18
- package/dist/utils/feedback-logs.js +21 -50
- package/dist/utils/feedback-screenshots.d.ts +1 -0
- package/dist/utils/feedback-screenshots.js +1 -1
- package/dist/utils/hq-roots.d.ts +2 -25
- package/dist/utils/hq-roots.js +7 -67
- package/dist/utils/incomplete-install-error.d.ts +19 -87
- package/dist/utils/incomplete-install-error.js +68 -319
- package/dist/utils/install-tree-torn.d.ts +24 -260
- package/dist/utils/install-tree-torn.js +51 -998
- package/dist/utils/large-file-guard.d.ts +10 -0
- package/dist/utils/large-file-guard.js +1 -1
- package/dist/utils/local-files-overview.d.ts +8 -4
- package/dist/utils/local-files-overview.js +7 -48
- package/dist/utils/login-provider.d.ts +0 -7
- package/dist/utils/login-provider.js +0 -34
- package/dist/utils/pack-contributions.d.ts +14 -2
- package/dist/utils/pack-contributions.js +44 -7
- package/dist/utils/package-root-diagnostics.d.ts +1 -1
- package/dist/utils/people.d.ts +11 -7
- package/dist/utils/people.js +20 -5
- package/dist/utils/plan-gate-error.d.ts +10 -52
- package/dist/utils/plan-gate-error.js +41 -364
- package/dist/utils/qmd-model-download-error.d.ts +8 -0
- package/dist/utils/qmd-model-download-error.js +1 -1
- package/dist/utils/qmd-query-document-error.d.ts +6 -0
- package/dist/utils/qmd-query-document-error.js +1 -1
- package/dist/utils/redact-error-text.d.ts +2 -0
- package/dist/utils/redact-error-text.js +2 -3
- package/dist/utils/run-bundled-script.d.ts +0 -6
- package/dist/utils/run-bundled-script.js +4 -117
- package/dist/utils/sandbox-runner-client.d.ts +1 -2
- package/dist/utils/secrets-cache.d.ts +3 -7
- package/dist/utils/secrets-cache.js +14 -162
- package/dist/utils/self-update.d.ts +1 -34
- package/dist/utils/self-update.js +42 -660
- package/dist/utils/sentry-fingerprint.d.ts +1 -23
- package/dist/utils/sentry-fingerprint.js +31 -223
- package/dist/utils/team-upgrade.d.ts +1 -1
- package/dist/utils/team-upgrade.js +3 -4
- package/dist/utils/vault-api.d.ts +1 -21
- package/dist/utils/vault-api.js +84 -251
- package/dist/utils/version-check.d.ts +1 -11
- package/dist/utils/version-check.js +3 -32
- package/dist/utils/version-gate.d.ts +17 -101
- package/dist/utils/version-gate.js +70 -645
- package/dist/utils/windows-spawn.d.ts +0 -6
- package/dist/utils/windows-spawn.js +0 -37
- package/package.json +8 -20
- package/README.md +0 -113
- package/assets/bot-workers/setup/context/USER-GUIDE.md +0 -404
- package/assets/bot-workers/setup/context/quick-reference.md +0 -199
- package/assets/bot-workers/setup/skills/agents-and-team.md +0 -167
- package/assets/bot-workers/setup/skills/explain-hq.md +0 -35
- package/assets/bot-workers/setup/skills/first-company.md +0 -74
- package/assets/bot-workers/setup/skills/joining-a-team.md +0 -125
- package/assets/bot-workers/setup/skills/pricing.md +0 -92
- package/assets/bot-workers/setup/skills/standing-help.md +0 -81
- package/assets/bot-workers/setup/skills/your-business.md +0 -281
- package/assets/bot-workers/setup/worker.yaml +0 -791
- package/assets/lanes-hooks/hq-lanes-drain.json +0 -15
- package/assets/lanes-hooks/hq-lanes-drain.mjs +0 -275
- package/assets/lanes-hooks/hq-lanes-drain.sh +0 -21
- package/assets/lanes-reconcile/hq-lanes-reconcile.service +0 -11
- package/assets/lanes-reconcile/hq-lanes-reconcile.timer +0 -12
- package/assets/scaffold/.claude/hooks/validate-policy-frontmatter.sh +0 -485
- package/assets/scaffold/core/scripts/audit-log.sh +0 -384
- package/assets/scaffold/core/scripts/clean-worktree-reconcile-handoff.sh +0 -171
- package/assets/scaffold/core/scripts/eval-trigger.sh +0 -193
- package/assets/scaffold/core/scripts/git-pack-extension-check.sh +0 -164
- package/assets/scaffold/core/scripts/handoff-finalize.sh +0 -688
- package/assets/scaffold/core/scripts/handoff-open-steps.sh +0 -81
- package/assets/scaffold/core/scripts/handoff-post.sh +0 -252
- package/assets/scaffold/core/scripts/hq-delegate-bundle.sh +0 -307
- package/assets/scaffold/core/scripts/hq-delegate-grant.sh +0 -252
- package/assets/scaffold/core/scripts/hq-delegate-pickup.sh +0 -99
- package/assets/scaffold/core/scripts/hq-delegate-publish.sh +0 -91
- package/assets/scaffold/core/scripts/hq-delegate-repo.sh +0 -158
- package/assets/scaffold/core/scripts/hq-delegate-resolve.sh +0 -145
- package/assets/scaffold/core/scripts/hq-delegate-secrets.sh +0 -129
- package/assets/scaffold/core/scripts/hq-delegate-send.sh +0 -259
- package/assets/scaffold/core/scripts/hq-delegate-transfer.sh +0 -175
- package/assets/scaffold/core/scripts/hq-delegate-verify.sh +0 -238
- package/assets/scaffold/core/scripts/hq-dm-bind.sh +0 -585
- package/assets/scaffold/core/scripts/hq-job-notify.sh +0 -389
- package/assets/scaffold/core/scripts/hq-job-probe.sh +0 -835
- package/assets/scaffold/core/scripts/hq-job-remediate.sh +0 -359
- package/assets/scaffold/core/scripts/hq-job-run.sh +0 -1025
- package/assets/scaffold/core/scripts/hq-pin.sh +0 -118
- package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +0 -310
- package/assets/scaffold/core/scripts/jobs-validate.sh +0 -451
- package/assets/scaffold/core/scripts/knowledge-prefs.sh +0 -55
- package/assets/scaffold/core/scripts/lib/portable.sh +0 -211
- package/assets/scaffold/core/scripts/lib/secret-patterns.sh +0 -58
- package/assets/scaffold/core/scripts/lib/work-mesh-live-hook.sh +0 -378
- package/assets/scaffold/core/scripts/lib/work-mesh-live-rebind.sh +0 -141
- package/assets/scaffold/core/scripts/migrate-policy-triggers.sh +0 -373
- package/assets/scaffold/core/scripts/ontology-audience-grant.sh +0 -81
- package/assets/scaffold/core/scripts/ontology-brief.mjs +0 -93
- package/assets/scaffold/core/scripts/ontology-candidate.sh +0 -100
- package/assets/scaffold/core/scripts/ontology-garden.mjs +0 -238
- package/assets/scaffold/core/scripts/ontology-source-worklist.sh +0 -79
- package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +0 -834
- package/assets/scaffold/core/scripts/policy-age-report.sh +0 -156
- package/assets/scaffold/core/scripts/policy-retire.sh +0 -199
- package/assets/scaffold/core/scripts/qmd-reindex-bg.sh +0 -40
- package/assets/scaffold/core/scripts/read-policy-frontmatter.sh +0 -32
- package/assets/scaffold/core/scripts/refresh-vault-access.sh +0 -188
- package/assets/scaffold/core/scripts/register-project.sh +0 -262
- package/assets/scaffold/core/scripts/resolve-company.sh +0 -199
- package/assets/scaffold/core/scripts/resume-thread-lock.sh +0 -285
- package/assets/scaffold/core/scripts/source-yaml-validate.sh +0 -36
- package/assets/scaffold/core/scripts/verify-story-deliverables.sh +0 -148
- package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +0 -152
- package/assets/scaffold/core/scripts/work-mesh-live-rebind.sh +0 -59
- package/assets/scaffold/core/scripts/worktree-gc.sh +0 -362
- package/contracts/preflight/v1/fixtures.json +0 -87
- package/contracts/preflight/v1/schema.json +0 -58
- package/dist/command-catalog.generated.d.ts +0 -10735
- package/dist/command-catalog.generated.js +0 -13836
- package/dist/command-registration-plan.d.ts +0 -474
- package/dist/command-registration-plan.js +0 -136
- package/dist/commands/agent-enroll.d.ts +0 -146
- package/dist/commands/agent-enroll.js +0 -401
- package/dist/commands/agent-inbox.d.ts +0 -9
- package/dist/commands/agent-inbox.js +0 -102
- package/dist/commands/agent-kit.d.ts +0 -87
- package/dist/commands/agent-kit.js +0 -480
- package/dist/commands/agent-mcp.d.ts +0 -24
- package/dist/commands/agent-mcp.js +0 -127
- package/dist/commands/agent-probe.d.ts +0 -77
- package/dist/commands/agent-probe.js +0 -335
- package/dist/commands/agent.d.ts +0 -13
- package/dist/commands/agent.js +0 -40
- package/dist/commands/billing-sponsor.d.ts +0 -83
- package/dist/commands/billing-sponsor.js +0 -344
- package/dist/commands/bot-companies.d.ts +0 -40
- package/dist/commands/bot-companies.js +0 -64
- package/dist/commands/bot-continuity.d.ts +0 -28
- package/dist/commands/bot-continuity.js +0 -68
- package/dist/commands/bot-jobs.d.ts +0 -127
- package/dist/commands/bot-jobs.js +0 -454
- package/dist/commands/bot.d.ts +0 -278
- package/dist/commands/bot.js +0 -1982
- package/dist/commands/cloud-retire.d.ts +0 -51
- package/dist/commands/cloud-retire.js +0 -154
- package/dist/commands/company-rename-flag.d.ts +0 -4
- package/dist/commands/company-rename-flag.js +0 -7
- package/dist/commands/company-rename.d.ts +0 -4
- package/dist/commands/company-rename.js +0 -90
- package/dist/commands/core-audit-log-native.d.ts +0 -9
- package/dist/commands/core-audit-log-native.js +0 -257
- package/dist/commands/core-checkpoint-gate-setting.d.ts +0 -59
- package/dist/commands/core-checkpoint-gate-setting.js +0 -163
- package/dist/commands/core-checkpoint-stop-gate-native.d.ts +0 -34
- package/dist/commands/core-checkpoint-stop-gate-native.js +0 -725
- package/dist/commands/core-command-catalog.d.ts +0 -34
- package/dist/commands/core-command-catalog.js +0 -62
- package/dist/commands/core-company-index-scope-flag.d.ts +0 -3
- package/dist/commands/core-company-index-scope-flag.js +0 -6
- package/dist/commands/core-delegate-w1b.d.ts +0 -10
- package/dist/commands/core-delegate-w1b.js +0 -1219
- package/dist/commands/core-delegate.d.ts +0 -46
- package/dist/commands/core-delegate.js +0 -1040
- package/dist/commands/core-dm-bind-native.d.ts +0 -32
- package/dist/commands/core-dm-bind-native.js +0 -668
- package/dist/commands/core-eval-trigger-native.d.ts +0 -4
- package/dist/commands/core-eval-trigger-native.js +0 -12
- package/dist/commands/core-git-pack-extension-check-native.d.ts +0 -22
- package/dist/commands/core-git-pack-extension-check-native.js +0 -190
- package/dist/commands/core-handoff-fast.d.ts +0 -18
- package/dist/commands/core-handoff-fast.js +0 -104
- package/dist/commands/core-handoff-open-steps.d.ts +0 -21
- package/dist/commands/core-handoff-open-steps.js +0 -264
- package/dist/commands/core-handoff.d.ts +0 -24
- package/dist/commands/core-handoff.js +0 -1144
- package/dist/commands/core-hq-session-native.d.ts +0 -39
- package/dist/commands/core-hq-session-native.js +0 -579
- package/dist/commands/core-job-native-utils.d.ts +0 -6
- package/dist/commands/core-job-native-utils.js +0 -80
- package/dist/commands/core-job-native.d.ts +0 -5
- package/dist/commands/core-job-native.js +0 -16
- package/dist/commands/core-job-notify-native.d.ts +0 -36
- package/dist/commands/core-job-notify-native.js +0 -359
- package/dist/commands/core-job-probe-native.d.ts +0 -45
- package/dist/commands/core-job-probe-native.js +0 -564
- package/dist/commands/core-job-remediate-native.d.ts +0 -26
- package/dist/commands/core-job-remediate-native.js +0 -374
- package/dist/commands/core-job-remote-launcher.d.ts +0 -7
- package/dist/commands/core-job-remote-launcher.js +0 -51
- package/dist/commands/core-job-run-native.d.ts +0 -47
- package/dist/commands/core-job-run-native.js +0 -1215
- package/dist/commands/core-jobs-native.d.ts +0 -25
- package/dist/commands/core-jobs-native.js +0 -1339
- package/dist/commands/core-knowledge-prefs.d.ts +0 -11
- package/dist/commands/core-knowledge-prefs.js +0 -137
- package/dist/commands/core-migrate-policy-triggers-native.d.ts +0 -21
- package/dist/commands/core-migrate-policy-triggers-native.js +0 -378
- package/dist/commands/core-native-handoff-flag.d.ts +0 -4
- package/dist/commands/core-native-handoff-flag.js +0 -7
- package/dist/commands/core-native-hook-helper-commands.d.ts +0 -4
- package/dist/commands/core-native-hook-helper-commands.js +0 -56
- package/dist/commands/core-native-hook-helpers-flag.d.ts +0 -4
- package/dist/commands/core-native-hook-helpers-flag.js +0 -7
- package/dist/commands/core-native-jobs-flag.d.ts +0 -4
- package/dist/commands/core-native-jobs-flag.js +0 -7
- package/dist/commands/core-native-policy-flag.d.ts +0 -9
- package/dist/commands/core-native-policy-flag.js +0 -12
- package/dist/commands/core-native-session-flag.d.ts +0 -4
- package/dist/commands/core-native-session-flag.js +0 -7
- package/dist/commands/core-native-utilities-flag.d.ts +0 -4
- package/dist/commands/core-native-utilities-flag.js +0 -7
- package/dist/commands/core-native-utilities.d.ts +0 -29
- package/dist/commands/core-native-utilities.js +0 -54
- package/dist/commands/core-native-worker-skills-flag.d.ts +0 -4
- package/dist/commands/core-native-worker-skills-flag.js +0 -7
- package/dist/commands/core-ontology-native.d.ts +0 -17
- package/dist/commands/core-ontology-native.js +0 -916
- package/dist/commands/core-ontology.d.ts +0 -66
- package/dist/commands/core-ontology.js +0 -430
- package/dist/commands/core-pin-native.d.ts +0 -14
- package/dist/commands/core-pin-native.js +0 -236
- package/dist/commands/core-policy-frontmatter.d.ts +0 -8
- package/dist/commands/core-policy-frontmatter.js +0 -52
- package/dist/commands/core-policy.d.ts +0 -14
- package/dist/commands/core-policy.js +0 -1018
- package/dist/commands/core-refresh-vault-access-native.d.ts +0 -20
- package/dist/commands/core-refresh-vault-access-native.js +0 -229
- package/dist/commands/core-register-project-native.d.ts +0 -30
- package/dist/commands/core-register-project-native.js +0 -347
- package/dist/commands/core-resolve-company-command.d.ts +0 -4
- package/dist/commands/core-resolve-company-command.js +0 -42
- package/dist/commands/core-resolve-company-native.d.ts +0 -28
- package/dist/commands/core-resolve-company-native.js +0 -408
- package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +0 -32
- package/dist/commands/core-work-mesh-bind-trusted-native.js +0 -190
- package/dist/commands/core-work-mesh-live-rebind-native.d.ts +0 -18
- package/dist/commands/core-work-mesh-live-rebind-native.js +0 -262
- package/dist/commands/core-worker-lint-native.d.ts +0 -4
- package/dist/commands/core-worker-lint-native.js +0 -160
- package/dist/commands/core-worker-share-native.d.ts +0 -4
- package/dist/commands/core-worker-share-native.js +0 -260
- package/dist/commands/core-worker-skills-command.d.ts +0 -8
- package/dist/commands/core-worker-skills-command.js +0 -33
- package/dist/commands/core-worker-skills-runtime.d.ts +0 -33
- package/dist/commands/core-worker-skills-runtime.js +0 -86
- package/dist/commands/daemon.d.ts +0 -63
- package/dist/commands/daemon.js +0 -877
- package/dist/commands/deploy-comments.d.ts +0 -3
- package/dist/commands/deploy-comments.js +0 -162
- package/dist/commands/lanes-accounts.d.ts +0 -28
- package/dist/commands/lanes-accounts.js +0 -595
- package/dist/commands/lanes-autopilot.d.ts +0 -11
- package/dist/commands/lanes-autopilot.js +0 -336
- package/dist/commands/lanes-checks.d.ts +0 -51
- package/dist/commands/lanes-checks.js +0 -941
- package/dist/commands/lanes-hold.d.ts +0 -43
- package/dist/commands/lanes-hold.js +0 -655
- package/dist/commands/lanes-kpis.d.ts +0 -11
- package/dist/commands/lanes-kpis.js +0 -34
- package/dist/commands/lanes-message.d.ts +0 -9
- package/dist/commands/lanes-message.js +0 -937
- package/dist/commands/lanes-move.d.ts +0 -12
- package/dist/commands/lanes-move.js +0 -397
- package/dist/commands/lanes-questions.d.ts +0 -36
- package/dist/commands/lanes-questions.js +0 -1005
- package/dist/commands/lanes-report.d.ts +0 -11
- package/dist/commands/lanes-report.js +0 -333
- package/dist/commands/lanes-resume.d.ts +0 -6
- package/dist/commands/lanes-resume.js +0 -564
- package/dist/commands/lanes-review.d.ts +0 -10
- package/dist/commands/lanes-review.js +0 -56
- package/dist/commands/lanes-shared.d.ts +0 -448
- package/dist/commands/lanes-shared.js +0 -170
- package/dist/commands/lanes-stories.d.ts +0 -15
- package/dist/commands/lanes-stories.js +0 -347
- package/dist/commands/lanes-watch.d.ts +0 -7
- package/dist/commands/lanes-watch.js +0 -216
- package/dist/commands/lanes.d.ts +0 -149
- package/dist/commands/lanes.js +0 -8973
- package/dist/commands/monitor.d.ts +0 -58
- package/dist/commands/monitor.js +0 -980
- package/dist/commands/onboard-bot-membership.d.ts +0 -32
- package/dist/commands/onboard-bot-membership.js +0 -40
- package/dist/commands/onboard-create-identity.d.ts +0 -26
- package/dist/commands/onboard-create-identity.js +0 -23
- package/dist/commands/outpost-pruner.d.ts +0 -3
- package/dist/commands/outpost-pruner.js +0 -125
- package/dist/commands/personal-connector-settings-flag.d.ts +0 -4
- package/dist/commands/personal-connector-settings-flag.js +0 -7
- package/dist/commands/personal-targeted-push-flag.d.ts +0 -4
- package/dist/commands/personal-targeted-push-flag.js +0 -7
- package/dist/commands/personal-targeted-push-paths.d.ts +0 -3
- package/dist/commands/personal-targeted-push-paths.js +0 -67
- package/dist/commands/report.d.ts +0 -19
- package/dist/commands/report.js +0 -537
- package/dist/commands/run-feature-telemetry.d.ts +0 -3
- package/dist/commands/run-feature-telemetry.js +0 -6
- package/dist/commands/staff/reset-test-account.d.ts +0 -110
- package/dist/commands/staff/reset-test-account.js +0 -268
- package/dist/commands/staff/test-account.d.ts +0 -51
- package/dist/commands/staff/test-account.js +0 -196
- package/dist/commands/vault-retention-flag.d.ts +0 -3
- package/dist/commands/vault-retention-flag.js +0 -9
- package/dist/commands/vault-retention.d.ts +0 -11
- package/dist/commands/vault-retention.js +0 -69
- package/dist/commands/version.d.ts +0 -10
- package/dist/commands/version.js +0 -11
- package/dist/fast-scaffold.d.ts +0 -86
- package/dist/fast-scaffold.js +0 -364
- package/dist/lanes-drain-hook.d.ts +0 -14
- package/dist/lanes-drain-hook.js +0 -203
- package/dist/lib/agent-kit/adopt-identity.d.ts +0 -27
- package/dist/lib/agent-kit/adopt-identity.js +0 -60
- package/dist/lib/agent-kit/attachment-download.d.ts +0 -24
- package/dist/lib/agent-kit/attachment-download.js +0 -47
- package/dist/lib/agent-kit/creds.d.ts +0 -106
- package/dist/lib/agent-kit/creds.js +0 -163
- package/dist/lib/agent-kit/fallback.d.ts +0 -78
- package/dist/lib/agent-kit/fallback.js +0 -210
- package/dist/lib/agent-kit/inbox-state.d.ts +0 -83
- package/dist/lib/agent-kit/inbox-state.js +0 -159
- package/dist/lib/agent-kit/kit-config.d.ts +0 -56
- package/dist/lib/agent-kit/kit-config.js +0 -65
- package/dist/lib/agent-kit/log.d.ts +0 -16
- package/dist/lib/agent-kit/log.js +0 -46
- package/dist/lib/agent-kit/mcp/attachments.d.ts +0 -126
- package/dist/lib/agent-kit/mcp/attachments.js +0 -222
- package/dist/lib/agent-kit/mcp/jsonrpc.d.ts +0 -75
- package/dist/lib/agent-kit/mcp/jsonrpc.js +0 -164
- package/dist/lib/agent-kit/mcp/tools.d.ts +0 -64
- package/dist/lib/agent-kit/mcp/tools.js +0 -397
- package/dist/lib/agent-kit/paths.d.ts +0 -65
- package/dist/lib/agent-kit/paths.js +0 -118
- package/dist/lib/agent-kit/private-file.d.ts +0 -29
- package/dist/lib/agent-kit/private-file.js +0 -91
- package/dist/lib/agent-kit/run/heartbeat.d.ts +0 -72
- package/dist/lib/agent-kit/run/heartbeat.js +0 -128
- package/dist/lib/agent-kit/run/inbox.d.ts +0 -76
- package/dist/lib/agent-kit/run/inbox.js +0 -205
- package/dist/lib/agent-kit/run/supervisor.d.ts +0 -35
- package/dist/lib/agent-kit/run/supervisor.js +0 -85
- package/dist/lib/agent-kit/run/sync.d.ts +0 -33
- package/dist/lib/agent-kit/run/sync.js +0 -58
- package/dist/lib/agent-kit/services.d.ts +0 -31
- package/dist/lib/agent-kit/services.js +0 -55
- package/dist/lib/agent-kit/skills.d.ts +0 -18
- package/dist/lib/agent-kit/skills.js +0 -151
- package/dist/lib/agent-kit/wake.d.ts +0 -83
- package/dist/lib/agent-kit/wake.js +0 -243
- package/dist/lib/agents/model-catalog.d.ts +0 -62
- package/dist/lib/agents/model-catalog.js +0 -275
- package/dist/lib/auth-login-provider-state.d.ts +0 -8
- package/dist/lib/auth-login-provider-state.js +0 -63
- package/dist/lib/aws-sdk-node-warning-output.d.ts +0 -12
- package/dist/lib/aws-sdk-node-warning-output.js +0 -22
- package/dist/lib/billing/free-month.d.ts +0 -18
- package/dist/lib/billing/free-month.js +0 -31
- package/dist/lib/billing/plan-limit-refusals.d.ts +0 -69
- package/dist/lib/billing/plan-limit-refusals.js +0 -187
- package/dist/lib/billing/plan-limit-upgrade-url.d.ts +0 -11
- package/dist/lib/billing/plan-limit-upgrade-url.js +0 -66
- package/dist/lib/billing/plan-lock.d.ts +0 -143
- package/dist/lib/billing/plan-lock.js +0 -439
- package/dist/lib/bot/api.d.ts +0 -349
- package/dist/lib/bot/api.js +0 -316
- package/dist/lib/bot/attachments.d.ts +0 -45
- package/dist/lib/bot/attachments.js +0 -89
- package/dist/lib/bot/cli-update.d.ts +0 -138
- package/dist/lib/bot/cli-update.js +0 -278
- package/dist/lib/bot/company-bind.d.ts +0 -27
- package/dist/lib/bot/company-bind.js +0 -62
- package/dist/lib/bot/config.d.ts +0 -153
- package/dist/lib/bot/config.js +0 -233
- package/dist/lib/bot/continuity-download.d.ts +0 -28
- package/dist/lib/bot/continuity-download.js +0 -75
- package/dist/lib/bot/continuity-install.d.ts +0 -14
- package/dist/lib/bot/continuity-install.js +0 -101
- package/dist/lib/bot/continuity.d.ts +0 -67
- package/dist/lib/bot/continuity.js +0 -301
- package/dist/lib/bot/creds.d.ts +0 -24
- package/dist/lib/bot/creds.js +0 -51
- package/dist/lib/bot/daemon.d.ts +0 -173
- package/dist/lib/bot/daemon.js +0 -552
- package/dist/lib/bot/inbox-poll-backoff-flag.d.ts +0 -24
- package/dist/lib/bot/inbox-poll-backoff-flag.js +0 -135
- package/dist/lib/bot/inbox-state.d.ts +0 -18
- package/dist/lib/bot/inbox-state.js +0 -51
- package/dist/lib/bot/index.d.ts +0 -23
- package/dist/lib/bot/index.js +0 -23
- package/dist/lib/bot/inflight.d.ts +0 -119
- package/dist/lib/bot/inflight.js +0 -83
- package/dist/lib/bot/job-completions.d.ts +0 -89
- package/dist/lib/bot/job-completions.js +0 -132
- package/dist/lib/bot/job-run.d.ts +0 -109
- package/dist/lib/bot/job-run.js +0 -246
- package/dist/lib/bot/local-config.d.ts +0 -61
- package/dist/lib/bot/local-config.js +0 -145
- package/dist/lib/bot/local-jobs.d.ts +0 -89
- package/dist/lib/bot/local-jobs.js +0 -459
- package/dist/lib/bot/local-name.d.ts +0 -54
- package/dist/lib/bot/local-name.js +0 -114
- package/dist/lib/bot/log.d.ts +0 -13
- package/dist/lib/bot/log.js +0 -59
- package/dist/lib/bot/owner-context.d.ts +0 -79
- package/dist/lib/bot/owner-context.js +0 -175
- package/dist/lib/bot/paths.d.ts +0 -76
- package/dist/lib/bot/paths.js +0 -131
- package/dist/lib/bot/progress.d.ts +0 -132
- package/dist/lib/bot/progress.js +0 -289
- package/dist/lib/bot/promote.d.ts +0 -16
- package/dist/lib/bot/promote.js +0 -106
- package/dist/lib/bot/promotion-hold.d.ts +0 -24
- package/dist/lib/bot/promotion-hold.js +0 -103
- package/dist/lib/bot/promotion-receipt.d.ts +0 -9
- package/dist/lib/bot/promotion-receipt.js +0 -56
- package/dist/lib/bot/promotion-upload.d.ts +0 -16
- package/dist/lib/bot/promotion-upload.js +0 -80
- package/dist/lib/bot/prompt.d.ts +0 -136
- package/dist/lib/bot/prompt.js +0 -433
- package/dist/lib/bot/room-policy.d.ts +0 -63
- package/dist/lib/bot/room-policy.js +0 -91
- package/dist/lib/bot/run.d.ts +0 -217
- package/dist/lib/bot/run.js +0 -1869
- package/dist/lib/bot/runnable.d.ts +0 -51
- package/dist/lib/bot/runnable.js +0 -65
- package/dist/lib/bot/runtime/claude.d.ts +0 -50
- package/dist/lib/bot/runtime/claude.js +0 -170
- package/dist/lib/bot/runtime/codex.d.ts +0 -28
- package/dist/lib/bot/runtime/codex.js +0 -153
- package/dist/lib/bot/runtime/grok-acp.d.ts +0 -40
- package/dist/lib/bot/runtime/grok-acp.js +0 -265
- package/dist/lib/bot/runtime/grok.d.ts +0 -41
- package/dist/lib/bot/runtime/grok.js +0 -169
- package/dist/lib/bot/runtime/index.d.ts +0 -36
- package/dist/lib/bot/runtime/index.js +0 -417
- package/dist/lib/bot/runtime/messages-stream.d.ts +0 -56
- package/dist/lib/bot/runtime/messages-stream.js +0 -194
- package/dist/lib/bot/runtime/sanitize.d.ts +0 -18
- package/dist/lib/bot/runtime/sanitize.js +0 -28
- package/dist/lib/bot/runtime/types.d.ts +0 -159
- package/dist/lib/bot/runtime/types.js +0 -51
- package/dist/lib/bot/runtime/windows.d.ts +0 -10
- package/dist/lib/bot/runtime/windows.js +0 -53
- package/dist/lib/bot/runtime-sign-in.d.ts +0 -24
- package/dist/lib/bot/runtime-sign-in.js +0 -31
- package/dist/lib/bot/scaffold.d.ts +0 -38
- package/dist/lib/bot/scaffold.js +0 -94
- package/dist/lib/bot/self-heal.d.ts +0 -52
- package/dist/lib/bot/self-heal.js +0 -79
- package/dist/lib/bot/self-process.d.ts +0 -19
- package/dist/lib/bot/self-process.js +0 -35
- package/dist/lib/bot/session.d.ts +0 -19
- package/dist/lib/bot/session.js +0 -39
- package/dist/lib/bot/setup-explain.d.ts +0 -64
- package/dist/lib/bot/setup-explain.js +0 -141
- package/dist/lib/bot/split.d.ts +0 -32
- package/dist/lib/bot/split.js +0 -241
- package/dist/lib/bot/status.d.ts +0 -57
- package/dist/lib/bot/status.js +0 -66
- package/dist/lib/bot/worker-source.d.ts +0 -66
- package/dist/lib/bot/worker-source.js +0 -283
- package/dist/lib/checkpoint-ontology/aliases.d.ts +0 -17
- package/dist/lib/checkpoint-ontology/aliases.js +0 -44
- package/dist/lib/checkpoint-ontology/apply.d.ts +0 -110
- package/dist/lib/checkpoint-ontology/apply.js +0 -777
- package/dist/lib/checkpoint-ontology/company-brief.d.ts +0 -18
- package/dist/lib/checkpoint-ontology/company-brief.js +0 -337
- package/dist/lib/checkpoint-ontology/company.d.ts +0 -44
- package/dist/lib/checkpoint-ontology/company.js +0 -118
- package/dist/lib/checkpoint-ontology/drop-aliases.d.ts +0 -41
- package/dist/lib/checkpoint-ontology/drop-aliases.js +0 -76
- package/dist/lib/checkpoint-ontology/entity-file.d.ts +0 -109
- package/dist/lib/checkpoint-ontology/entity-file.js +0 -371
- package/dist/lib/checkpoint-ontology/identity.d.ts +0 -38
- package/dist/lib/checkpoint-ontology/identity.js +0 -95
- package/dist/lib/checkpoint-ontology/merge-copies.d.ts +0 -199
- package/dist/lib/checkpoint-ontology/merge-copies.js +0 -1086
- package/dist/lib/checkpoint-ontology/multi-writer.d.ts +0 -101
- package/dist/lib/checkpoint-ontology/multi-writer.js +0 -394
- package/dist/lib/checkpoint-ontology/plan.d.ts +0 -193
- package/dist/lib/checkpoint-ontology/plan.js +0 -504
- package/dist/lib/checkpoint-ontology/queued-touches.d.ts +0 -29
- package/dist/lib/checkpoint-ontology/queued-touches.js +0 -193
- package/dist/lib/checkpoint-ontology/sync-client.d.ts +0 -38
- package/dist/lib/checkpoint-ontology/sync-client.js +0 -84
- package/dist/lib/checkpoint-ontology/tree.d.ts +0 -55
- package/dist/lib/checkpoint-ontology/tree.js +0 -198
- package/dist/lib/company-errors-sdk-warning-flag.d.ts +0 -5
- package/dist/lib/company-errors-sdk-warning-flag.js +0 -8
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.d.ts +0 -20
- package/dist/lib/core-utils/hook-timeout-debug-context-flag.js +0 -81
- package/dist/lib/core-utils/jq-json-serializer.d.ts +0 -5
- package/dist/lib/core-utils/jq-json-serializer.js +0 -10
- package/dist/lib/core-utils/secret-patterns.d.ts +0 -43
- package/dist/lib/core-utils/secret-patterns.js +0 -34
- package/dist/lib/core-utils/sentry-report.d.ts +0 -114
- package/dist/lib/core-utils/sentry-report.js +0 -1034
- package/dist/lib/core-utils/timeout-guard-native.d.ts +0 -7
- package/dist/lib/core-utils/timeout-guard-native.js +0 -40
- package/dist/lib/core-utils/worktree-resume.d.ts +0 -20
- package/dist/lib/core-utils/worktree-resume.js +0 -1198
- package/dist/lib/daemon/catalog.d.ts +0 -134
- package/dist/lib/daemon/catalog.js +0 -358
- package/dist/lib/daemon/config.d.ts +0 -35
- package/dist/lib/daemon/config.js +0 -108
- package/dist/lib/daemon/flag.d.ts +0 -25
- package/dist/lib/daemon/flag.js +0 -59
- package/dist/lib/daemon/handoff.d.ts +0 -56
- package/dist/lib/daemon/handoff.js +0 -161
- package/dist/lib/daemon/hq-cloud.d.ts +0 -79
- package/dist/lib/daemon/hq-cloud.js +0 -183
- package/dist/lib/daemon/install.d.ts +0 -85
- package/dist/lib/daemon/install.js +0 -320
- package/dist/lib/daemon/legacy-sync-env.d.ts +0 -10
- package/dist/lib/daemon/legacy-sync-env.js +0 -58
- package/dist/lib/daemon/legacy.d.ts +0 -45
- package/dist/lib/daemon/legacy.js +0 -133
- package/dist/lib/daemon/lock.d.ts +0 -47
- package/dist/lib/daemon/lock.js +0 -138
- package/dist/lib/daemon/machine-type.d.ts +0 -50
- package/dist/lib/daemon/machine-type.js +0 -159
- package/dist/lib/daemon/migrate.d.ts +0 -77
- package/dist/lib/daemon/migrate.js +0 -265
- package/dist/lib/daemon/paths.d.ts +0 -24
- package/dist/lib/daemon/paths.js +0 -43
- package/dist/lib/daemon/protocol-tail.d.ts +0 -33
- package/dist/lib/daemon/protocol-tail.js +0 -131
- package/dist/lib/daemon/remote-control.d.ts +0 -74
- package/dist/lib/daemon/remote-control.js +0 -153
- package/dist/lib/daemon/requests.d.ts +0 -28
- package/dist/lib/daemon/requests.js +0 -65
- package/dist/lib/daemon/run.d.ts +0 -79
- package/dist/lib/daemon/run.js +0 -755
- package/dist/lib/daemon/succession.d.ts +0 -118
- package/dist/lib/daemon/succession.js +0 -263
- package/dist/lib/daemon/supervisor.d.ts +0 -132
- package/dist/lib/daemon/supervisor.js +0 -836
- package/dist/lib/daemon/sync-runner.d.ts +0 -58
- package/dist/lib/daemon/sync-runner.js +0 -277
- package/dist/lib/daemon/tools.d.ts +0 -52
- package/dist/lib/daemon/tools.js +0 -95
- package/dist/lib/daemon/updater.d.ts +0 -57
- package/dist/lib/daemon/updater.js +0 -163
- package/dist/lib/deploy-api.d.ts +0 -5
- package/dist/lib/deploy-api.js +0 -21
- package/dist/lib/deploy-apps.d.ts +0 -13
- package/dist/lib/deploy-apps.js +0 -29
- package/dist/lib/doctor/__testing__/run-doctor.d.ts +0 -8
- package/dist/lib/doctor/__testing__/run-doctor.js +0 -52
- package/dist/lib/doctor/checks/bots.d.ts +0 -13
- package/dist/lib/doctor/checks/bots.js +0 -189
- package/dist/lib/doctor/checks/scaffold-cli-floor.d.ts +0 -6
- package/dist/lib/doctor/checks/scaffold-cli-floor.js +0 -73
- package/dist/lib/doctor/checks/sync-runtime.d.ts +0 -11
- package/dist/lib/doctor/checks/sync-runtime.js +0 -216
- package/dist/lib/doctor/client-health-flag-token.d.ts +0 -15
- package/dist/lib/doctor/client-health-flag-token.js +0 -66
- package/dist/lib/doctor/client-health-reason-codes-flag.d.ts +0 -27
- package/dist/lib/doctor/client-health-reason-codes-flag.js +0 -106
- package/dist/lib/doctor/fix/json-output.d.ts +0 -28
- package/dist/lib/doctor/fix/json-output.js +0 -33
- package/dist/lib/doctor/fix/refresh-sync-outcome.d.ts +0 -12
- package/dist/lib/doctor/fix/refresh-sync-outcome.js +0 -25
- package/dist/lib/doctor/shared.d.ts +0 -8
- package/dist/lib/doctor/shared.js +0 -38
- package/dist/lib/doctor/stray-gate-entries.d.ts +0 -35
- package/dist/lib/doctor/stray-gate-entries.js +0 -83
- package/dist/lib/first-sync-next-step.d.ts +0 -37
- package/dist/lib/first-sync-next-step.js +0 -189
- package/dist/lib/flag-registry-endpoint.d.ts +0 -5
- package/dist/lib/flag-registry-endpoint.js +0 -9
- package/dist/lib/flag-registry-worker-source.generated.d.ts +0 -2
- package/dist/lib/flag-registry-worker-source.generated.js +0 -3
- package/dist/lib/flag-snapshot-file.d.ts +0 -20
- package/dist/lib/flag-snapshot-file.js +0 -91
- package/dist/lib/heartbeat-identity.d.ts +0 -30
- package/dist/lib/heartbeat-identity.js +0 -76
- package/dist/lib/lanes/account-home.d.ts +0 -8
- package/dist/lib/lanes/account-home.js +0 -10
- package/dist/lib/lanes/accounts.d.ts +0 -117
- package/dist/lib/lanes/accounts.js +0 -366
- package/dist/lib/lanes/admission-host.d.ts +0 -22
- package/dist/lib/lanes/admission-host.js +0 -37
- package/dist/lib/lanes/admission.d.ts +0 -26
- package/dist/lib/lanes/admission.js +0 -210
- package/dist/lib/lanes/approval-gate.d.ts +0 -8
- package/dist/lib/lanes/approval-gate.js +0 -90
- package/dist/lib/lanes/autopilot-metrics.d.ts +0 -99
- package/dist/lib/lanes/autopilot-metrics.js +0 -301
- package/dist/lib/lanes/autopilot-registry.d.ts +0 -62
- package/dist/lib/lanes/autopilot-registry.js +0 -192
- package/dist/lib/lanes/autopilot.d.ts +0 -120
- package/dist/lib/lanes/autopilot.js +0 -1061
- package/dist/lib/lanes/blocker-freshness.d.ts +0 -31
- package/dist/lib/lanes/blocker-freshness.js +0 -168
- package/dist/lib/lanes/checked-company-path.d.ts +0 -3
- package/dist/lib/lanes/checked-company-path.js +0 -39
- package/dist/lib/lanes/claude-balance.d.ts +0 -97
- package/dist/lib/lanes/claude-balance.js +0 -319
- package/dist/lib/lanes/compaction.d.ts +0 -110
- package/dist/lib/lanes/compaction.js +0 -293
- package/dist/lib/lanes/config.d.ts +0 -94
- package/dist/lib/lanes/config.js +0 -606
- package/dist/lib/lanes/constants.d.ts +0 -3
- package/dist/lib/lanes/constants.js +0 -3
- package/dist/lib/lanes/delivery-core.d.ts +0 -15
- package/dist/lib/lanes/delivery-core.js +0 -21
- package/dist/lib/lanes/delivery.d.ts +0 -180
- package/dist/lib/lanes/delivery.js +0 -443
- package/dist/lib/lanes/disk-guard.d.ts +0 -66
- package/dist/lib/lanes/disk-guard.js +0 -172
- package/dist/lib/lanes/dropbox.d.ts +0 -129
- package/dist/lib/lanes/dropbox.js +0 -601
- package/dist/lib/lanes/effort.d.ts +0 -51
- package/dist/lib/lanes/effort.js +0 -113
- package/dist/lib/lanes/envelope-repair-dispatch.d.ts +0 -26
- package/dist/lib/lanes/envelope-repair-dispatch.js +0 -74
- package/dist/lib/lanes/errors.d.ts +0 -39
- package/dist/lib/lanes/errors.js +0 -72
- package/dist/lib/lanes/flag-keys.d.ts +0 -15
- package/dist/lib/lanes/flag-keys.js +0 -15
- package/dist/lib/lanes/grants.d.ts +0 -30
- package/dist/lib/lanes/grants.js +0 -171
- package/dist/lib/lanes/hire-grant-dispatch.d.ts +0 -29
- package/dist/lib/lanes/hire-grant-dispatch.js +0 -315
- package/dist/lib/lanes/hooks-install.d.ts +0 -82
- package/dist/lib/lanes/hooks-install.js +0 -479
- package/dist/lib/lanes/host-capacity.d.ts +0 -69
- package/dist/lib/lanes/host-capacity.js +0 -254
- package/dist/lib/lanes/hq-root.d.ts +0 -19
- package/dist/lib/lanes/hq-root.js +0 -28
- package/dist/lib/lanes/index.d.ts +0 -76
- package/dist/lib/lanes/index.js +0 -42
- package/dist/lib/lanes/keep-alive.d.ts +0 -68
- package/dist/lib/lanes/keep-alive.js +0 -343
- package/dist/lib/lanes/kr-freshness.d.ts +0 -76
- package/dist/lib/lanes/kr-freshness.js +0 -413
- package/dist/lib/lanes/lane-company.d.ts +0 -10
- package/dist/lib/lanes/lane-company.js +0 -41
- package/dist/lib/lanes/liveness.d.ts +0 -108
- package/dist/lib/lanes/liveness.js +0 -396
- package/dist/lib/lanes/machine-identity.d.ts +0 -34
- package/dist/lib/lanes/machine-identity.js +0 -92
- package/dist/lib/lanes/manager-status-gate.d.ts +0 -17
- package/dist/lib/lanes/manager-status-gate.js +0 -133
- package/dist/lib/lanes/merge-command.d.ts +0 -15
- package/dist/lib/lanes/merge-command.js +0 -629
- package/dist/lib/lanes/mesh-events.d.ts +0 -127
- package/dist/lib/lanes/mesh-events.js +0 -564
- package/dist/lib/lanes/message-replay.d.ts +0 -21
- package/dist/lib/lanes/message-replay.js +0 -122
- package/dist/lib/lanes/models.d.ts +0 -86
- package/dist/lib/lanes/models.js +0 -234
- package/dist/lib/lanes/monitor.d.ts +0 -48
- package/dist/lib/lanes/monitor.js +0 -428
- package/dist/lib/lanes/move-account.d.ts +0 -56
- package/dist/lib/lanes/move-account.js +0 -193
- package/dist/lib/lanes/orphans.d.ts +0 -25
- package/dist/lib/lanes/orphans.js +0 -102
- package/dist/lib/lanes/outpost-dispatch.d.ts +0 -147
- package/dist/lib/lanes/outpost-dispatch.js +0 -271
- package/dist/lib/lanes/outpost-hire-cache.d.ts +0 -22
- package/dist/lib/lanes/outpost-hire-cache.js +0 -153
- package/dist/lib/lanes/outpost-identity.d.ts +0 -33
- package/dist/lib/lanes/outpost-identity.js +0 -59
- package/dist/lib/lanes/outpost-profile-repin.d.ts +0 -17
- package/dist/lib/lanes/outpost-profile-repin.js +0 -84
- package/dist/lib/lanes/outpost-pruner-install.d.ts +0 -37
- package/dist/lib/lanes/outpost-pruner-install.js +0 -238
- package/dist/lib/lanes/outpost-registry-worker-approval.d.ts +0 -18
- package/dist/lib/lanes/outpost-registry-worker-approval.js +0 -109
- package/dist/lib/lanes/outpost-snapshot-memo.d.ts +0 -6
- package/dist/lib/lanes/outpost-snapshot-memo.js +0 -14
- package/dist/lib/lanes/outpost-worktree-pruner-flag.d.ts +0 -19
- package/dist/lib/lanes/outpost-worktree-pruner-flag.js +0 -86
- package/dist/lib/lanes/outpost-worktree-pruner.d.ts +0 -62
- package/dist/lib/lanes/outpost-worktree-pruner.js +0 -1201
- package/dist/lib/lanes/profile.d.ts +0 -69
- package/dist/lib/lanes/profile.js +0 -552
- package/dist/lib/lanes/provider-rejection.d.ts +0 -86
- package/dist/lib/lanes/provider-rejection.js +0 -286
- package/dist/lib/lanes/questions.d.ts +0 -90
- package/dist/lib/lanes/questions.js +0 -384
- package/dist/lib/lanes/quota.d.ts +0 -134
- package/dist/lib/lanes/quota.js +0 -471
- package/dist/lib/lanes/reconcile-install.d.ts +0 -90
- package/dist/lib/lanes/reconcile-install.js +0 -257
- package/dist/lib/lanes/reconcile.d.ts +0 -161
- package/dist/lib/lanes/reconcile.js +0 -3324
- package/dist/lib/lanes/registry-flag.d.ts +0 -35
- package/dist/lib/lanes/registry-flag.js +0 -164
- package/dist/lib/lanes/registry-persona.d.ts +0 -20
- package/dist/lib/lanes/registry-persona.js +0 -329
- package/dist/lib/lanes/registry.d.ts +0 -122
- package/dist/lib/lanes/registry.js +0 -570
- package/dist/lib/lanes/reviews.d.ts +0 -38
- package/dist/lib/lanes/reviews.js +0 -395
- package/dist/lib/lanes/runaway-tool-guard.d.ts +0 -38
- package/dist/lib/lanes/runaway-tool-guard.js +0 -284
- package/dist/lib/lanes/session-relink.d.ts +0 -25
- package/dist/lib/lanes/session-relink.js +0 -216
- package/dist/lib/lanes/spawn.d.ts +0 -355
- package/dist/lib/lanes/spawn.js +0 -2668
- package/dist/lib/lanes/ssm-command-context.d.ts +0 -12
- package/dist/lib/lanes/ssm-command-context.js +0 -52
- package/dist/lib/lanes/store.d.ts +0 -91
- package/dist/lib/lanes/store.js +0 -1822
- package/dist/lib/lanes/stories.d.ts +0 -23
- package/dist/lib/lanes/stories.js +0 -92
- package/dist/lib/lanes/story-ledger.d.ts +0 -80
- package/dist/lib/lanes/story-ledger.js +0 -815
- package/dist/lib/lanes/story-switch.d.ts +0 -21
- package/dist/lib/lanes/story-switch.js +0 -75
- package/dist/lib/lanes/text-scan.d.ts +0 -11
- package/dist/lib/lanes/text-scan.js +0 -103
- package/dist/lib/lanes/throttle.d.ts +0 -116
- package/dist/lib/lanes/throttle.js +0 -437
- package/dist/lib/lanes/timestamp.d.ts +0 -3
- package/dist/lib/lanes/timestamp.js +0 -26
- package/dist/lib/lanes/tracker-checks.d.ts +0 -77
- package/dist/lib/lanes/tracker-checks.js +0 -134
- package/dist/lib/lanes/tracker-report-state.d.ts +0 -10
- package/dist/lib/lanes/tracker-report-state.js +0 -124
- package/dist/lib/lanes/tracker-report.d.ts +0 -203
- package/dist/lib/lanes/tracker-report.js +0 -522
- package/dist/lib/lanes/tracker-store.d.ts +0 -18
- package/dist/lib/lanes/tracker-store.js +0 -106
- package/dist/lib/lanes/types.d.ts +0 -1030
- package/dist/lib/lanes/types.js +0 -418
- package/dist/lib/lanes/wait.d.ts +0 -39
- package/dist/lib/lanes/wait.js +0 -159
- package/dist/lib/lanes/watch.d.ts +0 -39
- package/dist/lib/lanes/watch.js +0 -249
- package/dist/lib/lanes/watcher-main.d.ts +0 -11
- package/dist/lib/lanes/watcher-main.js +0 -108
- package/dist/lib/lanes/watcher.d.ts +0 -287
- package/dist/lib/lanes/watcher.js +0 -1972
- package/dist/lib/mesh/denial-codes.d.ts +0 -5
- package/dist/lib/mesh/denial-codes.js +0 -14
- package/dist/lib/mesh/live/daemon/config.d.ts +0 -36
- package/dist/lib/mesh/live/daemon/config.js +0 -120
- package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +0 -43
- package/dist/lib/mesh/live/daemon/legacy-listen.js +0 -89
- package/dist/lib/mesh/live/daemon/live-cache.d.ts +0 -26
- package/dist/lib/mesh/live/daemon/live-cache.js +0 -116
- package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +0 -7
- package/dist/lib/mesh/live/daemon/mqtt-events.js +0 -2
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +0 -2
- package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +0 -10
- package/dist/lib/mesh/live/daemon/version-drift.d.ts +0 -5
- package/dist/lib/mesh/live/daemon/version-drift.js +0 -47
- package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +0 -32
- package/dist/lib/mesh/live/daemon/work-subscribe.js +0 -262
- package/dist/lib/mesh/live/report-summary.d.ts +0 -45
- package/dist/lib/mesh/live/report-summary.js +0 -234
- package/dist/lib/mesh/live/session-seq.d.ts +0 -4
- package/dist/lib/mesh/live/session-seq.js +0 -33
- package/dist/lib/mesh/project-board.d.ts +0 -65
- package/dist/lib/mesh/project-board.js +0 -181
- package/dist/lib/mesh/story-status.d.ts +0 -22
- package/dist/lib/mesh/story-status.js +0 -49
- package/dist/lib/monitor.d.ts +0 -149
- package/dist/lib/monitor.js +0 -519
- package/dist/lib/node-binary.d.ts +0 -50
- package/dist/lib/node-binary.js +0 -133
- package/dist/lib/notify-recipient.d.ts +0 -7
- package/dist/lib/notify-recipient.js +0 -11
- package/dist/lib/onboarding/checkpoint.d.ts +0 -13
- package/dist/lib/onboarding/checkpoint.js +0 -44
- package/dist/lib/onboarding/cli/onboard.d.ts +0 -53
- package/dist/lib/onboarding/cli/onboard.js +0 -135
- package/dist/lib/onboarding/cli/prompts.d.ts +0 -28
- package/dist/lib/onboarding/cli/prompts.js +0 -83
- package/dist/lib/onboarding/errors.d.ts +0 -34
- package/dist/lib/onboarding/errors.js +0 -59
- package/dist/lib/onboarding/index.d.ts +0 -13
- package/dist/lib/onboarding/index.js +0 -13
- package/dist/lib/onboarding/orchestrator.d.ts +0 -47
- package/dist/lib/onboarding/orchestrator.js +0 -569
- package/dist/lib/onboarding/types.d.ts +0 -79
- package/dist/lib/onboarding/types.js +0 -8
- package/dist/lib/policy-validator.d.ts +0 -7
- package/dist/lib/policy-validator.js +0 -187
- package/dist/lib/process-flag-company-context.d.ts +0 -8
- package/dist/lib/process-flag-company-context.js +0 -67
- package/dist/lib/report-publish.d.ts +0 -175
- package/dist/lib/report-publish.js +0 -421
- package/dist/lib/report-run.d.ts +0 -62
- package/dist/lib/report-run.js +0 -123
- package/dist/lib/report-snapshot.d.ts +0 -12
- package/dist/lib/report-snapshot.js +0 -135
- package/dist/lib/report-templates.d.ts +0 -9
- package/dist/lib/report-templates.js +0 -21
- package/dist/lib/scaffold-cli-floor.d.ts +0 -8
- package/dist/lib/scaffold-cli-floor.js +0 -50
- package/dist/lib/search-index/collection-path-repair-flag.d.ts +0 -4
- package/dist/lib/search-index/collection-path-repair-flag.js +0 -7
- package/dist/lib/search-index/embed-lock.d.ts +0 -34
- package/dist/lib/search-index/embed-lock.js +0 -295
- package/dist/lib/search-index/load-gate.d.ts +0 -57
- package/dist/lib/search-index/load-gate.js +0 -270
- package/dist/lib/search-index/max-doc-bytes.d.ts +0 -219
- package/dist/lib/search-index/max-doc-bytes.js +0 -463
- package/dist/lib/search-index/qmd-exit-diagnostics.d.ts +0 -5
- package/dist/lib/search-index/qmd-exit-diagnostics.js +0 -40
- package/dist/lib/search-index/reindex-single-flight-flag.d.ts +0 -5
- package/dist/lib/search-index/reindex-single-flight-flag.js +0 -8
- package/dist/lib/service-manager/index.d.ts +0 -42
- package/dist/lib/service-manager/index.js +0 -105
- package/dist/lib/service-manager/launchd.d.ts +0 -81
- package/dist/lib/service-manager/launchd.js +0 -212
- package/dist/lib/service-manager/systemd.d.ts +0 -19
- package/dist/lib/service-manager/systemd.js +0 -72
- package/dist/lib/service-manager/types.d.ts +0 -34
- package/dist/lib/service-manager/types.js +0 -26
- package/dist/lib/test-utils/isolated-flag-company-context.d.ts +0 -3
- package/dist/lib/test-utils/isolated-flag-company-context.js +0 -18
- package/dist/lib/work-context/bind-best.d.ts +0 -66
- package/dist/lib/work-context/bind-best.js +0 -344
- package/dist/lib/work-context/bind-calling-session.d.ts +0 -26
- package/dist/lib/work-context/bind-calling-session.js +0 -63
- package/dist/lib/work-context/company-rebind.d.ts +0 -23
- package/dist/lib/work-context/company-rebind.js +0 -59
- package/dist/lib/work-context/default-company.d.ts +0 -43
- package/dist/lib/work-context/default-company.js +0 -83
- package/dist/lib/work-context/outbox-quarantine-status-flag.d.ts +0 -4
- package/dist/lib/work-context/outbox-quarantine-status-flag.js +0 -7
- package/dist/lib/work-context/prd-sync.d.ts +0 -56
- package/dist/lib/work-context/prd-sync.js +0 -197
- package/dist/lib/work-context/preflight-contract.d.ts +0 -28
- package/dist/lib/work-context/preflight-contract.js +0 -85
- package/dist/lib/work-context/prompt-rebind.d.ts +0 -25
- package/dist/lib/work-context/prompt-rebind.js +0 -85
- package/dist/lib/work-context/windows-acl.d.ts +0 -123
- package/dist/lib/work-context/windows-acl.js +0 -425
- package/dist/lib/workers-registry/read.d.ts +0 -15
- package/dist/lib/workers-registry/read.js +0 -17
- package/dist/native-fast-route.d.ts +0 -7
- package/dist/native-fast-route.js +0 -45
- package/dist/node-network-compat-core.d.ts +0 -12
- package/dist/node-network-compat-core.js +0 -41
- package/dist/node-network-compat-fast.d.ts +0 -7
- package/dist/node-network-compat-fast.js +0 -23
- package/dist/secrets-env-fast-path.d.ts +0 -5
- package/dist/secrets-env-fast-path.js +0 -16
- package/dist/secrets-env-fast-route.d.ts +0 -18
- package/dist/secrets-env-fast-route.js +0 -54
- package/dist/utils/checkpoint-stamp-write-error.d.ts +0 -28
- package/dist/utils/checkpoint-stamp-write-error.js +0 -99
- package/dist/utils/cli-network-lifecycle.d.ts +0 -4
- package/dist/utils/cli-network-lifecycle.js +0 -11
- package/dist/utils/cognito-refresh-sentry.d.ts +0 -3
- package/dist/utils/cognito-refresh-sentry.js +0 -49
- package/dist/utils/console-origin.d.ts +0 -9
- package/dist/utils/console-origin.js +0 -28
- package/dist/utils/core-eval-trigger.d.ts +0 -4
- package/dist/utils/core-eval-trigger.js +0 -88
- package/dist/utils/exclusive-lock.d.ts +0 -32
- package/dist/utils/exclusive-lock.js +0 -75
- package/dist/utils/fast-stream-errors.d.ts +0 -12
- package/dist/utils/fast-stream-errors.js +0 -18
- package/dist/utils/files-browse-acl.d.ts +0 -5
- package/dist/utils/files-browse-acl.js +0 -11
- package/dist/utils/hq-core-yaml.d.ts +0 -10
- package/dist/utils/hq-core-yaml.js +0 -40
- package/dist/utils/hq-root-resolver.d.ts +0 -13
- package/dist/utils/hq-root-resolver.js +0 -103
- package/dist/utils/redact-url.d.ts +0 -14
- package/dist/utils/redact-url.js +0 -218
- package/dist/utils/scaffold-fast-import-guard.d.ts +0 -2
- package/dist/utils/scaffold-fast-import-guard.js +0 -40
- package/dist/utils/scaffold-packlist-guard.d.ts +0 -7
- package/dist/utils/scaffold-packlist-guard.js +0 -23
- package/dist/utils/scaffold-sibling-references.d.ts +0 -22
- package/dist/utils/scaffold-sibling-references.js +0 -156
- package/dist/utils/secret-load-availability.d.ts +0 -8
- package/dist/utils/secret-load-availability.js +0 -54
- package/dist/utils/staged-install.d.ts +0 -34
- package/dist/utils/staged-install.js +0 -346
- package/dist/utils/staged-npm-install.d.ts +0 -16
- package/dist/utils/staged-npm-install.js +0 -264
- package/dist/utils/sync-log-sources.d.ts +0 -15
- package/dist/utils/sync-log-sources.js +0 -36
- package/dist/utils/table-width.d.ts +0 -7
- package/dist/utils/table-width.js +0 -15
- package/dist/utils/update-command-supervisor.cjs +0 -247
- package/dist/utils/upload-author.d.ts +0 -15
- package/dist/utils/upload-author.js +0 -39
- package/dist/utils/version-report.d.ts +0 -27
- package/dist/utils/version-report.js +0 -105
- package/dist/version-request.d.ts +0 -14
- package/dist/version-request.js +0 -36
- package/scripts/mesh-daemon-if-stale.mjs +0 -20
- package/templates/reports/blank.md +0 -3
- package/templates/reports/daily-digest.md +0 -11
- package/templates/runbooks/update-report.md +0 -21
package/dist/commands/agents.js
CHANGED
|
@@ -15,11 +15,8 @@
|
|
|
15
15
|
* hq agents start|stop <uid> — EC2 start/stop
|
|
16
16
|
* hq agents retry <uid> — resume setup from first non-done step
|
|
17
17
|
* hq agents rm <uid> --yes — deprovision (destructive; flag-guarded)
|
|
18
|
-
* hq agents rotate <uid> — new enrollment code for an external agent
|
|
19
|
-
* hq agents revoke <uid> --yes — revoke an external agent (--remove deletes it)
|
|
20
18
|
* hq agents jobs list <uid> — off-box job roster (schedule + rate)
|
|
21
19
|
* hq agents jobs pause <uid> <jobId> — flip schedule State=DISABLED
|
|
22
|
-
* hq agents jobs resume <uid> <jobId> — flip schedule State=ENABLED
|
|
23
20
|
* hq agents jobs cancel <uid> <jobId> — delete schedule + drop the job
|
|
24
21
|
*
|
|
25
22
|
* Agents are company-scoped. `--company <slug>` may sit on the group
|
|
@@ -31,17 +28,11 @@ import chalk from "chalk";
|
|
|
31
28
|
import { randomUUID } from "node:crypto";
|
|
32
29
|
import * as readline from "node:readline";
|
|
33
30
|
import { resolveVaultCredential } from "../utils/resolve-vault-credential.js";
|
|
34
|
-
import { maxLength } from "../utils/table-width.js";
|
|
35
|
-
import { DEFAULT_VAULT_API_URL } from "../utils/cognito-session.js";
|
|
36
31
|
import { gateApiKeyCapabilities } from "../utils/api-key-command-gate.js";
|
|
37
|
-
import { queueCliLimitNoticeEngagement, queueCliLimitNoticeExposure, } from "../utils/cli-telemetry.js";
|
|
38
32
|
import { vaultApiFetch, getCompanyUid } from "../utils/vault-api.js";
|
|
39
|
-
import { consoleOrigin } from "./integrations-connect.js";
|
|
40
33
|
import { launchSessionManagerPlugin, SessionManagerPluginLaunchError, TerminalSessionTimeoutError, waitForTerminalSession, } from "@indigoai-us/hq-cloud/outposts/node";
|
|
41
34
|
import { peekIdToken } from "../utils/id-token.js";
|
|
42
|
-
import {
|
|
43
|
-
import { AGENT_UID_PATTERN, isAgentUid } from "../lib/notify-recipient.js";
|
|
44
|
-
import { AGENT_MODEL_PROVIDERS, modelSelectionErrorMessage, readAgentModelCatalog, validateAgentModelSelection, } from "../lib/agents/model-catalog.js";
|
|
35
|
+
import { isPlanGateError } from "../utils/plan-gate-error.js";
|
|
45
36
|
import { confirmChargeOrExit, formatUsd, parseBillingPayload, surfaceBillingBlocked, } from "../utils/billing-gate.js";
|
|
46
37
|
/** Reasoning-effort values hq-pro accepts on `runtime-config`. */
|
|
47
38
|
export const VALID_EFFORTS = new Set([
|
|
@@ -59,107 +50,6 @@ export const VALID_PROVIDERS = new Set(["codex", "grok", "claude", "agents-v2"])
|
|
|
59
50
|
export const VALID_AUTH_MODES = new Set(["subscription", "apiKey"]);
|
|
60
51
|
/** Customer-facing agent size keys served by hq-pro's authoritative catalog. */
|
|
61
52
|
export const VALID_AGENT_SIZE_KEYS = new Set(["basic", "power", "dev"]);
|
|
62
|
-
// Keep cloud agent create slugs aligned with hq-pro-agents POST /v1/agents.
|
|
63
|
-
const AGENT_SLUG_PATTERN = /^[a-z0-9][a-z0-9-]{0,62}$/;
|
|
64
|
-
const CLAUDE_PROVISION_COMMAND = "hq agents provision <name> --provider agents-v2 --model <model-id>";
|
|
65
|
-
const CLAUDE_API_KEY_ARGS = "--auth-mode apiKey --api-key-env <VAR>";
|
|
66
|
-
function claudeProvisionGuidance() {
|
|
67
|
-
return [
|
|
68
|
-
"The account must be enabled for Claude. Subscription auth is the default.",
|
|
69
|
-
"Use `hq agents models` to see the current model ids.",
|
|
70
|
-
`Create an agent with: ${CLAUDE_PROVISION_COMMAND}`,
|
|
71
|
-
`For API-key auth, add: ${CLAUDE_API_KEY_ARGS}`,
|
|
72
|
-
"The CLI accepts --provider claude for script compatibility, but the server rejects new agents that use it.",
|
|
73
|
-
].join("\n");
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* `hq agents create` exits with this distinct status when payment is required.
|
|
77
|
-
* Scripts can distinguish the expected upgrade state from an ordinary command
|
|
78
|
-
* failure without parsing human output.
|
|
79
|
-
*/
|
|
80
|
-
export const AGENT_CREATE_PAYMENT_REQUIRED_EXIT_CODE = 3;
|
|
81
|
-
function isCheckoutUrl(value) {
|
|
82
|
-
if (typeof value !== "string" || !value.trim())
|
|
83
|
-
return false;
|
|
84
|
-
try {
|
|
85
|
-
const url = new URL(value);
|
|
86
|
-
return url.protocol === "https:" && !url.username && !url.password;
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Decode only the priced response defined by the agent-create contract. A
|
|
94
|
-
* lookalike 403 must stay an ordinary API error rather than opening a browser
|
|
95
|
-
* or guessing at a price.
|
|
96
|
-
*/
|
|
97
|
-
export function agentCreatePlanLimitFromPayload(status, body) {
|
|
98
|
-
if (status !== 403 || !body || typeof body !== "object")
|
|
99
|
-
return null;
|
|
100
|
-
const payload = body;
|
|
101
|
-
if (payload.code !== "AGENT_PLAN_LIMIT" ||
|
|
102
|
-
payload.reasonCode !== "plan_limit" ||
|
|
103
|
-
payload.requiredPlan !== "agents-500" ||
|
|
104
|
-
typeof payload.amountMinor !== "number" ||
|
|
105
|
-
!Number.isSafeInteger(payload.amountMinor) ||
|
|
106
|
-
payload.amountMinor < 0 ||
|
|
107
|
-
typeof payload.currency !== "string" ||
|
|
108
|
-
!/^[A-Za-z]{3}$/.test(payload.currency)) {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
if (payload.checkoutUrl !== undefined && !isCheckoutUrl(payload.checkoutUrl)) {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
return {
|
|
115
|
-
requiredPlan: "agents-500",
|
|
116
|
-
amountMinor: payload.amountMinor,
|
|
117
|
-
currency: payload.currency.toUpperCase(),
|
|
118
|
-
...(typeof payload.checkoutUrl === "string"
|
|
119
|
-
? { checkoutUrl: payload.checkoutUrl }
|
|
120
|
-
: {}),
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
function formatServerPrice(amountMinor, currency) {
|
|
124
|
-
return new Intl.NumberFormat("en-US", {
|
|
125
|
-
style: "currency",
|
|
126
|
-
currency,
|
|
127
|
-
}).format(amountMinor / 100);
|
|
128
|
-
}
|
|
129
|
-
async function offerAgentCheckout(url) {
|
|
130
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
131
|
-
try {
|
|
132
|
-
return await offerUpgradeLink(url, {
|
|
133
|
-
interactive: true,
|
|
134
|
-
ask: (question) => new Promise((resolve) => rl.question(question, resolve)),
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
console.error("Could not open the upgrade page automatically. Use the URL above.");
|
|
139
|
-
return false;
|
|
140
|
-
}
|
|
141
|
-
finally {
|
|
142
|
-
rl.close();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/** Print a server-priced plan block without minting or rewriting its URL. */
|
|
146
|
-
export async function surfaceAgentCreatePlanLimit(planLimit, opts = {}) {
|
|
147
|
-
const price = `${formatServerPrice(planLimit.amountMinor, planLimit.currency)}/month`;
|
|
148
|
-
const reason = `HQ Workforce plan required to create an agent (${price}).`;
|
|
149
|
-
const argv = opts.json ? [...process.argv, "--json"] : process.argv;
|
|
150
|
-
const interactive = canOfferTeamUpgrade(argv);
|
|
151
|
-
if (!planLimit.checkoutUrl) {
|
|
152
|
-
console.error(reason);
|
|
153
|
-
console.error("Ask a company owner to upgrade before creating an agent.");
|
|
154
|
-
queueCliLimitNoticeExposure("agents", "refusal", opts.companyUid);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
console.error(formatUpgradeRefusal(reason, planLimit.checkoutUrl, { urlOnly: !interactive }));
|
|
158
|
-
const exposure = queueCliLimitNoticeExposure("agents", "refusal", opts.companyUid);
|
|
159
|
-
if (interactive && await offerAgentCheckout(planLimit.checkoutUrl)) {
|
|
160
|
-
queueCliLimitNoticeEngagement(exposure);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
53
|
/**
|
|
164
54
|
* Resolve a closed-set option value, or exit(1) with a message naming the
|
|
165
55
|
* offending input and the legal set.
|
|
@@ -222,35 +112,14 @@ export class AgentsHttpError extends Error {
|
|
|
222
112
|
code;
|
|
223
113
|
/** hq-pro's billing envelope on a `402 billing_required` provision block. */
|
|
224
114
|
billing;
|
|
225
|
-
|
|
226
|
-
agentCreatePlanLimit;
|
|
227
|
-
constructor(status, message, code, billing, agentCreatePlanLimit) {
|
|
115
|
+
constructor(status, message, code, billing) {
|
|
228
116
|
super(message);
|
|
229
117
|
this.name = "AgentsHttpError";
|
|
230
118
|
this.status = status;
|
|
231
119
|
this.code = code;
|
|
232
120
|
this.billing = billing;
|
|
233
|
-
this.agentCreatePlanLimit = agentCreatePlanLimit;
|
|
234
121
|
}
|
|
235
122
|
}
|
|
236
|
-
/**
|
|
237
|
-
* STATUS column for `hq agents list`.
|
|
238
|
-
*
|
|
239
|
-
* `agentStatus` is the agent's own stored runtime status and is NOT rewritten
|
|
240
|
-
* when a teardown starts — an agent that never finished provisioning and is
|
|
241
|
-
* now being removed keeps reading `provisioning` until the teardown completes
|
|
242
|
-
* and archives it. Observed live on liverecover/sean 2026-09-21: a removal that
|
|
243
|
-
* stalled on an object-locked vault bucket sat in the roster as `provisioning`,
|
|
244
|
-
* so the operator believed the removal had never been accepted. The roster
|
|
245
|
-
* already carries `setupPhase`, so prefer it whenever a teardown is in flight.
|
|
246
|
-
*/
|
|
247
|
-
export function rosterStatusLabel(agent) {
|
|
248
|
-
if (agent.setupPhase === "deprovisioning")
|
|
249
|
-
return "removing";
|
|
250
|
-
if (agent.setupPhase === "deprovisioned")
|
|
251
|
-
return "removed";
|
|
252
|
-
return agent.agentStatus ?? "";
|
|
253
|
-
}
|
|
254
123
|
/**
|
|
255
124
|
* Authenticated JSON round-trip against the agents control plane. Throws
|
|
256
125
|
* `AgentsHttpError` on any non-2xx (never swallows — hq-never-swallow-errors),
|
|
@@ -265,7 +134,7 @@ export async function agentsRequest(opts) {
|
|
|
265
134
|
// decline copy ("Your card was declined…") while `error` is the generic
|
|
266
135
|
// "payment required" — error-first would feed surfaceBillingBlocked the
|
|
267
136
|
// generic string and lose the decline reason (mirrors outpostRequest).
|
|
268
|
-
body.message ?? body.error ?? res.statusText, body.code, parseBillingPayload(body)
|
|
137
|
+
body.message ?? body.error ?? res.statusText, body.code, parseBillingPayload(body));
|
|
269
138
|
}
|
|
270
139
|
return (await res.json());
|
|
271
140
|
}
|
|
@@ -277,51 +146,6 @@ export function slugifyAgentName(name) {
|
|
|
277
146
|
.replace(/[^a-z0-9]+/g, "-")
|
|
278
147
|
.replace(/^-+|-+$/g, "");
|
|
279
148
|
}
|
|
280
|
-
async function readProvisionSlackTokensFromStdin() {
|
|
281
|
-
let value = "";
|
|
282
|
-
for await (const chunk of process.stdin)
|
|
283
|
-
value += String(chunk);
|
|
284
|
-
return value;
|
|
285
|
-
}
|
|
286
|
-
function parseProvisionSlackTokensFromStdin(value) {
|
|
287
|
-
const lines = value
|
|
288
|
-
.split(/\r?\n/)
|
|
289
|
-
.map((line) => line.trim())
|
|
290
|
-
.filter(Boolean);
|
|
291
|
-
if (lines.length < 1 || lines.length > 2) {
|
|
292
|
-
throw new Error("--slack-tokens-stdin expects one line with the bot token and an optional second line with the Socket Mode app token.");
|
|
293
|
-
}
|
|
294
|
-
return { botToken: lines[0], ...(lines[1] ? { appToken: lines[1] } : {}) };
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* Resolve write-only Slack credentials without printing them. Flags are useful
|
|
298
|
-
* for automation; HQ_SLACK_BOT_TOKEN/HQ_SLACK_APP_TOKEN and stdin avoid shell
|
|
299
|
-
* history. Multiple sources are rejected so the selected credential is clear.
|
|
300
|
-
*/
|
|
301
|
-
export async function resolveProvisionSlackTokens(options, environment = process.env, readStdin = readProvisionSlackTokensFromStdin) {
|
|
302
|
-
const optionBotToken = options.slackBotToken?.trim();
|
|
303
|
-
const optionAppToken = options.slackAppToken?.trim();
|
|
304
|
-
const environmentBotToken = environment.HQ_SLACK_BOT_TOKEN?.trim();
|
|
305
|
-
const environmentAppToken = environment.HQ_SLACK_APP_TOKEN?.trim();
|
|
306
|
-
const hasFlagOrEnvironment = Boolean(optionBotToken || optionAppToken || environmentBotToken || environmentAppToken);
|
|
307
|
-
if (options.slackTokensStdin) {
|
|
308
|
-
if (hasFlagOrEnvironment) {
|
|
309
|
-
throw new Error("Use --slack-tokens-stdin or the Slack token flags/environment variables, not both.");
|
|
310
|
-
}
|
|
311
|
-
return parseProvisionSlackTokensFromStdin(await readStdin());
|
|
312
|
-
}
|
|
313
|
-
if ((optionBotToken || optionAppToken) && (environmentBotToken || environmentAppToken)) {
|
|
314
|
-
throw new Error("Use Slack token flags or HQ_SLACK_BOT_TOKEN/HQ_SLACK_APP_TOKEN, not both.");
|
|
315
|
-
}
|
|
316
|
-
const botToken = optionBotToken || environmentBotToken;
|
|
317
|
-
const appToken = optionAppToken || environmentAppToken;
|
|
318
|
-
if (!botToken && !appToken)
|
|
319
|
-
return undefined;
|
|
320
|
-
if (!botToken) {
|
|
321
|
-
throw new Error("A Slack app token requires a Slack bot token.");
|
|
322
|
-
}
|
|
323
|
-
return { botToken, ...(appToken ? { appToken } : {}) };
|
|
324
|
-
}
|
|
325
149
|
/** Closed set shared with hq-pro's agent_create_* funnel contract. */
|
|
326
150
|
export const CLI_AGENT_CREATE_SURFACE = "cli_agents_create";
|
|
327
151
|
/** Read hq-pro's company-specific creation prices and capacities. */
|
|
@@ -418,7 +242,7 @@ export async function promptForAgentCreateSize(view) {
|
|
|
418
242
|
}
|
|
419
243
|
}
|
|
420
244
|
/** Confirm creation using the server quote, preserving $0 as a real answer. */
|
|
421
|
-
export function confirmAgentCreateQuoteOrExit(option, yes
|
|
245
|
+
export function confirmAgentCreateQuoteOrExit(option, yes) {
|
|
422
246
|
if (option.notBilled || option.netMonthlyCents === 0) {
|
|
423
247
|
const message = `${option.productName} is ${formatUsd(0)}/month for this company — ` +
|
|
424
248
|
"there is no per-agent charge.";
|
|
@@ -426,26 +250,14 @@ export function confirmAgentCreateQuoteOrExit(option, yes, quiet = false) {
|
|
|
426
250
|
console.error(chalk.yellow(`${message}\nRe-run with --yes to confirm agent provisioning.`));
|
|
427
251
|
process.exit(1);
|
|
428
252
|
}
|
|
429
|
-
|
|
430
|
-
console.log(chalk.dim(`${message} Provisioning…`));
|
|
431
|
-
}
|
|
432
|
-
return;
|
|
433
|
-
}
|
|
434
|
-
if (!quiet) {
|
|
435
|
-
confirmChargeOrExit({
|
|
436
|
-
resource: "agent",
|
|
437
|
-
unitCents: option.netMonthlyCents,
|
|
438
|
-
yes,
|
|
439
|
-
});
|
|
253
|
+
console.log(chalk.dim(`${message} Provisioning…`));
|
|
440
254
|
return;
|
|
441
255
|
}
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
});
|
|
448
|
-
}
|
|
256
|
+
confirmChargeOrExit({
|
|
257
|
+
resource: "agent",
|
|
258
|
+
unitCents: option.netMonthlyCents,
|
|
259
|
+
yes,
|
|
260
|
+
});
|
|
449
261
|
}
|
|
450
262
|
export async function provisionAgent(token, input) {
|
|
451
263
|
return agentsRequest({
|
|
@@ -469,277 +281,6 @@ export async function getAgentStatus(token, agentUid) {
|
|
|
469
281
|
path: `/v1/agents/${encodeURIComponent(agentUid)}/status`,
|
|
470
282
|
});
|
|
471
283
|
}
|
|
472
|
-
function recordValue(value) {
|
|
473
|
-
return value && typeof value === "object" && !Array.isArray(value)
|
|
474
|
-
? value
|
|
475
|
-
: null;
|
|
476
|
-
}
|
|
477
|
-
function nonEmptyString(value) {
|
|
478
|
-
return typeof value === "string" && value.trim() ? value.trim() : null;
|
|
479
|
-
}
|
|
480
|
-
function safeActionUrl(value) {
|
|
481
|
-
const raw = nonEmptyString(value);
|
|
482
|
-
if (!raw)
|
|
483
|
-
return null;
|
|
484
|
-
try {
|
|
485
|
-
const url = new URL(raw);
|
|
486
|
-
return url.protocol === "https:" && !url.username && !url.password ? raw : null;
|
|
487
|
-
}
|
|
488
|
-
catch {
|
|
489
|
-
return null;
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
function signInProviderName(url) {
|
|
493
|
-
const parsed = new URL(url);
|
|
494
|
-
if (parsed.hostname === "auth.openai.com" &&
|
|
495
|
-
parsed.pathname.startsWith("/codex/")) {
|
|
496
|
-
return "Codex";
|
|
497
|
-
}
|
|
498
|
-
if (parsed.hostname === "accounts.x.ai")
|
|
499
|
-
return "Grok";
|
|
500
|
-
if (parsed.hostname.endsWith("anthropic.com"))
|
|
501
|
-
return "Claude";
|
|
502
|
-
return "your provider";
|
|
503
|
-
}
|
|
504
|
-
/**
|
|
505
|
-
* Brain slot a device sign-in URL belongs to, or null when the provider has no
|
|
506
|
-
* per-brain slot (Claude) or the host is unknown.
|
|
507
|
-
*/
|
|
508
|
-
function signInBrainSlot(url) {
|
|
509
|
-
const provider = signInProviderName(url);
|
|
510
|
-
if (provider === "Grok")
|
|
511
|
-
return "grok";
|
|
512
|
-
if (provider === "Codex")
|
|
513
|
-
return "codex";
|
|
514
|
-
return null;
|
|
515
|
-
}
|
|
516
|
-
/**
|
|
517
|
-
* True when the box probe already reports that brain as signed in. A device
|
|
518
|
-
* pairing file can outlive the sign-in it started, so the probe — not the
|
|
519
|
-
* leftover code — decides whether a human still has work to do.
|
|
520
|
-
*/
|
|
521
|
-
function brainAlreadySignedIn(status, url) {
|
|
522
|
-
const slot = signInBrainSlot(url);
|
|
523
|
-
if (!slot)
|
|
524
|
-
return false;
|
|
525
|
-
const brains = recordValue(recordValue(status.agent)?.brains);
|
|
526
|
-
return brains?.[slot] === "signed-in";
|
|
527
|
-
}
|
|
528
|
-
function currentDeviceSignInAction(status) {
|
|
529
|
-
const pairing = recordValue(status.pairing);
|
|
530
|
-
const url = safeActionUrl(pairing?.url);
|
|
531
|
-
if (!url)
|
|
532
|
-
return null;
|
|
533
|
-
if (brainAlreadySignedIn(status, url))
|
|
534
|
-
return null;
|
|
535
|
-
const rawCode = nonEmptyString(pairing?.code);
|
|
536
|
-
const code = rawCode && /^[A-Z0-9]{4,8}-[A-Z0-9]{4,8}$/i.test(rawCode)
|
|
537
|
-
? rawCode
|
|
538
|
-
: undefined;
|
|
539
|
-
const provider = signInProviderName(url);
|
|
540
|
-
return {
|
|
541
|
-
type: provider === "Codex" ? "codex-device-sign-in" : "provider-sign-in",
|
|
542
|
-
title: `Sign in to ${provider}`,
|
|
543
|
-
summary: `sign in to ${provider}`,
|
|
544
|
-
instruction: code
|
|
545
|
-
? "Open this page and enter the code."
|
|
546
|
-
: "Open this page and follow the sign-in instructions.",
|
|
547
|
-
url,
|
|
548
|
-
urlLabel: "Open",
|
|
549
|
-
code,
|
|
550
|
-
};
|
|
551
|
-
}
|
|
552
|
-
const SLACK_APP_TOKEN_INSTRUCTION = "Create an app-level token with the connections:write scope, then paste it into HQ. HQ verifies the token and resumes setup; if Slack asks you to install the app, follow the install link shown there.";
|
|
553
|
-
function consolePasteUrl(companyKey, agentUid) {
|
|
554
|
-
const base = process.env.HQ_CONSOLE_URL?.trim().replace(/\/+$/, "") || "https://hq.computer";
|
|
555
|
-
return `${base}/companies/${encodeURIComponent(companyKey)}/agents?setup=${encodeURIComponent(agentUid)}`;
|
|
556
|
-
}
|
|
557
|
-
function slackAppIdFromSetupState(status) {
|
|
558
|
-
const steps = recordValue(status.setupState)?.steps;
|
|
559
|
-
if (!Array.isArray(steps))
|
|
560
|
-
return null;
|
|
561
|
-
for (const step of steps) {
|
|
562
|
-
const item = recordValue(step);
|
|
563
|
-
if (item?.name !== "channels" || item.status === "done")
|
|
564
|
-
continue;
|
|
565
|
-
const match = /https:\/\/api\.slack\.com\/apps\/(A[A-Z0-9]+)/.exec(JSON.stringify(item));
|
|
566
|
-
if (match)
|
|
567
|
-
return match[1];
|
|
568
|
-
}
|
|
569
|
-
return null;
|
|
570
|
-
}
|
|
571
|
-
function serverPendingActions(status) {
|
|
572
|
-
if (!Array.isArray(status.pendingActions))
|
|
573
|
-
return [];
|
|
574
|
-
const actions = [];
|
|
575
|
-
for (const raw of status.pendingActions) {
|
|
576
|
-
const item = recordValue(raw);
|
|
577
|
-
const type = nonEmptyString(item?.type);
|
|
578
|
-
const title = nonEmptyString(item?.title);
|
|
579
|
-
if (!item || !type || !title)
|
|
580
|
-
continue;
|
|
581
|
-
const url = safeActionUrl(item.url) ?? undefined;
|
|
582
|
-
const pasteUrl = safeActionUrl(item.pasteUrl) ?? undefined;
|
|
583
|
-
const rawCode = nonEmptyString(item.code);
|
|
584
|
-
actions.push({
|
|
585
|
-
type,
|
|
586
|
-
title,
|
|
587
|
-
summary: title.charAt(0).toLowerCase() + title.slice(1),
|
|
588
|
-
instruction: nonEmptyString(item.instruction) ?? "Open this page and follow the instructions.",
|
|
589
|
-
...(url ? { url, urlLabel: type === "slack-app-token" ? "Get token" : "Open" } : {}),
|
|
590
|
-
...(pasteUrl ? { pasteUrl } : {}),
|
|
591
|
-
...(rawCode && /^[A-Z0-9]{4,8}-[A-Z0-9]{4,8}$/i.test(rawCode) ? { code: rawCode } : {}),
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
return actions;
|
|
595
|
-
}
|
|
596
|
-
function pendingSlackAction(status, companySlug) {
|
|
597
|
-
const agent = recordValue(status.agent);
|
|
598
|
-
const configuredSlack = recordValue(recordValue(agent?.channels)?.slack);
|
|
599
|
-
const stepAppId = slackAppIdFromSetupState(status);
|
|
600
|
-
const appId = nonEmptyString(configuredSlack?.appId) ?? stepAppId;
|
|
601
|
-
const agentUid = nonEmptyString(agent?.uid);
|
|
602
|
-
const companyUid = nonEmptyString(agent?.companyUid);
|
|
603
|
-
const tokenPage = safeActionUrl(configuredSlack?.appTokenPendingUrl) ??
|
|
604
|
-
(stepAppId ? `https://api.slack.com/apps/${stepAppId}/general` : null);
|
|
605
|
-
if (tokenPage &&
|
|
606
|
-
appId && /^A[A-Z0-9]+$/.test(appId) &&
|
|
607
|
-
new URL(tokenPage).hostname === "api.slack.com" &&
|
|
608
|
-
agentUid && AGENT_UID_PATTERN.test(agentUid) &&
|
|
609
|
-
companyUid && /^cmp_[A-Za-z0-9_-]+$/.test(companyUid)) {
|
|
610
|
-
const companyUrlKey = companySlug && /^[a-z0-9][a-z0-9-]*$/.test(companySlug)
|
|
611
|
-
? companySlug
|
|
612
|
-
: companyUid;
|
|
613
|
-
return {
|
|
614
|
-
type: "slack-app-token",
|
|
615
|
-
title: `Finish ${nonEmptyString(agent?.name) ?? "the agent"}'s Slack connection`,
|
|
616
|
-
summary: "connect it to Slack",
|
|
617
|
-
instruction: SLACK_APP_TOKEN_INSTRUCTION,
|
|
618
|
-
url: `https://api.slack.com/apps/${appId}/general`,
|
|
619
|
-
urlLabel: "Get token",
|
|
620
|
-
pasteUrl: consolePasteUrl(companyUrlKey, agentUid),
|
|
621
|
-
};
|
|
622
|
-
}
|
|
623
|
-
const diagnostics = recordValue(agent?.channelDiagnostics);
|
|
624
|
-
const slack = recordValue(diagnostics?.slack);
|
|
625
|
-
const url = safeActionUrl(slack?.pendingInstallUrl);
|
|
626
|
-
if (!url)
|
|
627
|
-
return null;
|
|
628
|
-
if (slack?.inboundCapability === "socket-mode-degraded") {
|
|
629
|
-
return {
|
|
630
|
-
type: "slack-app-token",
|
|
631
|
-
title: "Finish setting up the Slack app",
|
|
632
|
-
summary: "finish setting up the Slack app",
|
|
633
|
-
instruction: "Open this page, create the app-level token, then provide it in the agent's Slack setup.",
|
|
634
|
-
url,
|
|
635
|
-
urlLabel: "Open",
|
|
636
|
-
...(agentUid && AGENT_UID_PATTERN.test(agentUid) && companyUid && /^cmp_[A-Za-z0-9_-]+$/.test(companyUid)
|
|
637
|
-
? {
|
|
638
|
-
pasteUrl: consolePasteUrl(companySlug && /^[a-z0-9][a-z0-9-]*$/.test(companySlug) ? companySlug : companyUid, agentUid),
|
|
639
|
-
}
|
|
640
|
-
: {}),
|
|
641
|
-
};
|
|
642
|
-
}
|
|
643
|
-
if (slack?.inboundCapability !== "pending-install")
|
|
644
|
-
return null;
|
|
645
|
-
return {
|
|
646
|
-
type: "slack-install",
|
|
647
|
-
title: "Install the Slack app",
|
|
648
|
-
summary: "install the Slack app so it can talk to your workspace",
|
|
649
|
-
instruction: "Open this link and install the app in your workspace.",
|
|
650
|
-
url,
|
|
651
|
-
urlLabel: "Install",
|
|
652
|
-
};
|
|
653
|
-
}
|
|
654
|
-
/**
|
|
655
|
-
* The server owns action detection. This client converts its safe, current
|
|
656
|
-
* status fields into a list so another operator action can be added without
|
|
657
|
-
* changing the renderers or command control flow.
|
|
658
|
-
*/
|
|
659
|
-
function pendingOperatorActions(status, companySlug) {
|
|
660
|
-
const fromServer = serverPendingActions(status);
|
|
661
|
-
if (fromServer.length > 0)
|
|
662
|
-
return fromServer;
|
|
663
|
-
return [
|
|
664
|
-
currentDeviceSignInAction(status),
|
|
665
|
-
pendingSlackAction(status, companySlug),
|
|
666
|
-
].filter((action) => action !== null);
|
|
667
|
-
}
|
|
668
|
-
async function consoleCompanySlug(token, status, companyRef) {
|
|
669
|
-
if (companyRef && /^[a-z0-9][a-z0-9-]*$/.test(companyRef))
|
|
670
|
-
return companyRef;
|
|
671
|
-
const agent = recordValue(status.agent);
|
|
672
|
-
const slack = recordValue(recordValue(agent?.channels)?.slack);
|
|
673
|
-
if (!slack?.appTokenPendingUrl && !slackAppIdFromSetupState(status))
|
|
674
|
-
return undefined;
|
|
675
|
-
const companyUid = nonEmptyString(agent?.companyUid);
|
|
676
|
-
if (!companyUid)
|
|
677
|
-
return undefined;
|
|
678
|
-
try {
|
|
679
|
-
const response = await vaultApiFetch({
|
|
680
|
-
token,
|
|
681
|
-
path: "/membership/me",
|
|
682
|
-
signal: AbortSignal.timeout(10_000),
|
|
683
|
-
});
|
|
684
|
-
if (!response.ok)
|
|
685
|
-
return undefined;
|
|
686
|
-
const body = recordValue(await response.json());
|
|
687
|
-
const memberships = Array.isArray(body?.memberships) ? body.memberships : [];
|
|
688
|
-
const membership = memberships.map(recordValue).find((item) => item?.companyUid === companyUid && item?.status === "active");
|
|
689
|
-
const slug = nonEmptyString(membership?.companySlug);
|
|
690
|
-
return slug && /^[a-z0-9][a-z0-9-]*$/.test(slug) ? slug : undefined;
|
|
691
|
-
}
|
|
692
|
-
catch {
|
|
693
|
-
return undefined;
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
function pendingActionsJson(actions) {
|
|
697
|
-
return actions.map(({ type, title, instruction, url, pasteUrl, code }) => ({
|
|
698
|
-
type,
|
|
699
|
-
title,
|
|
700
|
-
instruction,
|
|
701
|
-
...(url ? { url } : {}),
|
|
702
|
-
...(pasteUrl ? { pasteUrl } : {}),
|
|
703
|
-
...(code ? { code } : {}),
|
|
704
|
-
}));
|
|
705
|
-
}
|
|
706
|
-
function statusAgentSlug(status) {
|
|
707
|
-
return nonEmptyString(recordValue(status.agent)?.slug);
|
|
708
|
-
}
|
|
709
|
-
/** The provision endpoint returns this nested identity; old response shapes omit it. */
|
|
710
|
-
function provisionedAgentIdentity(result) {
|
|
711
|
-
const agent = recordValue(result.agent);
|
|
712
|
-
const uid = nonEmptyString(agent?.uid) ?? nonEmptyString(agent?.agentUid);
|
|
713
|
-
const slug = nonEmptyString(agent?.slug);
|
|
714
|
-
return uid && slug ? { uid, slug } : null;
|
|
715
|
-
}
|
|
716
|
-
function printPendingOperatorActions(slug, actions) {
|
|
717
|
-
if (actions.length === 0)
|
|
718
|
-
return;
|
|
719
|
-
const first = actions[0];
|
|
720
|
-
console.log(chalk.yellow(actions.length === 1
|
|
721
|
-
? `Your agent's box is up. One step left: ${first.summary}.`
|
|
722
|
-
: "Your agent's box is up. A few steps remain before it can talk to your workspace."));
|
|
723
|
-
for (const action of actions) {
|
|
724
|
-
console.log("");
|
|
725
|
-
console.log(chalk.bold(`${action.title}:`));
|
|
726
|
-
console.log(action.instruction);
|
|
727
|
-
if (action.url)
|
|
728
|
-
console.log(chalk.cyan(`${action.urlLabel ?? "Open"}: ${action.url}`));
|
|
729
|
-
if (action.pasteUrl)
|
|
730
|
-
console.log(chalk.cyan(`Paste token: ${action.pasteUrl}`));
|
|
731
|
-
if (action.code)
|
|
732
|
-
console.log(chalk.bold(`Code: ${action.code}`));
|
|
733
|
-
}
|
|
734
|
-
const currentCodeHint = actions.some((action) => action.code)
|
|
735
|
-
? "current sign-in code and instructions"
|
|
736
|
-
: "these instructions";
|
|
737
|
-
const statusCommand = slug
|
|
738
|
-
? `Run \`hq agents status ${slug}\` any time to get ${currentCodeHint} again.`
|
|
739
|
-
: `Run \`hq agents status\` again any time to get ${currentCodeHint}.`;
|
|
740
|
-
console.log("");
|
|
741
|
-
console.log(chalk.dim(`Until that's done, the agent will show as still setting up. ${statusCommand}`));
|
|
742
|
-
}
|
|
743
284
|
export async function patchAgentProfile(token, agentUid, patch) {
|
|
744
285
|
return agentsRequest({
|
|
745
286
|
token,
|
|
@@ -763,54 +304,6 @@ export async function startStopAgent(token, agentUid, action) {
|
|
|
763
304
|
method: "POST",
|
|
764
305
|
});
|
|
765
306
|
}
|
|
766
|
-
/** Submit a human-provided Claude subscription code through hq-pro's route. */
|
|
767
|
-
export async function submitAgentLoginCode(token, agentUid, code) {
|
|
768
|
-
return agentsRequest({
|
|
769
|
-
token,
|
|
770
|
-
path: `/v1/agents/${encodeURIComponent(agentUid)}/login-code`,
|
|
771
|
-
method: "POST",
|
|
772
|
-
body: { code },
|
|
773
|
-
});
|
|
774
|
-
}
|
|
775
|
-
async function readLoginCode(code) {
|
|
776
|
-
let value = code;
|
|
777
|
-
if (value === undefined) {
|
|
778
|
-
if (process.stdin.isTTY) {
|
|
779
|
-
console.error("Enter the Claude sign-in code, then press Enter:");
|
|
780
|
-
}
|
|
781
|
-
const rl = readline.createInterface({ input: process.stdin });
|
|
782
|
-
try {
|
|
783
|
-
value = await new Promise((resolve, reject) => {
|
|
784
|
-
rl.once("error", reject);
|
|
785
|
-
rl.once("close", () => resolve(""));
|
|
786
|
-
rl.question("", resolve);
|
|
787
|
-
});
|
|
788
|
-
}
|
|
789
|
-
finally {
|
|
790
|
-
rl.close();
|
|
791
|
-
}
|
|
792
|
-
}
|
|
793
|
-
const trimmed = value.trim();
|
|
794
|
-
if (!trimmed) {
|
|
795
|
-
throw new Error("Claude sign-in code required. Pass it as an argument or provide it on stdin.");
|
|
796
|
-
}
|
|
797
|
-
return trimmed;
|
|
798
|
-
}
|
|
799
|
-
function redactLoginCode(message, code) {
|
|
800
|
-
return code ? message.split(code).join("[redacted]") : message;
|
|
801
|
-
}
|
|
802
|
-
function agentConsoleResolveUrl(agentUid) {
|
|
803
|
-
const apiUrl = process.env.HQ_VAULT_API_URL?.trim() || DEFAULT_VAULT_API_URL;
|
|
804
|
-
const origin = consoleOrigin(apiUrl);
|
|
805
|
-
if (!origin)
|
|
806
|
-
return undefined;
|
|
807
|
-
// Keep the owner's canonical production sign-in URL while honoring an
|
|
808
|
-
// explicit console override or deriving the console for another API host.
|
|
809
|
-
const consoleBase = !process.env.HQ_CONSOLE_URL?.trim() && origin === "https://hq.computer"
|
|
810
|
-
? "https://hq.getindigo.ai"
|
|
811
|
-
: origin;
|
|
812
|
-
return `${consoleBase}/resolve/agents/${encodeURIComponent(agentUid)}`;
|
|
813
|
-
}
|
|
814
307
|
export async function openAgentTerminal(token, agentUid, body) {
|
|
815
308
|
return agentsRequest({
|
|
816
309
|
token,
|
|
@@ -826,14 +319,11 @@ export async function retryAgent(token, agentUid) {
|
|
|
826
319
|
method: "POST",
|
|
827
320
|
});
|
|
828
321
|
}
|
|
829
|
-
export async function deprovisionAgent(token, agentUid
|
|
322
|
+
export async function deprovisionAgent(token, agentUid) {
|
|
830
323
|
return agentsRequest({
|
|
831
324
|
token,
|
|
832
325
|
path: `/v1/agents/${encodeURIComponent(agentUid)}`,
|
|
833
326
|
method: "DELETE",
|
|
834
|
-
body: confirmDestroyAgentsV2 === undefined
|
|
835
|
-
? undefined
|
|
836
|
-
: { confirmDestroyAgentsV2 },
|
|
837
327
|
});
|
|
838
328
|
}
|
|
839
329
|
export async function listAgentJobs(token, agentUid) {
|
|
@@ -850,13 +340,6 @@ export async function pauseAgentJob(token, agentUid, jobId) {
|
|
|
850
340
|
method: "POST",
|
|
851
341
|
});
|
|
852
342
|
}
|
|
853
|
-
export async function resumeAgentJob(token, agentUid, jobId) {
|
|
854
|
-
return agentsRequest({
|
|
855
|
-
token,
|
|
856
|
-
path: `/v1/agents/${encodeURIComponent(agentUid)}/jobs/${encodeURIComponent(jobId)}/resume`,
|
|
857
|
-
method: "POST",
|
|
858
|
-
});
|
|
859
|
-
}
|
|
860
343
|
export async function cancelAgentJob(token, agentUid, jobId) {
|
|
861
344
|
return agentsRequest({
|
|
862
345
|
token,
|
|
@@ -873,7 +356,7 @@ export async function cancelAgentJob(token, agentUid, jobId) {
|
|
|
873
356
|
* the agent is cross-company) must print a clear message and exit non-zero,
|
|
874
357
|
* never throw a stack trace.
|
|
875
358
|
*/
|
|
876
|
-
export function formatJobsHttpError(err, jobId
|
|
359
|
+
export function formatJobsHttpError(err, jobId) {
|
|
877
360
|
if (err.status === 401)
|
|
878
361
|
return "Not authenticated — run `hq login`.";
|
|
879
362
|
// A 403 CROSS_AGENT_JOB is hq-pro's self-only jobs guard, not a role problem:
|
|
@@ -883,17 +366,12 @@ export function formatJobsHttpError(err, jobId, action) {
|
|
|
883
366
|
// closed locally before the request, see crossAgentJobsRefusal).
|
|
884
367
|
if (err.status === 403 && err.code === "CROSS_AGENT_JOB") {
|
|
885
368
|
return ("Jobs are scoped to the calling agent's own identity — an agent may only " +
|
|
886
|
-
"list, pause,
|
|
369
|
+
"list, pause, or cancel its OWN jobs (use the on-box `hq-agent-jobs` tool). " +
|
|
887
370
|
"Managing another agent's jobs needs a person session with owner/admin on " +
|
|
888
371
|
"the company.");
|
|
889
372
|
}
|
|
890
373
|
if (err.status === 403)
|
|
891
374
|
return "You need owner/admin on this company.";
|
|
892
|
-
if (action === "resume" &&
|
|
893
|
-
err.status === 404 &&
|
|
894
|
-
(err.code === "JOB_NOT_FOUND" || err.code === "SCHEDULE_NOT_FOUND")) {
|
|
895
|
-
return "job not found or its schedule was deleted; it cannot be resumed";
|
|
896
|
-
}
|
|
897
375
|
if (err.status === 404 && err.code === "JOB_NOT_FOUND") {
|
|
898
376
|
const id = jobId ?? extractQuotedJobId(err.message) ?? "unknown";
|
|
899
377
|
return `Job '${id}' not found.`;
|
|
@@ -922,7 +400,7 @@ export function formatJobsTable(jobs) {
|
|
|
922
400
|
j.lastRunOutcome ?? "-",
|
|
923
401
|
j.status ?? "",
|
|
924
402
|
]);
|
|
925
|
-
const widths = cols.map((c, i) =>
|
|
403
|
+
const widths = cols.map((c, i) => Math.max(c.length, ...rows.map((r) => r[i].length)));
|
|
926
404
|
const render = (cells) => cells.map((cell, i) => cell.padEnd(widths[i])).join(" ");
|
|
927
405
|
return [chalk.bold(render(cols)), ...rows.map(render)].join("\n");
|
|
928
406
|
}
|
|
@@ -932,62 +410,20 @@ export function formatPauseResult(result) {
|
|
|
932
410
|
const from = result.previousState ?? "ENABLED";
|
|
933
411
|
return `Paused ${result.jobId} (${from} → ${result.scheduleState})`;
|
|
934
412
|
}
|
|
935
|
-
export function formatResumeResult(result) {
|
|
936
|
-
if (!result.changed)
|
|
937
|
-
return "Already active";
|
|
938
|
-
const from = result.previousState ?? "DISABLED";
|
|
939
|
-
return `Resumed ${result.jobId} (${from} → ${result.scheduleState})`;
|
|
940
|
-
}
|
|
941
413
|
/** Human-readable "hot-applied to the running box" vs "saved for next launch". */
|
|
942
414
|
export function appliedHint(applied) {
|
|
943
415
|
return applied
|
|
944
416
|
? "applied to the running box now"
|
|
945
417
|
: "saved — takes effect on the agent's next launch";
|
|
946
418
|
}
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
}
|
|
956
|
-
if (result.source === "cache") {
|
|
957
|
-
console.error(chalk.yellow(`Model catalog unavailable; validating against the cached catalog from ${new Date(result.fetchedAt).toISOString()}.`));
|
|
958
|
-
}
|
|
959
|
-
const selection = validateAgentModelSelection(result.catalog, modelId, chosenProvider);
|
|
960
|
-
if (!selection.ok) {
|
|
961
|
-
throw new Error(modelSelectionErrorMessage(modelId, selection));
|
|
962
|
-
}
|
|
963
|
-
}
|
|
964
|
-
/** Stable human table shared by the all-provider and provider-filtered forms. */
|
|
965
|
-
export function formatAgentModelsTable(catalog, selectedProvider) {
|
|
966
|
-
const providers = selectedProvider ? [selectedProvider] : AGENT_MODEL_PROVIDERS;
|
|
967
|
-
const sections = providers.map((provider) => {
|
|
968
|
-
const view = catalog.providers[provider];
|
|
969
|
-
const columns = ["ID", "LABEL", "DEFAULT", "NEW", "AVAILABILITY"];
|
|
970
|
-
const rows = view.models.map((model) => [
|
|
971
|
-
model.id,
|
|
972
|
-
model.label,
|
|
973
|
-
model.id === view.defaultModel ? "yes" : "",
|
|
974
|
-
model.isNew ? "yes" : "",
|
|
975
|
-
model.selectable ? "available" : "not yet on agents",
|
|
976
|
-
]);
|
|
977
|
-
const widths = columns.map((column, index) => Math.max(column.length, ...rows.map((row) => row[index].length)));
|
|
978
|
-
const render = (cells) => cells.map((cell, index) => cell.padEnd(widths[index])).join(" ").trimEnd();
|
|
979
|
-
return [
|
|
980
|
-
chalk.bold(provider.toUpperCase()),
|
|
981
|
-
render(columns),
|
|
982
|
-
...rows.map(render),
|
|
983
|
-
].join("\n");
|
|
984
|
-
});
|
|
985
|
-
return sections.join("\n\n");
|
|
986
|
-
}
|
|
987
|
-
function catalogUnavailableMessage() {
|
|
988
|
-
return ("Model catalog is unavailable and no cached copy exists. " +
|
|
989
|
-
"Check your connection and try again after model-catalog.serve is enabled.");
|
|
990
|
-
}
|
|
419
|
+
// ---------------------------------------------------------------------------
|
|
420
|
+
// Talking to agents (DM). Agents are members addressable over HQ's DM system:
|
|
421
|
+
// a message rides `POST /v1/notify/dm` (the wire contract accepts `agt_*`), the
|
|
422
|
+
// agent's box picks it up and replies over DM (a first-class agent reply
|
|
423
|
+
// channel), and the two-way conversation is read back via `GET /v1/notify/thread`.
|
|
424
|
+
// ---------------------------------------------------------------------------
|
|
425
|
+
/** Agent uid shape (`agt_…`). */
|
|
426
|
+
const AGENT_UID_PATTERN = /^agt_[A-Za-z0-9_-]+$/;
|
|
991
427
|
/**
|
|
992
428
|
* Resolve an agent reference to its `agt_` uid. An `agt_…` value is used
|
|
993
429
|
* directly; anything else is treated as a slug or display name and resolved
|
|
@@ -1082,9 +518,6 @@ async function resolveJobsTargetOrExit(ref, company) {
|
|
|
1082
518
|
}
|
|
1083
519
|
/** Send a DM to an agent. Returns nothing meaningful beyond success. */
|
|
1084
520
|
export async function sendAgentDm(token, agentUid, message) {
|
|
1085
|
-
if (!isAgentUid(agentUid)) {
|
|
1086
|
-
throw new Error(`Invalid agent recipient '${agentUid}': expected an agt_ uid.`);
|
|
1087
|
-
}
|
|
1088
521
|
await agentsRequest({
|
|
1089
522
|
token,
|
|
1090
523
|
path: "/v1/notify/dm",
|
|
@@ -1117,59 +550,6 @@ function shortTime(iso) {
|
|
|
1117
550
|
function sleep(ms) {
|
|
1118
551
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
1119
552
|
}
|
|
1120
|
-
/**
|
|
1121
|
-
* POST /v1/agents/{uid}/rotate — invalidate the current secret and host key
|
|
1122
|
-
* and issue a fresh one-time enrollment code (returned exactly once).
|
|
1123
|
-
*/
|
|
1124
|
-
export async function rotateAgent(token, agentUid) {
|
|
1125
|
-
const data = await agentsRequest({
|
|
1126
|
-
token,
|
|
1127
|
-
path: `/v1/agents/${encodeURIComponent(agentUid)}/rotate`,
|
|
1128
|
-
method: "POST",
|
|
1129
|
-
});
|
|
1130
|
-
const e = data.enrollment ?? {};
|
|
1131
|
-
if (typeof e.code !== "string" || !e.code) {
|
|
1132
|
-
throw new AgentsHttpError(502, "rotate succeeded but the response carried no enrollment code");
|
|
1133
|
-
}
|
|
1134
|
-
return {
|
|
1135
|
-
agentUid: data.agentUid ?? agentUid,
|
|
1136
|
-
enrollment: {
|
|
1137
|
-
code: e.code,
|
|
1138
|
-
expiresAt: typeof e.expiresAt === "string" ? e.expiresAt : "",
|
|
1139
|
-
enrollmentId: typeof e.enrollmentId === "string" ? e.enrollmentId : "",
|
|
1140
|
-
},
|
|
1141
|
-
};
|
|
1142
|
-
}
|
|
1143
|
-
/** Display form of a 24-char code: six groups of four. */
|
|
1144
|
-
export function groupEnrollmentCode(code) {
|
|
1145
|
-
const flat = code.replace(/[\s-]+/g, "").toUpperCase();
|
|
1146
|
-
return flat.match(/.{1,4}/g)?.join("-") ?? flat;
|
|
1147
|
-
}
|
|
1148
|
-
/**
|
|
1149
|
-
* POST /v1/agents/{uid}/revoke — disable the Cognito user, drop membership,
|
|
1150
|
-
* mark the enrollment revoked; `remove` also deletes the entity.
|
|
1151
|
-
*/
|
|
1152
|
-
export async function revokeAgent(token, agentUid, remove) {
|
|
1153
|
-
const data = await agentsRequest({
|
|
1154
|
-
token,
|
|
1155
|
-
path: `/v1/agents/${encodeURIComponent(agentUid)}/revoke`,
|
|
1156
|
-
method: "POST",
|
|
1157
|
-
body: { remove },
|
|
1158
|
-
});
|
|
1159
|
-
return { removed: data.removed === true || remove };
|
|
1160
|
-
}
|
|
1161
|
-
/** Lines printed after a rotate: the code is shown once and never stored. */
|
|
1162
|
-
export function formatRotateOutput(result) {
|
|
1163
|
-
const lines = [
|
|
1164
|
-
`Rotated ${result.agentUid}. The old secret and host key no longer mint.`,
|
|
1165
|
-
"",
|
|
1166
|
-
` enrollment code: ${groupEnrollmentCode(result.enrollment.code)}`,
|
|
1167
|
-
];
|
|
1168
|
-
if (result.enrollment.expiresAt)
|
|
1169
|
-
lines.push(` expires: ${result.enrollment.expiresAt} (15 minutes)`);
|
|
1170
|
-
lines.push("", "Shown once. On the agent's host run:", ` hq agent enroll ${groupEnrollmentCode(result.enrollment.code)} --replace`, " hq agent probe");
|
|
1171
|
-
return lines;
|
|
1172
|
-
}
|
|
1173
553
|
// ---------------------------------------------------------------------------
|
|
1174
554
|
// Command registration
|
|
1175
555
|
// ---------------------------------------------------------------------------
|
|
@@ -1197,9 +577,9 @@ function fail(err) {
|
|
|
1197
577
|
}
|
|
1198
578
|
process.exit(1);
|
|
1199
579
|
}
|
|
1200
|
-
function failJobs(err, jobId
|
|
580
|
+
function failJobs(err, jobId) {
|
|
1201
581
|
if (err instanceof AgentsHttpError) {
|
|
1202
|
-
console.error(chalk.red(formatJobsHttpError(err, jobId
|
|
582
|
+
console.error(chalk.red(formatJobsHttpError(err, jobId)));
|
|
1203
583
|
process.exit(1);
|
|
1204
584
|
}
|
|
1205
585
|
fail(err);
|
|
@@ -1222,16 +602,9 @@ export function registerAgentsCommand(program) {
|
|
|
1222
602
|
bySubcommand: {
|
|
1223
603
|
message: { capability: "agents:use", routeAvailable: false },
|
|
1224
604
|
thread: { capability: "agents:use", routeAvailable: false },
|
|
1225
|
-
// The catalog read endpoint is JWT-only; hq-pro has no keyed parallel.
|
|
1226
|
-
models: { capability: "agents:use", routeAvailable: false },
|
|
1227
605
|
// Interactive terminals are for humans: hq-pro serves no keyed
|
|
1228
606
|
// `/v1/keys/agents/{uid}/terminal` route, so machine keys fail closed.
|
|
1229
607
|
terminal: { capability: "agents:use", routeAvailable: false },
|
|
1230
|
-
// External-agent lifecycle is an admin action on the JWT-only
|
|
1231
|
-
// /v1/agents/{uid}/rotate|revoke routes (api-contract v1); no keyed
|
|
1232
|
-
// parallel exists, so machine keys fail closed here too.
|
|
1233
|
-
rotate: { capability: "agents:use", routeAvailable: false },
|
|
1234
|
-
revoke: { capability: "agents:use", routeAvailable: false },
|
|
1235
608
|
},
|
|
1236
609
|
});
|
|
1237
610
|
// `--company` may live on the group or the subcommand; the subcommand value
|
|
@@ -1239,43 +612,6 @@ export function registerAgentsCommand(program) {
|
|
|
1239
612
|
// `hq agents --company acme list`.
|
|
1240
613
|
const companyOf = (sub) => sub.opts().company ??
|
|
1241
614
|
agents.opts().company;
|
|
1242
|
-
agents
|
|
1243
|
-
.command("models")
|
|
1244
|
-
.description("List the model catalog available to cloud agents")
|
|
1245
|
-
.option("--provider <provider>", "Filter to one provider: codex, grok, or claude")
|
|
1246
|
-
.option("--json", "Print the stable catalog JSON shape")
|
|
1247
|
-
.action(async (opts) => {
|
|
1248
|
-
try {
|
|
1249
|
-
const token = (await resolveVaultCredential()).token;
|
|
1250
|
-
const result = await readAgentModelCatalog(token);
|
|
1251
|
-
if (!result.ok) {
|
|
1252
|
-
if (result.reason === "request_failed") {
|
|
1253
|
-
throw new Error(`Could not read the model catalog (HTTP ${result.status}). Check your hq login and try again.`);
|
|
1254
|
-
}
|
|
1255
|
-
console.error(chalk.red(catalogUnavailableMessage()));
|
|
1256
|
-
process.exit(1);
|
|
1257
|
-
}
|
|
1258
|
-
if (result.source === "cache") {
|
|
1259
|
-
console.error(chalk.yellow(`Model catalog unavailable; showing cached catalog from ${new Date(result.fetchedAt).toISOString()}.`));
|
|
1260
|
-
}
|
|
1261
|
-
const providers = opts.provider
|
|
1262
|
-
? { [opts.provider]: result.catalog.providers[opts.provider] }
|
|
1263
|
-
: result.catalog.providers;
|
|
1264
|
-
if (opts.json) {
|
|
1265
|
-
// Stable shape: { generatedAt, providers }. A provider filter selects
|
|
1266
|
-
// one key but never changes or flattens the response envelope.
|
|
1267
|
-
process.stdout.write(JSON.stringify({ generatedAt: result.catalog.generatedAt, providers }, null, 2) + "\n");
|
|
1268
|
-
return;
|
|
1269
|
-
}
|
|
1270
|
-
console.log(formatAgentModelsTable(result.catalog, opts.provider));
|
|
1271
|
-
}
|
|
1272
|
-
catch (err) {
|
|
1273
|
-
fail(err);
|
|
1274
|
-
}
|
|
1275
|
-
});
|
|
1276
|
-
agents.commands.find((command) => command.name() === "models")
|
|
1277
|
-
?.options.find((option) => option.long === "--provider")
|
|
1278
|
-
?.choices(AGENT_MODEL_PROVIDERS);
|
|
1279
615
|
agents
|
|
1280
616
|
.command("message <agent> <message...>")
|
|
1281
617
|
.alias("msg")
|
|
@@ -1428,56 +764,31 @@ export function registerAgentsCommand(program) {
|
|
|
1428
764
|
});
|
|
1429
765
|
agents
|
|
1430
766
|
.command("provision <name>")
|
|
1431
|
-
.
|
|
767
|
+
.alias("new")
|
|
1432
768
|
.description("Provision a new cloud agent (company-specific monthly price shown before creation)")
|
|
1433
769
|
.option("--company <slug>", "Company slug (resolves to companyUid)")
|
|
1434
770
|
.option("--slug <slug>", "Agent slug (defaults to a slug of <name>)")
|
|
1435
|
-
.option("--provider <provider>", "Runtime:
|
|
1436
|
-
.option("--model <model>", "Brain model from `hq agents models`")
|
|
771
|
+
.option("--provider <provider>", "Runtime: codex | grok | claude | agents-v2 (default codex). claude is subscription-only; agents-v2 boots its brain box (codex, or grok via a grok-* model) and receives the v2 runtime post-boot")
|
|
1437
772
|
.option("--auth-mode <mode>", "Auth: subscription | apiKey (default subscription)", "subscription")
|
|
1438
773
|
.option("--api-key-env <VAR>", "Env var holding the API key for --auth-mode apiKey (never pass the key as a flag)")
|
|
1439
|
-
.option("--slack-bot-token <xoxb-token>", "Reuse an existing Slack bot token; HQ_SLACK_BOT_TOKEN or --slack-tokens-stdin avoid shell history")
|
|
1440
|
-
.option("--slack-app-token <xapp-token>", "Socket Mode app token for --provider agents-v2; HQ_SLACK_APP_TOKEN or --slack-tokens-stdin avoid shell history")
|
|
1441
|
-
.option("--slack-tokens-stdin", "Read the bot token and optional app token from one or two stdin lines")
|
|
1442
774
|
.option("--title <title>", "Org-chart job title")
|
|
1443
775
|
.option("--description <text>", "Short description / bio")
|
|
1444
776
|
.option("--size <size>", "Agent box size: basic | power | dev (omitted keeps the current default)")
|
|
1445
777
|
.option("--yes", "Confirm the quoted monthly cost and provision the agent")
|
|
1446
|
-
.option("--json", "Emit machine-readable output and never open a browser")
|
|
1447
|
-
.addHelpText("after", `\n${claudeProvisionGuidance()}\n`)
|
|
1448
778
|
.action(async function (name, opts) {
|
|
1449
779
|
try {
|
|
1450
|
-
const slug = opts.slug ?? slugifyAgentName(name);
|
|
1451
|
-
if (!AGENT_SLUG_PATTERN.test(slug)) {
|
|
1452
|
-
console.error(chalk.red("Agent slug must start with a lowercase letter or digit, contain only lowercase letters, digits, and hyphens, and be at most 63 characters. " +
|
|
1453
|
-
"Update --slug or the agent name."));
|
|
1454
|
-
process.exit(1);
|
|
1455
|
-
}
|
|
1456
780
|
// Both of these previously fell back to their default on an
|
|
1457
781
|
// unrecognised value, silently provisioning a billable box the operator
|
|
1458
782
|
// did not ask for. They now exit(1) instead — see parseEnumOption.
|
|
1459
783
|
const authMode = parseEnumOption(opts.authMode, VALID_AUTH_MODES, "--auth-mode") ?? "subscription";
|
|
1460
|
-
const
|
|
1461
|
-
if (opts.model !== undefined &&
|
|
1462
|
-
!/^[A-Za-z0-9._-]{1,64}$/.test(opts.model)) {
|
|
1463
|
-
console.error(chalk.red("--model must be a model identifier (letters, digits, dot, dash, underscore; max 64 chars)."));
|
|
1464
|
-
process.exit(1);
|
|
1465
|
-
}
|
|
1466
|
-
const provider = explicitProvider ?? (opts.model ? "agents-v2" : undefined);
|
|
1467
|
-
const slackTokens = await resolveProvisionSlackTokens(opts);
|
|
1468
|
-
if (slackTokens?.appToken && provider !== "agents-v2") {
|
|
1469
|
-
throw new Error("A Slack app token can only be supplied with --provider agents-v2 for Socket Mode.");
|
|
1470
|
-
}
|
|
1471
|
-
if (slackTokens && provider === "agents-v2" && !slackTokens.appToken) {
|
|
1472
|
-
throw new Error("--provider agents-v2 requires a Slack app token when reusing a Slack bot token.");
|
|
1473
|
-
}
|
|
784
|
+
const provider = parseEnumOption(opts.provider, VALID_PROVIDERS, "--provider");
|
|
1474
785
|
// claude is subscription-only on hq-pro (rejectIncompatibleProviderAuthMode
|
|
1475
786
|
// returns AGENT_PROVIDER_INCOMPATIBLE_WITH_AUTH_MODE). Catch it here so the
|
|
1476
787
|
// operator gets a direct message instead of a 400 from the control plane
|
|
1477
788
|
// AFTER clearing the charge gate. The server stays authoritative; this is
|
|
1478
789
|
// only a friendlier, earlier copy of the same rule.
|
|
1479
790
|
if (provider === "claude" && authMode === "apiKey") {
|
|
1480
|
-
console.error(chalk.red(
|
|
791
|
+
console.error(chalk.red("The claude provider is subscription-only — drop --auth-mode apiKey."));
|
|
1481
792
|
process.exit(1);
|
|
1482
793
|
}
|
|
1483
794
|
// Resolve the API key from the environment (never from a flag value) when
|
|
@@ -1498,9 +809,6 @@ export function registerAgentsCommand(program) {
|
|
|
1498
809
|
}
|
|
1499
810
|
const token = (await resolveVaultCredential()).token;
|
|
1500
811
|
const companyUid = await getCompanyUid(token, companyOf(this));
|
|
1501
|
-
if (opts.model !== undefined) {
|
|
1502
|
-
await validateAgentModelOption(token, provider, opts.model);
|
|
1503
|
-
}
|
|
1504
812
|
const idempotencyKey = `hq-cli-${randomUUID()}`;
|
|
1505
813
|
const sizeKey = parseEnumOption(opts.size, VALID_AGENT_SIZE_KEYS, "--size");
|
|
1506
814
|
const shouldChooseInteractively = !sizeKey && process.stdin.isTTY === true;
|
|
@@ -1510,12 +818,13 @@ export function registerAgentsCommand(program) {
|
|
|
1510
818
|
: shouldChooseInteractively
|
|
1511
819
|
? await promptForAgentCreateSize(createOptions)
|
|
1512
820
|
: requireDefaultAgentCreateSize(createOptions);
|
|
1513
|
-
if (!shouldChooseInteractively
|
|
821
|
+
if (!shouldChooseInteractively) {
|
|
1514
822
|
console.log(chalk.dim(formatAgentCreateSize(quotedSize)));
|
|
1515
823
|
}
|
|
1516
824
|
// Every path confirms hq-pro's company-specific quote. Omission still
|
|
1517
825
|
// leaves the POST size implicit, preserving the server-side default.
|
|
1518
|
-
confirmAgentCreateQuoteOrExit(quotedSize, opts.yes
|
|
826
|
+
confirmAgentCreateQuoteOrExit(quotedSize, opts.yes);
|
|
827
|
+
const slug = opts.slug ?? slugifyAgentName(name);
|
|
1519
828
|
try {
|
|
1520
829
|
const result = await provisionAgent(token, {
|
|
1521
830
|
companyUid,
|
|
@@ -1523,12 +832,7 @@ export function registerAgentsCommand(program) {
|
|
|
1523
832
|
slug,
|
|
1524
833
|
codexAuthMode: authMode,
|
|
1525
834
|
...(provider ? { provider } : {}),
|
|
1526
|
-
...(opts.model ? { codexModel: opts.model } : {}),
|
|
1527
835
|
...(codexApiKey ? { codexApiKey } : {}),
|
|
1528
|
-
...(slackTokens ? { slackBotToken: slackTokens.botToken } : {}),
|
|
1529
|
-
...(slackTokens?.appToken
|
|
1530
|
-
? { slackAppToken: slackTokens.appToken }
|
|
1531
|
-
: {}),
|
|
1532
836
|
idempotencyKey,
|
|
1533
837
|
...(opts.title ? { title: opts.title } : {}),
|
|
1534
838
|
...(opts.description ? { description: opts.description } : {}),
|
|
@@ -1544,79 +848,11 @@ export function registerAgentsCommand(program) {
|
|
|
1544
848
|
quoteCatalogVersion: createOptions.catalogVersion,
|
|
1545
849
|
surface: CLI_AGENT_CREATE_SURFACE,
|
|
1546
850
|
});
|
|
1547
|
-
const
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
opts.model?.toLowerCase().startsWith("claude-") &&
|
|
1551
|
-
identity
|
|
1552
|
-
? {
|
|
1553
|
-
consoleUrl: agentConsoleResolveUrl(identity.uid) ?? null,
|
|
1554
|
-
loginCodeCommand: `hq agents login-code ${identity.uid}`,
|
|
1555
|
-
}
|
|
1556
|
-
: undefined;
|
|
1557
|
-
const status = identity
|
|
1558
|
-
? await getAgentStatus(token, identity.uid)
|
|
1559
|
-
: null;
|
|
1560
|
-
const actions = status
|
|
1561
|
-
? pendingOperatorActions(status, await consoleCompanySlug(token, status, companyOf(this)))
|
|
1562
|
-
: [];
|
|
1563
|
-
const slackInstall = actions.find((action) => action.type === "slack-install");
|
|
1564
|
-
if (opts.json) {
|
|
1565
|
-
console.log(JSON.stringify({
|
|
1566
|
-
...result,
|
|
1567
|
-
...(actions.length > 0
|
|
1568
|
-
? { pendingActions: pendingActionsJson(actions) }
|
|
1569
|
-
: {}),
|
|
1570
|
-
...(slackInstall?.url
|
|
1571
|
-
? {
|
|
1572
|
-
slackInstallPending: true,
|
|
1573
|
-
slackInstallUrl: slackInstall.url,
|
|
1574
|
-
}
|
|
1575
|
-
: {}),
|
|
1576
|
-
...(claudeSignIn ? { claudeSignIn } : {}),
|
|
1577
|
-
}));
|
|
1578
|
-
}
|
|
1579
|
-
else {
|
|
1580
|
-
console.log(chalk.green(`Provisioning started for agent "${name}".`));
|
|
1581
|
-
if (claudeSignIn) {
|
|
1582
|
-
if (claudeSignIn.consoleUrl) {
|
|
1583
|
-
console.log(chalk.yellow(`To sign in, open ${claudeSignIn.consoleUrl}, authorize Claude, then paste the code on that page.`));
|
|
1584
|
-
}
|
|
1585
|
-
else {
|
|
1586
|
-
console.log(chalk.yellow("The console URL for this control plane is unknown. Set HQ_CONSOLE_URL to configure it."));
|
|
1587
|
-
}
|
|
1588
|
-
console.log(chalk.dim(`A human CLI session can also submit the code with: ${claudeSignIn.loginCodeCommand}`));
|
|
1589
|
-
}
|
|
1590
|
-
if (actions.length > 0) {
|
|
1591
|
-
printPendingOperatorActions(identity?.slug ?? null, actions);
|
|
1592
|
-
}
|
|
1593
|
-
else {
|
|
1594
|
-
console.log(chalk.dim(`Track setup: hq agents status ${identity?.slug ?? slug} --company <slug>`));
|
|
1595
|
-
}
|
|
1596
|
-
}
|
|
851
|
+
const uid = typeof result.uid === "string" ? result.uid : slug;
|
|
852
|
+
console.log(chalk.green(`Provisioning started for agent "${name}".`));
|
|
853
|
+
console.log(chalk.dim(`Track setup: hq agents status ${uid} --company <slug>`));
|
|
1597
854
|
}
|
|
1598
855
|
catch (err) {
|
|
1599
|
-
if (provider === "claude" &&
|
|
1600
|
-
err instanceof AgentsHttpError &&
|
|
1601
|
-
err.code === "LEGACY_MANAGED_PROVIDER_RETIRED") {
|
|
1602
|
-
throw new Error(`${err.message}\n\n${claudeProvisionGuidance()}`);
|
|
1603
|
-
}
|
|
1604
|
-
if (err instanceof AgentsHttpError &&
|
|
1605
|
-
err.status === 403 &&
|
|
1606
|
-
err.code === "AGENT_PLAN_LIMIT") {
|
|
1607
|
-
if (!err.agentCreatePlanLimit) {
|
|
1608
|
-
throw new Error("HQ Pro returned an unrecognized agent payment-required response.");
|
|
1609
|
-
}
|
|
1610
|
-
await surfaceAgentCreatePlanLimit(err.agentCreatePlanLimit, {
|
|
1611
|
-
...opts,
|
|
1612
|
-
companyUid,
|
|
1613
|
-
});
|
|
1614
|
-
// Keep the payment-required status through normal CLI teardown.
|
|
1615
|
-
// Unlike process.exit(), this is testable and cannot be caught by
|
|
1616
|
-
// this action's outer error boundary as a generic failure.
|
|
1617
|
-
process.exitCode = AGENT_CREATE_PAYMENT_REQUIRED_EXIT_CODE;
|
|
1618
|
-
return;
|
|
1619
|
-
}
|
|
1620
856
|
// No card on file → surface the shareable payment link instead of an
|
|
1621
857
|
// opaque 402, then exit non-zero so scripts can react.
|
|
1622
858
|
if (err instanceof AgentsHttpError &&
|
|
@@ -1632,32 +868,6 @@ export function registerAgentsCommand(program) {
|
|
|
1632
868
|
fail(err);
|
|
1633
869
|
}
|
|
1634
870
|
});
|
|
1635
|
-
agents
|
|
1636
|
-
.command("login-code <agentUid> [code]")
|
|
1637
|
-
.description("Submit a Claude subscription sign-in code for an agent")
|
|
1638
|
-
.action(async (agentUid, codeArg) => {
|
|
1639
|
-
let code = "";
|
|
1640
|
-
try {
|
|
1641
|
-
code = await readLoginCode(codeArg);
|
|
1642
|
-
const token = (await resolveVaultCredential()).token;
|
|
1643
|
-
await submitAgentLoginCode(token, agentUid, code);
|
|
1644
|
-
console.log(chalk.green(`Sent the Claude sign-in code to agent ${agentUid}.`));
|
|
1645
|
-
}
|
|
1646
|
-
catch (err) {
|
|
1647
|
-
if (err instanceof AgentsHttpError &&
|
|
1648
|
-
err.status === 403 &&
|
|
1649
|
-
err.code === "OUTPOST_ACCOUNT_MANAGEMENT_FORBIDDEN") {
|
|
1650
|
-
const consoleUrl = agentConsoleResolveUrl(agentUid);
|
|
1651
|
-
console.error(chalk.yellow(consoleUrl
|
|
1652
|
-
? `A person must paste this code in the agent console: ${consoleUrl}`
|
|
1653
|
-
: "A person must paste this code in the agent console. Set HQ_CONSOLE_URL to configure it for this control plane."));
|
|
1654
|
-
process.exit(1);
|
|
1655
|
-
}
|
|
1656
|
-
const detail = err instanceof Error ? err.message : String(err);
|
|
1657
|
-
console.error(chalk.red(`Could not submit Claude sign-in code: ${redactLoginCode(detail, code)}`));
|
|
1658
|
-
process.exit(1);
|
|
1659
|
-
}
|
|
1660
|
-
});
|
|
1661
871
|
agents
|
|
1662
872
|
.command("list")
|
|
1663
873
|
.description("List the company's agents")
|
|
@@ -1691,7 +901,7 @@ export function registerAgentsCommand(program) {
|
|
|
1691
901
|
}
|
|
1692
902
|
const nameW = Math.max(4, ...roster.map((a) => (a.name ?? "").length));
|
|
1693
903
|
const slugW = Math.max(4, ...roster.map((a) => (a.slug ?? "").length));
|
|
1694
|
-
const statusW = Math.max(6, ...roster.map((a) =>
|
|
904
|
+
const statusW = Math.max(6, ...roster.map((a) => (a.agentStatus ?? "").length));
|
|
1695
905
|
const modelW = Math.max(5, ...roster.map((a) => (a.codexModel ?? "").length));
|
|
1696
906
|
console.log(chalk.bold([
|
|
1697
907
|
"NAME".padEnd(nameW),
|
|
@@ -1704,7 +914,7 @@ export function registerAgentsCommand(program) {
|
|
|
1704
914
|
console.log([
|
|
1705
915
|
(a.name ?? "").padEnd(nameW),
|
|
1706
916
|
(a.slug ?? "").padEnd(slugW),
|
|
1707
|
-
|
|
917
|
+
(a.agentStatus ?? "").padEnd(statusW),
|
|
1708
918
|
(a.codexModel ?? "").padEnd(modelW),
|
|
1709
919
|
a.uid,
|
|
1710
920
|
].join(" "));
|
|
@@ -1715,28 +925,16 @@ export function registerAgentsCommand(program) {
|
|
|
1715
925
|
}
|
|
1716
926
|
});
|
|
1717
927
|
agents
|
|
1718
|
-
.command("status <
|
|
928
|
+
.command("status <agentUid>")
|
|
1719
929
|
.description("Show an agent's setup state and runtime detail")
|
|
1720
930
|
.option("--company <slug>", "Company slug (resolves to companyUid)")
|
|
1721
931
|
.option("--json", "Emit raw JSON")
|
|
1722
|
-
.action(async function (
|
|
932
|
+
.action(async function (agentUid, opts) {
|
|
1723
933
|
try {
|
|
1724
934
|
const token = (await resolveVaultCredential()).token;
|
|
1725
|
-
const agentUid = await resolveAgentUid(token, agent, companyOf(this));
|
|
1726
935
|
const status = await getAgentStatus(token, agentUid);
|
|
1727
|
-
const actions = pendingOperatorActions(status, await consoleCompanySlug(token, status, companyOf(this)));
|
|
1728
936
|
if (opts.json) {
|
|
1729
|
-
process.stdout.write(JSON.stringify(
|
|
1730
|
-
...status,
|
|
1731
|
-
...(actions.length > 0
|
|
1732
|
-
? { pendingActions: pendingActionsJson(actions) }
|
|
1733
|
-
: {}),
|
|
1734
|
-
}, null, 2) + "\n");
|
|
1735
|
-
return;
|
|
1736
|
-
}
|
|
1737
|
-
if (actions.length > 0) {
|
|
1738
|
-
printPendingOperatorActions(statusAgentSlug(status) ??
|
|
1739
|
-
(AGENT_UID_PATTERN.test(agent.trim()) ? null : agent.trim()), actions);
|
|
937
|
+
process.stdout.write(JSON.stringify(status, null, 2) + "\n");
|
|
1740
938
|
return;
|
|
1741
939
|
}
|
|
1742
940
|
// Pretty but faithful: dump the top-level fields as key: value.
|
|
@@ -1806,10 +1004,9 @@ export function registerAgentsCommand(program) {
|
|
|
1806
1004
|
});
|
|
1807
1005
|
agents
|
|
1808
1006
|
.command("config <agentUid>")
|
|
1809
|
-
.alias("update")
|
|
1810
1007
|
.description("Update an agent's runtime config (model / reasoning effort / service tier), or migrate its brain/runtime provider with --provider (DESTRUCTIVE: terminates + reprovisions the box)")
|
|
1811
1008
|
.option("--company <slug>", "Company slug (resolves to companyUid)")
|
|
1812
|
-
.option("--model <model>", "
|
|
1009
|
+
.option("--model <model>", "Codex model id")
|
|
1813
1010
|
.option("--effort <effort>", "Reasoning effort: minimal | low | medium | high | xhigh")
|
|
1814
1011
|
.option("--tier <tier>", "Service tier (speed): default | priority")
|
|
1815
1012
|
.option("--provider <provider>", "Migrate brain/runtime provider (codex | grok | claude | agents-v2). DESTRUCTIVE: terminates and reprovisions the box; requires --model and --yes.")
|
|
@@ -1878,9 +1075,6 @@ export function registerAgentsCommand(program) {
|
|
|
1878
1075
|
process.exit(1);
|
|
1879
1076
|
}
|
|
1880
1077
|
const token = (await resolveVaultCredential()).token;
|
|
1881
|
-
if (opts.model !== undefined) {
|
|
1882
|
-
await validateAgentModelOption(token, opts.provider?.trim().toLowerCase(), opts.model);
|
|
1883
|
-
}
|
|
1884
1078
|
const result = await patchAgentRuntimeConfig(token, agentUid, patch);
|
|
1885
1079
|
if (opts.json) {
|
|
1886
1080
|
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
@@ -1900,16 +1094,8 @@ export function registerAgentsCommand(program) {
|
|
|
1900
1094
|
.action(async function (agentUid) {
|
|
1901
1095
|
try {
|
|
1902
1096
|
const token = (await resolveVaultCredential()).token;
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
const successMessage = action === "start"
|
|
1906
|
-
? `Started agent ${agentUid}.`
|
|
1907
|
-
: runtimeStatus === "terminated"
|
|
1908
|
-
? `Stopped agent ${agentUid}.`
|
|
1909
|
-
: typeof runtimeStatus === "string"
|
|
1910
|
-
? `Stop accepted for agent ${agentUid} (status: ${runtimeStatus}).`
|
|
1911
|
-
: `Stop accepted for agent ${agentUid}.`;
|
|
1912
|
-
console.log(chalk.green(successMessage));
|
|
1097
|
+
await startStopAgent(token, agentUid, action);
|
|
1098
|
+
console.log(chalk.green(`${action === "start" ? "Started" : "Stopped"} agent ${agentUid}.`));
|
|
1913
1099
|
}
|
|
1914
1100
|
catch (err) {
|
|
1915
1101
|
fail(err);
|
|
@@ -1936,7 +1122,6 @@ export function registerAgentsCommand(program) {
|
|
|
1936
1122
|
.description("Deprovision (permanently tear down) an agent")
|
|
1937
1123
|
.option("--company <slug>", "Company slug (resolves to companyUid)")
|
|
1938
1124
|
.option("--yes", "Confirm the irreversible teardown (required)")
|
|
1939
|
-
.option("--confirm-destroy-agents-v2 <instance-id>", "Confirm agents-v2 teardown by naming the live EC2 instance ID")
|
|
1940
1125
|
.action(async function (agentUid, opts) {
|
|
1941
1126
|
if (!opts.yes) {
|
|
1942
1127
|
console.error(chalk.yellow(`This will permanently deprovision agent ${agentUid} and tear down its ` +
|
|
@@ -1946,13 +1131,7 @@ export function registerAgentsCommand(program) {
|
|
|
1946
1131
|
}
|
|
1947
1132
|
try {
|
|
1948
1133
|
const token = (await resolveVaultCredential()).token;
|
|
1949
|
-
const
|
|
1950
|
-
if (recordValue(status.agent)?.runtimeKind === "external") {
|
|
1951
|
-
await revokeAgent(token, agentUid, true);
|
|
1952
|
-
console.log(chalk.green(`Revoked and removed external agent ${agentUid}.`));
|
|
1953
|
-
return;
|
|
1954
|
-
}
|
|
1955
|
-
const result = await deprovisionAgent(token, agentUid, opts.confirmDestroyAgentsV2);
|
|
1134
|
+
const result = await deprovisionAgent(token, agentUid);
|
|
1956
1135
|
if (result.terminal === false) {
|
|
1957
1136
|
console.log(chalk.yellow(`Deprovision in progress for agent ${agentUid} (not yet fully torn down — re-run to continue).`));
|
|
1958
1137
|
}
|
|
@@ -1964,56 +1143,12 @@ export function registerAgentsCommand(program) {
|
|
|
1964
1143
|
fail(err);
|
|
1965
1144
|
}
|
|
1966
1145
|
});
|
|
1967
|
-
agents
|
|
1968
|
-
.command("rotate <agentUid>")
|
|
1969
|
-
.description("Issue a fresh enrollment code for an external agent (old secret + host key stop minting)")
|
|
1970
|
-
.option("--company <slug>", "Company slug (resolves to companyUid)")
|
|
1971
|
-
.option("--json", "Emit raw JSON (code included — pipe carefully)")
|
|
1972
|
-
.action(async function (agentUid, opts) {
|
|
1973
|
-
try {
|
|
1974
|
-
const token = (await resolveVaultCredential()).token;
|
|
1975
|
-
const result = await rotateAgent(token, agentUid);
|
|
1976
|
-
if (opts.json) {
|
|
1977
|
-
console.log(JSON.stringify(result, null, 2));
|
|
1978
|
-
return;
|
|
1979
|
-
}
|
|
1980
|
-
for (const line of formatRotateOutput(result))
|
|
1981
|
-
console.log(line);
|
|
1982
|
-
}
|
|
1983
|
-
catch (err) {
|
|
1984
|
-
fail(err);
|
|
1985
|
-
}
|
|
1986
|
-
});
|
|
1987
|
-
agents
|
|
1988
|
-
.command("revoke <agentUid>")
|
|
1989
|
-
.description("Revoke an external agent: disable its login and drop it from the team")
|
|
1990
|
-
.option("--company <slug>", "Company slug (resolves to companyUid)")
|
|
1991
|
-
.option("--remove", "Also delete the agent entity (it disappears from the roster)")
|
|
1992
|
-
.option("--yes", "Confirm the revoke (required)")
|
|
1993
|
-
.action(async function (agentUid, opts) {
|
|
1994
|
-
if (!opts.yes) {
|
|
1995
|
-
console.error(chalk.yellow(`This will revoke agent ${agentUid}: its credentials stop working immediately and it ` +
|
|
1996
|
-
`leaves the team${opts.remove ? ", and the agent record is deleted" : ""}. ` +
|
|
1997
|
-
`Re-run with --yes to confirm: hq agents revoke ${agentUid}${opts.remove ? " --remove" : ""} --yes`));
|
|
1998
|
-
process.exit(1);
|
|
1999
|
-
}
|
|
2000
|
-
try {
|
|
2001
|
-
const token = (await resolveVaultCredential()).token;
|
|
2002
|
-
const result = await revokeAgent(token, agentUid, opts.remove === true);
|
|
2003
|
-
console.log(chalk.green(result.removed
|
|
2004
|
-
? `Revoked and removed agent ${agentUid}.`
|
|
2005
|
-
: `Revoked agent ${agentUid}. Its next mint will be refused (401).`));
|
|
2006
|
-
}
|
|
2007
|
-
catch (err) {
|
|
2008
|
-
fail(err);
|
|
2009
|
-
}
|
|
2010
|
-
});
|
|
2011
1146
|
// Off-box job control (US-003). Nested group so `hq agents jobs --help`
|
|
2012
|
-
// lists list|pause|
|
|
1147
|
+
// lists list|pause|cancel. Same vaultApiFetch + person JWT as the rest of
|
|
2013
1148
|
// this file; keyed HQ_API_KEY rewrites /v1/agents → /v1/keys/agents.
|
|
2014
1149
|
const jobs = agents
|
|
2015
1150
|
.command("jobs")
|
|
2016
|
-
.description("List, pause,
|
|
1151
|
+
.description("List, pause, or cancel an agent's scheduled jobs");
|
|
2017
1152
|
jobs
|
|
2018
1153
|
.command("list <agentUid>")
|
|
2019
1154
|
.description("List an agent's scheduled jobs")
|
|
@@ -2051,20 +1186,6 @@ export function registerAgentsCommand(program) {
|
|
|
2051
1186
|
failJobs(err, jobId);
|
|
2052
1187
|
}
|
|
2053
1188
|
});
|
|
2054
|
-
jobs
|
|
2055
|
-
.command("resume <agentUid> <jobId>")
|
|
2056
|
-
.description("Resume a paused job's schedule")
|
|
2057
|
-
.option("--company <slug>", "Company slug (to resolve an agent by name/slug)")
|
|
2058
|
-
.action(async function (agentUid, jobId) {
|
|
2059
|
-
const { token, targetUid } = await resolveJobsTargetOrExit(agentUid, companyOf(this));
|
|
2060
|
-
try {
|
|
2061
|
-
const result = await resumeAgentJob(token, targetUid, jobId);
|
|
2062
|
-
console.log(chalk.green(formatResumeResult(result)));
|
|
2063
|
-
}
|
|
2064
|
-
catch (err) {
|
|
2065
|
-
failJobs(err, jobId, "resume");
|
|
2066
|
-
}
|
|
2067
|
-
});
|
|
2068
1189
|
jobs
|
|
2069
1190
|
.command("cancel <agentUid> <jobId>")
|
|
2070
1191
|
.description("Cancel a job and delete its schedule")
|