@indigoai-us/hq-cli 5.314.0 → 5.315.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1178) hide show
  1. package/CHANGELOG.md +4311 -1
  2. package/README.md +113 -0
  3. package/assets/bot-workers/setup/context/USER-GUIDE.md +404 -0
  4. package/assets/bot-workers/setup/context/quick-reference.md +199 -0
  5. package/assets/bot-workers/setup/skills/agents-and-team.md +167 -0
  6. package/assets/bot-workers/setup/skills/explain-hq.md +35 -0
  7. package/assets/bot-workers/setup/skills/first-company.md +74 -0
  8. package/assets/bot-workers/setup/skills/joining-a-team.md +125 -0
  9. package/assets/bot-workers/setup/skills/pricing.md +92 -0
  10. package/assets/bot-workers/setup/skills/standing-help.md +81 -0
  11. package/assets/bot-workers/setup/skills/your-business.md +281 -0
  12. package/assets/bot-workers/setup/worker.yaml +791 -0
  13. package/assets/lanes-hooks/hq-lanes-drain.json +15 -0
  14. package/assets/lanes-hooks/hq-lanes-drain.mjs +275 -0
  15. package/assets/lanes-hooks/hq-lanes-drain.sh +21 -0
  16. package/assets/lanes-reconcile/hq-lanes-reconcile.service +11 -0
  17. package/assets/lanes-reconcile/hq-lanes-reconcile.timer +12 -0
  18. package/assets/scaffold/.claude/hooks/validate-policy-frontmatter.sh +485 -0
  19. package/assets/scaffold/core/scripts/audit-log.sh +384 -0
  20. package/assets/scaffold/core/scripts/checkpoint-stop-gate.sh +281 -43
  21. package/assets/scaffold/core/scripts/clean-worktree-reconcile-handoff.sh +171 -0
  22. package/assets/scaffold/core/scripts/eval-trigger.sh +193 -0
  23. package/assets/scaffold/core/scripts/git-pack-extension-check.sh +164 -0
  24. package/assets/scaffold/core/scripts/handoff-finalize.sh +688 -0
  25. package/assets/scaffold/core/scripts/handoff-open-steps.sh +81 -0
  26. package/assets/scaffold/core/scripts/handoff-post.sh +252 -0
  27. package/assets/scaffold/core/scripts/hook-lib.sh +345 -50
  28. package/assets/scaffold/core/scripts/hq-delegate-bundle.sh +307 -0
  29. package/assets/scaffold/core/scripts/hq-delegate-grant.sh +252 -0
  30. package/assets/scaffold/core/scripts/hq-delegate-pickup.sh +99 -0
  31. package/assets/scaffold/core/scripts/hq-delegate-publish.sh +91 -0
  32. package/assets/scaffold/core/scripts/hq-delegate-repo.sh +158 -0
  33. package/assets/scaffold/core/scripts/hq-delegate-resolve.sh +145 -0
  34. package/assets/scaffold/core/scripts/hq-delegate-secrets.sh +129 -0
  35. package/assets/scaffold/core/scripts/hq-delegate-send.sh +259 -0
  36. package/assets/scaffold/core/scripts/hq-delegate-transfer.sh +175 -0
  37. package/assets/scaffold/core/scripts/hq-delegate-verify.sh +238 -0
  38. package/assets/scaffold/core/scripts/hq-dm-bind.sh +585 -0
  39. package/assets/scaffold/core/scripts/hq-job-notify.sh +389 -0
  40. package/assets/scaffold/core/scripts/hq-job-probe.sh +835 -0
  41. package/assets/scaffold/core/scripts/hq-job-remediate.sh +359 -0
  42. package/assets/scaffold/core/scripts/hq-job-run.sh +1025 -0
  43. package/assets/scaffold/core/scripts/hq-pin.sh +118 -0
  44. package/assets/scaffold/core/scripts/hq-session.sh +184 -23
  45. package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +310 -0
  46. package/assets/scaffold/core/scripts/jobs-validate.sh +451 -0
  47. package/assets/scaffold/core/scripts/knowledge-prefs.sh +55 -0
  48. package/assets/scaffold/core/scripts/lib/portable.sh +211 -0
  49. package/assets/scaffold/core/scripts/lib/secret-patterns.sh +58 -0
  50. package/assets/scaffold/core/scripts/lib/session-id.sh +3 -2
  51. package/assets/scaffold/core/scripts/lib/session-scope-capability.sh +1 -1
  52. package/assets/scaffold/core/scripts/lib/work-mesh-enqueue.sh +2 -1
  53. package/assets/scaffold/core/scripts/lib/work-mesh-live-hook.sh +378 -0
  54. package/assets/scaffold/core/scripts/lib/work-mesh-live-rebind.sh +141 -0
  55. package/assets/scaffold/core/scripts/migrate-policy-triggers.sh +378 -0
  56. package/assets/scaffold/core/scripts/ontology-audience-grant.sh +81 -0
  57. package/assets/scaffold/core/scripts/ontology-brief.mjs +93 -0
  58. package/assets/scaffold/core/scripts/ontology-candidate.sh +100 -0
  59. package/assets/scaffold/core/scripts/ontology-garden.mjs +238 -0
  60. package/assets/scaffold/core/scripts/ontology-source-worklist.sh +79 -0
  61. package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +834 -0
  62. package/assets/scaffold/core/scripts/policy-age-report.sh +156 -0
  63. package/assets/scaffold/core/scripts/policy-retire.sh +199 -0
  64. package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +10 -87
  65. package/assets/scaffold/core/scripts/qmd-reindex-bg.sh +40 -0
  66. package/assets/scaffold/core/scripts/read-policy-frontmatter.sh +32 -0
  67. package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +36 -3
  68. package/assets/scaffold/core/scripts/rebuild-projects-index.sh +99 -12
  69. package/assets/scaffold/core/scripts/refresh-vault-access.sh +188 -0
  70. package/assets/scaffold/core/scripts/register-project.sh +262 -0
  71. package/assets/scaffold/core/scripts/resolve-company.sh +199 -0
  72. package/assets/scaffold/core/scripts/resume-thread-lock.sh +285 -0
  73. package/assets/scaffold/core/scripts/source-yaml-validate.sh +36 -0
  74. package/assets/scaffold/core/scripts/token-usage-report.sh +81 -20
  75. package/assets/scaffold/core/scripts/verify-story-deliverables.sh +148 -0
  76. package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +152 -0
  77. package/assets/scaffold/core/scripts/work-mesh-live-rebind.sh +59 -0
  78. package/assets/scaffold/core/scripts/worktree-gc.sh +362 -0
  79. package/contracts/preflight/v1/fixtures.json +87 -0
  80. package/contracts/preflight/v1/schema.json +58 -0
  81. package/dist/bin/hq-auth-refresh.d.ts +2 -0
  82. package/dist/bin/hq-auth-refresh.js +12 -6
  83. package/dist/command-catalog.generated.d.ts +10753 -0
  84. package/dist/command-catalog.generated.js +13859 -0
  85. package/dist/command-registration-plan.d.ts +474 -0
  86. package/dist/command-registration-plan.js +136 -0
  87. package/dist/commands/__fixtures__/access-vault.d.ts +2 -0
  88. package/dist/commands/__fixtures__/access-vault.js +1 -1
  89. package/dist/commands/_patterns.d.ts +16 -0
  90. package/dist/commands/_patterns.js +20 -3
  91. package/dist/commands/access.d.ts +2 -1
  92. package/dist/commands/access.js +58 -49
  93. package/dist/commands/agent-enroll.d.ts +146 -0
  94. package/dist/commands/agent-enroll.js +401 -0
  95. package/dist/commands/agent-inbox.d.ts +9 -0
  96. package/dist/commands/agent-inbox.js +102 -0
  97. package/dist/commands/agent-kit.d.ts +87 -0
  98. package/dist/commands/agent-kit.js +480 -0
  99. package/dist/commands/agent-mcp.d.ts +24 -0
  100. package/dist/commands/agent-mcp.js +127 -0
  101. package/dist/commands/agent-probe.d.ts +77 -0
  102. package/dist/commands/agent-probe.js +335 -0
  103. package/dist/commands/agent.d.ts +13 -0
  104. package/dist/commands/agent.js +40 -0
  105. package/dist/commands/agents.d.ts +106 -4
  106. package/dist/commands/agents.js +924 -45
  107. package/dist/commands/auth.d.ts +1 -0
  108. package/dist/commands/auth.js +189 -19
  109. package/dist/commands/billing-sponsor.d.ts +83 -0
  110. package/dist/commands/billing-sponsor.js +344 -0
  111. package/dist/commands/billing.d.ts +3 -0
  112. package/dist/commands/billing.js +6 -1
  113. package/dist/commands/bot-companies.d.ts +40 -0
  114. package/dist/commands/bot-companies.js +64 -0
  115. package/dist/commands/bot-continuity.d.ts +28 -0
  116. package/dist/commands/bot-continuity.js +68 -0
  117. package/dist/commands/bot-jobs.d.ts +127 -0
  118. package/dist/commands/bot-jobs.js +454 -0
  119. package/dist/commands/bot.d.ts +278 -0
  120. package/dist/commands/bot.js +1982 -0
  121. package/dist/commands/channels.js +56 -1
  122. package/dist/commands/cloud-demote.js +3 -2
  123. package/dist/commands/cloud-provision.d.ts +14 -0
  124. package/dist/commands/cloud-provision.js +232 -58
  125. package/dist/commands/cloud-retire.d.ts +51 -0
  126. package/dist/commands/cloud-retire.js +154 -0
  127. package/dist/commands/cloud.d.ts +49 -15
  128. package/dist/commands/cloud.js +357 -122
  129. package/dist/commands/company-rename-flag.d.ts +4 -0
  130. package/dist/commands/company-rename-flag.js +7 -0
  131. package/dist/commands/company-rename.d.ts +4 -0
  132. package/dist/commands/company-rename.js +90 -0
  133. package/dist/commands/company-transfer.d.ts +4 -28
  134. package/dist/commands/company-transfer.js +5 -49
  135. package/dist/commands/company.js +68 -3
  136. package/dist/commands/core-audit-log-native.d.ts +9 -0
  137. package/dist/commands/core-audit-log-native.js +257 -0
  138. package/dist/commands/core-checkpoint-gate-setting.d.ts +59 -0
  139. package/dist/commands/core-checkpoint-gate-setting.js +163 -0
  140. package/dist/commands/core-checkpoint-stop-gate-native.d.ts +34 -0
  141. package/dist/commands/core-checkpoint-stop-gate-native.js +725 -0
  142. package/dist/commands/core-checkpoint.d.ts +19 -9
  143. package/dist/commands/core-checkpoint.js +301 -37
  144. package/dist/commands/core-command-catalog.d.ts +34 -0
  145. package/dist/commands/core-command-catalog.js +62 -0
  146. package/dist/commands/core-company-index-scope-flag.d.ts +3 -0
  147. package/dist/commands/core-company-index-scope-flag.js +6 -0
  148. package/dist/commands/core-delegate-w1b.d.ts +10 -0
  149. package/dist/commands/core-delegate-w1b.js +1219 -0
  150. package/dist/commands/core-delegate.d.ts +46 -0
  151. package/dist/commands/core-delegate.js +1040 -0
  152. package/dist/commands/core-dm-bind-native.d.ts +32 -0
  153. package/dist/commands/core-dm-bind-native.js +668 -0
  154. package/dist/commands/core-eval-trigger-native.d.ts +4 -0
  155. package/dist/commands/core-eval-trigger-native.js +12 -0
  156. package/dist/commands/core-git-pack-extension-check-native.d.ts +22 -0
  157. package/dist/commands/core-git-pack-extension-check-native.js +190 -0
  158. package/dist/commands/core-handoff-fast.d.ts +18 -0
  159. package/dist/commands/core-handoff-fast.js +104 -0
  160. package/dist/commands/core-handoff-open-steps.d.ts +21 -0
  161. package/dist/commands/core-handoff-open-steps.js +264 -0
  162. package/dist/commands/core-handoff.d.ts +24 -0
  163. package/dist/commands/core-handoff.js +1144 -0
  164. package/dist/commands/core-hq-session-native.d.ts +39 -0
  165. package/dist/commands/core-hq-session-native.js +579 -0
  166. package/dist/commands/core-job-native-utils.d.ts +6 -0
  167. package/dist/commands/core-job-native-utils.js +80 -0
  168. package/dist/commands/core-job-native.d.ts +5 -0
  169. package/dist/commands/core-job-native.js +16 -0
  170. package/dist/commands/core-job-notify-native.d.ts +36 -0
  171. package/dist/commands/core-job-notify-native.js +359 -0
  172. package/dist/commands/core-job-probe-native.d.ts +45 -0
  173. package/dist/commands/core-job-probe-native.js +564 -0
  174. package/dist/commands/core-job-remediate-native.d.ts +26 -0
  175. package/dist/commands/core-job-remediate-native.js +374 -0
  176. package/dist/commands/core-job-remote-launcher.d.ts +7 -0
  177. package/dist/commands/core-job-remote-launcher.js +51 -0
  178. package/dist/commands/core-job-run-native.d.ts +47 -0
  179. package/dist/commands/core-job-run-native.js +1215 -0
  180. package/dist/commands/core-jobs-native.d.ts +25 -0
  181. package/dist/commands/core-jobs-native.js +1339 -0
  182. package/dist/commands/core-knowledge-prefs.d.ts +11 -0
  183. package/dist/commands/core-knowledge-prefs.js +137 -0
  184. package/dist/commands/core-migrate-policy-triggers-native.d.ts +21 -0
  185. package/dist/commands/core-migrate-policy-triggers-native.js +374 -0
  186. package/dist/commands/core-native-handoff-flag.d.ts +4 -0
  187. package/dist/commands/core-native-handoff-flag.js +7 -0
  188. package/dist/commands/core-native-hook-helper-commands.d.ts +4 -0
  189. package/dist/commands/core-native-hook-helper-commands.js +56 -0
  190. package/dist/commands/core-native-hook-helpers-flag.d.ts +4 -0
  191. package/dist/commands/core-native-hook-helpers-flag.js +7 -0
  192. package/dist/commands/core-native-jobs-flag.d.ts +4 -0
  193. package/dist/commands/core-native-jobs-flag.js +7 -0
  194. package/dist/commands/core-native-policy-flag.d.ts +9 -0
  195. package/dist/commands/core-native-policy-flag.js +12 -0
  196. package/dist/commands/core-native-session-flag.d.ts +4 -0
  197. package/dist/commands/core-native-session-flag.js +7 -0
  198. package/dist/commands/core-native-utilities-flag.d.ts +4 -0
  199. package/dist/commands/core-native-utilities-flag.js +7 -0
  200. package/dist/commands/core-native-utilities.d.ts +29 -0
  201. package/dist/commands/core-native-utilities.js +54 -0
  202. package/dist/commands/core-native-worker-skills-flag.d.ts +4 -0
  203. package/dist/commands/core-native-worker-skills-flag.js +7 -0
  204. package/dist/commands/core-ontology-native.d.ts +17 -0
  205. package/dist/commands/core-ontology-native.js +916 -0
  206. package/dist/commands/core-ontology.d.ts +66 -0
  207. package/dist/commands/core-ontology.js +430 -0
  208. package/dist/commands/core-pin-native.d.ts +14 -0
  209. package/dist/commands/core-pin-native.js +236 -0
  210. package/dist/commands/core-policy-frontmatter.d.ts +8 -0
  211. package/dist/commands/core-policy-frontmatter.js +52 -0
  212. package/dist/commands/core-policy.d.ts +14 -0
  213. package/dist/commands/core-policy.js +1018 -0
  214. package/dist/commands/core-refresh-vault-access-native.d.ts +20 -0
  215. package/dist/commands/core-refresh-vault-access-native.js +229 -0
  216. package/dist/commands/core-register-project-native.d.ts +30 -0
  217. package/dist/commands/core-register-project-native.js +347 -0
  218. package/dist/commands/core-resolve-company-command.d.ts +4 -0
  219. package/dist/commands/core-resolve-company-command.js +42 -0
  220. package/dist/commands/core-resolve-company-native.d.ts +28 -0
  221. package/dist/commands/core-resolve-company-native.js +408 -0
  222. package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +32 -0
  223. package/dist/commands/core-work-mesh-bind-trusted-native.js +190 -0
  224. package/dist/commands/core-work-mesh-live-rebind-native.d.ts +18 -0
  225. package/dist/commands/core-work-mesh-live-rebind-native.js +262 -0
  226. package/dist/commands/core-worker-lint-native.d.ts +4 -0
  227. package/dist/commands/core-worker-lint-native.js +160 -0
  228. package/dist/commands/core-worker-share-native.d.ts +4 -0
  229. package/dist/commands/core-worker-share-native.js +260 -0
  230. package/dist/commands/core-worker-skills-command.d.ts +8 -0
  231. package/dist/commands/core-worker-skills-command.js +33 -0
  232. package/dist/commands/core-worker-skills-runtime.d.ts +33 -0
  233. package/dist/commands/core-worker-skills-runtime.js +86 -0
  234. package/dist/commands/core.d.ts +4 -0
  235. package/dist/commands/core.js +277 -80
  236. package/dist/commands/crm.js +52 -3
  237. package/dist/commands/daemon.d.ts +63 -0
  238. package/dist/commands/daemon.js +877 -0
  239. package/dist/commands/db-provision.js +4 -4
  240. package/dist/commands/db-sql.js +7 -21
  241. package/dist/commands/deploy-comments.d.ts +3 -0
  242. package/dist/commands/deploy-comments.js +162 -0
  243. package/dist/commands/dm.d.ts +119 -12
  244. package/dist/commands/dm.js +388 -38
  245. package/dist/commands/doctor.d.ts +12 -0
  246. package/dist/commands/doctor.js +158 -12
  247. package/dist/commands/feedback.d.ts +6 -0
  248. package/dist/commands/feedback.js +86 -37
  249. package/dist/commands/files-browse.d.ts +32 -12
  250. package/dist/commands/files-browse.js +176 -60
  251. package/dist/commands/files.d.ts +17 -0
  252. package/dist/commands/files.js +300 -47
  253. package/dist/commands/group-grants.js +3 -2
  254. package/dist/commands/groups.js +6 -5
  255. package/dist/commands/index-cmd.d.ts +19 -1
  256. package/dist/commands/index-cmd.js +74 -7
  257. package/dist/commands/integrations-api.d.ts +15 -10
  258. package/dist/commands/integrations-api.js +27 -22
  259. package/dist/commands/integrations-connect.d.ts +51 -13
  260. package/dist/commands/integrations-connect.js +86 -71
  261. package/dist/commands/integrations-core.d.ts +6 -6
  262. package/dist/commands/integrations-core.js +25 -11
  263. package/dist/commands/integrations-import.d.ts +1 -1
  264. package/dist/commands/integrations-import.js +43 -24
  265. package/dist/commands/integrations-manage.js +20 -13
  266. package/dist/commands/integrations.d.ts +8 -0
  267. package/dist/commands/integrations.js +94 -7
  268. package/dist/commands/lanes-accounts.d.ts +28 -0
  269. package/dist/commands/lanes-accounts.js +595 -0
  270. package/dist/commands/lanes-autopilot.d.ts +11 -0
  271. package/dist/commands/lanes-autopilot.js +336 -0
  272. package/dist/commands/lanes-checks.d.ts +51 -0
  273. package/dist/commands/lanes-checks.js +941 -0
  274. package/dist/commands/lanes-hold.d.ts +43 -0
  275. package/dist/commands/lanes-hold.js +655 -0
  276. package/dist/commands/lanes-keep-alive-audit.d.ts +10 -0
  277. package/dist/commands/lanes-keep-alive-audit.js +19 -0
  278. package/dist/commands/lanes-kpis.d.ts +11 -0
  279. package/dist/commands/lanes-kpis.js +34 -0
  280. package/dist/commands/lanes-message.d.ts +9 -0
  281. package/dist/commands/lanes-message.js +946 -0
  282. package/dist/commands/lanes-move.d.ts +12 -0
  283. package/dist/commands/lanes-move.js +397 -0
  284. package/dist/commands/lanes-questions.d.ts +36 -0
  285. package/dist/commands/lanes-questions.js +1005 -0
  286. package/dist/commands/lanes-report.d.ts +11 -0
  287. package/dist/commands/lanes-report.js +333 -0
  288. package/dist/commands/lanes-resume.d.ts +6 -0
  289. package/dist/commands/lanes-resume.js +564 -0
  290. package/dist/commands/lanes-review.d.ts +10 -0
  291. package/dist/commands/lanes-review.js +56 -0
  292. package/dist/commands/lanes-shared.d.ts +449 -0
  293. package/dist/commands/lanes-shared.js +170 -0
  294. package/dist/commands/lanes-stories.d.ts +15 -0
  295. package/dist/commands/lanes-stories.js +347 -0
  296. package/dist/commands/lanes-watch.d.ts +7 -0
  297. package/dist/commands/lanes-watch.js +216 -0
  298. package/dist/commands/lanes.d.ts +149 -0
  299. package/dist/commands/lanes.js +8983 -0
  300. package/dist/commands/login.js +49 -6
  301. package/dist/commands/mcp-registration.d.ts +32 -25
  302. package/dist/commands/mcp-registration.js +256 -23
  303. package/dist/commands/mcp-status.js +1 -0
  304. package/dist/commands/meetings.js +55 -34
  305. package/dist/commands/members.js +5 -1
  306. package/dist/commands/mesh.d.ts +11 -0
  307. package/dist/commands/mesh.js +1086 -76
  308. package/dist/commands/monitor.d.ts +58 -0
  309. package/dist/commands/monitor.js +980 -0
  310. package/dist/commands/onboard-bot-membership.d.ts +32 -0
  311. package/dist/commands/onboard-bot-membership.js +40 -0
  312. package/dist/commands/onboard-create-identity.d.ts +26 -0
  313. package/dist/commands/onboard-create-identity.js +23 -0
  314. package/dist/commands/onboard-identity-guard.d.ts +1 -1
  315. package/dist/commands/onboard.js +24 -5
  316. package/dist/commands/outpost-pruner.d.ts +3 -0
  317. package/dist/commands/outpost-pruner.js +125 -0
  318. package/dist/commands/pack-install.js +3 -1
  319. package/dist/commands/packs.js +11 -1
  320. package/dist/commands/people.d.ts +4 -0
  321. package/dist/commands/people.js +37 -3
  322. package/dist/commands/personal-connector-settings-flag.d.ts +4 -0
  323. package/dist/commands/personal-connector-settings-flag.js +7 -0
  324. package/dist/commands/personal-targeted-push-flag.d.ts +4 -0
  325. package/dist/commands/personal-targeted-push-flag.js +7 -0
  326. package/dist/commands/personal-targeted-push-paths.d.ts +3 -0
  327. package/dist/commands/personal-targeted-push-paths.js +67 -0
  328. package/dist/commands/publish.d.ts +8 -1
  329. package/dist/commands/publish.js +17 -4
  330. package/dist/commands/reindex.js +56 -6
  331. package/dist/commands/report.d.ts +19 -0
  332. package/dist/commands/report.js +537 -0
  333. package/dist/commands/rescue.d.ts +4 -0
  334. package/dist/commands/rescue.js +27 -17
  335. package/dist/commands/run-feature-telemetry.d.ts +3 -0
  336. package/dist/commands/run-feature-telemetry.js +6 -0
  337. package/dist/commands/run.js +18 -4
  338. package/dist/commands/safe-extract.d.ts +11 -2
  339. package/dist/commands/safe-extract.js +36 -8
  340. package/dist/commands/secrets.d.ts +20 -2
  341. package/dist/commands/secrets.js +175 -71
  342. package/dist/commands/skill.d.ts +35 -4
  343. package/dist/commands/skill.js +357 -18
  344. package/dist/commands/staff/reset-test-account.d.ts +110 -0
  345. package/dist/commands/staff/reset-test-account.js +268 -0
  346. package/dist/commands/staff/test-account.d.ts +51 -0
  347. package/dist/commands/staff/test-account.js +196 -0
  348. package/dist/commands/sync-mode.d.ts +11 -0
  349. package/dist/commands/sync-mode.js +30 -0
  350. package/dist/commands/sync-narrow.js +36 -5
  351. package/dist/commands/team-sync.js +71 -10
  352. package/dist/commands/update.js +6 -0
  353. package/dist/commands/vault-retention-flag.d.ts +3 -0
  354. package/dist/commands/vault-retention-flag.js +9 -0
  355. package/dist/commands/vault-retention.d.ts +11 -0
  356. package/dist/commands/vault-retention.js +69 -0
  357. package/dist/commands/version.d.ts +10 -0
  358. package/dist/commands/version.js +11 -0
  359. package/dist/commands/whoami.d.ts +22 -0
  360. package/dist/commands/whoami.js +137 -4
  361. package/dist/commands/workers.d.ts +2 -14
  362. package/dist/commands/workers.js +7 -10
  363. package/dist/fast-core.d.ts +6 -7
  364. package/dist/fast-core.js +87 -24
  365. package/dist/fast-scaffold.d.ts +86 -0
  366. package/dist/fast-scaffold.js +364 -0
  367. package/dist/index.d.ts +3 -4
  368. package/dist/index.js +59 -9
  369. package/dist/lanes-drain-hook.d.ts +14 -0
  370. package/dist/lanes-drain-hook.js +203 -0
  371. package/dist/lazy-commands.d.ts +20 -44
  372. package/dist/lazy-commands.js +60 -58
  373. package/dist/lib/agent-kit/adopt-identity.d.ts +27 -0
  374. package/dist/lib/agent-kit/adopt-identity.js +60 -0
  375. package/dist/lib/agent-kit/attachment-download.d.ts +24 -0
  376. package/dist/lib/agent-kit/attachment-download.js +47 -0
  377. package/dist/lib/agent-kit/creds.d.ts +106 -0
  378. package/dist/lib/agent-kit/creds.js +163 -0
  379. package/dist/lib/agent-kit/fallback.d.ts +78 -0
  380. package/dist/lib/agent-kit/fallback.js +210 -0
  381. package/dist/lib/agent-kit/inbox-state.d.ts +83 -0
  382. package/dist/lib/agent-kit/inbox-state.js +159 -0
  383. package/dist/lib/agent-kit/kit-config.d.ts +56 -0
  384. package/dist/lib/agent-kit/kit-config.js +65 -0
  385. package/dist/lib/agent-kit/log.d.ts +16 -0
  386. package/dist/lib/agent-kit/log.js +46 -0
  387. package/dist/lib/agent-kit/mcp/attachments.d.ts +126 -0
  388. package/dist/lib/agent-kit/mcp/attachments.js +222 -0
  389. package/dist/lib/agent-kit/mcp/jsonrpc.d.ts +75 -0
  390. package/dist/lib/agent-kit/mcp/jsonrpc.js +164 -0
  391. package/dist/lib/agent-kit/mcp/tools.d.ts +64 -0
  392. package/dist/lib/agent-kit/mcp/tools.js +397 -0
  393. package/dist/lib/agent-kit/paths.d.ts +65 -0
  394. package/dist/lib/agent-kit/paths.js +118 -0
  395. package/dist/lib/agent-kit/private-file.d.ts +29 -0
  396. package/dist/lib/agent-kit/private-file.js +91 -0
  397. package/dist/lib/agent-kit/run/heartbeat.d.ts +72 -0
  398. package/dist/lib/agent-kit/run/heartbeat.js +128 -0
  399. package/dist/lib/agent-kit/run/inbox.d.ts +76 -0
  400. package/dist/lib/agent-kit/run/inbox.js +205 -0
  401. package/dist/lib/agent-kit/run/supervisor.d.ts +35 -0
  402. package/dist/lib/agent-kit/run/supervisor.js +85 -0
  403. package/dist/lib/agent-kit/run/sync.d.ts +33 -0
  404. package/dist/lib/agent-kit/run/sync.js +58 -0
  405. package/dist/lib/agent-kit/services.d.ts +31 -0
  406. package/dist/lib/agent-kit/services.js +55 -0
  407. package/dist/lib/agent-kit/skills.d.ts +18 -0
  408. package/dist/lib/agent-kit/skills.js +151 -0
  409. package/dist/lib/agent-kit/wake.d.ts +83 -0
  410. package/dist/lib/agent-kit/wake.js +243 -0
  411. package/dist/lib/agents/model-catalog.d.ts +62 -0
  412. package/dist/lib/agents/model-catalog.js +275 -0
  413. package/dist/lib/auth-login-provider-state.d.ts +8 -0
  414. package/dist/lib/auth-login-provider-state.js +63 -0
  415. package/dist/lib/aws-sdk-node-warning-output.d.ts +12 -0
  416. package/dist/lib/aws-sdk-node-warning-output.js +22 -0
  417. package/dist/lib/billing/free-month.d.ts +18 -0
  418. package/dist/lib/billing/free-month.js +31 -0
  419. package/dist/lib/billing/plan-limit-refusals.d.ts +69 -0
  420. package/dist/lib/billing/plan-limit-refusals.js +187 -0
  421. package/dist/lib/billing/plan-limit-upgrade-url.d.ts +11 -0
  422. package/dist/lib/billing/plan-limit-upgrade-url.js +66 -0
  423. package/dist/lib/billing/plan-lock.d.ts +143 -0
  424. package/dist/lib/billing/plan-lock.js +439 -0
  425. package/dist/lib/bot/api.d.ts +349 -0
  426. package/dist/lib/bot/api.js +316 -0
  427. package/dist/lib/bot/attachments.d.ts +45 -0
  428. package/dist/lib/bot/attachments.js +89 -0
  429. package/dist/lib/bot/cli-update.d.ts +138 -0
  430. package/dist/lib/bot/cli-update.js +278 -0
  431. package/dist/lib/bot/company-bind.d.ts +27 -0
  432. package/dist/lib/bot/company-bind.js +62 -0
  433. package/dist/lib/bot/config.d.ts +153 -0
  434. package/dist/lib/bot/config.js +233 -0
  435. package/dist/lib/bot/continuity-download.d.ts +28 -0
  436. package/dist/lib/bot/continuity-download.js +75 -0
  437. package/dist/lib/bot/continuity-install.d.ts +14 -0
  438. package/dist/lib/bot/continuity-install.js +101 -0
  439. package/dist/lib/bot/continuity.d.ts +67 -0
  440. package/dist/lib/bot/continuity.js +301 -0
  441. package/dist/lib/bot/creds.d.ts +24 -0
  442. package/dist/lib/bot/creds.js +51 -0
  443. package/dist/lib/bot/daemon.d.ts +173 -0
  444. package/dist/lib/bot/daemon.js +552 -0
  445. package/dist/lib/bot/inbox-poll-backoff-flag.d.ts +24 -0
  446. package/dist/lib/bot/inbox-poll-backoff-flag.js +135 -0
  447. package/dist/lib/bot/inbox-state.d.ts +18 -0
  448. package/dist/lib/bot/inbox-state.js +51 -0
  449. package/dist/lib/bot/index.d.ts +23 -0
  450. package/dist/lib/bot/index.js +23 -0
  451. package/dist/lib/bot/inflight.d.ts +119 -0
  452. package/dist/lib/bot/inflight.js +83 -0
  453. package/dist/lib/bot/job-completions.d.ts +89 -0
  454. package/dist/lib/bot/job-completions.js +132 -0
  455. package/dist/lib/bot/job-run.d.ts +109 -0
  456. package/dist/lib/bot/job-run.js +246 -0
  457. package/dist/lib/bot/local-config.d.ts +61 -0
  458. package/dist/lib/bot/local-config.js +145 -0
  459. package/dist/lib/bot/local-jobs.d.ts +89 -0
  460. package/dist/lib/bot/local-jobs.js +459 -0
  461. package/dist/lib/bot/local-name.d.ts +54 -0
  462. package/dist/lib/bot/local-name.js +114 -0
  463. package/dist/lib/bot/log.d.ts +13 -0
  464. package/dist/lib/bot/log.js +59 -0
  465. package/dist/lib/bot/owner-context.d.ts +79 -0
  466. package/dist/lib/bot/owner-context.js +175 -0
  467. package/dist/lib/bot/paths.d.ts +76 -0
  468. package/dist/lib/bot/paths.js +131 -0
  469. package/dist/lib/bot/progress.d.ts +132 -0
  470. package/dist/lib/bot/progress.js +289 -0
  471. package/dist/lib/bot/promote.d.ts +16 -0
  472. package/dist/lib/bot/promote.js +106 -0
  473. package/dist/lib/bot/promotion-hold.d.ts +24 -0
  474. package/dist/lib/bot/promotion-hold.js +103 -0
  475. package/dist/lib/bot/promotion-receipt.d.ts +9 -0
  476. package/dist/lib/bot/promotion-receipt.js +56 -0
  477. package/dist/lib/bot/promotion-upload.d.ts +16 -0
  478. package/dist/lib/bot/promotion-upload.js +80 -0
  479. package/dist/lib/bot/prompt.d.ts +136 -0
  480. package/dist/lib/bot/prompt.js +433 -0
  481. package/dist/lib/bot/room-policy.d.ts +63 -0
  482. package/dist/lib/bot/room-policy.js +91 -0
  483. package/dist/lib/bot/run.d.ts +217 -0
  484. package/dist/lib/bot/run.js +1869 -0
  485. package/dist/lib/bot/runnable.d.ts +51 -0
  486. package/dist/lib/bot/runnable.js +65 -0
  487. package/dist/lib/bot/runtime/claude.d.ts +50 -0
  488. package/dist/lib/bot/runtime/claude.js +170 -0
  489. package/dist/lib/bot/runtime/codex.d.ts +28 -0
  490. package/dist/lib/bot/runtime/codex.js +153 -0
  491. package/dist/lib/bot/runtime/grok-acp.d.ts +40 -0
  492. package/dist/lib/bot/runtime/grok-acp.js +265 -0
  493. package/dist/lib/bot/runtime/grok.d.ts +41 -0
  494. package/dist/lib/bot/runtime/grok.js +169 -0
  495. package/dist/lib/bot/runtime/index.d.ts +36 -0
  496. package/dist/lib/bot/runtime/index.js +417 -0
  497. package/dist/lib/bot/runtime/messages-stream.d.ts +56 -0
  498. package/dist/lib/bot/runtime/messages-stream.js +194 -0
  499. package/dist/lib/bot/runtime/sanitize.d.ts +18 -0
  500. package/dist/lib/bot/runtime/sanitize.js +28 -0
  501. package/dist/lib/bot/runtime/types.d.ts +159 -0
  502. package/dist/lib/bot/runtime/types.js +51 -0
  503. package/dist/lib/bot/runtime/windows.d.ts +10 -0
  504. package/dist/lib/bot/runtime/windows.js +53 -0
  505. package/dist/lib/bot/runtime-sign-in.d.ts +24 -0
  506. package/dist/lib/bot/runtime-sign-in.js +31 -0
  507. package/dist/lib/bot/scaffold.d.ts +38 -0
  508. package/dist/lib/bot/scaffold.js +94 -0
  509. package/dist/lib/bot/self-heal.d.ts +52 -0
  510. package/dist/lib/bot/self-heal.js +79 -0
  511. package/dist/lib/bot/self-process.d.ts +19 -0
  512. package/dist/lib/bot/self-process.js +35 -0
  513. package/dist/lib/bot/session.d.ts +19 -0
  514. package/dist/lib/bot/session.js +39 -0
  515. package/dist/lib/bot/setup-explain.d.ts +64 -0
  516. package/dist/lib/bot/setup-explain.js +141 -0
  517. package/dist/lib/bot/split.d.ts +32 -0
  518. package/dist/lib/bot/split.js +241 -0
  519. package/dist/lib/bot/status.d.ts +57 -0
  520. package/dist/lib/bot/status.js +66 -0
  521. package/dist/lib/bot/worker-source.d.ts +66 -0
  522. package/dist/lib/bot/worker-source.js +283 -0
  523. package/dist/lib/checkpoint-ontology/aliases.d.ts +17 -0
  524. package/dist/lib/checkpoint-ontology/aliases.js +44 -0
  525. package/dist/lib/checkpoint-ontology/apply.d.ts +110 -0
  526. package/dist/lib/checkpoint-ontology/apply.js +777 -0
  527. package/dist/lib/checkpoint-ontology/company-brief.d.ts +18 -0
  528. package/dist/lib/checkpoint-ontology/company-brief.js +337 -0
  529. package/dist/lib/checkpoint-ontology/company.d.ts +44 -0
  530. package/dist/lib/checkpoint-ontology/company.js +118 -0
  531. package/dist/lib/checkpoint-ontology/drop-aliases.d.ts +41 -0
  532. package/dist/lib/checkpoint-ontology/drop-aliases.js +76 -0
  533. package/dist/lib/checkpoint-ontology/entity-file.d.ts +109 -0
  534. package/dist/lib/checkpoint-ontology/entity-file.js +371 -0
  535. package/dist/lib/checkpoint-ontology/identity.d.ts +38 -0
  536. package/dist/lib/checkpoint-ontology/identity.js +95 -0
  537. package/dist/lib/checkpoint-ontology/merge-copies.d.ts +199 -0
  538. package/dist/lib/checkpoint-ontology/merge-copies.js +1086 -0
  539. package/dist/lib/checkpoint-ontology/multi-writer.d.ts +101 -0
  540. package/dist/lib/checkpoint-ontology/multi-writer.js +394 -0
  541. package/dist/lib/checkpoint-ontology/plan.d.ts +193 -0
  542. package/dist/lib/checkpoint-ontology/plan.js +504 -0
  543. package/dist/lib/checkpoint-ontology/queued-touches.d.ts +29 -0
  544. package/dist/lib/checkpoint-ontology/queued-touches.js +193 -0
  545. package/dist/lib/checkpoint-ontology/sync-client.d.ts +38 -0
  546. package/dist/lib/checkpoint-ontology/sync-client.js +84 -0
  547. package/dist/lib/checkpoint-ontology/tree.d.ts +55 -0
  548. package/dist/lib/checkpoint-ontology/tree.js +198 -0
  549. package/dist/lib/company-errors-sdk-warning-flag.d.ts +5 -0
  550. package/dist/lib/company-errors-sdk-warning-flag.js +8 -0
  551. package/dist/lib/company-skill-wrapper.d.ts +1 -0
  552. package/dist/lib/company-skill-wrapper.js +121 -29
  553. package/dist/lib/core-utils/codex-skill-bridge.d.ts +2 -1
  554. package/dist/lib/core-utils/hook-timeout-debug-context-flag.d.ts +20 -0
  555. package/dist/lib/core-utils/hook-timeout-debug-context-flag.js +81 -0
  556. package/dist/lib/core-utils/jq-json-serializer.d.ts +5 -0
  557. package/dist/lib/core-utils/jq-json-serializer.js +10 -0
  558. package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +14 -1
  559. package/dist/lib/core-utils/qmd-reindex-after-sync.js +101 -17
  560. package/dist/lib/core-utils/secret-patterns.d.ts +43 -0
  561. package/dist/lib/core-utils/secret-patterns.js +34 -0
  562. package/dist/lib/core-utils/sentry-report.d.ts +114 -0
  563. package/dist/lib/core-utils/sentry-report.js +1055 -0
  564. package/dist/lib/core-utils/soft-timeout.js +1 -1
  565. package/dist/lib/core-utils/timeout-guard-native.d.ts +7 -0
  566. package/dist/lib/core-utils/timeout-guard-native.js +40 -0
  567. package/dist/lib/core-utils/timeout-guard.d.ts +3 -3
  568. package/dist/lib/core-utils/timeout-guard.js +28 -13
  569. package/dist/lib/core-utils/token-usage-report.js +17 -3
  570. package/dist/lib/core-utils/worktree-resume.d.ts +20 -0
  571. package/dist/lib/core-utils/worktree-resume.js +1198 -0
  572. package/dist/lib/daemon/catalog.d.ts +134 -0
  573. package/dist/lib/daemon/catalog.js +358 -0
  574. package/dist/lib/daemon/config.d.ts +35 -0
  575. package/dist/lib/daemon/config.js +108 -0
  576. package/dist/lib/daemon/flag.d.ts +25 -0
  577. package/dist/lib/daemon/flag.js +59 -0
  578. package/dist/lib/daemon/handoff.d.ts +56 -0
  579. package/dist/lib/daemon/handoff.js +161 -0
  580. package/dist/lib/daemon/hq-cloud.d.ts +79 -0
  581. package/dist/lib/daemon/hq-cloud.js +183 -0
  582. package/dist/lib/daemon/install.d.ts +85 -0
  583. package/dist/lib/daemon/install.js +320 -0
  584. package/dist/lib/daemon/legacy-sync-env.d.ts +10 -0
  585. package/dist/lib/daemon/legacy-sync-env.js +58 -0
  586. package/dist/lib/daemon/legacy.d.ts +45 -0
  587. package/dist/lib/daemon/legacy.js +133 -0
  588. package/dist/lib/daemon/lock.d.ts +47 -0
  589. package/dist/lib/daemon/lock.js +138 -0
  590. package/dist/lib/daemon/machine-type.d.ts +50 -0
  591. package/dist/lib/daemon/machine-type.js +159 -0
  592. package/dist/lib/daemon/migrate.d.ts +77 -0
  593. package/dist/lib/daemon/migrate.js +265 -0
  594. package/dist/lib/daemon/paths.d.ts +24 -0
  595. package/dist/lib/daemon/paths.js +43 -0
  596. package/dist/lib/daemon/protocol-tail.d.ts +33 -0
  597. package/dist/lib/daemon/protocol-tail.js +131 -0
  598. package/dist/lib/daemon/remote-control.d.ts +74 -0
  599. package/dist/lib/daemon/remote-control.js +153 -0
  600. package/dist/lib/daemon/requests.d.ts +28 -0
  601. package/dist/lib/daemon/requests.js +65 -0
  602. package/dist/lib/daemon/run.d.ts +79 -0
  603. package/dist/lib/daemon/run.js +755 -0
  604. package/dist/lib/daemon/succession.d.ts +118 -0
  605. package/dist/lib/daemon/succession.js +263 -0
  606. package/dist/lib/daemon/supervisor.d.ts +132 -0
  607. package/dist/lib/daemon/supervisor.js +836 -0
  608. package/dist/lib/daemon/sync-runner.d.ts +58 -0
  609. package/dist/lib/daemon/sync-runner.js +277 -0
  610. package/dist/lib/daemon/tools.d.ts +52 -0
  611. package/dist/lib/daemon/tools.js +95 -0
  612. package/dist/lib/daemon/updater.d.ts +57 -0
  613. package/dist/lib/daemon/updater.js +163 -0
  614. package/dist/lib/db/control-plane.js +6 -0
  615. package/dist/lib/db/local.d.ts +0 -5
  616. package/dist/lib/db/local.js +1 -1
  617. package/dist/lib/db/migrate.d.ts +0 -12
  618. package/dist/lib/db/migrate.js +5 -5
  619. package/dist/lib/db/remote-sql.d.ts +2 -2
  620. package/dist/lib/db/remote-sql.js +3 -3
  621. package/dist/lib/db/sql.d.ts +0 -10
  622. package/dist/lib/db/sql.js +4 -8
  623. package/dist/lib/deploy-api.d.ts +5 -0
  624. package/dist/lib/deploy-api.js +21 -0
  625. package/dist/lib/deploy-apps.d.ts +13 -0
  626. package/dist/lib/deploy-apps.js +29 -0
  627. package/dist/lib/doctor/__testing__/fake-hq-tree.d.ts +1 -1
  628. package/dist/lib/doctor/__testing__/fake-hq-tree.js +1 -1
  629. package/dist/lib/doctor/__testing__/run-doctor.d.ts +8 -0
  630. package/dist/lib/doctor/__testing__/run-doctor.js +52 -0
  631. package/dist/lib/doctor/checks/bots.d.ts +13 -0
  632. package/dist/lib/doctor/checks/bots.js +189 -0
  633. package/dist/lib/doctor/checks/claude-wiring.js +70 -1
  634. package/dist/lib/doctor/checks/codex-wiring.d.ts +0 -4
  635. package/dist/lib/doctor/checks/codex-wiring.js +3 -35
  636. package/dist/lib/doctor/checks/grok-wiring.js +1 -34
  637. package/dist/lib/doctor/checks/integrations.js +11 -0
  638. package/dist/lib/doctor/checks/runtime-health.d.ts +4 -17
  639. package/dist/lib/doctor/checks/runtime-health.js +20 -7
  640. package/dist/lib/doctor/checks/scaffold-cli-floor.d.ts +6 -0
  641. package/dist/lib/doctor/checks/scaffold-cli-floor.js +73 -0
  642. package/dist/lib/doctor/checks/sync-health.d.ts +21 -0
  643. package/dist/lib/doctor/checks/sync-health.js +72 -2
  644. package/dist/lib/doctor/checks/sync-runtime.d.ts +11 -0
  645. package/dist/lib/doctor/checks/sync-runtime.js +216 -0
  646. package/dist/lib/doctor/checks/work-context.js +20 -6
  647. package/dist/lib/doctor/client-health-flag-token.d.ts +15 -0
  648. package/dist/lib/doctor/client-health-flag-token.js +66 -0
  649. package/dist/lib/doctor/client-health-reason-codes-flag.d.ts +27 -0
  650. package/dist/lib/doctor/client-health-reason-codes-flag.js +106 -0
  651. package/dist/lib/doctor/compat.d.ts +0 -16
  652. package/dist/lib/doctor/compat.js +4 -3
  653. package/dist/lib/doctor/deep/effects.js +1 -3
  654. package/dist/lib/doctor/deep/executor.d.ts +4 -10
  655. package/dist/lib/doctor/deep/executor.js +1 -1
  656. package/dist/lib/doctor/deep/parity.d.ts +2 -29
  657. package/dist/lib/doctor/deep/parity.js +7 -7
  658. package/dist/lib/doctor/deep/sandbox.d.ts +7 -25
  659. package/dist/lib/doctor/deep/sandbox.js +5 -7
  660. package/dist/lib/doctor/fix/apply.d.ts +79 -8
  661. package/dist/lib/doctor/fix/apply.js +292 -80
  662. package/dist/lib/doctor/fix/json-output.d.ts +28 -0
  663. package/dist/lib/doctor/fix/json-output.js +33 -0
  664. package/dist/lib/doctor/fix/refresh-sync-outcome.d.ts +12 -0
  665. package/dist/lib/doctor/fix/refresh-sync-outcome.js +25 -0
  666. package/dist/lib/doctor/fix/remediation.d.ts +14 -6
  667. package/dist/lib/doctor/fix/remediation.js +49 -9
  668. package/dist/lib/doctor/fixtures/schema.js +1 -3
  669. package/dist/lib/doctor/json-output.d.ts +17 -1
  670. package/dist/lib/doctor/json-output.js +7 -2
  671. package/dist/lib/doctor/platform.d.ts +0 -26
  672. package/dist/lib/doctor/platform.js +5 -5
  673. package/dist/lib/doctor/registry.d.ts +14 -0
  674. package/dist/lib/doctor/registry.js +71 -0
  675. package/dist/lib/doctor/report.js +1 -1
  676. package/dist/lib/doctor/shared.d.ts +8 -0
  677. package/dist/lib/doctor/shared.js +38 -0
  678. package/dist/lib/doctor/stray-gate-entries.d.ts +35 -0
  679. package/dist/lib/doctor/stray-gate-entries.js +83 -0
  680. package/dist/lib/doctor/types.d.ts +5 -0
  681. package/dist/lib/doctor/types.js +20 -0
  682. package/dist/lib/first-sync-next-step.d.ts +34 -0
  683. package/dist/lib/first-sync-next-step.js +179 -0
  684. package/dist/lib/flag-registry-endpoint.d.ts +5 -0
  685. package/dist/lib/flag-registry-endpoint.js +9 -0
  686. package/dist/lib/flag-registry-worker-source.generated.d.ts +2 -0
  687. package/dist/lib/flag-registry-worker-source.generated.js +3 -0
  688. package/dist/lib/flag-registry-worker.js +12 -1
  689. package/dist/lib/flag-registry.d.ts +26 -6
  690. package/dist/lib/flag-registry.js +133 -16
  691. package/dist/lib/flag-snapshot-file.d.ts +20 -0
  692. package/dist/lib/flag-snapshot-file.js +91 -0
  693. package/dist/lib/heartbeat-identity.d.ts +30 -0
  694. package/dist/lib/heartbeat-identity.js +76 -0
  695. package/dist/lib/index-render/companies.d.ts +4 -1
  696. package/dist/lib/index-render/companies.js +66 -3
  697. package/dist/lib/index-render/company-knowledge.js +80 -17
  698. package/dist/lib/index-render/index.d.ts +1 -0
  699. package/dist/lib/index-render/index.js +2 -1
  700. package/dist/lib/index-render/projects.js +82 -5
  701. package/dist/lib/index-render/shared.d.ts +13 -1
  702. package/dist/lib/index-render/shared.js +41 -2
  703. package/dist/lib/lanes/account-home.d.ts +8 -0
  704. package/dist/lib/lanes/account-home.js +10 -0
  705. package/dist/lib/lanes/accounts.d.ts +117 -0
  706. package/dist/lib/lanes/accounts.js +366 -0
  707. package/dist/lib/lanes/admission-host.d.ts +22 -0
  708. package/dist/lib/lanes/admission-host.js +37 -0
  709. package/dist/lib/lanes/admission.d.ts +26 -0
  710. package/dist/lib/lanes/admission.js +210 -0
  711. package/dist/lib/lanes/approval-gate.d.ts +8 -0
  712. package/dist/lib/lanes/approval-gate.js +90 -0
  713. package/dist/lib/lanes/autopilot-metrics.d.ts +99 -0
  714. package/dist/lib/lanes/autopilot-metrics.js +301 -0
  715. package/dist/lib/lanes/autopilot-registry.d.ts +62 -0
  716. package/dist/lib/lanes/autopilot-registry.js +192 -0
  717. package/dist/lib/lanes/autopilot.d.ts +133 -0
  718. package/dist/lib/lanes/autopilot.js +1222 -0
  719. package/dist/lib/lanes/blocker-freshness.d.ts +31 -0
  720. package/dist/lib/lanes/blocker-freshness.js +168 -0
  721. package/dist/lib/lanes/checked-company-path.d.ts +3 -0
  722. package/dist/lib/lanes/checked-company-path.js +39 -0
  723. package/dist/lib/lanes/claude-balance.d.ts +97 -0
  724. package/dist/lib/lanes/claude-balance.js +319 -0
  725. package/dist/lib/lanes/compaction.d.ts +110 -0
  726. package/dist/lib/lanes/compaction.js +293 -0
  727. package/dist/lib/lanes/config.d.ts +94 -0
  728. package/dist/lib/lanes/config.js +606 -0
  729. package/dist/lib/lanes/constants.d.ts +3 -0
  730. package/dist/lib/lanes/constants.js +3 -0
  731. package/dist/lib/lanes/delivery-core.d.ts +15 -0
  732. package/dist/lib/lanes/delivery-core.js +21 -0
  733. package/dist/lib/lanes/delivery.d.ts +180 -0
  734. package/dist/lib/lanes/delivery.js +443 -0
  735. package/dist/lib/lanes/disk-guard.d.ts +66 -0
  736. package/dist/lib/lanes/disk-guard.js +172 -0
  737. package/dist/lib/lanes/dropbox.d.ts +129 -0
  738. package/dist/lib/lanes/dropbox.js +601 -0
  739. package/dist/lib/lanes/effort.d.ts +51 -0
  740. package/dist/lib/lanes/effort.js +113 -0
  741. package/dist/lib/lanes/envelope-repair-dispatch.d.ts +26 -0
  742. package/dist/lib/lanes/envelope-repair-dispatch.js +74 -0
  743. package/dist/lib/lanes/errors.d.ts +39 -0
  744. package/dist/lib/lanes/errors.js +72 -0
  745. package/dist/lib/lanes/flag-keys.d.ts +22 -0
  746. package/dist/lib/lanes/flag-keys.js +22 -0
  747. package/dist/lib/lanes/grants.d.ts +30 -0
  748. package/dist/lib/lanes/grants.js +171 -0
  749. package/dist/lib/lanes/hire-grant-dispatch.d.ts +29 -0
  750. package/dist/lib/lanes/hire-grant-dispatch.js +315 -0
  751. package/dist/lib/lanes/hooks-install.d.ts +82 -0
  752. package/dist/lib/lanes/hooks-install.js +479 -0
  753. package/dist/lib/lanes/host-capacity.d.ts +69 -0
  754. package/dist/lib/lanes/host-capacity.js +254 -0
  755. package/dist/lib/lanes/hq-root.d.ts +19 -0
  756. package/dist/lib/lanes/hq-root.js +28 -0
  757. package/dist/lib/lanes/index.d.ts +76 -0
  758. package/dist/lib/lanes/index.js +42 -0
  759. package/dist/lib/lanes/keep-alive-audit.d.ts +46 -0
  760. package/dist/lib/lanes/keep-alive-audit.js +370 -0
  761. package/dist/lib/lanes/keep-alive.d.ts +68 -0
  762. package/dist/lib/lanes/keep-alive.js +343 -0
  763. package/dist/lib/lanes/kr-freshness.d.ts +76 -0
  764. package/dist/lib/lanes/kr-freshness.js +413 -0
  765. package/dist/lib/lanes/lane-company.d.ts +10 -0
  766. package/dist/lib/lanes/lane-company.js +41 -0
  767. package/dist/lib/lanes/liveness.d.ts +108 -0
  768. package/dist/lib/lanes/liveness.js +396 -0
  769. package/dist/lib/lanes/machine-identity.d.ts +34 -0
  770. package/dist/lib/lanes/machine-identity.js +92 -0
  771. package/dist/lib/lanes/manager-status-gate.d.ts +17 -0
  772. package/dist/lib/lanes/manager-status-gate.js +133 -0
  773. package/dist/lib/lanes/merge-command.d.ts +15 -0
  774. package/dist/lib/lanes/merge-command.js +629 -0
  775. package/dist/lib/lanes/mesh-events.d.ts +127 -0
  776. package/dist/lib/lanes/mesh-events.js +564 -0
  777. package/dist/lib/lanes/message-replay.d.ts +21 -0
  778. package/dist/lib/lanes/message-replay.js +122 -0
  779. package/dist/lib/lanes/models.d.ts +86 -0
  780. package/dist/lib/lanes/models.js +234 -0
  781. package/dist/lib/lanes/monitor.d.ts +48 -0
  782. package/dist/lib/lanes/monitor.js +428 -0
  783. package/dist/lib/lanes/move-account.d.ts +56 -0
  784. package/dist/lib/lanes/move-account.js +193 -0
  785. package/dist/lib/lanes/orphans.d.ts +25 -0
  786. package/dist/lib/lanes/orphans.js +102 -0
  787. package/dist/lib/lanes/outpost-dispatch.d.ts +147 -0
  788. package/dist/lib/lanes/outpost-dispatch.js +271 -0
  789. package/dist/lib/lanes/outpost-hire-cache.d.ts +22 -0
  790. package/dist/lib/lanes/outpost-hire-cache.js +153 -0
  791. package/dist/lib/lanes/outpost-identity.d.ts +33 -0
  792. package/dist/lib/lanes/outpost-identity.js +59 -0
  793. package/dist/lib/lanes/outpost-profile-repin.d.ts +17 -0
  794. package/dist/lib/lanes/outpost-profile-repin.js +84 -0
  795. package/dist/lib/lanes/outpost-pruner-install.d.ts +37 -0
  796. package/dist/lib/lanes/outpost-pruner-install.js +238 -0
  797. package/dist/lib/lanes/outpost-registry-worker-approval.d.ts +18 -0
  798. package/dist/lib/lanes/outpost-registry-worker-approval.js +109 -0
  799. package/dist/lib/lanes/outpost-snapshot-memo.d.ts +6 -0
  800. package/dist/lib/lanes/outpost-snapshot-memo.js +14 -0
  801. package/dist/lib/lanes/outpost-worktree-pruner-flag.d.ts +19 -0
  802. package/dist/lib/lanes/outpost-worktree-pruner-flag.js +86 -0
  803. package/dist/lib/lanes/outpost-worktree-pruner.d.ts +62 -0
  804. package/dist/lib/lanes/outpost-worktree-pruner.js +1201 -0
  805. package/dist/lib/lanes/profile.d.ts +69 -0
  806. package/dist/lib/lanes/profile.js +552 -0
  807. package/dist/lib/lanes/provider-rejection.d.ts +86 -0
  808. package/dist/lib/lanes/provider-rejection.js +286 -0
  809. package/dist/lib/lanes/questions.d.ts +90 -0
  810. package/dist/lib/lanes/questions.js +384 -0
  811. package/dist/lib/lanes/quota.d.ts +134 -0
  812. package/dist/lib/lanes/quota.js +471 -0
  813. package/dist/lib/lanes/reconcile-install.d.ts +90 -0
  814. package/dist/lib/lanes/reconcile-install.js +257 -0
  815. package/dist/lib/lanes/reconcile.d.ts +161 -0
  816. package/dist/lib/lanes/reconcile.js +3343 -0
  817. package/dist/lib/lanes/registry-flag.d.ts +35 -0
  818. package/dist/lib/lanes/registry-flag.js +164 -0
  819. package/dist/lib/lanes/registry-persona.d.ts +20 -0
  820. package/dist/lib/lanes/registry-persona.js +329 -0
  821. package/dist/lib/lanes/registry.d.ts +122 -0
  822. package/dist/lib/lanes/registry.js +570 -0
  823. package/dist/lib/lanes/reviews.d.ts +38 -0
  824. package/dist/lib/lanes/reviews.js +395 -0
  825. package/dist/lib/lanes/runaway-tool-guard.d.ts +38 -0
  826. package/dist/lib/lanes/runaway-tool-guard.js +284 -0
  827. package/dist/lib/lanes/session-relink.d.ts +25 -0
  828. package/dist/lib/lanes/session-relink.js +216 -0
  829. package/dist/lib/lanes/spawn.d.ts +355 -0
  830. package/dist/lib/lanes/spawn.js +2668 -0
  831. package/dist/lib/lanes/ssm-command-context.d.ts +12 -0
  832. package/dist/lib/lanes/ssm-command-context.js +52 -0
  833. package/dist/lib/lanes/store.d.ts +91 -0
  834. package/dist/lib/lanes/store.js +1822 -0
  835. package/dist/lib/lanes/stories.d.ts +23 -0
  836. package/dist/lib/lanes/stories.js +92 -0
  837. package/dist/lib/lanes/story-ledger.d.ts +80 -0
  838. package/dist/lib/lanes/story-ledger.js +815 -0
  839. package/dist/lib/lanes/story-switch.d.ts +21 -0
  840. package/dist/lib/lanes/story-switch.js +75 -0
  841. package/dist/lib/lanes/text-scan.d.ts +11 -0
  842. package/dist/lib/lanes/text-scan.js +103 -0
  843. package/dist/lib/lanes/throttle.d.ts +116 -0
  844. package/dist/lib/lanes/throttle.js +437 -0
  845. package/dist/lib/lanes/timestamp.d.ts +3 -0
  846. package/dist/lib/lanes/timestamp.js +26 -0
  847. package/dist/lib/lanes/tracker-checks.d.ts +77 -0
  848. package/dist/lib/lanes/tracker-checks.js +134 -0
  849. package/dist/lib/lanes/tracker-report-state.d.ts +10 -0
  850. package/dist/lib/lanes/tracker-report-state.js +124 -0
  851. package/dist/lib/lanes/tracker-report.d.ts +203 -0
  852. package/dist/lib/lanes/tracker-report.js +522 -0
  853. package/dist/lib/lanes/tracker-store.d.ts +18 -0
  854. package/dist/lib/lanes/tracker-store.js +106 -0
  855. package/dist/lib/lanes/types.d.ts +1030 -0
  856. package/dist/lib/lanes/types.js +418 -0
  857. package/dist/lib/lanes/wait.d.ts +39 -0
  858. package/dist/lib/lanes/wait.js +159 -0
  859. package/dist/lib/lanes/watch.d.ts +39 -0
  860. package/dist/lib/lanes/watch.js +249 -0
  861. package/dist/lib/lanes/watcher-main.d.ts +11 -0
  862. package/dist/lib/lanes/watcher-main.js +108 -0
  863. package/dist/lib/lanes/watcher.d.ts +287 -0
  864. package/dist/lib/lanes/watcher.js +1972 -0
  865. package/dist/lib/mesh/api.d.ts +103 -10
  866. package/dist/lib/mesh/api.js +334 -64
  867. package/dist/lib/mesh/client.d.ts +3 -2
  868. package/dist/lib/mesh/client.js +26 -7
  869. package/dist/lib/mesh/denial-codes.d.ts +5 -0
  870. package/dist/lib/mesh/denial-codes.js +14 -0
  871. package/dist/lib/mesh/live/backfill-held.d.ts +67 -16
  872. package/dist/lib/mesh/live/backfill-held.js +415 -61
  873. package/dist/lib/mesh/live/backoff.d.ts +2 -2
  874. package/dist/lib/mesh/live/backoff.js +16 -3
  875. package/dist/lib/mesh/live/daemon/board-refresh.d.ts +7 -1
  876. package/dist/lib/mesh/live/daemon/board-refresh.js +78 -30
  877. package/dist/lib/mesh/live/daemon/config.d.ts +36 -0
  878. package/dist/lib/mesh/live/daemon/config.js +120 -0
  879. package/dist/lib/mesh/live/daemon/credentials.d.ts +64 -10
  880. package/dist/lib/mesh/live/daemon/credentials.js +270 -20
  881. package/dist/lib/mesh/live/daemon/doctor.d.ts +53 -0
  882. package/dist/lib/mesh/live/daemon/doctor.js +190 -6
  883. package/dist/lib/mesh/live/daemon/index.d.ts +13 -10
  884. package/dist/lib/mesh/live/daemon/index.js +7 -6
  885. package/dist/lib/mesh/live/daemon/install.d.ts +255 -1
  886. package/dist/lib/mesh/live/daemon/install.js +811 -13
  887. package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +43 -0
  888. package/dist/lib/mesh/live/daemon/legacy-listen.js +89 -0
  889. package/dist/lib/mesh/live/daemon/live-cache.d.ts +26 -0
  890. package/dist/lib/mesh/live/daemon/live-cache.js +116 -0
  891. package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +7 -0
  892. package/dist/lib/mesh/live/daemon/mqtt-events.js +2 -0
  893. package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +2 -0
  894. package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +10 -0
  895. package/dist/lib/mesh/live/daemon/paths.d.ts +2 -0
  896. package/dist/lib/mesh/live/daemon/paths.js +2 -0
  897. package/dist/lib/mesh/live/daemon/presence.d.ts +24 -5
  898. package/dist/lib/mesh/live/daemon/presence.js +79 -10
  899. package/dist/lib/mesh/live/daemon/run.d.ts +48 -2
  900. package/dist/lib/mesh/live/daemon/run.js +485 -33
  901. package/dist/lib/mesh/live/daemon/state.d.ts +19 -2
  902. package/dist/lib/mesh/live/daemon/state.js +34 -2
  903. package/dist/lib/mesh/live/daemon/transcript-watch.d.ts +45 -9
  904. package/dist/lib/mesh/live/daemon/transcript-watch.js +227 -31
  905. package/dist/lib/mesh/live/daemon/version-drift.d.ts +5 -0
  906. package/dist/lib/mesh/live/daemon/version-drift.js +47 -0
  907. package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +32 -0
  908. package/dist/lib/mesh/live/daemon/work-subscribe.js +262 -0
  909. package/dist/lib/mesh/live/emit-client.d.ts +8 -0
  910. package/dist/lib/mesh/live/emit-client.js +23 -8
  911. package/dist/lib/mesh/live/emit-evidence.d.ts +19 -0
  912. package/dist/lib/mesh/live/emit-evidence.js +20 -2
  913. package/dist/lib/mesh/live/emit.d.ts +9 -0
  914. package/dist/lib/mesh/live/emit.js +28 -2
  915. package/dist/lib/mesh/live/enqueue.d.ts +5 -0
  916. package/dist/lib/mesh/live/enqueue.js +19 -0
  917. package/dist/lib/mesh/live/flush.d.ts +17 -5
  918. package/dist/lib/mesh/live/flush.js +391 -38
  919. package/dist/lib/mesh/live/format-spool-line.d.ts +5 -2
  920. package/dist/lib/mesh/live/format-spool-line.js +10 -0
  921. package/dist/lib/mesh/live/paths.d.ts +2 -0
  922. package/dist/lib/mesh/live/paths.js +4 -0
  923. package/dist/lib/mesh/live/report-summary.d.ts +45 -0
  924. package/dist/lib/mesh/live/report-summary.js +234 -0
  925. package/dist/lib/mesh/live/session-event.schema.json +24 -1
  926. package/dist/lib/mesh/live/session-events-client.d.ts +2 -0
  927. package/dist/lib/mesh/live/session-events-client.js +26 -0
  928. package/dist/lib/mesh/live/session-seq.d.ts +4 -0
  929. package/dist/lib/mesh/live/session-seq.js +33 -0
  930. package/dist/lib/mesh/live/spool.d.ts +19 -0
  931. package/dist/lib/mesh/live/spool.js +269 -3
  932. package/dist/lib/mesh/live/validate-session-event.d.ts +1 -1
  933. package/dist/lib/mesh/live/validate-session-event.js +1 -1
  934. package/dist/lib/mesh/project-board.d.ts +65 -0
  935. package/dist/lib/mesh/project-board.js +181 -0
  936. package/dist/lib/mesh/story-status.d.ts +22 -0
  937. package/dist/lib/mesh/story-status.js +49 -0
  938. package/dist/lib/monitor.d.ts +149 -0
  939. package/dist/lib/monitor.js +519 -0
  940. package/dist/lib/node-binary.d.ts +50 -0
  941. package/dist/lib/node-binary.js +133 -0
  942. package/dist/lib/notify-recipient.d.ts +7 -0
  943. package/dist/lib/notify-recipient.js +11 -0
  944. package/dist/lib/onboarding/checkpoint.d.ts +13 -0
  945. package/dist/lib/onboarding/checkpoint.js +44 -0
  946. package/dist/lib/onboarding/cli/onboard.d.ts +53 -0
  947. package/dist/lib/onboarding/cli/onboard.js +135 -0
  948. package/dist/lib/onboarding/cli/prompts.d.ts +28 -0
  949. package/dist/lib/onboarding/cli/prompts.js +83 -0
  950. package/dist/lib/onboarding/errors.d.ts +34 -0
  951. package/dist/lib/onboarding/errors.js +59 -0
  952. package/dist/lib/onboarding/index.d.ts +13 -0
  953. package/dist/lib/onboarding/index.js +13 -0
  954. package/dist/lib/onboarding/orchestrator.d.ts +47 -0
  955. package/dist/lib/onboarding/orchestrator.js +569 -0
  956. package/dist/lib/onboarding/types.d.ts +79 -0
  957. package/dist/lib/onboarding/types.js +8 -0
  958. package/dist/lib/plan-limit-nag.d.ts +102 -6
  959. package/dist/lib/plan-limit-nag.js +348 -43
  960. package/dist/lib/policy-validator.d.ts +7 -0
  961. package/dist/lib/policy-validator.js +187 -0
  962. package/dist/lib/process-flag-company-context.d.ts +8 -0
  963. package/dist/lib/process-flag-company-context.js +67 -0
  964. package/dist/lib/report-publish.d.ts +175 -0
  965. package/dist/lib/report-publish.js +421 -0
  966. package/dist/lib/report-run.d.ts +62 -0
  967. package/dist/lib/report-run.js +123 -0
  968. package/dist/lib/report-snapshot.d.ts +12 -0
  969. package/dist/lib/report-snapshot.js +135 -0
  970. package/dist/lib/report-templates.d.ts +9 -0
  971. package/dist/lib/report-templates.js +21 -0
  972. package/dist/lib/scaffold-cli-floor.d.ts +8 -0
  973. package/dist/lib/scaffold-cli-floor.js +50 -0
  974. package/dist/lib/scan-packages/index.d.ts +2 -0
  975. package/dist/lib/scan-packages/index.js +168 -6
  976. package/dist/lib/search-index/background.d.ts +8 -1
  977. package/dist/lib/search-index/background.js +55 -200
  978. package/dist/lib/search-index/collection-path-repair-flag.d.ts +4 -0
  979. package/dist/lib/search-index/collection-path-repair-flag.js +7 -0
  980. package/dist/lib/search-index/embed-lock.d.ts +34 -0
  981. package/dist/lib/search-index/embed-lock.js +295 -0
  982. package/dist/lib/search-index/index.d.ts +12 -0
  983. package/dist/lib/search-index/index.js +153 -7
  984. package/dist/lib/search-index/load-gate.d.ts +57 -0
  985. package/dist/lib/search-index/load-gate.js +270 -0
  986. package/dist/lib/search-index/max-doc-bytes.d.ts +219 -0
  987. package/dist/lib/search-index/max-doc-bytes.js +463 -0
  988. package/dist/lib/search-index/qmd-exit-diagnostics.d.ts +5 -0
  989. package/dist/lib/search-index/qmd-exit-diagnostics.js +40 -0
  990. package/dist/lib/search-index/reindex-single-flight-flag.d.ts +5 -0
  991. package/dist/lib/search-index/reindex-single-flight-flag.js +8 -0
  992. package/dist/lib/service-manager/index.d.ts +42 -0
  993. package/dist/lib/service-manager/index.js +105 -0
  994. package/dist/lib/service-manager/launchd.d.ts +81 -0
  995. package/dist/lib/service-manager/launchd.js +212 -0
  996. package/dist/lib/service-manager/systemd.d.ts +19 -0
  997. package/dist/lib/service-manager/systemd.js +72 -0
  998. package/dist/lib/service-manager/types.d.ts +34 -0
  999. package/dist/lib/service-manager/types.js +26 -0
  1000. package/dist/lib/test-utils/isolated-flag-company-context.d.ts +3 -0
  1001. package/dist/lib/test-utils/isolated-flag-company-context.js +18 -0
  1002. package/dist/lib/work-context/bind-best.d.ts +66 -0
  1003. package/dist/lib/work-context/bind-best.js +344 -0
  1004. package/dist/lib/work-context/bind-calling-session.d.ts +26 -0
  1005. package/dist/lib/work-context/bind-calling-session.js +63 -0
  1006. package/dist/lib/work-context/company-rebind.d.ts +23 -0
  1007. package/dist/lib/work-context/company-rebind.js +59 -0
  1008. package/dist/lib/work-context/company.d.ts +22 -20
  1009. package/dist/lib/work-context/company.js +124 -40
  1010. package/dist/lib/work-context/config.d.ts +58 -11
  1011. package/dist/lib/work-context/config.js +334 -83
  1012. package/dist/lib/work-context/contract.d.ts +13 -0
  1013. package/dist/lib/work-context/contract.schema.json +3 -1
  1014. package/dist/lib/work-context/default-company.d.ts +43 -0
  1015. package/dist/lib/work-context/default-company.js +83 -0
  1016. package/dist/lib/work-context/outbox-quarantine-status-flag.d.ts +4 -0
  1017. package/dist/lib/work-context/outbox-quarantine-status-flag.js +7 -0
  1018. package/dist/lib/work-context/outbox.d.ts +27 -5
  1019. package/dist/lib/work-context/outbox.js +135 -6
  1020. package/dist/lib/work-context/prd-sync.d.ts +56 -0
  1021. package/dist/lib/work-context/prd-sync.js +197 -0
  1022. package/dist/lib/work-context/preflight-contract.d.ts +28 -0
  1023. package/dist/lib/work-context/preflight-contract.js +85 -0
  1024. package/dist/lib/work-context/prompt-rebind.d.ts +25 -0
  1025. package/dist/lib/work-context/prompt-rebind.js +85 -0
  1026. package/dist/lib/work-context/reconcile.d.ts +15 -0
  1027. package/dist/lib/work-context/reconcile.js +405 -29
  1028. package/dist/lib/work-context/state.d.ts +93 -10
  1029. package/dist/lib/work-context/state.js +342 -29
  1030. package/dist/lib/work-context/windows-acl.d.ts +123 -0
  1031. package/dist/lib/work-context/windows-acl.js +425 -0
  1032. package/dist/lib/workers-registry/index.js +62 -8
  1033. package/dist/lib/workers-registry/read.d.ts +15 -0
  1034. package/dist/lib/workers-registry/read.js +17 -0
  1035. package/dist/main.d.ts +32 -0
  1036. package/dist/main.js +273 -73
  1037. package/dist/native-fast-route.d.ts +7 -0
  1038. package/dist/native-fast-route.js +45 -0
  1039. package/dist/node-network-compat-core.d.ts +12 -0
  1040. package/dist/node-network-compat-core.js +41 -0
  1041. package/dist/node-network-compat-fast.d.ts +7 -0
  1042. package/dist/node-network-compat-fast.js +23 -0
  1043. package/dist/node-network-compat.d.ts +2 -30
  1044. package/dist/node-network-compat.js +4 -51
  1045. package/dist/node-preflight.d.ts +7 -1
  1046. package/dist/node-preflight.js +5 -5
  1047. package/dist/register-all.d.ts +4 -29
  1048. package/dist/register-all.js +4 -233
  1049. package/dist/run/discover-schemas.d.ts +2 -1
  1050. package/dist/run/env-graph-guard.d.ts +2 -2
  1051. package/dist/run/env-graph-guard.js +5 -2
  1052. package/dist/run/hq-plugin.d.ts +4 -0
  1053. package/dist/run/hq-plugin.js +36 -8
  1054. package/dist/secrets-env-fast-path.d.ts +5 -0
  1055. package/dist/secrets-env-fast-path.js +16 -0
  1056. package/dist/secrets-env-fast-route.d.ts +18 -0
  1057. package/dist/secrets-env-fast-route.js +54 -0
  1058. package/dist/sentry-before-send.js +80 -0
  1059. package/dist/sentry.d.ts +16 -4
  1060. package/dist/sentry.js +179 -18
  1061. package/dist/startup-registration.d.ts +26 -2
  1062. package/dist/startup-registration.js +116 -15
  1063. package/dist/utils/checkpoint-stamp-write-error.d.ts +28 -0
  1064. package/dist/utils/checkpoint-stamp-write-error.js +99 -0
  1065. package/dist/utils/cli-network-lifecycle.d.ts +4 -0
  1066. package/dist/utils/cli-network-lifecycle.js +11 -0
  1067. package/dist/utils/cli-telemetry.d.ts +75 -1
  1068. package/dist/utils/cli-telemetry.js +433 -7
  1069. package/dist/utils/client-health.d.ts +0 -4
  1070. package/dist/utils/client-health.js +2 -2
  1071. package/dist/utils/cognito-refresh-sentry.d.ts +3 -0
  1072. package/dist/utils/cognito-refresh-sentry.js +49 -0
  1073. package/dist/utils/cognito-session.d.ts +71 -0
  1074. package/dist/utils/cognito-session.js +481 -27
  1075. package/dist/utils/console-origin.d.ts +9 -0
  1076. package/dist/utils/console-origin.js +28 -0
  1077. package/dist/utils/contribution-table.d.ts +1 -1
  1078. package/dist/utils/core-eval-trigger.d.ts +4 -0
  1079. package/dist/utils/core-eval-trigger.js +88 -0
  1080. package/dist/utils/environmental-error.d.ts +18 -0
  1081. package/dist/utils/environmental-error.js +240 -7
  1082. package/dist/utils/exclusive-lock.d.ts +32 -0
  1083. package/dist/utils/exclusive-lock.js +75 -0
  1084. package/dist/utils/expected-cli-error.d.ts +2 -0
  1085. package/dist/utils/expected-cli-error.js +4 -0
  1086. package/dist/utils/fast-stream-errors.d.ts +12 -0
  1087. package/dist/utils/fast-stream-errors.js +18 -0
  1088. package/dist/utils/feedback-diagnostics.d.ts +2 -1
  1089. package/dist/utils/feedback-log-bundle.d.ts +51 -26
  1090. package/dist/utils/feedback-log-bundle.js +211 -31
  1091. package/dist/utils/feedback-logs.d.ts +18 -47
  1092. package/dist/utils/feedback-logs.js +50 -21
  1093. package/dist/utils/feedback-screenshots.d.ts +0 -1
  1094. package/dist/utils/feedback-screenshots.js +1 -1
  1095. package/dist/utils/files-browse-acl.d.ts +5 -0
  1096. package/dist/utils/files-browse-acl.js +11 -0
  1097. package/dist/utils/hq-core-yaml.d.ts +10 -0
  1098. package/dist/utils/hq-core-yaml.js +40 -0
  1099. package/dist/utils/hq-root-resolver.d.ts +13 -0
  1100. package/dist/utils/hq-root-resolver.js +103 -0
  1101. package/dist/utils/hq-roots.d.ts +25 -2
  1102. package/dist/utils/hq-roots.js +67 -7
  1103. package/dist/utils/incomplete-install-error.d.ts +87 -19
  1104. package/dist/utils/incomplete-install-error.js +319 -68
  1105. package/dist/utils/install-tree-torn.d.ts +260 -24
  1106. package/dist/utils/install-tree-torn.js +998 -51
  1107. package/dist/utils/large-file-guard.d.ts +0 -10
  1108. package/dist/utils/large-file-guard.js +1 -1
  1109. package/dist/utils/local-files-overview.d.ts +4 -8
  1110. package/dist/utils/local-files-overview.js +48 -7
  1111. package/dist/utils/login-provider.d.ts +7 -0
  1112. package/dist/utils/login-provider.js +34 -0
  1113. package/dist/utils/pack-contributions.d.ts +2 -14
  1114. package/dist/utils/pack-contributions.js +7 -44
  1115. package/dist/utils/package-root-diagnostics.d.ts +1 -1
  1116. package/dist/utils/people.d.ts +7 -11
  1117. package/dist/utils/people.js +5 -20
  1118. package/dist/utils/plan-gate-error.d.ts +52 -10
  1119. package/dist/utils/plan-gate-error.js +364 -41
  1120. package/dist/utils/qmd-model-download-error.d.ts +0 -8
  1121. package/dist/utils/qmd-model-download-error.js +1 -1
  1122. package/dist/utils/qmd-query-document-error.d.ts +0 -6
  1123. package/dist/utils/qmd-query-document-error.js +1 -1
  1124. package/dist/utils/redact-error-text.d.ts +0 -2
  1125. package/dist/utils/redact-error-text.js +3 -2
  1126. package/dist/utils/redact-url.d.ts +14 -0
  1127. package/dist/utils/redact-url.js +218 -0
  1128. package/dist/utils/run-bundled-script.d.ts +6 -0
  1129. package/dist/utils/run-bundled-script.js +117 -4
  1130. package/dist/utils/sandbox-runner-client.d.ts +2 -1
  1131. package/dist/utils/scaffold-fast-import-guard.d.ts +2 -0
  1132. package/dist/utils/scaffold-fast-import-guard.js +40 -0
  1133. package/dist/utils/scaffold-packlist-guard.d.ts +7 -0
  1134. package/dist/utils/scaffold-packlist-guard.js +23 -0
  1135. package/dist/utils/scaffold-sibling-references.d.ts +22 -0
  1136. package/dist/utils/scaffold-sibling-references.js +156 -0
  1137. package/dist/utils/secret-load-availability.d.ts +8 -0
  1138. package/dist/utils/secret-load-availability.js +54 -0
  1139. package/dist/utils/secrets-cache.d.ts +7 -3
  1140. package/dist/utils/secrets-cache.js +162 -14
  1141. package/dist/utils/self-update.d.ts +34 -1
  1142. package/dist/utils/self-update.js +660 -42
  1143. package/dist/utils/sentry-fingerprint.d.ts +23 -1
  1144. package/dist/utils/sentry-fingerprint.js +223 -31
  1145. package/dist/utils/staged-install.d.ts +34 -0
  1146. package/dist/utils/staged-install.js +346 -0
  1147. package/dist/utils/staged-npm-install.d.ts +16 -0
  1148. package/dist/utils/staged-npm-install.js +264 -0
  1149. package/dist/utils/sync-log-sources.d.ts +15 -0
  1150. package/dist/utils/sync-log-sources.js +36 -0
  1151. package/dist/utils/table-width.d.ts +7 -0
  1152. package/dist/utils/table-width.js +15 -0
  1153. package/dist/utils/team-upgrade.d.ts +1 -1
  1154. package/dist/utils/team-upgrade.js +4 -3
  1155. package/dist/utils/update-command-supervisor.cjs +247 -0
  1156. package/dist/utils/upload-author.d.ts +15 -0
  1157. package/dist/utils/upload-author.js +39 -0
  1158. package/dist/utils/vault-api.d.ts +21 -1
  1159. package/dist/utils/vault-api.js +251 -84
  1160. package/dist/utils/version-check.d.ts +11 -1
  1161. package/dist/utils/version-check.js +32 -3
  1162. package/dist/utils/version-gate.d.ts +101 -17
  1163. package/dist/utils/version-gate.js +645 -70
  1164. package/dist/utils/version-report.d.ts +27 -0
  1165. package/dist/utils/version-report.js +105 -0
  1166. package/dist/utils/windows-spawn.d.ts +6 -0
  1167. package/dist/utils/windows-spawn.js +37 -0
  1168. package/dist/version-request.d.ts +14 -0
  1169. package/dist/version-request.js +36 -0
  1170. package/package.json +20 -8
  1171. package/scripts/mesh-daemon-if-stale.mjs +20 -0
  1172. package/templates/reports/blank.md +3 -0
  1173. package/templates/reports/daily-digest.md +11 -0
  1174. package/templates/runbooks/update-report.md +21 -0
  1175. package/dist/commands/scaffold-fast.d.ts +0 -41
  1176. package/dist/commands/scaffold-fast.js +0 -57
  1177. package/dist/lib/work-context/index.d.ts +0 -25
  1178. package/dist/lib/work-context/index.js +0 -21
@@ -16,10 +16,16 @@ import { isAccessDeniedError, accessDeniedKeyOf, formatAccessDenied, } from "../
16
16
  import chalk from "chalk";
17
17
  import * as fs from "fs";
18
18
  import * as path from "path";
19
- import { share, sync, getStateDir, listJournals, loadCachedTokens, VaultClient, computePersonalVaultPaths, PERSONAL_VAULT_JOURNAL_SLUG, resolvePullScope, syncDoctor, } from "@indigoai-us/hq-cloud";
19
+ import { share, sync, getStateDir, listJournals, VaultClient, computePersonalVaultPaths, PERSONAL_VAULT_JOURNAL_SLUG, resolvePullScope, syncDoctor, } from "@indigoai-us/hq-cloud";
20
20
  import { DEFAULT_HQ_ROOT, ensureCognitoToken, buildVaultConfig, } from "../utils/cognito-session.js";
21
+ import { resolveUploadAuthor } from "../utils/upload-author.js";
21
22
  import { companyFolderExceedsThreshold, emitNarrowHint, isStrictRefusal, resolveBannerLevel, resolveNarrowHintPresentationLevel, resolveNarrowHintMinBytes, } from "../lib/narrow-hint-banner.js";
22
23
  import { beginSyncHealthReport, } from "../utils/client-health.js";
24
+ import { recordFirstWorkBearingSync } from "../lib/first-sync-next-step.js";
25
+ import { createPlanLimitRefusalTracker, describeRefusedCount, describeRefusedFiles, mergePlanLimitRefusals, renderPlanLimitRefusalLines, trackingProgressRecorder, } from "../lib/billing/plan-limit-refusals.js";
26
+ import { formatPlanGateError, planGateErrorFromVaultError, } from "../utils/plan-gate-error.js";
27
+ import { personalTargetedPushPathsEnabled } from "./personal-targeted-push-flag.js";
28
+ import { resolveExplicitPersonalPushPaths } from "./personal-targeted-push-paths.js";
23
29
  /**
24
30
  * Terminal-failure signal for the sync fanout runners. The runners
25
31
  * (`runPushAll` / `runPullAll` / `runPullPersonal` / `runNowSingle` /
@@ -33,18 +39,41 @@ import { beginSyncHealthReport, } from "../utils/client-health.js";
33
39
  */
34
40
  export class SyncExitError extends Error {
35
41
  code;
36
- constructor(code) {
42
+ /**
43
+ * The client-health outcome to record for this exit. A run whose only
44
+ * problem was a plan-limit refusal exits non-zero (it did not upload what
45
+ * was asked) but is not a sync failure: the engine worked and the refusal
46
+ * is plan state, so it must not count toward `consecutiveFailures`.
47
+ */
48
+ health;
49
+ constructor(code, opts = {}) {
37
50
  super(`sync command exit ${code}`);
38
51
  this.code = code;
39
52
  this.name = "SyncExitError";
53
+ this.health = opts.health ?? "failed";
40
54
  }
41
55
  }
56
+ async function ensureSyncCognitoToken() {
57
+ return ensureCognitoToken({
58
+ interactive: process.stdin.isTTY === true && process.stdout.isTTY === true,
59
+ });
60
+ }
42
61
  /**
43
62
  * Preserve the vault's typed write-scope refusal at the CLI boundary. This is
44
63
  * deliberately duck-typed so hq-cli remains compatible while hq-cloud and the
45
64
  * CLI are released independently.
46
65
  */
47
66
  export function formatSyncFailure(err) {
67
+ // A plan-limit refusal the runner threw (a 402 on the whole request) renders
68
+ // with the same reason, fix options and upgrade link as every other refusal.
69
+ const planGate = planGateErrorFromVaultError(err);
70
+ if (planGate) {
71
+ const refusedPath = typeof err.path === "string"
72
+ ? err.path
73
+ : undefined;
74
+ return (formatPlanGateError(planGate) +
75
+ (refusedPath ? `\nNot uploaded: ${refusedPath}` : ""));
76
+ }
48
77
  if (isAccessDeniedError(err)) {
49
78
  const key = accessDeniedKeyOf(err);
50
79
  const base = err instanceof Error ? err.message : String(err);
@@ -90,7 +119,12 @@ export async function withSyncHealthReport(run) {
90
119
  return result;
91
120
  }
92
121
  catch (err) {
93
- await health.failed();
122
+ if (err instanceof SyncExitError && err.health === "succeeded") {
123
+ await health.succeeded();
124
+ }
125
+ else {
126
+ await health.failed();
127
+ }
94
128
  if (err instanceof SyncExitError)
95
129
  process.exit(err.code);
96
130
  throw err;
@@ -115,11 +149,39 @@ export function scopeExcludedWarning(count) {
115
149
  * dropped files — helps debug ACL vs scope-excluded mismatches (feedback_7e9c535e).
116
150
  */
117
151
  export function scopeExcludedPrefixDetail(prefixSet) {
118
- if (!prefixSet || prefixSet.length === 0) {
152
+ // No client-side prefix scope applied: the server refused the paths one by
153
+ // one, and scopeExcludedLines' primary line already says so.
154
+ if (prefixSet === undefined)
155
+ return null;
156
+ if (prefixSet.length === 0) {
119
157
  return " Granted write prefixes: (none — shared-mode membership with no explicit grants)";
120
158
  }
121
159
  return ` Granted write prefixes: ${prefixSet.join(", ")}`;
122
160
  }
161
+ /**
162
+ * Every warning line for a push that dropped files, shared by `push`, `now`
163
+ * and `push --all`. With a client prefix scope the files fell outside the
164
+ * caller's write prefixes; without one (prefixSet undefined) the server
165
+ * refused them path by path — typically another member's child in a private
166
+ * folder foo/ — and grant advice would point the reader the wrong way.
167
+ */
168
+ export function scopeExcludedLines(count, prefixSet) {
169
+ if (count <= 0)
170
+ return [];
171
+ if (prefixSet === undefined) {
172
+ return [
173
+ `⚠ ${count} file(s) were NOT uploaded — the server refused them. ` +
174
+ `A common cause is a file someone else created in a private folder ` +
175
+ `(foo/): only its creator can change it. They were skipped, not ` +
176
+ `synced. Re-run with --json to list them.`,
177
+ ];
178
+ }
179
+ const lines = [scopeExcludedWarning(count)];
180
+ const detail = scopeExcludedPrefixDetail(prefixSet);
181
+ if (detail)
182
+ lines.push(detail);
183
+ return lines;
184
+ }
123
185
  /**
124
186
  * Resolve the `propagateDeletePolicy` for share() calls.
125
187
  *
@@ -388,6 +450,7 @@ export async function pushAll(options, deps) {
388
450
  companyUid: m.companyUid,
389
451
  shareOptions: {
390
452
  company: m.companyUid,
453
+ targetSlug: slug,
391
454
  hqRoot: options.hqRoot,
392
455
  paths: [path.join(options.hqRoot, "companies", slug)],
393
456
  skipUnchanged: true,
@@ -445,7 +508,13 @@ export async function pushAll(options, deps) {
445
508
  result.bytesUploaded += r.bytesUploaded;
446
509
  result.filesDeleted += r.filesDeleted;
447
510
  result.filesExcludedByScope += r.filesExcludedByScope;
448
- result.perCompany.push({ slug: entry.slug, result: r });
511
+ result.perCompany.push({
512
+ slug: entry.slug,
513
+ result: r,
514
+ ...(entry.shareOptions.prefixSet !== undefined
515
+ ? { prefixSet: entry.shareOptions.prefixSet }
516
+ : {}),
517
+ });
449
518
  }
450
519
  catch (err) {
451
520
  const message = formatSyncFailure(err);
@@ -455,6 +524,24 @@ export async function pushAll(options, deps) {
455
524
  }
456
525
  return result;
457
526
  }
527
+ /**
528
+ * Credentials `hq sync push` hands to share(). A pre-vended EntityContext
529
+ * (AppBar's `--creds-from-stdin` first push) cannot write under private
530
+ * folders directly, so it travels with the caller's vault config as
531
+ * `privateFolderVaultConfig`. share() takes exactly one of `vaultConfig` /
532
+ * `entityContext`.
533
+ */
534
+ export function pushShareCredentials(input) {
535
+ if (input.entityContext) {
536
+ return {
537
+ entityContext: input.entityContext,
538
+ ...(input.scopeVaultConfig
539
+ ? { privateFolderVaultConfig: input.scopeVaultConfig }
540
+ : {}),
541
+ };
542
+ }
543
+ return input.vaultConfig ? { vaultConfig: input.vaultConfig } : {};
544
+ }
458
545
  /**
459
546
  * Resolve the canonical person entity UID for the logged-in user. Used by
460
547
  * `hq sync {push,pull,now} --personal` to target the personal vault without
@@ -472,21 +559,15 @@ export async function resolveCanonicalPersonUid(vaultClient) {
472
559
  return pick.uid;
473
560
  }
474
561
  /**
475
- * Refuse `hq sync push --personal <path>` — the combination silently
476
- * bypasses `PERSONAL_VAULT_EXCLUDED_TOP_LEVEL` (which is only applied by
477
- * `computePersonalVaultPaths`), risking cross-scope upload of `companies/`,
478
- * `repos/`, `workspace/`, or `.git/` content to the personal vault. Real
479
- * incident (2026-05-21): a single command uploaded 196 `companies/{slug}/**`
480
- * objects to a personal vault before being killed. Cleanup required a
481
- * hand-rolled S3 sweep. Closes hq-cli#25.
482
- *
483
- * Refusal — not silent filtering — is intentional: explicit is better than
484
- * implicit guesswork, and the legitimate "I want to push a subset of my
485
- * personal vault" use case has a clean workaround (drop `--personal`, the
486
- * subset upload targets the active company via standard semantics).
562
+ * Keep `hq sync push --personal <path>` refused by default. Positional paths
563
+ * bypass `computePersonalVaultPaths` and can send excluded `companies/`,
564
+ * `repos/`, `workspace/`, or `.git/` content to the personal vault. The
565
+ * default-off targeted-paths gate allows the combination only after every
566
+ * path is realpath-normalized and checked against the computed personal scope
567
+ * and its file exclusions. Closes hq-cli#25.
487
568
  */
488
- export function assertNoPersonalPositionalPaths(opts, paths) {
489
- if (opts.personal && paths && paths.length > 0) {
569
+ export function assertNoPersonalPositionalPaths(opts, paths, targetedPersonalPathsEnabled = false) {
570
+ if (opts.personal && paths && paths.length > 0 && !targetedPersonalPathsEnabled) {
490
571
  throw new Error("`--personal` cannot be combined with explicit [paths]: " +
491
572
  "positional paths bypass the PERSONAL_VAULT_EXCLUDED_TOP_LEVEL " +
492
573
  "guard (skips .git/, companies/, repos/, workspace/), risking " +
@@ -616,6 +697,32 @@ async function resolveCliPullScope(client, companyRef, hqRoot) {
616
697
  }
617
698
  return resolvePullScope(client, companyUid, slug, hqRoot);
618
699
  }
700
+ /**
701
+ * The progress-snapshot label share()'s default recorder would use: the
702
+ * target's slug, or null for a personal-vault push. A pre-vended context
703
+ * carries its slug; otherwise the caller's company reference is the best the
704
+ * CLI knows before share() resolves it.
705
+ */
706
+ function shareProgressCompany(input) {
707
+ if (input.personalMode)
708
+ return null;
709
+ if (input.entityContext) {
710
+ return input.entityContext.uid.startsWith("prs_")
711
+ ? null
712
+ : input.entityContext.slug;
713
+ }
714
+ return input.companyRef ?? null;
715
+ }
716
+ /** Only a real slug builds a company billing link; a raw uid does not. */
717
+ function companySlugForBilling(label) {
718
+ return label && !/^(?:cmp|prs)_/.test(label) ? { companySlug: label } : {};
719
+ }
720
+ /** Print one push leg's refusal block under its row. */
721
+ function printPlanLimitRefusal(summary, indent = " ") {
722
+ for (const line of renderPlanLimitRefusalLines(summary, indent)) {
723
+ console.log(chalk.yellow(line));
724
+ }
725
+ }
619
726
  export function registerCloudCommands(program) {
620
727
  program
621
728
  .command("push")
@@ -682,7 +789,13 @@ export function registerCloudCommands(program) {
682
789
  // the fanout" — wired through to `pushAll.skipPersonal`. Outside
683
790
  // `--all` the flag has no effect (logged above as part of the
684
791
  // option's help text).
685
- await withSyncHealthReport(() => runPushAll(options.hqRoot, options.message, options.onConflict, options.personal === false));
792
+ await withSyncHealthReport(async () => {
793
+ const refused = await runPushAll(options.hqRoot, options.message, options.onConflict, options.personal === false);
794
+ // A plan-limit refusal is not a sync failure, but the push did
795
+ // not upload everything it was asked to: exit non-zero.
796
+ if (refused)
797
+ throw new SyncExitError(1, { health: "succeeded" });
798
+ });
686
799
  return;
687
800
  }
688
801
  const jsonMode = options.json === true;
@@ -698,6 +811,7 @@ export function registerCloudCommands(program) {
698
811
  // Assigned right before the sync engine runs, so option-validation
699
812
  // failures never count as a sync attempt (US-003).
700
813
  let syncHealth;
814
+ let explicitPersonalPaths;
701
815
  try {
702
816
  if (options.personal && options.credsFromStdin) {
703
817
  throw new Error("`--personal` cannot be combined with --creds-from-stdin: " +
@@ -706,7 +820,11 @@ export function registerCloudCommands(program) {
706
820
  "to have already resolved entity + credentials. Pick one.");
707
821
  }
708
822
  // Closes hq-cli#25 — see `assertNoPersonalPositionalPaths` doc-block.
709
- assertNoPersonalPositionalPaths(options, paths);
823
+ const targetedPersonalPathsEnabled = Boolean(options.personal && paths && paths.length > 0 && personalTargetedPushPathsEnabled());
824
+ assertNoPersonalPositionalPaths(options, paths, targetedPersonalPathsEnabled);
825
+ if (targetedPersonalPathsEnabled) {
826
+ explicitPersonalPaths = resolveExplicitPersonalPushPaths(options.hqRoot, paths);
827
+ }
710
828
  log(chalk.bold("\nHQ Sync — Push"));
711
829
  log(` HQ root: ${options.hqRoot}`);
712
830
  // Resolve credentials. Two paths:
@@ -715,7 +833,7 @@ export function registerCloudCommands(program) {
715
833
  // 2. default: vend via cached Cognito session (the human CLI path).
716
834
  let entityContext;
717
835
  let vaultConfig;
718
- /** Vault API config for membership/grant scope lookups. Set even on the pre-vended `--creds-from-stdin` path — share() accepts entityContext OR vaultConfig, not both. */
836
+ /** Vault API config for membership/grant scope lookups and, on the pre-vended `--creds-from-stdin` path, private-folder uploads. */
719
837
  let scopeVaultConfig;
720
838
  if (options.credsFromStdin) {
721
839
  if (process.stdin.isTTY) {
@@ -732,11 +850,11 @@ export function registerCloudCommands(program) {
732
850
  }
733
851
  // Upload creds are pre-vended in entityContext, but prefix filtering
734
852
  // still needs vault-service membership/grant resolution.
735
- const accessToken = await ensureCognitoToken();
853
+ const accessToken = await ensureSyncCognitoToken();
736
854
  scopeVaultConfig = buildVaultConfig(accessToken);
737
855
  }
738
856
  else {
739
- const accessToken = await ensureCognitoToken();
857
+ const accessToken = await ensureSyncCognitoToken();
740
858
  vaultConfig = buildVaultConfig(accessToken);
741
859
  scopeVaultConfig = vaultConfig;
742
860
  }
@@ -764,11 +882,13 @@ export function registerCloudCommands(program) {
764
882
  // Otherwise preserve the historical "default to cwd" semantics so
765
883
  // `hq sync push <file>` and bare `hq sync push` from inside the
766
884
  // company tree both work as before.
767
- const targetPaths = paths && paths.length > 0
768
- ? paths
769
- : options.personal
770
- ? computePersonalVaultPaths(options.hqRoot)
771
- : [process.cwd()];
885
+ const targetPaths = explicitPersonalPaths
886
+ ? explicitPersonalPaths
887
+ : paths && paths.length > 0
888
+ ? paths
889
+ : options.personal
890
+ ? computePersonalVaultPaths(options.hqRoot)
891
+ : [process.cwd()];
772
892
  log(` Company: ${options.personal
773
893
  ? `(personal: ${targetCompany})`
774
894
  : (options.company ?? "(from .hq/config.json or stdin)")}`);
@@ -785,33 +905,50 @@ export function registerCloudCommands(program) {
785
905
  // every row renders `—`. Resolved best-effort from the cached
786
906
  // idToken — pre-vended `--creds-from-stdin` paths still get author
787
907
  // attribution as long as the caller is logged in locally.
788
- const author = resolveUploadAuthorFromCache();
908
+ const author = resolveUploadAuthor();
789
909
  let pushPrefixSet;
790
910
  if (!personalMode && scopeVaultConfig) {
791
911
  const scopeClient = new VaultClient(scopeVaultConfig);
792
912
  const scope = await resolveCliPullScope(scopeClient, targetCompany, options.hqRoot);
793
913
  pushPrefixSet = scope?.prefixSet;
794
914
  }
915
+ // Collect plan-limit refusals from the runner's events through the
916
+ // progress-recorder seam, which (unlike onEvent) leaves share()'s own
917
+ // console output untouched. The snapshot label mirrors share()'s
918
+ // default recorder: the target slug, or null for the personal vault.
919
+ const progressCompany = shareProgressCompany({
920
+ personalMode,
921
+ entityContext,
922
+ companyRef: targetCompany ?? readActiveCompany(options.hqRoot),
923
+ });
924
+ const planLimitTracker = createPlanLimitRefusalTracker(companySlugForBilling(progressCompany));
795
925
  syncHealth = beginSyncHealthReport();
796
926
  const result = await share({
797
927
  paths: targetPaths,
798
928
  company: targetCompany,
799
929
  message: options.message,
800
930
  onConflict: options.onConflict,
801
- vaultConfig,
802
- entityContext,
931
+ ...pushShareCredentials({
932
+ entityContext,
933
+ vaultConfig,
934
+ scopeVaultConfig,
935
+ }),
803
936
  hqRoot: options.hqRoot,
804
937
  onEvent,
938
+ progressRecorder: trackingProgressRecorder(planLimitTracker, progressCompany),
805
939
  ...(personalMode ? { personalMode: true } : {}),
806
940
  ...(journalSlug !== undefined ? { journalSlug } : {}),
807
941
  ...(author ? { author } : {}),
808
942
  ...(pushPrefixSet !== undefined ? { prefixSet: pushPrefixSet } : {}),
809
943
  });
944
+ const planLimitRefused = planLimitTracker.summary();
810
945
  if (jsonMode) {
811
946
  // Synthetic terminal event so subprocess consumers can read final
812
947
  // counts without summing per-file events. Distinguished from
813
948
  // SyncProgressEvent by `type:"complete"` (not in the share()
814
- // event schema — added at the CLI seam).
949
+ // event schema — added at the CLI seam). `planLimitRefused` is
950
+ // additive: present only when a plan limit refused new files, so a
951
+ // consumer never has to infer a refusal from the counts.
815
952
  emitJson({
816
953
  type: "complete",
817
954
  filesUploaded: result.filesUploaded,
@@ -819,6 +956,7 @@ export function registerCloudCommands(program) {
819
956
  filesSkipped: result.filesSkipped,
820
957
  conflictPaths: result.conflictPaths,
821
958
  aborted: result.aborted,
959
+ ...(planLimitRefused ? { planLimitRefused } : {}),
822
960
  });
823
961
  }
824
962
  if (result.aborted) {
@@ -826,13 +964,37 @@ export function registerCloudCommands(program) {
826
964
  await syncHealth.failed();
827
965
  process.exit(1);
828
966
  }
967
+ recordFirstWorkBearingSync({
968
+ filesUploaded: result.filesUploaded,
969
+ filesDeleted: result.filesDeleted,
970
+ aborted: result.aborted,
971
+ });
972
+ if (planLimitRefused) {
973
+ // Never a success line over a refusal: say what was pushed, what
974
+ // was refused and how to fix it, then exit non-zero. The sync
975
+ // itself worked, so client health records a success. `--json`
976
+ // callers read `planLimitRefused` on the complete event instead
977
+ // and keep their exit status.
978
+ log(chalk.yellow(`\n⚠ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ` +
979
+ `${result.filesSkipped} skipped), but ${describeRefusedFiles(planLimitRefused)} ` +
980
+ "refused by your plan limit."));
981
+ for (const line of renderPlanLimitRefusalLines(planLimitRefused)) {
982
+ log(chalk.yellow(line));
983
+ }
984
+ for (const line of scopeExcludedLines(result.filesExcludedByScope, pushPrefixSet)) {
985
+ log(chalk.yellow(line));
986
+ }
987
+ await syncHealth.succeeded();
988
+ if (!jsonMode)
989
+ process.exit(1);
990
+ return;
991
+ }
829
992
  if (result.filesExcludedByScope > 0) {
830
993
  log(chalk.yellow(`\n⚠ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ` +
831
994
  `${result.filesSkipped} skipped, ${result.filesExcludedByScope} scope-excluded)`));
832
- log(chalk.yellow(scopeExcludedWarning(result.filesExcludedByScope)));
833
- const prefixDetail = scopeExcludedPrefixDetail(pushPrefixSet);
834
- if (prefixDetail)
835
- log(chalk.yellow(prefixDetail));
995
+ for (const line of scopeExcludedLines(result.filesExcludedByScope, pushPrefixSet)) {
996
+ log(chalk.yellow(line));
997
+ }
836
998
  }
837
999
  else {
838
1000
  log(chalk.green(`\n✓ Pushed ${result.filesUploaded} file(s) (${formatBytes(result.bytesUploaded)}, ${result.filesSkipped} skipped)`));
@@ -907,7 +1069,7 @@ export function registerCloudCommands(program) {
907
1069
  console.log(chalk.bold("\nHQ Sync — Pull"));
908
1070
  console.log(` HQ root: ${options.hqRoot}`);
909
1071
  console.log(` Company: ${options.company ?? "(from .hq/config.json)"}\n`);
910
- const accessToken = await ensureCognitoToken();
1072
+ const accessToken = await ensureSyncCognitoToken();
911
1073
  const vaultConfig = buildVaultConfig(accessToken);
912
1074
  // US-011 (2026-05-21 fix): resolve the caller's sync-config for
913
1075
  // the targeted membership BEFORE the pull, so we can (a) emit the
@@ -971,6 +1133,10 @@ export function registerCloudCommands(program) {
971
1133
  await syncHealth.failed();
972
1134
  process.exit(1);
973
1135
  }
1136
+ recordFirstWorkBearingSync({
1137
+ filesDownloaded: result.filesDownloaded,
1138
+ aborted: result.aborted,
1139
+ });
974
1140
  console.log(chalk.green(`\n✓ Pulled ${result.filesDownloaded} file(s) (${formatBytes(result.bytesDownloaded)}, ${result.filesSkipped} skipped, ${result.conflicts} conflicts)`));
975
1141
  // Emit the hint banner after success so it appears alongside the
976
1142
  // summary line. Mirrors the wiring in runPullAll and runNowSingle.
@@ -996,8 +1162,18 @@ export function registerCloudCommands(program) {
996
1162
  .command("status")
997
1163
  .description("Show local sync journal summary")
998
1164
  .option("--hq-root <path>", `Local HQ tree root (default: ${DEFAULT_HQ_ROOT})`, DEFAULT_HQ_ROOT)
999
- .action((options) => {
1165
+ .action((options, command) => {
1166
+ const explicitHqRoot = command.getOptionValueSource("hqRoot") === "cli";
1000
1167
  try {
1168
+ const hqRoot = options.hqRoot;
1169
+ if (explicitHqRoot) {
1170
+ if (!fs.existsSync(hqRoot)) {
1171
+ throw new Error(`HQ root does not exist: ${hqRoot}`);
1172
+ }
1173
+ if (!fs.statSync(hqRoot).isDirectory()) {
1174
+ throw new Error(`HQ root is not a directory: ${hqRoot}`);
1175
+ }
1176
+ }
1001
1177
  // The engine SHARDS the journal by slug — the personal-vault fanout
1002
1178
  // slot, one shard per cloud company, and the legacy "personal" shard.
1003
1179
  // Enumerate EVERY shard the engine can write (via the engine's own
@@ -1006,13 +1182,7 @@ export function registerCloudCommands(program) {
1006
1182
  // looked at `sync-journal._Users_<user>_hq.json` — a slug the engine
1007
1183
  // never writes — and printed "No sync journal yet" right after a
1008
1184
  // successful sync (feedback_9fbf1f82 / feedback_46288b7b).
1009
- const journals = listJournals();
1010
- if (journals.length === 0) {
1011
- console.log(chalk.dim("No sync journal yet — run `hq sync now`, `hq sync push`, or `hq sync pull` to create one."));
1012
- console.log(chalk.dim(` Looked in: ${getStateDir()} (sync-journal.*.json)`));
1013
- return;
1014
- }
1015
- const configPath = path.join(options.hqRoot, ".hq", "config.json");
1185
+ const configPath = path.join(hqRoot, ".hq", "config.json");
1016
1186
  let activeCompany;
1017
1187
  if (fs.existsSync(configPath)) {
1018
1188
  try {
@@ -1023,13 +1193,22 @@ export function registerCloudCommands(program) {
1023
1193
  // ignore
1024
1194
  }
1025
1195
  }
1196
+ // Journals live in the machine-wide state directory, independently
1197
+ // of the HQ content root selected for this status display.
1198
+ const stateDir = getStateDir();
1199
+ const journals = listJournals();
1026
1200
  let grandFiles = 0;
1027
1201
  let grandBytes = 0;
1028
1202
  let grandLastSync = "";
1029
1203
  console.log(chalk.bold("\nHQ Sync — Status"));
1030
- console.log(` HQ root: ${options.hqRoot}`);
1204
+ console.log(` HQ root: ${hqRoot}`);
1031
1205
  console.log(` Active company: ${activeCompany ?? chalk.dim("(none)")}`);
1206
+ console.log(` State dir: ${stateDir}`);
1032
1207
  console.log(` Journals: ${journals.length}`);
1208
+ if (journals.length === 0) {
1209
+ console.log(chalk.dim("No sync journal yet — run `hq sync now`, `hq sync push`, or `hq sync pull` to create one."));
1210
+ return;
1211
+ }
1033
1212
  for (const j of journals) {
1034
1213
  const entries = Object.entries(j.journal.files ?? {});
1035
1214
  // Tombstones record removed files — exclude them from "tracked".
@@ -1194,7 +1373,7 @@ async function runPullAll(hqRoot, onConflict, modeAllOverride, skipPersonal, for
1194
1373
  console.log("");
1195
1374
  let result;
1196
1375
  try {
1197
- const accessToken = await ensureCognitoToken();
1376
+ const accessToken = await ensureSyncCognitoToken();
1198
1377
  const vaultConfig = buildVaultConfig(accessToken);
1199
1378
  const realClient = new VaultClient(vaultConfig);
1200
1379
  const adapter = {
@@ -1270,6 +1449,14 @@ async function runPullAll(hqRoot, onConflict, modeAllOverride, skipPersonal, for
1270
1449
  `(${formatBytes(result.bytesDownloaded)}) across ${result.attempted} ` +
1271
1450
  `target(s); ${result.conflicts} conflict(s); ${errored} error(s)`;
1272
1451
  console.log(errored > 0 ? chalk.yellow(summary) : chalk.green(summary));
1452
+ for (const row of result.perCompany) {
1453
+ if (row.result && !row.error) {
1454
+ recordFirstWorkBearingSync({
1455
+ filesDownloaded: row.result.filesDownloaded,
1456
+ aborted: row.result.aborted,
1457
+ });
1458
+ }
1459
+ }
1273
1460
  if (errored > 0)
1274
1461
  throw new SyncExitError(1);
1275
1462
  }
@@ -1279,7 +1466,7 @@ export async function runPullPersonal(hqRoot, onConflict) {
1279
1466
  console.log(` HQ root: ${hqRoot}`);
1280
1467
  console.log(` Strategy: ${onConflict ?? "(interactive)"}\n`);
1281
1468
  try {
1282
- const accessToken = await ensureCognitoToken();
1469
+ const accessToken = await ensureSyncCognitoToken();
1283
1470
  const vaultConfig = buildVaultConfig(accessToken);
1284
1471
  const client = new VaultClient(vaultConfig);
1285
1472
  const personalUid = await resolveCanonicalPersonUid({
@@ -1300,6 +1487,10 @@ export async function runPullPersonal(hqRoot, onConflict) {
1300
1487
  throw new SyncExitError(1);
1301
1488
  }
1302
1489
  console.log(chalk.green(`\n✓ Pulled ${result.filesDownloaded} file(s) (${formatBytes(result.bytesDownloaded)}, ${result.filesSkipped} skipped, ${result.conflicts} conflicts)`));
1490
+ recordFirstWorkBearingSync({
1491
+ filesDownloaded: result.filesDownloaded,
1492
+ aborted: result.aborted,
1493
+ });
1303
1494
  }
1304
1495
  catch (err) {
1305
1496
  if (err instanceof SyncExitError)
@@ -1308,6 +1499,11 @@ export async function runPullPersonal(hqRoot, onConflict) {
1308
1499
  throw new SyncExitError(1);
1309
1500
  }
1310
1501
  }
1502
+ /**
1503
+ * Run `push --all` and print its per-target report. Returns the files a plan
1504
+ * limit refused across every target (null when none were), so the caller can
1505
+ * refuse to report success; hard failures still throw {@link SyncExitError}.
1506
+ */
1311
1507
  async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
1312
1508
  console.log(chalk.bold("\nHQ Sync — Push (all)"));
1313
1509
  console.log(` HQ root: ${hqRoot}`);
@@ -1318,10 +1514,10 @@ async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
1318
1514
  console.log("");
1319
1515
  let result;
1320
1516
  try {
1321
- const accessToken = await ensureCognitoToken();
1517
+ const accessToken = await ensureSyncCognitoToken();
1322
1518
  const vaultConfig = buildVaultConfig(accessToken);
1323
1519
  const realClient = new VaultClient(vaultConfig);
1324
- const author = resolveUploadAuthorFromCache();
1520
+ const author = resolveUploadAuthor();
1325
1521
  const adapter = {
1326
1522
  listMyMemberships: () => realClient.listMyMemberships(),
1327
1523
  listPersonEntities: () => realClient.entity.listByType("person"),
@@ -1342,31 +1538,39 @@ async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
1342
1538
  }, {
1343
1539
  vaultClient: adapter,
1344
1540
  resolveScope: (companyUid, slug) => resolvePullScope(realClient, companyUid, slug, hqRoot),
1345
- share: (opts) => share({
1346
- paths: opts.paths,
1347
- company: opts.company,
1348
- vaultConfig,
1349
- hqRoot: opts.hqRoot,
1350
- ...(opts.onConflict ? { onConflict: opts.onConflict } : {}),
1351
- ...(opts.personalMode !== undefined
1352
- ? { personalMode: opts.personalMode }
1353
- : {}),
1354
- ...(opts.journalSlug !== undefined
1355
- ? { journalSlug: opts.journalSlug }
1356
- : {}),
1357
- ...(opts.message !== undefined ? { message: opts.message } : {}),
1358
- ...(opts.skipUnchanged !== undefined
1359
- ? { skipUnchanged: opts.skipUnchanged }
1360
- : {}),
1361
- ...(opts.propagateDeletes !== undefined
1362
- ? { propagateDeletes: opts.propagateDeletes }
1363
- : {}),
1364
- ...(opts.propagateDeletePolicy !== undefined
1365
- ? { propagateDeletePolicy: opts.propagateDeletePolicy }
1366
- : {}),
1367
- ...(opts.prefixSet !== undefined ? { prefixSet: opts.prefixSet } : {}),
1368
- ...(author ? { author } : {}),
1369
- }),
1541
+ share: async (opts) => {
1542
+ const progressCompany = opts.personalMode
1543
+ ? null
1544
+ : (opts.targetSlug ?? opts.company);
1545
+ const tracker = createPlanLimitRefusalTracker(companySlugForBilling(progressCompany));
1546
+ const shareResult = await share({
1547
+ paths: opts.paths,
1548
+ company: opts.company,
1549
+ vaultConfig,
1550
+ hqRoot: opts.hqRoot,
1551
+ progressRecorder: trackingProgressRecorder(tracker, progressCompany),
1552
+ ...(opts.onConflict ? { onConflict: opts.onConflict } : {}),
1553
+ ...(opts.personalMode !== undefined
1554
+ ? { personalMode: opts.personalMode }
1555
+ : {}),
1556
+ ...(opts.journalSlug !== undefined
1557
+ ? { journalSlug: opts.journalSlug }
1558
+ : {}),
1559
+ ...(opts.message !== undefined ? { message: opts.message } : {}),
1560
+ ...(opts.skipUnchanged !== undefined
1561
+ ? { skipUnchanged: opts.skipUnchanged }
1562
+ : {}),
1563
+ ...(opts.propagateDeletes !== undefined
1564
+ ? { propagateDeletes: opts.propagateDeletes }
1565
+ : {}),
1566
+ ...(opts.propagateDeletePolicy !== undefined
1567
+ ? { propagateDeletePolicy: opts.propagateDeletePolicy }
1568
+ : {}),
1569
+ ...(opts.prefixSet !== undefined ? { prefixSet: opts.prefixSet } : {}),
1570
+ ...(author ? { author } : {}),
1571
+ });
1572
+ return { ...shareResult, planLimit: tracker.summary() };
1573
+ },
1370
1574
  });
1371
1575
  }
1372
1576
  catch (err) {
@@ -1375,35 +1579,62 @@ async function runPushAll(hqRoot, message, onConflict, skipPersonal) {
1375
1579
  // terminal sync_failure before exiting on our behalf.
1376
1580
  throw new SyncExitError(1);
1377
1581
  }
1582
+ let refused = null;
1583
+ let refusedTargets = 0;
1378
1584
  for (const row of result.perCompany) {
1379
1585
  if (row.error) {
1380
1586
  console.log(chalk.red(` ✗ ${row.slug}: ${row.error}`));
1381
1587
  }
1382
1588
  else if (row.result) {
1383
1589
  const r = row.result;
1384
- const status = r.aborted || r.filesExcludedByScope > 0
1590
+ const legRefused = r.planLimit ?? null;
1591
+ const status = r.aborted || r.filesExcludedByScope > 0 || legRefused
1385
1592
  ? chalk.yellow("⚠")
1386
1593
  : chalk.green("✓");
1387
1594
  console.log(` ${status} ${row.slug}: ${r.filesUploaded} file(s), ` +
1388
1595
  `${formatBytes(r.bytesUploaded)}, ${r.filesSkipped} skipped, ` +
1389
1596
  `${r.filesDeleted} deleted, ${r.filesExcludedByScope} scope-excluded, ` +
1390
1597
  `${r.conflictPaths.length} conflict(s)` +
1391
- (r.aborted ? " — aborted" : ""));
1598
+ (r.aborted ? " — aborted" : "") +
1599
+ (legRefused
1600
+ ? ` — ${describeRefusedCount(legRefused)} refused by plan limit`
1601
+ : ""));
1602
+ if (legRefused) {
1603
+ printPlanLimitRefusal(legRefused);
1604
+ refused = mergePlanLimitRefusals(refused, legRefused);
1605
+ refusedTargets += 1;
1606
+ }
1392
1607
  }
1393
1608
  }
1394
1609
  const errored = result.errors.length;
1395
1610
  const summary = `\nPushed ${result.filesUploaded} file(s) ` +
1396
1611
  `(${formatBytes(result.bytesUploaded)}) across ${result.attempted} ` +
1397
1612
  `target(s); ${result.filesDeleted} deleted; ${errored} error(s); ` +
1398
- `${result.filesExcludedByScope} scope-excluded`;
1399
- console.log(errored > 0 || result.filesExcludedByScope > 0
1613
+ `${result.filesExcludedByScope} scope-excluded` +
1614
+ (refusedTargets > 0
1615
+ ? `; new files refused by a plan limit on ${refusedTargets} target(s)`
1616
+ : "");
1617
+ console.log(errored > 0 || result.filesExcludedByScope > 0 || refusedTargets > 0
1400
1618
  ? chalk.yellow(summary)
1401
1619
  : chalk.green(summary));
1402
- if (result.filesExcludedByScope > 0) {
1403
- console.log(chalk.yellow(scopeExcludedWarning(result.filesExcludedByScope)));
1620
+ for (const row of result.perCompany) {
1621
+ if (row.result && !row.error) {
1622
+ recordFirstWorkBearingSync({
1623
+ filesUploaded: row.result.filesUploaded,
1624
+ filesDeleted: row.result.filesDeleted,
1625
+ aborted: row.result.aborted,
1626
+ });
1627
+ }
1628
+ }
1629
+ for (const row of result.perCompany) {
1630
+ const excluded = row.result?.filesExcludedByScope ?? 0;
1631
+ for (const line of scopeExcludedLines(excluded, row.prefixSet)) {
1632
+ console.log(chalk.yellow(`${row.slug}: ${line}`));
1633
+ }
1404
1634
  }
1405
1635
  if (errored > 0)
1406
1636
  throw new SyncExitError(1);
1637
+ return refused;
1407
1638
  }
1408
1639
  async function runNowSingle(hqRoot, company, personal, message, onConflict, modeAllOverride, forceScopeShrink) {
1409
1640
  console.log(chalk.bold("\nHQ Sync — Now"));
@@ -1411,9 +1642,9 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
1411
1642
  console.log(` Target: ${personal ? "(personal)" : (company ?? "(active company)")}`);
1412
1643
  console.log(` Strategy: ${onConflict ?? "(interactive)"}\n`);
1413
1644
  try {
1414
- const accessToken = await ensureCognitoToken();
1645
+ const accessToken = await ensureSyncCognitoToken();
1415
1646
  const vaultConfig = buildVaultConfig(accessToken);
1416
- const author = resolveUploadAuthorFromCache();
1647
+ const author = resolveUploadAuthor();
1417
1648
  // Resolve the target. For --personal, look up the canonical person and
1418
1649
  // route paths/journal through personalMode. Otherwise use the company arg
1419
1650
  // (or fall back to the active company inside share()/sync()).
@@ -1421,6 +1652,7 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
1421
1652
  let personalMode = false;
1422
1653
  let journalSlug;
1423
1654
  let pushPaths;
1655
+ let pushSlug;
1424
1656
  if (personal) {
1425
1657
  const client = new VaultClient(vaultConfig);
1426
1658
  targetCompany = await resolveCanonicalPersonUid({
@@ -1445,6 +1677,7 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
1445
1677
  "Use --company <slug>, --personal, or set up .hq/config.json.");
1446
1678
  }
1447
1679
  pushPaths = [path.join(hqRoot, "companies", slug)];
1680
+ pushSlug = slug;
1448
1681
  }
1449
1682
  // Push first so the subsequent pull doesn't redownload files we were
1450
1683
  // about to broadcast (matches hq-sync-runner ordering).
@@ -1455,11 +1688,14 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
1455
1688
  const pushScope = await resolveCliPullScope(scopeClient, targetCompany, hqRoot);
1456
1689
  nowPushPrefixSet = pushScope?.prefixSet;
1457
1690
  }
1691
+ const pushProgressCompany = personalMode ? null : (pushSlug ?? null);
1692
+ const planLimitTracker = createPlanLimitRefusalTracker(companySlugForBilling(pushProgressCompany));
1458
1693
  const pushResult = await share({
1459
1694
  paths: pushPaths,
1460
1695
  company: targetCompany,
1461
1696
  vaultConfig,
1462
1697
  hqRoot,
1698
+ progressRecorder: trackingProgressRecorder(planLimitTracker, pushProgressCompany),
1463
1699
  skipUnchanged: true,
1464
1700
  propagateDeletes: true,
1465
1701
  propagateDeletePolicy: resolveDeletePolicy(),
@@ -1470,23 +1706,33 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
1470
1706
  ...(author ? { author } : {}),
1471
1707
  ...(nowPushPrefixSet !== undefined ? { prefixSet: nowPushPrefixSet } : {}),
1472
1708
  });
1473
- const pushStatus = pushResult.aborted || pushResult.filesExcludedByScope > 0
1709
+ const pushRefused = planLimitTracker.summary();
1710
+ const pushStatus = pushResult.aborted || pushResult.filesExcludedByScope > 0 || pushRefused
1474
1711
  ? chalk.yellow("⚠")
1475
1712
  : chalk.green("✓");
1476
1713
  console.log(` ${pushStatus} ` +
1477
1714
  `${pushResult.filesUploaded} uploaded, ${pushResult.filesSkipped} skipped, ` +
1478
1715
  `${pushResult.filesDeleted} deleted, ${pushResult.filesExcludedByScope} scope-excluded` +
1479
- (pushResult.aborted ? " — aborted" : ""));
1716
+ (pushResult.aborted ? " — aborted" : "") +
1717
+ (pushRefused
1718
+ ? ` — ${describeRefusedCount(pushRefused)} refused by plan limit`
1719
+ : ""));
1720
+ if (pushRefused)
1721
+ printPlanLimitRefusal(pushRefused, " ");
1480
1722
  if (pushResult.filesExcludedByScope > 0) {
1481
- console.log(chalk.yellow(scopeExcludedWarning(pushResult.filesExcludedByScope)));
1482
- const prefixDetail = scopeExcludedPrefixDetail(nowPushPrefixSet);
1483
- if (prefixDetail)
1484
- console.log(chalk.yellow(prefixDetail));
1723
+ for (const line of scopeExcludedLines(pushResult.filesExcludedByScope, nowPushPrefixSet)) {
1724
+ console.log(chalk.yellow(line));
1725
+ }
1485
1726
  }
1486
1727
  if (pushResult.aborted) {
1487
1728
  console.log(chalk.yellow("\n⚠ Sync now aborted on push leg; pull skipped."));
1488
1729
  throw new SyncExitError(1);
1489
1730
  }
1731
+ recordFirstWorkBearingSync({
1732
+ filesUploaded: pushResult.filesUploaded,
1733
+ filesDeleted: pushResult.filesDeleted,
1734
+ aborted: pushResult.aborted,
1735
+ });
1490
1736
  // US-011: resolve membership sync-config so we can either nudge an
1491
1737
  // all-mode owner or refuse the pull when strict-mode is on. Skipped
1492
1738
  // for personal targets (personal vault has no membership row) and
@@ -1578,6 +1824,10 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
1578
1824
  console.log(chalk.yellow("\n⚠ Sync now finished with pull leg aborted."));
1579
1825
  throw new SyncExitError(1);
1580
1826
  }
1827
+ recordFirstWorkBearingSync({
1828
+ filesDownloaded: pullResult.filesDownloaded,
1829
+ aborted: pullResult.aborted,
1830
+ });
1581
1831
  // Emit the hint banner after a successful pull so it appears at the
1582
1832
  // bottom of the summary rather than mid-stream. Size-gated: only a large
1583
1833
  // local folder is nudged.
@@ -1588,6 +1838,12 @@ async function runNowSingle(hqRoot, company, personal, message, onConflict, mode
1588
1838
  level: bannerLevel,
1589
1839
  });
1590
1840
  }
1841
+ if (pushRefused) {
1842
+ // The pull ran, but the push did not upload everything: no success line.
1843
+ console.log(chalk.yellow(`\n⚠ Sync now finished, but ${describeRefusedFiles(pushRefused)} ` +
1844
+ "refused by your plan limit (listed above)."));
1845
+ throw new SyncExitError(1, { health: "succeeded" });
1846
+ }
1591
1847
  console.log(chalk.green("\n✓ Sync now complete"));
1592
1848
  }
1593
1849
  catch (err) {
@@ -1609,12 +1865,22 @@ async function runNowAll(hqRoot, message, onConflict, modeAllOverride, skipPerso
1609
1865
  // so the per-target rendering, error isolation, and exit codes are
1610
1866
  // identical to running `push --all` then `pull --all` back-to-back.
1611
1867
  console.log(chalk.dim("→ push --all"));
1612
- await runPushAll(hqRoot, message, onConflict, skipPersonal);
1868
+ const refused = await runPushAll(hqRoot, message, onConflict, skipPersonal);
1613
1869
  console.log(chalk.dim("\n→ pull --all"));
1614
1870
  // US-011: forward --mode-all so the strict refusal applies to the
1615
1871
  // pull leg (push doesn't need a narrow-hint — the narrow ritual is
1616
1872
  // pull-side).
1617
1873
  await runPullAll(hqRoot, onConflict, modeAllOverride, skipPersonal, forceScopeShrink);
1874
+ if (refused) {
1875
+ // A plan-limit refusal does not stop the pull, but the run must not end
1876
+ // looking like a clean sync: say so last and exit non-zero.
1877
+ console.log(chalk.yellow(`\n⚠ Sync finished, but ${describeRefusedFiles(refused)} refused ` +
1878
+ "by your plan limit (listed under push --all above)."));
1879
+ if (refused.upgradeUrl) {
1880
+ console.log(chalk.yellow(` Upgrade: ${refused.upgradeUrl}`));
1881
+ }
1882
+ throw new SyncExitError(1, { health: "succeeded" });
1883
+ }
1618
1884
  }
1619
1885
  /**
1620
1886
  * Best-effort read of the active company slug from `<hqRoot>/.hq/config.json`.
@@ -1668,35 +1934,4 @@ async function readAllStdin() {
1668
1934
  }
1669
1935
  return Buffer.concat(chunks).toString("utf8");
1670
1936
  }
1671
- /**
1672
- * Resolve the syncing user's `UploadAuthor` (sub + email) from the cached
1673
- * Cognito idToken. Returns `undefined` when no tokens are cached or the
1674
- * token is missing the required claims — share() then skips the metadata
1675
- * stamp gracefully (not an error).
1676
- *
1677
- * We deliberately decode the JWT here instead of verifying it: Cognito
1678
- * already verified at issuance, and we only use the public claims to
1679
- * label the upload's S3 user metadata (no auth decision rides on it).
1680
- */
1681
- function resolveUploadAuthorFromCache() {
1682
- const tokens = loadCachedTokens();
1683
- if (!tokens?.idToken)
1684
- return undefined;
1685
- const parts = tokens.idToken.split(".");
1686
- if (parts.length !== 3)
1687
- return undefined;
1688
- try {
1689
- const payload = parts[1].replace(/-/g, "+").replace(/_/g, "/");
1690
- const padded = payload + "=".repeat((4 - (payload.length % 4)) % 4);
1691
- const json = Buffer.from(padded, "base64").toString("utf-8");
1692
- const claims = JSON.parse(json);
1693
- if (claims.sub && claims.email) {
1694
- return { userSub: claims.sub, email: claims.email };
1695
- }
1696
- return undefined;
1697
- }
1698
- catch {
1699
- return undefined;
1700
- }
1701
- }
1702
1937
  //# sourceMappingURL=cloud.js.map