@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/CHANGELOG.md
CHANGED
|
@@ -2,4299 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
-
## [5.
|
|
6
|
-
- Fix checkpoint Stop hook-state creation and the jq-absent early exit to match the bundled shell.
|
|
7
|
-
- Let `hq sync now` skip unchanged server-owned cloud placeholders while keeping their warnings visible, so the sync can complete.
|
|
8
|
-
|
|
9
|
-
## [5.312.0] — 2026-10-02
|
|
10
|
-
- The desktop app can turn event-driven daemon sync on or off with its Instant Sync setting. The daemon stores the preference and restarts when a running daemon needs to apply it.
|
|
11
|
-
- `hq dm channel` now explains empty channels and displays a readable fallback for bodyless system notifications.
|
|
12
|
-
|
|
13
|
-
- Personal vault browsing now treats slash and dot paths as the root and normalizes leading slashes on nested paths.
|
|
14
|
-
- Personal and company file browsing normalize root markers before listing.
|
|
15
|
-
- Schedule the first eligible lead keep-alive check from the lane terminal watcher when the opt-in flags are enabled.
|
|
16
|
-
- Add default-off KPI freshness reporting and deduplicated re-measurement nudges to lane autopilot.
|
|
17
|
-
- Add company-scoped Outpost owner lookup for hostless lane ULIDs used by `hq lanes message`.
|
|
18
|
-
- Add opt-in autopilot nudges and operator escalation for missed lead deadlines.
|
|
19
|
-
- Report the bounded host BASH_ENV class for hook telemetry so HQ-CLI-2C startup timing can be distinguished accurately.
|
|
20
|
-
- Add gated `hq vault retention get|set` commands for the per-vault default retention period.
|
|
21
|
-
|
|
22
|
-
## [5.311.4] — 2026-10-02
|
|
23
|
-
- Preserve existing local company starter files during cloud provisioning by having the CLI request that hq-pro skip blank starter seeding; older servers are detected before company creation.
|
|
24
|
-
|
|
25
|
-
## [5.311.3] — 2026-10-01
|
|
26
|
-
- Match company file access checks against the company-anchored paths printed by `hq files browse`.
|
|
27
|
-
- Record a placement resolved to the current host as local so the lane starts without dispatching back through Outpost pickup.
|
|
28
|
-
|
|
29
|
-
## [5.311.2] — 2026-10-01
|
|
30
|
-
- Reduce fast-path startup work by loading network compatibility only on routes that need it.
|
|
31
|
-
- Make envelope `next_check_at` an unconditional keep-alive hold and remove its completed rollout flag.
|
|
32
|
-
- Lead autopilot no longer asks a lead to review its own lane as a finished worker, or to relaunch a worker for a story assigned to the lead itself.
|
|
33
|
-
- Lead autopilot counts a story's current `lane` together with its `lanes` history, so `lanes: []` no longer hides the assigned lane.
|
|
34
|
-
- Keep the CLI company seed fixture byte-matched to the hq-core starter golden, including the session sentinel ignore rule.
|
|
35
|
-
- Record lane-watcher continuations as `watcher` resumes and label their prompt source accurately; record monitor-event and system-notice message sources distinctly in lane resume history.
|
|
36
|
-
|
|
37
|
-
## [5.311.1] — 2026-10-01
|
|
38
|
-
- Preserve shell-compatible diagnostics when delegate pickup receives a malformed manifest.
|
|
39
|
-
- Print URLs returned by `hq integrations call` without redacting their paths or query values. Other integration JSON output keeps its existing URL redaction.
|
|
40
|
-
|
|
41
|
-
## [5.311.0] — 2026-10-01
|
|
42
|
-
- Add native `hq core hq-session` and `checkpoint-stop-gate` handlers on the fast route behind the default-off `core-native-session` flag, retaining bundled shell rollback companions.
|
|
43
|
-
|
|
44
|
-
- Claude lane account selection now skips accounts held for the lane's model and preserves the quota reset details when no eligible account is available.
|
|
45
|
-
- Require a latency regression to recur across benchmark rounds before failing the fast-route gate.
|
|
46
|
-
- Detect inline private keys when validating job definitions.
|
|
47
|
-
- Deliver each Outpost its own lead autopilot registry rows from the primary reconcile pass, and report a missing or stale registry on the Outpost.
|
|
48
|
-
- Add an opt-in, default-off hq-flags gate that lets the first keep-alive retry after a done turn run after a 30-second settle while preserving later backoff.
|
|
49
|
-
- Add the default-off cli.personal-connector-settings flag to store imported local connector manifests in the personal vault instead of the company vault.
|
|
50
|
-
|
|
51
|
-
## [5.310.0] — 2026-10-01
|
|
52
|
-
- Move directly controlled Linux CI checks to ARM runners where their tools support ARM.
|
|
53
|
-
- Lead autopilot resolves a lead's company through its project when the lane record does not carry a company, and skips project paths registered to a different company.
|
|
54
|
-
- Install-tree recovery errors now report bounded sibling, target, version-gate phase, and updater-liveness enums.
|
|
55
|
-
|
|
56
|
-
## [5.309.1] — 2026-10-01
|
|
57
|
-
- Fixed `hq agents rm` to remove external agents through revoke rather than the hosted-agent teardown path.
|
|
58
|
-
|
|
59
|
-
- Wait for asynchronous integration approvals to reach a terminal queue state and report pending work accurately.
|
|
60
|
-
|
|
61
|
-
- Add privacy-safe qmd exit diagnostics to Sentry reports.
|
|
62
|
-
|
|
63
|
-
- `hq files delete` help now explains exact-key and wildcard-prefix matching.
|
|
64
|
-
- Add native `hq core worker lint` and `hq core worker share` behind the default-off `core-native-worker-skills` gate.
|
|
65
|
-
|
|
66
|
-
- Port `hq core dm-bind` and `hq core work-mesh-bind-trusted` to native TypeScript behind `core-native-utilities`, retaining the bundled-script fallback.
|
|
67
|
-
|
|
68
|
-
- Move directly controlled Linux CI checks to ARM runners where their tools support ARM.
|
|
69
|
-
- Lead autopilot resolves a lead's company through its project when the lane record does not carry a company, and skips project paths registered to a different company.
|
|
70
|
-
- Install-tree recovery errors now report bounded sibling, target, version-gate phase, and updater-liveness enums.
|
|
71
|
-
|
|
72
|
-
## [5.309.0] — 2026-10-01
|
|
73
|
-
- `hq lanes autopilot run` now evaluates leads based on lane ownership rather than a host label, and reports registered leads assigned to another host as skipped.
|
|
74
|
-
- Allow non-overlapping story-prefix teams to share a project in lane checks and reports.
|
|
75
|
-
|
|
76
|
-
## [5.308.0] — 2026-10-01
|
|
77
|
-
- Added native `hq core audit-log`, `git-pack-extension-check`, `pin`, and `refresh-vault-access` commands behind the default-off `core-native-utilities` flag.
|
|
78
|
-
- CI now cancels superseded pull-request benchmarks and reserves the additional Windows and macOS checks for changes that affect those platform paths. Main pushes retain all platform checks.
|
|
79
|
-
- `hq lanes list` now settles legacy failed-dispatch mirrors as undispatched only after a successful strict owner snapshot returns no row; snapshot errors and mirrors with a host report remain unverified.
|
|
80
|
-
- Outpost pickup and remote database requests now time out, and failed pending DM lookups are reported.
|
|
81
|
-
|
|
82
|
-
## [5.307.0] — 2026-10-01
|
|
83
|
-
- Add native `hq core resolve-company` on the fast route behind the default-off `core-native-utilities` gate.
|
|
84
|
-
|
|
85
|
-
- Stop immediately when hq-deploy repeats an app-list cursor while resolving apps.
|
|
86
|
-
|
|
87
|
-
- Added native `hq core audit-log`, `git-pack-extension-check`, `pin`, and `refresh-vault-access` commands behind the default-off `core-native-utilities` flag.
|
|
88
|
-
- CI now cancels superseded pull-request benchmarks and reserves the additional Windows and macOS checks for changes that affect those platform paths. Main pushes retain all platform checks.
|
|
89
|
-
- `hq lanes list` now settles legacy failed-dispatch mirrors as undispatched only after a successful strict owner snapshot returns no row; snapshot errors and mirrors with a host report remain unverified.
|
|
90
|
-
- Outpost pickup and remote database requests now time out, and failed pending DM lookups are reported.
|
|
91
|
-
|
|
92
|
-
## [5.306.0] — 2026-10-01
|
|
93
|
-
- End long install-tree waits early when a named retired npm sibling's deep activity scan is incomplete, report the recovery as unverified, and give safe wait-and-repair guidance.
|
|
94
|
-
|
|
95
|
-
## [5.305.0] — 2026-10-01
|
|
96
|
-
|
|
97
|
-
- Work Mesh project discovery skips projects whose matching local lifecycle state is archived or retired.
|
|
98
|
-
|
|
99
|
-
- `hq lanes show` now treats a newer terminal primary mirror as authoritative when an Outpost owner snapshot is behind, avoiding a misleading refresh warning while preserving warnings for nonterminal conflicts.
|
|
100
|
-
- Self-updates detect an unwritable npm global prefix before install, show the command to repair that install, and report the handled permission state as a rate-limited warning.
|
|
101
|
-
- Keep Work Mesh held events unique by event ID across retries, including interrupted overflow recovery.
|
|
102
|
-
- Added `hq mcp list` as an alias for the existing MCP status command. `hq version` can show cached CLI update guidance on stderr when the default-off `cli.version-update-nudge` flag is enabled. Bare `hq --version` prints only the installed CLI semver and starts no flag or network work.
|
|
103
|
-
- Keep-alive no longer lets a newer terminal lane or a same-profile lane under a distinct lane senior supersede a running lane.
|
|
104
|
-
- With `cli.company-errors-sdk-warning` enabled, `hq people` uses shared active-company guidance when local metadata is missing, and files commands show the AWS SDK Node-version notice only with verbose diagnostics.
|
|
105
|
-
- Remove the unrelated secret-sharing hint from active member listings.
|
|
106
|
-
|
|
107
|
-
## [5.304.0] — 2026-10-01
|
|
108
|
-
- `hq lanes show` skips owner refresh only when a failed Outpost dispatch explicitly recorded `pickup_persisted: false` and no owner heartbeat; it reports `remote_refresh: "skipped_undispatched"` in that case.
|
|
109
|
-
|
|
110
|
-
## [5.303.0] — 2026-10-01
|
|
111
|
-
- Fixed bundled shell scripts failing on Windows when Git Bash is installed but `bash` is not on `PATH`.
|
|
112
|
-
- The bundled token usage script now reads Claude sessions from `CLAUDE_CONFIG_DIR/projects` and the standard Claude project directories, including nested session folders (subagent transcripts are skipped), when no project directory is given.
|
|
113
|
-
|
|
114
|
-
## [5.302.0] — 2026-10-01
|
|
115
|
-
|
|
116
|
-
- Generate company project indexes while preserving hand-written content unless `--accept` is used.
|
|
117
|
-
|
|
118
|
-
- Follow all hq-deploy app-list pages when resolving apps for comments and report publishing.
|
|
119
|
-
- Let a senior message or resume an `awaiting_input` lane when its pending question is gone or cannot be reached from the senior's host. Pending questions remain answer-first, including across registered Outpost routes.
|
|
120
|
-
- A senior can resume or send a fallback message to an `awaiting_input` lane when its pending questions are addressed to another audience. Once the resume is accepted, those questions are cancelled on their owner; unreachable owners are reported while the lane continues.
|
|
121
|
-
- When a blocker escalation targets a session without a registered monitor inbox, record the reason and deliver it through the lane's existing inbox instead of retrying the failed escalation every watcher pass.
|
|
122
|
-
- `hq integrations disconnect` can now remove company integrations that were created outside the app catalog.
|
|
123
|
-
- Lead envelopes can set `next_check_at` to defer automatic keep-alive resumes
|
|
124
|
-
until a scheduled check, with pending work continuing to resume immediately.
|
|
125
|
-
- Reconcile records deduplicated keep-alive skip reasons in each lane's watcher event log.
|
|
126
|
-
- Add a company-scoped reconcile gate that closes local interrupted worker lanes after 24 hours when all carried project stories are done or dropped and no pending work remains.
|
|
127
|
-
- Skip refreshing failed-dispatch lane mirrors that never reached their Outpost owner.
|
|
128
|
-
- Keep lane keep-alive, retry-context, and monitor history readers moving past torn JSONL records.
|
|
129
|
-
- Refresh primary mirror heartbeats from fresh running Outpost reports before dead-host reconciliation.
|
|
130
|
-
- Report answerable awaiting-input questions as the `hq lanes show` delivery path, and retry blocker-freshness fallback messages after a failed append.
|
|
131
|
-
- Let `hq integrations connect` send an API key in a custom HTTP header.
|
|
132
|
-
- Bound `hq rescue` GitHub release and tag lookups to 30 seconds with a clear timeout error.
|
|
133
|
-
- hq-cli now logs live-board refresh failures and recovery while continuing to retry.
|
|
134
|
-
- On Windows, background jobs started by `/handoff` and search indexing no longer open console windows.
|
|
135
|
-
|
|
136
|
-
## [5.301.0] — 2026-10-01
|
|
137
|
-
- `hq meetings transcript` and `hq meetings notes` stop a stalled document download after two minutes and say so, instead of waiting forever.
|
|
138
|
-
|
|
139
|
-
- Keep `hq access` from reporting a denied vault path as missing or exposing matching paths.
|
|
140
|
-
- Fix self-updates for npm installs whose global prefix contains spaces.
|
|
141
|
-
- `hq files acl companies/<slug>` and `hq files unshare companies/<slug> --with ...` now handle ACL rows at that exact company path instead of treating it as the vault root.
|
|
142
|
-
- Add native hq core job notify and remediate commands behind core-native-jobs, retaining bundled shell companions.
|
|
143
|
-
- Allow owners to disconnect custom Factory connections without installation records, and send the company UID required by the revoked-connection purge endpoint.
|
|
144
|
-
- Fail company provisioning when its initial sync reports per-file upload failures, while retaining the successful upload count in failure details.
|
|
145
|
-
- Treat plan-limited files as initial-sync failures and keep provisioning progress snapshots updated.
|
|
146
|
-
- Preserve story attribution after a message is durably queued by lane admission or an account move.
|
|
147
|
-
- The token usage report accepts `--project-dir <path>` to read one Claude activity folder instead of the default folders.
|
|
148
|
-
|
|
149
|
-
## [5.300.0] — 2026-09-30
|
|
150
|
-
- `hq files unshare --with agt_...` removes a grant made to an agent. Before, agent uids were rejected as invalid principals.
|
|
151
|
-
- `hq daemon` no longer drops remote-control sessions when claude or codex is reinstalled at the same version or when hq-cli is released. The daemon's plan leaves out the tool's path (the host finds it when it starts), the host restarts a session only for a new tool version, and a tool that looks missing for one plan read does not pause the session. On outpost primary, a long-running Claude session's auto-updater reinstalled claude every few minutes and each reinstall restarted remote-control two or three times.
|
|
152
|
-
- With the default-off hq-flags gate `files.share-empty-prefix-warning`, `hq files share` warns when a granted prefix has no files. A failed or timed-out list check does not block the grant.
|
|
153
|
-
- Recognize pnpm v11+ global installs and handle Windows drive-path tar archives without waiting for the asynchronous feature-flag snapshot.
|
|
154
|
-
- Self-update failure reports now include the npm error code and a sanitized reason.
|
|
155
|
-
|
|
156
|
-
### Fixed
|
|
157
|
-
|
|
158
|
-
- `hq core rebuild-index companies --company <slug>` scopes the generated write to that company (behind the default-off `cli.rebuild-index-company-scope` flag), and `--help` exits without reading or writing company indexes. The unscoped run also ignores orchestrator state tied to another company's PRD.
|
|
159
|
-
|
|
160
|
-
- Lane messages and resumes that switch project or story attribution now tell the provider which story is active. Reused completion artifacts no longer close the new story.
|
|
161
|
-
- Make signed-out `hq sync` commands fail fast with `hq login` guidance when stdin or stdout is not a terminal, while keeping browser login in a terminal.
|
|
162
|
-
|
|
163
|
-
## [5.299.0] — 2026-09-30
|
|
164
|
-
- Add `hq lanes accounts clear-quota` and clear future quota marks after successful lane turns.
|
|
165
|
-
- On macOS, `hq daemon` retires a loaded legacy mesh LaunchAgent even when its plist is missing, and daemon uninstall boots the job out before deleting its plist. Mesh-owner wait logs now repeat at most every ten minutes.
|
|
166
|
-
- Restore npm command links after a failed hq-cli self-update and repair or report missing links after successful installs.
|
|
167
|
-
|
|
168
|
-
## [5.298.0] — 2026-09-30
|
|
169
|
-
- [feedback_d4a080e9-de79-4290-81c3-06ba26990a38] Preserve raw substring matches while normalizing company path searches.
|
|
170
|
-
- `hq agents` now prints the Slack app settings link and the console paste link whenever an agent is waiting on its Slack app-level token, and follows the pending actions and paste URL the server returns.
|
|
171
|
-
- When an app install is already running, `hq integrations connect` tells you to wait instead of showing a generic conflict error.
|
|
172
|
-
- Validate policy trigger expressions when loading worker policies (feedback_3982db47-ceb8-4148-8ee0-4dd533f5138b).
|
|
173
|
-
|
|
174
|
-
## [5.297.0] — 2026-09-30
|
|
175
|
-
- When enabled by hq-flags, show the quarantined work-context outbox count and latest reason in hq doctor and mesh daemon status.
|
|
176
|
-
- `hq daemon` now exits after shutdown when handles remain open, and its mesh service waits when another live mesh daemon owns the process lock.
|
|
177
|
-
|
|
178
|
-
## [5.296.0] — 2026-09-30
|
|
179
|
-
- Upgrade varlock to 1.21.1. `hq run` skips Varlock cache setup and reports malformed env files promptly without sending them to Sentry.
|
|
180
|
-
- Record bounded actor and trigger history for lane worker starts and expose it through `hq lanes show --json`. Preserve history through conflict merges and envelope repair, and record answered-question callers for immediate and queued resumes.
|
|
181
|
-
- `hq lanes` no longer lets a late terminal lane envelope change a story the senior already marked done or dropped, and `hq lanes story review <lane> <story>` moves a carried story to review before senior verification (feedback_d0164732-22b0-4426-9b66-c9758ba205e3).
|
|
182
|
-
|
|
183
|
-
## [5.295.0] — 2026-09-30
|
|
184
|
-
- Add native `hq core job run` behind the default-off `core-native-jobs` gate, retaining its bundled shell rollback companion.
|
|
185
|
-
|
|
186
|
-
- Remove the unused direct client-health Sentry route; the existing server-side reporting path remains unchanged.
|
|
187
|
-
|
|
188
|
-
- Add native `hq core job probe` behind the existing default-off `core-native-jobs` gate.
|
|
189
|
-
- Self-update supervisor copy and cleanup failures now log their error class.
|
|
190
|
-
- Report failed and ineffective self-updates to Sentry with bounded context.
|
|
191
|
-
|
|
192
|
-
- hq-cli release notes now use per-branch fragments that are folded into the next version section, reducing conflicts between parallel pull requests.
|
|
193
|
-
- Claude keep-alive resume events now retain a compact account-load selection snapshot, including when the lane stays on its current account.
|
|
194
|
-
- After a successful missing-envelope repair reports unfinished work, the watcher can queue one automatic continue behind the default-off `lanes.envelope-repair-continue` flag. The repair prompt now gives the required unfinished-story envelope fields.
|
|
195
|
-
- Add a private machine-session token-file command for supported machine-auth handoffs.
|
|
196
|
-
- Apply the 5x fast-route speedup gate only when the base p95 is at or above the 200 ms target; retain the p95 latency and base/PR regression gates.
|
|
197
|
-
- The changelog fragment check runs only on pull requests again, so pushes to main no longer fail it.
|
|
198
|
-
- Refresh terminal Outpost lane mirrors before applying `hq lanes list` state filters, so a lane whose owner is still running is listed as running.
|
|
199
|
-
- Remove the unused Outpost snapshot cache flag and its cache-first lane-list path.
|
|
200
|
-
- The mesh daemon logs spool watcher failures and continues flushing on its polling interval instead of exiting on an unhandled watcher error.
|
|
201
|
-
- Make the manager status gate always active and remove its rollout flag lookup.
|
|
202
|
-
- Compare fast-route latency with a PR-build full-graph baseline so the 5x gate remains valid after the base build gains fast routing.
|
|
203
|
-
|
|
204
|
-
## [5.294.0] — 2026-09-30
|
|
205
|
-
- Record automatic keep-alive resumes in each lane's durable, bounded history and expose it in `hq lanes show --json` and `hq lanes list --json`.
|
|
206
|
-
|
|
207
|
-
### Fixed
|
|
208
|
-
|
|
209
|
-
- Outpost `hq lanes message` now reaches primary-hosted lanes through the
|
|
210
|
-
primary owner command, which checks sender rights and includes the
|
|
211
|
-
destination in JSON output.
|
|
212
|
-
- Split the lane story command handlers into a dedicated module without changing behavior.
|
|
213
|
-
- On a box, `sudo hq daemon migrate --apply` now finds the login user's own systemd user units (hq-mesh-daemon, hq-lanes-reconcile and the rest) and stops them through that user's systemd manager. `sudo hq daemon uninstall --restore-legacy` restarts them the same way. Before, root looked only in its own home and could not reach the login user's manager.
|
|
214
|
-
|
|
215
|
-
## [5.293.0] — 2026-09-30
|
|
216
|
-
- [HQ-CLI-HOOK-TIMEOUT-KIND] Group hook timeout events by normalized kind (`warning` or `exceeded`) across scripts; keep script and platform tags for triage. Existing per-script issues will stop receiving new events, and the lead handles their status.
|
|
217
|
-
- [HQ-CLI-2C] Label unmeasured SessionStart delay as entry Bash startup when BASH_ENV is set; doctor follows the env-prefixed hook command.
|
|
218
|
-
- `hq lanes move` now reports an already-on-target no-op without dispatching or changing the queued lane.
|
|
219
|
-
- Keep bundled scheduled-job reconciliation units on the live scaffold runner, and preserve caller spelling in job-validation paths.
|
|
220
|
-
- On Linux, `hq daemon run` sets XDG_RUNTIME_DIR for its services when the system unit left it unset, so `systemctl --user` from jobs-reconcile no longer fails with "Failed to connect to bus: No medium found".
|
|
221
|
-
|
|
222
|
-
- With the default-off lanes.keep-alive-resume-blocked gate enabled, reconcile
|
|
223
|
-
resumes an opted-in blocked lead after 15 minutes when it has open stories and
|
|
224
|
-
no pending question. After two blocked resumes, it records another blocked
|
|
225
|
-
episode for operator review.
|
|
226
|
-
- Lead autopilot dry runs no longer start workers, append repeat wakes, or write escalation records. Passed stories count as closed and canonical story-ledger lane objects are accepted.
|
|
227
|
-
- Autopilot checks status paths against the lead company, scopes escalation deduplication to each lead, includes carried stories in stale-worker checks, and recovers locks left by reused PIDs.
|
|
228
|
-
- The lead autopilot adds prompts for available grant slots, flat KPI reports, stale blockers, completed projects, stale worker ledgers, and stories without live lanes, with escalation after two unanswered wakes.
|
|
229
|
-
|
|
230
|
-
- Preserve empty directory paths and modes in recorded corpus cases. The recorder rejects tree entries the case format cannot replay, and CI checks committed snapshots after a clean Git archive extraction.
|
|
231
|
-
- Cross-Outpost resume and hire-grant dispatch verify the senior from the
|
|
232
|
-
senior's owning Outpost before signing the caller's grant context.
|
|
233
|
-
- Run the no-Hermes source guard with the required Changelog gate in one runner job.
|
|
234
|
-
|
|
235
|
-
### Added
|
|
236
|
-
|
|
237
|
-
- Add the read-only `hq lanes autopilot report` metrics command for operator nudges, review latency, idle capacity with ready work, and nudge defects.
|
|
238
|
-
|
|
239
|
-
- Add `hq lanes ask --priority P0|P1|P2` and show question urgency in the queue; warn when omitted during the compatibility release.
|
|
240
|
-
- Route ported native hq core commands through the fast-startup gate while preserving each family's bundled shell fallback.
|
|
241
|
-
|
|
242
|
-
### Fixed
|
|
243
|
-
|
|
244
|
-
- Skip malformed remote lane mirrors with a lane and field warning while
|
|
245
|
-
keeping local lane validation strict. Refresh mirror queue reason and details
|
|
246
|
-
from one owner snapshot.
|
|
247
|
-
- Primary-side Outpost question show and answer skip the current Outpost during owner lookup. Remote answers require the lane senior; when the owner is reachable, an unrelated unavailable Outpost is returned as `lookup_errors` without blocking the answer.
|
|
248
|
-
- CI-only: keep the same-binary Node control case measured without applying performance regression thresholds.
|
|
249
|
-
- Fix npm global self-updates, which have failed with MODULE_NOT_FOUND since 5.290.0. The update moved the hq-cli package aside and then started its installer through a supervisor script inside that package. It now runs the installer through a copy of the supervisor outside the package.
|
|
250
|
-
|
|
251
|
-
## [5.292.0] — 2026-09-30
|
|
252
|
-
- Add native `hq core jobs reconcile` behind `core-native-jobs`, retaining the bundled shell rollback and scheduled-job helpers.
|
|
253
|
-
- Behind the default-off `cli.staged-self-update` flag, an npm global self-update installs the new version beside the running package, checks that it answers `--version`, then swaps it in with two renames. The running `hq` stays on disk for the whole install, so services the daemon starts during an update no longer fail with "hq: command not found" or MODULE_NOT_FOUND. pnpm, Bun, Windows and linked installs keep the in-place update.
|
|
254
|
-
|
|
255
|
-
- Disable Git auto-maintenance, auto-gc, and detached gc during CM-W2b corpus
|
|
256
|
-
creation so fixture snapshots cannot race lock files.
|
|
257
|
-
|
|
258
|
-
### Added
|
|
259
|
-
|
|
260
|
-
- `hq core ontology merge-copies --listed --only <file>` (flag `checkpoint.ontology.merge-listed-pairs`, default off) merges exactly the copy -> original pairs in the file, including pairs whose names differ, such as a company listed under two names. Each pair must name two entities of one type; a copy listed twice, or listed as both a copy and an original, is skipped as `listed_conflict`. Signal and link holds apply as for other pairs.
|
|
261
|
-
- `hq core ontology drop-aliases --only <file>` (flag `checkpoint.ontology.drop-aliases`, default off) removes reviewed wrong aliases, given as `{ entity, alias }` pairs, from entity files. It is a dry run unless `--apply` is given, and it writes through the multi-writer outbox so sync uploads the change.
|
|
262
|
-
|
|
263
|
-
### Fixed
|
|
264
|
-
|
|
265
|
-
- `hq core ontology merge-copies --rewrite-refs` no longer edits signal or source files, which sync cannot upload. A pair whose copy a signal or source still names is now held as `server_owned_refs`, and its copy is kept.
|
|
266
|
-
### Added
|
|
267
|
-
|
|
268
|
-
- Add `hq core delegate bundle`, `grant`, `publish`, `send`, and `verify` as
|
|
269
|
-
native TypeScript handlers behind the default-off `core-native-delegate`
|
|
270
|
-
flag, with their shell companions retained as rollback assets.
|
|
271
|
-
- Match native handoff open-steps JSON nulls and invalid-JSON exit codes, and sync zero-change handoffs to the calling session's bound company after mirroring the thread.
|
|
272
|
-
|
|
273
|
-
## [5.291.0] — 2026-09-29
|
|
274
|
-
- Add native `hq core jobs schedule-parse` and `validate` commands behind the default-off `core-native-jobs` gate, retaining their shell rollback companions.
|
|
275
|
-
|
|
276
|
-
- Offline mesh reconcile does not refresh person tokens or start interactive sign-in; valid cached tokens still validate device defaults.
|
|
277
|
-
- Retry daemon state replacement briefly when Windows reports transient rename contention, while keeping the previous state file intact on failure.
|
|
278
|
-
- When a lane has no Board story ID, `hq lanes` records the lane event without sending a story PATCH.
|
|
279
|
-
- `hq core policy age-report` now matches the legacy script when a missing reference has no hidden sibling under a dot directory.
|
|
280
|
-
- Keep bundled scaffold scripts current with staging and check their pinned source revision in CI.
|
|
281
|
-
- Starter plan-limit refusals now show why and how to fix them. The CLI reads
|
|
282
|
-
hq-pro's hard-stop 402 body (and the older shapes) and prints the server
|
|
283
|
-
message, the usage, the fix options, the free-month offer when one stands,
|
|
284
|
-
and the upgrade link, including in non-interactive runs. `hq secrets set`,
|
|
285
|
-
`hq secrets generate-link`, `hq members invite` and `hq integrations connect`
|
|
286
|
-
all use this renderer and exit non-zero.
|
|
287
|
-
- `hq sync push`, `hq sync push --all`, `hq sync now`, `hq sync now --all` and
|
|
288
|
-
`hq skill create` no longer print a success line when a plan limit refused a
|
|
289
|
-
file. They list the refused files the runner names, show the upgrade link and
|
|
290
|
-
exit non-zero. `hq sync push --json` adds `planLimitRefused` to its `complete`
|
|
291
|
-
event instead.
|
|
292
|
-
|
|
293
|
-
## [5.290.0] — 2026-09-29
|
|
294
|
-
- Ignore stale but well-formed worker-profile queue details when another valid queue reason is stored, and remove them on the lane's next write.
|
|
295
|
-
|
|
296
|
-
### Added
|
|
297
|
-
|
|
298
|
-
- Gate `hq sync push --personal <paths>` behind the default-off `cli.personal-targeted-push-paths` flag; explicit paths are normalized and checked against personal-vault scope and exclusions before upload.
|
|
299
|
-
- `hq core ontology merge-copies --rewrite-refs` (flag `checkpoint.ontology.merge-rewrite-refs`, default off) re-points signal refs, invoice and bill links, source and knowledge links from a merged copy to its survivor and carries the copy's external ids and web domains; a pair whose files hold different values for one external id stays held (`external_id_conflict`).
|
|
300
|
-
- A `--only` entry can carry `resolve_external_ids: { <provider>: { primary, namespace, object_type? } }`. With `--rewrite-refs`, a conflicting provider id then keeps `primary` in `external_ids` and moves the pair's other id to the survivor's `external_refs` (`system`, `namespace`, `objectType`, `recordId`), so no id is dropped. A `primary` that matches neither id still holds the pair.
|
|
301
|
-
|
|
302
|
-
### Fixed
|
|
303
|
-
|
|
304
|
-
- `hq core ontology merge-copies --variants` no longer counts a copy's own `# Name` heading as unmerged text, so a merged variant copy can be deleted.
|
|
305
|
-
- `merge-copies` no longer moves a copy's links to itself or to its original into the original, and does not count them or the `## Relationships` heading as unmerged text.
|
|
306
|
-
- `merge-copies` now finds signal `entity_refs` written with a `.md` suffix, so it holds (or, with `--rewrite-refs`, re-points) them instead of deleting a copy they still name.
|
|
307
|
-
- `merge-copies --rewrite-refs` no longer holds a survivor as `merge_invalid` when it gains external ids but has no `web_domains` key (or the reverse).
|
|
308
|
-
- `merge-copies` treats an annotation list item whose first key is `path:` as a link to the copy, so it no longer deletes a copy such an annotation still names.
|
|
309
|
-
|
|
310
|
-
## [5.289.0] — 2026-09-29
|
|
311
|
-
- A failed `hq update` restores the previous working hq-cli install when it could be backed up, instead of leaving the CLI partially updated.
|
|
312
|
-
|
|
313
|
-
## [5.288.0] — 2026-09-29
|
|
314
|
-
|
|
315
|
-
### Added
|
|
316
|
-
|
|
317
|
-
- Add lead autopilot prompts to the lanes reconcile pass behind
|
|
318
|
-
`lanes.lead-autopilot` (off by default) and expose
|
|
319
|
-
`hq lanes autopilot run --dry-run --json`. It asks registered leads to review
|
|
320
|
-
finished, blocked, or missing workers or fill unused grant slots, starts a
|
|
321
|
-
ready worker after an
|
|
322
|
-
unanswered fill prompt ages 15 minutes, and relies on keep-alive to resume
|
|
323
|
-
completed leads with open work.
|
|
324
|
-
|
|
325
|
-
### Fixed
|
|
326
|
-
|
|
327
|
-
- Retry daemon state replacement briefly when Windows reports transient rename
|
|
328
|
-
contention, while keeping the previous state file intact on failure.
|
|
329
|
-
|
|
330
|
-
## [5.287.0] — 2026-09-29
|
|
331
|
-
- Group hook-timeout events by script while preserving triage diagnostics.
|
|
332
|
-
- Preserve safe slow-child script basenames in hook-timeout diagnostics.
|
|
333
|
-
- Cloud provisioning and retirement now stop after 15 seconds when a Vault API request stalls, with a clear timeout error.
|
|
334
|
-
- In the HQ desktop app, clicking "Explain HQ first" in the setup bot now shows the fixed explanation of HQ at once, with no model turn. The setup worker ships that text in `skills/explain-hq.md`, and the bot reads the same file when someone asks in their own words.
|
|
335
|
-
- Add native TypeScript implementations for four `hq core` worktree and
|
|
336
|
-
handoff scripts behind the default-off `core-native-handoff` flag. The
|
|
337
|
-
original shell assets remain bundled as the rollback path.
|
|
338
|
-
- Add default-off native `hq core handoff finalize`, `post`, and `open-steps` commands with the staging scripts retained as the rollback path.
|
|
339
|
-
- Add a default-off `core-native-jobs` rollout gate for native `hq core jobs
|
|
340
|
-
schedule-parse` and `validate` commands.
|
|
341
|
-
|
|
342
|
-
### Fixed
|
|
343
|
-
|
|
344
|
-
- `hq team-sync` keeps its successful no-team result, reports which company
|
|
345
|
-
directories are cloud-backed, and points to `hq sync pull --all` and
|
|
346
|
-
`hq sync status` for cloud-backed companies.
|
|
347
|
-
- An unconfirmed Outpost pickup acknowledgement keeps its mirror queued with
|
|
348
|
-
`outcome_unknown` and its command id. Reconcile uses a strict owner snapshot;
|
|
349
|
-
it marks the mirror `remote_lost` only after the 15-minute grace when the
|
|
350
|
-
owner confirms the lane is missing. Unreachable owners remain counted.
|
|
351
|
-
|
|
352
|
-
### Fixed
|
|
353
|
-
|
|
354
|
-
- Confirm primary-dispatched Outpost profile recovery when it is queued for
|
|
355
|
-
reconcile, and sync the cleared recovery state to the primary lane mirror.
|
|
356
|
-
- Cache-first `hq lanes list` now allows one detached Outpost summary refresh
|
|
357
|
-
per HQ root at a time, avoiding duplicate work from overlapping list calls.
|
|
358
|
-
|
|
359
|
-
### Fixed
|
|
360
|
-
|
|
361
|
-
- The lanes hook reads only transcript bytes appended since its last check.
|
|
362
|
-
It still replays compaction messages and resets the offset when a transcript
|
|
363
|
-
is replaced or truncated.
|
|
364
|
-
|
|
365
|
-
### Added
|
|
366
|
-
|
|
367
|
-
- `hq core ontology merge-copies --only <file>` handles only the copy -> original pairs listed in a JSON file and reports every other found pair as skipped (`not_listed`).
|
|
368
|
-
|
|
369
|
-
### Changed
|
|
370
|
-
|
|
371
|
-
- The checkpoint ontology step always applies its ten quality rules (company
|
|
372
|
-
brief, annotation stripping on grok, grok-first backend, no link aliases,
|
|
373
|
-
first-name people, ambiguous concept links, dominant sibling link, hub
|
|
374
|
-
mention floor, concept-project link, named evidence). Their
|
|
375
|
-
`checkpoint.ontology.*` flags, on for everyone since 2026-09-29, are no
|
|
376
|
-
longer read.
|
|
377
|
-
|
|
378
|
-
### Added
|
|
379
|
-
|
|
380
|
-
- Record company-scoped exposure for printed CLI plan-limit notices when the default-off `billing.limit-at-action-prompt` flag is enabled; count an upgrade engagement only after the user confirms opening the link.
|
|
381
|
-
|
|
382
|
-
### Fixed
|
|
383
|
-
|
|
384
|
-
- `hq secrets` and other noninteractive person-token callers reuse a fresh same-principal session written by another process while a stale refresh is rejected.
|
|
385
|
-
|
|
386
|
-
## [5.286.0] — 2026-09-29
|
|
387
|
-
|
|
388
|
-
### Changed
|
|
389
|
-
|
|
390
|
-
- On Linux the daemon's sync runner writes its protocol output to a named
|
|
391
|
-
pipe, `~/.hq/daemon/protocol/sync.fifo`, instead of an anonymous pipe. With
|
|
392
|
-
`daemon.supervisor-handoff` on, an outpost daemon restart now hands sync to
|
|
393
|
-
the next daemon like the other services instead of stopping and restarting
|
|
394
|
-
it, and output the old daemon had not read reaches the new one. Other
|
|
395
|
-
platforms keep the anonymous pipe.
|
|
396
|
-
|
|
397
|
-
## [5.285.0] — 2026-09-29
|
|
398
|
-
|
|
399
|
-
- Route eligible Linux CI jobs onto ARM runners while retaining existing test and platform gates.
|
|
400
|
-
|
|
401
|
-
## [5.284.0] — 2026-09-29
|
|
402
|
-
- The existing Work Mesh MQTT subscriber can signal agent inbox wakes through a private local marker without persisting MQTT message contents.
|
|
403
|
-
- Add `hq agents jobs resume <uid> <jobId>` to re-enable paused agent job schedules.
|
|
404
|
-
|
|
405
|
-
### Fixed
|
|
406
|
-
|
|
407
|
-
- Recover a queued Outpost lane held for `worker_profile_changed` with its
|
|
408
|
-
printed `hq lanes resume <id> --worker <profile>` command. The lane owner's
|
|
409
|
-
profile copy is authoritative: the command records an authorized re-pin in
|
|
410
|
-
history, leaves the lane queued for normal reconcile admission, and syncs the
|
|
411
|
-
cleared recovery state back to the primary mirror. Other queued lanes still
|
|
412
|
-
require `hq lanes admit`.
|
|
413
|
-
|
|
414
|
-
- A remote `hq lanes list` read no longer dispatches owner hire summaries,
|
|
415
|
-
capacity probes, or mirror snapshots to other Outposts. Two Outposts that
|
|
416
|
-
each held a lane placed on the other ran `hq lanes list --json` on each other
|
|
417
|
-
without end, which filled both boxes with SSM commands.
|
|
418
|
-
- `hq doctor` labels the detected agent runtime value as `Agent platform` in human output. The JSON platform field and schema are unchanged.
|
|
419
|
-
|
|
420
|
-
### Fixed
|
|
421
|
-
|
|
422
|
-
- Refresh remote lane mirrors on hosts with an Outpost identity, while excluding
|
|
423
|
-
mirrors owned by that host. Resolve company attribution before checking the
|
|
424
|
-
mirror gate for refreshes and remote logs; unresolved lanes stay local.
|
|
425
|
-
Remote-read invocations skip refresh to prevent reciprocal Outpost fan-out.
|
|
426
|
-
|
|
427
|
-
## [5.283.0] — 2026-09-29
|
|
428
|
-
|
|
429
|
-
### Added
|
|
430
|
-
|
|
431
|
-
- `hq core ontology merge-copies --variants` merges two-file duplicate entity
|
|
432
|
-
groups whose names differ only in case, spacing or punctuation, keeping the
|
|
433
|
-
spaced name. Behind `checkpoint.ontology.merge-variants` (off by default).
|
|
434
|
-
|
|
435
|
-
## [5.282.0] — 2026-09-29
|
|
436
|
-
|
|
437
|
-
### Added
|
|
438
|
-
|
|
439
|
-
- Add native TypeScript handlers for `hq core knowledge-prefs` and `hq core
|
|
440
|
-
policy age-report`, `retire`, and `frontmatter`, gated by the default-off
|
|
441
|
-
`core-native-policy` flag. Bundled shell assets remain available for rollback
|
|
442
|
-
during the first release.
|
|
443
|
-
|
|
444
|
-
### Changed
|
|
445
|
-
|
|
446
|
-
- Pin the third-party package setup action in the fast-route benchmark workflow to its resolved commit.
|
|
447
|
-
- When the default-off `lanes.outpost-snapshot-cache` flag is enabled,
|
|
448
|
-
`hq lanes list` returns the last cached Outpost hire summaries immediately
|
|
449
|
-
and refreshes stale or missing summaries in the background. JSON rows show
|
|
450
|
-
snapshot age and stale/loading markers; text output includes a short stale or
|
|
451
|
-
loading note. `--fresh` waits for current owner summaries. Validated Outpost
|
|
452
|
-
snapshots live for three seconds; failed reads or lock acquisition are not
|
|
453
|
-
cached.
|
|
454
|
-
|
|
455
|
-
### Fixed
|
|
456
|
-
|
|
457
|
-
- `hq lanes reconcile` admits every queued lane that fits its caps in one pass
|
|
458
|
-
once CPU throttle clears or the starvation bound is reached.
|
|
459
|
-
- Reconcile compares cumulative CPU counters between passes and records the
|
|
460
|
-
measurement source; a queued Outpost lane with a changed worker profile now
|
|
461
|
-
reports the expected and actual hashes plus the senior re-pin command without
|
|
462
|
-
blocking later eligible lanes.
|
|
463
|
-
|
|
464
|
-
## [5.281.0] — 2026-09-29
|
|
465
|
-
|
|
466
|
-
### Added
|
|
467
|
-
|
|
468
|
-
- Add native TypeScript handlers for six `hq core ontology` commands. The new path is gated by `core-native-ontology`, which defaults off; the original scripts stay bundled for rollback.
|
|
469
|
-
|
|
470
|
-
### Fixed
|
|
471
|
-
|
|
472
|
-
- The default-off `lanes.remote-done-mirror` hq-flags gate refreshes nonterminal
|
|
473
|
-
Outpost mirrors before hire admission and during reconcile. It copies the
|
|
474
|
-
owner's terminal state and envelope summary to the primary. Unreachable
|
|
475
|
-
mirrors stay counted and are reported as unverified. `hq lanes logs` reads
|
|
476
|
-
logs from the owning Outpost.
|
|
477
|
-
|
|
478
|
-
## [5.280.0] — 2026-09-29
|
|
479
|
-
|
|
480
|
-
### Fixed
|
|
481
|
-
|
|
482
|
-
- Single-lane commands for Outpost-hosted lanes use a configurable pickup wait,
|
|
483
|
-
defaulting to 120 seconds. `hq lanes list` capacity probes use a separate
|
|
484
|
-
15-second timeout. A lane ID with a registered host suffix routes to that
|
|
485
|
-
Outpost first.
|
|
486
|
-
- hq group-grants outbound help now makes --group required. hq auth status
|
|
487
|
-
displays token expiry as a UTC time and relative duration.
|
|
488
|
-
|
|
489
|
-
## [5.279.0] — 2026-09-29
|
|
490
|
-
|
|
491
|
-
### Fixed
|
|
492
|
-
|
|
493
|
-
- Claude keep-alive resumes use the same account selection as manual resumes,
|
|
494
|
-
including profile pins and the optional recent-use tiebreak. If no eligible
|
|
495
|
-
account can be selected, the lane resumes on its current account and records
|
|
496
|
-
the failure.
|
|
497
|
-
|
|
498
|
-
## [5.278.0] — 2026-09-29
|
|
499
|
-
|
|
500
|
-
### Changed
|
|
501
|
-
|
|
502
|
-
- The CI and no-hermes pull request checks use read-only repository access, and CI pins its third-party actions to fixed commits. The fast-route benchmark workflow is pinned in a follow-up.
|
|
503
|
-
|
|
504
|
-
### Added
|
|
505
|
-
|
|
506
|
-
- Reconcile can stop an over-budget same-user search process descended from a
|
|
507
|
-
running lane when `rg`, `grep`, `ugrep`, or `ag` disables ignores on a broad
|
|
508
|
-
HQ root, or `find` searches a broad root without a shallow-depth or prune
|
|
509
|
-
exemption. The `lanes.runaway-tool-guard` hq-flags key is off by default. A
|
|
510
|
-
stopped search records its command and duration, then gets a notice to narrow
|
|
511
|
-
the search.
|
|
512
|
-
|
|
513
|
-
- Add the default-off `checkpoint.ontology.hub-mention-floor` hq-flags key.
|
|
514
|
-
When it is on, checkpoint ontology apply rejects a knowledge link to a
|
|
515
|
-
non-person entity that 50 or more other entity files link to when the input
|
|
516
|
-
names it fewer than 2 times in the text the model read (the chunk's line
|
|
517
|
-
range of the annotation-stripped copy when there is one). Concept links
|
|
518
|
-
redirected to a project are checked the same way. The rejection is reported
|
|
519
|
-
as `hub_under_mentioned`.
|
|
520
|
-
|
|
521
|
-
## [5.277.0] — 2026-09-29
|
|
522
|
-
|
|
523
|
-
### Fixed
|
|
524
|
-
|
|
525
|
-
- `hq lanes accounts list` and `accounts balance` now report a Claude account
|
|
526
|
-
whose home is missing on the current host and show the `set-home` repair
|
|
527
|
-
command. Balance exits non-zero for an enabled account in that state. On
|
|
528
|
-
Linux, account login stores a host-specific home and requires `--home` when
|
|
529
|
-
an existing account only has a shared home.
|
|
530
|
-
- Claude account balancing can use the default-off
|
|
531
|
-
`lanes.claude-account-balance-signals` hq-flags key to break equal live-lane
|
|
532
|
-
counts by the age of each account's latest completed lane run when provider
|
|
533
|
-
percentage data is unavailable.
|
|
534
|
-
|
|
535
|
-
### Added
|
|
536
|
-
|
|
537
|
-
- Add a default-off `cli.secrets-env-fast-path` hq-flags route for `hq secrets
|
|
538
|
-
env`. It skips the full CLI graph while reusing the existing credential,
|
|
539
|
-
usage-audit, server authorization, and offline-cache behavior.
|
|
540
|
-
- `hq lanes list --json` accepts repeatable `--lane` filters, `--active`, and
|
|
541
|
-
owner-only hire-hierarchy snapshots. Remote lane lookup now requests the
|
|
542
|
-
needed hierarchy once per Outpost invocation and falls back to an unfiltered
|
|
543
|
-
list when an older owner CLI rejects a new filter. Internal snapshot switches
|
|
544
|
-
stay out of normal help and the generated command catalog.
|
|
545
|
-
- Add the default-off `checkpoint.ontology.dominant-sibling-link` hq-flags key.
|
|
546
|
-
When it is on, checkpoint ontology apply moves a knowledge link from an entity
|
|
547
|
-
whose name another type also holds to the same-name entity that other entity
|
|
548
|
-
files link to most. The move needs at least three times the inbound links and
|
|
549
|
-
at least five. An example is project Build Your Own AGI moving to the concept,
|
|
550
|
-
or the numbered copy `hq-core 2` moving to `hq-core`. Moves are reported
|
|
551
|
-
under `dominant_sibling_redirects`, and no entity file is written.
|
|
552
|
-
- Add the default-off `lanes.running-superseded-message-delivery` hq-flags key
|
|
553
|
-
so messages can reach otherwise messageable superseded lanes outside the done
|
|
554
|
-
and interrupted states. Accepted messages include a warning; done and
|
|
555
|
-
interrupted lanes keep the existing senior and successor checks.
|
|
556
|
-
- `hq core delegate resolve`, `pickup`, `repo`, `secrets`, and `transfer` are
|
|
557
|
-
available through native implementations when the default-off
|
|
558
|
-
`core-native-delegate` flag is enabled; the bundled scripts remain as the
|
|
559
|
-
rollback path.
|
|
560
|
-
|
|
561
|
-
- `hq lanes set <lane> --model <model> --effort <level> [--reason <text>]`
|
|
562
|
-
changes the model or effort a lane uses from its next resume, including the
|
|
563
|
-
keep-alive resume of a done lead. Before, keep-alive always resumed on the
|
|
564
|
-
recorded values, so a lead's model could not change without racing it. The
|
|
565
|
-
lane itself or its senior may run it; each change is kept in
|
|
566
|
-
`settings_history` and shown by `hq lanes show`.
|
|
567
|
-
- `hq daemon sync` reports runner ownership and health, starts an immediate sync pass, pauses or resumes sync, and sets per-company sync mode. The daemon waits for an existing desktop runner to release its lease before starting its own.
|
|
568
|
-
- `hq lanes interrupt <lane-id>` stops a running lane's turn and leaves it
|
|
569
|
-
`interrupted` (reason `operator_interrupt`) with its provider session, so
|
|
570
|
-
`hq lanes resume` continues it. Keep-alive does not resume it. The command
|
|
571
|
-
records the session id from the interrupted turn's output, holds the
|
|
572
|
-
provider's admission lock until the worker has stopped, and reports
|
|
573
|
-
`resumable: false` with a stderr warning when the turn produced no session id.
|
|
574
|
-
- An operator `hq lanes resume` clears keep-alive's `terminal_state` block, so
|
|
575
|
-
keep-alive can continue the lane after that turn.
|
|
576
|
-
|
|
577
|
-
### Changed
|
|
578
|
-
|
|
579
|
-
- `hq lanes stop` on a running lane warns on stderr that the lane is killed and
|
|
580
|
-
cannot be resumed, names `hq lanes interrupt`, and adds `terminal: true` and
|
|
581
|
-
`resumable: false` to its JSON output, including for Outpost lanes stopped
|
|
582
|
-
from the primary.
|
|
583
|
-
- The lane drain hook avoids loading the lanes module graph when no lane is
|
|
584
|
-
resolved or its drop box is empty, while continuing to record tool activity
|
|
585
|
-
and using the full drain path whenever delivery or replay may be needed.
|
|
586
|
-
|
|
587
|
-
### Fixed
|
|
588
|
-
|
|
589
|
-
- Doctor command tests use temporary home and state directories and skip the
|
|
590
|
-
live integrations inventory, so their results do not depend on a developer's
|
|
591
|
-
local HQ state.
|
|
592
|
-
- Outpost resume account moves forward the primary's hire-grant context through
|
|
593
|
-
the owner-side session move. The owner checks the current senior and hire
|
|
594
|
-
capacity before starting the worker.
|
|
595
|
-
- Security: `hq dm inbox --json` and agent-side raw message output omit the delegated `actingContext` object.
|
|
596
|
-
|
|
597
|
-
## [5.276.0] — 2026-09-28
|
|
598
|
-
|
|
599
|
-
### Added
|
|
600
|
-
|
|
601
|
-
- Suggest inviting a teammate after the billing link in an over-limit Starter
|
|
602
|
-
notice for a one-member company, behind the default-off
|
|
603
|
-
`cli.limit-invite-teammate-v1` flag.
|
|
604
|
-
- Add a default-off native route for `hq core timeout-guard`, backed by a
|
|
605
|
-
private company flag snapshot and a paired CI latency benchmark.
|
|
606
|
-
|
|
607
|
-
### Changed
|
|
608
|
-
|
|
609
|
-
- Starter setup guidance now says it includes one integration.
|
|
610
|
-
|
|
611
|
-
### Fixed
|
|
612
|
-
|
|
613
|
-
- `hq core checkpoint` no longer loses the company files of a checkpoint that
|
|
614
|
-
was queued behind a busy sibling, behind the `checkpoint.ontology.queued-touches`
|
|
615
|
-
flag (off by default). The queued checkpoint records its company files, and
|
|
616
|
-
the next sibling run adds them to the ontology plan. A run whose own
|
|
617
|
-
checkpoint names no company takes the ontology step for the company whose
|
|
618
|
-
files have waited longest.
|
|
619
|
-
- `hq feedback bug|feature` validates report content and the serialized request
|
|
620
|
-
size before uploading screenshots or logs, avoiding orphaned attachments when
|
|
621
|
-
the server would reject the submission.
|
|
622
|
-
|
|
623
|
-
- Reconcile clears a stale `superseded` keep-alive block when no active successor
|
|
624
|
-
remains; the five-minute minimum retry delay still applies. The block is
|
|
625
|
-
cleared even when the lead then waits on backoff or a full queue, and the
|
|
626
|
-
clear does not move a done lead's retry clock past its done envelope.
|
|
627
|
-
|
|
628
|
-
## [5.275.0] — 2026-09-28
|
|
629
|
-
|
|
630
|
-
### Fixed
|
|
631
|
-
|
|
632
|
-
- `hq lanes` accepts full Claude model ids such as `claude-sonnet-5-5` and
|
|
633
|
-
`claude-opus-5-5` (spawn, `resume --from-failed`, account moves) when
|
|
634
|
-
`claude --help` names only the aliases. Before, the model check refused them
|
|
635
|
-
with `model_unsupported`.
|
|
636
|
-
|
|
637
|
-
### Added
|
|
638
|
-
|
|
639
|
-
- Track CLI feature events behind the default-off `cli.feature-used-telemetry-v1`
|
|
640
|
-
hq-flags key with a separate one-time disclosure.
|
|
641
|
-
|
|
642
|
-
- Outpost daemons can take over running services after a CLI update instead
|
|
643
|
-
of restarting all of them, behind the `daemon.supervisor-handoff` flag (off
|
|
644
|
-
by default). On Linux, the updated daemon adopts the services the previous
|
|
645
|
-
one left running and replaces only the ones whose command changed, one at a
|
|
646
|
-
time. Bots finish their running turns first. hq-cloud services keep running,
|
|
647
|
-
and the remote-control hosts restart their session once it is quiet. This
|
|
648
|
-
needs the systemd unit from this release: run `sudo hq daemon install` again
|
|
649
|
-
on each outpost.
|
|
650
|
-
- Company owners can turn the checkpoint Stop gate off or on for their company:
|
|
651
|
-
`hq company settings set --checkpoint-gate-enabled false|true`. Any member can
|
|
652
|
-
read the value with `hq company settings get`. The Stop gate reads a local
|
|
653
|
-
cache (`~/.hq/cache/checkpoint-gate/<company>.json`, refreshed in the
|
|
654
|
-
background at most every ten minutes by `hq core checkpoint-gate-setting
|
|
655
|
-
--refresh`) and skips the checkpoint block only when the session's company has
|
|
656
|
-
the gate turned off. Unset, unreachable with no cache, and sessions with no
|
|
657
|
-
company keep today's behaviour; `HQ_CHECKPOINT_GATE` still wins. Gated by the
|
|
658
|
-
hq-flag `checkpoint.gate.company-setting` (default off).
|
|
659
|
-
|
|
660
|
-
### Changed
|
|
661
|
-
|
|
662
|
-
- The systemd system unit now uses `KillMode=process`, so systemd signals only
|
|
663
|
-
the daemon. The daemon still stops its services on `systemctl stop`, and it
|
|
664
|
-
stops any service left over from a crashed daemon before starting new ones.
|
|
665
|
-
|
|
666
|
-
### Fixed
|
|
667
|
-
|
|
668
|
-
- `hq lanes create --placement auto` now runs on the caller when it is the best
|
|
669
|
-
capacity candidate. It matches the host id, machine identity or registered
|
|
670
|
-
Outpost id. Explicit `--outpost` self-targets still return
|
|
671
|
-
`outpost_self_target`.
|
|
672
|
-
- `hq sync status` validates an explicit `--hq-root` and continues to read
|
|
673
|
-
journals from the configured state directory, which it now prints.
|
|
674
|
-
- Root daemon tests use a temporary system adopted-record file; the CLI still
|
|
675
|
-
defaults to `/var/lib/hq/daemon/adopted.json`.
|
|
676
|
-
|
|
677
|
-
## [5.274.1] — 2026-09-28
|
|
678
|
-
|
|
679
|
-
### Fixed
|
|
680
|
-
|
|
681
|
-
- With lineage-aware supersession enabled, same-profile workers under the same
|
|
682
|
-
session senior no longer supersede each other. The recorded senior can
|
|
683
|
-
message its worker if it is later superseded.
|
|
684
|
-
|
|
685
|
-
## [5.274.0] — 2026-09-28
|
|
686
|
-
|
|
687
|
-
### Fixed
|
|
688
|
-
|
|
689
|
-
- `hq lanes grant` and other senior-authorized actions treat a missing `senior`
|
|
690
|
-
key in valid session metadata as `user`; explicit non-user values still refuse
|
|
691
|
-
authorization with a reason.
|
|
692
|
-
- Native Outpost message and resume routes now carry the owner's hire hierarchy,
|
|
693
|
-
authorize local-host resume contexts on their owner, and continue lane lookup
|
|
694
|
-
when another registered Outpost is unavailable.
|
|
695
|
-
|
|
696
|
-
### Added
|
|
697
|
-
|
|
698
|
-
- Guide interactive CLI users to their first work-bearing sync and confirm it
|
|
699
|
-
once, behind the `cli.first-sync-next-step` HQ flag.
|
|
700
|
-
- Add `hq core commands --json` for the registered command catalog and guard the fast path, sibling references, and packaged assets.
|
|
701
|
-
- Add a corpus recorder and differential runner for scaffold migration scripts.
|
|
702
|
-
- Add `hq deploy comments list` and `read` for comments on apps in the caller's org.
|
|
703
|
-
- Checkpoint ontology: behind `checkpoint.ontology.named-evidence` (off by
|
|
704
|
-
default), a knowledge link to the company's own company entity, or a
|
|
705
|
-
concept linked to its same-name project, needs evidence that names it as a
|
|
706
|
-
word. A name that only appears inside a path, domain, handle or tag, such as
|
|
707
|
-
`indigoai-us/hq` or `scope: company:indigo`, is rejected as
|
|
708
|
-
`unnamed_in_evidence` (CO-57).
|
|
709
|
-
|
|
710
|
-
### Fixed
|
|
711
|
-
|
|
712
|
-
- Add byte-for-byte checks for files fetched by `hq files get` and for
|
|
713
|
-
`company.yaml` after cloud demotion, using hq-core-staging's company seed.
|
|
714
|
-
|
|
715
|
-
### Changed
|
|
716
|
-
|
|
717
|
-
- Internal: moved the move, move-target and placement subcommands out of
|
|
718
|
-
`src/commands/lanes.ts`; no behaviour change.
|
|
719
|
-
|
|
720
|
-
## [5.273.0] — 2026-09-28
|
|
721
|
-
|
|
722
|
-
### Fixed
|
|
723
|
-
|
|
724
|
-
- `hq doctor --fix` rechecks after each repair and applies newly found fixes
|
|
725
|
-
for up to three passes. It reports each repair's pass and lists every backup
|
|
726
|
-
restore command.
|
|
727
|
-
- `hq doctor --fix --json` includes each repair's pass and backup, and its
|
|
728
|
-
restore command now undoes changes from every repair pass.
|
|
729
|
-
- Wrapped merge commands now pass through both hold and review checks. If a
|
|
730
|
-
merge command cannot be parsed, it is allowed with an unresolved repository
|
|
731
|
-
when no enabled hold or review check applies.
|
|
732
|
-
- A superseded worker still accepts messages from its recorded senior or a
|
|
733
|
-
successor lead in the same company and project. Company identity is resolved
|
|
734
|
-
from the lane or its project when the lane record has no company.
|
|
735
|
-
- `hq lanes orphans` resolves null-company lanes through their senior chain and
|
|
736
|
-
can list unresolved lanes with `--unscoped`. Idle user-senior lanes without
|
|
737
|
-
open stories are reported after `--user-idle-hours` (default 72).
|
|
738
|
-
|
|
739
|
-
### Added
|
|
740
|
-
|
|
741
|
-
- `hq doctor` checks whether the installed CLI meets the scaffold's declared
|
|
742
|
-
`requiresHqCli` version floor.
|
|
743
|
-
|
|
744
|
-
### Removed
|
|
745
|
-
|
|
746
|
-
- Removed the dead `lanes.tracker` record and import commands. Existing project
|
|
747
|
-
tracker files stay in place; `hq lanes checks` and `hq lanes report` retain
|
|
748
|
-
read-only access to the records they use.
|
|
749
|
-
|
|
750
|
-
## [5.272.0] — 2026-09-28
|
|
751
|
-
|
|
752
|
-
### Added
|
|
753
|
-
|
|
754
|
-
- Add `hq core ontology merge-copies`, gated by
|
|
755
|
-
`checkpoint.ontology.merge-copies`. It merges each `<name> N.md` entity copy
|
|
756
|
-
into its own original (aliases, back-references, relationship links and
|
|
757
|
-
signal count), repoints links to the copy, and with `--delete` removes merged
|
|
758
|
-
copies from the vault. Dry run by default.
|
|
759
|
-
|
|
760
|
-
## [5.271.0] — 2026-09-28
|
|
761
|
-
|
|
762
|
-
### Fixed
|
|
763
|
-
|
|
764
|
-
- `hq lanes create --outpost` reads `lanes.outpost-load-balancing` for the
|
|
765
|
-
resolved company, so enabled personal worker profiles can run on an Outpost.
|
|
766
|
-
- Resolve host-suffixed lanes created on a registered Outpost for grant,
|
|
767
|
-
message, and resume commands while keeping senior authorization on the primary.
|
|
768
|
-
- `hq lanes move-target` keeps the company placement gate, and unfiltered
|
|
769
|
-
`hq lanes list` resolves the active company for host capacity.
|
|
770
|
-
|
|
771
|
-
## [5.270.0] — 2026-09-28
|
|
772
|
-
|
|
773
|
-
### Fixed
|
|
774
|
-
|
|
775
|
-
- Company billing links in CLI plan-limit notices no longer depend on the
|
|
776
|
-
rollout flag.
|
|
777
|
-
|
|
778
|
-
### Removed
|
|
779
|
-
|
|
780
|
-
- Removed stale gate language from hire-grant command help. Enforcement remains
|
|
781
|
-
unconditional; backfill remains dry-run only.
|
|
782
|
-
|
|
783
|
-
### Fixed
|
|
784
|
-
|
|
785
|
-
- `hq files unshare --with` now accepts the same person UID principals as direct grants.
|
|
786
|
-
- The update gate no longer retries failed Windows installs through `sudo -n`.
|
|
787
|
-
|
|
788
|
-
## [5.269.0] — 2026-09-28
|
|
789
|
-
|
|
790
|
-
### Fixed
|
|
791
|
-
|
|
792
|
-
- Keep-alive no longer treats cancelled, killed, or failed project workers as
|
|
793
|
-
replacement leads, and recognizes descendants whose session senior belongs
|
|
794
|
-
to the lead.
|
|
795
|
-
- Company-scoped lane flags resolve ownership from a complete lane company,
|
|
796
|
-
then a complete mesh company, then the lane's unique project company.
|
|
797
|
-
|
|
798
|
-
- Merge hold and review checks unwrap commands through common shell wrappers.
|
|
799
|
-
Unparseable merge commands are blocked only when an enabled hold or review
|
|
800
|
-
enforcement applies.
|
|
801
|
-
|
|
802
|
-
### Added
|
|
803
|
-
|
|
804
|
-
- Add `hq lanes review` records and optional reviewed-head checks to
|
|
805
|
-
`hq lanes hold check` for senior lanes.
|
|
806
|
-
|
|
807
|
-
## [5.268.0] — 2026-09-28
|
|
808
|
-
|
|
809
|
-
### Fixed
|
|
810
|
-
|
|
811
|
-
- `hq core ontology duplicates` now proposes the original entity file as the
|
|
812
|
-
survivor when it ties with its numbered copies (`hq-core 2.md`). Before, the
|
|
813
|
-
path tiebreak picked the copy, which it did for 129 of 530 Indigo groups.
|
|
814
|
-
|
|
815
|
-
## [5.267.0] — 2026-09-28
|
|
816
|
-
|
|
817
|
-
- Company billing links opened by CLI plan-limit flows now carry cli_limit attribution into checkout telemetry.
|
|
818
|
-
|
|
819
|
-
### Fixed
|
|
820
|
-
|
|
821
|
-
- Local bots now read the idle inbox backoff flag with a 2 s budget. The
|
|
822
|
-
150 ms budget timed out from home networks, so bots kept polling every 2 s
|
|
823
|
-
even when the flag was on for them.
|
|
824
|
-
|
|
825
|
-
## [5.266.0] — 2026-09-28
|
|
826
|
-
|
|
827
|
-
### Added
|
|
828
|
-
|
|
829
|
-
- `hq daemon run --host desktop` lets the HQ desktop app run the daemon as its
|
|
830
|
-
own child process. The daemon then runs sync even though the app is open, and
|
|
831
|
-
records the app as its host in `state.json`. Older per-service installers
|
|
832
|
-
such as `hq mesh daemon install` treat a hosted daemon as installed and hand
|
|
833
|
-
their service to it.
|
|
834
|
-
|
|
835
|
-
## [5.265.0] — 2026-09-28
|
|
836
|
-
|
|
837
|
-
### Added
|
|
838
|
-
|
|
839
|
-
- The `lanes.kr-freshness` flag tracks each manager KPI in a runtime-owned
|
|
840
|
-
ledger and queues one corrective resume for each stalled KPI set. The
|
|
841
|
-
freshness window defaults to six hours and can be set with
|
|
842
|
-
`kr_freshness_hours` in the lanes config.
|
|
843
|
-
|
|
844
|
-
### Fixed
|
|
845
|
-
|
|
846
|
-
- Reconcile resolves a missing lane company for keep-alive and supersession
|
|
847
|
-
flag reads, and watch applies the same resolution to keep-alive checks.
|
|
848
|
-
Unusable project ownership remains unresolved; reconcile reports
|
|
849
|
-
`keep_alive_company_unresolved` or `keep_alive_flag_off` instead of silently
|
|
850
|
-
skipping those candidates.
|
|
851
|
-
|
|
852
|
-
## [5.264.0] — 2026-09-28
|
|
853
|
-
|
|
854
|
-
### Removed
|
|
855
|
-
|
|
856
|
-
- The `checkpoint.ontology.entity-hints` flag and its per-input `known_entities`
|
|
857
|
-
list. It was never turned on outside measurement runs.
|
|
858
|
-
|
|
859
|
-
## [5.263.0] — 2026-09-28
|
|
860
|
-
|
|
861
|
-
### Fixed
|
|
862
|
-
|
|
863
|
-
- The version gate compares offers with the running CLI and recognizes
|
|
864
|
-
generated global shims before reporting a PATH shadow.
|
|
865
|
-
|
|
866
|
-
## [5.262.0] — 2026-09-28
|
|
867
|
-
|
|
868
|
-
### Added
|
|
869
|
-
|
|
870
|
-
- The `checkpoint.ontology.concept-project-link` flag (off by default) lets
|
|
871
|
-
checkpoint ontology link a knowledge concept whose alias is ambiguous to the
|
|
872
|
-
one project with the same canonical name, such as HQ. It writes nothing.
|
|
873
|
-
|
|
874
|
-
### Fixed
|
|
875
|
-
|
|
876
|
-
- `hq doctor --live-runtimes` uses a Windows `.cmd` shim only when the sibling file exists.
|
|
877
|
-
- Flag reads validate company UIDs before registry requests while preserving local
|
|
878
|
-
override precedence; Work Mesh ignores malformed UID overrides.
|
|
879
|
-
|
|
880
|
-
## [5.261.0] — 2026-09-28
|
|
881
|
-
|
|
882
|
-
### Fixed
|
|
883
|
-
|
|
884
|
-
- Standing keep-alive leads now resume stories that remain open. Completed
|
|
885
|
-
stories resume only on standing leads with queued work, and reconcile reports
|
|
886
|
-
why other completed lanes stay idle.
|
|
887
|
-
|
|
888
|
-
## [5.260.0] — 2026-09-28
|
|
889
|
-
|
|
890
|
-
### Added
|
|
891
|
-
|
|
892
|
-
- The `lanes.blocker-freshness` flag checks manager blockers after each turn.
|
|
893
|
-
It resumes once for stale blockers, then alerts the senior on a repeated
|
|
894
|
-
stale set. The window defaults to four hours and can be set with
|
|
895
|
-
`blocker_freshness_hours` in the lanes config.
|
|
896
|
-
|
|
897
|
-
### Fixed
|
|
898
|
-
|
|
899
|
-
- Blocker-freshness escalations now reach session seniors through the existing
|
|
900
|
-
monitor-session inbox. Work Mesh is an optional signal, not delivery, and a
|
|
901
|
-
failed delivery is retried on a later stale turn.
|
|
902
|
-
|
|
903
|
-
## [5.259.0] — 2026-09-28
|
|
904
|
-
|
|
905
|
-
### Fixed
|
|
906
|
-
|
|
907
|
-
- The checkpoint stop gate now recognizes path-qualified `hq core checkpoint`
|
|
908
|
-
commands without treating lookalike text as a checkpoint.
|
|
909
|
-
- `hq doctor --live-runtimes` now invokes Windows npm shims through their `.cmd`
|
|
910
|
-
entry points.
|
|
911
|
-
|
|
912
|
-
## [5.258.0] — 2026-09-28
|
|
913
|
-
|
|
914
|
-
### Fixed
|
|
915
|
-
|
|
916
|
-
- Envelope repair runs through the currently installed CLI so a long-lived
|
|
917
|
-
watcher cannot use stale worker-profile validation.
|
|
918
|
-
- Updated the external-agent CLI guide to match the kit services, probe checks,
|
|
919
|
-
shipped skills, and MCP tools.
|
|
920
|
-
- Fixed the Docker agent-kit launcher to supervise configured services through
|
|
921
|
-
`hq agent kit run all`.
|
|
922
|
-
- `hq packages list` and `hq packs list` return an error when run outside an HQ tree.
|
|
923
|
-
- `hq index collections` prints a summary when no collections are expected or registered.
|
|
924
|
-
|
|
925
|
-
## [5.257.0] — 2026-09-28
|
|
926
|
-
|
|
927
|
-
### Added
|
|
928
|
-
|
|
929
|
-
- Add `hq lanes hold` to record company-scoped repository merge holds and
|
|
930
|
-
refuse recognized merge commands while the `lanes.repo-merge-hold` gate is
|
|
931
|
-
enabled. Hold history and release reasons stay in the local record. Checks
|
|
932
|
-
fail open with a named error when they cannot parse a command or read a hold,
|
|
933
|
-
and recognize pull-request URLs plus assignment, `env`, and `timeout` forms.
|
|
934
|
-
|
|
935
|
-
## [5.256.0] — 2026-09-28
|
|
936
|
-
|
|
937
|
-
## [5.255.0] — 2026-09-28
|
|
938
|
-
|
|
939
|
-
### Changed
|
|
940
|
-
|
|
941
|
-
- Internal: moved watch, monitor-check, and wait handlers to src/commands/lanes-watch.ts; behavior is unchanged.
|
|
942
|
-
|
|
943
|
-
## [5.254.0] — 2026-09-28
|
|
944
|
-
|
|
945
|
-
### Added
|
|
946
|
-
|
|
947
|
-
- The `lanes.manager-status-gate` flag checks a manager lane's declared
|
|
948
|
-
status file after each provider turn. It queues at most one corrective
|
|
949
|
-
resume if the file was not updated. An invalid or out-of-boundary mapping
|
|
950
|
-
disables the gate for that lane and lets the lane start.
|
|
951
|
-
|
|
952
|
-
### Fixed
|
|
953
|
-
|
|
954
|
-
- The end-of-session work report is no longer dropped when the background
|
|
955
|
-
transcript watcher polls late or adopts a session after a restart. A
|
|
956
|
-
synthesized `turn_end` now carries the transcript time, capped at now, and
|
|
957
|
-
is never earlier than the last event sent for the session.
|
|
958
|
-
- `hq db sql --remote` is hidden because remote SQL is not available in this
|
|
959
|
-
CLI build. Existing scripts get a clear error, and local SQL remains
|
|
960
|
-
available without `--remote`.
|
|
961
|
-
- `hq secrets` and `hq run` now use cached secrets during a temporary server outage, up to each secret’s configured cache lifetime. The default is three hours; revoked and high-security secrets still fail closed.
|
|
962
|
-
|
|
963
|
-
## [5.253.0] — 2026-09-27
|
|
964
|
-
|
|
965
|
-
### Added
|
|
966
|
-
|
|
967
|
-
- `hq publish --handle <handle>` publishes a pack under one of the creator handles your
|
|
968
|
-
account owns, for accounts that own more than one. The server refuses a handle you do
|
|
969
|
-
not own with a plain message. `--as` is unchanged and cannot be combined with `--handle`.
|
|
970
|
-
|
|
971
|
-
## [5.252.0] — 2026-09-27
|
|
972
|
-
|
|
973
|
-
### Added
|
|
974
|
-
|
|
975
|
-
- `hq report publish` takes a snapshot of the finished page and publishes it as the report's preview image, using a browser already installed on the computer. A page that names its own preview image keeps it. If no browser is found the report publishes without a preview.
|
|
976
|
-
|
|
977
|
-
## [5.251.0] — 2026-09-27
|
|
978
|
-
|
|
979
|
-
## [5.250.0] — 2026-09-27
|
|
980
|
-
|
|
981
|
-
### Fixed
|
|
982
|
-
|
|
983
|
-
- A Work Mesh session bound to a project and task keeps the binding episode the
|
|
984
|
-
- An enrolled agent that sets `HQ_AGENT_DIR` now acts as that agent in every
|
|
985
|
-
command, not only under `hq agent`. `hq dm` and `hq secrets` used to look
|
|
986
|
-
for a person's session instead, find none, and open a browser sign-in. On
|
|
987
|
-
the Runneth pilot that hung the first reply for four minutes. Only the
|
|
988
|
-
explicit variable counts, so a bot living beside its owner on the owner's
|
|
989
|
-
computer never takes over the owner's commands.
|
|
990
|
-
- On an agent host (Linux, no terminal, no display), a missing session now
|
|
991
|
-
fails at once with the fix instead of opening a browser sign-in that
|
|
992
|
-
nobody can complete.
|
|
993
|
-
- `hq agent enroll --name` no longer overrides `HQ_AGENT_DIR`. A bot that
|
|
994
|
-
pointed its identity at persistent storage had it written under `$HOME`
|
|
995
|
-
instead, where a rebuild erases it, with a message claiming a person was
|
|
996
|
-
signed in when nobody was.
|
|
997
|
-
- `wake.log` no longer records the wake command's standard output. A wake
|
|
998
|
-
command's normal output (a routine record, an echoed prompt) is not
|
|
999
|
-
diagnostic, and on a share without permissions the log is readable by
|
|
1000
|
-
anything with access to the share. Errors are still logged.
|
|
1001
|
-
- Bots now reply in the group or channel a message came from. Their inbox
|
|
1002
|
-
shows the channel id, `hq dm <channelId>` and the `hq_dm_send` tool post by
|
|
1003
|
-
that id (including unnamed group DMs), and the wake and inbox instructions
|
|
1004
|
-
say to answer there. Before, a bot answered a group message with a private
|
|
1005
|
-
DM to the sender, so the group never heard back. The instructions also tell
|
|
1006
|
-
bots not to answer another bot's greetings or sign-offs, so two bots stop
|
|
1007
|
-
acknowledging each other in a loop.
|
|
1008
|
-
- An agent whose identity files were moved or copied no longer goes silent an
|
|
1009
|
-
hour later. The credentials file records where the host key lives; when that
|
|
1010
|
-
path is gone and the key sits beside the credentials file, the CLI now points
|
|
1011
|
-
at it before running any agent command. `hq agent probe` also fails when the
|
|
1012
|
-
host key is missing, instead of passing on a cached token and leaving the
|
|
1013
|
-
agent to fail at its next refresh.
|
|
1014
|
-
|
|
1015
|
-
## [5.249.1] — 2026-09-27
|
|
1016
|
-
|
|
1017
|
-
## [5.249.0] — 2026-09-27
|
|
1018
|
-
|
|
1019
|
-
### Fixed
|
|
1020
|
-
|
|
1021
|
-
- Lanes flags with no registry row now quietly resolve off. Actual registry
|
|
1022
|
-
read failures still emit their `flag_read_failed` event.
|
|
1023
|
-
- Plan-limit notices prefer the current usage-limits upgrade URL and can use
|
|
1024
|
-
the company console billing page as a default-off hq-flags fallback.
|
|
1025
|
-
|
|
1026
|
-
## [5.248.0] — 2026-09-27
|
|
1027
|
-
|
|
1028
|
-
### Changed
|
|
1029
|
-
|
|
1030
|
-
- Internal: moved the message and resume subcommands out of src/commands/lanes.ts; no behaviour change
|
|
1031
|
-
|
|
1032
|
-
## [5.247.1] — 2026-09-27
|
|
1033
|
-
|
|
1034
|
-
### Fixed
|
|
1035
|
-
|
|
1036
|
-
- `hq core hq-session set company_slug` accepts case-sensitive ASCII company
|
|
1037
|
-
IDs that match company directory names and writes the same value to the
|
|
1038
|
-
session scope capability.
|
|
1039
|
-
- `hq bot create setup` stops before creating a bot when the reserved setup slug exists but its record cannot be verified.
|
|
1040
|
-
|
|
1041
|
-
## [5.247.0] — 2026-09-27
|
|
1042
|
-
### Changed
|
|
1043
|
-
|
|
1044
|
-
- The default-off `lanes.supersession-lineage-aware` flag lets a worker's lane
|
|
1045
|
-
keep-alive and message delivery continue when its newer lane senior or a
|
|
1046
|
-
same-profile sibling under that senior would otherwise look like a replacement.
|
|
1047
|
-
- Keep-alive setup reads lineage settings before provider locks, and message
|
|
1048
|
-
eligibility rechecks lane and retirement state after that read.
|
|
1049
|
-
|
|
1050
|
-
### Changed
|
|
1051
|
-
|
|
1052
|
-
- `hq agent kit install` no longer implies the `@reboot` crontab entry is
|
|
1053
|
-
enough on its own. The entry is installed and does restart the kit on an
|
|
1054
|
-
ordinary host, but on a container whose root filesystem is rebuilt each boot
|
|
1055
|
-
both cron and the CLI are erased along with it. The line now says so and
|
|
1056
|
-
says what to do instead.
|
|
1057
|
-
|
|
1058
|
-
## [5.246.0] — 2026-09-27
|
|
1059
|
-
|
|
1060
|
-
### Fixed
|
|
1061
|
-
|
|
1062
|
-
- Every file the agent kit writes now works on storage that has no file
|
|
1063
|
-
permissions. A bot whose agent home is a CIFS/SMB share (Azure Files) gets
|
|
1064
|
-
EPERM from `chmod`, and the writes were hitting that one at a time: the wake
|
|
1065
|
-
config could not be saved, so the bot could never be told mail had arrived,
|
|
1066
|
-
and any message carrying an attachment failed on download. All of them now
|
|
1067
|
-
go through one writer that asks for owner-only permissions, reports whether
|
|
1068
|
-
they actually took, and carries on either way. The same writer makes those
|
|
1069
|
-
writes atomic, so the inbox mirror, the seen/handled id lists, the kit
|
|
1070
|
-
config, the heartbeat record and saved attachments can no longer be read
|
|
1071
|
-
half-written by a concurrent poller. A chmod refused for any reason other
|
|
1072
|
-
than a missing capability is still a real error.
|
|
1073
|
-
- Picks up hq-cloud 6.18.10, which publishes the token refresh lock without
|
|
1074
|
-
hard links so a bot on a network share can mint a token at all.
|
|
1075
|
-
|
|
1076
|
-
## [5.245.0] — 2026-09-27
|
|
1077
|
-
|
|
1078
|
-
### Fixed
|
|
1079
|
-
|
|
1080
|
-
- Work Mesh sessions registered without a bound project (unresolved,
|
|
1081
|
-
needs_project, needs_task) no longer store the register receipt as their
|
|
1082
|
-
binding episode, and `hq mesh context bind-project` clears it. The server
|
|
1083
|
-
dropped every session-event batch carrying that id, so turn and session ends
|
|
1084
|
-
never landed and no work report posted. Existing state files are repaired on
|
|
1085
|
-
the next flush.
|
|
1086
|
-
|
|
1087
|
-
## [5.244.0] — 2026-09-27
|
|
1088
|
-
|
|
1089
|
-
### Fixed
|
|
1090
|
-
|
|
1091
|
-
- A bot whose agent home is on a network share can now mint a token. The
|
|
1092
|
-
refresh lock was a POSIX hard-link lock, and CIFS/SMB shares — Azure Files
|
|
1093
|
-
again — do not implement `link()` at all, so every mint failed with
|
|
1094
|
-
ENOTSUP and took the whole probe down with it: no heartbeat ever posted
|
|
1095
|
-
and the inbox poller retried and failed every 15 seconds. The lock now
|
|
1096
|
-
falls back to an exclusive create, which gives the same guarantee and
|
|
1097
|
-
works there. Contention still surfaces as EEXIST on both paths, so
|
|
1098
|
-
stale-owner reclamation is unchanged, and a link that fails for any other
|
|
1099
|
-
reason is still a real error.
|
|
1100
|
-
|
|
1101
|
-
### Changed
|
|
1102
|
-
|
|
1103
|
-
- The setup bot no longer posts "This one takes a minute. I'll reply here as
|
|
1104
|
-
soon as it's done." when a step runs long. Other bots keep their notice.
|
|
1105
|
-
- After the bundled setup bot connects its first app, it says "Great, <Tool> is
|
|
1106
|
-
connected" with a link to the company's integrations page on hq.computer.
|
|
1107
|
-
- The bundled setup bot invites teammates through the new-hire flow when HQ
|
|
1108
|
-
has it, and tells the person to have the invitee check their spam folder.
|
|
1109
|
-
|
|
1110
|
-
## [5.243.0] — 2026-09-27
|
|
1111
|
-
### Added
|
|
1112
|
-
|
|
1113
|
-
- `hq auth login` remembers the last provider used on this computer and shows the Cognito provider choice page on first login. Only the provider name is stored locally.
|
|
1114
|
-
|
|
1115
|
-
### Changed
|
|
1116
|
-
|
|
1117
|
-
- Internal: moved the accounts, sessions and questions subcommands out of src/commands/lanes.ts; no behaviour change
|
|
1118
|
-
|
|
1119
|
-
### Fixed
|
|
1120
|
-
|
|
1121
|
-
- Removed the unused `cli.network.force-ipv4` hq-flags lookup and forced IPv4
|
|
1122
|
-
startup path. The existing Node family-attempt timeout remains unchanged.
|
|
1123
|
-
- `hq auth login` continues when it cannot read or save the remembered provider. It prints a dim warning with the state path and error code; a save failure does not turn a successful sign-in into a login failure.
|
|
1124
|
-
- `hq doctor`, client health metadata, and feedback attachments now use the
|
|
1125
|
-
newest sync-log source from the desktop app or configured daemon directory.
|
|
1126
|
-
Daemon `HQ_DAEMON_DIR` overrides and log rotations are supported, and
|
|
1127
|
-
numeric runner error levels count in health metadata.
|
|
1128
|
-
|
|
1129
|
-
## [5.242.0] — 2026-09-27
|
|
1130
|
-
|
|
1131
|
-
### Changed
|
|
1132
|
-
|
|
1133
|
-
- Removed the completed `lanes.message-compaction-replay`,
|
|
1134
|
-
`lanes.outpost-question-visibility`, and
|
|
1135
|
-
`lanes.host-scoped-account-homes` gates. Their shipped behaviors now run
|
|
1136
|
-
unconditionally.
|
|
1137
|
-
- Account-home login and `set-home` no longer require an unrelated active
|
|
1138
|
-
company selection when `--company` is omitted; explicit `--company` values
|
|
1139
|
-
remain validated.
|
|
1140
|
-
|
|
1141
|
-
### Fixed
|
|
1142
|
-
|
|
1143
|
-
- The `cli.install-path-compatibility` hq-flags key enables pnpm v11+ global-path recognition. On Windows, it also passes drive-path tarballs to tar by filename from the archive directory. The flag defaults to off.
|
|
1144
|
-
|
|
1145
|
-
## [5.241.0] — 2026-09-27
|
|
1146
|
-
|
|
1147
|
-
### Fixed
|
|
1148
|
-
|
|
1149
|
-
- A bot whose only persistent storage is a network share can now enroll.
|
|
1150
|
-
Enrollment wrote its credentials and then locked them to the owner, and on
|
|
1151
|
-
a CIFS/SMB share mounted with a fixed file mode — Azure Files is the one
|
|
1152
|
-
that found this — that last step fails outright. Enrollment died there,
|
|
1153
|
-
left a temp file holding the private key behind, and offered no way
|
|
1154
|
-
forward: the only writable alternative was storage a container rebuild
|
|
1155
|
-
erases.
|
|
1156
|
-
|
|
1157
|
-
The write now reports whether owner-only permissions actually took, rather
|
|
1158
|
-
than assuming they did, and `hq agent enroll` says plainly when they did
|
|
1159
|
-
not: the credential is readable by anything else with access to that
|
|
1160
|
-
share. The file is still requested owner-only, the result is read back
|
|
1161
|
-
from the filesystem instead of trusted, a refused chmod on ordinary
|
|
1162
|
-
storage still fails loudly, and a failed write no longer leaves the secret
|
|
1163
|
-
behind in a temp file.
|
|
1164
|
-
- Resume can keep a lane on its recorded account when it uses a CLI-selected
|
|
1165
|
-
model, even if that account's configured default differs. A lane without an
|
|
1166
|
-
account allowlist may use any otherwise eligible account.
|
|
1167
|
-
- With a worker-profile account pin, resume keeps a healthy recorded account
|
|
1168
|
-
that is allowed by the pin even when the pin includes other accounts and the
|
|
1169
|
-
recorded account's default differs from the lane's CLI-selected model.
|
|
1170
|
-
|
|
1171
|
-
## [5.240.0] — 2026-09-27
|
|
1172
|
-
|
|
1173
|
-
### Added
|
|
1174
|
-
|
|
1175
|
-
- `hq lanes` worker profiles can pin a registry persona from `worker.yaml`.
|
|
1176
|
-
The composed prompt includes the worker's instructions, skill paths, done
|
|
1177
|
-
criteria, and stop checkpoints. Registry approval requirements are passed to
|
|
1178
|
-
workers, enforced on external-action envelopes, and recorded through the new
|
|
1179
|
-
senior-only `hq lanes approve` command.
|
|
1180
|
-
|
|
1181
|
-
## [5.239.0] — 2026-09-27
|
|
1182
|
-
|
|
1183
|
-
### Added
|
|
1184
|
-
|
|
1185
|
-
- `hq core checkpoint` can skip a knowledge link to a concept entity whose
|
|
1186
|
-
name is also the name of an entity of another type, such as a concept
|
|
1187
|
-
`hq-secrets` beside a project `HQ Secrets`. The report lists the skipped
|
|
1188
|
-
link as rejected with reason `ambiguous_type`. Signal and session inputs,
|
|
1189
|
-
other links and new entities are unchanged. Behind the hq-flags flag
|
|
1190
|
-
`checkpoint.ontology.skip-ambiguous-concept-links`, off by default.
|
|
1191
|
-
|
|
1192
|
-
## [5.238.0] — 2026-09-27
|
|
1193
|
-
|
|
1194
|
-
### Added: Lane orphan reporting
|
|
1195
|
-
|
|
1196
|
-
- `hq lanes checks` includes an orphaned-lane check. The company-scoped
|
|
1197
|
-
`hq lanes orphans` report lists candidates without changing their state. Add
|
|
1198
|
-
`--stop --reason <text>` to stop candidates that remain orphaned on recheck
|
|
1199
|
-
and record the reason in lane history.
|
|
1200
|
-
|
|
1201
|
-
## [5.237.0] — 2026-09-27
|
|
1202
|
-
|
|
1203
|
-
### Added
|
|
1204
|
-
|
|
1205
|
-
- Lane-store creates and updates record their hq-cli version. User-invoked
|
|
1206
|
-
writes from older CLIs are refused, while background writers preserve newer
|
|
1207
|
-
stamps and record Outpost owner versions separately. `hq lanes checks` warns
|
|
1208
|
-
about newer stamps, and `HQ_LANES_ALLOW_OLDER_WRITE=1` provides a one-command
|
|
1209
|
-
override with a warning.
|
|
1210
|
-
|
|
1211
|
-
## [5.236.0] — 2026-09-27
|
|
1212
|
-
|
|
1213
|
-
### Changed
|
|
1214
|
-
|
|
1215
|
-
- The bundled setup bot introduces itself by the name the desktop app gives
|
|
1216
|
-
it. For someone who started their own company it offers, once, to put a copy
|
|
1217
|
-
of itself in Slack (on the Workforce plan, checked rather than guessed), and
|
|
1218
|
-
flags its finish card so the card offers it too. It never offers this to
|
|
1219
|
-
someone who joined an existing company.
|
|
1220
|
-
|
|
1221
|
-
- The bundled setup bot now starts by asking whether you want HQ explained
|
|
1222
|
-
before setup or want to jump straight in. Its explanation puts the agents
|
|
1223
|
-
you already use first (Claude Code, Codex, Cursor, agents in Slack, and
|
|
1224
|
-
other agents connected in the HQ console), then your team, then bots. It
|
|
1225
|
-
can walk you through a Slack agent, an outside agent, inviting a teammate,
|
|
1226
|
-
and sharing a connected app or a key. It checks your company's plan before
|
|
1227
|
-
talking about limits or prices instead of guessing, and it no longer says
|
|
1228
|
-
inviting or sharing needs a paid plan. Same change as the setup worker in
|
|
1229
|
-
hq-core.
|
|
1230
|
-
- The bundled setup bot can end a message with two to four suggested replies
|
|
1231
|
-
(likely answers to a closed question, or clear next steps) that the desktop
|
|
1232
|
-
app shows as reply buttons. It leaves them out when the answer is something
|
|
1233
|
-
only you can type, like a name or an email. Needs a desktop app that renders
|
|
1234
|
-
them.
|
|
1235
|
-
|
|
1236
|
-
### Added
|
|
1237
|
-
|
|
1238
|
-
- `hq bot create --display-name <name>` gives a bot the human name people see
|
|
1239
|
-
in HQ (the DM list and how the bot introduces itself), up to 35 characters.
|
|
1240
|
-
The handle stays the key for every `hq bot` command, and the server slug is
|
|
1241
|
-
pinned to the handle, so the reserved setup bot and restore keep matching.
|
|
1242
|
-
|
|
1243
|
-
### Fixed
|
|
1244
|
-
|
|
1245
|
-
- The setup bot no longer posts its notes to itself ("Now write the worker.")
|
|
1246
|
-
into the chat. A message it writes right before a tool call is dropped; only
|
|
1247
|
-
messages a turn ends on reach the person. When a step runs past 30 seconds
|
|
1248
|
-
it now says "This one takes a minute. I'll reply here as soon as it's done."
|
|
1249
|
-
- Bots no longer post a stray "(no reply)" right after a real message. The
|
|
1250
|
-
fallback counted only posts whose delivery had finished, so a message still
|
|
1251
|
-
being sent when the turn ended looked like silence.
|
|
1252
|
-
|
|
1253
|
-
## [5.235.0] — 2026-09-27
|
|
1254
|
-
|
|
1255
|
-
### Changed
|
|
1256
|
-
|
|
1257
|
-
- `hq lanes` blocker, KPI, OKR, and directive commands, checks, imports, and
|
|
1258
|
-
reports read and write records in each project's local `tracker/` directory.
|
|
1259
|
-
The retired Work Mesh tracker path and question index were removed. KPI and
|
|
1260
|
-
OKR approvals also verify and save any supplied answered question ID.
|
|
1261
|
-
|
|
1262
|
-
### Fixed
|
|
1263
|
-
|
|
1264
|
-
- Removed the unused `cli.network.force-ipv4` hq-flags lookup and forced IPv4
|
|
1265
|
-
startup path. The existing Node family-attempt timeout remains unchanged.
|
|
1266
|
-
|
|
1267
|
-
## [5.234.2] — 2026-09-27
|
|
1268
|
-
|
|
1269
|
-
### Fixed
|
|
1270
|
-
|
|
1271
|
-
- The flag-registry worker now uses source embedded in the CLI, so package
|
|
1272
|
-
updates can no longer cause startup failures by removing its script.
|
|
1273
|
-
|
|
1274
|
-
## [5.234.1] — 2026-09-27
|
|
1275
|
-
|
|
1276
|
-
### Fixed
|
|
1277
|
-
|
|
1278
|
-
- A primary resume now confirms and syncs an Outpost lane queued during
|
|
1279
|
-
owner-side admission. (#926)
|
|
1280
|
-
- Outpost messages and account moves for children of primary-hosted lanes now
|
|
1281
|
-
carry the bounded hire-grant context required by the owner. (#926)
|
|
1282
|
-
- Outpost message resumes, moves, and admission queues now sync the returned
|
|
1283
|
-
owner lane record back to the primary. (#926)
|
|
1284
|
-
|
|
1285
|
-
## [5.234.0] — 2026-09-27
|
|
1286
|
-
|
|
1287
|
-
### Added
|
|
1288
|
-
|
|
1289
|
-
- A lane's senior can explicitly resume a failed lane's recorded provider
|
|
1290
|
-
session with `hq lanes resume --from-failed --reason`; the secret-scanned
|
|
1291
|
-
reason and recovered failure are recorded in lane history. Failed lanes
|
|
1292
|
-
continue to refuse ordinary messages. (#927)
|
|
1293
|
-
|
|
1294
|
-
### Fixed
|
|
1295
|
-
|
|
1296
|
-
- `hq agents stop` says the stop was accepted and shows the status the API returns, instead of saying the agent has already stopped. (#922)
|
|
1297
|
-
|
|
1298
|
-
## [5.233.0] — 2026-09-27
|
|
1299
|
-
|
|
1300
|
-
### Added
|
|
1301
|
-
|
|
1302
|
-
- `hq lanes wait` exits on the first selected envelope, pending-question, or
|
|
1303
|
-
state change across the requested lanes. It uses a startup baseline and a
|
|
1304
|
-
bounded two-second poll interval.
|
|
1305
|
-
|
|
1306
|
-
## [5.232.0] — 2026-09-27
|
|
1307
|
-
|
|
1308
|
-
### Added
|
|
1309
|
-
|
|
1310
|
-
- `checkpoint.ontology.sync-gated` (off by default) turns the checkpoint
|
|
1311
|
-
ontology step on like `checkpoint.ontology`. Older CLI builds do not read it,
|
|
1312
|
-
so it can be turned on widely without them. With either flag on, the step runs
|
|
1313
|
-
only when the hq-cloud bundled with this CLI and the one the hq daemon runs
|
|
1314
|
-
are both 6.18.7 or later; otherwise it skips and says which copy is older.
|
|
1315
|
-
It also skips while the daemon's sync still runs from before its hq-cloud
|
|
1316
|
-
copy was installed. `hq core ontology apply` checks again before it writes and
|
|
1317
|
-
reports `sync_client_old` with the reason. Earlier hq-cloud releases pushed
|
|
1318
|
-
stale copies of deleted entities.
|
|
1319
|
-
|
|
1320
|
-
## [5.231.1] — 2026-09-27
|
|
1321
|
-
|
|
1322
|
-
### Fixed
|
|
1323
|
-
|
|
1324
|
-
- `hq crm entity upsert` checks CRM settings first and prints the enable hint without sending a write when CRM is disabled.
|
|
1325
|
-
|
|
1326
|
-
## [5.231.0] — 2026-09-27
|
|
1327
|
-
|
|
1328
|
-
### Added
|
|
1329
|
-
|
|
1330
|
-
- Behind the off-by-default `checkpoint.ontology.first-name-people` flag, the
|
|
1331
|
-
checkpoint ontology instructions tell the model to name a person by their
|
|
1332
|
-
first name when neither the input nor the company's entities give more,
|
|
1333
|
-
instead of leaving them out. With the flag on, apply also defers a one-word
|
|
1334
|
-
person whose word starts an existing person's fuller name or alias (`John`
|
|
1335
|
-
when `John Smith` exists), since the model cannot see the entity tree. With
|
|
1336
|
-
the flag off the instructions and apply are unchanged.
|
|
1337
|
-
|
|
1338
|
-
## [5.230.2] — 2026-09-27
|
|
1339
|
-
|
|
1340
|
-
### Fixed
|
|
1341
|
-
|
|
1342
|
-
- Resuming a terminal Outpost lane whose senior lives on the primary now checks
|
|
1343
|
-
hire-grant capacity on both hosts using the primary hierarchy, then syncs the
|
|
1344
|
-
running owner record back to the primary. An owner CLI that rejects the
|
|
1345
|
-
hierarchy context now fails with an upgrade-required error instead of retrying
|
|
1346
|
-
without the grant check.
|
|
1347
|
-
|
|
1348
|
-
## [5.230.1] — 2026-09-27
|
|
1349
|
-
|
|
1350
|
-
### Fixed
|
|
1351
|
-
|
|
1352
|
-
- A queued account move keeps its pending resume without reserving a running slot.
|
|
1353
|
-
|
|
1354
|
-
## [5.230.0] — 2026-09-27
|
|
1355
|
-
|
|
1356
|
-
### Added
|
|
1357
|
-
|
|
1358
|
-
- Behind the off-by-default `checkpoint.ontology.no-link-aliases` flag, a
|
|
1359
|
-
checkpoint ontology candidate that links to an existing entity no longer adds
|
|
1360
|
-
aliases to that entity's file. The plan records `link_aliases: false` and
|
|
1361
|
-
apply reports the link without writing. New entities keep their aliases.
|
|
1362
|
-
Most aliases written through links were other names the text mentioned next
|
|
1363
|
-
to the entity, such as `Publisher` on `indigo`.
|
|
1364
|
-
|
|
1365
|
-
## [5.229.2] — 2026-09-27
|
|
1366
|
-
|
|
1367
|
-
### Fixed
|
|
1368
|
-
|
|
1369
|
-
- Standing keep-alive leads now wait after done turns for drop-box messages,
|
|
1370
|
-
undelivered answers, or pending resumes; queued answers are included in the
|
|
1371
|
-
next turn.
|
|
1372
|
-
- An unreadable question record no longer aborts reconciliation of other lanes.
|
|
1373
|
-
|
|
1374
|
-
## [5.229.1] — 2026-09-27
|
|
1375
|
-
|
|
1376
|
-
### Fixed
|
|
1377
|
-
|
|
1378
|
-
- An authorized `hq lanes resume --worker` on an Outpost re-pins a changed
|
|
1379
|
-
worker profile before spawn, preserves the provider session, records the
|
|
1380
|
-
hash change in lane history, and syncs the resulting lane record to primary.
|
|
1381
|
-
|
|
1382
|
-
## [5.229.0] — 2026-09-27
|
|
1383
|
-
|
|
1384
|
-
### Added
|
|
1385
|
-
|
|
1386
|
-
- Behind the off-by-default `checkpoint.ontology.entity-hints` flag, each
|
|
1387
|
-
knowledge input in the checkpoint ontology plan lists up to 25 existing
|
|
1388
|
-
entities whose name appears in the text the model reads
|
|
1389
|
-
(`known_entities`). The model is told to use those names instead of naming a
|
|
1390
|
-
new entity, and to skip glossary or translation table rows, paths and names
|
|
1391
|
-
built from tags or slugs.
|
|
1392
|
-
|
|
1393
|
-
## [5.228.4] — 2026-09-27
|
|
1394
|
-
|
|
1395
|
-
### Fixed
|
|
1396
|
-
|
|
1397
|
-
- Account history now distinguishes automatic moves caused by a quota hold, an
|
|
1398
|
-
unavailable or logged-out account, or uneven load.
|
|
1399
|
-
|
|
1400
|
-
## [5.228.3] — 2026-09-27
|
|
1401
|
-
|
|
1402
|
-
### Fixed
|
|
1403
|
-
|
|
1404
|
-
- Work Mesh tracker rows use the local record fields. Missing blocker
|
|
1405
|
-
`opened_at` values use `createdAt`, and invalid mesh rows identify Work Mesh
|
|
1406
|
-
as their source.
|
|
1407
|
-
- KPI and OKR records retain their status when read from Work Mesh, including in
|
|
1408
|
-
`kpi list`, `okr list`, and `team --json` output.
|
|
1409
|
-
|
|
1410
|
-
## [5.228.2] — 2026-09-27
|
|
1411
|
-
|
|
1412
|
-
## [5.228.1] — 2026-09-27
|
|
1413
|
-
|
|
1414
|
-
### Fixed
|
|
1415
|
-
|
|
1416
|
-
- Reparenting an Outpost lane from the primary now dispatches to the owner,
|
|
1417
|
-
where the hierarchy, tenant, depth, and enabled hire-grant checks are repeated.
|
|
1418
|
-
The primary syncs the changed lane and each descendant whose depth changed.
|
|
1419
|
-
`hq lanes show <lane-id>` refreshes that Outpost lane and its descendants
|
|
1420
|
-
from the owner, including senior history, depth, and grants. Lane sessions
|
|
1421
|
-
now share their lane's depth, and an SSM owner dispatch can change a
|
|
1422
|
-
user-senior lane's grant without allowing a lane caller to impersonate the
|
|
1423
|
-
user.
|
|
1424
|
-
|
|
1425
|
-
## [5.228.0] — 2026-09-27
|
|
1426
|
-
|
|
1427
|
-
### Changed
|
|
1428
|
-
|
|
1429
|
-
- Lane hire grants and Claude account balancing are always active.
|
|
1430
|
-
`backfill-grants --apply` refuses to write; dry-run output remains available.
|
|
1431
|
-
|
|
1432
|
-
## [5.227.1] — 2026-09-27
|
|
1433
|
-
|
|
1434
|
-
### Fixed
|
|
1435
|
-
|
|
1436
|
-
- `hq files browse` and `hq files search` no longer crash on vaults with many objects.
|
|
1437
|
-
|
|
1438
|
-
## [5.227.0] — 2026-09-27
|
|
1439
|
-
|
|
1440
|
-
### Added
|
|
1441
|
-
|
|
1442
|
-
- `hq lanes tracker`, `checks`, `import`, and `report` use the Work Mesh tracker
|
|
1443
|
-
store when `lanes.tracker-mesh` is enabled. Company questions are indexed and
|
|
1444
|
-
shared across hosts; reconcile polls for remote answers, wakes the owning lane,
|
|
1445
|
-
and stamps delivery once.
|
|
1446
|
-
|
|
1447
|
-
## [5.226.0] — 2026-09-26
|
|
1448
|
-
|
|
1449
|
-
### Added
|
|
1450
|
-
|
|
1451
|
-
- `hq staff reset-test-account <email>` wipes a designated test account through
|
|
1452
|
-
the hq-pro admin API. Defaults to a dry-run that lists what would be deleted;
|
|
1453
|
-
`--execute` prompts for the typed email confirmation before wiping, and
|
|
1454
|
-
`--yes` skips the prompt. Refuses to run for callers whose stored email is
|
|
1455
|
-
not on the staff list.
|
|
1456
|
-
- `hq staff test-account add|remove|list` manages the designated-test-account
|
|
1457
|
-
registry through the same admin API. `add` and `remove` require staff
|
|
1458
|
-
callers; `list` returns the current registry entries.
|
|
1459
|
-
|
|
1460
|
-
### Fixed
|
|
1461
|
-
|
|
1462
|
-
- `hq lanes message` now probes the worker PID and start time before queueing.
|
|
1463
|
-
Watcher and reconcile recover accepted inbox messages through the same
|
|
1464
|
-
resume path after classifying an exited worker; undrained messages on done,
|
|
1465
|
-
killed, retired, or superseded lanes are archived as undeliverable.
|
|
1466
|
-
- Failed queued-message recovery restores unaccepted claims to the inbox and
|
|
1467
|
-
records the failure. Recovery also sees leftover draining and inflight files,
|
|
1468
|
-
and synchronous classification shares watcher ownership to prevent duplicate
|
|
1469
|
-
repair and resume work.
|
|
1470
|
-
- `hq agent enroll --name <bot>` now works on a computer where a person is signed in. It enrolls into `~/.hq-agent/<bot>/` and refuses only if that folder already holds an agent. Before, it refused because of the person's login and told you to pass `--name`, which you already had. Enrolling with no name on such a computer (the default local folder) had the same bug.
|
|
1471
|
-
- Pushes made as an agent now record the agent as the uploader. Before, on a computer where a person was also signed in, the files were stamped with the person's email and id.
|
|
1472
|
-
- When the server refuses some paths in a push (for example, another member's file in a private folder `foo/`), the warning now says the server refused them, in `hq sync push`, `hq sync now` and `hq sync push --all`. Before, it said the files were outside your write access and to ask an admin for a grant.
|
|
1473
|
-
|
|
1474
|
-
## [5.225.0] — 2026-09-26
|
|
1475
|
-
|
|
1476
|
-
### Changed
|
|
1477
|
-
|
|
1478
|
-
- Local bots can use the default-off `agents.inbox-poll-backoff-local-cli`
|
|
1479
|
-
gate to increase idle inbox polling from 2 seconds to a capped 30-second
|
|
1480
|
-
backoff. New messages and completed turns reset the cadence.
|
|
1481
|
-
|
|
1482
|
-
## [5.224.0] — 2026-09-26
|
|
1483
|
-
|
|
1484
|
-
### Added
|
|
1485
|
-
|
|
1486
|
-
- `hq lanes import --company <slug> --dry-run` previews tracker records from
|
|
1487
|
-
the mapped team ledgers and status files. `--apply` writes stable, proposed
|
|
1488
|
-
records; later runs update changed imports and leave unchanged records alone.
|
|
1489
|
-
|
|
1490
|
-
### Fixed
|
|
1491
|
-
|
|
1492
|
-
- When `hq daemon pin-hq-cloud` names a version that is not installed yet, the
|
|
1493
|
-
daemon keeps running the newest installed hq-cloud instead of falling back
|
|
1494
|
-
to the older copy bundled with the CLI, and logs a warning naming the
|
|
1495
|
-
missing version. The updater then installs the pinned version and the
|
|
1496
|
-
daemon switches to it. Before, a pin that did not match the installed copy
|
|
1497
|
-
silently ran the bundled copy, which on one outpost meant a months-old sync
|
|
1498
|
-
runner without recent fixes.
|
|
1499
|
-
|
|
1500
|
-
## [5.223.0] — 2026-09-26
|
|
1501
|
-
|
|
1502
|
-
### Fixed
|
|
1503
|
-
|
|
1504
|
-
- Manual resume and explicitly opted-in keep-alive reconcile can move a lane
|
|
1505
|
-
off a disabled or logged-out Claude account on the same host, preserving the
|
|
1506
|
-
provider session, provider, and model. `hq lanes watch` reports each
|
|
1507
|
-
logged-in-to-logged-out transition once with the affected lane ids. The
|
|
1508
|
-
watcher stops polling terminal keep-alive lanes when no resume can run and
|
|
1509
|
-
shares one local account probe across matching lanes per poll. Quota and
|
|
1510
|
-
model failures keep their existing account-selection path and reason.
|
|
1511
|
-
|
|
1512
|
-
- Client-health flag checks refresh expired person identity and use machine
|
|
1513
|
-
identity when available. Identity refresh has a separate bound, and failed
|
|
1514
|
-
lookups keep the existing doctor fallback path.
|
|
1515
|
-
|
|
1516
|
-
## [5.222.0] — 2026-09-26
|
|
1517
|
-
|
|
1518
|
-
- Checkpoint ontology, behind `checkpoint.ontology.multi-writer` (off by
|
|
1519
|
-
default): entity versions that sync set aside after losing a push race are
|
|
1520
|
-
merged back at the start of each plan (aliases, back-references, the higher
|
|
1521
|
-
`signal_count`, the later `last_updated`). Any other difference keeps both
|
|
1522
|
-
and leaves the set-aside copy, and an entity deleted since is not
|
|
1523
|
-
re-created. Every entity file the step writes is recorded in
|
|
1524
|
-
`.hq/ontology-outbox/<company>.json`. The apply report counts duplicate
|
|
1525
|
-
entity groups, and `hq core ontology duplicates --company <slug> [--json]`
|
|
1526
|
-
lists them.
|
|
1527
|
-
|
|
1528
|
-
## [5.221.0] — 2026-09-26
|
|
1529
|
-
|
|
1530
|
-
### Added
|
|
1531
|
-
|
|
1532
|
-
- `hq lanes report` prints the company-scoped owner report and `hq lanes team
|
|
1533
|
-
<slug>` shows OKRs, KPI trends, work, blockers, and questions. Successful
|
|
1534
|
-
reports save their per-company report time for the next report and team page.
|
|
1535
|
-
PR, release, and deployment references on stories may be strings, integers,
|
|
1536
|
-
or objects. Only timestamped objects count as activity. Invalid rows appear
|
|
1537
|
-
under their team's errors, set exit status 2, and leave the saved report time
|
|
1538
|
-
unchanged.
|
|
1539
|
-
## [5.220.0] — 2026-09-26
|
|
1540
|
-
|
|
1541
|
-
### Fixed
|
|
1542
|
-
|
|
1543
|
-
- Lane questions now resolve their company from the lane's project before using
|
|
1544
|
-
the active HQ company. Project ownership is used only when unique; otherwise
|
|
1545
|
-
active-company selection applies without choosing a project owner. Legacy
|
|
1546
|
-
questions can be answered with `--company <slug>` when lane or project
|
|
1547
|
-
ownership cannot be resolved.
|
|
1548
|
-
|
|
1549
|
-
- CLI updates no longer interrupt background flag refreshes when the
|
|
1550
|
-
self-contained worker rollout is enabled.
|
|
1551
|
-
|
|
1552
|
-
## [5.219.0] — 2026-09-26
|
|
1553
|
-
|
|
1554
|
-
### Added
|
|
1555
|
-
|
|
1556
|
-
- `hq lanes checks` reports six company-scoped tracker checks, prints the
|
|
1557
|
-
records that need attention, and exits with status 2 when any check fails.
|
|
1558
|
-
Input errors return a path-bearing error envelope with status 1. Teams come
|
|
1559
|
-
from `juniors.json` mappings or projects with blocker, KPI, OKR, or directive
|
|
1560
|
-
tracker records, so unrelated project PRDs are not read. Thresholds can be
|
|
1561
|
-
adjusted in `personal/lanes/config.json`.
|
|
1562
|
-
|
|
1563
|
-
### Fixed
|
|
1564
|
-
|
|
1565
|
-
- `hq lanes` questions now record their company and `delivered_at` when a lane
|
|
1566
|
-
receives an answer. Secret-shaped question text and answer notes are rejected
|
|
1567
|
-
before storage. Existing questions without a company remain readable.
|
|
1568
|
-
|
|
1569
|
-
- Legacy personal-store answer notes continue to load from personal storage
|
|
1570
|
-
after their lane gains mesh-company attribution.
|
|
1571
|
-
|
|
1572
|
-
## [5.218.0] — 2026-09-26
|
|
1573
|
-
|
|
1574
|
-
### Fixed
|
|
1575
|
-
|
|
1576
|
-
- The reconcile summary now lists opted-in lanes it could not resume and why.
|
|
1577
|
-
Stderr provides reason-specific guidance and recommends reapplying opt-in only
|
|
1578
|
-
when that can help.
|
|
1579
|
-
|
|
1580
|
-
## [5.217.0] — 2026-09-26
|
|
1581
|
-
|
|
1582
|
-
### Fixed
|
|
1583
|
-
|
|
1584
|
-
- Keep-alive resumes a lane interrupted by `exited_with_partial_output` when
|
|
1585
|
-
the interruption followed its explicit opt-in. Quota and host-loss
|
|
1586
|
-
interruptions, login failures, and stopped lanes remain ineligible.
|
|
1587
|
-
|
|
1588
|
-
## [5.216.0] — 2026-09-26
|
|
1589
|
-
|
|
1590
|
-
### Fixed
|
|
1591
|
-
|
|
1592
|
-
- Lane watchers keep valid questions from a malformed `ask` envelope when
|
|
1593
|
-
repair is skipped, cannot start, or still produces invalid output. The lane
|
|
1594
|
-
stores the validation errors, and recovered question context includes them.
|
|
1595
|
-
Repair spawns ignore unknown profile metadata and log the field names.
|
|
1596
|
-
`hq lanes create` and `hq lanes resume --worker` keep strict validation.
|
|
1597
|
-
|
|
1598
|
-
- `hq lanes` stops sending status updates for stories missing from the project
|
|
1599
|
-
board. The watcher reports the refusal once per lane run and keeps appending
|
|
1600
|
-
lane events.
|
|
1601
|
-
|
|
1602
|
-
## [5.215.0] — 2026-09-26
|
|
1603
|
-
|
|
1604
|
-
### Fixed
|
|
1605
|
-
|
|
1606
|
-
- hq-cli 5.211.0 could resume a retired lead from its worker profile's
|
|
1607
|
-
`keep_alive` value. Reconcile now requires an explicit lane opt-in written
|
|
1608
|
-
after the latest envelope, and skips retired or superseded leads.
|
|
1609
|
-
|
|
1610
|
-
## [5.214.0] — 2026-09-26
|
|
1611
|
-
|
|
1612
|
-
### Added
|
|
1613
|
-
|
|
1614
|
-
- `hq lanes keep-alive <lane-id> --on|--off` lets a lane's senior opt in on
|
|
1615
|
-
the host that owns the lane.
|
|
1616
|
-
|
|
1617
|
-
- `hq doctor` now checks the last hour of the sync runner log for stuck
|
|
1618
|
-
realtime lag, cloud permission refusals, runner restart loops, device-limit
|
|
1619
|
-
backoff, and repeated conflicts. Client health reports send these to Sentry
|
|
1620
|
-
as reason codes and counts only.
|
|
1621
|
-
|
|
1622
|
-
### Fixed
|
|
1623
|
-
|
|
1624
|
-
- The desktop app's first sync push now uploads files inside private folders.
|
|
1625
|
-
The credentials the app hands to `hq sync push --creds-from-stdin` cannot
|
|
1626
|
-
write there directly, so the push also passes the vault config to hq-cloud
|
|
1627
|
-
6.18.5, which sends those files through presigned uploads.
|
|
1628
|
-
|
|
1629
|
-
## [5.213.0] — 2026-09-26
|
|
1630
|
-
|
|
1631
|
-
### Fixed
|
|
1632
|
-
|
|
1633
|
-
- `hq lanes accounts set-home` and `login` return
|
|
1634
|
-
`company_selection_failed` for company-selection errors without a stack
|
|
1635
|
-
trace. Other resolver failures remain `internal` and include a stack trace.
|
|
1636
|
-
|
|
1637
|
-
## [5.212.0] — 2026-09-26
|
|
1638
|
-
|
|
1639
|
-
### Changed
|
|
1640
|
-
|
|
1641
|
-
- `checkpoint.ontology.ignore-annotations` now strips annotator entity lists from the ontology inputs only when the checkpoint sibling runs on grok. On a machine that falls back to claude or codex the model reads the annotated inputs as before, because Claude on stripped inputs lost 0.139 recall on the gold-v2 set.
|
|
1642
|
-
|
|
1643
|
-
## [5.211.0] — 2026-09-26
|
|
1644
|
-
|
|
1645
|
-
### Fixed
|
|
1646
|
-
|
|
1647
|
-
- Reconcile now applies `keep_alive` from a recorded worker profile to older
|
|
1648
|
-
lanes whose lane field is unset. An explicit lane value wins, unreadable
|
|
1649
|
-
profiles fail closed and are reported, and `lanes show --json` identifies
|
|
1650
|
-
the source of its effective value.
|
|
1651
|
-
|
|
1652
|
-
## [5.210.0] — 2026-09-26
|
|
1653
|
-
|
|
1654
|
-
### Fixed
|
|
1655
|
-
|
|
1656
|
-
- Lane messages delivered during a provider turn are replayed after transcript
|
|
1657
|
-
compaction when `lanes.message-compaction-replay` is enabled, limited to that
|
|
1658
|
-
provider turn. Monitor events keep their data framing.
|
|
1659
|
-
|
|
1660
|
-
## [5.209.0] — 2026-09-26
|
|
1661
|
-
|
|
1662
|
-
### Added
|
|
1663
|
-
|
|
1664
|
-
- Behind the off-by-default `checkpoint.ontology.grok-backend` flag, `hq core checkpoint --backend auto` tries grok first for the payload company and falls back to the usual order when grok is missing or crashed last time. The detached ontology plan reads the flag and records it in the company state directory, so the foreground checkpoint makes no network call; a flag change applies from the checkpoint after the next plan.
|
|
1665
|
-
- Behind the off-by-default `checkpoint.ontology.ignore-annotations` flag, the checkpoint ontology plan gives the model a copy of each knowledge input without the old cloud annotator's `entities:` front-matter list and entity links, which were mostly wrong and which the model copied.
|
|
1666
|
-
|
|
1667
|
-
## [5.208.0] — 2026-09-26
|
|
1668
|
-
|
|
1669
|
-
### Fixed
|
|
1670
|
-
|
|
1671
|
-
- `hq lanes accounts set-home` and `login` accept `--company <slug|uid>` and
|
|
1672
|
-
scope the host-account-home flag read to that company.
|
|
1673
|
-
- The `hq daemon` updater now installs new hq-cloud patch releases. It looks up the newest release in the bundled major version and installs that exact version. Before, `npm install` with a version range kept an installed copy that already matched the range, so the updater stayed on 6.18.1 after 6.18.2 was published. A failed lookup is reported as a failed update and installs nothing.
|
|
1674
|
-
|
|
1675
|
-
## [5.207.0] — 2026-09-26
|
|
1676
|
-
|
|
1677
|
-
### Added
|
|
1678
|
-
|
|
1679
|
-
- The SessionStart hook can send client health reports straight to Sentry when
|
|
1680
|
-
the company enables `client-health.sentry-direct`. Reports exclude doctor
|
|
1681
|
-
text and company names. With the flag off, the hook keeps using the existing
|
|
1682
|
-
feedback route.
|
|
1683
|
-
|
|
1684
|
-
## [5.206.0] — 2026-09-26
|
|
1685
|
-
|
|
1686
|
-
### Fixed
|
|
1687
|
-
|
|
1688
|
-
- Startup recovery no longer waits the full install deadline when an unchanged retired hq-cli package remains beside the install. Node 24 ESM loader file-read `ENOENT` errors also enter the existing recovery path and receive a report tag.
|
|
1689
|
-
|
|
1690
|
-
## [5.205.0] — 2026-09-26
|
|
1691
|
-
|
|
1692
|
-
### Added
|
|
1693
|
-
|
|
1694
|
-
- `hq lanes create` and `hq lanes resume` accept `--keep-alive`. When the
|
|
1695
|
-
default-off `lanes.lead-keep-alive` flag is enabled, an opted-in lead lane
|
|
1696
|
-
resumes after a `done` turn that leaves its story open. The first resume
|
|
1697
|
-
waits at least five minutes; later attempts back off to an hour and stop
|
|
1698
|
-
after 24 consecutive attempts.
|
|
1699
|
-
`hq lanes show --json` reports the counter and next eligible time.
|
|
1700
|
-
- Worker profiles accept boolean `keep_alive`. Add this key only after the
|
|
1701
|
-
hq-cli release with this change is installed; older CLIs reject unknown
|
|
1702
|
-
profile metadata.
|
|
1703
|
-
|
|
1704
|
-
### Fixed
|
|
1705
|
-
|
|
1706
|
-
- Claude result text that says `Not logged in` or `Please run /login` now marks
|
|
1707
|
-
a lane failed with `account_not_logged_in` when no envelope was written.
|
|
1708
|
-
|
|
1709
|
-
## [5.204.0] — 2026-09-26
|
|
1710
|
-
|
|
1711
|
-
### Added
|
|
1712
|
-
|
|
1713
|
-
- `hq lanes accounts set-home` adds a host-specific home to the synced lane
|
|
1714
|
-
account registry. Account status and Claude balancing now distinguish a
|
|
1715
|
-
missing home from a signed-out account.
|
|
1716
|
-
|
|
1717
|
-
## [5.203.0] — 2026-09-26
|
|
1718
|
-
|
|
1719
|
-
### Added
|
|
1720
|
-
|
|
1721
|
-
- `hq monitor` runs a script in the background and delivers each line it prints to a lane or to a Claude, Codex, or Grok session, marked as monitor data. `--persistent` keeps it running past the 30-minute limit of Claude's Monitor tool and cannot be combined with `--timeout`. An idle target gets a check-in every 55 minutes so its next turn still reads from the prompt cache. The command is off unless the `monitor.enabled` flag is on.
|
|
1722
|
-
- `hq lanes message` and `hq lanes resume` now reach a Grok lane that has finished or is blocked. The lane records Grok's session id when it exits, and the follow-up continues that session with `grok --single --resume`. A Grok lane still cannot move to another Grok account.
|
|
1723
|
-
|
|
1724
|
-
## [5.202.1] — 2026-09-26
|
|
1725
|
-
|
|
1726
|
-
### Fixed
|
|
1727
|
-
|
|
1728
|
-
- Security: `hq integrations` now masks credentials in MCP endpoint URLs in
|
|
1729
|
-
text, JSON, connect hints, errors, and `hq doctor` integration remediation.
|
|
1730
|
-
API requests still use the original endpoint URL.
|
|
1731
|
-
|
|
1732
|
-
## [5.202.0] — 2026-09-26
|
|
1733
|
-
|
|
1734
|
-
### Added
|
|
1735
|
-
|
|
1736
|
-
- Behind the off-by-default checkpoint.ontology.company-brief flag, the checkpoint ontology plan writes company-brief.md from the local entities, signals and source index, with no model call; recent signals are dated through their source.
|
|
1737
|
-
|
|
1738
|
-
## [5.201.4] — 2026-09-25
|
|
1739
|
-
|
|
1740
|
-
### Fixed
|
|
1741
|
-
|
|
1742
|
-
- Claude account balancing on lane resume now respects the attached worker
|
|
1743
|
-
profile's account pin, skips accounts pinned to a different model, and treats
|
|
1744
|
-
`--account` naming the current account as a keep request for message/resume.
|
|
1745
|
-
|
|
1746
|
-
## [5.201.3] — 2026-09-25
|
|
1747
|
-
|
|
1748
|
-
### Fixed
|
|
1749
|
-
|
|
1750
|
-
- A flag-registry worker whose startup fails because the working directory was deleted or its package files were being replaced no longer creates a Sentry issue. Other flag-registry worker errors remain visible with a worker tag.
|
|
1751
|
-
|
|
1752
|
-
## [5.201.2] — 2026-09-25
|
|
1753
|
-
|
|
1754
|
-
### Changed
|
|
1755
|
-
|
|
1756
|
-
- The checkpoint ontology plan tells the model to name a person by the full name the input or the company's entities give, not a first name alone.
|
|
1757
|
-
|
|
1758
|
-
## [5.201.1] — 2026-09-25
|
|
1759
|
-
|
|
1760
|
-
### Fixed
|
|
1761
|
-
|
|
1762
|
-
- Outpost grant checks now include child lanes from the owning Outpost. Owner
|
|
1763
|
-
records take precedence over duplicate primary records, and each grant
|
|
1764
|
-
command reads the owner lane list once.
|
|
1765
|
-
- Outpost grant checks re-read owner lanes under the hire lock and use the
|
|
1766
|
-
validated Outpost CLI override for the lane-list probe.
|
|
1767
|
-
|
|
1768
|
-
## [5.201.0] — 2026-09-25
|
|
1769
|
-
|
|
1770
|
-
### Added
|
|
1771
|
-
|
|
1772
|
-
- `hq daemon pin-hq-cloud <version>` pins the daemon-managed hq-cloud version to an exact semver within the bundled major, including prereleases; `--clear` removes the pin.
|
|
1773
|
-
|
|
1774
|
-
### Fixed
|
|
1775
|
-
|
|
1776
|
-
- The daemon carries `Environment=` assignments from Linux `outpost-sync.service` drop-ins into its sync unit.
|
|
1777
|
-
|
|
1778
|
-
## [5.200.1] — 2026-09-25
|
|
1779
|
-
|
|
1780
|
-
### Fixed
|
|
1781
|
-
|
|
1782
|
-
- `hq lanes questions show` and `answer` preserve `question_not_found` when
|
|
1783
|
-
Outpost question visibility is disabled, even if an owned Outpost lane has
|
|
1784
|
-
no company. `questions list --all-hosts` also omits the company-unavailable
|
|
1785
|
-
error while the gate is off.
|
|
1786
|
-
|
|
1787
|
-
## [5.200.0] — 2026-09-25
|
|
1788
|
-
|
|
1789
|
-
### Fixed
|
|
1790
|
-
|
|
1791
|
-
- `hq lanes list` now fetches Outpost hire summaries once per host and reuses
|
|
1792
|
-
them for 60 seconds. Missing or invalid owner rows keep the local summary and
|
|
1793
|
-
include a warning.
|
|
1794
|
-
|
|
1795
|
-
## [5.199.0] — 2026-09-25
|
|
1796
|
-
|
|
1797
|
-
### Added
|
|
1798
|
-
|
|
1799
|
-
- `hq lanes questions list --all-hosts` reads questions from Outposts that own
|
|
1800
|
-
this primary's lanes. Rows include the host, and an unavailable Outpost is
|
|
1801
|
-
named in `errors` while local questions remain available. Remote rows use the
|
|
1802
|
-
audience computed by the owner, and eligible Outpost reads run with bounded
|
|
1803
|
-
concurrency. The primary can show and answer an Outpost-only question, then
|
|
1804
|
-
save the owner's confirmed answer locally. Cross-host lookup requires the
|
|
1805
|
-
company-scoped `lanes.outpost-question-visibility` hq-flags gate. Use
|
|
1806
|
-
`--company` to limit a list or answer to one company.
|
|
1807
|
-
|
|
1808
|
-
### Fixed
|
|
1809
|
-
|
|
1810
|
-
- Registry-backed hq-flags readers now use the central registry endpoint when
|
|
1811
|
-
`HQ_FLAGS_API_URL` is unset or blank. Explicit endpoints and local overrides
|
|
1812
|
-
keep precedence, and process-wide gates retain their legacy fallback until a
|
|
1813
|
-
registry snapshot is ready.
|
|
1814
|
-
|
|
1815
|
-
## [5.198.1] — 2026-09-25
|
|
1816
|
-
|
|
1817
|
-
### Fixed
|
|
1818
|
-
|
|
1819
|
-
- Session questions stay with live or unknown sessions until their configured
|
|
1820
|
-
unanswered timeout; only a positive `session_end` advances immediately. When
|
|
1821
|
-
there is no Work Mesh entry, hq-cli checks Claude transcript metadata in
|
|
1822
|
-
configured account homes without opening transcript contents, using the
|
|
1823
|
-
newest matching mtime. Metadata errors remain visible and do not block the
|
|
1824
|
-
independent timeout. The timeout defaults to 600 seconds. A running-lane
|
|
1825
|
-
answer reports `awaiting_next_tool_call` after its durable dropbox append.
|
|
1826
|
-
|
|
1827
|
-
## [5.198.0] — 2026-09-25
|
|
1828
|
-
|
|
1829
|
-
### Added
|
|
1830
|
-
|
|
1831
|
-
- `hq lanes blocker`, `kpi`, `okr`, and `directive` commands record project
|
|
1832
|
-
tracker data locally when the company-scoped `lanes.tracker` gate is enabled.
|
|
1833
|
-
KPI and OKR sets remain proposals until explicitly approved, and resolved
|
|
1834
|
-
blockers are hidden unless listed with `--all`.
|
|
1835
|
-
|
|
1836
|
-
### Fixed
|
|
1837
|
-
|
|
1838
|
-
- A local bot no longer posts "I didn't finish that — I was restarted while I
|
|
1839
|
-
was working on it" into a room on messages nobody addressed to it. An
|
|
1840
|
-
unmentioned room turn interrupted by a restart or owner stop is now acked
|
|
1841
|
-
and cleared silently on the next start; a saved final answer for that turn
|
|
1842
|
-
is still posted, and DMs and @-mentioned room turns still get the notice
|
|
1843
|
-
(2026-09-25 hq-launch-ga-testing incident). Markers written by older
|
|
1844
|
-
versions without the new `silenceable` field keep today's behaviour.
|
|
1845
|
-
- A grok turn that exits non-zero with a whole-stdout pretty-printed JSON
|
|
1846
|
-
envelope (rather than NDJSON events) now logs the real error text —
|
|
1847
|
-
`result` / `error.message` / `subtype` — instead of the last characters of
|
|
1848
|
-
the JSON tail (`"costUsdTicks" | } | "numTurns" | }`). Log only; never
|
|
1849
|
-
posted to a person.
|
|
1850
|
-
|
|
1851
|
-
## [5.197.0] — 2026-09-25
|
|
1852
|
-
|
|
1853
|
-
### Fixed
|
|
1854
|
-
|
|
1855
|
-
- Concurrent QMD reindex runs after sync and `hq index sync` are serialized behind the shared lock when the default-off `qmd.reindex-single-flight` hq-flags canary is enabled. A skipped sync reports no successful update.
|
|
1856
|
-
- Process-wide hq-flags gates now resolve with the active company's identifier when a company is bound.
|
|
1857
|
-
- Concurrent `hq lanes` updates now wait for an in-progress project story-ledger
|
|
1858
|
-
lock receipt, avoiding transient `story_ledger_lock_invalid` errors.
|
|
1859
|
-
|
|
1860
|
-
## [5.196.0] — 2026-09-25
|
|
1861
|
-
|
|
1862
|
-
## [5.195.1] — 2026-09-25
|
|
1863
|
-
|
|
1864
|
-
### Fixed
|
|
1865
|
-
|
|
1866
|
-
- Local bots can no longer loop with each other in a room. Three guards close
|
|
1867
|
-
- A checkpoint run from inside an HQ lane no longer passes the lane's identity
|
|
1868
|
-
(`HQ_LANE_ID`, `HQ_PROJECT_ID`, `HQ_STORY_ID`, `HQ_POLICY_WORKER_DIR`) to the
|
|
1869
|
-
background sibling. Before, the lane drop-box hook delivered the lane's
|
|
1870
|
-
operator messages to the sibling instead of the lane.
|
|
1871
|
-
|
|
1872
|
-
## [5.195.0] — 2026-09-25
|
|
1873
|
-
|
|
1874
|
-
### Fixed
|
|
1875
|
-
|
|
1876
|
-
- Work Mesh transcript-watch quiet `session_end` for hook-covered sessions now
|
|
1877
|
-
uses the shared sequence and counts hook turns (#818).
|
|
1878
|
-
|
|
1879
|
-
## [5.194.1] — 2026-09-25
|
|
1880
|
-
|
|
1881
|
-
### Fixed
|
|
1882
|
-
|
|
1883
|
-
- `hq core ontology apply` no longer creates a new entity that is probably an
|
|
1884
|
-
existing one. A candidate whose alias is already another entity's name or
|
|
1885
|
-
alias, or a person whose name contains every word of an existing person's
|
|
1886
|
-
full name (for example "Chaudhry Hassaan Saleem" and "Hassaan Saleem"), is
|
|
1887
|
-
held back and reported as a suspect duplicate.
|
|
1888
|
-
|
|
1889
|
-
- `hq auth` and other CLI fetches can opt into IPv4-first networking through the
|
|
1890
|
-
default-off `cli.network.force-ipv4` hq-flags gate. The canary is bounded and
|
|
1891
|
-
keeps explicit Node network options in control.
|
|
1892
|
-
|
|
1893
|
-
## [5.194.0] — 2026-09-25
|
|
1894
|
-
|
|
1895
|
-
### Added
|
|
1896
|
-
|
|
1897
|
-
- `hq core checkpoint` can now maintain the company ontology, the job the
|
|
1898
|
-
cloud ontology gardener did. It is off unless the hq-flags flag
|
|
1899
|
-
`checkpoint.ontology` is on for the checkpoint's company
|
|
1900
|
-
(`HQ_FLAG_CHECKPOINT_ONTOLOGY` is the local override). When a checkpoint
|
|
1901
|
-
names a company, the background sibling runs `hq core ontology plan`, which
|
|
1902
|
-
checks the flag and lists the company knowledge and signal files that
|
|
1903
|
-
changed since the last run, within a fixed input and token budget. The
|
|
1904
|
-
sibling writes entity candidates for those files, and
|
|
1905
|
-
`hq core ontology apply` validates them and writes them. It updates an
|
|
1906
|
-
existing entity rather than creating a duplicate, and keeps entity ids in
|
|
1907
|
-
the cloud's format. It writes only to the checkpoint's own company and never
|
|
1908
|
-
follows a symlink. It adds a back-reference to each signal that names an
|
|
1909
|
-
entity, skipping signals the gardener already linked, and a rerun changes
|
|
1910
|
-
nothing. Files under `@{key}` audience folders are not read.
|
|
1911
|
-
|
|
1912
|
-
## [5.193.1] — 2026-09-25
|
|
1913
|
-
|
|
1914
|
-
### Fixed
|
|
1915
|
-
|
|
1916
|
-
- Work Mesh project sync maps ledger states (`todo` to `queued`, `in_progress` to
|
|
1917
|
-
`in_progress`, `in_review`/`verification`/`blocked` to `review`, and `done`/`dropped`
|
|
1918
|
-
to `done`), with explicit `status` taking precedence and `passes` preserved. PRD
|
|
1919
|
-
sync emits review transitions; Board readers preserve unknown status strings and
|
|
1920
|
-
ignore unknown ledger states. `hq mesh project ensure --dry-run` previews merged
|
|
1921
|
-
Board statuses without writing.
|
|
1922
|
-
- Claude lane balance reports now normalize Outpost lane-list and queued show
|
|
1923
|
-
views before strict lane-record validation, including `no_story_reason: null`.
|
|
1924
|
-
|
|
1925
|
-
## [5.193.0] — 2026-09-25
|
|
1926
|
-
|
|
1927
|
-
### Fixed
|
|
1928
|
-
|
|
1929
|
-
- `hq secrets set` now handles a closed stdin descriptor during terminal cleanup.
|
|
1930
|
-
|
|
1931
|
-
### Improved
|
|
1932
|
-
|
|
1933
|
-
- Sentry reports for failed skill-wrapper replacement now include bounded ownership-state tags.
|
|
1934
|
-
|
|
1935
|
-
## [5.192.2] — 2026-09-25
|
|
1936
|
-
|
|
1937
|
-
### Fixed
|
|
1938
|
-
|
|
1939
|
-
- Create, resume, automatic repair, and apply now read
|
|
1940
|
-
`lanes.claude-account-balance` from hq-flags. `HQ_FLAG_*` remains the local
|
|
1941
|
-
override, and a registry read failure keeps the gate off. The
|
|
1942
|
-
`accounts balance --json` report includes `balance_gate_enabled`.
|
|
1943
|
-
- `hq lanes accounts balance --apply` now honors each lane's company-scoped
|
|
1944
|
-
gate, skips disabled company lanes, and rechecks the gate before moving.
|
|
1945
|
-
|
|
1946
|
-
## [5.192.1] — 2026-09-25
|
|
1947
|
-
|
|
1948
|
-
### Fixed
|
|
1949
|
-
|
|
1950
|
-
- `hq lanes questions answer` now resumes an asking lane as soon as its final
|
|
1951
|
-
pending question is answered. When capacity or throttling prevents a start,
|
|
1952
|
-
hq-cli queues the lane with an `answered_questions` resume and the answer
|
|
1953
|
-
timestamp. It sends Outpost answers to the lane's owner and reports any
|
|
1954
|
-
unanswered sibling questions or a named wake error. After the owner confirms
|
|
1955
|
-
the answer, the primary's question copy is marked answered as well.
|
|
1956
|
-
|
|
1957
|
-
## [5.192.0] — 2026-09-25
|
|
1958
|
-
|
|
1959
|
-
### Added
|
|
1960
|
-
|
|
1961
|
-
- `hq agents models` lists cloud-agent catalog entries by provider and supports JSON output.
|
|
1962
|
-
Provision and update validate model IDs against the catalog. They use the cached
|
|
1963
|
-
catalog when the endpoint is unavailable, and rely on server validation if no cache exists.
|
|
1964
|
-
|
|
1965
|
-
### Fixed
|
|
1966
|
-
|
|
1967
|
-
- `hq report adopt` checks whether scheduled jobs are enabled for the company before creating a cloud job, and explains when the server rejects a disabled job.
|
|
1968
|
-
|
|
1969
|
-
## [5.191.0] — 2026-09-25
|
|
1970
|
-
|
|
1971
|
-
### Fixed
|
|
1972
|
-
|
|
1973
|
-
- `hq agents provision` now rejects an invalid `--slug` before sending the agent create request.
|
|
1974
|
-
|
|
1975
|
-
## [5.190.0] — 2026-09-25
|
|
1976
|
-
|
|
1977
|
-
### Added
|
|
1978
|
-
|
|
1979
|
-
- `hq lanes` validates story references against project `prd.json` files and records
|
|
1980
|
-
explicit `--no-story` reasons. When `lanes.story-ledger` is enabled, lane state,
|
|
1981
|
-
blockers, questions, and PR links sync back to project stories. Terminal history
|
|
1982
|
-
writes are atomic and retry-safe. Stale-lock cleanup reclaims abandoned ownerless
|
|
1983
|
-
locks after their directory ages while preserving fresh replacements.
|
|
1984
|
-
`hq lanes status --project` summarizes workers, PRs, blockers, questions, and story
|
|
1985
|
-
counts.
|
|
1986
|
-
|
|
1987
|
-
### Fixed
|
|
1988
|
-
|
|
1989
|
-
- `hq bot promote` accepts server-signed upload URLs without SSE headers when the bucket supplies encryption. SSE header names are checked case-insensitively, and any supplied encryption must be a complete SSE-KMS pair.
|
|
1990
|
-
- Company slug lookup errors now point to the supported `hq sources entities` command.
|
|
1991
|
-
|
|
1992
|
-
### Added
|
|
1993
|
-
|
|
1994
|
-
- QMD native-binding startup failures after sync can emit an actionable warning
|
|
1995
|
-
when the `qmd.reindex-startup-warning` hq-flags canary is enabled. The flag
|
|
1996
|
-
defaults off, and sync still succeeds when indexing cannot run.
|
|
1997
|
-
|
|
1998
|
-
## [5.189.0] — 2026-09-25
|
|
1999
|
-
|
|
2000
|
-
### Added
|
|
2001
|
-
|
|
2002
|
-
- `hq lanes resume` and `hq lanes message` accept `--effort <level>` for the next resumed provider turn. Attaching a worker profile applies its configured effort when the command has no effort flag. With neither option, the lane keeps its recorded effort. Outpost commands forward the flag and report `outpost_effort_unsupported` when the remote CLI rejects it.
|
|
2003
|
-
|
|
2004
|
-
## [5.188.1] — 2026-09-25
|
|
2005
|
-
|
|
2006
|
-
### Fixed
|
|
2007
|
-
|
|
2008
|
-
- `hq lanes grant` now applies grants for Outpost-hosted lanes on their owner.
|
|
2009
|
-
The primary sends a bounded hierarchy snapshot and its evaluated hq-flags
|
|
2010
|
-
decision; the owner revalidates the authorized senior, applies carve,
|
|
2011
|
-
occupancy, and terminal-parent checks, then syncs the changed record to the
|
|
2012
|
-
primary. Dispatched lane errors include sanitized owner details.
|
|
2013
|
-
|
|
2014
|
-
## [5.188.0] — 2026-09-25
|
|
2015
|
-
|
|
2016
|
-
### Added
|
|
2017
|
-
|
|
2018
|
-
- `hq lanes accounts balance --provider claude` reports per-host account load,
|
|
2019
|
-
login state, and proposed moves. `--apply` moves only sessions between turns
|
|
2020
|
-
and requires the default-off `lanes.claude-account-balance` hq-flags gate.
|
|
2021
|
-
Claude lane creation now considers live lane counts across readable hosts,
|
|
2022
|
-
including lanes whose real host identity is local on an Outpost. It checks
|
|
2023
|
-
login on the target host, reports unknown login state separately, and records
|
|
2024
|
-
the selection and any host gaps on the lane. Explicit `--account` choices
|
|
2025
|
-
remain in effect. Automatic resume repair runs only while the balance gate is
|
|
2026
|
-
enabled; with the gate off, disabled and logged-out accounts keep their usual
|
|
2027
|
-
refusal behavior without reading other hosts.
|
|
2028
|
-
|
|
2029
|
-
## [5.187.0] — 2026-09-25
|
|
2030
|
-
|
|
2031
|
-
### Fixed
|
|
2032
|
-
|
|
2033
|
-
- `hq mesh context prd-sync` sends only stories whose Board status changed (a first snapshot of already-done stories is not re-emitted). Quiet `session_end` summaries read Claude Code `result` lines and Codex/Grok `item.completed` agent messages, not only `type=assistant` turns.
|
|
2034
|
-
|
|
2035
|
-
## [5.186.0] — 2026-09-25
|
|
2036
|
-
|
|
2037
|
-
### Changed
|
|
2038
|
-
|
|
2039
|
-
- A local bot's scheduled jobs now live with the bot. `hq bot jobs` stores them in the bot's folder (`jobs.json`) and the running bot fires them itself, through the same path as a cloud-fired job. No cloud setting is involved. A run missed while the computer slept or the bot was stopped runs once as a catch-up; a job never overlaps itself. The 25-job cap per bot is unchanged.
|
|
2040
|
-
|
|
2041
|
-
## [5.185.1] — 2026-09-25
|
|
2042
|
-
|
|
2043
|
-
### Fixed
|
|
2044
|
-
|
|
2045
|
-
- `lanes.hire-grants` resolves its company-scoped hq-flags value before gating.
|
|
2046
|
-
A valid local override wins; missing rows or failed reads leave enforcement
|
|
2047
|
-
off. Backfills check the unscoped value and each target company's value
|
|
2048
|
-
before writing. `hire_grant_exhausted` names the grantor and includes the
|
|
2049
|
-
same recovery message in JSON and on stderr.
|
|
2050
|
-
|
|
2051
|
-
## [5.185.0] — 2026-09-25
|
|
2052
|
-
|
|
2053
|
-
### Fixed
|
|
2054
|
-
|
|
2055
|
-
- Local bots no longer post their no-reply signal, narration, blank messages, or raw model errors into rooms. On a room message that does not mention the bot, in-between messages and the working notice are held until the turn ends, and nothing is posted when the reply is the `{"action":"no_reply"}` signal or empty. Any model failure on such a turn (not only a Grok `reasoning_only` empty response, but every model error) is now silent instead of leaking "I didn't finish that — <model> stopped with an error: <raw excerpt>" into the room. When the turn does produce content, the held in-between messages are posted alongside the final answer, so a bot that answers mid-turn and ends with a short sign-off (claude/codex) no longer loses the answer; a Grok final that just concatenates the in-between messages still posts once with no duplication. The signal is never posted as progress anywhere. DMs and @-mentions still stream and still get a reply; a `reasoning_only` failure there now says "the model returned no answer" instead of the raw internal error, and other failures there keep the existing "did not finish" message. The room prompt also tells the model to produce no output rather than explain that it is staying silent.
|
|
2056
|
-
|
|
2057
|
-
## [5.184.0] — 2026-09-25
|
|
2058
|
-
|
|
2059
|
-
### Fixed
|
|
2060
|
-
|
|
2061
|
-
- Work Mesh transcript-watch now emits `session_end` for hook-covered sessions that have already been quiet for 10 minutes when first seen (the live skip path that left `skippedHook=411 ended=0`). Held/spool rescans stamp last hook activity from each event's `at`, not the scan clock, so leftover `held.jsonl` lines cannot reset the quiet timer.
|
|
2062
|
-
- Quiet `session_end` (and SessionEnd flush) send an optional one-sentence summary of the last assistant reply (~140 chars, tokens and secrets-file paths redacted), plus git repo, branch, and PR URLs when cheap.
|
|
2063
|
-
|
|
2064
|
-
### Added
|
|
2065
|
-
|
|
2066
|
-
- `hq lanes` validates story references against project `prd.json` files and records
|
|
2067
|
-
explicit `--no-story` reasons. When `lanes.story-ledger` is enabled, lane state,
|
|
2068
|
-
blockers, questions, and PR links sync back to project stories. Terminal history
|
|
2069
|
-
writes are atomic and retry-safe. Stale-lock cleanup reclaims abandoned ownerless
|
|
2070
|
-
locks after their directory ages while preserving fresh replacements.
|
|
2071
|
-
`hq lanes status --project` summarizes workers, PRs,
|
|
2072
|
-
blockers, questions, and story counts.
|
|
2073
|
-
|
|
2074
|
-
- `hq doctor --json` includes stable sync `reasonCode` enums. Client-health reports add `checkId: reasonCode` pairs only when the company-scoped `client-health-sync-reason-codes` hq-flags gate is enabled. `hq doctor --fix --json` reports refresh-sync outcomes without raw error details.
|
|
2075
|
-
|
|
2076
|
-
- Repair known stale QMD collection paths behind the default-off `qmd.collection-path-repair` hq-flags canary while preserving collection metadata.
|
|
2077
|
-
|
|
2078
|
-
## [5.183.0] — 2026-09-25
|
|
2079
|
-
|
|
2080
|
-
### Added
|
|
2081
|
-
|
|
2082
|
-
- `hq core sentry report` can attach bounded hook-timeout timing context to Sentry events when the company-scoped `hook-timeout-debug-context` flag is enabled. The flag defaults off.
|
|
2083
|
-
|
|
2084
|
-
## [5.182.0] — 2026-09-24
|
|
2085
|
-
|
|
2086
|
-
### Fixed
|
|
2087
|
-
|
|
2088
|
-
- `hq mesh daemon status` now asks the service manager whether the daemon is loaded (`launchctl print` on macOS, `systemctl --user is-active` on Linux). Before, it never probed and always reported "installed (not loaded)" or "installed (inactive)", even while the daemon was running.
|
|
2089
|
-
|
|
2090
|
-
## [5.181.0] — 2026-09-24
|
|
2091
|
-
|
|
2092
|
-
### Changed
|
|
2093
|
-
|
|
2094
|
-
- `hq daemon` runs the session host from the hq-cloud copy it keeps up to date (hq-cloud's `hq-outpost-session-host`, when that copy has it), the same way it already runs sync and the outpost heartbeat, and restarts it after an hq-cloud update. Session-host fixes, such as starting on an Outpost that signs in with machine credentials, now reach boxes without an hq CLI release.
|
|
2095
|
-
|
|
2096
|
-
## [5.180.0] — 2026-09-24
|
|
2097
|
-
|
|
2098
|
-
## [5.179.1] — 2026-09-24
|
|
2099
|
-
|
|
2100
|
-
### Added
|
|
2101
|
-
|
|
2102
|
-
- `hq dm send` now takes `--audience <human|agent|both>` so a bot or operator
|
|
2103
|
-
can declare who a DM is for, and the `hq_dm_send` bot tool accepts the same
|
|
2104
|
-
optional field. Local bot turns tag in-between progress messages as `agent`
|
|
2105
|
-
and the final reply as `human` by default, so status chatter stays out of a
|
|
2106
|
-
person's inbox while the answer they need still reaches them. `hq dm inbox`
|
|
2107
|
-
and `hq dm thread` mark agent-audience messages with an `[agent]` tag.
|
|
2108
|
-
|
|
2109
|
-
### Fixed
|
|
2110
|
-
|
|
2111
|
-
- Windows checkpoint stamps now use atomic replacement and bounded retries for
|
|
2112
|
-
transient filesystem errors, so a brief lock does not abort the checkpoint.
|
|
2113
|
-
|
|
2114
|
-
## [5.179.0] — 2026-09-24
|
|
2115
|
-
|
|
2116
|
-
### Fixed
|
|
2117
|
-
|
|
2118
|
-
- `hq integrations connect --client-id` with a Google OAuth client (`*.apps.googleusercontent.com`) now warns that the client must be of type "Web application" and prints the redirect URI to register. A "Desktop app" client cannot accept HQ's hosted callback, and Google reports that only after the browser is open.
|
|
2119
|
-
|
|
2120
|
-
## [5.178.0] — 2026-09-24
|
|
2121
|
-
|
|
2122
|
-
### Fixed
|
|
2123
|
-
|
|
2124
|
-
- Work Mesh transcript-watch still tracks hook-covered sessions (interactive Claude/Codex) and enqueues `session_end` after 10 minutes of quiet. Hooks keep owning start/turn events; the quiet `session_end` is the channel work-report trigger those sessions were missing. Resume (transcript mtime or a later hook event) resets the timer. A SessionEnd hook within 60s of that emit is not treated as resume, so `/exit` does not double-fire.
|
|
2125
|
-
- Reloading a macOS LaunchAgent (`hq mesh daemon install`, including `--if-stale` and the post-update restart, `hq daemon install`, `hq agent kit` services, and bot agents) now waits for `launchctl bootout` to finish before bootstrapping. Before, bootstrap could race the old job's teardown, fail with "Bootstrap failed: 5: Input/output error", and leave the service unloaded with nothing running. Bootstrap now polls `launchctl print` for up to 10 seconds, retries EIO with backoff (0.5s to 8s), and on final failure either restarts the still-loaded previous job or reports that the service is NOT loaded with the `launchctl bootstrap` command to fix it.
|
|
2126
|
-
|
|
2127
|
-
## [5.177.0] — 2026-09-24
|
|
2128
|
-
|
|
2129
|
-
### Added
|
|
2130
|
-
|
|
2131
|
-
- `hq lanes create --hire-grant`, `hq lanes grant`, and `hq lanes backfill-grants`
|
|
2132
|
-
manage alive child-lane grants. `lanes.hire-grants` defaults off; lane list and
|
|
2133
|
-
show include grant and alive-child counts. Terminal child resume, message, and
|
|
2134
|
-
account-move paths recheck occupancy and remaining grant allocation. The
|
|
2135
|
-
backfill defaults to dry-run.
|
|
2136
|
-
- When `lanes.hire-grants` is enabled, `hq lanes list` and `hq lanes show` use counts
|
|
2137
|
-
from the owning Outpost for active remote lanes. If the Outpost does not return
|
|
2138
|
-
counts, both commands show local counts and a warning.
|
|
2139
|
-
|
|
2140
|
-
## [5.176.0] — 2026-09-24
|
|
2141
|
-
|
|
2142
|
-
### Fixed
|
|
2143
|
-
|
|
2144
|
-
- `hq bot create setup` restores the account's existing setup bot when the local copy is missing.
|
|
2145
|
-
|
|
2146
|
-
## [5.175.0] — 2026-09-24
|
|
2147
|
-
|
|
2148
|
-
### Fixed
|
|
2149
|
-
|
|
2150
|
-
- `hq agent kit` now shows missing external credentials at a home-relative path and reports the missing enrollment as an actionable precondition.
|
|
2151
|
-
- Missing external agent credentials show an actionable error without creating a Sentry fault.
|
|
2152
|
-
|
|
2153
|
-
## [5.174.0] — 2026-09-24
|
|
2154
|
-
|
|
2155
|
-
### Fixed
|
|
2156
|
-
|
|
2157
|
-
- Outpost worktree pruning now tolerates cwd `EACCES` only for the verified
|
|
2158
|
-
same-user systemd `(sd-pam)` helper. Other same-user cwd failures and all fd
|
|
2159
|
-
scan failures remain fail-closed. This entry was listed under 5.173.0 by
|
|
2160
|
-
mistake: 5.173.0 was tagged before the change merged, so it first ships here.
|
|
2161
|
-
|
|
2162
|
-
## [5.173.0] — 2026-09-24
|
|
2163
|
-
|
|
2164
|
-
### Fixed
|
|
2165
|
-
|
|
2166
|
-
- `hq bot stop <name>` run from inside that bot's own turn now lets the turn finish: it signals the bot to drain (finish the running turn, post the reply, exit 0), which launchd leaves stopped. Before, it booted out the bot's own launchd job, which killed the bot, the turn, and the stop command itself (exit 137), so no reply was posted. `hq bot restart <name>` from inside the bot's own turn is refused with instructions, and `hq bot start` from inside the bot skips the agent reload.
|
|
2167
|
-
- Bot LaunchAgents and systemd units, the Work Mesh daemon unit, the `hq daemon` unit, and the lanes and agent-kit units now name node by its upgrade-stable path (`/opt/homebrew/bin/node` or `/opt/homebrew/opt/<formula>/bin/node`, or nvm's `current` link) instead of the versioned `/opt/homebrew/Cellar/node/<version>/bin/node`. Before, `brew upgrade node` deleted that path and launchd could no longer start the bots. The stable path is used only when it resolves to the same node binary; otherwise the unit keeps the resolved path as before.
|
|
2168
|
-
- Installed bot LaunchAgents that still name a versioned or missing node are repaired: `hq bot start` rewrites and reloads the agent, a bot started by launchd rewrites its own agent and reloads it from a detached shell before it takes any message, and `hq doctor` reports it (`bots.<name>.daemon-node`), with `hq doctor --fix` rewriting only the plist file and not reloading launchd. `hq bot list` and `hq bot status` flag a missing node binary. `hq mesh daemon install --if-stale` also reinstalls a same-version unit whose node path is missing or versioned.
|
|
2169
|
-
|
|
2170
|
-
## [5.172.0] — 2026-09-24
|
|
2171
|
-
|
|
2172
|
-
### Changed
|
|
2173
|
-
|
|
2174
|
-
- The `hq daemon` updater keeps hq-cloud current as well. Every 6 hours it
|
|
2175
|
-
installs the newest hq-cloud with the same major version into
|
|
2176
|
-
`~/.hq/daemon/hq-cloud`, and it restarts sync and the outpost heartbeat
|
|
2177
|
-
right after an update. The daemon runs sync, and the heartbeat when that
|
|
2178
|
-
hq-cloud has `hq-outpost-heartbeat`, from whichever copy is newer: this one
|
|
2179
|
-
or the one bundled with the CLI.
|
|
2180
|
-
- `hq daemon` sync pushes local changes as they happen (`--event-push`), the
|
|
2181
|
-
same as outpost sync does today.
|
|
2182
|
-
|
|
2183
|
-
## [5.171.0] — 2026-09-24
|
|
2184
|
-
|
|
2185
|
-
### Fixed
|
|
2186
|
-
|
|
2187
|
-
- Local bots (`hq bot run`) now restart onto an updated hq-cli install. A
|
|
2188
|
-
running bot checks the installed package behind its launch path every
|
|
2189
|
-
minute. When a complete, valid, different version is seen on two checks in a
|
|
2190
|
-
row, it stops taking new inbox items, lets running turns finish (queued items
|
|
2191
|
-
stay un-acked for the next process), logs
|
|
2192
|
-
`hq-cli updated <old> -> <new>; restarting to load it`, and exits 75 so
|
|
2193
|
-
launchd, systemd, or `hq daemon` starts it again. A bot with no supervisor
|
|
2194
|
-
starts its own replacement first. The new process logs its version at
|
|
2195
|
-
startup and whether the update converged. A restart that comes back on the
|
|
2196
|
-
old version blocks that target for 6 hours, and update restarts are capped
|
|
2197
|
-
at 4 per hour. `hq bot status` shows the hq-cli version a bot is running.
|
|
2198
|
-
Set `HQ_BOT_NO_CLI_UPDATE_RESTART=1` to turn this off.
|
|
2199
|
-
|
|
2200
|
-
## [5.170.0] — 2026-09-24
|
|
2201
|
-
|
|
2202
|
-
### Fixed
|
|
2203
|
-
|
|
2204
|
-
- Switching the HQ session company (including `hq-session.sh set company_slug`) clears the Work Mesh project and task, posts `session_end` to the previous company, and holds a personal target as `needs_company`.
|
|
2205
|
-
|
|
2206
|
-
## [5.169.0] — 2026-09-24
|
|
2207
|
-
|
|
2208
|
-
### Fixed
|
|
2209
|
-
|
|
2210
|
-
- `hq lanes create` and `hq lanes story <add|start|block|done>` keep story work
|
|
2211
|
-
local when an existing Work Mesh Board rejects a missing story. The
|
|
2212
|
-
`story_warning` identifies the project and story and suggests:
|
|
2213
|
-
`hq mesh project ensure <projectId> --company <slug> --stories-file prd.json`.
|
|
2214
|
-
|
|
2215
|
-
## [5.168.0] — 2026-09-24
|
|
2216
|
-
|
|
2217
|
-
### Fixed
|
|
2218
|
-
|
|
2219
|
-
- `hq mesh project set --stories-file` keeps live Board story status and
|
|
2220
|
-
|
|
2221
|
-
- `hq mesh` ignores nonpositive, malformed, and expired `Retry-After` hints.
|
|
2222
|
-
|
|
2223
|
-
### Added
|
|
2224
|
-
|
|
2225
|
-
- `hq daemon` keeps the hq CLI, Claude, Codex and Grok up to date on every machine type, desktops included, every six hours. It updates the login user's own copy of each tool through that tool's npm package or its own `update` command, and leaves a copy the user cannot write (for example one root installed in /usr) alone. On outposts the daemon also runs Codex remote control (the box's Codex runner) next to Claude remote control, keeps the session name the box's runner used, and restarts either one onto a newly installed Claude or Codex once the session has been quiet for 10 minutes, or after 2 hours at the latest. `hq daemon install` never sets the daemon up to run as root: a box runs it as the login user from `/etc/hq/machine-type`, the outpost runner unit, `--user` or `sudo`, and an outpost without the marker file is recognised from its runner unit. `hq daemon migrate --apply` also takes over the outpost runner watchdogs and the Codex update timer.
|
|
2226
|
-
- Added outpost worktree cleanup commands for dry runs and pruning clean, aged
|
|
2227
|
-
worktrees. Lane, session, and process references keep their worktrees. Pressure
|
|
2228
|
-
and daily timers use the `outpost.worktree-pruner` hq-flags key, which starts off.
|
|
2229
|
-
Live-lane `worker.out` files and matching Claude session transcripts are read in
|
|
2230
|
-
bounded chunks. Transcript lookup reads only the file matching the lane's
|
|
2231
|
-
provider session ID under `.claude*/projects/*`. An unresolved lane keeps
|
|
2232
|
-
worktrees whose root, linked Git index, or linked Git `HEAD` changed at or after
|
|
2233
|
-
its `created_at`; a missing or invalid start time keeps every candidate. A
|
|
2234
|
-
never-spawned queued lane without a provider session does not hold a worktree.
|
|
2235
|
-
|
|
2236
|
-
## [5.167.0] — 2026-09-24
|
|
2237
|
-
|
|
2238
|
-
### Fixed
|
|
2239
|
-
|
|
2240
|
-
- `hq lanes stop` sends Outpost-hosted stops to the owning host and updates the
|
|
2241
|
-
local record after confirmation. If the Outpost already finished the lane,
|
|
2242
|
-
the CLI syncs its terminal state.
|
|
2243
|
-
- Story updates, reparenting, admission, question creation, and active answer
|
|
2244
|
-
delivery return `lane_remote` when another host owns the lane. Message, resume,
|
|
2245
|
-
and move keep their Outpost dispatch paths.
|
|
2246
|
-
|
|
2247
|
-
## [5.166.0] — 2026-09-24
|
|
2248
|
-
|
|
2249
|
-
### Changed
|
|
2250
|
-
|
|
2251
|
-
- The setup bot can explain what HQ is: the shared context layer for a whole
|
|
2252
|
-
team, their coding tools (Claude Code, Codex, Cursor) and every bot. It no
|
|
2253
|
-
longer repeats the finish card in replies after setup ends.
|
|
2254
|
-
|
|
2255
|
-
## [5.165.0] — 2026-09-24
|
|
2256
|
-
|
|
2257
|
-
### Fixed
|
|
2258
|
-
|
|
2259
|
-
- Codex lane starts and resumes now pass the assigned worker policy directory to
|
|
2260
|
-
policy hooks.
|
|
2261
|
-
|
|
2262
|
-
## [5.164.0] — 2026-09-24
|
|
2263
|
-
|
|
2264
|
-
### Fixed
|
|
2265
|
-
|
|
2266
|
-
- When a startup import fails, hq-cli checks for an update lock, a retired package
|
|
2267
|
-
directory, or install-tree changes for 1.5 seconds. If none appears, it exits
|
|
2268
|
-
with `npm install -g @indigoai-us/hq-cli@latest` instead of waiting 90 seconds.
|
|
2269
|
-
Sentry context replaces the home-directory prefix with `~`.
|
|
2270
|
-
- Sentry keeps the `guarded`, `unsettled`, `reexec-failed`, and `lock-held`
|
|
2271
|
-
outcomes, adds `stale_tree` and `tree_state`, and tags `updater_source` when
|
|
2272
|
-
known. The fingerprint remains `["InstallTreeTornError", "outcome:<token>"]`,
|
|
2273
|
-
so the four existing outcome groups keep their keys.
|
|
2274
|
-
|
|
2275
|
-
## [5.163.0] — 2026-09-24
|
|
2276
|
-
|
|
2277
|
-
- Workforce plan refusals in the CLI keep direct checkout for eligible companies.
|
|
2278
|
-
The server upgrade URL stays visible; personal refusals and checkout failures can
|
|
2279
|
-
open it. Non-TTY and JSON runs print only the URL and exit non-zero.
|
|
2280
|
-
|
|
2281
|
-
- `hq mesh` sends at most 25 replayed events for a session in one flush. It honors `Retry-After` on 429 and 503 responses and stops waiting when the daemon shuts down.
|
|
2282
|
-
|
|
2283
|
-
### Added
|
|
2284
|
-
|
|
2285
|
-
- `hq daemon` now also runs the `updater` (hq CLI and Codex updates every six hours, then restarts the daemon onto the new version), `remote-control` (`claude remote-control` in a private tmux session on outposts) and `jobs-reconcile` (the outpost jobs reconcile script every ten minutes). `hq bot`, `hq mesh daemon install` and `hq lanes reconcile install` hand their service to the daemon when it is installed instead of adding their own background unit. `hq daemon migrate --apply` stops the older HQ background units and moves their definitions aside so the daemon runs those services, and `hq daemon uninstall --restore-legacy` puts them back; The desktop app's own sync agent is never taken over.
|
|
2286
|
-
- `hq daemon` runs all of a machine's HQ background services under one supervisor. `hq daemon install` works out whether the machine is a desktop, self-hosted server, outpost, agent box or agent kit, installs one background service, and starts that machine type's default services (sync, mesh, heartbeat, bots, lanes cleanup, search indexing and log rotation, depending on the type). `hq daemon enable|disable <service>` changes the list for one machine. `status`, `logs`, `restart` and `trigger` manage the running services. A service that an older background unit already runs is left to that unit, and `hq daemon migrate` only lists what it would take over. The command is hidden from `hq --help` while it rolls out. It needs no feature flag.
|
|
2287
|
-
|
|
2288
|
-
## [5.162.0] — 2026-09-24
|
|
2289
|
-
|
|
2290
|
-
### Fixed
|
|
2291
|
-
|
|
2292
|
-
- An invalid envelope that remains after its repair turn no longer leaves a
|
|
2293
|
-
lane inaccessible. Operators can resume or message a failed lane with a
|
|
2294
|
-
recorded provider session, and the next envelope slot gets one new repair
|
|
2295
|
-
attempt with the validation errors in the prompt.
|
|
2296
|
-
|
|
2297
|
-
## [5.161.0] — 2026-09-24
|
|
2298
|
-
|
|
2299
|
-
### Fixed
|
|
2300
|
-
|
|
2301
|
-
- No-reader flag gates now honor only `true` and `false` in `HQ_FLAG_<KEY>`
|
|
2302
|
-
overrides when the registry endpoint is unset or its reader is unavailable.
|
|
2303
|
-
|
|
2304
|
-
## [5.160.0] — 2026-09-24
|
|
2305
|
-
|
|
2306
|
-
### Added
|
|
2307
|
-
|
|
2308
|
-
- Worker profiles can deliver validated policy files through an installed HQ
|
|
2309
|
-
hook or include them in the prompt when the hook is unavailable. Resume and
|
|
2310
|
-
message can attach a profile, and resume can attach a mesh company. Bot-owned
|
|
2311
|
-
Claude profiles may rely on provider configuration for optional model,
|
|
2312
|
-
account, effort, and fast-mode values.
|
|
2313
|
-
|
|
2314
|
-
- Added `hq agents login-code`, which submits a Claude subscription code from
|
|
2315
|
-
an argument or stdin. Provisioning help shows the Agents v2 command and
|
|
2316
|
-
account requirement. Claude subscription creates print the console URL and
|
|
2317
|
-
login-code command.
|
|
2318
|
-
|
|
2319
|
-
### Fixed
|
|
2320
|
-
|
|
2321
|
-
- If a Codex or Claude worker exits without writing this run's envelope, hq lanes
|
|
2322
|
-
gives its session one resume turn to write the expected file. The watcher and
|
|
2323
|
-
dead-host recovery ignore earlier envelopes. If the repair still writes no
|
|
2324
|
-
valid envelope, the lane remains interrupted.
|
|
2325
|
-
|
|
2326
|
-
## [5.159.0] — 2026-09-24
|
|
2327
|
-
|
|
2328
|
-
### Fixed
|
|
2329
|
-
|
|
2330
|
-
- Hook timeout reports now identify the slow child hook and group concurrent
|
|
2331
|
-
session-wide slowness together. Update checks have bounded network calls, and
|
|
2332
|
-
the core-write guard avoids repeated subprocess work.
|
|
2333
|
-
- Machine-wide hook warnings and exceeded timeouts now keep separate Sentry
|
|
2334
|
-
groups, and per-script rate limits no longer suppress a later machine-wide
|
|
2335
|
-
report from the same session.
|
|
2336
|
-
|
|
2337
|
-
## [5.158.0] — 2026-09-24
|
|
2338
|
-
|
|
2339
|
-
### Added
|
|
2340
|
-
|
|
2341
|
-
- `hq lanes create --placement auto` selects a host with room for the provider and account. Managers can set `--default-placement` for their workers, `hq lanes list` shows capacity by host while `lanes.outpost-load-balancing` is enabled, and `hq lanes move` can relocate a queued lane that has not started. Remote worker profiles must match the creator's content hash.
|
|
2342
|
-
- `hq lanes outpost-identity backfill --id <id>` fills a missing Outpost marker without replacing another value. New Outposts write their id to `/etc/outpost/outpost-id` so lane commands can identify the host.
|
|
2343
|
-
|
|
2344
|
-
## [5.157.0] — 2026-09-24
|
|
2345
|
-
|
|
2346
|
-
### Fixed
|
|
2347
|
-
|
|
2348
|
-
- Local bots (`hq bot run`) now receive HQ chat attachments. The runner reads
|
|
2349
|
-
`attachments` on each inbox item, downloads every file with the bot's own
|
|
2350
|
-
machine identity through the same checks `hq_attachment_fetch` uses (chat
|
|
2351
|
-
attachment path only, DM must include the bot, company must be one of the
|
|
2352
|
-
bot's own, 26 MiB cap), and saves it under `~/.hq/bots/<name>/attachments/`
|
|
2353
|
-
(dir 0700, files 0600). The turn text lists each file's name, type, size and
|
|
2354
|
-
local path, with small text files inlined; a file that could not be fetched
|
|
2355
|
-
gets a one-line reason, which is also logged. A message that is only an
|
|
2356
|
-
attachment is answered instead of being acked and dropped. Claude turns get
|
|
2357
|
-
`--add-dir` for the attachments folder so gated permission modes can read it.
|
|
2358
|
-
The MIME type is also read from the server's `kind` field.
|
|
2359
|
-
|
|
2360
|
-
## [5.156.0] — 2026-09-24
|
|
2361
|
-
|
|
2362
|
-
### Fixed
|
|
2363
|
-
|
|
2364
|
-
- Project-thread lookup treats an omitted server `kind` as the project thread,
|
|
2365
|
-
preventing duplicate project threads when a newer lane thread is present.
|
|
2366
|
-
- Lane admission reservations are refreshed after Work Mesh lane-thread
|
|
2367
|
-
registration so slow registration cannot age the reservation before spawn.
|
|
2368
|
-
|
|
2369
|
-
### Added
|
|
2370
|
-
|
|
2371
|
-
- `hq mesh project register --channel` and `project set --channel` can bind an
|
|
2372
|
-
existing channel to project events. `hq mesh check --project` shows lane
|
|
2373
|
-
identity and status, including terminal lane threads.
|
|
2374
|
-
- Lane mesh threads keep a stable lane id across resume and account moves.
|
|
2375
|
-
Events include the worker profile, model, account, parent lane, and senior
|
|
2376
|
-
owner. Stop and dead-host recovery events close terminal threads.
|
|
2377
|
-
|
|
2378
|
-
### Tests
|
|
2379
|
-
|
|
2380
|
-
- Cover server-shaped project-thread results and reservation timing after
|
|
2381
|
-
lane-thread registration.
|
|
2382
|
-
|
|
2383
|
-
## [5.155.0] — 2026-09-24
|
|
2384
|
-
|
|
2385
|
-
### Fixed
|
|
2386
|
-
|
|
2387
|
-
- Lane respawns keep their recorded account to preserve provider sessions and
|
|
2388
|
-
prompt caches. Automatic moves now record why they happened and are limited
|
|
2389
|
-
to model changes, usage limits, and unavailable or logged-out accounts.
|
|
2390
|
-
- Account retries share the provider admission lock and the host-scoped provider,
|
|
2391
|
-
account, and profile checks used by normal admission. Active reservations and
|
|
2392
|
-
earlier eligible queue entries keep their place; blocked retries remain queued
|
|
2393
|
-
for normal admission. Retries skip accounts already rejected for login and
|
|
2394
|
-
retain message, resume, and answer context when queued.
|
|
2395
|
-
- Watcher retries resolve the current process hostname and Outpost identity, so
|
|
2396
|
-
local-kind and Outpost-kind lanes on one Outpost share admission caps.
|
|
2397
|
-
- Account enable and registration now require a positive login check. Provider
|
|
2398
|
-
startup messages for logged-out accounts trigger failover to another eligible
|
|
2399
|
-
account or a named `account_not_logged_in` failure.
|
|
2400
|
-
|
|
2401
|
-
### Added
|
|
2402
|
-
|
|
2403
|
-
- Provider config can list accounts in preference order for a lane's first
|
|
2404
|
-
assignment. Disabled, logged-out, usage-limited, and capped accounts are
|
|
2405
|
-
skipped. If no preferred account is eligible, hq-cli chooses the least-loaded
|
|
2406
|
-
eligible account. Running and resumed lanes keep their recorded account.
|
|
2407
|
-
|
|
2408
|
-
## [5.154.0] — 2026-09-24
|
|
2409
|
-
|
|
2410
|
-
### Fixed
|
|
2411
|
-
|
|
2412
|
-
- Local bots can now open files attached in HQ chat. The new `hq_attachment_fetch` agent tool downloads a chat or DM attachment into a private folder under the bot's agent directory and returns its local path, content type, and size (text files also come back inline). It accepts only the scope-relative `chat/attachments/...` paths that `hq_inbox_read` reports, fetches only from the bot's own company or from a DM the bot is part of, refuses files over 26 MiB, and uses the API the bot enrolled against. Because the attachment reference comes from the sender, any other vault path (for example `knowledge/...`, or a folder) is refused and the bot is pointed at `hq_files_read`. Previously `hq_files_read` rejected those paths and could not read binary files such as .xlsx.
|
|
2413
|
-
|
|
2414
|
-
## [5.153.0] — 2026-09-23
|
|
2415
|
-
|
|
2416
|
-
### Fixed
|
|
2417
|
-
|
|
2418
|
-
- `hq mesh context prd-sync` rebinds a session to the PRD's project when that project is in the same company, then emits `task_status` against the new project so the Board and channel line land there. A PRD in another company is still skipped and does not rebind.
|
|
2419
|
-
|
|
2420
|
-
### Tests
|
|
2421
|
-
|
|
2422
|
-
- Cover Outpost admission when account a is at its Codex cap and account b
|
|
2423
|
-
has queued work with available capacity.
|
|
2424
|
-
- Cover fresh pending resumes and answered-lane resumes against provider
|
|
2425
|
-
capacity.
|
|
2426
|
-
|
|
2427
|
-
## [5.152.1] — 2026-09-23
|
|
2428
|
-
|
|
2429
|
-
### Fixed
|
|
2430
|
-
|
|
2431
|
-
- Windows bot runtimes resolve provider binaries through PATH and PATHEXT, safely launch npm .cmd and .bat shims, pass multiline and long prompts through stdin or Grok ACP, and stop the full process tree.
|
|
2432
|
-
|
|
2433
|
-
## [5.152.0] — 2026-09-23
|
|
2434
|
-
|
|
2435
|
-
### Fixed
|
|
2436
|
-
|
|
2437
|
-
- `hq mesh daemon install` (plain and `--if-stale`) now bootouts, bootstraps, and kickstarts the LaunchAgent after writing the plist. Bootstrap retries launchd `5: Input/output error` up to five times, one second apart. After a CLI upgrade, a loaded job whose program no longer matches the plist is reloaded the same way.
|
|
2438
|
-
|
|
2439
|
-
## [5.151.0] — 2026-09-23
|
|
2440
|
-
|
|
2441
|
-
- `hq report publish` no longer fails when another app it cannot see holds the report's address. It publishes at the next free address (`<slug>-2`, then `-3`) and saves that address on the report.
|
|
2442
|
-
|
|
2443
|
-
## [5.150.0] — 2026-09-23
|
|
2444
|
-
|
|
2445
|
-
### Fixed
|
|
2446
|
-
|
|
2447
|
-
- `hq lanes` now admits queued lanes by priority, then queue age, as provider, account, profile, or throttle capacity opens. Auto-balanced lanes can move to another eligible account when that account frees first. Create, message, resume, and pickup use the same admission checks. `hq lanes admit <lane-id>` reports the blocker, and authorized `--force` records `operator_force`. Reconcile refreshes queued reasons, and Outpost-hosted queued lanes appear as remote.
|
|
2448
|
-
|
|
2449
|
-
## [5.149.1] — 2026-09-23
|
|
2450
|
-
|
|
2451
|
-
### Fixed
|
|
2452
|
-
|
|
2453
|
-
- The package now ships `scripts/mesh-daemon-if-stale.mjs`, which its postinstall step runs; a failure in that step never fails the install.
|
|
2454
|
-
|
|
2455
|
-
### Added
|
|
2456
|
-
|
|
2457
|
-
- Lanes can carry several project stories with a warning for parallel active
|
|
2458
|
-
work. Story commands now add, start, block, list, and complete carried work.
|
|
2459
|
-
- Mesh lifecycle events include the story id, and board status moves through
|
|
2460
|
-
`in_progress`, `blocked`, `review`, and senior-verified `done`. Missing
|
|
2461
|
-
project views are repaired before a status patch is retried.
|
|
2462
|
-
|
|
2463
|
-
### Fixed
|
|
2464
|
-
|
|
2465
|
-
- `hq mesh context prd-sync` adds missing Board stories before it emits, and
|
|
2466
|
-
records a snapshot only for stories the server accepted or left unassigned.
|
|
2467
|
-
A rejected story stays changed so the next `prd.json` write sends it again.
|
|
2468
|
-
- The checkpoint Stop gate now accepts any non-whitespace reply by default.
|
|
2469
|
-
`HQ_CHECKPOINT_REPLY_MIN` can still require a longer reply or disable the check.
|
|
2470
|
-
- `hq lanes message` and text resumes now reach the lane's Outpost through the existing exec transport and report failure when delivery is not confirmed. Resumes keep the last known provider session id and recover its transcript from registered account homes before spawning.
|
|
2471
|
-
|
|
2472
|
-
## [5.148.0] — 2026-09-23
|
|
2473
|
-
|
|
2474
|
-
## [5.147.0] — 2026-09-23
|
|
2475
|
-
|
|
2476
|
-
### Fixed
|
|
2477
|
-
|
|
2478
|
-
- Reinstalling an MCP server now updates its definition when the existing
|
|
2479
|
-
Claude or Codex entry belongs to the same HQ pack. Unmarked and other-pack
|
|
2480
|
-
entries still refuse replacement.
|
|
2481
|
-
- `hq mesh context prd-sync` now moves the Board. Its task_status events carry the session's company and project, and take sequence numbers from the session's shared counter (the same file the hooks use), so the server no longer rejects them as duplicates. Rejections print their codes.
|
|
2482
|
-
- The mesh daemon no longer treats a missing company slug, a membership timeout, or a lookup error as proof that the device owner is not a member. A device-default session that was cleared to `needs_company` is checked once against the configured default company and, when that membership is active, the company is put back and held events flush. The same cleared session is not counted as a new denial on every later flush.
|
|
2483
|
-
- `hq mesh daemon install` records the absolute path of the CLI that ran it (realpath of `process.argv[1]`) and the absolute node binary. It does not look up `hq` on `PATH`. The daemon logs `daemon version=<x> entry=<path>` at start and stores both in `daemon/state.json`. `hq mesh doctor` and `hq mesh daemon doctor` say when that record does not match this CLI and name `hq mesh daemon install` as the fix, and they list every `hq` on `PATH`. `hq mesh daemon install --if-stale` reinstalls and restarts only when this CLI is newer. The package postinstall runs that flag.
|
|
2484
|
-
- `hq mesh project ensure` no longer fails when the server refuses to close the extra genesis thread; it leaves that thread open and prints one line. Registration and the calling session's binding complete.
|
|
2485
|
-
- The mesh daemon re-checks a `needs_project` or unresolved session when it flushes that session's events. If the project Board is now an exact or clear catalog match, the batch is posted with that project and the session file is bound. A tie or near miss stays `needs_project`. The check runs at most once a minute per session.
|
|
2486
|
-
|
|
2487
|
-
## [5.146.0] — 2026-09-23
|
|
2488
|
-
|
|
2489
|
-
### Fixed
|
|
2490
|
-
|
|
2491
|
-
- The mesh daemon asks for presence in the device-default company and the companies with a session updated in the last day (at most five), and asks again within a minute when that set changes. `hq mesh doctor` says when a company was left out because presence is off or because one credential cannot cover every company.
|
|
2492
|
-
- `hq mesh project ensure` closes a genesis thread only when that same call created it and register returns a different server `proj-` thread. An already-open project thread stays open on a re-run. The register route does not accept a client thread id.
|
|
2493
|
-
- `hq mesh project ensure` on a new project closes the client genesis thread when register returns the server `proj-` thread, so the project has one open thread. The register route does not accept a client thread id.
|
|
2494
|
-
- A session that registers or creates a project is bound to it. `hq mesh project ensure` and `hq mesh project set --create` bind the calling session when it is the same company and still `needs_project` or unresolved, and they leave a session that is already on a different project alone. The next prompt re-checks `needs_project` against the current catalog. `hq mesh context prd-sync --session <sid> --file <prd.json>` emits `task_status` when a bound session's story `passes` or `status` changes (`passes: true` is done, `in_progress` is in progress) and does not call the network when nothing changed.
|
|
2495
|
-
- `hq report publish` now fills a report's missing company from its channel and keeps it across updates. Before, a report saved without a company was published under a personal access policy and the deploy refused it.
|
|
2496
|
-
|
|
2497
|
-
## [5.145.0] — 2026-09-23
|
|
2498
|
-
|
|
2499
|
-
- `hq files` now preserves a trailing-slash private-folder pattern such as
|
|
2500
|
-
`foo/` rather than rewriting it to `foo/*`, identifies private folders in
|
|
2501
|
-
ACL and discovery output, and explains the conflict with an existing shared
|
|
2502
|
-
glob. Quote a shared glob such as `'foo/*'` when invoking it from a shell.
|
|
2503
|
-
- `hq report` now finds reports on project channels. It listed only personal channels and treated only company-wide channels as valid, so every publish from a bot on a project channel failed with a generic deploy error. Channel lookup errors now say what went wrong.
|
|
2504
|
-
|
|
2505
|
-
## [5.144.0] — 2026-09-23
|
|
2506
|
-
|
|
2507
|
-
- Worker-profile models now use the same provider catalog validation as
|
|
2508
|
-
`--model` during creation and before every later provider launch. The error
|
|
2509
|
-
names the profile when its model is unsupported.
|
|
2510
|
-
- Worker resolution continues to use the existing personal, core, installed
|
|
2511
|
-
package, and company worker sources. hq-cli does not ship starter profiles.
|
|
2512
|
-
|
|
2513
|
-
## [5.143.0] — 2026-09-23
|
|
2514
|
-
|
|
2515
|
-
### Fixed
|
|
2516
|
-
|
|
2517
|
-
- `hq dm` and report commands now reject non-recipient and non-company channel
|
|
2518
|
-
requests locally, and report updates retry one fresh revision after a
|
|
2519
|
-
conflict.
|
|
2520
|
-
- `hq mesh project register` now verifies the company's Board view before
|
|
2521
|
-
registering and reports an actionable local error when the Board is missing.
|
|
2522
|
-
|
|
2523
|
-
## [5.142.0] — 2026-09-23
|
|
2524
|
-
|
|
2525
|
-
### Added
|
|
2526
|
-
|
|
2527
|
-
- Added reusable personal worker profiles for `hq lanes create --worker`, with
|
|
2528
|
-
strict `meta.yaml` validation, content hashes, profile-default precedence,
|
|
2529
|
-
provider-specific prompt/settings carriers, and reapplication on every fresh,
|
|
2530
|
-
resumed, moved, repaired, and compaction spawn.
|
|
2531
|
-
- Personal lanes can now use explicit `--mesh-company` attribution so their
|
|
2532
|
-
project thread, presence, and lifecycle events appear in Work Mesh after
|
|
2533
|
-
membership validation.
|
|
2534
|
-
|
|
2535
|
-
### Fixed
|
|
2536
|
-
|
|
2537
|
-
- Account login now reuses a registered account home when `--home` is omitted.
|
|
2538
|
-
Codex account login also accepts `--device-auth` for remote boxes without a
|
|
2539
|
-
localhost browser callback.
|
|
2540
|
-
- Checkpoint Stop-gate reply detection now uses the Stop payload when the
|
|
2541
|
-
transcript has not flushed yet, and fails open with an ambiguity log when
|
|
2542
|
-
neither reply source is reliable.
|
|
2543
|
-
|
|
2544
|
-
## [5.141.0] — 2026-09-23
|
|
2545
|
-
|
|
2546
|
-
- `hq bot jobs` now checks the bot's configured agent ID against the machine credential before calling the jobs API. A mismatch reports both IDs and explains how to fix the bot configuration or re-mint its credentials.
|
|
2547
|
-
|
|
2548
|
-
## [5.140.0] — 2026-09-23
|
|
2549
|
-
|
|
2550
|
-
### Fixed
|
|
2551
|
-
|
|
2552
|
-
- `hq lanes monitor-check` now recognizes a live Claude Monitor task launched through the CLI's shell/node process wrapper, so active lanes are not reported as uncovered.
|
|
2553
|
-
|
|
2554
|
-
- A session hint now binds to the best existing project. An exact Board is used as-is. An exact local PRD gets a Board through the same genesis-thread, view, then register path as `project ensure`, and is bound. A single clear match is bound with a recorded reason. When nothing matches, or two candidates are close, the session stays `needs_project` and the start hook lists the candidates. `hq mesh context bind-project` applies the answer. A flush HTTP 404 downgrades that session, holds its events, and logs one line instead of dead-lettering them. `hq mesh doctor` lists `needs_project` sessions.
|
|
2555
|
-
|
|
2556
|
-
## [5.139.0] — 2026-09-23
|
|
2557
|
-
|
|
2558
|
-
### Added
|
|
2559
|
-
|
|
2560
|
-
- `hq mesh project ensure <projectId> --company <slug> --stories-file prd.json` registers a missing Board view, merges an existing one without replacing live story status or assignee, then checks the company, project id, story ids, and repo paths. `hq mesh project set --create` writes a view when the GET is a 404.
|
|
2561
|
-
|
|
2562
|
-
### Fixed
|
|
2563
|
-
|
|
2564
|
-
- `hq report` now resolves report ids through local channel context and channel report lists instead of probing every channel with a report GET that can produce avoidable 404s.
|
|
2565
|
-
|
|
2566
|
-
## [5.138.0] — 2026-09-23
|
|
2567
|
-
|
|
2568
|
-
### Fixed
|
|
2569
|
-
|
|
2570
|
-
- `hq dm accept`, `decline`, and `block` now resolve pending requests to the
|
|
2571
|
-
server's `personUid` field instead of sending unsupported action body fields.
|
|
2572
|
-
|
|
2573
|
-
## [5.137.0] — 2026-09-23
|
|
2574
|
-
### Added
|
|
2575
|
-
|
|
2576
|
-
- Added `hq channels members <channel>` to print channel members for human and machine-principal sessions, with a `--json` format for scripts.
|
|
2577
|
-
|
|
2578
|
-
## [5.136.0] — 2026-09-23
|
|
2579
|
-
|
|
2580
|
-
### Added
|
|
2581
|
-
|
|
2582
|
-
- Your local bots can now do work on a repeating schedule. Ask a company bot for something regular — "check the overnight errors every weekday morning" — and it sets the schedule up itself; you can also see and remove its schedules with `hq bot jobs <name>`. The schedule is kept in the cloud, not on your computer. If the Mac is asleep when a run is due, the run happens as a catch-up when it wakes, as long as that is within about an hour, and the bot's report says it ran late; after a longer outage that run is skipped and the job carries on at its next scheduled time. Personal bots can't schedule work yet.
|
|
2583
|
-
|
|
2584
|
-
## [5.135.0] — 2026-09-23
|
|
2585
|
-
|
|
2586
|
-
### Added
|
|
2587
|
-
|
|
2588
|
-
- Claude lanes now set Claude Code's `CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`
|
|
2589
|
-
control on fresh launches and session resumes.
|
|
2590
|
-
`providers.claude.auto_compact_tokens` sets a positive-integer override, and
|
|
2591
|
-
Codex and Grok launch environments are unchanged.
|
|
2592
|
-
|
|
2593
|
-
- Added `hq lanes watch` for bounded state and question polling, plus
|
|
2594
|
-
`hq lanes monitor-check` for Claude Monitor coverage with distinct exit codes
|
|
2595
|
-
for uncovered lanes and unreadable evidence. The reminder text is available
|
|
2596
|
-
from `hq lanes monitor-check --reminder`.
|
|
2597
|
-
- Corrected watch JSONL output and question status transitions, bounded Monitor
|
|
2598
|
-
recommendations to the watch limit, and made stale or unreadable Monitor
|
|
2599
|
-
evidence fail closed.
|
|
2600
|
-
|
|
2601
|
-
- Lanes can opt selected Codex model ids into fast mode with
|
|
2602
|
-
`providers.codex.fast_mode_models`. Matching fresh and resumed runs pass
|
|
2603
|
-
Codex's `service_tier="fast"` and `fast_mode` settings and record the
|
|
2604
|
-
decision in the lane record and `spawn.json`.
|
|
2605
|
-
|
|
2606
|
-
## [5.134.0] — 2026-09-22
|
|
2607
|
-
|
|
2608
|
-
### Fixed
|
|
2609
|
-
|
|
2610
|
-
- Agent-kit and local-bot heartbeat loops now stop after the server reports an
|
|
2611
|
-
agent identity mismatch instead of retrying indefinitely. `hq doctor` shows
|
|
2612
|
-
the configured and token agent IDs for the mismatch.
|
|
2613
|
-
|
|
2614
|
-
## [5.133.0] — 2026-09-22
|
|
2615
|
-
|
|
2616
|
-
### Fixed
|
|
2617
|
-
|
|
2618
|
-
- Lane follow-ups now probe all enabled, logged-in accounts for an unpinned
|
|
2619
|
-
model, preserve the later quota reset and its source, expire abandoned pickup
|
|
2620
|
-
validation markers with a terminal reason, and parse Codex's ordinal
|
|
2621
|
-
`try again at` reset time.
|
|
2622
|
-
|
|
2623
|
-
- `hq sync push` no longer fails every file when the target vault was
|
|
2624
|
-
provisioned on or after 2026-09-19. Those vaults carry an S3 Object Lock
|
|
2625
|
-
default retention rule, and S3 refuses a PutObject into them unless the
|
|
2626
|
-
request carries a content checksum; the CLI's declared `@indigoai-us/hq-cloud`
|
|
2627
|
-
range still allowed a client that sends none, so an affected push reported
|
|
2628
|
-
`400 InvalidRequest: Content-MD5 OR x-amz-checksum- HTTP header is required
|
|
2629
|
-
for Put Object requests with Object Lock parameters` on every file. The
|
|
2630
|
-
dependency floor now starts at the release that attaches the checksum, so no
|
|
2631
|
-
install can resolve a client that cannot write to a locked vault. A CI guard
|
|
2632
|
-
holds the floor.
|
|
2633
|
-
|
|
2634
|
-
- Lane creation and re-parenting now allow depth 3. A depth-3 caller and any
|
|
2635
|
-
derived depth 4 lane are refused with `max_lane_depth`.
|
|
2636
|
-
|
|
2637
|
-
- Question ageing now derives its two-advance cap from the depth-3 lane cap, so
|
|
2638
|
-
an unanswered worker-lane question reaches the user after two hourly hops.
|
|
2639
|
-
|
|
2640
|
-
## [5.132.0] — 2026-09-22
|
|
2641
|
-
|
|
2642
|
-
### Added
|
|
2643
|
-
|
|
2644
|
-
- `hq lanes resume <lane-id> --account <id>` and `hq lanes message <lane-id>
|
|
2645
|
-
--account <id>` move a lane's provider session to another account of the
|
|
2646
|
-
same provider and continue it there, with its full history. The claude
|
|
2647
|
-
transcript (`projects/<encoded cwd>/<session>.jsonl`, plus the session's
|
|
2648
|
-
subagent directory) or the codex rollout
|
|
2649
|
-
(`sessions/YYYY/MM/DD/rollout-*-<session>.jsonl`) is copied into the target
|
|
2650
|
-
account's home; the source copy stays, and a copy the target already holds
|
|
2651
|
-
is refreshed when it differs, so a lane moved back resumes the turns it ran
|
|
2652
|
-
elsewhere. Every check runs before anything is copied or written: the lane must not be running (`lane_running`), the
|
|
2653
|
-
target must be an account of the lane's provider
|
|
2654
|
-
(`account_provider_mismatch`), exist, be enabled, be logged in, hold no
|
|
2655
|
-
quota hold (`account_quota_held`), and know the lane's model; a target that
|
|
2656
|
-
pins a different model needs `--model <id>` (new on both commands, accepted
|
|
2657
|
-
only with `--account`). Grok lanes are refused with
|
|
2658
|
-
`provider_session_not_portable`; a missing transcript or rollout with
|
|
2659
|
-
`provider_session_missing`, naming the path searched. The record's
|
|
2660
|
-
`account` moves, `account_history` gains an `operator_move` entry,
|
|
2661
|
-
`last_resume.account` names the account the run started on, and
|
|
2662
|
-
`hq lanes show` prints them; a record that changed after the move was
|
|
2663
|
-
prepared is refused with `account_move_conflict`. The capacity decision
|
|
2664
|
-
runs under the target account's admission lock, and a moved lane holds its
|
|
2665
|
-
slot (`pending_resume`) until its spawn claims it, so two moves cannot share
|
|
2666
|
-
one free slot. A target at its running cap queues the lane there with
|
|
2667
|
-
`pending_resume`, and the reconcile pass resumes the session on the target,
|
|
2668
|
-
honouring `--no-compact`. Mesh events for a moved lane carry `account` and
|
|
2669
|
-
`account_move`. Credential files are never copied.
|
|
2670
|
-
|
|
2671
|
-
- A provider-level turn failure is a named lane failure. When the worker's
|
|
2672
|
-
stdout carries a codex `turn.failed` event, a Claude error result with an
|
|
2673
|
-
HTTP status, or a grok error object, the watcher classifies the lane
|
|
2674
|
-
`failed` with `terminal_reason: provider_rejected` and writes the
|
|
2675
|
-
provider's message (capped), status, error class, `retryable`, and the
|
|
2676
|
-
model and account the run used to `terminal_details`. Such an exit is never
|
|
2677
|
-
`interrupted` and never spawns the envelope repair turn. A 429 stays on the
|
|
2678
|
-
quota path. `hq lanes show` prints `terminal_reason` and
|
|
2679
|
-
`terminal_details`.
|
|
2680
|
-
- `hq lanes create --model` is validated against the provider's own model
|
|
2681
|
-
list before anything is written: codex from the account home's
|
|
2682
|
-
`models_cache.json`, grok from `grok models`, claude from the aliases and
|
|
2683
|
-
full-name prefix in `claude --help`. An unknown id is refused with
|
|
2684
|
-
`model_unsupported` naming the provider, the value, the source and the
|
|
2685
|
-
accepted ids. A provider whose list cannot be read (missing, corrupt, or
|
|
2686
|
-
unreadable cache; failed probe) is not validated. Validation runs before
|
|
2687
|
-
the mesh thread is ensured and before the admission lock is taken, so a
|
|
2688
|
-
refusal leaves nothing behind and a slow provider probe never holds the
|
|
2689
|
-
lock. An unpinned create reads the list of every enabled account the
|
|
2690
|
-
balanced choice could land on before the lock; the account is still chosen
|
|
2691
|
-
under the lock, restricted to the accounts whose list accepted the model,
|
|
2692
|
-
so nothing is refused once the mesh thread exists and no probe or catalog
|
|
2693
|
-
read runs while the lock is held. A `grok models` or `claude --help` probe that exits nonzero
|
|
2694
|
-
is not a catalog, whatever it printed, and skips validation. Every outpost
|
|
2695
|
-
lane is validated at pickup on the executing host, after its account
|
|
2696
|
-
binds, and fails with `model_unsupported` there; a lane cancelled during
|
|
2697
|
-
the pickup probe stays cancelled and is not spawned. A picked-up lane is
|
|
2698
|
-
stored ineligible for admission (`pickup_validation_pending`) until its
|
|
2699
|
-
account binds, so the reconcile pass cannot spawn it while the probe is
|
|
2700
|
-
out, and the failure write refuses an already-terminal or running record
|
|
2701
|
-
inside its compare-and-swap.
|
|
2702
|
-
- A codex `turn.failed` or grok error with status 429, or with no status and
|
|
2703
|
-
a usage-limit or rate-limit message, now reaches the quota path (reset time
|
|
2704
|
-
and account hold recorded) instead of ending `interrupted`, and skips the
|
|
2705
|
-
envelope repair turn so the hold applies at once; an explicit non-429
|
|
2706
|
-
status wins over quota-sounding text. The reconcile pass applies the same
|
|
2707
|
-
routing when it recovers a lane whose worker and watcher both died. The
|
|
2708
|
-
provider's output is scanned from the tail one line at a time, so a long
|
|
2709
|
-
run's events are never all parsed and held at once. A 429 whose message
|
|
2710
|
-
names no reset time holds the account for the provider's
|
|
2711
|
-
`quota_default_hold_ms` (fifteen minutes unless configured), recorded with
|
|
2712
|
-
`reset_source: default_hold`; a message with a reset time keeps that time.
|
|
2713
|
-
|
|
2714
|
-
### Fixed
|
|
2715
|
-
|
|
2716
|
-
- `hq lanes reconcile install` no longer copies the installing shell's PATH
|
|
2717
|
-
into the systemd unit. The unit PATH is, per resolved provider, the
|
|
2718
|
-
directory holding the command name and the real binary's directory when a
|
|
2719
|
-
symlink points elsewhere, then the hq binary's directory, then the node
|
|
2720
|
-
binary's directory, then `/usr/local/bin:/usr/bin:/bin`, deduplicated; directories synced from
|
|
2721
|
-
another machine's profile are left out.
|
|
2722
|
-
|
|
2723
|
-
## [5.131.0] — 2026-09-22
|
|
2724
|
-
|
|
2725
|
-
### Added
|
|
2726
|
-
|
|
2727
|
-
- `hq files share` can post the share record to a project channel instead of a
|
|
2728
|
-
DM: `--channel <name>` names the channel and `--mention <person>` (repeatable)
|
|
2729
|
-
tags people in it. Using `--mention` without `--channel` is an error. If you
|
|
2730
|
-
or a mentioned person are not members of that channel, access is still
|
|
2731
|
-
granted and the record falls back to a DM, with a short note on the CLI.
|
|
2732
|
-
- Offline preflight results the CLI can emit are published at
|
|
2733
|
-
`contracts/preflight/v1/schema.json` and `fixtures.json` (included in the
|
|
2734
|
-
package). `hq mesh contract preflight --print-fixtures` prints the same
|
|
2735
|
-
document. A test fails if the committed fixtures drift from the emitter.
|
|
2736
|
-
contractVersion stays pinned at 1 until hq-core's vendored copy moves with it.
|
|
2737
|
-
|
|
2738
|
-
### Fixed
|
|
2739
|
-
|
|
2740
|
-
## [Unreleased]
|
|
2741
|
-
|
|
2742
|
-
### Fixed
|
|
2743
|
-
|
|
2744
|
-
- `hq mesh daemon install` and `hq mesh daemon run` unload and remove the
|
|
2745
|
-
legacy `ai.getindigo.hq-work-mesh-listen` unit (LaunchAgent, systemd user
|
|
2746
|
-
unit, or Scheduled Task) so only the daemon subscribes. The daemon writes
|
|
2747
|
-
`~/.hq/work-mesh/live-cache.json` and bumps its cursor once per project-view
|
|
2748
|
-
push. MQTT reconnect logs once per transition into reconnecting instead of
|
|
2749
|
-
on every close. `hq mesh daemon doctor` reports "legacy listener still
|
|
2750
|
-
installed" while that unit remains (US-006).
|
|
2751
|
-
|
|
2752
|
-
## [Unreleased]
|
|
2753
|
-
|
|
2754
|
-
- Held-event repair no longer treats a later event timestamp as proof that
|
|
2755
|
-
metadata belongs to the current session instance. A reused session id stays
|
|
2756
|
-
unresolved when the held event's binding episode does not match the current
|
|
2757
|
-
one. A CLI self-update now records the verified HQ root and rewrites a
|
|
2758
|
-
legacy daemon unit (no `HQ_ROOT`, or `Restart=on-failure`) before restarting
|
|
2759
|
-
it, so the new process does not come up with an empty root allowlist.
|
|
2760
|
-
|
|
2761
|
-
## [Unreleased]
|
|
2762
|
-
|
|
2763
|
-
- A machine credential (fleet box or local bot) no longer posts mesh events
|
|
2764
|
-
with no company. `HQ_SPAWN_COMPANY`, the bot's company, or the identity
|
|
2765
|
-
file is sent with the event. When none of those is set, the event is held
|
|
2766
|
-
as `needs_company` and `hq mesh daemon doctor` shows the held count.
|
|
2767
|
-
A membership probe that a machine token cannot answer leaves the company
|
|
2768
|
-
in place and retries, instead of clearing it.
|
|
2769
|
-
|
|
2770
|
-
## [Unreleased]
|
|
2771
|
-
|
|
2772
|
-
- Expected caller errors from company resolution, membership, and qmd lookups
|
|
2773
|
-
no longer create Sentry issues. Windows filesystem failures remain visible
|
|
2774
|
-
and now include redacted path context plus a sync-aware diagnostic.
|
|
2775
|
-
|
|
2776
|
-
- An acknowledged Work Mesh register keeps the company on the session even
|
|
2777
|
-
when there is no project, or a project and no task. The next flush posts a
|
|
2778
|
-
held event for that session instead of leaving it held for lack of a company.
|
|
2779
|
-
Tests cover each acked-register branch.
|
|
2780
|
-
|
|
2781
|
-
- `hq mesh project set` sends the project version it just read (`If-Match` and
|
|
2782
|
-
`expectedVersion`). A 409 prints "The Board changed while you were editing.
|
|
2783
|
-
Re-run to pick up the latest." and exits non-zero. `--json` includes
|
|
2784
|
-
`VERSION_CONFLICT`.
|
|
2785
|
-
|
|
2786
|
-
- `hq mesh session` prints each rejected event's server code (and `--json`
|
|
2787
|
-
includes `rejections`). A flush dead-letter row for a per-event rejection
|
|
2788
|
-
stores that code next to `reason`.
|
|
2789
|
-
|
|
2790
|
-
- A Cognito refresh that comes back for a different subject is refused and the
|
|
2791
|
-
active `cognito-tokens.json` is left unchanged. `hq mesh daemon doctor`
|
|
2792
|
-
prints the whoami subject and the subject the daemon is using.
|
|
2793
|
-
|
|
2794
|
-
### Changed
|
|
2795
|
-
|
|
2796
|
-
- Local bots can reply to other people and bots in direct messages and in
|
|
2797
|
-
connected rooms without an owner-only sender restriction. Each DM
|
|
2798
|
-
correspondent has a separate conversation, and the owner's private context
|
|
2799
|
-
stays out of other people's conversations. Bots retain their configured
|
|
2800
|
-
owner and check suspicious requests before taking sensitive actions.
|
|
2801
|
-
|
|
2802
|
-
## [5.130.0] — 2026-09-22
|
|
2803
|
-
|
|
2804
|
-
### Fixed
|
|
2805
|
-
|
|
2806
|
-
- Hook-timeout reports remain visible as warning events with stable grouping and
|
|
2807
|
-
diagnostic tags. Repeated reports are rate-limited while the next capture
|
|
2808
|
-
records the suppressed count.
|
|
2809
|
-
|
|
2810
|
-
## [5.129.0] — 2026-09-22
|
|
2811
|
-
|
|
2812
|
-
### Added
|
|
2813
|
-
|
|
2814
|
-
- `hq report` publishes a channel report folder to a fixed hq-deploy slug,
|
|
2815
|
-
injects a strict Content-Security-Policy, and writes the run back onto the
|
|
2816
|
-
report record. The same command group covers draft publish, promote,
|
|
2817
|
-
discard-draft, access, adopt (install the bot's own job), and decommission.
|
|
2818
|
-
|
|
2819
|
-
- `hq report templates --json` lists the shipped report templates
|
|
2820
|
-
(`daily-digest`, `blank`). The cloud job prompt is the `update-report`
|
|
2821
|
-
runbook stored in `templates/runbooks/update-report.md`.
|
|
2822
|
-
|
|
2823
|
-
## [5.128.0] — 2026-09-22
|
|
2824
|
-
|
|
2825
|
-
### Fixed
|
|
2826
|
-
|
|
2827
|
-
- Expected hook-timeout warnings are counted as Sentry metrics, so a slow hook
|
|
2828
|
-
does not create its own Sentry issue. Genuine timeouts use stable grouping.
|
|
2829
|
-
|
|
2830
|
-
## [5.127.0] — 2026-09-22
|
|
2831
|
-
|
|
2832
|
-
### Added
|
|
2833
|
-
|
|
2834
|
-
- Every composed lane brief and every resume turn carries a foreground-only
|
|
2835
|
-
rule after the standing authorization: run every command, test suite and
|
|
2836
|
-
check in the foreground and wait for it; a turn that ends before the envelope
|
|
2837
|
-
is written is classified interrupted.
|
|
2838
|
-
- The spec §4 envelope repair turn now runs for grok as well. A provider with
|
|
2839
|
-
no session resume gets one fresh single-turn invocation on the same account
|
|
2840
|
-
carrying the schema, the parser error and the raw failed output. The lane
|
|
2841
|
-
records `envelope_repair.mode` as `resume` (claude, codex) or `fresh_turn`
|
|
2842
|
-
(grok) and `hq lanes show` prints it as `envelope_repair_mode`.
|
|
2843
|
-
- Lane records now reject omissions of required `hq-lane.v1` fields, and lane
|
|
2844
|
-
mutations enforce the durable field-writer ownership map at the store boundary.
|
|
2845
|
-
The map grants `reconcile` the quota fields it writes during dead-host
|
|
2846
|
-
recovery, the outpost pickup account bind carries the `spawn` writer, and
|
|
2847
|
-
`terminal_details` and `outpost_command_id` are typed and owned. The writer
|
|
2848
|
-
argument is a required writer name; the function-form call that skipped the
|
|
2849
|
-
ownership check is gone. The updater receives a deep clone and the check
|
|
2850
|
-
compares against the pre-update snapshot, so mutating the argument in place
|
|
2851
|
-
cannot bypass ownership.
|
|
2852
|
-
- Answer notes reach a resumed lane: `answered-questions.json` carries the
|
|
2853
|
-
operator's `--notes` text read from the lane's own body store, and the resume
|
|
2854
|
-
prompt renders each answer as its choice followed by the notes.
|
|
2855
|
-
- Every lane brief and every resume turn carries a standing authorization
|
|
2856
|
-
paragraph: the brief authorises completing every item it lists, and a
|
|
2857
|
-
`decision: ask` envelope is only for a decision the brief does not settle.
|
|
2858
|
-
- A question whose options are only continue and stop is recorded with
|
|
2859
|
-
`question_kind: "continue"` and `hq lanes questions list` prints it with
|
|
2860
|
-
`flag: "continue-loop"`. Nothing answers it automatically.
|
|
2861
|
-
- `hq lanes list` reports `senior_lost: true` for a running lane whose senior
|
|
2862
|
-
session is absent, ended, or lost, without mutating the lane.
|
|
2863
|
-
- `hq lanes questions answer --freeform <text>` answers a question that offered
|
|
2864
|
-
options with free text and records `answer_kind: freeform`.
|
|
2865
|
-
- `hq lanes resume <lane-id> [--text <message>]` resumes an `interrupted`,
|
|
2866
|
-
`done` or `blocked` lane on its recorded provider session and records
|
|
2867
|
-
`resumed_from`. Codex lanes record their session id at spawn and resume with
|
|
2868
|
-
`codex exec resume`, so `hq lanes message` and the envelope repair turn now
|
|
2869
|
-
work for exited Codex lanes as they do for Claude.
|
|
2870
|
-
- Lanes now report to the work mesh from the watcher, not only at create. A
|
|
2871
|
-
lane that finishes posts a completion event and moves its story to review;
|
|
2872
|
-
one that stops to ask posts the question ids; one that is blocked posts the
|
|
2873
|
-
reason. While a lane is working, the watcher posts a progress event when it
|
|
2874
|
-
sees a new tool call or new output, at most once per five minutes per lane
|
|
2875
|
-
(`providers.<provider>.progress_event_min_interval_ms` in
|
|
2876
|
-
`personal/lanes/config.json`), and never for silence. The watcher signs in
|
|
2877
|
-
the same way the session hooks do and never opens a browser; when it cannot
|
|
2878
|
-
reach the mesh it writes `mesh_event_failed` to the lane's watcher log and
|
|
2879
|
-
the lane's state is unchanged. On the wire, lane events use the mesh's
|
|
2880
|
-
existing activity, question, and note kinds, because the server rejects
|
|
2881
|
-
unknown kinds.
|
|
2882
|
-
- A lane whose final output is not a valid envelope gets one repair turn: the
|
|
2883
|
-
same session is resumed with the schema, the parser error, and the raw text,
|
|
2884
|
-
and asked for the corrected JSON only. If that also fails the lane is
|
|
2885
|
-
`failed` with reason `envelope_invalid`, and `envelope_repair` on the record
|
|
2886
|
-
carries both errors. Codex and Grok lanes cannot be resumed after exit, so
|
|
2887
|
-
they still fail on the first parse error; the record says why no repair ran.
|
|
2888
|
-
- A worker with `verification.approval_required` or `human_checkpoints` now
|
|
2889
|
-
briefs its lane to stop at each checkpoint with a `decision: ask` envelope
|
|
2890
|
-
naming the checkpoint. The resume prompt after the answer carries the answer
|
|
2891
|
-
inline as well as naming the answers file.
|
|
2892
|
-
- `hq lanes ask` retries delivery three times, waiting 5 s then 15 s, when the
|
|
2893
|
-
CLI is being replaced under it. On final failure it writes
|
|
2894
|
-
`ask_delivery_failed.json` and returns `ask_delivery_failed`; the lane's
|
|
2895
|
-
state is never changed.
|
|
2896
|
-
- You can hand a piece of work off to run on its own, and it keeps going after
|
|
2897
|
-
you close the window. If it hits something only you can decide, it stops and
|
|
2898
|
-
asks instead of guessing, and picks up again the moment you answer — you no
|
|
2899
|
-
longer have to sit and watch it. If it goes quiet for twenty minutes, you are
|
|
2900
|
-
told. Work sent to a second machine that would have landed back on the one
|
|
2901
|
-
that asked is stopped before it starts.
|
|
2902
|
-
- `hq lanes create --model` records the model on the lane and passes the
|
|
2903
|
-
provider's own flag (`--model` for Claude, `-m` for Codex and Grok).
|
|
2904
|
-
Account and provider `model` keys in `personal/lanes/config.json` are
|
|
2905
|
-
defaults; `--model` wins. An empty `--model` is refused.
|
|
2906
|
-
- Lane envelopes may include `story_complete` and `story_complete_reason`.
|
|
2907
|
-
`story_complete true` requires `story_status done`; `false` forbids it.
|
|
2908
|
-
Both are copied onto the lane record when an envelope is ingested.
|
|
2909
|
-
- `hq lanes create --effort <level>` sets reasoning effort per provider
|
|
2910
|
-
(`--effort` for Claude, `-c model_reasoning_effort` for Codex,
|
|
2911
|
-
`--reasoning-effort` for Grok), validated against each provider's own set.
|
|
2912
|
-
`effort` on an account or provider in `personal/lanes/config.json` is the
|
|
2913
|
-
default; with nothing set, an Opus or Fable model runs at `low`.
|
|
2914
|
-
- A resumed Claude lane whose last message is older than `compact_after_ms`
|
|
2915
|
-
(default one hour) is compacted with `/compact` before the resume, and the
|
|
2916
|
-
lane records the outcome and the before/after context size. `hq lanes
|
|
2917
|
-
message --no-compact` skips it once. `accounts list` and `show` report
|
|
2918
|
-
model, effort and the last compaction.
|
|
2919
|
-
- `--worker` resolves workers from `core/workers`, `personal/workers`,
|
|
2920
|
-
`companies/<co>/workers`, and packages mounted by `hq core scan-packages`.
|
|
2921
|
-
A worker id present in two trees is refused; a pack worker that is declared
|
|
2922
|
-
but not mounted is `package_workers_unmounted`.
|
|
2923
|
-
- A provider 429 is recorded per account and model in
|
|
2924
|
-
`personal/lanes/quota.json` (`account_quota_exhausted` with the reset time,
|
|
2925
|
-
or `account_model_unavailable` when a model needs credits). The balancer
|
|
2926
|
-
skips only what cannot run and never rewrites the operator's `enabled`.
|
|
2927
|
-
- `hq mesh story` accepts `--assignee <uid|me|none>` with or without `--status`.
|
|
2928
|
-
`me` uses the authenticated person or agent and refuses the synthetic session
|
|
2929
|
-
identity. `none` clears the assignee. The command does not send an actor.
|
|
2930
|
-
- `hq mesh project set <projectId> --company <slug>` now reads and merges the
|
|
2931
|
-
current Board view before replacing it, so a name or description update keeps
|
|
2932
|
-
existing stories and repository bindings. It accepts repository bindings from
|
|
2933
|
-
PRD `metadata.repos`, `--repos-json`, or repeatable `--repo <path[@branch]>`.
|
|
2934
|
-
`hq mesh project register <projectId> --company <slug>` registers the Board's
|
|
2935
|
-
deterministic project channel and genesis thread without raw API calls.
|
|
2936
|
-
- A work-context session-state lock or directory creation failure is reported
|
|
2937
|
-
as not tracking (exit 3) instead of an uncaught filesystem error.
|
|
2938
|
-
- The Work Mesh daemon now distinguishes an explicit device-default membership
|
|
2939
|
-
revocation from malformed or unavailable membership lookups. Temporary
|
|
2940
|
-
failures preserve attribution and retry later; explicit denials clear only
|
|
2941
|
-
the unchanged device-default binding through the shared session-state lock,
|
|
2942
|
-
so concurrent rebinds are preserved. Transcript-start discovery also leaves
|
|
2943
|
-
unavailable lookups unstarted and retries with bounded backoff.
|
|
2944
|
-
|
|
2945
|
-
### Fixed
|
|
2946
|
-
|
|
2947
|
-
- `hq agents status` no longer tells you to sign in to a brain that is already
|
|
2948
|
-
signed in. A device pairing file can outlive the sign-in it started, so the
|
|
2949
|
-
box sign-in probe now decides whether the prompt is shown. Grok and Codex
|
|
2950
|
-
prompts are matched to their own brain slot; a Claude prompt has no slot and
|
|
2951
|
-
is unaffected.
|
|
2952
|
-
- Lane watcher mesh calls now time out, progress events only follow new
|
|
2953
|
-
activity, and a persisted progress timestamp prevents duplicate events after
|
|
2954
|
-
a watcher restart. Invalid-envelope repair is limited to one attempt even
|
|
2955
|
-
when the repair writes a different envelope filename.
|
|
2956
|
-
- Completion mesh delivery attempts the thread event and story review update
|
|
2957
|
-
independently. Repair prompts cap inlined malformed JSON while retaining the
|
|
2958
|
-
raw envelope path.
|
|
2959
|
-
|
|
2960
|
-
- `hq lanes reconcile install --enable` now enables the systemd user timer; the
|
|
2961
|
-
generated unit uses `KillMode=process` so admitted lanes survive the pass, and
|
|
2962
|
-
its PATH carries the directories of the resolved provider binaries. A provider
|
|
2963
|
-
binary missing from PATH at spawn leaves the lane `queued` with
|
|
2964
|
-
`provider_binary_missing` instead of failing it.
|
|
2965
|
-
- A provider binary missing from PATH re-queues a lane only on admission. An
|
|
2966
|
-
answered-question or operator-message resume keeps the lane's recorded state
|
|
2967
|
-
and returns `provider_binary_missing` with the searched PATH, so the next
|
|
2968
|
-
reconcile resumes the recorded session instead of starting a fresh run and
|
|
2969
|
-
the operator message is not lost.
|
|
2970
|
-
- `hq lanes reconcile install` succeeds on a box with only one provider
|
|
2971
|
-
installed. The unit PATH carries the providers that resolve; the result lists
|
|
2972
|
-
`providers_resolved`, `providers_unresolved`, and a `warnings` line per
|
|
2973
|
-
missing provider. It refuses with `provider_binary_unresolved` only when no
|
|
2974
|
-
enabled provider resolves.
|
|
2975
|
-
- `hq lanes questions answer` treats a whitespace-only `--freeform` as absent,
|
|
2976
|
-
so `--choice` is validated against the options and recorded as an option
|
|
2977
|
-
answer instead of an empty freeform answer.
|
|
2978
|
-
- A synced question conflict sidecar whose `answer_history` is not an array is
|
|
2979
|
-
skipped like any other unreadable sidecar instead of failing every read of
|
|
2980
|
-
the question.
|
|
2981
|
-
- `hq lanes resume` now keeps terminal lanes terminal when account binding
|
|
2982
|
-
fails, records project or story attribution without requiring `--text`, and
|
|
2983
|
-
rejects a concurrent resume that has already become running. Blocked mesh
|
|
2984
|
-
notes use the accepted `audit` note kind and include their reason in text so
|
|
2985
|
-
the server preserves the marker.
|
|
2986
|
-
|
|
2987
|
-
- `hq agents list` shows an agent whose removal is under way as `removing`
|
|
2988
|
-
rather than the runtime status it had before the removal started. An agent
|
|
2989
|
-
that never finished setting up and is then removed used to keep reading
|
|
2990
|
-
`provisioning` until the teardown completed, so a removal that stalled
|
|
2991
|
-
looked like a removal that was never accepted. A finished teardown reads
|
|
2992
|
-
`removed`; every other agent is unchanged.
|
|
2993
|
-
- `hq lanes accounts list` treats Claude as logged in when
|
|
2994
|
-
`.credentials.json` exists. Missing Claude credentials are reported as
|
|
2995
|
-
unknown, not logged out. Codex and Grok still use `auth.json`.
|
|
2996
|
-
- With no `--account`, a lane is assigned the least-loaded enabled
|
|
2997
|
-
logged-in account rather than `default_account`.
|
|
2998
|
-
- A lane watcher now writes a JSON line to `logs/watcher.out` for each
|
|
2999
|
-
decision that changes what it believes: a liveness transition, a silence
|
|
3000
|
-
deadline, an envelope appearing, the exit classification, and the
|
|
3001
|
-
terminal record write. `hq lanes logs` reports each stream's path, size
|
|
3002
|
-
in bytes, and lines, so an empty log file is distinguishable from a
|
|
3003
|
-
missing lane. `watcher.out` is capped at 256 KiB by dropping the oldest
|
|
3004
|
-
complete lines. `hq lanes message` refuses a lane that will never read
|
|
3005
|
-
the drop box (`awaiting_input`, `blocked`, and every terminal state) and
|
|
3006
|
-
still accepts a queued lane. After the HQ root is resolved, `hq lanes`
|
|
3007
|
-
chdirs into it; relative `--brief-file` and `--payload-file` paths still
|
|
3008
|
-
resolve against the caller's original directory.
|
|
3009
|
-
- `hq lanes` no longer treats a git worktree's `.claude` folder as the HQ
|
|
3010
|
-
root, and it honours `$HQ_ROOT` the same way the watcher and reconcile
|
|
3011
|
-
timer already did. Listing or creating a lane from a worktree talks to
|
|
3012
|
-
the real store, or fails out loud — it does not return an empty success
|
|
3013
|
-
against a directory nothing else reads.
|
|
3014
|
-
- Creating a lane with `--outpost` now pushes it through `hq outposts exec`
|
|
3015
|
-
instead of leaving a queued row that no machine will pick up. If the
|
|
3016
|
-
Outpost is unreachable, the lane is failed, not queued.
|
|
3017
|
-
- A lane that finishes by asking a question now actually queues that question,
|
|
3018
|
-
so someone can answer it and the lane can continue. Stopping a lane now
|
|
3019
|
-
stops the process, not only the record. The drain hook that delivers
|
|
3020
|
-
mid-run answers is installed into the account home instead of sitting unused
|
|
3021
|
-
in the package. The periodic reconcile timer now names this HQ tree, so it
|
|
3022
|
-
does not wander into `$HOME/.claude`. A live lane heartbeats from its
|
|
3023
|
-
watcher; a dead watcher is started again; a reused PID is not treated as
|
|
3024
|
-
the worker still running; a malformed drop-box line no longer wedges every
|
|
3025
|
-
tool call.
|
|
3026
|
-
- `hq mesh start` now resolves its claimant from the token that authenticates
|
|
3027
|
-
the request before considering a same-identity cache entry. This prevents an
|
|
3028
|
-
agent from claiming work as a cached human and stops locally before creating
|
|
3029
|
-
a thread when no authenticated claimant can be established.
|
|
3030
|
-
|
|
3031
|
-
- `hq mesh context backfill-held` no longer reports `reconciled: 0` when
|
|
3032
|
-
`--dry-run` predicts non-zero reconcilable sessions. The check that decides
|
|
3033
|
-
whether reconcile produced a durable company binding now recognises a
|
|
3034
|
-
persisted `companySlug` as sufficient — the daemon resolves the uid on its
|
|
3035
|
-
next retry — instead of requiring `companyUid`, which is absent when the
|
|
3036
|
-
reconciler runs without a network membership call. Sessions that have no
|
|
3037
|
-
company evidence at all now appear in a separate `noEvidence` counter so
|
|
3038
|
-
operators can tell them apart from sessions that were genuinely reconciled
|
|
3039
|
-
as slug-only bindings.
|
|
3040
|
-
|
|
3041
|
-
## [5.126.0] — 2026-09-21
|
|
3042
|
-
|
|
3043
|
-
### Fixed
|
|
3044
|
-
|
|
3045
|
-
- `hq mesh start` works for people again. It was sending your email address as
|
|
3046
|
-
the claimant, and the server compares that to your person id, so every human
|
|
3047
|
-
start failed with "claimedBy must match the authenticated author" and left
|
|
3048
|
-
the thread unclaimed. Claims now carry your resolved person id (bots keep
|
|
3049
|
-
their agent id).
|
|
3050
|
-
|
|
3051
|
-
### Changed
|
|
3052
|
-
|
|
3053
|
-
- On Windows, the mesh daemon's Scheduled Task now names the HQ root it was
|
|
3054
|
-
installed for right in the task command (`mesh daemon run --hq-root <path>`)
|
|
3055
|
-
instead of relying on a remembered list of roots. Install only wraps the
|
|
3056
|
-
daemon in `conhost.exe --headless` when the machine is new enough to support
|
|
3057
|
-
it (Windows 10 1809 or later) and says which mode it chose. `hq mesh daemon
|
|
3058
|
-
status` now reports when the task's last start failed, and reminds you that
|
|
3059
|
-
the task only runs while you are logged on. macOS and Linux are unchanged.
|
|
3060
|
-
|
|
3061
|
-
- `hq mesh daemon install` no longer mistakes a code repo for your HQ. It
|
|
3062
|
-
accepts `--hq-root <path>`, otherwise uses `HQ_ROOT`, otherwise walks up
|
|
3063
|
-
from the current folder to the nearest real HQ tree (one with
|
|
3064
|
-
`companies/manifest.yaml` and `core/`, `.claude/`, or `personal/`). A folder
|
|
3065
|
-
that only has `.claude/` does not count. If nothing qualifies, install stops
|
|
3066
|
-
and tells you to pass `--hq-root` instead of recording the wrong root. The
|
|
3067
|
-
install confirmation now leads with the root it chose and how, and `hq mesh
|
|
3068
|
-
daemon status` prints the root the task actually carries and warns when that
|
|
3069
|
-
folder has since moved or been deleted.
|
|
3070
|
-
|
|
3071
|
-
- The setup bot now recognises when you have joined a company that someone
|
|
3072
|
-
else already built. Instead of asking what kind of business you own and
|
|
3073
|
-
offering to connect apps your team connected months ago, it shows you what
|
|
3074
|
-
is already there in real names and counts, answers one real question from
|
|
3075
|
-
your company's own memory, asks what you do there, and offers only what is
|
|
3076
|
-
missing for you. Things only an owner can do now name the owner instead of
|
|
3077
|
-
failing.
|
|
3078
|
-
|
|
3079
|
-
- The setup bot asks which tools you actually use and connects each one
|
|
3080
|
-
however that tool needs it, after recommending the few things a business
|
|
3081
|
-
like yours should set up. It no longer works from a fixed list of apps.
|
|
3082
|
-
|
|
3083
|
-
- Setup no longer asks for your name when you are already signed in, and no
|
|
3084
|
-
longer offers to skip itself.
|
|
3085
|
-
|
|
3086
|
-
### Fixed
|
|
3087
|
-
|
|
3088
|
-
- The desktop grok bot talks to grok 0.2.56 again. That CLI dropped
|
|
3089
|
-
`--output-format streaming-messages-json` (only `plain`, `json`, and
|
|
3090
|
-
`streaming-json` remain). The bot now reads the value from `grok --help`
|
|
3091
|
-
once and caches it, retries with `streaming-json` if grok rejects the old
|
|
3092
|
-
flag, and concatenates `streaming-json` text deltas for the reply instead
|
|
3093
|
-
of treating them as Anthropic Messages events.
|
|
3094
|
-
|
|
3095
|
-
- `hq core scan-packages` writes pack-mount symlinks relative to the host
|
|
3096
|
-
directory, so they survive a tree moving between machines. A leftover
|
|
3097
|
-
absolute link from another host, or an absolute link that still points at
|
|
3098
|
-
this pack's payload, is rewritten to the relative form on the next scan; a
|
|
3099
|
-
correct relative link is left alone.
|
|
3100
|
-
|
|
3101
|
-
- Work Mesh reconcile now owns company attribution explicitly on the acked
|
|
3102
|
-
path for every register where `resolvedCompany.uid` is set, not only fully
|
|
3103
|
-
bound sessions. Previously the non-bound acked path had no reconcile-owned
|
|
3104
|
-
attribution write and relied on an incidental side effect of
|
|
3105
|
-
`writeAckedRegisterState` → `writeAcknowledgedRegisterBinding`; that side
|
|
3106
|
-
effect already wrote `companyUid`/`companySlug` for ops carrying a uid, so
|
|
3107
|
-
the tenant was not dropped in practice, but any future acked path that
|
|
3108
|
-
preceded or skipped that call would silently lose it. The fix makes
|
|
3109
|
-
attribution explicit: a company-only ack is projected as `needs_project`
|
|
3110
|
-
with its tenant intact, the write reflects the true classification, and no
|
|
3111
|
-
`projectId`, `taskId`, or binding episode is fabricated on partial paths.
|
|
3112
|
-
Note: a company resolved by slug only (no uid) is still not attributed on
|
|
3113
|
-
either path. Tests disable each of those two writers in turn
|
|
3114
|
-
(`writeAckedRegisterState`, and the post-ack `writeSessionState`) and
|
|
3115
|
-
require the other one to still land the company for a company-only ack
|
|
3116
|
-
and a company-plus-project ack. The production write itself landed in
|
|
3117
|
-
`28aee9e` (#670).
|
|
3118
|
-
|
|
3119
|
-
- The setup bot no longer posts the same question twice when a turn takes a
|
|
3120
|
-
while: a question asked in an interim update is held back if the final
|
|
3121
|
-
answer repeats it.
|
|
3122
|
-
|
|
3123
|
-
- On Windows, the work-context config safety check now inspects the file's
|
|
3124
|
-
Windows ACL instead of POSIX mode bits, so `hq mesh context reconcile` no
|
|
3125
|
-
longer refuses every run with "unsafe permissions 666" and session state and
|
|
3126
|
-
register operations are written again. The config file and its directory must
|
|
3127
|
-
be writable only by the current user, SYSTEM, and Administrators; any other
|
|
3128
|
-
principal with write access is rejected, matched by SID so localized account
|
|
3129
|
-
names do not matter, and named in the error. When the ACL cannot be read
|
|
3130
|
-
at all (icacls missing, non-NTFS volume), the check follows a documented
|
|
3131
|
-
reduced-guarantee path: it prints one diagnostic that the config is
|
|
3132
|
-
unprotected on this platform and continues rather than blocking. macOS and
|
|
3133
|
-
Linux behaviour is unchanged.
|
|
3134
|
-
|
|
3135
|
-
### Added
|
|
3136
|
-
|
|
3137
|
-
- `hq mesh daemon install` now works on Windows. It registers a per-user
|
|
3138
|
-
Scheduled Task (`ai.getindigo.hq-mesh-daemon`) that starts the mesh daemon at
|
|
3139
|
-
logon, hidden, with no execution time limit and a restart-on-failure policy,
|
|
3140
|
-
and starts it right away. `hq mesh daemon status` reports whether the task is
|
|
3141
|
-
registered and running, `hq mesh daemon uninstall` ends and removes it, and a
|
|
3142
|
-
CLI update restarts it like the macOS and Linux services. Before this the
|
|
3143
|
-
three commands answered "No service manager integration on this platform",
|
|
3144
|
-
so the session-event spool never drained on Windows. The task definition is
|
|
3145
|
-
written as XML under `~/.hq/work-mesh/daemon/` and registered with
|
|
3146
|
-
`schtasks.exe`; no new dependencies. macOS and Linux behaviour is unchanged.
|
|
3147
|
-
|
|
3148
|
-
- `hq bot list --json` reports `busy` and `busySince` for each bot on this
|
|
3149
|
-
computer, and `hq bot status` shows an `answering:` line. Apps use this to
|
|
3150
|
-
keep a "thinking" indicator up for a whole turn, rather than ending it the
|
|
3151
|
-
moment the bot posts a progress note.
|
|
3152
|
-
|
|
3153
|
-
- Library layer for `hq lanes` (`src/lib/lanes/`): lane/question record store
|
|
3154
|
-
with compare-and-set writes, provider-account resolution, CPU/memory throttle,
|
|
3155
|
-
session liveness from the work-mesh spool, and path-keyed worker tenancy.
|
|
3156
|
-
|
|
3157
|
-
- `hq lanes` command surface: create/list/show/message/reparent/logs/stop,
|
|
3158
|
-
non-blocking ask, questions list/show/answer/escalate/cancel, accounts
|
|
3159
|
-
list/login/enable/disable, and sessions list/show. Create admits against
|
|
3160
|
-
provider caps, the bounded queue, and the host throttle, then leaves the
|
|
3161
|
-
lane queued — process spawn is an explicit not-implemented seam.
|
|
3162
|
-
|
|
3163
|
-
## [5.125.0] — 2026-09-20
|
|
3164
|
-
|
|
3165
|
-
### Fixed
|
|
3166
|
-
|
|
3167
|
-
- Work Mesh now preserves an acknowledged company binding through later
|
|
3168
|
-
company-less hook writes, preventing repeated registrations and held events.
|
|
3169
|
-
Held recovery accepts only durable registrations, canonical metadata under a
|
|
3170
|
-
verified HQ root, or manifest-backed repository ownership; conflicting or
|
|
3171
|
-
event-only hints stay unresolved. Its batch cursor rotates across restarts.
|
|
3172
|
-
Both legacy and direct-mode daemons detect an upgraded CLI, and systemd units
|
|
3173
|
-
use `Restart=always` so the installed service reloads the new code.
|
|
3174
|
-
|
|
3175
|
-
- Held-session recovery now accepts session metadata only from the daemon's
|
|
3176
|
-
configured HQ root, requires current-session evidence before restoring an
|
|
3177
|
-
acknowledged registration, and retains batch position when held records are
|
|
3178
|
-
compacted. Repeated hook activity no longer re-registers an unchanged binding.
|
|
3179
|
-
CLI updates report installed system units that need their host service manager
|
|
3180
|
-
to restart them. Daemon installs persist verified HQ-root allowlists, inject
|
|
3181
|
-
the primary root into service environments, and rewrite/reload existing user
|
|
3182
|
-
units so upgraded daemons restart reliably.
|
|
3183
|
-
|
|
3184
|
-
### Added
|
|
3185
|
-
|
|
3186
|
-
- Work Mesh now activates a device default company automatically when a signed-in
|
|
3187
|
-
person has exactly one active membership. Devices with several memberships ask
|
|
3188
|
-
for a choice in interactive CLI paths and show the stored state in `hq mesh
|
|
3189
|
-
context default get --json`. Clearing the default is a durable opt-out until
|
|
3190
|
-
the person explicitly sets one again. Historical held sessions remain unchanged
|
|
3191
|
-
unless `hq mesh context backfill-held --use-device-default` is supplied; those
|
|
3192
|
-
repaired records are labeled lower-confidence and counted by daemon doctor.
|
|
3193
|
-
|
|
3194
|
-
## [5.124.0] — 2026-09-20
|
|
3195
|
-
|
|
3196
|
-
### Added
|
|
3197
|
-
|
|
3198
|
-
- `hq billing sponsor` — ask a company to cover your $50/mo HQ Individual plan
|
|
3199
|
-
from the terminal, and answer those requests if you run the company.
|
|
3200
|
-
`request <company>` asks, `list` shows the queue you can answer or — if you
|
|
3201
|
-
are not an admin there — your own single status for that company, and
|
|
3202
|
-
`approve` / `decline` / `revoke` / `withdraw` resolve one. Pass `--company`
|
|
3203
|
-
to `list` when you are asking about your own state.
|
|
3204
|
-
|
|
3205
|
-
Approving does not always finish the job: if the company has no card on file,
|
|
3206
|
-
HQ accepts the yes but nothing is covered yet, and `approve` says so with the
|
|
3207
|
-
link to add one. This is off until HQ turns it on; until then the commands
|
|
3208
|
-
say it is not available yet rather than failing with a validation error.
|
|
3209
|
-
|
|
3210
|
-
## [5.123.2] — 2026-09-19
|
|
3211
|
-
|
|
3212
|
-
### Fixed
|
|
3213
|
-
|
|
3214
|
-
- Company slug lookup no longer prints `Failed to resolve company slug '…':`
|
|
3215
|
-
with nothing after the colon. Transient failures (timeouts, 429, 5xx) are
|
|
3216
|
-
retried once, and the error names the HTTP status and says it is a temporary
|
|
3217
|
-
lookup failure rather than a missing company.
|
|
3218
|
-
|
|
3219
|
-
## [5.123.1] — 2026-09-19
|
|
3220
|
-
|
|
3221
|
-
### Fixed
|
|
3222
|
-
|
|
3223
|
-
- Work Mesh now preserves an acknowledged company binding through later
|
|
3224
|
-
company-less hook writes, preventing repeated registrations and held events.
|
|
3225
|
-
Held recovery accepts only durable registrations, canonical metadata under a
|
|
3226
|
-
verified HQ root, or manifest-backed repository ownership; conflicting or
|
|
3227
|
-
event-only hints stay unresolved. Its batch cursor rotates across restarts.
|
|
3228
|
-
Both legacy and direct-mode daemons detect an upgraded CLI, and systemd units
|
|
3229
|
-
use `Restart=always` so the installed service reloads the new code.
|
|
3230
|
-
|
|
3231
|
-
- Held-session recovery now accepts session metadata only from the daemon's
|
|
3232
|
-
configured HQ root, requires current-session evidence before restoring an
|
|
3233
|
-
acknowledged registration, and retains batch position when held records are
|
|
3234
|
-
compacted. Repeated hook activity no longer re-registers an unchanged binding.
|
|
3235
|
-
CLI updates report installed system units that need their host service manager
|
|
3236
|
-
to restart them. Daemon installs persist verified HQ-root allowlists, inject
|
|
3237
|
-
the primary root into service environments, and rewrite/reload existing user
|
|
3238
|
-
units so upgraded daemons restart reliably.
|
|
3239
|
-
|
|
3240
|
-
## [5.123.0] — 2026-09-19
|
|
3241
|
-
|
|
3242
|
-
### Fixed
|
|
3243
|
-
|
|
3244
|
-
- `hq mesh check --project` lists that project's open threads. The CLI queries
|
|
3245
|
-
`/v1/work-mesh/threads` with `projectId` (and `status=open`) and merges the
|
|
3246
|
-
result with the status listing, because the status index can omit project
|
|
3247
|
-
threads.
|
|
3248
|
-
|
|
3249
|
-
- First signed-in interactive run prints a one-line telemetry disclosure on
|
|
3250
|
-
stderr (once per machine). `HQ_TELEMETRY=0` (also `false` or `off`) disables
|
|
3251
|
-
CLI telemetry posts. After the notice has been shown, events send
|
|
3252
|
-
`consentBasis: "disclosed"` instead of `"no-consent"`.
|
|
3253
|
-
|
|
3254
|
-
### Added
|
|
3255
|
-
|
|
3256
|
-
- Channel messages can now be posted as thread replies: `hq dm <channel>
|
|
3257
|
-
--thread <eventId> "…"` sends `rootEventId` on the POST, and `--thread last`
|
|
3258
|
-
replies to your most recent top-level message in that channel. `hq dm channel
|
|
3259
|
-
<name>` prints each root's eventId and indents replies under their root
|
|
3260
|
-
(`--json` is still the ungrouped oldest-first array). `@name` mentions were
|
|
3261
|
-
already resolved against the roster into the structured `mentions` array;
|
|
3262
|
-
unknown names still fail the send and list the roster (`--no-mentions` posts
|
|
3263
|
-
the text literally).
|
|
3264
|
-
|
|
3265
|
-
### Changed
|
|
3266
|
-
|
|
3267
|
-
- `hq whoami --company` and the bind notice no longer read `planLock`. They
|
|
3268
|
-
render the Starter over-limit nag from `GET /v1/billing/usage-limits`
|
|
3269
|
-
(including the top-level `freeMonth` CTA). Customer copy does not say
|
|
3270
|
-
"locked" or "read-only".
|
|
3271
|
-
|
|
3272
|
-
### Fixed
|
|
3273
|
-
|
|
3274
|
-
- Work Mesh board snapshots now read live story status from ProjectView before
|
|
3275
|
-
falling back to the vault board, and `hq mesh daemon doctor` warns when a
|
|
3276
|
-
presence credential omitted companies.
|
|
3277
|
-
|
|
3278
|
-
## [5.122.2] — 2026-09-19
|
|
3279
|
-
|
|
3280
|
-
### Fixed
|
|
3281
|
-
|
|
3282
|
-
- Local bots no longer retry inbox polls and heartbeats every couple of seconds
|
|
3283
|
-
after HQ returns 429. They honour Retry-After when present and otherwise back
|
|
3284
|
-
off, so a rate limit can clear instead of being held forever. `hq bot status`
|
|
3285
|
-
now says unreachable / cannot receive when those calls are failing, instead of
|
|
3286
|
-
HQ online from the last attempt, and `hq doctor` checks the same.
|
|
3287
|
-
|
|
3288
|
-
- `hq bot start` / `restart` rewrites a LaunchAgent that still points at the
|
|
3289
|
-
old toolchain `node/bin/hq` path after an HQ update moved the CLI to
|
|
3290
|
-
`npm-global/bin/hq`, which previously failed with MODULE_NOT_FOUND until
|
|
3291
|
-
someone ran `hq bot daemon install` by hand.
|
|
3292
|
-
|
|
3293
|
-
## [5.122.1] — 2026-09-19
|
|
3294
|
-
|
|
3295
|
-
### Fixed
|
|
3296
|
-
|
|
3297
|
-
- `hq cloud provision company` no longer silently accepts a server-suffixed
|
|
3298
|
-
slug. When another owner already holds the requested name, the vault assigns
|
|
3299
|
-
`<slug>-<tag>` and used to write local config as if the original name had
|
|
3300
|
-
been granted — sync then cannot push, because it looks for a folder matching
|
|
3301
|
-
the cloud slug. Provision now fails before writing, and retires the
|
|
3302
|
-
just-created entity so it does not leave a suffixed orphan.
|
|
3303
|
-
|
|
3304
|
-
- Work Mesh now keeps the company you selected when its session context is
|
|
3305
|
-
acknowledged or recovered after a restart. Mesh activity stays attached to
|
|
3306
|
-
the right company instead of being held for missing attribution.
|
|
3307
|
-
|
|
3308
|
-
## [5.122.0] — 2026-09-18
|
|
3309
|
-
|
|
3310
|
-
### Added
|
|
3311
|
-
|
|
3312
|
-
- A bot can now join HQ from the computer its owner already uses. Before,
|
|
3313
|
-
`hq agent enroll` refused on such a machine — the owner is signed in there,
|
|
3314
|
-
and an agent identity must not share a host account with a person's login —
|
|
3315
|
-
which left two bad options: a second user account, or `--replace`.
|
|
3316
|
-
|
|
3317
|
-
Enrollment now moves the bot into its own directory instead of refusing:
|
|
3318
|
-
`~/.hq-agent/<name>/`, with its own credentials, key, state and logs. The
|
|
3319
|
-
owner's session file is never read, moved, or changed. `hq agent probe`,
|
|
3320
|
-
`hq agent kit`, `hq agent inbox` and `hq agent mcp` all find that directory
|
|
3321
|
-
on their own, so the bot is itself without anyone exporting environment
|
|
3322
|
-
variables. Use `--name <bot>` to choose the directory, or to run a second
|
|
3323
|
-
bot on the same computer.
|
|
3324
|
-
|
|
3325
|
-
Two or more local bots are deliberately ambiguous: `hq agent` commands then
|
|
3326
|
-
ask for `HQ_AGENT_DIR` rather than guessing which identity to act as.
|
|
3327
|
-
|
|
3328
|
-
## [5.121.2] — 2026-09-18
|
|
3329
|
-
|
|
3330
|
-
### Added
|
|
3331
|
-
|
|
3332
|
-
- `hq cloud retire company <slug>` soft-tombstones a cloud company (owner
|
|
3333
|
-
only, confirm unless `--yes`) so `hq cloud demote company` can run without
|
|
3334
|
-
`--propagate-deletes`. Vault files stay; local folders are not touched.
|
|
3335
|
-
|
|
3336
|
-
## [5.121.1] — 2026-09-18
|
|
3337
|
-
|
|
3338
|
-
### Fixed
|
|
3339
|
-
|
|
3340
|
-
- `hq --version` prints only the CLI version again. The labelled HQ vs CLI vs
|
|
3341
|
-
latest hq-core report stays on `hq version` (and `--json`). Older updaters
|
|
3342
|
-
compare the whole `--version` output to the CLI they just installed; reading
|
|
3343
|
-
the HQ line made every successful update look like a second install was
|
|
3344
|
-
shadowing it.
|
|
3345
|
-
|
|
3346
|
-
### Documentation
|
|
3347
|
-
|
|
3348
|
-
- The 2026-09-18 fleet-bots GA notes group the published CLI changes for plan
|
|
3349
|
-
notices, DM attachments, staged skills, version reporting, knowledge-index
|
|
3350
|
-
protection, and ambiguous people resolution (#634, #636, #641, #642, #643,
|
|
3351
|
-
#644, #645, #647, #648, #649).
|
|
3352
|
-
|
|
3353
|
-
## [5.121.0] — 2026-09-18
|
|
3354
|
-
|
|
3355
|
-
### Changed
|
|
3356
|
-
|
|
3357
|
-
- The agent kit no longer installs a work-mesh doorbell listener, and
|
|
3358
|
-
`hq agent probe` no longer checks one. The doorbell was never what made a
|
|
3359
|
-
bot reachable — messages arrive over the inbox either way — but it was the
|
|
3360
|
-
loudest part of setup: it needed a realtime connection that restricted bot
|
|
3361
|
-
hosts routinely intercept, so a perfectly healthy bot reported a failure it
|
|
3362
|
-
could do nothing about.
|
|
3363
|
-
|
|
3364
|
-
The probe's `work-mesh` line becomes `presence`: the agent's own inbox
|
|
3365
|
-
answers and its heartbeat is fresh. That is what the check was really
|
|
3366
|
-
proving. `hq mesh` remains available to a bot that is asked to use it; the
|
|
3367
|
-
kit simply no longer runs a listener or ships a skill telling it to.
|
|
3368
|
-
|
|
3369
|
-
One trade-off: an inbox doorbell used to trigger an immediate poll. Without
|
|
3370
|
-
it, incoming messages are picked up by the inbox poller on its own interval
|
|
3371
|
-
(15 seconds by default) rather than instantly.
|
|
3372
|
-
|
|
3373
|
-
## [5.120.1] — 2026-09-18
|
|
3374
|
-
|
|
3375
|
-
- A local bot no longer replaces your own sign-in. Bots that run on your
|
|
3376
|
-
computer (the setup bot included) keep their session in their own folder
|
|
3377
|
-
now, instead of the file HQ uses to know who you are. Before, a bot could
|
|
3378
|
-
overwrite that file and HQ would then treat the bot as you: its name in
|
|
3379
|
-
place of yours, no companies, a profile that would not save, and sync
|
|
3380
|
-
failing. If that already happened on your computer, `hq` now ignores the
|
|
3381
|
-
bot's session there and asks you to sign in as yourself. (hq-cloud 6.16.60)
|
|
3382
|
-
|
|
3383
|
-
## [5.120.0] — 2026-09-18
|
|
3384
|
-
|
|
3385
|
-
### Added
|
|
3386
|
-
|
|
3387
|
-
- `hq agents provision` can reuse an existing Slack bot token through flags,
|
|
3388
|
-
environment variables, or stdin. Socket Mode agents can also accept their
|
|
3389
|
-
app-level token. HQ validates both tokens and the bot's required Slack scopes
|
|
3390
|
-
before it creates the agent.
|
|
3391
|
-
|
|
3392
|
-
## [5.119.15] — 2026-09-18
|
|
3393
|
-
|
|
3394
|
-
### Fixed
|
|
3395
|
-
|
|
3396
|
-
- `hq people resolve <name>` now reports ambiguity when the name matches more
|
|
3397
|
-
than one person instead of selecting the first match.
|
|
3398
|
-
|
|
3399
|
-
## [5.119.13] — 2026-09-18
|
|
3400
|
-
|
|
3401
|
-
### Added
|
|
3402
|
-
|
|
3403
|
-
- `hq version` (and `hq --version`) print the installed HQ version, the CLI
|
|
3404
|
-
version labelled as CLI, and the latest hq-core release. If a newer HQ is
|
|
3405
|
-
out it says to run `/update-hq`; if the lookup cannot reach the network it
|
|
3406
|
-
says so instead of going quiet. `hq version --json` prints the same payload.
|
|
3407
|
-
|
|
3408
|
-
### Fixed
|
|
3409
|
-
|
|
3410
|
-
- `hq core rebuild-index company-knowledge` no longer silently replaces a
|
|
3411
|
-
hand-written company knowledge INDEX. If the file is not the last generated
|
|
3412
|
-
output, the command refuses, prints a short diff, and asks for `--accept`.
|
|
3413
|
-
`<!-- hq:keep -->` opts the whole file out; `<!-- hq:keep -->` … `<!-- /hq:keep -->`
|
|
3414
|
-
fences are kept while the table regenerates. Subdirectory README headings
|
|
3415
|
-
are projected into the description column so the generated index is usable
|
|
3416
|
-
without hand edits.
|
|
3417
|
-
|
|
3418
|
-
## [5.119.12] — 2026-09-18
|
|
3419
|
-
|
|
3420
|
-
### Fixed
|
|
3421
|
-
|
|
3422
|
-
- `hq files cat … --company prs_<person-uid>` now reads the file instead of
|
|
3423
|
-
refusing with "No company found for slug". Reading a DM attachment needs the
|
|
3424
|
-
sender's vault as the scope, and `cat` resolved that value as a company slug
|
|
3425
|
-
of its own, after the same fix landed on the presign path.
|
|
3426
|
-
|
|
3427
|
-
## [5.119.11] — 2026-09-18
|
|
3428
|
-
|
|
3429
|
-
### Added
|
|
3430
|
-
|
|
3431
|
-
- On a personal account, My Telemetry is part of the paid Individual plan
|
|
3432
|
-
($50/mo). When the server withholds it, the CLI now prints a short notice
|
|
3433
|
-
naming the plan and where to upgrade, instead of the raw refusal. Company
|
|
3434
|
-
plans are unaffected, and the notice has nothing to do with the plan-limit
|
|
3435
|
-
nags — it is a plan fact, printed once, where it happened.
|
|
3436
|
-
|
|
3437
|
-
### Fixed
|
|
3438
|
-
|
|
3439
|
-
- `hq files … --company prs_<person-uid>` now reaches that person's vault
|
|
3440
|
-
instead of failing with "Company slug ... was not found". This is how a DM
|
|
3441
|
-
recipient reads a file attached to a message: the attachment lives in the
|
|
3442
|
-
sender's personal vault, so naming the sender is the only scope that works.
|
|
3443
|
-
|
|
3444
|
-
## [5.119.10] — 2026-09-18
|
|
3445
|
-
|
|
3446
|
-
### Added
|
|
3447
|
-
|
|
3448
|
-
- `hq skill register` reserves a company skill UID from a proposal-lane
|
|
3449
|
-
source and writes the server-stamped bytes only to `--stamped-output`.
|
|
3450
|
-
It does not write `companies/<company>/skills/`, create a discovery
|
|
3451
|
-
wrapper, or sync. `hq skill promote` copies those exact bytes into the
|
|
3452
|
-
canonical skill path only after `--expected-sha256` matches and the
|
|
3453
|
-
stamped `skill_uid` matches the server registration. A differing
|
|
3454
|
-
canonical file requires `--reviewed-update`. Use `--no-sync` to leave
|
|
3455
|
-
upload to a later steward command.
|
|
3456
|
-
|
|
3457
|
-
## [5.119.9] — 2026-09-17
|
|
3458
|
-
|
|
3459
|
-
### Added
|
|
3460
|
-
|
|
3461
|
-
- The CLI now prints a one-time notice when your workspace crosses a plan
|
|
3462
|
-
threshold — reaching 80% of a Starter limit, or going past one. The server
|
|
3463
|
-
decides when a threshold has been crossed and sends it with the response, so
|
|
3464
|
-
a session you already have open surfaces the notice on its next API call
|
|
3465
|
-
rather than on its next launch. Each `{resource}:{band}` is printed exactly
|
|
3466
|
-
once per episode, remembered in `~/.hq/plan-limit-nag.json`; a dimension that
|
|
3467
|
-
drops back under the threshold and climbs again is announced again.
|
|
3468
|
-
`HQ_NO_PLAN_LIMIT_NAG=1` silences it along with the other plan-limit lines.
|
|
3469
|
-
|
|
3470
|
-
### Fixed
|
|
3471
|
-
|
|
3472
|
-
- A file attached to a DM is now visible to a bot reading its mail. `hq dm
|
|
3473
|
-
inbox`, `hq dm thread`, `hq dm channel` and `hq agent inbox` print each
|
|
3474
|
-
attached file's name, type and vault path under the message body; the JSON
|
|
3475
|
-
forms carry an `attachments[]` field. Previously only the body text was
|
|
3476
|
-
rendered, so an agent sent a screenshot answered "no image came through".
|
|
3477
|
-
|
|
3478
|
-
## [5.119.8] — 2026-09-17
|
|
3479
|
-
|
|
3480
|
-
### Fixed
|
|
3481
|
-
|
|
3482
|
-
- Channel posts that mention people by full name no longer show the parsing
|
|
3483
|
-
quotes in the room. `@"Jacob Posel"` is still how a multi-word name is
|
|
3484
|
-
typed, but the message is posted as `@Jacob Posel`, the way a person would
|
|
3485
|
-
have written it. The structured mention itself is unchanged.
|
|
3486
|
-
|
|
3487
|
-
## [5.119.7] — 2026-09-17
|
|
3488
|
-
|
|
3489
|
-
### Fixed
|
|
3490
|
-
|
|
3491
|
-
- When the kit cannot install its `@reboot` entry because the host has no
|
|
3492
|
-
`crontab` at all, the install now says so and names the package to install,
|
|
3493
|
-
instead of reporting a raw ENOENT the operator cannot act on. A minimal
|
|
3494
|
-
container image routinely ships without cron; the Muse pilot hit this the
|
|
3495
|
-
first time the reboot entry was attempted.
|
|
3496
|
-
|
|
3497
|
-
## [5.119.6] — 2026-09-17
|
|
3498
|
-
|
|
3499
|
-
### Fixed
|
|
3500
|
-
|
|
3501
|
-
- Slack token paste links now use the company's canonical Console slug. Links
|
|
3502
|
-
built with an internal company ID redirected to the company home and lost the
|
|
3503
|
-
agent setup form.
|
|
3504
|
-
|
|
3505
|
-
## [5.119.5] — 2026-09-17
|
|
3506
|
-
|
|
3507
|
-
### Fixed
|
|
3508
|
-
|
|
3509
|
-
- When a new Slack agent is waiting for a Socket Mode app-level token, `hq
|
|
3510
|
-
agents status` now shows a link to create the token and a direct link to the
|
|
3511
|
-
HQ form where it can be pasted. The same links are included in JSON output.
|
|
3512
|
-
|
|
3513
|
-
### Changed
|
|
3514
|
-
|
|
3515
|
-
- Starter now includes 1 integration instead of none, and the lock copy says
|
|
3516
|
-
so. The notice reads "too many integrations", quotes "Integrations allowed
|
|
3517
|
-
on Starter: 1", and tells you to "disconnect integrations until you are at 1
|
|
3518
|
-
or fewer"; the per-turn line reads "over its 1-integration limit". Nothing in
|
|
3519
|
-
the CLI says Starter has no integrations any more.
|
|
3520
|
-
- Plan-limit messages now say what is actually happening. Going over a Starter
|
|
3521
|
-
limit never stopped the workspace, and the copy no longer implies it did:
|
|
3522
|
-
the words "locked" and "read-only" are gone from every line `hq` prints, and
|
|
3523
|
-
the notice states the two things that do pause — adding new files and adding
|
|
3524
|
-
new secrets — while everything else keeps working. A test scans every
|
|
3525
|
-
rendered string for both words so the copy cannot drift back.
|
|
3526
|
-
- The over-limit per-turn nag is one line instead of a box, and it repeats at
|
|
3527
|
-
most once every 6 hours (was once a day). `HQ_NO_PLAN_LIMIT_NAG=1` still
|
|
3528
|
-
silences it.
|
|
3529
|
-
|
|
3530
|
-
## [5.119.4] — 2026-09-17
|
|
3531
|
-
|
|
3532
|
-
### Fixed
|
|
3533
|
-
|
|
3534
|
-
- On a host with no usable service manager, `hq agent kit install` now installs
|
|
3535
|
-
the `@reboot` crontab entry that restarts the kit, instead of printing the
|
|
3536
|
-
line and trusting it to be pasted. A supervisor that does not survive a
|
|
3537
|
-
reboot is not a supervisor: on the Muse pilot the host restarted, the
|
|
3538
|
-
supervisor died with it, nothing brought it back, and the agent silently
|
|
3539
|
-
stopped seeing new messages while every surface still reported healthy. The
|
|
3540
|
-
entry is marked and replaced on reinstall rather than stacked, and every
|
|
3541
|
-
other crontab line is preserved. If the crontab cannot be written the install
|
|
3542
|
-
still succeeds but says so in red, naming the consequence and printing the
|
|
3543
|
-
line to add by hand.
|
|
3544
|
-
|
|
3545
|
-
## [5.119.3] — 2026-09-17
|
|
3546
|
-
|
|
3547
|
-
### Fixed
|
|
3548
|
-
|
|
3549
|
-
- `hq agent inbox` now merges the agent's own server inbox with the kit's local
|
|
3550
|
-
mirror instead of reading the mirror alone. The mirror is only as fresh as
|
|
3551
|
-
the kit's poller, and when that process dies nothing says so — the listing
|
|
3552
|
-
simply stops growing. On the Muse pilot the host rebooted, the kit supervisor
|
|
3553
|
-
died with it and was never restarted, and the command kept confidently
|
|
3554
|
-
answering with the eight messages from before the reboot while the server had
|
|
3555
|
-
every newer one: no error, no empty result, no stale marker, just an agent
|
|
3556
|
-
that had gone deaf and could not tell. When the server cannot be reached the
|
|
3557
|
-
mirror is still returned, with a note saying it may be stale. `hq_inbox_read`
|
|
3558
|
-
already merged; both now share one implementation.
|
|
3559
|
-
|
|
3560
|
-
## [5.119.2] — 2026-09-17
|
|
3561
|
-
|
|
3562
|
-
### Fixed
|
|
3563
|
-
|
|
3564
|
-
- The work-mesh listener falls back to its periodic refetch when the MQTT
|
|
3565
|
-
doorbell is unreachable, instead of retrying forever and reporting
|
|
3566
|
-
`component-mesh=error` the whole time. The doorbell is an optimisation over a
|
|
3567
|
-
REST source of truth, so a host that cannot reach AWS IoT has a slower
|
|
3568
|
-
doorbell, not a broken agent. Some bot sandboxes sit behind an egress proxy
|
|
3569
|
-
that intercepts the connection and answers with non-TLS bytes
|
|
3570
|
-
(`tls_validate_record_header:wrong version number`). After five failed
|
|
3571
|
-
attempts the listener says so once, keeps the cache current on the periodic
|
|
3572
|
-
cadence, and retries MQTT every 30 minutes so a bot moved to an unrestricted
|
|
3573
|
-
network recovers its instant doorbell on its own. Incoming DMs are
|
|
3574
|
-
unaffected either way — the inbox poller is a separate service.
|
|
3575
|
-
|
|
3576
|
-
## [5.119.1] — 2026-09-17
|
|
3577
|
-
|
|
3578
|
-
### Fixed
|
|
3579
|
-
|
|
3580
|
-
- A kit.json written before `syncFiles` existed now reads as NOT syncing, the
|
|
3581
|
-
same as a fresh install. 5.119.0 read it as `true` to preserve the behaviour
|
|
3582
|
-
it recorded, which was wrong twice over: the bots with such a file are
|
|
3583
|
-
exactly the ones the mirror is failing on, and because a bare reinstall keeps
|
|
3584
|
-
recorded settings, the documented fix — reinstall the kit — left the sync
|
|
3585
|
-
loop running and `hq agent probe` still pulling the whole vault. A reinstall
|
|
3586
|
-
now removes that loop. A bot that genuinely wants the local mirror passes
|
|
3587
|
-
`--sync-files` once.
|
|
3588
|
-
|
|
3589
|
-
## [5.119.0] — 2026-09-17
|
|
3590
|
-
|
|
3591
|
-
### Changed
|
|
3592
|
-
|
|
3593
|
-
- External agents no longer copy the company vault onto their own machine.
|
|
3594
|
-
`hq agent kit install` used to install a sync loop that mirrored the whole
|
|
3595
|
-
vault to disk; a bot reads and writes vault files on demand through the `hq`
|
|
3596
|
-
MCP server and the `hq files` commands, so the copy bought nothing for the
|
|
3597
|
-
common case and cost a full download of the company's assets. On a team with
|
|
3598
|
-
a large brand library that is hundreds of megabytes, and on a sandboxed bot
|
|
3599
|
-
host whose egress truncates large responses it could never finish at all —
|
|
3600
|
-
every file retried three times and failed with `ERR_HQ_TRUNCATED_RESPONSE`,
|
|
3601
|
-
which left the probe stuck and the agent reporting a sync error while it was
|
|
3602
|
-
otherwise a healthy team member.
|
|
3603
|
-
|
|
3604
|
-
Pass `--sync-files` if the bot genuinely needs files on disk for shell-based
|
|
3605
|
-
work; a reinstall without it removes a sync loop an earlier install left
|
|
3606
|
-
behind. An existing install is unchanged until it is reinstalled.
|
|
3607
|
-
|
|
3608
|
-
- `hq agent probe` reports a `files` check in place of `team-sync`. Without a
|
|
3609
|
-
local copy it proves the read path the bot actually uses — a vault listing
|
|
3610
|
-
answers — instead of downloading the vault to prove a folder exists. With
|
|
3611
|
-
`--sync-files` it checks the pull exactly as before.
|
|
3612
|
-
|
|
3613
|
-
- The heartbeat reports only the components the kit runs. A component that was
|
|
3614
|
-
never installed is omitted rather than reported as an error, so a bot with no
|
|
3615
|
-
sync loop no longer looks broken.
|
|
3616
|
-
|
|
3617
|
-
- `hq_search` no longer runs a local index search on an agent that has no local
|
|
3618
|
-
copy, where it could only ever return nothing. It runs the server-side vault
|
|
3619
|
-
search instead, and says plainly that content and semantic search need a kit
|
|
3620
|
-
installed with `--sync-files`.
|
|
3621
|
-
|
|
3622
|
-
## [5.118.2] — 2026-09-17
|
|
3623
|
-
|
|
3624
|
-
### Changed
|
|
3625
|
-
|
|
3626
|
-
- The locked-workspace notice now says what you can still do. A locked
|
|
3627
|
-
workspace is read-only for new things, but deleting still works — which
|
|
3628
|
-
matters, because every fix the notice lists (remove members, disconnect
|
|
3629
|
-
integrations, delete secrets, deprovision agents) is a delete. The notice
|
|
3630
|
-
states that outright instead of leaving "read-only" to be guessed at.
|
|
3631
|
-
|
|
3632
|
-
- The plan-limit box names the plan: "HQ Starter plan limit exceeded" rather
|
|
3633
|
-
than "HQ plan limit exceeded".
|
|
3634
|
-
|
|
3635
|
-
### Added
|
|
3636
|
-
|
|
3637
|
-
- `hq agents provision --model` now sets the brain model during creation. A
|
|
3638
|
-
model such as `gpt-5.5` or `grok-4.6` selects the agents-v2 runtime unless
|
|
3639
|
-
`--provider` is specified, avoiding a later box recreation to change brains.
|
|
3640
|
-
|
|
3641
|
-
## [5.118.1] — 2026-09-17
|
|
3642
|
-
|
|
3643
|
-
### Fixed
|
|
3644
|
-
|
|
3645
|
-
- The locked-workspace notice now names the real reason. A workspace locked
|
|
3646
|
-
because of secrets or agents no longer reads "over its 5-member limit"; each
|
|
3647
|
-
reason gets its own explanation, its own Starter cap and its own fix, and a
|
|
3648
|
-
lock with no recognised reason says only that the workspace is over the
|
|
3649
|
-
Starter limits. The plan-limit warning also names the dimension it is quoting
|
|
3650
|
-
("users at 9/10 (90%) (members)").
|
|
3651
|
-
|
|
3652
|
-
- You can now remove an HQ Agents v2 agent from the CLI without bypassing its
|
|
3653
|
-
safety check. `hq agents rm` accepts `--confirm-destroy-agents-v2
|
|
3654
|
-
<instance-id>` alongside `--yes` and sends only the instance ID you name; HQ
|
|
3655
|
-
still refuses an ID that does not match the live box.
|
|
3656
|
-
|
|
3657
|
-
## [5.118.0] — 2026-09-16
|
|
3658
|
-
|
|
3659
|
-
### Added
|
|
3660
|
-
|
|
3661
|
-
- External agents can now be woken the moment an HQ message arrives. `hq agent kit wake set-url --stdin` points the kit at a webhook, such as a Grok Bot routine webhook trigger. `hq agent kit wake set-command -- <cmd>` runs a local command for frameworks with a CLI. The kit sends a short notice with no message text when mail is pending, and again every 10 minutes until it is handled. The webhook URL is stored privately and never logged.
|
|
3662
|
-
- `hq agent inbox` lists an external agent's pending HQ messages and `hq agent inbox done <id>` marks them handled, so a woken bot never answers the same message twice. The MCP server gains a matching `hq_inbox_done` tool.
|
|
3663
|
-
|
|
3664
|
-
### Fixed
|
|
3665
|
-
|
|
3666
|
-
- The `hq_inbox_read` MCP tool no longer fails with 403 AGENT_ROUTE_NOT_SUPPORTED. It reads the agent's own inbox instead of the person-only DM inbox, and by default returns only messages not yet handled.
|
|
3667
|
-
- The HQ direct-message skill shipped to external agents no longer tells them to use person-only read commands.
|
|
3668
|
-
|
|
3669
|
-
## [5.117.3] — 2026-09-16
|
|
3670
|
-
|
|
3671
|
-
### Fixed
|
|
3672
|
-
|
|
3673
|
-
- `hq doctor --fix` no longer breaks Claude Code sessions. Since HQ moved to a single master hook, the doctor saw every hook script as unregistered. It then added one hook entry per script with no tool filter, so guards such as the Glob path check and core protection ran on every tool call and blocked Bash, Skill and Read with "Glob needs a path" or "Edit to locked path is not allowed". An HQ update could then move those entries into `.claude/settings.local.json`. The doctor no longer auto-registers orphan scripts. It now detects the stray entries in both settings files and `hq doctor --fix` removes them, keeping your permissions and any hooks you added yourself. Scripts listed in `.claude/hooks/hook-registry.json` also no longer show as orphans.
|
|
3674
|
-
|
|
3675
|
-
### Fixed
|
|
3676
|
-
|
|
3677
|
-
- `hq doctor` now keeps its hook-health compatibility verdict in step with
|
|
3678
|
-
`check-hq-hooks.sh` when either required command hook is missing.
|
|
3679
|
-
|
|
3680
|
-
## [5.117.2] — 2026-09-16
|
|
3681
|
-
|
|
3682
|
-
### Fixed
|
|
3683
|
-
|
|
3684
|
-
- External agents: the work-mesh listener no longer fails every refresh with
|
|
3685
|
-
"Agent callers may only use DM, channel comms, and reaction routes". It now
|
|
3686
|
-
re-reads the agent's own inbox on each doorbell instead of the person-only
|
|
3687
|
-
conversation routes.
|
|
3688
|
-
- External agents: `hq agent probe` no longer waits for a DM to itself to show up
|
|
3689
|
-
in the inbox, which the server never delivers. The dm check passes when the
|
|
3690
|
-
send is accepted and the agent inbox is readable.
|
|
3691
|
-
- External agents: kit service logs no longer write every line twice when the
|
|
3692
|
-
services run under a supervisor.
|
|
3693
|
-
|
|
3694
|
-
### Changed
|
|
3695
|
-
|
|
3696
|
-
- HQ now calls the paid plan by its real name everywhere you see it. If your
|
|
3697
|
-
workspace went over its Starter limit, the notice, the error you got when you
|
|
3698
|
-
tried to write something, and the upgrade prompt used to give three different
|
|
3699
|
-
names for the same plan — "HQ Workforce", "HQ Team", and "Team" — which made
|
|
3700
|
-
it genuinely unclear what you were being asked to buy. They all say HQ
|
|
3701
|
-
Workforce now. The free plan is called Starter rather than "free plan", to
|
|
3702
|
-
match the pricing page.
|
|
3703
|
-
|
|
3704
|
-
### Fixed
|
|
3705
|
-
|
|
3706
|
-
- `hq doctor` now reports failed hook wiring when `.claude/settings.json` has
|
|
3707
|
-
no usable command hook for `SessionStart` or `PreToolUse`. The file can still
|
|
3708
|
-
be present and valid JSON, but it no longer reads as healthy when nothing runs.
|
|
3709
|
-
|
|
3710
|
-
## [5.117.1] — 2026-09-16
|
|
3711
|
-
|
|
3712
|
-
### Fixed
|
|
3713
|
-
|
|
3714
|
-
- `hq agent probe` works for external agents. The work-mesh check no longer
|
|
3715
|
-
reads the owner-only company roster (which answered "Not found" to an agent);
|
|
3716
|
-
it passes when the realtime credential vend names the agent, the agent's own
|
|
3717
|
-
inbox answers, and this host's heartbeat and mesh listener are live. The DM
|
|
3718
|
-
check reads the probe message back from the agent's inbox instead of the
|
|
3719
|
-
human-only thread view that refused agents. Output format is unchanged.
|
|
3720
|
-
- The agent kit's mesh listener stays connected. It now asks for the personal
|
|
3721
|
-
realtime credentials that cover the agent's own doorbell topics (the company
|
|
3722
|
-
presence credentials it used made the connection drop before subscribing),
|
|
3723
|
-
subscribes only to topics those credentials grant, and polls the inbox
|
|
3724
|
-
immediately when an inbox doorbell rings.
|
|
3725
|
-
- Inbox poll failures are diagnosable: the log names the method, full URL,
|
|
3726
|
-
status and the first 300 characters of the response, and the inbox URL keeps
|
|
3727
|
-
any base path from `apiBaseUrl` without doubling `/v1`.
|
|
3728
|
-
- `hq dm inbox` works for agent identities by reading the agent inbox;
|
|
3729
|
-
`hq dm thread` tells agents to use `hq dm inbox` instead of failing with a
|
|
3730
|
-
server refusal.
|
|
3731
|
-
- `hq agent kit install` works on hosts with no systemd user session or
|
|
3732
|
-
launchd: it starts the services under one background `hq agent kit run all`
|
|
3733
|
-
supervisor (restarting any service that exits), records its pid in
|
|
3734
|
-
`~/.hq-agent/kit.pid`, and prints the `@reboot` crontab line that keeps it
|
|
3735
|
-
running after a restart. `kit status` and `kit uninstall` understand this
|
|
3736
|
-
mode.
|
|
3737
|
-
|
|
3738
|
-
## [5.117.0] — 2026-09-16
|
|
3739
|
-
|
|
3740
|
-
### Added
|
|
3741
|
-
|
|
3742
|
-
- Your local bots can come back after a reinstall. A bot is an identity HQ
|
|
3743
|
-
keeps for you plus the state that runs it on one computer; wiping that
|
|
3744
|
-
computer's HQ folder, or moving to a new Mac, used to leave every bot dead
|
|
3745
|
-
with no way back — making a new one was refused, because the old one still
|
|
3746
|
-
existed. Now `hq bot restore` brings back every bot you own that is missing
|
|
3747
|
-
from this computer, with its own settings, memory folder and startup agent,
|
|
3748
|
-
keeping the same identity and the same conversation. `hq bot adopt <name>`
|
|
3749
|
-
does one bot, `hq bot list --remote` shows every bot you own and which of
|
|
3750
|
-
them are set up here, and trying to create a bot you already own now says so
|
|
3751
|
-
and points at adopting it instead. Bots made before this shipped come back on
|
|
3752
|
-
sensible defaults, and HQ tells you it did that.
|
|
3753
|
-
|
|
3754
|
-
### Fixed
|
|
3755
|
-
|
|
3756
|
-
- `hq bot restore` no longer brings back a bot this Mac cannot run. A company
|
|
3757
|
-
bot — one that acts for a company rather than as you — was being set up here
|
|
3758
|
-
as a personal bot: it got credentials, a folder, a memory folder and a startup
|
|
3759
|
-
entry, was counted as restored with nothing reported as failed, and then died
|
|
3760
|
-
at every start and at every login, while the Mac offered "check that Claude
|
|
3761
|
-
Code is signed in" as the remedy, which could never help. Restore, `hq bot
|
|
3762
|
-
adopt` and `hq bot list --remote` now ask exactly the question the bot's own
|
|
3763
|
-
startup asks, before anything is written or any password is rotated. A bot
|
|
3764
|
-
that cannot run here is listed plainly, counted as skipped rather than
|
|
3765
|
-
restored, and refused by adopt with one sentence saying where it does run —
|
|
3766
|
-
and nothing is left behind on this computer.
|
|
3767
|
-
- Bringing a bot back no longer leaves a second copy of it. A bot you created
|
|
3768
|
-
here as `qa-x` is `qa-x-<your suffix>` in HQ, and bringing it back built a
|
|
3769
|
-
whole second folder under that longer name: a second startup entry, a second
|
|
3770
|
-
memory folder, and the original folder left behind holding the live password
|
|
3771
|
-
of a bot nothing could reach any more. HQ now recognises the folder a bot
|
|
3772
|
-
already has on this computer — by the identity inside it, even when a wipe
|
|
3773
|
-
left only its credentials — and repairs that one in place. A bot that is not
|
|
3774
|
-
here at all comes back under the name you created it with. If that name
|
|
3775
|
-
already belongs to a different bot, both are kept, under names that tell them
|
|
3776
|
-
apart.
|
|
3777
|
-
- `hq bot list --remote --json` now says `ok: true` when it worked. Every
|
|
3778
|
-
failure said `ok: false`, and the success document had no `ok` at all, so
|
|
3779
|
-
anything that learned to check it read a good listing as a failure.
|
|
3780
|
-
- A bot's long answer now reaches you, in several messages. HQ Cloud refuses any
|
|
3781
|
-
single message over 4000 characters, and nothing split one up: an answer over
|
|
3782
|
-
that length was refused, saved, and sent again unchanged on every check — a
|
|
3783
|
-
test machine recorded the same rejection 231 times in eight minutes while the
|
|
3784
|
-
person saw no reply and no error at all, and the bot's 44 seconds of work was
|
|
3785
|
-
thrown away. A reply that is too long is now cut into numbered parts — on
|
|
3786
|
-
paragraph breaks where it can, on sentences otherwise, and never leaving a
|
|
3787
|
-
block of code half-open — and posted in order. If something goes wrong partway
|
|
3788
|
-
through, only the parts you have not seen are sent again. And if a message
|
|
3789
|
-
truly cannot be delivered, the bot stops after five tries and tells you so in
|
|
3790
|
-
one short line, instead of asking the server to do the impossible for as long
|
|
3791
|
-
as it runs.
|
|
3792
|
-
- A bot's startup entry no longer outlives the bot. When a bot's local setup was
|
|
3793
|
-
gone, the startup entry macOS keeps for it relaunched it every five seconds,
|
|
3794
|
-
forever, filling its log with the same failure (one test machine recorded 267
|
|
3795
|
-
of them in a row). HQ now says once what happened, tells you how to bring the
|
|
3796
|
-
bot back, removes the startup entry it no longer needs, and stops cleanly so
|
|
3797
|
-
nothing relaunches it. This works when macOS itself is the one running the
|
|
3798
|
-
bot, which is the case that matters: the first version did its tidying in an
|
|
3799
|
-
order that had macOS shut the bot down before it could finish, so the startup
|
|
3800
|
-
entry survived and brought the same dead bot back at every login, and the
|
|
3801
|
-
explanation never reached the bot's log. HQ now writes the explanation and
|
|
3802
|
-
removes the entry first, and lets go of itself last.
|
|
3803
|
-
|
|
3804
|
-
- You can remove a bot whose settings this computer has already lost. A wiped
|
|
3805
|
-
HQ folder could leave a bot half-here — a folder and a startup entry, no
|
|
3806
|
-
settings — and nothing could clear it: removing it said there was no such
|
|
3807
|
-
bot and suggested creating one, and creating one said you already had it.
|
|
3808
|
-
`hq bot rm <name>` now clears whatever is actually left on this computer, and
|
|
3809
|
-
`hq bot rm <name> --remote` also removes the bot HQ still holds under that
|
|
3810
|
-
name. It checks with HQ before it deletes anything local, so a service that
|
|
3811
|
-
cannot answer leaves nothing half-done.
|
|
3812
|
-
|
|
3813
|
-
- Removing a bot now tells the truth when HQ only gets part of the way. When
|
|
3814
|
-
HQ's own teardown of a bot's cloud identity stopped half-way, the
|
|
3815
|
-
machine-readable form said the removal had failed but gave no reason and no
|
|
3816
|
-
explanation, reported success to anything checking the exit code, and printed
|
|
3817
|
-
the raw cloud error — including internal infrastructure addresses — straight
|
|
3818
|
-
at you. It now says one plain sentence, names the reason in the same
|
|
3819
|
-
vocabulary as everything else, and exits non-zero, and no internal detail is
|
|
3820
|
-
repeated anywhere. It also stops making you run the command twice for
|
|
3821
|
-
nothing: when the part HQ could not finish would fail the same way every
|
|
3822
|
-
time, the bot is removed from this computer and you are told the leftover is
|
|
3823
|
-
HQ's to clear; when it is something HQ may yet finish, your settings are kept
|
|
3824
|
-
exactly as they were so running the same command again picks the job back up.
|
|
3825
|
-
|
|
3826
|
-
- Bringing bots back now fails in plain language when HQ Cloud is too old for
|
|
3827
|
-
it. `hq bot adopt`, `hq bot restore`, and `hq bot list --remote` all ask HQ
|
|
3828
|
-
which bots you own; against an HQ Cloud without that capability, the raw
|
|
3829
|
-
network error was printed at you, and the machine-readable form printed
|
|
3830
|
-
nothing at all — so the desktop app had nothing it could read. Each now says
|
|
3831
|
-
one plain sentence, and `--json` always returns a result naming the reason,
|
|
3832
|
-
so the app can quietly fall back to showing the bots that are on this
|
|
3833
|
-
computer.
|
|
3834
|
-
|
|
3835
|
-
## [5.116.0] — 2026-09-16
|
|
3836
|
-
|
|
3837
|
-
### Added
|
|
3838
|
-
|
|
3839
|
-
- External bots as team members (host side). `hq agent enroll <code>`
|
|
3840
|
-
redeems a one-time enrollment code from the console: it generates an
|
|
3841
|
-
Ed25519 host key at `~/.hq-agent/host-key` (0600), POSTs the public half to
|
|
3842
|
-
`POST /v1/agents/enroll`, and writes `~/.hq-agent/machine-creds.json` (0600)
|
|
3843
|
-
with `runtime: "external"`. It refuses to run on a host that already holds a
|
|
3844
|
-
human session file or another machine identity unless `--replace`, and
|
|
3845
|
-
never reads `~/.hq/cognito-tokens.json`. Every contract error (expired,
|
|
3846
|
-
already redeemed, invalid, revoked, plan-gated, throttled, unreachable) maps
|
|
3847
|
-
to a message that names the fix.
|
|
3848
|
-
- `hq agent kit install|status|uninstall|run <service>`: user-level services
|
|
3849
|
-
(LaunchAgent on macOS, systemd `--user` on Linux) for the company-vault sync
|
|
3850
|
-
loop, a work-mesh doorbell listener (ids-only MQTT → REST refetch into
|
|
3851
|
-
`~/.hq/work-mesh/cache`), an inbox poller that mirrors new items to
|
|
3852
|
-
`~/.hq-agent/inbox/` (server ack opt-in via `--inbox-ack`), and a 60 s
|
|
3853
|
-
heartbeat posting `{ components: { sync, mesh, inbox } }`. Each unit just
|
|
3854
|
-
runs `hq agent kit run <service>`; logs land in `~/.hq-agent/logs/`. The
|
|
3855
|
-
install also ships `~/.hq-agent/skills/{dm,search,files,secrets-exec,work-mesh-status}/SKILL.md`
|
|
3856
|
-
(agentskills.io format). `docker/hq-agent-kit/` runs the same four
|
|
3857
|
-
processes from a mounted creds volume.
|
|
3858
|
-
- `hq agent probe`: whoami → vault sync → mesh presence → DM round trip to
|
|
3859
|
-
self → secrets list, one PASS/FAIL line each, non-zero exit on any failure,
|
|
3860
|
-
a final `heartbeat <age>` line (the recipe format), and the result POSTed to
|
|
3861
|
-
`POST /v1/agents/{uid}/probe-result` so the console flips to Enrolled.
|
|
3862
|
-
- `hq agent mcp`: a stdio MCP server (no SDK dependency; initialize / ping /
|
|
3863
|
-
tools/list / tools/call) backed by the enrolled machine identity, exposing
|
|
3864
|
-
`hq_whoami`, `hq_search`, `hq_files_list`, `hq_files_read`,
|
|
3865
|
-
`hq_secrets_list`, `hq_secrets_exec` (exit code + output only, never
|
|
3866
|
-
values), `hq_dm_send`, `hq_inbox_read`, `hq_work_mesh_status`. Console
|
|
3867
|
-
recipes register it as `command: hq, args: [agent, mcp]`.
|
|
3868
|
-
- `hq agents rotate <uid>` (fresh enrollment code, shown once) and
|
|
3869
|
-
`hq agents revoke <uid> [--remove] --yes` for external agents. Both fail
|
|
3870
|
-
closed under `HQ_API_KEY` (JWT-only routes).
|
|
3871
|
-
|
|
3872
|
-
### Changed
|
|
3873
|
-
|
|
3874
|
-
- `@indigoai-us/hq-cloud` pinned to `~6.16.48`, whose machine mint signs the
|
|
3875
|
-
server's nonce with the host key when creds carry `runtime: "external"`.
|
|
3876
|
-
|
|
3877
|
-
### Fixed
|
|
3878
|
-
|
|
3879
|
-
- When a new agent needs an owner action, `hq agents provision` prints the
|
|
3880
|
-
current Codex sign-in code or a link to finish setting up the Slack app. `hq agents status
|
|
3881
|
-
<slug>` gets the current action again. The `--json` output adds a
|
|
3882
|
-
`pendingActions` array, plus `slackInstallPending` and `slackInstallUrl` for
|
|
3883
|
-
Slack installs.
|
|
3884
|
-
|
|
3885
|
-
- `hq secrets` now fails promptly instead of waiting for a browser sign-in
|
|
3886
|
-
that cannot be completed when stdin or stderr is not a terminal, or in CI.
|
|
3887
|
-
Run `hq login` from an interactive shell first if no valid session exists.
|
|
3888
|
-
|
|
3889
|
-
- hq gives both visible and quiet version-gated updates 30 minutes to finish.
|
|
3890
|
-
When that limit expires, it tries to terminate the updater's process group
|
|
3891
|
-
on POSIX or process tree on Windows. If the operating system denies that
|
|
3892
|
-
request, hq reports it instead of waiting forever. Set `HQ_UPDATE_TIMEOUT_MS`
|
|
3893
|
-
to another whole number of milliseconds up to 2,147,483,647. hq ignores an
|
|
3894
|
-
invalid value and tells you it is using the 30-minute limit.
|
|
3895
|
-
|
|
3896
|
-
- HQ's housekeeping pass now clears out add-on shortcuts that lead nowhere,
|
|
3897
|
-
instead of warning about them forever. A pack that stops shipping one of its
|
|
3898
|
-
files, or a pack whose folder was installed from a scratch directory someone
|
|
3899
|
-
later deleted, used to leave shortcuts behind that nothing would ever remove.
|
|
3900
|
-
HQ now clears a shortcut only when it sits in a folder the add-on system
|
|
3901
|
-
manages, only when it points into the add-on folder, and only when the thing
|
|
3902
|
-
it points at is definitely not there. A shortcut it cannot check, one leading
|
|
3903
|
-
somewhere else, or a real folder with real files in it are all left alone. On
|
|
3904
|
-
one real setup this cleared eight dead shortcuts that had been warning on
|
|
3905
|
-
every run.
|
|
3906
|
-
|
|
3907
|
-
- Add-on packs now repair their own shortcuts after your HQ folder moves to a
|
|
3908
|
-
new machine. Those shortcuts point at a full path, so on a new computer they
|
|
3909
|
-
all point somewhere that does not exist, and HQ used to leave them alone on
|
|
3910
|
-
the grounds that something was already there. That made the breakage
|
|
3911
|
-
permanent: every later tidy-up skipped them for the same reason. HQ now
|
|
3912
|
-
repoints a shortcut that leads nowhere, while still refusing to touch one
|
|
3913
|
-
that leads to real content. Repairing a tree this way fixed a batch of
|
|
3914
|
-
long-broken pack shortcuts in one pass.
|
|
3915
|
-
|
|
3916
|
-
## [5.115.6] — 2026-09-16
|
|
3917
|
-
|
|
3918
|
-
### Fixed
|
|
3919
|
-
|
|
3920
|
-
- `hq doctor --fix` can now refresh a company sync journal that is stale or
|
|
3921
|
-
has never synced, when that company still has a folder under `companies/`.
|
|
3922
|
-
It pulls that company only, keeps your local copy if there is a conflict,
|
|
3923
|
-
and does not push. Company journals left over from memberships you do not
|
|
3924
|
-
keep locally are reported as unused rather than broken, so a session-start
|
|
3925
|
-
health check no longer files "could not repair" reports for folders that
|
|
3926
|
-
were never on this machine. Personal journals are unchanged: they still
|
|
3927
|
-
warn when stale, and `--fix` will not pull your personal vault on its own.
|
|
3928
|
-
The repair pass also skips the integrations inventory, which it cannot
|
|
3929
|
-
repair, so a slow connection check cannot stall the fix.
|
|
3930
|
-
|
|
3931
|
-
## [5.115.5] — 2026-09-15
|
|
3932
|
-
|
|
3933
|
-
### Fixed
|
|
3934
|
-
|
|
3935
|
-
- The setting that turns the end-of-turn checkpoint requirement off,
|
|
3936
|
-
`HQ_CHECKPOINT_GATE`, now works from `.claude/settings.json` on every runtime.
|
|
3937
|
-
Before, only Claude Code passed that setting through to the checkpoint hook,
|
|
3938
|
-
so if you work in Codex or Grok, writing it in the settings file did nothing
|
|
3939
|
-
and there was no sign of why. hq now reads the file itself. As with the other
|
|
3940
|
-
checkpoint settings, `settings.local.json` overrides it, anything you set in
|
|
3941
|
-
your terminal overrides both, and `false` or `0` written as plain JSON works
|
|
3942
|
-
as well as `"0"`. If the value is something the setting does not understand,
|
|
3943
|
-
hq names it and leaves the requirement on rather than guessing.
|
|
3944
|
-
|
|
3945
|
-
## [5.115.4] — 2026-09-15
|
|
3946
|
-
|
|
3947
|
-
### Changed
|
|
3948
|
-
- Search indexing now leaves qmd embeddings for a later pass when CPU or memory
|
|
3949
|
-
use reaches 50%, while still updating the index. Set
|
|
3950
|
-
`HQ_INDEX_MAX_LOAD_PERCENT` to another percentage, or to `0` or `off` to
|
|
3951
|
-
disable this check. After 12 skipped passes or six hours, hq runs an embed
|
|
3952
|
-
despite the load so search results do not fall behind forever.
|
|
3953
|
-
- HQ's housekeeping pass (`hq reindex`, which runs after an agent finishes a
|
|
3954
|
-
turn) is much faster on large setups. On a root with 21 companies it took
|
|
3955
|
-
about two and a half minutes even with nothing to do. Two things were to
|
|
3956
|
-
blame. The scan that finds your workers read every folder inside any source
|
|
3957
|
-
code you keep under a company, `node_modules` and `.git` included, which on
|
|
3958
|
-
that root meant reading 83,950 folders to find 126 worker files. It now skips
|
|
3959
|
-
those folders instead of walking them, and takes 0.4 seconds instead of 22.
|
|
3960
|
-
Separately, the hook health check ran every `hq doctor` check in order to
|
|
3961
|
-
read six of them; it now asks only for the group those six live in.
|
|
3962
|
-
- `hq doctor` takes `--only <families>`, so you can run one group of checks
|
|
3963
|
-
instead of all of them: `hq doctor --only hooks`. A name it does not
|
|
3964
|
-
recognise is refused rather than quietly checking nothing, and `--json`
|
|
3965
|
-
records which groups ran, so a partial result cannot be read as a verdict on
|
|
3966
|
-
the whole tree.
|
|
3967
|
-
|
|
3968
|
-
### Fixed
|
|
3969
|
-
|
|
3970
|
-
- When Claude Code's saved login has stopped working, a local bot now says it needs a sign-in and keeps your message for when it works again. Before, the bot relayed Claude Code's own "Failed to authenticate" notice as if it were the model's answer, so HQ never showed the "Sign in again" button.
|
|
3971
|
-
|
|
3972
|
-
### Added
|
|
3973
|
-
|
|
3974
|
-
- You can now switch off the background helper that tidies HQ after a
|
|
3975
|
-
checkpoint, without giving up checkpoints themselves. Add
|
|
3976
|
-
`"env": { "HQ_CHECKPOINT_AGENT": "0" }` to `.claude/settings.json` in your HQ
|
|
3977
|
-
folder and the helper stops running; your checkpoint notes are still saved.
|
|
3978
|
-
Set it back to `"1"` to turn it on again. It works the same whether you use
|
|
3979
|
-
Claude Code, Codex or Grok, and `settings.local.json` overrides it if you
|
|
3980
|
-
keep one. If the value is something the setting does not understand, hq says
|
|
3981
|
-
so rather than quietly leaving the helper on.
|
|
3982
|
-
|
|
3983
|
-
## [5.115.3] — 2026-09-15
|
|
3984
|
-
|
|
3985
|
-
### Changed
|
|
3986
|
-
|
|
3987
|
-
- The background helper that tidies HQ after a checkpoint now runs on cheaper
|
|
3988
|
-
settings: Claude Sonnet 5 instead of Opus 5, Grok 4.6 instead of 4.5, and a
|
|
3989
|
-
medium thinking effort on every engine (Codex and Grok were on high). It does
|
|
3990
|
-
the same work; it just costs less while doing it.
|
|
3991
|
-
|
|
3992
|
-
## [5.115.2] — 2026-09-15
|
|
3993
|
-
|
|
3994
|
-
### Fixed
|
|
3995
|
-
|
|
3996
|
-
- Search indexing no longer starts a second embedding rebuild when one is
|
|
3997
|
-
already running. Two rebuilds could use much of a machine while writing to
|
|
3998
|
-
the same local index, so hq now skips the duplicate and lets a later pass
|
|
3999
|
-
finish any remaining work.
|
|
4000
|
-
- Creating a company from the command line (`hq onboard create-company`), and from a bot's conversation, works again; it had been refused with "ownerUid must match the authenticated caller". A company you already created but never finished setting up is now picked up and completed instead of being refused as "already taken".
|
|
4001
|
-
|
|
4002
|
-
## [5.115.1] — 2026-09-15
|
|
4003
|
-
|
|
4004
|
-
### Fixed
|
|
4005
|
-
|
|
4006
|
-
- `hq bot create --kind company` now sends the bot's companies with the create, as the cloud requires, so a company bot can actually be created; the cloud makes it a member of each company, and a company you are not an owner or admin of is refused before anything is created.
|
|
4007
|
-
|
|
4008
|
-
## [5.115.0] — 2026-09-15
|
|
4009
|
-
|
|
4010
|
-
### Added
|
|
4011
|
-
|
|
4012
|
-
- Local bots now come in two kinds. A **personal bot** acts as you: everything
|
|
4013
|
-
it does — in your direct messages, in rooms, and on its first task — runs
|
|
4014
|
-
under your own account, so it reaches every company and file you can and
|
|
4015
|
-
can create companies, bots, invites and shares for you. A **company bot**
|
|
4016
|
-
acts as itself, like a cloud agent: it is a member of one or more companies
|
|
4017
|
-
and reaches only those companies' files, memory and secrets; it never acts
|
|
4018
|
-
as you and says so if asked to create something for you, suggesting you ask
|
|
4019
|
-
a personal bot instead. `hq bot create <name> --kind personal|company
|
|
4020
|
-
--company <slug>` (repeat `--company` for several) picks the kind; a
|
|
4021
|
-
company bot is invited into each company as you create it, and the command
|
|
4022
|
-
tells you exactly which invite did not go through. `hq bot companies
|
|
4023
|
-
<name> --add/--remove <slug>` changes a company bot's memberships later.
|
|
4024
|
-
`hq bot list --json` and `hq bot status` show each bot's kind and
|
|
4025
|
-
companies, and every bot's instructions say which kind it is. Bots created
|
|
4026
|
-
before this release keep working, as personal bots (including one created
|
|
4027
|
-
from a company worker, and the setup bot). Removing a company bot with
|
|
4028
|
-
`hq bot rm` also takes it out of its companies.
|
|
4029
|
-
- A personal bot now runs `hq` commands as you in rooms too, not only in your
|
|
4030
|
-
direct messages (before, its room turns used the bot's own identity).
|
|
4031
|
-
|
|
4032
|
-
### Fixed
|
|
4033
|
-
|
|
4034
|
-
- When a local bot's coding tool (Claude Code, Codex or Grok) has lost its
|
|
4035
|
-
sign-in, the bot no longer answers every message with "Failed to
|
|
4036
|
-
authenticate". It says once that the tool needs you to sign in again, keeps
|
|
4037
|
-
your message, and answers it on its own as soon as the sign-in works (right
|
|
4038
|
-
away after `hq bot restart`). A setup bot's first step waits the same way.
|
|
4039
|
-
`hq bot list --json` reports `runtimeSignIn` while this is the case.
|
|
4040
|
-
- In your direct messages, a local bot now does what you ask under your own
|
|
4041
|
-
account: creating a company, a bot, an invite or a share works directly,
|
|
4042
|
-
instead of the bot explaining that the cloud refuses to let it act in your
|
|
4043
|
-
name and asking you to run a command in a terminal. In rooms, bots still act
|
|
4044
|
-
as themselves. A company you create this way now also adds that bot as a
|
|
4045
|
-
member, so it can keep helping inside the new company.
|
|
4046
|
-
|
|
4047
|
-
## [5.114.0] — 2026-09-15
|
|
4048
|
-
|
|
4049
|
-
### Changed
|
|
4050
|
-
|
|
4051
|
-
- Local bots now work on two conversations at once. A question in one
|
|
4052
|
-
channel no longer waits for the bot to finish answering in another; messages
|
|
4053
|
-
in the same conversation (your DMs with the bot, or one channel) are still
|
|
4054
|
-
answered in order. A restart or stop during two turns reports each one that
|
|
4055
|
-
did not finish.
|
|
4056
|
-
|
|
4057
|
-
### Fixed
|
|
4058
|
-
|
|
4059
|
-
- The log bundle attached to `hq feedback` reports is now a zip instead of a
|
|
4060
|
-
gzip. Slack refuses a gzip file from the HQ app at any size, so for several
|
|
4061
|
-
weeks every report's logs were uploaded and then silently dropped before
|
|
4062
|
-
anyone could read them. Nothing about what the bundle contains or how it is
|
|
4063
|
-
redacted has changed.
|
|
4064
|
-
|
|
4065
|
-
## [5.113.1] — 2026-09-15
|
|
4066
|
-
|
|
4067
|
-
### Fixed
|
|
4068
|
-
|
|
4069
|
-
- A bot can create a bot for its owner. `hq bot` commands (create, list, rm,
|
|
4070
|
-
promote) always act as the signed-in person, even when a bot runs them; they
|
|
4071
|
-
used the bot's own identity, which can own no bot, so the setup bot told
|
|
4072
|
-
people to open a terminal to create their first bot.
|
|
4073
|
-
|
|
4074
|
-
## [5.113.0] — 2026-09-15
|
|
4075
|
-
|
|
4076
|
-
### Added
|
|
4077
|
-
|
|
4078
|
-
- Search indexing now skips any file larger than 100 KB. HQ indexes every `.md`
|
|
4079
|
-
and `.json` file under your project folders, which pulled in things nobody
|
|
4080
|
-
searches as prose: browser trace dumps, perf captures, scraped datasets,
|
|
4081
|
-
lockfiles. A few of those were large enough that indexing ran out of time
|
|
4082
|
-
before it finished, so the search index never caught up. Set a different limit
|
|
4083
|
-
with `HQ_INDEX_MAX_DOC_BYTES`, or `indexMaxDocBytes` in your HQ root's
|
|
4084
|
-
`.hq/config.json`. Set it to `0` to index everything again.
|
|
4085
|
-
|
|
4086
|
-
## [5.112.0] — 2026-09-15
|
|
4087
|
-
|
|
4088
|
-
### Added
|
|
4089
|
-
|
|
4090
|
-
- `hq core sentry report`: lets HQ hooks send one bounded diagnostic event to
|
|
4091
|
-
Sentry through stdin. It is for hooks rather than everyday interactive use,
|
|
4092
|
-
accepts only approved simple fields, and has a `--dry-run` mode that shows
|
|
4093
|
-
the event it would send instead of sending it.
|
|
4094
|
-
|
|
4095
|
-
### Fixed
|
|
4096
|
-
|
|
4097
|
-
- `hq` starts faster by loading only the command you run instead of every
|
|
4098
|
-
command, and by avoiding an observability hook that delayed startup. Help
|
|
4099
|
-
output and command behaviour are unchanged.
|
|
4100
|
-
- Commands no longer wait as long for a network endpoint that accepts a
|
|
4101
|
-
connection but does not answer. After a long-running command, hq still makes
|
|
4102
|
-
time for error reporting and its version-cache refresh.
|
|
4103
|
-
- CLI diagnostics now finish one release-health session with the correct final
|
|
4104
|
-
state when a CLI run finishes or fails normally, including `hq-auth-refresh`,
|
|
4105
|
-
instead of leaving a session open or competing sessions reporting the same
|
|
4106
|
-
run.
|
|
4107
|
-
|
|
4108
|
-
## [5.111.2] — 2026-09-15
|
|
4109
|
-
|
|
4110
|
-
## [5.111.1] — 2026-09-14
|
|
4111
|
-
|
|
4112
|
-
### Fixed
|
|
4113
|
-
|
|
4114
|
-
- A new bot's first message no longer tells its signed-in owner they are not
|
|
4115
|
-
signed in. While the bot fetched its own sign-in, a check of the owner's
|
|
4116
|
-
sign-in in the same process could read the bot's credentials instead and find
|
|
4117
|
-
no account. Sign-in reads now wait for that to finish.
|
|
4118
|
-
- When a bot cannot read its owner's account right away, it tries again before
|
|
4119
|
-
answering, and never asks a signed-in owner to sign in or run a command. The
|
|
4120
|
-
bot's log now records why an owner check failed.
|
|
4121
|
-
|
|
4122
|
-
## [5.111.0] — 2026-09-14
|
|
4123
|
-
|
|
4124
|
-
### Added
|
|
4125
|
-
|
|
4126
|
-
- `hq skill delete <target>`: delete a company skill and all of its files for
|
|
4127
|
-
everyone. Accepts a `skl_…` id, a SKILL.md path, or a skill slug; names the
|
|
4128
|
-
skill and asks for confirmation (`--yes` skips it, and it refuses to run
|
|
4129
|
-
unattended without `--yes`). Synced copies are removed on the next sync.
|
|
4130
|
-
Requires access-admin rights on the skill.
|
|
4131
|
-
|
|
4132
|
-
## [5.110.0] — 2026-09-14
|
|
4133
|
-
|
|
4134
|
-
### Added
|
|
4135
|
-
|
|
4136
|
-
- `hq bot`: personal local bots that run on your own computer under your Claude
|
|
4137
|
-
Code, Codex, or Grok sign-in, with their own HQ identity and your permissions.
|
|
4138
|
-
`hq bot create|list|status|start|stop|restart|rm|workers|set|logs` manage them;
|
|
4139
|
-
each bot runs as a launchd agent, answers your DMs, can join group chats and
|
|
4140
|
-
company channels, and can start from a company worker (`--worker`).
|
|
4141
|
-
- The HQ setup bot: `hq bot create setup --worker setup` uses the setup worker
|
|
4142
|
-
bundled with the CLI, so a fresh install can be walked through setup before
|
|
4143
|
-
core workers have synced.
|
|
4144
|
-
- Bots post their in-between messages while they work, have no turn time limit
|
|
4145
|
-
(`HQ_BOT_TURN_TIMEOUT_MS` is opt-in), always reply, and never re-run a message
|
|
4146
|
-
that already started.
|
|
4147
|
-
- Per-bot model and thinking level (`hq bot set <name> --model --effort`),
|
|
4148
|
-
read fresh on every turn.
|
|
4149
|
-
- `hq bot promote`: move a local bot to the cloud as the same identity
|
|
4150
|
-
(requires the matching backend release).
|
|
4151
|
-
|
|
4152
|
-
### Fixed
|
|
4153
|
-
|
|
4154
|
-
- Bots no longer tell their owner they belong to no company: owner DM turns
|
|
4155
|
-
carry the owner's companies, looked up with the owner's own sign-in, because
|
|
4156
|
-
`hq` lookups a bot runs describe the bot itself.
|
|
4157
|
-
- Stopping a bot's turn stops everything the model started, instead of waiting
|
|
4158
|
-
for a child process that still holds the output open.
|
|
4159
|
-
|
|
4160
|
-
## [5.109.16] — 2026-09-14
|
|
4161
|
-
|
|
4162
|
-
### Changed
|
|
4163
|
-
|
|
4164
|
-
- hq-cloud now uses 6.16.41, which reverts the phase-two resident journal change
|
|
4165
|
-
that caused sync runners to spin.
|
|
4166
|
-
|
|
4167
|
-
## [5.109.15] — 2026-09-13
|
|
4168
|
-
|
|
4169
|
-
### Changed
|
|
4170
|
-
|
|
4171
|
-
- hq-cli now bundles hq-cloud 6.16.39, reducing resident sync-journal memory
|
|
4172
|
-
through the packed row store.
|
|
4173
|
-
|
|
4174
|
-
## [5.109.14] — 2026-09-13
|
|
4175
|
-
|
|
4176
|
-
### Fixed
|
|
4177
|
-
|
|
4178
|
-
- Repeated "install tree was being rewritten" reports from a background reinstall
|
|
4179
|
-
now collapse into one stable issue per outcome instead of spawning a fresh crash
|
|
4180
|
-
report on every occurrence (Sentry HQ-CLI-21, HQ-CLI-22, HQ-CLI-23). hq already
|
|
4181
|
-
groups these by their recovery outcome, but the grouping key led with a
|
|
4182
|
-
placeholder that also told Sentry to fold in its own default grouping — and for
|
|
4183
|
-
this error that default is the underlying loader failure, whose details differ
|
|
4184
|
-
every time (which dependency file the reinstall happened to be rewriting, under
|
|
4185
|
-
each machine's install path). So each occurrence minted a new issue and the
|
|
4186
|
-
family never settled down. The key is now fully explicit and no longer inherits
|
|
4187
|
-
that default, so future occurrences with the same outcome share one group. The
|
|
4188
|
-
existing issues HQ-CLI-21/22/23 stay open as they are: a grouping change only
|
|
4189
|
-
affects events reported after it ships.
|
|
4190
|
-
|
|
4191
|
-
## [5.109.13] — 2026-09-13
|
|
4192
|
-
|
|
4193
|
-
### Fixed
|
|
4194
|
-
|
|
4195
|
-
- A background reinstall no longer turns into a crash report in the CommonJS twin
|
|
4196
|
-
of the shape 5.109.12 fixed for ES modules (HQ-CLI-20). When another program
|
|
4197
|
-
reinstalls hq globally while a command is starting, it rewrites hq's files one
|
|
4198
|
-
by one over a few seconds. If a bundled CommonJS dependency (here `ajv`, reached
|
|
4199
|
-
while `hq core timeout-guard` registers its commands) had just resolved one of
|
|
4200
|
-
its own files and that file vanished before Node read it, the low-level `ENOENT …
|
|
4201
|
-
open` came from inside Node's CommonJS module loader — a shape the recovery only
|
|
4202
|
-
recognized for ES modules, so it was still filed as a crash. It is now recognized
|
|
4203
|
-
as "your install was mid-update, not an hq bug": the command waits for the
|
|
4204
|
-
reinstall to settle and re-runs once on the healed tree, and the same noise is
|
|
4205
|
-
dropped on the routes that bypass the top-level handler. The gate is deliberately
|
|
4206
|
-
narrow — it fires only when Node's own loader was reading a module's source (the
|
|
4207
|
-
frame directly beneath the file read is a `cjs/loader` frame, never the
|
|
4208
|
-
dependency's own code) — so a third-party package whose own startup code reads a
|
|
4209
|
-
missing file, or a fault in hq's own shipped files, still reports exactly once
|
|
4210
|
-
(Sentry HQ-CLI-20).
|
|
4211
|
-
|
|
4212
|
-
## [5.109.12] — 2026-09-12
|
|
4213
|
-
|
|
4214
|
-
### Fixed
|
|
4215
|
-
|
|
4216
|
-
- A background reinstall no longer turns into a crash report in two more shapes
|
|
4217
|
-
it was still slipping through (HQ-CLI-1S, HQ-CLI-1T). When another program
|
|
4218
|
-
reinstalls hq globally while a command is starting, it renames hq's files aside
|
|
4219
|
-
and rewrites them file by file over a few seconds. Two failure shapes from that
|
|
4220
|
-
window were still filed as crashes instead of being recovered: (1) a file that
|
|
4221
|
-
Node checked a moment earlier vanished between its two resolve steps, surfacing
|
|
4222
|
-
as a low-level `ENOENT … lstat` from inside the module resolver (HQ-CLI-1S);
|
|
4223
|
-
and (2) a dependency file that was found but only half-written, so loading it
|
|
4224
|
-
returned an empty module and its own code threw `TypeError: … is not a
|
|
4225
|
-
function` (HQ-CLI-1T). Both are now recognized as "your install was mid-update,
|
|
4226
|
-
not an hq bug": the command waits for the reinstall to settle and re-runs once
|
|
4227
|
-
on the healed tree instead of reporting an error. The half-written-file case
|
|
4228
|
-
only ever waits when a reinstall is actually in progress — a genuine, lasting
|
|
4229
|
-
defect in a third-party dependency still reports exactly once and never pays a
|
|
4230
|
-
wait, and a fault in hq's own shipped files is still reported. (The two related
|
|
4231
|
-
shapes HQ-CLI-1V and HQ-CLI-1W are already covered by 5.109.8 and #561.)
|
|
4232
|
-
|
|
4233
|
-
## [5.109.11] — 2026-09-12
|
|
4234
|
-
|
|
4235
|
-
### Fixed
|
|
4236
|
-
|
|
4237
|
-
- A torn-install recovery no longer gives up after 90 seconds while another hq
|
|
4238
|
-
updater is still legitimately installing hq-cli. When a command starts just as
|
|
4239
|
-
the desktop app (or the box's `hq-cli-update` timer, or another `hq`) is
|
|
4240
|
-
rewriting the install, the recovery waits for that writer to finish — bounded by
|
|
4241
|
-
the shared install lock's own 10-minute staleness window rather than the 90-second
|
|
4242
|
-
settle deadline — and then re-runs once on the healed tree, so the common case
|
|
4243
|
-
(an install that finishes within the window) no longer fails at all. A short
|
|
4244
|
-
second line explains the pause while it waits. If a writer holds the lock past
|
|
4245
|
-
that ceiling, the command still fails once, but with a "let the update finish,
|
|
4246
|
-
then re-run — do not reinstall while it is running" remedy and a distinct
|
|
4247
|
-
`lock-held` outcome, instead of advice to reinstall over a live installer
|
|
4248
|
-
(Sentry HQ-CLI-1Y, HQ-CLI-23). The ceiling is overridable with
|
|
4249
|
-
`HQ_INSTALL_SETTLE_LOCK_TIMEOUT_MS`.
|
|
4250
|
-
|
|
4251
|
-
## [5.109.10] — 2026-09-12
|
|
4252
|
-
|
|
4253
|
-
### Fixed
|
|
4254
|
-
|
|
4255
|
-
- A global reinstall that tears the install tree out mid-startup now recovers
|
|
4256
|
-
even when the module that vanished is a RELATIVE sibling (for example
|
|
4257
|
-
`@babel/runtime`'s `./typeof.js`, reached through the mqtt → worker-timers
|
|
4258
|
-
chain). The torn-install classifier reduced a relative CJS specifier to the
|
|
4259
|
-
package name `.`, producing a readiness probe that could never turn true — so
|
|
4260
|
-
an affected command burned the entire 90-second settle budget, never re-ran on
|
|
4261
|
-
the settled tree, and reported an error instead of recovering. Relative
|
|
4262
|
-
specifiers are now re-resolved the way Node's CJS resolver does — from the
|
|
4263
|
-
importer's directory, trying the file, its `.js`/`.json`/`.node` forms, and the
|
|
4264
|
-
directory forms — so the command waits only as long as the reinstall actually
|
|
4265
|
-
takes and then re-execs once on the healed tree. A genuinely missing sibling
|
|
4266
|
-
still surfaces exactly one error naming the resolved path (Sentry HQ-CLI-1R).
|
|
4267
|
-
|
|
4268
|
-
## [5.109.8] — 2026-09-11
|
|
4269
|
-
|
|
4270
|
-
### Fixed
|
|
4271
|
-
|
|
4272
|
-
- A background reinstall no longer turns into a crash report (HQ-CLI-1M,
|
|
4273
|
-
HQ-CLI-1N). When another program reinstalls hq globally while a command is
|
|
4274
|
-
running — the box's own update timer, the desktop app, or a second `hq` — it
|
|
4275
|
-
renames hq's files aside and rewrites them file by file over a few seconds, and
|
|
4276
|
-
a command already running can try to load a file that vanished in that window.
|
|
4277
|
-
hq already knew to treat that as "your install was mid-update, not an hq bug"
|
|
4278
|
-
and print a re-run/reinstall note instead of a crash, but it could only do so
|
|
4279
|
-
while it could still find its own install directory on disk — which, in this
|
|
4280
|
-
exact situation, it usually could not, because that directory is what just got
|
|
4281
|
-
renamed away. That one blind spot silenced the recovery for two different crash
|
|
4282
|
-
shapes: the ESM-loader `ENOENT` seen in production (HQ-CLI-1M) and a lazy
|
|
4283
|
-
CommonJS `require('./sibling')` from a bundled dependency that resolves after
|
|
4284
|
-
the tear (HQ-CLI-1N). hq now locates its own directory without reading the
|
|
4285
|
-
disk, so the mid-update case is recognized for both: a registration-time tear
|
|
4286
|
-
waits for the install to settle and re-runs once, and a tear anywhere else
|
|
4287
|
-
prints the reinstall note. A genuine packaging fault in hq's own shipped files
|
|
4288
|
-
(a miss under the install's own `dist/` or `assets/`) is still reported.
|
|
4289
|
-
|
|
4290
|
-
## [5.109.7] — 2026-09-10
|
|
4291
|
-
|
|
4292
|
-
### Fixed
|
|
4293
|
-
|
|
4294
|
-
- Add `whoami --json`, structured `files acl --json` with explicit absence,
|
|
4295
|
-
and `people resolve --membership-only` with canonical company/person IDs.
|
|
4296
|
-
Delegation helpers can now verify exact grants without parsing display tables
|
|
4297
|
-
or treating a missing ACL as a transport failure. Existing human output stays available.
|
|
5
|
+
## [5.314.0] — 2026-10-02
|
|
4298
6
|
|
|
4299
7
|
## [5.109.6] — 2026-09-10
|
|
4300
8
|
|