@indigoai-us/hq-cli 5.312.2-beta.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 -4293
- 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 -358
- package/dist/commands/company-transfer.d.ts +28 -4
- package/dist/commands/company-transfer.js +49 -5
- package/dist/commands/company.js +3 -66
- 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 -270
- 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 -80
- 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 -12
- 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 +2 -3
- 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 -51
- package/dist/lib/mesh/live/daemon/doctor.js +6 -180
- 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 -10
- 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 +1 -14
- package/dist/lib/work-context/outbox.js +1 -87
- package/dist/lib/work-context/reconcile.d.ts +0 -15
- package/dist/lib/work-context/reconcile.js +25 -380
- 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 -12
- package/dist/main.js +73 -266
- 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 +9 -2
- package/dist/utils/pack-contributions.js +43 -6
- 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.js +1 -2
- package/dist/utils/run-bundled-script.d.ts +0 -6
- package/dist/utils/run-bundled-script.js +4 -117
- 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/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/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/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 -10655
- package/dist/command-catalog.generated.js +0 -13737
- 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/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-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 -12
- package/dist/commands/core-knowledge-prefs.js +0 -137
- 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-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-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-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 -5
- 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 -934
- 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 -1004
- 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 -561
- 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 -8843
- 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 -84
- package/dist/fast-scaffold.js +0 -353
- 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 -91
- package/dist/lib/lanes/config.js +0 -592
- 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/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 -13
- package/dist/lib/lanes/flag-keys.js +0 -13
- package/dist/lib/lanes/grants.d.ts +0 -29
- package/dist/lib/lanes/grants.js +0 -166
- package/dist/lib/lanes/hire-grant-dispatch.d.ts +0 -29
- package/dist/lib/lanes/hire-grant-dispatch.js +0 -316
- 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 -155
- package/dist/lib/lanes/reconcile.js +0 -3193
- package/dist/lib/lanes/registry-flag.d.ts +0 -29
- package/dist/lib/lanes/registry-flag.js +0 -139
- 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 -350
- package/dist/lib/lanes/spawn.js +0 -2643
- 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 -1811
- 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 -1020
- package/dist/lib/lanes/types.js +0 -417
- 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/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 -32
- package/dist/lib/search-index/embed-lock.js +0 -286
- 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/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/cloud.js
CHANGED
|
@@ -16,16 +16,10 @@ import { isAccessDeniedError, accessDeniedKeyOf, formatAccessDenied, } from "../
|
|
|
16
16
|
import chalk from "chalk";
|
|
17
17
|
import * as fs from "fs";
|
|
18
18
|
import * as path from "path";
|
|
19
|
-
import { share, sync, getStateDir, listJournals, VaultClient, computePersonalVaultPaths, PERSONAL_VAULT_JOURNAL_SLUG, resolvePullScope, syncDoctor, } from "@indigoai-us/hq-cloud";
|
|
19
|
+
import { share, sync, getStateDir, listJournals, loadCachedTokens, VaultClient, computePersonalVaultPaths, PERSONAL_VAULT_JOURNAL_SLUG, resolvePullScope, syncDoctor, } from "@indigoai-us/hq-cloud";
|
|
20
20
|
import { DEFAULT_HQ_ROOT, ensureCognitoToken, buildVaultConfig, } from "../utils/cognito-session.js";
|
|
21
|
-
import { resolveUploadAuthor } from "../utils/upload-author.js";
|
|
22
21
|
import { companyFolderExceedsThreshold, emitNarrowHint, isStrictRefusal, resolveBannerLevel, resolveNarrowHintPresentationLevel, resolveNarrowHintMinBytes, } from "../lib/narrow-hint-banner.js";
|
|
23
22
|
import { beginSyncHealthReport, } from "../utils/client-health.js";
|
|
24
|
-
import { recordFirstWorkBearingSync } from "../lib/first-sync-next-step.js";
|
|
25
|
-
import { createPlanLimitRefusalTracker, describeRefusedCount, describeRefusedFiles, mergePlanLimitRefusals, renderPlanLimitRefusalLines, trackingProgressRecorder, } from "../lib/billing/plan-limit-refusals.js";
|
|
26
|
-
import { formatPlanGateError, planGateErrorFromVaultError, } from "../utils/plan-gate-error.js";
|
|
27
|
-
import { personalTargetedPushPathsEnabled } from "./personal-targeted-push-flag.js";
|
|
28
|
-
import { resolveExplicitPersonalPushPaths } from "./personal-targeted-push-paths.js";
|
|
29
23
|
/**
|
|
30
24
|
* Terminal-failure signal for the sync fanout runners. The runners
|
|
31
25
|
* (`runPushAll` / `runPullAll` / `runPullPersonal` / `runNowSingle` /
|
|
@@ -39,41 +33,18 @@ import { resolveExplicitPersonalPushPaths } from "./personal-targeted-push-paths
|
|
|
39
33
|
*/
|
|
40
34
|
export class SyncExitError extends Error {
|
|
41
35
|
code;
|
|
42
|
-
|
|
43
|
-
* The client-health outcome to record for this exit. A run whose only
|
|
44
|
-
* problem was a plan-limit refusal exits non-zero (it did not upload what
|
|
45
|
-
* was asked) but is not a sync failure: the engine worked and the refusal
|
|
46
|
-
* is plan state, so it must not count toward `consecutiveFailures`.
|
|
47
|
-
*/
|
|
48
|
-
health;
|
|
49
|
-
constructor(code, opts = {}) {
|
|
36
|
+
constructor(code) {
|
|
50
37
|
super(`sync command exit ${code}`);
|
|
51
38
|
this.code = code;
|
|
52
39
|
this.name = "SyncExitError";
|
|
53
|
-
this.health = opts.health ?? "failed";
|
|
54
40
|
}
|
|
55
41
|
}
|
|
56
|
-
async function ensureSyncCognitoToken() {
|
|
57
|
-
return ensureCognitoToken({
|
|
58
|
-
interactive: process.stdin.isTTY === true && process.stdout.isTTY === true,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
42
|
/**
|
|
62
43
|
* Preserve the vault's typed write-scope refusal at the CLI boundary. This is
|
|
63
44
|
* deliberately duck-typed so hq-cli remains compatible while hq-cloud and the
|
|
64
45
|
* CLI are released independently.
|
|
65
46
|
*/
|
|
66
47
|
export function formatSyncFailure(err) {
|
|
67
|
-
// A plan-limit refusal the runner threw (a 402 on the whole request) renders
|
|
68
|
-
// with the same reason, fix options and upgrade link as every other refusal.
|
|
69
|
-
const planGate = planGateErrorFromVaultError(err);
|
|
70
|
-
if (planGate) {
|
|
71
|
-
const refusedPath = typeof err.path === "string"
|
|
72
|
-
? err.path
|
|
73
|
-
: undefined;
|
|
74
|
-
return (formatPlanGateError(planGate) +
|
|
75
|
-
(refusedPath ? `\nNot uploaded: ${refusedPath}` : ""));
|
|
76
|
-
}
|
|
77
48
|
if (isAccessDeniedError(err)) {
|
|
78
49
|
const key = accessDeniedKeyOf(err);
|
|
79
50
|
const base = err instanceof Error ? err.message : String(err);
|
|
@@ -119,12 +90,7 @@ export async function withSyncHealthReport(run) {
|
|
|
119
90
|
return result;
|
|
120
91
|
}
|
|
121
92
|
catch (err) {
|
|
122
|
-
|
|
123
|
-
await health.succeeded();
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
await health.failed();
|
|
127
|
-
}
|
|
93
|
+
await health.failed();
|
|
128
94
|
if (err instanceof SyncExitError)
|
|
129
95
|
process.exit(err.code);
|
|
130
96
|
throw err;
|
|
@@ -149,39 +115,11 @@ export function scopeExcludedWarning(count) {
|
|
|
149
115
|
* dropped files — helps debug ACL vs scope-excluded mismatches (feedback_7e9c535e).
|
|
150
116
|
*/
|
|
151
117
|
export function scopeExcludedPrefixDetail(prefixSet) {
|
|
152
|
-
|
|
153
|
-
// one, and scopeExcludedLines' primary line already says so.
|
|
154
|
-
if (prefixSet === undefined)
|
|
155
|
-
return null;
|
|
156
|
-
if (prefixSet.length === 0) {
|
|
118
|
+
if (!prefixSet || prefixSet.length === 0) {
|
|
157
119
|
return " Granted write prefixes: (none — shared-mode membership with no explicit grants)";
|
|
158
120
|
}
|
|
159
121
|
return ` Granted write prefixes: ${prefixSet.join(", ")}`;
|
|
160
122
|
}
|
|
161
|
-
/**
|
|
162
|
-
* Every warning line for a push that dropped files, shared by `push`, `now`
|
|
163
|
-
* and `push --all`. With a client prefix scope the files fell outside the
|
|
164
|
-
* caller's write prefixes; without one (prefixSet undefined) the server
|
|
165
|
-
* refused them path by path — typically another member's child in a private
|
|
166
|
-
* folder foo/ — and grant advice would point the reader the wrong way.
|
|
167
|
-
*/
|
|
168
|
-
export function scopeExcludedLines(count, prefixSet) {
|
|
169
|
-
if (count <= 0)
|
|
170
|
-
return [];
|
|
171
|
-
if (prefixSet === undefined) {
|
|
172
|
-
return [
|
|
173
|
-
`⚠ ${count} file(s) were NOT uploaded — the server refused them. ` +
|
|
174
|
-
`A common cause is a file someone else created in a private folder ` +
|
|
175
|
-
`(foo/): only its creator can change it. They were skipped, not ` +
|
|
176
|
-
`synced. Re-run with --json to list them.`,
|
|
177
|
-
];
|
|
178
|
-
}
|
|
179
|
-
const lines = [scopeExcludedWarning(count)];
|
|
180
|
-
const detail = scopeExcludedPrefixDetail(prefixSet);
|
|
181
|
-
if (detail)
|
|
182
|
-
lines.push(detail);
|
|
183
|
-
return lines;
|
|
184
|
-
}
|
|
185
123
|
/**
|
|
186
124
|
* Resolve the `propagateDeletePolicy` for share() calls.
|
|
187
125
|
*
|
|
@@ -450,7 +388,6 @@ export async function pushAll(options, deps) {
|
|
|
450
388
|
companyUid: m.companyUid,
|
|
451
389
|
shareOptions: {
|
|
452
390
|
company: m.companyUid,
|
|
453
|
-
targetSlug: slug,
|
|
454
391
|
hqRoot: options.hqRoot,
|
|
455
392
|
paths: [path.join(options.hqRoot, "companies", slug)],
|
|
456
393
|
skipUnchanged: true,
|
|
@@ -508,13 +445,7 @@ export async function pushAll(options, deps) {
|
|
|
508
445
|
result.bytesUploaded += r.bytesUploaded;
|
|
509
446
|
result.filesDeleted += r.filesDeleted;
|
|
510
447
|
result.filesExcludedByScope += r.filesExcludedByScope;
|
|
511
|
-
result.perCompany.push({
|
|
512
|
-
slug: entry.slug,
|
|
513
|
-
result: r,
|
|
514
|
-
...(entry.shareOptions.prefixSet !== undefined
|
|
515
|
-
? { prefixSet: entry.shareOptions.prefixSet }
|
|
516
|
-
: {}),
|
|
517
|
-
});
|
|
448
|
+
result.perCompany.push({ slug: entry.slug, result: r });
|
|
518
449
|
}
|
|
519
450
|
catch (err) {
|
|
520
451
|
const message = formatSyncFailure(err);
|
|
@@ -524,24 +455,6 @@ export async function pushAll(options, deps) {
|
|
|
524
455
|
}
|
|
525
456
|
return result;
|
|
526
457
|
}
|
|
527
|
-
/**
|
|
528
|
-
* Credentials `hq sync push` hands to share(). A pre-vended EntityContext
|
|
529
|
-
* (AppBar's `--creds-from-stdin` first push) cannot write under private
|
|
530
|
-
* folders directly, so it travels with the caller's vault config as
|
|
531
|
-
* `privateFolderVaultConfig`. share() takes exactly one of `vaultConfig` /
|
|
532
|
-
* `entityContext`.
|
|
533
|
-
*/
|
|
534
|
-
export function pushShareCredentials(input) {
|
|
535
|
-
if (input.entityContext) {
|
|
536
|
-
return {
|
|
537
|
-
entityContext: input.entityContext,
|
|
538
|
-
...(input.scopeVaultConfig
|
|
539
|
-
? { privateFolderVaultConfig: input.scopeVaultConfig }
|
|
540
|
-
: {}),
|
|
541
|
-
};
|
|
542
|
-
}
|
|
543
|
-
return input.vaultConfig ? { vaultConfig: input.vaultConfig } : {};
|
|
544
|
-
}
|
|
545
458
|
/**
|
|
546
459
|
* Resolve the canonical person entity UID for the logged-in user. Used by
|
|
547
460
|
* `hq sync {push,pull,now} --personal` to target the personal vault without
|
|
@@ -559,15 +472,21 @@ export async function resolveCanonicalPersonUid(vaultClient) {
|
|
|
559
472
|
return pick.uid;
|
|
560
473
|
}
|
|
561
474
|
/**
|
|
562
|
-
*
|
|
563
|
-
*
|
|
564
|
-
* `
|
|
565
|
-
*
|
|
566
|
-
*
|
|
567
|
-
*
|
|
475
|
+
* Refuse `hq sync push --personal <path>` — the combination silently
|
|
476
|
+
* bypasses `PERSONAL_VAULT_EXCLUDED_TOP_LEVEL` (which is only applied by
|
|
477
|
+
* `computePersonalVaultPaths`), risking cross-scope upload of `companies/`,
|
|
478
|
+
* `repos/`, `workspace/`, or `.git/` content to the personal vault. Real
|
|
479
|
+
* incident (2026-05-21): a single command uploaded 196 `companies/{slug}/**`
|
|
480
|
+
* objects to a personal vault before being killed. Cleanup required a
|
|
481
|
+
* hand-rolled S3 sweep. Closes hq-cli#25.
|
|
482
|
+
*
|
|
483
|
+
* Refusal — not silent filtering — is intentional: explicit is better than
|
|
484
|
+
* implicit guesswork, and the legitimate "I want to push a subset of my
|
|
485
|
+
* personal vault" use case has a clean workaround (drop `--personal`, the
|
|
486
|
+
* subset upload targets the active company via standard semantics).
|
|
568
487
|
*/
|
|
569
|
-
export function assertNoPersonalPositionalPaths(opts, paths
|
|
570
|
-
if (opts.personal && paths && paths.length > 0
|
|
488
|
+
export function assertNoPersonalPositionalPaths(opts, paths) {
|
|
489
|
+
if (opts.personal && paths && paths.length > 0) {
|
|
571
490
|
throw new Error("`--personal` cannot be combined with explicit [paths]: " +
|
|
572
491
|
"positional paths bypass the PERSONAL_VAULT_EXCLUDED_TOP_LEVEL " +
|
|
573
492
|
"guard (skips .git/, companies/, repos/, workspace/), risking " +
|
|
@@ -697,32 +616,6 @@ async function resolveCliPullScope(client, companyRef, hqRoot) {
|
|
|
697
616
|
}
|
|
698
617
|
return resolvePullScope(client, companyUid, slug, hqRoot);
|
|
699
618
|
}
|
|
700
|
-
/**
|
|
701
|
-
* The progress-snapshot label share()'s default recorder would use: the
|
|
702
|
-
* target's slug, or null for a personal-vault push. A pre-vended context
|
|
703
|
-
* carries its slug; otherwise the caller's company reference is the best the
|
|
704
|
-
* CLI knows before share() resolves it.
|
|
705
|
-
*/
|
|
706
|
-
function shareProgressCompany(input) {
|
|
707
|
-
if (input.personalMode)
|
|
708
|
-
return null;
|
|
709
|
-
if (input.entityContext) {
|
|
710
|
-
return input.entityContext.uid.startsWith("prs_")
|
|
711
|
-
? null
|
|
712
|
-
: input.entityContext.slug;
|
|
713
|
-
}
|
|
714
|
-
return input.companyRef ?? null;
|
|
715
|
-
}
|
|
716
|
-
/** Only a real slug builds a company billing link; a raw uid does not. */
|
|
717
|
-
function companySlugForBilling(label) {
|
|
718
|
-
return label && !/^(?:cmp|prs)_/.test(label) ? { companySlug: label } : {};
|
|
719
|
-
}
|
|
720
|
-
/** Print one push leg's refusal block under its row. */
|
|
721
|
-
function printPlanLimitRefusal(summary, indent = " ") {
|
|
722
|
-
for (const line of renderPlanLimitRefusalLines(summary, indent)) {
|
|
723
|
-
console.log(chalk.yellow(line));
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
619
|
export function registerCloudCommands(program) {
|
|
727
620
|
program
|
|
728
621
|
.command("push")
|
|
@@ -789,13 +682,7 @@ export function registerCloudCommands(program) {
|
|
|
789
682
|
// the fanout" — wired through to `pushAll.skipPersonal`. Outside
|
|
790
683
|
// `--all` the flag has no effect (logged above as part of the
|
|
791
684
|
// option's help text).
|
|
792
|
-
await withSyncHealthReport(
|
|
793
|
-
const refused = await runPushAll(options.hqRoot, options.message, options.onConflict, options.personal === false);
|
|
794
|
-
// A plan-limit refusal is not a sync failure, but the push did
|
|
795
|
-
// not upload everything it was asked to: exit non-zero.
|
|
796
|
-
if (refused)
|
|
797
|
-
throw new SyncExitError(1, { health: "succeeded" });
|
|
798
|
-
});
|
|
685
|
+
await withSyncHealthReport(() => runPushAll(options.hqRoot, options.message, options.onConflict, options.personal === false));
|
|
799
686
|
return;
|
|
800
687
|
}
|
|
801
688
|
const jsonMode = options.json === true;
|
|
@@ -811,7 +698,6 @@ export function registerCloudCommands(program) {
|
|
|
811
698
|
// Assigned right before the sync engine runs, so option-validation
|
|
812
699
|
// failures never count as a sync attempt (US-003).
|
|
813
700
|
let syncHealth;
|
|
814
|
-
let explicitPersonalPaths;
|
|
815
701
|
try {
|
|
816
702
|
if (options.personal && options.credsFromStdin) {
|
|
817
703
|
throw new Error("`--personal` cannot be combined with --creds-from-stdin: " +
|
|
@@ -820,11 +706,7 @@ export function registerCloudCommands(program) {
|
|
|
820
706
|
"to have already resolved entity + credentials. Pick one.");
|
|
821
707
|
}
|
|
822
708
|
// Closes hq-cli#25 — see `assertNoPersonalPositionalPaths` doc-block.
|
|
823
|
-
|
|
824
|
-
assertNoPersonalPositionalPaths(options, paths, targetedPersonalPathsEnabled);
|
|
825
|
-
if (targetedPersonalPathsEnabled) {
|
|
826
|
-
explicitPersonalPaths = resolveExplicitPersonalPushPaths(options.hqRoot, paths);
|
|
827
|
-
}
|
|
709
|
+
assertNoPersonalPositionalPaths(options, paths);
|
|
828
710
|
log(chalk.bold("\nHQ Sync — Push"));
|
|
829
711
|
log(` HQ root: ${options.hqRoot}`);
|
|
830
712
|
// Resolve credentials. Two paths:
|
|
@@ -833,7 +715,7 @@ export function registerCloudCommands(program) {
|
|
|
833
715
|
// 2. default: vend via cached Cognito session (the human CLI path).
|
|
834
716
|
let entityContext;
|
|
835
717
|
let vaultConfig;
|
|
836
|
-
/** Vault API config for membership/grant scope lookups
|
|
718
|
+
/** Vault API config for membership/grant scope lookups. Set even on the pre-vended `--creds-from-stdin` path — share() accepts entityContext OR vaultConfig, not both. */
|
|
837
719
|
let scopeVaultConfig;
|
|
838
720
|
if (options.credsFromStdin) {
|
|
839
721
|
if (process.stdin.isTTY) {
|
|
@@ -850,11 +732,11 @@ export function registerCloudCommands(program) {
|
|
|
850
732
|
}
|
|
851
733
|
// Upload creds are pre-vended in entityContext, but prefix filtering
|
|
852
734
|
// still needs vault-service membership/grant resolution.
|
|
853
|
-
const accessToken = await
|
|
735
|
+
const accessToken = await ensureCognitoToken();
|
|
854
736
|
scopeVaultConfig = buildVaultConfig(accessToken);
|
|
855
737
|
}
|
|
856
738
|
else {
|
|
857
|
-
const accessToken = await
|
|
739
|
+
const accessToken = await ensureCognitoToken();
|
|
858
740
|
vaultConfig = buildVaultConfig(accessToken);
|
|
859
741
|
scopeVaultConfig = vaultConfig;
|
|
860
742
|
}
|
|
@@ -882,13 +764,11 @@ export function registerCloudCommands(program) {
|
|
|
882
764
|
// Otherwise preserve the historical "default to cwd" semantics so
|
|
883
765
|
// `hq sync push <file>` and bare `hq sync push` from inside the
|
|
884
766
|
// company tree both work as before.
|
|
885
|
-
const targetPaths =
|
|
886
|
-
?
|
|
887
|
-
:
|
|
888
|
-
?
|
|
889
|
-
:
|
|
890
|
-
? computePersonalVaultPaths(options.hqRoot)
|
|
891
|
-
: [process.cwd()];
|
|
767
|
+
const targetPaths = paths && paths.length > 0
|
|
768
|
+
? paths
|
|
769
|
+
: options.personal
|
|
770
|
+
? computePersonalVaultPaths(options.hqRoot)
|
|
771
|
+
: [process.cwd()];
|
|
892
772
|
log(` Company: ${options.personal
|
|
893
773
|
? `(personal: ${targetCompany})`
|
|
894
774
|
: (options.company ?? "(from .hq/config.json or stdin)")}`);
|
|
@@ -905,50 +785,33 @@ export function registerCloudCommands(program) {
|
|
|
905
785
|
// every row renders `—`. Resolved best-effort from the cached
|
|
906
786
|
// idToken — pre-vended `--creds-from-stdin` paths still get author
|
|
907
787
|
// attribution as long as the caller is logged in locally.
|
|
908
|
-
const author =
|
|
788
|
+
const author = resolveUploadAuthorFromCache();
|
|
909
789
|
let pushPrefixSet;
|
|
910
790
|
if (!personalMode && scopeVaultConfig) {
|
|
911
791
|
const scopeClient = new VaultClient(scopeVaultConfig);
|
|
912
792
|
const scope = await resolveCliPullScope(scopeClient, targetCompany, options.hqRoot);
|
|
913
793
|
pushPrefixSet = scope?.prefixSet;
|
|
914
794
|
}
|
|
915
|
-
// Collect plan-limit refusals from the runner's events through the
|
|
916
|
-
// progress-recorder seam, which (unlike onEvent) leaves share()'s own
|
|
917
|
-
// console output untouched. The snapshot label mirrors share()'s
|
|
918
|
-
// default recorder: the target slug, or null for the personal vault.
|
|
919
|
-
const progressCompany = shareProgressCompany({
|
|
920
|
-
personalMode,
|
|
921
|
-
entityContext,
|
|
922
|
-
companyRef: targetCompany ?? readActiveCompany(options.hqRoot),
|
|
923
|
-
});
|
|
924
|
-
const planLimitTracker = createPlanLimitRefusalTracker(companySlugForBilling(progressCompany));
|
|
925
795
|
syncHealth = beginSyncHealthReport();
|
|
926
796
|
const result = await share({
|
|
927
797
|
paths: targetPaths,
|
|
928
798
|
company: targetCompany,
|
|
929
799
|
message: options.message,
|
|
930
800
|
onConflict: options.onConflict,
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
vaultConfig,
|
|
934
|
-
scopeVaultConfig,
|
|
935
|
-
}),
|
|
801
|
+
vaultConfig,
|
|
802
|
+
entityContext,
|
|
936
803
|
hqRoot: options.hqRoot,
|
|
937
804
|
onEvent,
|
|
938
|
-
progressRecorder: trackingProgressRecorder(planLimitTracker, progressCompany),
|
|
939
805
|
...(personalMode ? { personalMode: true } : {}),
|
|
940
806
|
...(journalSlug !== undefined ? { journalSlug } : {}),
|
|
941
807
|
...(author ? { author } : {}),
|
|
942
808
|
...(pushPrefixSet !== undefined ? { prefixSet: pushPrefixSet } : {}),
|
|
943
809
|
});
|
|
944
|
-
const planLimitRefused = planLimitTracker.summary();
|
|
945
810
|
if (jsonMode) {
|
|
946
811
|
// Synthetic terminal event so subprocess consumers can read final
|
|
947
812
|
// counts without summing per-file events. Distinguished from
|
|
948
813
|
// SyncProgressEvent by `type:"complete"` (not in the share()
|
|
949
|
-
// event schema — added at the CLI seam).
|
|
950
|
-
// additive: present only when a plan limit refused new files, so a
|
|
951
|
-
// consumer never has to infer a refusal from the counts.
|
|
814
|
+
// event schema — added at the CLI seam).
|
|
952
815
|
emitJson({
|
|
953
816
|
type: "complete",
|
|
954
817
|
filesUploaded: result.filesUploaded,
|
|
@@ -956,7 +819,6 @@ export function registerCloudCommands(program) {
|
|
|
956
819
|
filesSkipped: result.filesSkipped,
|
|
957
820
|
conflictPaths: result.conflictPaths,
|
|
958
821
|
aborted: result.aborted,
|
|
959
|
-
...(planLimitRefused ? { planLimitRefused } : {}),
|
|
960
822
|
});
|
|
961
823
|
}
|
|
962
824
|
if (result.aborted) {
|
|
@@ -964,37 +826,13 @@ export function registerCloudCommands(program) {
|
|
|
964
826
|
await syncHealth.failed();
|
|
965
827
|
process.exit(1);
|
|
966
828
|
}
|
|
967
|
-
recordFirstWorkBearingSync({
|
|
968
|
-
filesUploaded: result.filesUploaded,
|
|
969
|
-
filesDeleted: result.filesDeleted,
|
|
970
|
-
aborted: result.aborted,
|
|
971
|
-
});
|
|
972
|
-
if (planLimitRefused) {
|
|
973
|
-
// Never a success line over a refusal: say what was pushed, what
|
|
974
|
-
// was refused and how to fix it, then exit non-zero. The sync
|
|
975
|
-
// itself worked, so client health records a success. `--json`
|
|
976
|
-
// callers read `planLimitRefused` on the complete event instead
|
|
977
|
-
// and keep their exit status.
|
|
978
|
-
log(chalk.yellow(`\n⚠ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ` +
|
|
979
|
-
`${result.filesSkipped} skipped), but ${describeRefusedFiles(planLimitRefused)} ` +
|
|
980
|
-
"refused by your plan limit."));
|
|
981
|
-
for (const line of renderPlanLimitRefusalLines(planLimitRefused)) {
|
|
982
|
-
log(chalk.yellow(line));
|
|
983
|
-
}
|
|
984
|
-
for (const line of scopeExcludedLines(result.filesExcludedByScope, pushPrefixSet)) {
|
|
985
|
-
log(chalk.yellow(line));
|
|
986
|
-
}
|
|
987
|
-
await syncHealth.succeeded();
|
|
988
|
-
if (!jsonMode)
|
|
989
|
-
process.exit(1);
|
|
990
|
-
return;
|
|
991
|
-
}
|
|
992
829
|
if (result.filesExcludedByScope > 0) {
|
|
993
830
|
log(chalk.yellow(`\n⚠ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ` +
|
|
994
831
|
`${result.filesSkipped} skipped, ${result.filesExcludedByScope} scope-excluded)`));
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
832
|
+
log(chalk.yellow(scopeExcludedWarning(result.filesExcludedByScope)));
|
|
833
|
+
const prefixDetail = scopeExcludedPrefixDetail(pushPrefixSet);
|
|
834
|
+
if (prefixDetail)
|
|
835
|
+
log(chalk.yellow(prefixDetail));
|
|
998
836
|
}
|
|
999
837
|
else {
|
|
1000
838
|
log(chalk.green(`\n✓ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ${result.filesSkipped} skipped)`));
|
|
@@ -1069,7 +907,7 @@ export function registerCloudCommands(program) {
|
|
|
1069
907
|
console.log(chalk.bold("\nHQ Sync — Pull"));
|
|
1070
908
|
console.log(` HQ root: ${options.hqRoot}`);
|
|
1071
909
|
console.log(` Company: ${options.company ?? "(from .hq/config.json)"}\n`);
|
|
1072
|
-
const accessToken = await
|
|
910
|
+
const accessToken = await ensureCognitoToken();
|
|
1073
911
|
const vaultConfig = buildVaultConfig(accessToken);
|
|
1074
912
|
// US-011 (2026-05-21 fix): resolve the caller's sync-config for
|
|
1075
913
|
// the targeted membership BEFORE the pull, so we can (a) emit the
|
|
@@ -1133,10 +971,6 @@ export function registerCloudCommands(program) {
|
|
|
1133
971
|
await syncHealth.failed();
|
|
1134
972
|
process.exit(1);
|
|
1135
973
|
}
|
|
1136
|
-
recordFirstWorkBearingSync({
|
|
1137
|
-
filesDownloaded: result.filesDownloaded,
|
|
1138
|
-
aborted: result.aborted,
|
|
1139
|
-
});
|
|
1140
974
|
console.log(chalk.green(`\n✓ Pulled ${result.filesDownloaded} file(s) (${formatBytes(result.bytesDownloaded)}, ${result.filesSkipped} skipped, ${result.conflicts} conflicts)`));
|
|
1141
975
|
// Emit the hint banner after success so it appears alongside the
|
|
1142
976
|
// summary line. Mirrors the wiring in runPullAll and runNowSingle.
|
|
@@ -1162,18 +996,8 @@ export function registerCloudCommands(program) {
|
|
|
1162
996
|
.command("status")
|
|
1163
997
|
.description("Show local sync journal summary")
|
|
1164
998
|
.option("--hq-root <path>", `Local HQ tree root (default: ${DEFAULT_HQ_ROOT})`, DEFAULT_HQ_ROOT)
|
|
1165
|
-
.action((options
|
|
1166
|
-
const explicitHqRoot = command.getOptionValueSource("hqRoot") === "cli";
|
|
999
|
+
.action((options) => {
|
|
1167
1000
|
try {
|
|
1168
|
-
const hqRoot = options.hqRoot;
|
|
1169
|
-
if (explicitHqRoot) {
|
|
1170
|
-
if (!fs.existsSync(hqRoot)) {
|
|
1171
|
-
throw new Error(`HQ root does not exist: ${hqRoot}`);
|
|
1172
|
-
}
|
|
1173
|
-
if (!fs.statSync(hqRoot).isDirectory()) {
|
|
1174
|
-
throw new Error(`HQ root is not a directory: ${hqRoot}`);
|
|
1175
|
-
}
|
|
1176
|
-
}
|
|
1177
1001
|
// The engine SHARDS the journal by slug — the personal-vault fanout
|
|
1178
1002
|
// slot, one shard per cloud company, and the legacy "personal" shard.
|
|
1179
1003
|
// Enumerate EVERY shard the engine can write (via the engine's own
|
|
@@ -1182,7 +1006,13 @@ export function registerCloudCommands(program) {
|
|
|
1182
1006
|
// looked at `sync-journal._Users_<user>_hq.json` — a slug the engine
|
|
1183
1007
|
// never writes — and printed "No sync journal yet" right after a
|
|
1184
1008
|
// successful sync (feedback_9fbf1f82 / feedback_46288b7b).
|
|
1185
|
-
const
|
|
1009
|
+
const journals = listJournals();
|
|
1010
|
+
if (journals.length === 0) {
|
|
1011
|
+
console.log(chalk.dim("No sync journal yet — run `hq sync now`, `hq sync push`, or `hq sync pull` to create one."));
|
|
1012
|
+
console.log(chalk.dim(` Looked in: ${getStateDir()} (sync-journal.*.json)`));
|
|
1013
|
+
return;
|
|
1014
|
+
}
|
|
1015
|
+
const configPath = path.join(options.hqRoot, ".hq", "config.json");
|
|
1186
1016
|
let activeCompany;
|
|
1187
1017
|
if (fs.existsSync(configPath)) {
|
|
1188
1018
|
try {
|
|
@@ -1193,22 +1023,13 @@ export function registerCloudCommands(program) {
|
|
|
1193
1023
|
// ignore
|
|
1194
1024
|
}
|
|
1195
1025
|
}
|
|
1196
|
-
// Journals live in the machine-wide state directory, independently
|
|
1197
|
-
// of the HQ content root selected for this status display.
|
|
1198
|
-
const stateDir = getStateDir();
|
|
1199
|
-
const journals = listJournals();
|
|
1200
1026
|
let grandFiles = 0;
|
|
1201
1027
|
let grandBytes = 0;
|
|
1202
1028
|
let grandLastSync = "";
|
|
1203
1029
|
console.log(chalk.bold("\nHQ Sync — Status"));
|
|
1204
|
-
console.log(` HQ root: ${hqRoot}`);
|
|
1030
|
+
console.log(` HQ root: ${options.hqRoot}`);
|
|
1205
1031
|
console.log(` Active company: ${activeCompany ?? chalk.dim("(none)")}`);
|
|
1206
|
-
console.log(` State dir: ${stateDir}`);
|
|
1207
1032
|
console.log(` Journals: ${journals.length}`);
|
|
1208
|
-
if (journals.length === 0) {
|
|
1209
|
-
console.log(chalk.dim("No sync journal yet — run `hq sync now`, `hq sync push`, or `hq sync pull` to create one."));
|
|
1210
|
-
return;
|
|
1211
|
-
}
|
|
1212
1033
|
for (const j of journals) {
|
|
1213
1034
|
const entries = Object.entries(j.journal.files ?? {});
|
|
1214
1035
|
// Tombstones record removed files — exclude them from "tracked".
|
|
@@ -1373,7 +1194,7 @@ async function runPullAll(hqRoot, onConflict, modeAllOverride, skipPersonal, for
|
|
|
1373
1194
|
console.log("");
|
|
1374
1195
|
let result;
|
|
1375
1196
|
try {
|
|
1376
|
-
const accessToken = await
|
|
1197
|
+
const accessToken = await ensureCognitoToken();
|
|
1377
1198
|
const vaultConfig = buildVaultConfig(accessToken);
|
|
1378
1199
|
const realClient = new VaultClient(vaultConfig);
|
|
1379
1200
|
const adapter = {
|
|
@@ -1449,14 +1270,6 @@ async function runPullAll(hqRoot, onConflict, modeAllOverride, skipPersonal, for
|
|
|
1449
1270
|
`(${formatBytes(result.bytesDownloaded)}) across ${result.attempted} ` +
|
|
1450
1271
|
`target(s); ${result.conflicts} conflict(s); ${errored} error(s)`;
|
|
1451
1272
|
console.log(errored > 0 ? chalk.yellow(summary) : chalk.green(summary));
|
|
1452
|
-
for (const row of result.perCompany) {
|
|
1453
|
-
if (row.result && !row.error) {
|
|
1454
|
-
recordFirstWorkBearingSync({
|
|
1455
|
-
filesDownloaded: row.result.filesDownloaded,
|
|
1456
|
-
aborted: row.result.aborted,
|
|
1457
|
-
});
|
|
1458
|
-
}
|
|
1459
|
-
}
|
|
1460
1273
|
if (errored > 0)
|
|
1461
1274
|
throw new SyncExitError(1);
|
|
1462
1275
|
}
|
|
@@ -1466,7 +1279,7 @@ export async function runPullPersonal(hqRoot, onConflict) {
|
|
|
1466
1279
|
console.log(` HQ root: ${hqRoot}`);
|
|
1467
1280
|
console.log(` Strategy: ${onConflict ?? "(interactive)"}\n`);
|
|
1468
1281
|
try {
|
|
1469
|
-
const accessToken = await
|
|
1282
|
+
const accessToken = await ensureCognitoToken();
|
|
1470
1283
|
const vaultConfig = buildVaultConfig(accessToken);
|
|
1471
1284
|
const client = new VaultClient(vaultConfig);
|
|
1472
1285
|
const personalUid = await resolveCanonicalPersonUid({
|
|
@@ -1487,10 +1300,6 @@ export async function runPullPersonal(hqRoot, onConflict) {
|
|
|
1487
1300
|
throw new SyncExitError(1);
|
|
1488
1301
|
}
|
|
1489
1302
|
console.log(chalk.green(`\n✓ Pulled ${result.filesDownloaded} file(s) (${formatBytes(result.bytesDownloaded)}, ${result.filesSkipped} skipped, ${result.conflicts} conflicts)`));
|
|
1490
|
-
recordFirstWorkBearingSync({
|
|
1491
|
-
filesDownloaded: result.filesDownloaded,
|
|
1492
|
-
aborted: result.aborted,
|
|
1493
|
-
});
|
|
1494
1303
|
}
|
|
1495
1304
|
catch (err) {
|
|
1496
1305
|
if (err instanceof SyncExitError)
|
|
@@ -1499,11 +1308,6 @@ export async function runPullPersonal(hqRoot, onConflict) {
|
|
|
1499
1308
|
throw new SyncExitError(1);
|
|
1500
1309
|
}
|
|
1501
1310
|
}
|
|
1502
|
-
/**
|
|
1503
|
-
* Run `push --all` and print its per-target report. Returns the files a plan
|
|
1504
|
-
* limit refused across every target (null when none were), so the caller can
|
|
1505
|
-
* refuse to report success; hard failures still throw {@link SyncExitError}.
|
|
1506
|
-
*/
|
|
1507
1311
|
async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
|
|
1508
1312
|
console.log(chalk.bold("\nHQ Sync — Push (all)"));
|
|
1509
1313
|
console.log(` HQ root: ${hqRoot}`);
|
|
@@ -1514,10 +1318,10 @@ async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
|
|
|
1514
1318
|
console.log("");
|
|
1515
1319
|
let result;
|
|
1516
1320
|
try {
|
|
1517
|
-
const accessToken = await
|
|
1321
|
+
const accessToken = await ensureCognitoToken();
|
|
1518
1322
|
const vaultConfig = buildVaultConfig(accessToken);
|
|
1519
1323
|
const realClient = new VaultClient(vaultConfig);
|
|
1520
|
-
const author =
|
|
1324
|
+
const author = resolveUploadAuthorFromCache();
|
|
1521
1325
|
const adapter = {
|
|
1522
1326
|
listMyMemberships: () => realClient.listMyMemberships(),
|
|
1523
1327
|
listPersonEntities: () => realClient.entity.listByType("person"),
|
|
@@ -1538,39 +1342,31 @@ async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
|
|
|
1538
1342
|
}, {
|
|
1539
1343
|
vaultClient: adapter,
|
|
1540
1344
|
resolveScope: (companyUid, slug) => resolvePullScope(realClient, companyUid, slug, hqRoot),
|
|
1541
|
-
share:
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
...(opts.propagateDeletePolicy !== undefined
|
|
1567
|
-
? { propagateDeletePolicy: opts.propagateDeletePolicy }
|
|
1568
|
-
: {}),
|
|
1569
|
-
...(opts.prefixSet !== undefined ? { prefixSet: opts.prefixSet } : {}),
|
|
1570
|
-
...(author ? { author } : {}),
|
|
1571
|
-
});
|
|
1572
|
-
return { ...shareResult, planLimit: tracker.summary() };
|
|
1573
|
-
},
|
|
1345
|
+
share: (opts) => share({
|
|
1346
|
+
paths: opts.paths,
|
|
1347
|
+
company: opts.company,
|
|
1348
|
+
vaultConfig,
|
|
1349
|
+
hqRoot: opts.hqRoot,
|
|
1350
|
+
...(opts.onConflict ? { onConflict: opts.onConflict } : {}),
|
|
1351
|
+
...(opts.personalMode !== undefined
|
|
1352
|
+
? { personalMode: opts.personalMode }
|
|
1353
|
+
: {}),
|
|
1354
|
+
...(opts.journalSlug !== undefined
|
|
1355
|
+
? { journalSlug: opts.journalSlug }
|
|
1356
|
+
: {}),
|
|
1357
|
+
...(opts.message !== undefined ? { message: opts.message } : {}),
|
|
1358
|
+
...(opts.skipUnchanged !== undefined
|
|
1359
|
+
? { skipUnchanged: opts.skipUnchanged }
|
|
1360
|
+
: {}),
|
|
1361
|
+
...(opts.propagateDeletes !== undefined
|
|
1362
|
+
? { propagateDeletes: opts.propagateDeletes }
|
|
1363
|
+
: {}),
|
|
1364
|
+
...(opts.propagateDeletePolicy !== undefined
|
|
1365
|
+
? { propagateDeletePolicy: opts.propagateDeletePolicy }
|
|
1366
|
+
: {}),
|
|
1367
|
+
...(opts.prefixSet !== undefined ? { prefixSet: opts.prefixSet } : {}),
|
|
1368
|
+
...(author ? { author } : {}),
|
|
1369
|
+
}),
|
|
1574
1370
|
});
|
|
1575
1371
|
}
|
|
1576
1372
|
catch (err) {
|
|
@@ -1579,62 +1375,35 @@ async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
|
|
|
1579
1375
|
// terminal sync_failure before exiting on our behalf.
|
|
1580
1376
|
throw new SyncExitError(1);
|
|
1581
1377
|
}
|
|
1582
|
-
let refused = null;
|
|
1583
|
-
let refusedTargets = 0;
|
|
1584
1378
|
for (const row of result.perCompany) {
|
|
1585
1379
|
if (row.error) {
|
|
1586
1380
|
console.log(chalk.red(` ✗ ${row.slug}: ${row.error}`));
|
|
1587
1381
|
}
|
|
1588
1382
|
else if (row.result) {
|
|
1589
1383
|
const r = row.result;
|
|
1590
|
-
const
|
|
1591
|
-
const status = r.aborted || r.filesExcludedByScope > 0 || legRefused
|
|
1384
|
+
const status = r.aborted || r.filesExcludedByScope > 0
|
|
1592
1385
|
? chalk.yellow("⚠")
|
|
1593
1386
|
: chalk.green("✓");
|
|
1594
1387
|
console.log(` ${status} ${row.slug}: ${r.filesUploaded} file(s), ` +
|
|
1595
1388
|
`${formatBytes(r.bytesUploaded)}, ${r.filesSkipped} skipped, ` +
|
|
1596
1389
|
`${r.filesDeleted} deleted, ${r.filesExcludedByScope} scope-excluded, ` +
|
|
1597
1390
|
`${r.conflictPaths.length} conflict(s)` +
|
|
1598
|
-
(r.aborted ? " — aborted" : "")
|
|
1599
|
-
(legRefused
|
|
1600
|
-
? ` — ${describeRefusedCount(legRefused)} refused by plan limit`
|
|
1601
|
-
: ""));
|
|
1602
|
-
if (legRefused) {
|
|
1603
|
-
printPlanLimitRefusal(legRefused);
|
|
1604
|
-
refused = mergePlanLimitRefusals(refused, legRefused);
|
|
1605
|
-
refusedTargets += 1;
|
|
1606
|
-
}
|
|
1391
|
+
(r.aborted ? " — aborted" : ""));
|
|
1607
1392
|
}
|
|
1608
1393
|
}
|
|
1609
1394
|
const errored = result.errors.length;
|
|
1610
1395
|
const summary = `\nPushed ${result.filesUploaded} file(s) ` +
|
|
1611
1396
|
`(${formatBytes(result.bytesUploaded)}) across ${result.attempted} ` +
|
|
1612
1397
|
`target(s); ${result.filesDeleted} deleted; ${errored} error(s); ` +
|
|
1613
|
-
`${result.filesExcludedByScope} scope-excluded
|
|
1614
|
-
|
|
1615
|
-
? `; new files refused by a plan limit on ${refusedTargets} target(s)`
|
|
1616
|
-
: "");
|
|
1617
|
-
console.log(errored > 0 || result.filesExcludedByScope > 0 || refusedTargets > 0
|
|
1398
|
+
`${result.filesExcludedByScope} scope-excluded`;
|
|
1399
|
+
console.log(errored > 0 || result.filesExcludedByScope > 0
|
|
1618
1400
|
? chalk.yellow(summary)
|
|
1619
1401
|
: chalk.green(summary));
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
recordFirstWorkBearingSync({
|
|
1623
|
-
filesUploaded: row.result.filesUploaded,
|
|
1624
|
-
filesDeleted: row.result.filesDeleted,
|
|
1625
|
-
aborted: row.result.aborted,
|
|
1626
|
-
});
|
|
1627
|
-
}
|
|
1628
|
-
}
|
|
1629
|
-
for (const row of result.perCompany) {
|
|
1630
|
-
const excluded = row.result?.filesExcludedByScope ?? 0;
|
|
1631
|
-
for (const line of scopeExcludedLines(excluded, row.prefixSet)) {
|
|
1632
|
-
console.log(chalk.yellow(`${row.slug}: ${line}`));
|
|
1633
|
-
}
|
|
1402
|
+
if (result.filesExcludedByScope > 0) {
|
|
1403
|
+
console.log(chalk.yellow(scopeExcludedWarning(result.filesExcludedByScope)));
|
|
1634
1404
|
}
|
|
1635
1405
|
if (errored > 0)
|
|
1636
1406
|
throw new SyncExitError(1);
|
|
1637
|
-
return refused;
|
|
1638
1407
|
}
|
|
1639
1408
|
async function runNowSingle(hqRoot, company, personal, message, onConflict, modeAllOverride, forceScopeShrink) {
|
|
1640
1409
|
console.log(chalk.bold("\nHQ Sync — Now"));
|
|
@@ -1642,9 +1411,9 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
|
|
|
1642
1411
|
console.log(` Target: ${personal ? "(personal)" : (company ?? "(active company)")}`);
|
|
1643
1412
|
console.log(` Strategy: ${onConflict ?? "(interactive)"}\n`);
|
|
1644
1413
|
try {
|
|
1645
|
-
const accessToken = await
|
|
1414
|
+
const accessToken = await ensureCognitoToken();
|
|
1646
1415
|
const vaultConfig = buildVaultConfig(accessToken);
|
|
1647
|
-
const author =
|
|
1416
|
+
const author = resolveUploadAuthorFromCache();
|
|
1648
1417
|
// Resolve the target. For --personal, look up the canonical person and
|
|
1649
1418
|
// route paths/journal through personalMode. Otherwise use the company arg
|
|
1650
1419
|
// (or fall back to the active company inside share()/sync()).
|
|
@@ -1652,7 +1421,6 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
|
|
|
1652
1421
|
let personalMode = false;
|
|
1653
1422
|
let journalSlug;
|
|
1654
1423
|
let pushPaths;
|
|
1655
|
-
let pushSlug;
|
|
1656
1424
|
if (personal) {
|
|
1657
1425
|
const client = new VaultClient(vaultConfig);
|
|
1658
1426
|
targetCompany = await resolveCanonicalPersonUid({
|
|
@@ -1677,7 +1445,6 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
|
|
|
1677
1445
|
"Use --company <slug>, --personal, or set up .hq/config.json.");
|
|
1678
1446
|
}
|
|
1679
1447
|
pushPaths = [path.join(hqRoot, "companies", slug)];
|
|
1680
|
-
pushSlug = slug;
|
|
1681
1448
|
}
|
|
1682
1449
|
// Push first so the subsequent pull doesn't redownload files we were
|
|
1683
1450
|
// about to broadcast (matches hq-sync-runner ordering).
|
|
@@ -1688,16 +1455,12 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
|
|
|
1688
1455
|
const pushScope = await resolveCliPullScope(scopeClient, targetCompany, hqRoot);
|
|
1689
1456
|
nowPushPrefixSet = pushScope?.prefixSet;
|
|
1690
1457
|
}
|
|
1691
|
-
const pushProgressCompany = personalMode ? null : (pushSlug ?? null);
|
|
1692
|
-
const planLimitTracker = createPlanLimitRefusalTracker(companySlugForBilling(pushProgressCompany));
|
|
1693
1458
|
const pushResult = await share({
|
|
1694
1459
|
paths: pushPaths,
|
|
1695
1460
|
company: targetCompany,
|
|
1696
1461
|
vaultConfig,
|
|
1697
1462
|
hqRoot,
|
|
1698
|
-
progressRecorder: trackingProgressRecorder(planLimitTracker, pushProgressCompany),
|
|
1699
1463
|
skipUnchanged: true,
|
|
1700
|
-
serverOwnedPathPolicy: "skip",
|
|
1701
1464
|
propagateDeletes: true,
|
|
1702
1465
|
propagateDeletePolicy: resolveDeletePolicy(),
|
|
1703
1466
|
...(onConflict ? { onConflict } : {}),
|
|
@@ -1707,33 +1470,23 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
|
|
|
1707
1470
|
...(author ? { author } : {}),
|
|
1708
1471
|
...(nowPushPrefixSet !== undefined ? { prefixSet: nowPushPrefixSet } : {}),
|
|
1709
1472
|
});
|
|
1710
|
-
const
|
|
1711
|
-
const pushStatus = pushResult.aborted || pushResult.filesExcludedByScope > 0 || pushRefused
|
|
1473
|
+
const pushStatus = pushResult.aborted || pushResult.filesExcludedByScope > 0
|
|
1712
1474
|
? chalk.yellow("⚠")
|
|
1713
1475
|
: chalk.green("✓");
|
|
1714
1476
|
console.log(` ${pushStatus} ` +
|
|
1715
1477
|
`${pushResult.filesUploaded} uploaded, ${pushResult.filesSkipped} skipped, ` +
|
|
1716
1478
|
`${pushResult.filesDeleted} deleted, ${pushResult.filesExcludedByScope} scope-excluded` +
|
|
1717
|
-
(pushResult.aborted ? " — aborted" : "")
|
|
1718
|
-
(pushRefused
|
|
1719
|
-
? ` — ${describeRefusedCount(pushRefused)} refused by plan limit`
|
|
1720
|
-
: ""));
|
|
1721
|
-
if (pushRefused)
|
|
1722
|
-
printPlanLimitRefusal(pushRefused, " ");
|
|
1479
|
+
(pushResult.aborted ? " — aborted" : ""));
|
|
1723
1480
|
if (pushResult.filesExcludedByScope > 0) {
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1481
|
+
console.log(chalk.yellow(scopeExcludedWarning(pushResult.filesExcludedByScope)));
|
|
1482
|
+
const prefixDetail = scopeExcludedPrefixDetail(nowPushPrefixSet);
|
|
1483
|
+
if (prefixDetail)
|
|
1484
|
+
console.log(chalk.yellow(prefixDetail));
|
|
1727
1485
|
}
|
|
1728
1486
|
if (pushResult.aborted) {
|
|
1729
1487
|
console.log(chalk.yellow("\n⚠ Sync now aborted on push leg; pull skipped."));
|
|
1730
1488
|
throw new SyncExitError(1);
|
|
1731
1489
|
}
|
|
1732
|
-
recordFirstWorkBearingSync({
|
|
1733
|
-
filesUploaded: pushResult.filesUploaded,
|
|
1734
|
-
filesDeleted: pushResult.filesDeleted,
|
|
1735
|
-
aborted: pushResult.aborted,
|
|
1736
|
-
});
|
|
1737
1490
|
// US-011: resolve membership sync-config so we can either nudge an
|
|
1738
1491
|
// all-mode owner or refuse the pull when strict-mode is on. Skipped
|
|
1739
1492
|
// for personal targets (personal vault has no membership row) and
|
|
@@ -1825,10 +1578,6 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
|
|
|
1825
1578
|
console.log(chalk.yellow("\n⚠ Sync now finished with pull leg aborted."));
|
|
1826
1579
|
throw new SyncExitError(1);
|
|
1827
1580
|
}
|
|
1828
|
-
recordFirstWorkBearingSync({
|
|
1829
|
-
filesDownloaded: pullResult.filesDownloaded,
|
|
1830
|
-
aborted: pullResult.aborted,
|
|
1831
|
-
});
|
|
1832
1581
|
// Emit the hint banner after a successful pull so it appears at the
|
|
1833
1582
|
// bottom of the summary rather than mid-stream. Size-gated: only a large
|
|
1834
1583
|
// local folder is nudged.
|
|
@@ -1839,12 +1588,6 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
|
|
|
1839
1588
|
level: bannerLevel,
|
|
1840
1589
|
});
|
|
1841
1590
|
}
|
|
1842
|
-
if (pushRefused) {
|
|
1843
|
-
// The pull ran, but the push did not upload everything: no success line.
|
|
1844
|
-
console.log(chalk.yellow(`\n⚠ Sync now finished, but ${describeRefusedFiles(pushRefused)} ` +
|
|
1845
|
-
"refused by your plan limit (listed above)."));
|
|
1846
|
-
throw new SyncExitError(1, { health: "succeeded" });
|
|
1847
|
-
}
|
|
1848
1591
|
console.log(chalk.green("\n✓ Sync now complete"));
|
|
1849
1592
|
}
|
|
1850
1593
|
catch (err) {
|
|
@@ -1866,22 +1609,12 @@ async function runNowAll(hqRoot, message, onConflict, modeAllOverride, skipPerso
|
|
|
1866
1609
|
// so the per-target rendering, error isolation, and exit codes are
|
|
1867
1610
|
// identical to running `push --all` then `pull --all` back-to-back.
|
|
1868
1611
|
console.log(chalk.dim("→ push --all"));
|
|
1869
|
-
|
|
1612
|
+
await runPushAll(hqRoot, message, onConflict, skipPersonal);
|
|
1870
1613
|
console.log(chalk.dim("\n→ pull --all"));
|
|
1871
1614
|
// US-011: forward --mode-all so the strict refusal applies to the
|
|
1872
1615
|
// pull leg (push doesn't need a narrow-hint — the narrow ritual is
|
|
1873
1616
|
// pull-side).
|
|
1874
1617
|
await runPullAll(hqRoot, onConflict, modeAllOverride, skipPersonal, forceScopeShrink);
|
|
1875
|
-
if (refused) {
|
|
1876
|
-
// A plan-limit refusal does not stop the pull, but the run must not end
|
|
1877
|
-
// looking like a clean sync: say so last and exit non-zero.
|
|
1878
|
-
console.log(chalk.yellow(`\n⚠ Sync finished, but ${describeRefusedFiles(refused)} refused ` +
|
|
1879
|
-
"by your plan limit (listed under push --all above)."));
|
|
1880
|
-
if (refused.upgradeUrl) {
|
|
1881
|
-
console.log(chalk.yellow(` Upgrade: ${refused.upgradeUrl}`));
|
|
1882
|
-
}
|
|
1883
|
-
throw new SyncExitError(1, { health: "succeeded" });
|
|
1884
|
-
}
|
|
1885
1618
|
}
|
|
1886
1619
|
/**
|
|
1887
1620
|
* Best-effort read of the active company slug from `<hqRoot>/.hq/config.json`.
|
|
@@ -1935,4 +1668,35 @@ async function readAllStdin() {
|
|
|
1935
1668
|
}
|
|
1936
1669
|
return Buffer.concat(chunks).toString("utf8");
|
|
1937
1670
|
}
|
|
1671
|
+
/**
|
|
1672
|
+
* Resolve the syncing user's `UploadAuthor` (sub + email) from the cached
|
|
1673
|
+
* Cognito idToken. Returns `undefined` when no tokens are cached or the
|
|
1674
|
+
* token is missing the required claims — share() then skips the metadata
|
|
1675
|
+
* stamp gracefully (not an error).
|
|
1676
|
+
*
|
|
1677
|
+
* We deliberately decode the JWT here instead of verifying it: Cognito
|
|
1678
|
+
* already verified at issuance, and we only use the public claims to
|
|
1679
|
+
* label the upload's S3 user metadata (no auth decision rides on it).
|
|
1680
|
+
*/
|
|
1681
|
+
function resolveUploadAuthorFromCache() {
|
|
1682
|
+
const tokens = loadCachedTokens();
|
|
1683
|
+
if (!tokens?.idToken)
|
|
1684
|
+
return undefined;
|
|
1685
|
+
const parts = tokens.idToken.split(".");
|
|
1686
|
+
if (parts.length !== 3)
|
|
1687
|
+
return undefined;
|
|
1688
|
+
try {
|
|
1689
|
+
const payload = parts[1].replace(/-/g, "+").replace(/_/g, "/");
|
|
1690
|
+
const padded = payload + "=".repeat((4 - (payload.length % 4)) % 4);
|
|
1691
|
+
const json = Buffer.from(padded, "base64").toString("utf-8");
|
|
1692
|
+
const claims = JSON.parse(json);
|
|
1693
|
+
if (claims.sub && claims.email) {
|
|
1694
|
+
return { userSub: claims.sub, email: claims.email };
|
|
1695
|
+
}
|
|
1696
|
+
return undefined;
|
|
1697
|
+
}
|
|
1698
|
+
catch {
|
|
1699
|
+
return undefined;
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1938
1702
|
//# sourceMappingURL=cloud.js.map
|