@indigoai-us/hq-cli 5.312.2-beta.0 → 5.314.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1144) hide show
  1. package/CHANGELOG.md +1 -4293
  2. package/assets/scaffold/core/scripts/checkpoint-stop-gate.sh +43 -281
  3. package/assets/scaffold/core/scripts/hook-lib.sh +50 -345
  4. package/assets/scaffold/core/scripts/hq-session.sh +23 -184
  5. package/assets/scaffold/core/scripts/lib/session-id.sh +2 -3
  6. package/assets/scaffold/core/scripts/lib/session-scope-capability.sh +1 -1
  7. package/assets/scaffold/core/scripts/lib/work-mesh-enqueue.sh +1 -2
  8. package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +87 -10
  9. package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +3 -36
  10. package/assets/scaffold/core/scripts/rebuild-projects-index.sh +12 -99
  11. package/assets/scaffold/core/scripts/token-usage-report.sh +20 -81
  12. package/dist/bin/hq-auth-refresh.d.ts +0 -2
  13. package/dist/bin/hq-auth-refresh.js +6 -12
  14. package/dist/commands/__fixtures__/access-vault.d.ts +0 -2
  15. package/dist/commands/__fixtures__/access-vault.js +1 -1
  16. package/dist/commands/_patterns.d.ts +0 -16
  17. package/dist/commands/_patterns.js +3 -20
  18. package/dist/commands/access.d.ts +1 -2
  19. package/dist/commands/access.js +49 -58
  20. package/dist/commands/agents.d.ts +4 -106
  21. package/dist/commands/agents.js +45 -924
  22. package/dist/commands/auth.d.ts +0 -1
  23. package/dist/commands/auth.js +19 -189
  24. package/dist/commands/billing.d.ts +0 -3
  25. package/dist/commands/billing.js +1 -6
  26. package/dist/commands/channels.js +1 -56
  27. package/dist/commands/cloud-demote.js +2 -3
  28. package/dist/commands/cloud-provision.d.ts +0 -14
  29. package/dist/commands/cloud-provision.js +58 -232
  30. package/dist/commands/cloud.d.ts +15 -49
  31. package/dist/commands/cloud.js +122 -358
  32. package/dist/commands/company-transfer.d.ts +28 -4
  33. package/dist/commands/company-transfer.js +49 -5
  34. package/dist/commands/company.js +3 -66
  35. package/dist/commands/core-checkpoint.d.ts +9 -19
  36. package/dist/commands/core-checkpoint.js +37 -301
  37. package/dist/commands/core.d.ts +0 -4
  38. package/dist/commands/core.js +80 -270
  39. package/dist/commands/crm.js +3 -52
  40. package/dist/commands/db-provision.js +4 -4
  41. package/dist/commands/db-sql.js +21 -7
  42. package/dist/commands/dm.d.ts +12 -119
  43. package/dist/commands/dm.js +38 -388
  44. package/dist/commands/doctor.d.ts +0 -12
  45. package/dist/commands/doctor.js +12 -158
  46. package/dist/commands/feedback.d.ts +0 -6
  47. package/dist/commands/feedback.js +37 -86
  48. package/dist/commands/files-browse.d.ts +12 -32
  49. package/dist/commands/files-browse.js +60 -176
  50. package/dist/commands/files.d.ts +0 -17
  51. package/dist/commands/files.js +47 -300
  52. package/dist/commands/group-grants.js +2 -3
  53. package/dist/commands/groups.js +5 -6
  54. package/dist/commands/index-cmd.d.ts +1 -19
  55. package/dist/commands/index-cmd.js +7 -74
  56. package/dist/commands/integrations-api.d.ts +10 -15
  57. package/dist/commands/integrations-api.js +22 -27
  58. package/dist/commands/integrations-connect.d.ts +13 -51
  59. package/dist/commands/integrations-connect.js +71 -86
  60. package/dist/commands/integrations-core.d.ts +6 -6
  61. package/dist/commands/integrations-core.js +11 -25
  62. package/dist/commands/integrations-import.d.ts +1 -1
  63. package/dist/commands/integrations-import.js +24 -43
  64. package/dist/commands/integrations-manage.js +13 -20
  65. package/dist/commands/integrations.d.ts +0 -8
  66. package/dist/commands/integrations.js +7 -94
  67. package/dist/commands/login.js +6 -49
  68. package/dist/commands/mcp-registration.d.ts +25 -32
  69. package/dist/commands/mcp-registration.js +23 -256
  70. package/dist/commands/mcp-status.js +0 -1
  71. package/dist/commands/meetings.js +34 -55
  72. package/dist/commands/members.js +1 -5
  73. package/dist/commands/mesh.d.ts +0 -11
  74. package/dist/commands/mesh.js +76 -1086
  75. package/dist/commands/onboard-identity-guard.d.ts +1 -1
  76. package/dist/commands/onboard.js +5 -24
  77. package/dist/commands/pack-install.js +1 -3
  78. package/dist/commands/packs.js +1 -11
  79. package/dist/commands/people.d.ts +0 -4
  80. package/dist/commands/people.js +3 -37
  81. package/dist/commands/publish.d.ts +1 -8
  82. package/dist/commands/publish.js +4 -17
  83. package/dist/commands/reindex.js +6 -56
  84. package/dist/commands/rescue.d.ts +0 -4
  85. package/dist/commands/rescue.js +17 -27
  86. package/dist/commands/run.js +4 -18
  87. package/dist/commands/safe-extract.d.ts +2 -11
  88. package/dist/commands/safe-extract.js +8 -36
  89. package/dist/commands/scaffold-fast.d.ts +41 -0
  90. package/dist/commands/scaffold-fast.js +57 -0
  91. package/dist/commands/secrets.d.ts +2 -20
  92. package/dist/commands/secrets.js +71 -175
  93. package/dist/commands/skill.d.ts +4 -35
  94. package/dist/commands/skill.js +18 -357
  95. package/dist/commands/sync-mode.d.ts +0 -11
  96. package/dist/commands/sync-mode.js +0 -30
  97. package/dist/commands/sync-narrow.js +5 -36
  98. package/dist/commands/team-sync.js +10 -71
  99. package/dist/commands/update.js +0 -6
  100. package/dist/commands/whoami.d.ts +0 -22
  101. package/dist/commands/whoami.js +4 -137
  102. package/dist/commands/workers.d.ts +14 -2
  103. package/dist/commands/workers.js +10 -7
  104. package/dist/fast-core.d.ts +7 -6
  105. package/dist/fast-core.js +24 -80
  106. package/dist/index.d.ts +4 -3
  107. package/dist/index.js +9 -59
  108. package/dist/lazy-commands.d.ts +44 -20
  109. package/dist/lazy-commands.js +58 -60
  110. package/dist/lib/company-skill-wrapper.d.ts +0 -1
  111. package/dist/lib/company-skill-wrapper.js +29 -121
  112. package/dist/lib/core-utils/codex-skill-bridge.d.ts +1 -2
  113. package/dist/lib/core-utils/qmd-reindex-after-sync.d.ts +1 -14
  114. package/dist/lib/core-utils/qmd-reindex-after-sync.js +17 -101
  115. package/dist/lib/core-utils/soft-timeout.js +1 -1
  116. package/dist/lib/core-utils/timeout-guard.d.ts +3 -3
  117. package/dist/lib/core-utils/timeout-guard.js +13 -28
  118. package/dist/lib/core-utils/token-usage-report.js +3 -17
  119. package/dist/lib/db/control-plane.js +0 -6
  120. package/dist/lib/db/local.d.ts +5 -0
  121. package/dist/lib/db/local.js +1 -1
  122. package/dist/lib/db/migrate.d.ts +12 -0
  123. package/dist/lib/db/migrate.js +5 -5
  124. package/dist/lib/db/remote-sql.d.ts +2 -2
  125. package/dist/lib/db/remote-sql.js +3 -3
  126. package/dist/lib/db/sql.d.ts +10 -0
  127. package/dist/lib/db/sql.js +8 -4
  128. package/dist/lib/doctor/__testing__/fake-hq-tree.d.ts +1 -1
  129. package/dist/lib/doctor/__testing__/fake-hq-tree.js +1 -1
  130. package/dist/lib/doctor/checks/claude-wiring.js +1 -70
  131. package/dist/lib/doctor/checks/codex-wiring.d.ts +4 -0
  132. package/dist/lib/doctor/checks/codex-wiring.js +35 -3
  133. package/dist/lib/doctor/checks/grok-wiring.js +34 -1
  134. package/dist/lib/doctor/checks/integrations.js +0 -11
  135. package/dist/lib/doctor/checks/runtime-health.d.ts +17 -4
  136. package/dist/lib/doctor/checks/runtime-health.js +7 -20
  137. package/dist/lib/doctor/checks/sync-health.d.ts +0 -21
  138. package/dist/lib/doctor/checks/sync-health.js +2 -72
  139. package/dist/lib/doctor/checks/work-context.js +6 -12
  140. package/dist/lib/doctor/compat.d.ts +16 -0
  141. package/dist/lib/doctor/compat.js +3 -4
  142. package/dist/lib/doctor/deep/effects.js +3 -1
  143. package/dist/lib/doctor/deep/executor.d.ts +10 -4
  144. package/dist/lib/doctor/deep/executor.js +1 -1
  145. package/dist/lib/doctor/deep/parity.d.ts +29 -2
  146. package/dist/lib/doctor/deep/parity.js +7 -7
  147. package/dist/lib/doctor/deep/sandbox.d.ts +25 -7
  148. package/dist/lib/doctor/deep/sandbox.js +7 -5
  149. package/dist/lib/doctor/fix/apply.d.ts +8 -79
  150. package/dist/lib/doctor/fix/apply.js +80 -292
  151. package/dist/lib/doctor/fix/remediation.d.ts +6 -14
  152. package/dist/lib/doctor/fix/remediation.js +9 -49
  153. package/dist/lib/doctor/fixtures/schema.js +3 -1
  154. package/dist/lib/doctor/json-output.d.ts +1 -17
  155. package/dist/lib/doctor/json-output.js +2 -7
  156. package/dist/lib/doctor/platform.d.ts +26 -0
  157. package/dist/lib/doctor/platform.js +5 -5
  158. package/dist/lib/doctor/registry.d.ts +0 -14
  159. package/dist/lib/doctor/registry.js +0 -71
  160. package/dist/lib/doctor/report.js +1 -1
  161. package/dist/lib/doctor/types.d.ts +0 -5
  162. package/dist/lib/doctor/types.js +0 -20
  163. package/dist/lib/flag-registry-worker.js +1 -12
  164. package/dist/lib/flag-registry.d.ts +6 -26
  165. package/dist/lib/flag-registry.js +16 -133
  166. package/dist/lib/index-render/companies.d.ts +1 -4
  167. package/dist/lib/index-render/companies.js +3 -66
  168. package/dist/lib/index-render/company-knowledge.js +17 -80
  169. package/dist/lib/index-render/index.d.ts +0 -1
  170. package/dist/lib/index-render/index.js +1 -2
  171. package/dist/lib/index-render/projects.js +5 -82
  172. package/dist/lib/index-render/shared.d.ts +1 -13
  173. package/dist/lib/index-render/shared.js +2 -41
  174. package/dist/lib/mesh/api.d.ts +10 -103
  175. package/dist/lib/mesh/api.js +64 -334
  176. package/dist/lib/mesh/client.d.ts +2 -3
  177. package/dist/lib/mesh/client.js +2 -3
  178. package/dist/lib/mesh/live/backfill-held.d.ts +16 -67
  179. package/dist/lib/mesh/live/backfill-held.js +61 -415
  180. package/dist/lib/mesh/live/backoff.d.ts +2 -2
  181. package/dist/lib/mesh/live/backoff.js +3 -16
  182. package/dist/lib/mesh/live/daemon/board-refresh.d.ts +1 -7
  183. package/dist/lib/mesh/live/daemon/board-refresh.js +30 -78
  184. package/dist/lib/mesh/live/daemon/credentials.d.ts +10 -64
  185. package/dist/lib/mesh/live/daemon/credentials.js +20 -270
  186. package/dist/lib/mesh/live/daemon/doctor.d.ts +0 -51
  187. package/dist/lib/mesh/live/daemon/doctor.js +6 -180
  188. package/dist/lib/mesh/live/daemon/index.d.ts +10 -13
  189. package/dist/lib/mesh/live/daemon/index.js +6 -7
  190. package/dist/lib/mesh/live/daemon/install.d.ts +1 -255
  191. package/dist/lib/mesh/live/daemon/install.js +13 -811
  192. package/dist/lib/mesh/live/daemon/paths.d.ts +0 -2
  193. package/dist/lib/mesh/live/daemon/paths.js +0 -2
  194. package/dist/lib/mesh/live/daemon/presence.d.ts +5 -24
  195. package/dist/lib/mesh/live/daemon/presence.js +10 -79
  196. package/dist/lib/mesh/live/daemon/run.d.ts +2 -48
  197. package/dist/lib/mesh/live/daemon/run.js +33 -485
  198. package/dist/lib/mesh/live/daemon/state.d.ts +2 -19
  199. package/dist/lib/mesh/live/daemon/state.js +2 -34
  200. package/dist/lib/mesh/live/daemon/transcript-watch.d.ts +9 -45
  201. package/dist/lib/mesh/live/daemon/transcript-watch.js +31 -227
  202. package/dist/lib/mesh/live/emit-client.d.ts +0 -8
  203. package/dist/lib/mesh/live/emit-client.js +8 -23
  204. package/dist/lib/mesh/live/emit-evidence.d.ts +0 -19
  205. package/dist/lib/mesh/live/emit-evidence.js +2 -20
  206. package/dist/lib/mesh/live/emit.d.ts +0 -9
  207. package/dist/lib/mesh/live/emit.js +2 -28
  208. package/dist/lib/mesh/live/enqueue.d.ts +0 -5
  209. package/dist/lib/mesh/live/enqueue.js +0 -19
  210. package/dist/lib/mesh/live/flush.d.ts +5 -17
  211. package/dist/lib/mesh/live/flush.js +38 -391
  212. package/dist/lib/mesh/live/format-spool-line.d.ts +2 -5
  213. package/dist/lib/mesh/live/format-spool-line.js +0 -10
  214. package/dist/lib/mesh/live/paths.d.ts +0 -2
  215. package/dist/lib/mesh/live/paths.js +0 -4
  216. package/dist/lib/mesh/live/session-event.schema.json +1 -24
  217. package/dist/lib/mesh/live/session-events-client.d.ts +0 -2
  218. package/dist/lib/mesh/live/session-events-client.js +0 -26
  219. package/dist/lib/mesh/live/spool.d.ts +0 -19
  220. package/dist/lib/mesh/live/spool.js +3 -269
  221. package/dist/lib/mesh/live/validate-session-event.d.ts +1 -1
  222. package/dist/lib/mesh/live/validate-session-event.js +1 -1
  223. package/dist/lib/plan-limit-nag.d.ts +6 -102
  224. package/dist/lib/plan-limit-nag.js +43 -348
  225. package/dist/lib/scan-packages/index.d.ts +0 -2
  226. package/dist/lib/scan-packages/index.js +6 -168
  227. package/dist/lib/search-index/background.d.ts +1 -8
  228. package/dist/lib/search-index/background.js +200 -55
  229. package/dist/lib/search-index/index.d.ts +0 -12
  230. package/dist/lib/search-index/index.js +7 -153
  231. package/dist/lib/work-context/company.d.ts +20 -22
  232. package/dist/lib/work-context/company.js +40 -124
  233. package/dist/lib/work-context/config.d.ts +11 -58
  234. package/dist/lib/work-context/config.js +83 -334
  235. package/dist/lib/work-context/contract.d.ts +0 -10
  236. package/dist/lib/work-context/index.d.ts +25 -0
  237. package/dist/lib/work-context/index.js +21 -0
  238. package/dist/lib/work-context/outbox.d.ts +1 -14
  239. package/dist/lib/work-context/outbox.js +1 -87
  240. package/dist/lib/work-context/reconcile.d.ts +0 -15
  241. package/dist/lib/work-context/reconcile.js +25 -380
  242. package/dist/lib/work-context/state.d.ts +10 -93
  243. package/dist/lib/work-context/state.js +29 -342
  244. package/dist/lib/workers-registry/index.js +8 -62
  245. package/dist/main.d.ts +0 -12
  246. package/dist/main.js +73 -266
  247. package/dist/node-network-compat.d.ts +30 -2
  248. package/dist/node-network-compat.js +51 -4
  249. package/dist/node-preflight.d.ts +1 -7
  250. package/dist/node-preflight.js +5 -5
  251. package/dist/register-all.d.ts +29 -4
  252. package/dist/register-all.js +233 -4
  253. package/dist/run/discover-schemas.d.ts +1 -2
  254. package/dist/run/env-graph-guard.d.ts +2 -2
  255. package/dist/run/env-graph-guard.js +2 -5
  256. package/dist/run/hq-plugin.d.ts +0 -4
  257. package/dist/run/hq-plugin.js +8 -36
  258. package/dist/sentry-before-send.js +0 -80
  259. package/dist/sentry.d.ts +2 -8
  260. package/dist/sentry.js +13 -117
  261. package/dist/startup-registration.d.ts +2 -26
  262. package/dist/startup-registration.js +15 -116
  263. package/dist/utils/cli-telemetry.d.ts +1 -74
  264. package/dist/utils/cli-telemetry.js +7 -434
  265. package/dist/utils/client-health.d.ts +4 -0
  266. package/dist/utils/client-health.js +2 -2
  267. package/dist/utils/cognito-session.d.ts +0 -71
  268. package/dist/utils/cognito-session.js +27 -481
  269. package/dist/utils/contribution-table.d.ts +1 -1
  270. package/dist/utils/environmental-error.d.ts +0 -18
  271. package/dist/utils/environmental-error.js +7 -240
  272. package/dist/utils/expected-cli-error.d.ts +0 -2
  273. package/dist/utils/expected-cli-error.js +0 -4
  274. package/dist/utils/feedback-diagnostics.d.ts +1 -2
  275. package/dist/utils/feedback-log-bundle.d.ts +26 -51
  276. package/dist/utils/feedback-log-bundle.js +31 -211
  277. package/dist/utils/feedback-logs.d.ts +47 -18
  278. package/dist/utils/feedback-logs.js +21 -50
  279. package/dist/utils/feedback-screenshots.d.ts +1 -0
  280. package/dist/utils/feedback-screenshots.js +1 -1
  281. package/dist/utils/hq-roots.d.ts +2 -25
  282. package/dist/utils/hq-roots.js +7 -67
  283. package/dist/utils/incomplete-install-error.d.ts +19 -87
  284. package/dist/utils/incomplete-install-error.js +68 -319
  285. package/dist/utils/install-tree-torn.d.ts +24 -260
  286. package/dist/utils/install-tree-torn.js +51 -998
  287. package/dist/utils/large-file-guard.d.ts +10 -0
  288. package/dist/utils/large-file-guard.js +1 -1
  289. package/dist/utils/local-files-overview.d.ts +8 -4
  290. package/dist/utils/local-files-overview.js +7 -48
  291. package/dist/utils/login-provider.d.ts +0 -7
  292. package/dist/utils/login-provider.js +0 -34
  293. package/dist/utils/pack-contributions.d.ts +9 -2
  294. package/dist/utils/pack-contributions.js +43 -6
  295. package/dist/utils/package-root-diagnostics.d.ts +1 -1
  296. package/dist/utils/people.d.ts +11 -7
  297. package/dist/utils/people.js +20 -5
  298. package/dist/utils/plan-gate-error.d.ts +10 -52
  299. package/dist/utils/plan-gate-error.js +41 -364
  300. package/dist/utils/qmd-model-download-error.d.ts +8 -0
  301. package/dist/utils/qmd-model-download-error.js +1 -1
  302. package/dist/utils/qmd-query-document-error.d.ts +6 -0
  303. package/dist/utils/qmd-query-document-error.js +1 -1
  304. package/dist/utils/redact-error-text.js +1 -2
  305. package/dist/utils/run-bundled-script.d.ts +0 -6
  306. package/dist/utils/run-bundled-script.js +4 -117
  307. package/dist/utils/secrets-cache.d.ts +3 -7
  308. package/dist/utils/secrets-cache.js +14 -162
  309. package/dist/utils/self-update.d.ts +1 -34
  310. package/dist/utils/self-update.js +42 -660
  311. package/dist/utils/sentry-fingerprint.d.ts +1 -23
  312. package/dist/utils/sentry-fingerprint.js +31 -223
  313. package/dist/utils/team-upgrade.d.ts +1 -1
  314. package/dist/utils/team-upgrade.js +3 -4
  315. package/dist/utils/vault-api.d.ts +1 -21
  316. package/dist/utils/vault-api.js +84 -251
  317. package/dist/utils/version-check.d.ts +1 -11
  318. package/dist/utils/version-check.js +3 -32
  319. package/dist/utils/version-gate.d.ts +17 -101
  320. package/dist/utils/version-gate.js +70 -645
  321. package/dist/utils/windows-spawn.d.ts +0 -6
  322. package/dist/utils/windows-spawn.js +0 -37
  323. package/package.json +8 -20
  324. package/README.md +0 -113
  325. package/assets/bot-workers/setup/context/USER-GUIDE.md +0 -404
  326. package/assets/bot-workers/setup/context/quick-reference.md +0 -199
  327. package/assets/bot-workers/setup/skills/agents-and-team.md +0 -167
  328. package/assets/bot-workers/setup/skills/explain-hq.md +0 -35
  329. package/assets/bot-workers/setup/skills/first-company.md +0 -74
  330. package/assets/bot-workers/setup/skills/joining-a-team.md +0 -125
  331. package/assets/bot-workers/setup/skills/pricing.md +0 -92
  332. package/assets/bot-workers/setup/skills/standing-help.md +0 -81
  333. package/assets/bot-workers/setup/skills/your-business.md +0 -281
  334. package/assets/bot-workers/setup/worker.yaml +0 -791
  335. package/assets/lanes-hooks/hq-lanes-drain.json +0 -15
  336. package/assets/lanes-hooks/hq-lanes-drain.mjs +0 -275
  337. package/assets/lanes-hooks/hq-lanes-drain.sh +0 -21
  338. package/assets/lanes-reconcile/hq-lanes-reconcile.service +0 -11
  339. package/assets/lanes-reconcile/hq-lanes-reconcile.timer +0 -12
  340. package/assets/scaffold/.claude/hooks/validate-policy-frontmatter.sh +0 -485
  341. package/assets/scaffold/core/scripts/audit-log.sh +0 -384
  342. package/assets/scaffold/core/scripts/clean-worktree-reconcile-handoff.sh +0 -171
  343. package/assets/scaffold/core/scripts/eval-trigger.sh +0 -193
  344. package/assets/scaffold/core/scripts/git-pack-extension-check.sh +0 -164
  345. package/assets/scaffold/core/scripts/handoff-finalize.sh +0 -688
  346. package/assets/scaffold/core/scripts/handoff-open-steps.sh +0 -81
  347. package/assets/scaffold/core/scripts/handoff-post.sh +0 -252
  348. package/assets/scaffold/core/scripts/hq-delegate-bundle.sh +0 -307
  349. package/assets/scaffold/core/scripts/hq-delegate-grant.sh +0 -252
  350. package/assets/scaffold/core/scripts/hq-delegate-pickup.sh +0 -99
  351. package/assets/scaffold/core/scripts/hq-delegate-publish.sh +0 -91
  352. package/assets/scaffold/core/scripts/hq-delegate-repo.sh +0 -158
  353. package/assets/scaffold/core/scripts/hq-delegate-resolve.sh +0 -145
  354. package/assets/scaffold/core/scripts/hq-delegate-secrets.sh +0 -129
  355. package/assets/scaffold/core/scripts/hq-delegate-send.sh +0 -259
  356. package/assets/scaffold/core/scripts/hq-delegate-transfer.sh +0 -175
  357. package/assets/scaffold/core/scripts/hq-delegate-verify.sh +0 -238
  358. package/assets/scaffold/core/scripts/hq-dm-bind.sh +0 -585
  359. package/assets/scaffold/core/scripts/hq-job-notify.sh +0 -389
  360. package/assets/scaffold/core/scripts/hq-job-probe.sh +0 -835
  361. package/assets/scaffold/core/scripts/hq-job-remediate.sh +0 -359
  362. package/assets/scaffold/core/scripts/hq-job-run.sh +0 -1025
  363. package/assets/scaffold/core/scripts/hq-pin.sh +0 -118
  364. package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +0 -310
  365. package/assets/scaffold/core/scripts/jobs-validate.sh +0 -451
  366. package/assets/scaffold/core/scripts/knowledge-prefs.sh +0 -55
  367. package/assets/scaffold/core/scripts/lib/portable.sh +0 -211
  368. package/assets/scaffold/core/scripts/lib/secret-patterns.sh +0 -58
  369. package/assets/scaffold/core/scripts/ontology-audience-grant.sh +0 -81
  370. package/assets/scaffold/core/scripts/ontology-brief.mjs +0 -93
  371. package/assets/scaffold/core/scripts/ontology-candidate.sh +0 -100
  372. package/assets/scaffold/core/scripts/ontology-garden.mjs +0 -238
  373. package/assets/scaffold/core/scripts/ontology-source-worklist.sh +0 -79
  374. package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +0 -834
  375. package/assets/scaffold/core/scripts/policy-age-report.sh +0 -156
  376. package/assets/scaffold/core/scripts/policy-retire.sh +0 -199
  377. package/assets/scaffold/core/scripts/qmd-reindex-bg.sh +0 -40
  378. package/assets/scaffold/core/scripts/read-policy-frontmatter.sh +0 -32
  379. package/assets/scaffold/core/scripts/refresh-vault-access.sh +0 -188
  380. package/assets/scaffold/core/scripts/resolve-company.sh +0 -199
  381. package/assets/scaffold/core/scripts/resume-thread-lock.sh +0 -285
  382. package/assets/scaffold/core/scripts/source-yaml-validate.sh +0 -36
  383. package/assets/scaffold/core/scripts/verify-story-deliverables.sh +0 -148
  384. package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +0 -152
  385. package/assets/scaffold/core/scripts/worktree-gc.sh +0 -362
  386. package/contracts/preflight/v1/fixtures.json +0 -87
  387. package/contracts/preflight/v1/schema.json +0 -58
  388. package/dist/command-catalog.generated.d.ts +0 -10655
  389. package/dist/command-catalog.generated.js +0 -13737
  390. package/dist/command-registration-plan.d.ts +0 -474
  391. package/dist/command-registration-plan.js +0 -136
  392. package/dist/commands/agent-enroll.d.ts +0 -146
  393. package/dist/commands/agent-enroll.js +0 -401
  394. package/dist/commands/agent-inbox.d.ts +0 -9
  395. package/dist/commands/agent-inbox.js +0 -102
  396. package/dist/commands/agent-kit.d.ts +0 -87
  397. package/dist/commands/agent-kit.js +0 -480
  398. package/dist/commands/agent-mcp.d.ts +0 -24
  399. package/dist/commands/agent-mcp.js +0 -127
  400. package/dist/commands/agent-probe.d.ts +0 -77
  401. package/dist/commands/agent-probe.js +0 -335
  402. package/dist/commands/agent.d.ts +0 -13
  403. package/dist/commands/agent.js +0 -40
  404. package/dist/commands/billing-sponsor.d.ts +0 -83
  405. package/dist/commands/billing-sponsor.js +0 -344
  406. package/dist/commands/bot-companies.d.ts +0 -40
  407. package/dist/commands/bot-companies.js +0 -64
  408. package/dist/commands/bot-continuity.d.ts +0 -28
  409. package/dist/commands/bot-continuity.js +0 -68
  410. package/dist/commands/bot-jobs.d.ts +0 -127
  411. package/dist/commands/bot-jobs.js +0 -454
  412. package/dist/commands/bot.d.ts +0 -278
  413. package/dist/commands/bot.js +0 -1982
  414. package/dist/commands/cloud-retire.d.ts +0 -51
  415. package/dist/commands/cloud-retire.js +0 -154
  416. package/dist/commands/core-audit-log-native.d.ts +0 -9
  417. package/dist/commands/core-audit-log-native.js +0 -257
  418. package/dist/commands/core-checkpoint-gate-setting.d.ts +0 -59
  419. package/dist/commands/core-checkpoint-gate-setting.js +0 -163
  420. package/dist/commands/core-checkpoint-stop-gate-native.d.ts +0 -34
  421. package/dist/commands/core-checkpoint-stop-gate-native.js +0 -725
  422. package/dist/commands/core-command-catalog.d.ts +0 -34
  423. package/dist/commands/core-command-catalog.js +0 -62
  424. package/dist/commands/core-company-index-scope-flag.d.ts +0 -3
  425. package/dist/commands/core-company-index-scope-flag.js +0 -6
  426. package/dist/commands/core-delegate-w1b.d.ts +0 -10
  427. package/dist/commands/core-delegate-w1b.js +0 -1219
  428. package/dist/commands/core-delegate.d.ts +0 -46
  429. package/dist/commands/core-delegate.js +0 -1040
  430. package/dist/commands/core-dm-bind-native.d.ts +0 -32
  431. package/dist/commands/core-dm-bind-native.js +0 -668
  432. package/dist/commands/core-git-pack-extension-check-native.d.ts +0 -22
  433. package/dist/commands/core-git-pack-extension-check-native.js +0 -190
  434. package/dist/commands/core-handoff-fast.d.ts +0 -18
  435. package/dist/commands/core-handoff-fast.js +0 -104
  436. package/dist/commands/core-handoff-open-steps.d.ts +0 -21
  437. package/dist/commands/core-handoff-open-steps.js +0 -264
  438. package/dist/commands/core-handoff.d.ts +0 -24
  439. package/dist/commands/core-handoff.js +0 -1144
  440. package/dist/commands/core-hq-session-native.d.ts +0 -39
  441. package/dist/commands/core-hq-session-native.js +0 -579
  442. package/dist/commands/core-job-native-utils.d.ts +0 -6
  443. package/dist/commands/core-job-native-utils.js +0 -80
  444. package/dist/commands/core-job-native.d.ts +0 -5
  445. package/dist/commands/core-job-native.js +0 -16
  446. package/dist/commands/core-job-notify-native.d.ts +0 -36
  447. package/dist/commands/core-job-notify-native.js +0 -359
  448. package/dist/commands/core-job-probe-native.d.ts +0 -45
  449. package/dist/commands/core-job-probe-native.js +0 -564
  450. package/dist/commands/core-job-remediate-native.d.ts +0 -26
  451. package/dist/commands/core-job-remediate-native.js +0 -374
  452. package/dist/commands/core-job-remote-launcher.d.ts +0 -7
  453. package/dist/commands/core-job-remote-launcher.js +0 -51
  454. package/dist/commands/core-job-run-native.d.ts +0 -47
  455. package/dist/commands/core-job-run-native.js +0 -1215
  456. package/dist/commands/core-jobs-native.d.ts +0 -25
  457. package/dist/commands/core-jobs-native.js +0 -1339
  458. package/dist/commands/core-knowledge-prefs.d.ts +0 -12
  459. package/dist/commands/core-knowledge-prefs.js +0 -137
  460. package/dist/commands/core-native-handoff-flag.d.ts +0 -4
  461. package/dist/commands/core-native-handoff-flag.js +0 -7
  462. package/dist/commands/core-native-jobs-flag.d.ts +0 -4
  463. package/dist/commands/core-native-jobs-flag.js +0 -7
  464. package/dist/commands/core-native-policy-flag.d.ts +0 -9
  465. package/dist/commands/core-native-policy-flag.js +0 -12
  466. package/dist/commands/core-native-session-flag.d.ts +0 -4
  467. package/dist/commands/core-native-session-flag.js +0 -7
  468. package/dist/commands/core-native-utilities-flag.d.ts +0 -4
  469. package/dist/commands/core-native-utilities-flag.js +0 -7
  470. package/dist/commands/core-native-utilities.d.ts +0 -29
  471. package/dist/commands/core-native-utilities.js +0 -54
  472. package/dist/commands/core-native-worker-skills-flag.d.ts +0 -4
  473. package/dist/commands/core-native-worker-skills-flag.js +0 -7
  474. package/dist/commands/core-ontology-native.d.ts +0 -17
  475. package/dist/commands/core-ontology-native.js +0 -916
  476. package/dist/commands/core-ontology.d.ts +0 -66
  477. package/dist/commands/core-ontology.js +0 -430
  478. package/dist/commands/core-pin-native.d.ts +0 -14
  479. package/dist/commands/core-pin-native.js +0 -236
  480. package/dist/commands/core-policy-frontmatter.d.ts +0 -8
  481. package/dist/commands/core-policy-frontmatter.js +0 -52
  482. package/dist/commands/core-policy.d.ts +0 -14
  483. package/dist/commands/core-policy.js +0 -1018
  484. package/dist/commands/core-refresh-vault-access-native.d.ts +0 -20
  485. package/dist/commands/core-refresh-vault-access-native.js +0 -229
  486. package/dist/commands/core-resolve-company-command.d.ts +0 -4
  487. package/dist/commands/core-resolve-company-command.js +0 -42
  488. package/dist/commands/core-resolve-company-native.d.ts +0 -28
  489. package/dist/commands/core-resolve-company-native.js +0 -408
  490. package/dist/commands/core-work-mesh-bind-trusted-native.d.ts +0 -32
  491. package/dist/commands/core-work-mesh-bind-trusted-native.js +0 -190
  492. package/dist/commands/core-worker-lint-native.d.ts +0 -4
  493. package/dist/commands/core-worker-lint-native.js +0 -160
  494. package/dist/commands/core-worker-share-native.d.ts +0 -5
  495. package/dist/commands/core-worker-share-native.js +0 -260
  496. package/dist/commands/core-worker-skills-command.d.ts +0 -8
  497. package/dist/commands/core-worker-skills-command.js +0 -33
  498. package/dist/commands/core-worker-skills-runtime.d.ts +0 -33
  499. package/dist/commands/core-worker-skills-runtime.js +0 -86
  500. package/dist/commands/daemon.d.ts +0 -63
  501. package/dist/commands/daemon.js +0 -877
  502. package/dist/commands/deploy-comments.d.ts +0 -3
  503. package/dist/commands/deploy-comments.js +0 -162
  504. package/dist/commands/lanes-accounts.d.ts +0 -28
  505. package/dist/commands/lanes-accounts.js +0 -595
  506. package/dist/commands/lanes-autopilot.d.ts +0 -11
  507. package/dist/commands/lanes-autopilot.js +0 -336
  508. package/dist/commands/lanes-checks.d.ts +0 -51
  509. package/dist/commands/lanes-checks.js +0 -941
  510. package/dist/commands/lanes-hold.d.ts +0 -43
  511. package/dist/commands/lanes-hold.js +0 -655
  512. package/dist/commands/lanes-kpis.d.ts +0 -11
  513. package/dist/commands/lanes-kpis.js +0 -34
  514. package/dist/commands/lanes-message.d.ts +0 -9
  515. package/dist/commands/lanes-message.js +0 -934
  516. package/dist/commands/lanes-move.d.ts +0 -12
  517. package/dist/commands/lanes-move.js +0 -397
  518. package/dist/commands/lanes-questions.d.ts +0 -36
  519. package/dist/commands/lanes-questions.js +0 -1004
  520. package/dist/commands/lanes-report.d.ts +0 -11
  521. package/dist/commands/lanes-report.js +0 -333
  522. package/dist/commands/lanes-resume.d.ts +0 -6
  523. package/dist/commands/lanes-resume.js +0 -561
  524. package/dist/commands/lanes-review.d.ts +0 -10
  525. package/dist/commands/lanes-review.js +0 -56
  526. package/dist/commands/lanes-shared.d.ts +0 -448
  527. package/dist/commands/lanes-shared.js +0 -170
  528. package/dist/commands/lanes-stories.d.ts +0 -15
  529. package/dist/commands/lanes-stories.js +0 -347
  530. package/dist/commands/lanes-watch.d.ts +0 -7
  531. package/dist/commands/lanes-watch.js +0 -216
  532. package/dist/commands/lanes.d.ts +0 -149
  533. package/dist/commands/lanes.js +0 -8843
  534. package/dist/commands/monitor.d.ts +0 -58
  535. package/dist/commands/monitor.js +0 -980
  536. package/dist/commands/onboard-bot-membership.d.ts +0 -32
  537. package/dist/commands/onboard-bot-membership.js +0 -40
  538. package/dist/commands/onboard-create-identity.d.ts +0 -26
  539. package/dist/commands/onboard-create-identity.js +0 -23
  540. package/dist/commands/outpost-pruner.d.ts +0 -3
  541. package/dist/commands/outpost-pruner.js +0 -125
  542. package/dist/commands/personal-connector-settings-flag.d.ts +0 -4
  543. package/dist/commands/personal-connector-settings-flag.js +0 -7
  544. package/dist/commands/personal-targeted-push-flag.d.ts +0 -4
  545. package/dist/commands/personal-targeted-push-flag.js +0 -7
  546. package/dist/commands/personal-targeted-push-paths.d.ts +0 -3
  547. package/dist/commands/personal-targeted-push-paths.js +0 -67
  548. package/dist/commands/report.d.ts +0 -19
  549. package/dist/commands/report.js +0 -537
  550. package/dist/commands/run-feature-telemetry.d.ts +0 -3
  551. package/dist/commands/run-feature-telemetry.js +0 -6
  552. package/dist/commands/staff/reset-test-account.d.ts +0 -110
  553. package/dist/commands/staff/reset-test-account.js +0 -268
  554. package/dist/commands/staff/test-account.d.ts +0 -51
  555. package/dist/commands/staff/test-account.js +0 -196
  556. package/dist/commands/vault-retention-flag.d.ts +0 -3
  557. package/dist/commands/vault-retention-flag.js +0 -9
  558. package/dist/commands/vault-retention.d.ts +0 -11
  559. package/dist/commands/vault-retention.js +0 -69
  560. package/dist/commands/version.d.ts +0 -10
  561. package/dist/commands/version.js +0 -11
  562. package/dist/fast-scaffold.d.ts +0 -84
  563. package/dist/fast-scaffold.js +0 -353
  564. package/dist/lanes-drain-hook.d.ts +0 -14
  565. package/dist/lanes-drain-hook.js +0 -203
  566. package/dist/lib/agent-kit/adopt-identity.d.ts +0 -27
  567. package/dist/lib/agent-kit/adopt-identity.js +0 -60
  568. package/dist/lib/agent-kit/attachment-download.d.ts +0 -24
  569. package/dist/lib/agent-kit/attachment-download.js +0 -47
  570. package/dist/lib/agent-kit/creds.d.ts +0 -106
  571. package/dist/lib/agent-kit/creds.js +0 -163
  572. package/dist/lib/agent-kit/fallback.d.ts +0 -78
  573. package/dist/lib/agent-kit/fallback.js +0 -210
  574. package/dist/lib/agent-kit/inbox-state.d.ts +0 -83
  575. package/dist/lib/agent-kit/inbox-state.js +0 -159
  576. package/dist/lib/agent-kit/kit-config.d.ts +0 -56
  577. package/dist/lib/agent-kit/kit-config.js +0 -65
  578. package/dist/lib/agent-kit/log.d.ts +0 -16
  579. package/dist/lib/agent-kit/log.js +0 -46
  580. package/dist/lib/agent-kit/mcp/attachments.d.ts +0 -126
  581. package/dist/lib/agent-kit/mcp/attachments.js +0 -222
  582. package/dist/lib/agent-kit/mcp/jsonrpc.d.ts +0 -75
  583. package/dist/lib/agent-kit/mcp/jsonrpc.js +0 -164
  584. package/dist/lib/agent-kit/mcp/tools.d.ts +0 -64
  585. package/dist/lib/agent-kit/mcp/tools.js +0 -397
  586. package/dist/lib/agent-kit/paths.d.ts +0 -65
  587. package/dist/lib/agent-kit/paths.js +0 -118
  588. package/dist/lib/agent-kit/private-file.d.ts +0 -29
  589. package/dist/lib/agent-kit/private-file.js +0 -91
  590. package/dist/lib/agent-kit/run/heartbeat.d.ts +0 -72
  591. package/dist/lib/agent-kit/run/heartbeat.js +0 -128
  592. package/dist/lib/agent-kit/run/inbox.d.ts +0 -76
  593. package/dist/lib/agent-kit/run/inbox.js +0 -205
  594. package/dist/lib/agent-kit/run/supervisor.d.ts +0 -35
  595. package/dist/lib/agent-kit/run/supervisor.js +0 -85
  596. package/dist/lib/agent-kit/run/sync.d.ts +0 -33
  597. package/dist/lib/agent-kit/run/sync.js +0 -58
  598. package/dist/lib/agent-kit/services.d.ts +0 -31
  599. package/dist/lib/agent-kit/services.js +0 -55
  600. package/dist/lib/agent-kit/skills.d.ts +0 -18
  601. package/dist/lib/agent-kit/skills.js +0 -151
  602. package/dist/lib/agent-kit/wake.d.ts +0 -83
  603. package/dist/lib/agent-kit/wake.js +0 -243
  604. package/dist/lib/agents/model-catalog.d.ts +0 -62
  605. package/dist/lib/agents/model-catalog.js +0 -275
  606. package/dist/lib/auth-login-provider-state.d.ts +0 -8
  607. package/dist/lib/auth-login-provider-state.js +0 -63
  608. package/dist/lib/aws-sdk-node-warning-output.d.ts +0 -12
  609. package/dist/lib/aws-sdk-node-warning-output.js +0 -22
  610. package/dist/lib/billing/free-month.d.ts +0 -18
  611. package/dist/lib/billing/free-month.js +0 -31
  612. package/dist/lib/billing/plan-limit-refusals.d.ts +0 -69
  613. package/dist/lib/billing/plan-limit-refusals.js +0 -187
  614. package/dist/lib/billing/plan-limit-upgrade-url.d.ts +0 -11
  615. package/dist/lib/billing/plan-limit-upgrade-url.js +0 -66
  616. package/dist/lib/billing/plan-lock.d.ts +0 -143
  617. package/dist/lib/billing/plan-lock.js +0 -439
  618. package/dist/lib/bot/api.d.ts +0 -349
  619. package/dist/lib/bot/api.js +0 -316
  620. package/dist/lib/bot/attachments.d.ts +0 -45
  621. package/dist/lib/bot/attachments.js +0 -89
  622. package/dist/lib/bot/cli-update.d.ts +0 -138
  623. package/dist/lib/bot/cli-update.js +0 -278
  624. package/dist/lib/bot/company-bind.d.ts +0 -27
  625. package/dist/lib/bot/company-bind.js +0 -62
  626. package/dist/lib/bot/config.d.ts +0 -153
  627. package/dist/lib/bot/config.js +0 -233
  628. package/dist/lib/bot/continuity-download.d.ts +0 -28
  629. package/dist/lib/bot/continuity-download.js +0 -75
  630. package/dist/lib/bot/continuity-install.d.ts +0 -14
  631. package/dist/lib/bot/continuity-install.js +0 -101
  632. package/dist/lib/bot/continuity.d.ts +0 -67
  633. package/dist/lib/bot/continuity.js +0 -301
  634. package/dist/lib/bot/creds.d.ts +0 -24
  635. package/dist/lib/bot/creds.js +0 -51
  636. package/dist/lib/bot/daemon.d.ts +0 -173
  637. package/dist/lib/bot/daemon.js +0 -552
  638. package/dist/lib/bot/inbox-poll-backoff-flag.d.ts +0 -24
  639. package/dist/lib/bot/inbox-poll-backoff-flag.js +0 -135
  640. package/dist/lib/bot/inbox-state.d.ts +0 -18
  641. package/dist/lib/bot/inbox-state.js +0 -51
  642. package/dist/lib/bot/index.d.ts +0 -23
  643. package/dist/lib/bot/index.js +0 -23
  644. package/dist/lib/bot/inflight.d.ts +0 -119
  645. package/dist/lib/bot/inflight.js +0 -83
  646. package/dist/lib/bot/job-completions.d.ts +0 -89
  647. package/dist/lib/bot/job-completions.js +0 -132
  648. package/dist/lib/bot/job-run.d.ts +0 -109
  649. package/dist/lib/bot/job-run.js +0 -246
  650. package/dist/lib/bot/local-config.d.ts +0 -61
  651. package/dist/lib/bot/local-config.js +0 -145
  652. package/dist/lib/bot/local-jobs.d.ts +0 -89
  653. package/dist/lib/bot/local-jobs.js +0 -459
  654. package/dist/lib/bot/local-name.d.ts +0 -54
  655. package/dist/lib/bot/local-name.js +0 -114
  656. package/dist/lib/bot/log.d.ts +0 -13
  657. package/dist/lib/bot/log.js +0 -59
  658. package/dist/lib/bot/owner-context.d.ts +0 -79
  659. package/dist/lib/bot/owner-context.js +0 -175
  660. package/dist/lib/bot/paths.d.ts +0 -76
  661. package/dist/lib/bot/paths.js +0 -131
  662. package/dist/lib/bot/progress.d.ts +0 -132
  663. package/dist/lib/bot/progress.js +0 -289
  664. package/dist/lib/bot/promote.d.ts +0 -16
  665. package/dist/lib/bot/promote.js +0 -106
  666. package/dist/lib/bot/promotion-hold.d.ts +0 -24
  667. package/dist/lib/bot/promotion-hold.js +0 -103
  668. package/dist/lib/bot/promotion-receipt.d.ts +0 -9
  669. package/dist/lib/bot/promotion-receipt.js +0 -56
  670. package/dist/lib/bot/promotion-upload.d.ts +0 -16
  671. package/dist/lib/bot/promotion-upload.js +0 -80
  672. package/dist/lib/bot/prompt.d.ts +0 -136
  673. package/dist/lib/bot/prompt.js +0 -433
  674. package/dist/lib/bot/room-policy.d.ts +0 -63
  675. package/dist/lib/bot/room-policy.js +0 -91
  676. package/dist/lib/bot/run.d.ts +0 -217
  677. package/dist/lib/bot/run.js +0 -1869
  678. package/dist/lib/bot/runnable.d.ts +0 -51
  679. package/dist/lib/bot/runnable.js +0 -65
  680. package/dist/lib/bot/runtime/claude.d.ts +0 -50
  681. package/dist/lib/bot/runtime/claude.js +0 -170
  682. package/dist/lib/bot/runtime/codex.d.ts +0 -28
  683. package/dist/lib/bot/runtime/codex.js +0 -153
  684. package/dist/lib/bot/runtime/grok-acp.d.ts +0 -40
  685. package/dist/lib/bot/runtime/grok-acp.js +0 -265
  686. package/dist/lib/bot/runtime/grok.d.ts +0 -41
  687. package/dist/lib/bot/runtime/grok.js +0 -169
  688. package/dist/lib/bot/runtime/index.d.ts +0 -36
  689. package/dist/lib/bot/runtime/index.js +0 -417
  690. package/dist/lib/bot/runtime/messages-stream.d.ts +0 -56
  691. package/dist/lib/bot/runtime/messages-stream.js +0 -194
  692. package/dist/lib/bot/runtime/sanitize.d.ts +0 -18
  693. package/dist/lib/bot/runtime/sanitize.js +0 -28
  694. package/dist/lib/bot/runtime/types.d.ts +0 -159
  695. package/dist/lib/bot/runtime/types.js +0 -51
  696. package/dist/lib/bot/runtime/windows.d.ts +0 -10
  697. package/dist/lib/bot/runtime/windows.js +0 -53
  698. package/dist/lib/bot/runtime-sign-in.d.ts +0 -24
  699. package/dist/lib/bot/runtime-sign-in.js +0 -31
  700. package/dist/lib/bot/scaffold.d.ts +0 -38
  701. package/dist/lib/bot/scaffold.js +0 -94
  702. package/dist/lib/bot/self-heal.d.ts +0 -52
  703. package/dist/lib/bot/self-heal.js +0 -79
  704. package/dist/lib/bot/self-process.d.ts +0 -19
  705. package/dist/lib/bot/self-process.js +0 -35
  706. package/dist/lib/bot/session.d.ts +0 -19
  707. package/dist/lib/bot/session.js +0 -39
  708. package/dist/lib/bot/setup-explain.d.ts +0 -64
  709. package/dist/lib/bot/setup-explain.js +0 -141
  710. package/dist/lib/bot/split.d.ts +0 -32
  711. package/dist/lib/bot/split.js +0 -241
  712. package/dist/lib/bot/status.d.ts +0 -57
  713. package/dist/lib/bot/status.js +0 -66
  714. package/dist/lib/bot/worker-source.d.ts +0 -66
  715. package/dist/lib/bot/worker-source.js +0 -283
  716. package/dist/lib/checkpoint-ontology/aliases.d.ts +0 -17
  717. package/dist/lib/checkpoint-ontology/aliases.js +0 -44
  718. package/dist/lib/checkpoint-ontology/apply.d.ts +0 -110
  719. package/dist/lib/checkpoint-ontology/apply.js +0 -777
  720. package/dist/lib/checkpoint-ontology/company-brief.d.ts +0 -18
  721. package/dist/lib/checkpoint-ontology/company-brief.js +0 -337
  722. package/dist/lib/checkpoint-ontology/company.d.ts +0 -44
  723. package/dist/lib/checkpoint-ontology/company.js +0 -118
  724. package/dist/lib/checkpoint-ontology/drop-aliases.d.ts +0 -41
  725. package/dist/lib/checkpoint-ontology/drop-aliases.js +0 -76
  726. package/dist/lib/checkpoint-ontology/entity-file.d.ts +0 -109
  727. package/dist/lib/checkpoint-ontology/entity-file.js +0 -371
  728. package/dist/lib/checkpoint-ontology/identity.d.ts +0 -38
  729. package/dist/lib/checkpoint-ontology/identity.js +0 -95
  730. package/dist/lib/checkpoint-ontology/merge-copies.d.ts +0 -199
  731. package/dist/lib/checkpoint-ontology/merge-copies.js +0 -1086
  732. package/dist/lib/checkpoint-ontology/multi-writer.d.ts +0 -101
  733. package/dist/lib/checkpoint-ontology/multi-writer.js +0 -394
  734. package/dist/lib/checkpoint-ontology/plan.d.ts +0 -193
  735. package/dist/lib/checkpoint-ontology/plan.js +0 -504
  736. package/dist/lib/checkpoint-ontology/queued-touches.d.ts +0 -29
  737. package/dist/lib/checkpoint-ontology/queued-touches.js +0 -193
  738. package/dist/lib/checkpoint-ontology/sync-client.d.ts +0 -38
  739. package/dist/lib/checkpoint-ontology/sync-client.js +0 -84
  740. package/dist/lib/checkpoint-ontology/tree.d.ts +0 -55
  741. package/dist/lib/checkpoint-ontology/tree.js +0 -198
  742. package/dist/lib/company-errors-sdk-warning-flag.d.ts +0 -5
  743. package/dist/lib/company-errors-sdk-warning-flag.js +0 -8
  744. package/dist/lib/core-utils/hook-timeout-debug-context-flag.d.ts +0 -20
  745. package/dist/lib/core-utils/hook-timeout-debug-context-flag.js +0 -81
  746. package/dist/lib/core-utils/jq-json-serializer.d.ts +0 -5
  747. package/dist/lib/core-utils/jq-json-serializer.js +0 -10
  748. package/dist/lib/core-utils/secret-patterns.d.ts +0 -43
  749. package/dist/lib/core-utils/secret-patterns.js +0 -34
  750. package/dist/lib/core-utils/sentry-report.d.ts +0 -114
  751. package/dist/lib/core-utils/sentry-report.js +0 -1034
  752. package/dist/lib/core-utils/timeout-guard-native.d.ts +0 -7
  753. package/dist/lib/core-utils/timeout-guard-native.js +0 -40
  754. package/dist/lib/core-utils/worktree-resume.d.ts +0 -20
  755. package/dist/lib/core-utils/worktree-resume.js +0 -1198
  756. package/dist/lib/daemon/catalog.d.ts +0 -134
  757. package/dist/lib/daemon/catalog.js +0 -358
  758. package/dist/lib/daemon/config.d.ts +0 -35
  759. package/dist/lib/daemon/config.js +0 -108
  760. package/dist/lib/daemon/flag.d.ts +0 -25
  761. package/dist/lib/daemon/flag.js +0 -59
  762. package/dist/lib/daemon/handoff.d.ts +0 -56
  763. package/dist/lib/daemon/handoff.js +0 -161
  764. package/dist/lib/daemon/hq-cloud.d.ts +0 -79
  765. package/dist/lib/daemon/hq-cloud.js +0 -183
  766. package/dist/lib/daemon/install.d.ts +0 -85
  767. package/dist/lib/daemon/install.js +0 -320
  768. package/dist/lib/daemon/legacy-sync-env.d.ts +0 -10
  769. package/dist/lib/daemon/legacy-sync-env.js +0 -58
  770. package/dist/lib/daemon/legacy.d.ts +0 -45
  771. package/dist/lib/daemon/legacy.js +0 -133
  772. package/dist/lib/daemon/lock.d.ts +0 -47
  773. package/dist/lib/daemon/lock.js +0 -138
  774. package/dist/lib/daemon/machine-type.d.ts +0 -50
  775. package/dist/lib/daemon/machine-type.js +0 -159
  776. package/dist/lib/daemon/migrate.d.ts +0 -77
  777. package/dist/lib/daemon/migrate.js +0 -265
  778. package/dist/lib/daemon/paths.d.ts +0 -24
  779. package/dist/lib/daemon/paths.js +0 -43
  780. package/dist/lib/daemon/protocol-tail.d.ts +0 -33
  781. package/dist/lib/daemon/protocol-tail.js +0 -131
  782. package/dist/lib/daemon/remote-control.d.ts +0 -74
  783. package/dist/lib/daemon/remote-control.js +0 -153
  784. package/dist/lib/daemon/requests.d.ts +0 -28
  785. package/dist/lib/daemon/requests.js +0 -65
  786. package/dist/lib/daemon/run.d.ts +0 -79
  787. package/dist/lib/daemon/run.js +0 -755
  788. package/dist/lib/daemon/succession.d.ts +0 -118
  789. package/dist/lib/daemon/succession.js +0 -263
  790. package/dist/lib/daemon/supervisor.d.ts +0 -132
  791. package/dist/lib/daemon/supervisor.js +0 -836
  792. package/dist/lib/daemon/sync-runner.d.ts +0 -58
  793. package/dist/lib/daemon/sync-runner.js +0 -277
  794. package/dist/lib/daemon/tools.d.ts +0 -52
  795. package/dist/lib/daemon/tools.js +0 -95
  796. package/dist/lib/daemon/updater.d.ts +0 -57
  797. package/dist/lib/daemon/updater.js +0 -163
  798. package/dist/lib/deploy-api.d.ts +0 -5
  799. package/dist/lib/deploy-api.js +0 -21
  800. package/dist/lib/deploy-apps.d.ts +0 -13
  801. package/dist/lib/deploy-apps.js +0 -29
  802. package/dist/lib/doctor/__testing__/run-doctor.d.ts +0 -8
  803. package/dist/lib/doctor/__testing__/run-doctor.js +0 -52
  804. package/dist/lib/doctor/checks/bots.d.ts +0 -13
  805. package/dist/lib/doctor/checks/bots.js +0 -189
  806. package/dist/lib/doctor/checks/scaffold-cli-floor.d.ts +0 -6
  807. package/dist/lib/doctor/checks/scaffold-cli-floor.js +0 -73
  808. package/dist/lib/doctor/checks/sync-runtime.d.ts +0 -11
  809. package/dist/lib/doctor/checks/sync-runtime.js +0 -216
  810. package/dist/lib/doctor/client-health-flag-token.d.ts +0 -15
  811. package/dist/lib/doctor/client-health-flag-token.js +0 -66
  812. package/dist/lib/doctor/client-health-reason-codes-flag.d.ts +0 -27
  813. package/dist/lib/doctor/client-health-reason-codes-flag.js +0 -106
  814. package/dist/lib/doctor/fix/json-output.d.ts +0 -28
  815. package/dist/lib/doctor/fix/json-output.js +0 -33
  816. package/dist/lib/doctor/fix/refresh-sync-outcome.d.ts +0 -12
  817. package/dist/lib/doctor/fix/refresh-sync-outcome.js +0 -25
  818. package/dist/lib/doctor/shared.d.ts +0 -8
  819. package/dist/lib/doctor/shared.js +0 -38
  820. package/dist/lib/doctor/stray-gate-entries.d.ts +0 -35
  821. package/dist/lib/doctor/stray-gate-entries.js +0 -83
  822. package/dist/lib/first-sync-next-step.d.ts +0 -37
  823. package/dist/lib/first-sync-next-step.js +0 -189
  824. package/dist/lib/flag-registry-endpoint.d.ts +0 -5
  825. package/dist/lib/flag-registry-endpoint.js +0 -9
  826. package/dist/lib/flag-registry-worker-source.generated.d.ts +0 -2
  827. package/dist/lib/flag-registry-worker-source.generated.js +0 -3
  828. package/dist/lib/flag-snapshot-file.d.ts +0 -20
  829. package/dist/lib/flag-snapshot-file.js +0 -91
  830. package/dist/lib/heartbeat-identity.d.ts +0 -30
  831. package/dist/lib/heartbeat-identity.js +0 -76
  832. package/dist/lib/lanes/account-home.d.ts +0 -8
  833. package/dist/lib/lanes/account-home.js +0 -10
  834. package/dist/lib/lanes/accounts.d.ts +0 -117
  835. package/dist/lib/lanes/accounts.js +0 -366
  836. package/dist/lib/lanes/admission-host.d.ts +0 -22
  837. package/dist/lib/lanes/admission-host.js +0 -37
  838. package/dist/lib/lanes/admission.d.ts +0 -26
  839. package/dist/lib/lanes/admission.js +0 -210
  840. package/dist/lib/lanes/approval-gate.d.ts +0 -8
  841. package/dist/lib/lanes/approval-gate.js +0 -90
  842. package/dist/lib/lanes/autopilot-metrics.d.ts +0 -99
  843. package/dist/lib/lanes/autopilot-metrics.js +0 -301
  844. package/dist/lib/lanes/autopilot-registry.d.ts +0 -62
  845. package/dist/lib/lanes/autopilot-registry.js +0 -192
  846. package/dist/lib/lanes/autopilot.d.ts +0 -120
  847. package/dist/lib/lanes/autopilot.js +0 -1061
  848. package/dist/lib/lanes/blocker-freshness.d.ts +0 -31
  849. package/dist/lib/lanes/blocker-freshness.js +0 -168
  850. package/dist/lib/lanes/checked-company-path.d.ts +0 -3
  851. package/dist/lib/lanes/checked-company-path.js +0 -39
  852. package/dist/lib/lanes/claude-balance.d.ts +0 -97
  853. package/dist/lib/lanes/claude-balance.js +0 -319
  854. package/dist/lib/lanes/compaction.d.ts +0 -110
  855. package/dist/lib/lanes/compaction.js +0 -293
  856. package/dist/lib/lanes/config.d.ts +0 -91
  857. package/dist/lib/lanes/config.js +0 -592
  858. package/dist/lib/lanes/constants.d.ts +0 -3
  859. package/dist/lib/lanes/constants.js +0 -3
  860. package/dist/lib/lanes/delivery-core.d.ts +0 -15
  861. package/dist/lib/lanes/delivery-core.js +0 -21
  862. package/dist/lib/lanes/delivery.d.ts +0 -180
  863. package/dist/lib/lanes/delivery.js +0 -443
  864. package/dist/lib/lanes/dropbox.d.ts +0 -129
  865. package/dist/lib/lanes/dropbox.js +0 -601
  866. package/dist/lib/lanes/effort.d.ts +0 -51
  867. package/dist/lib/lanes/effort.js +0 -113
  868. package/dist/lib/lanes/envelope-repair-dispatch.d.ts +0 -26
  869. package/dist/lib/lanes/envelope-repair-dispatch.js +0 -74
  870. package/dist/lib/lanes/errors.d.ts +0 -39
  871. package/dist/lib/lanes/errors.js +0 -72
  872. package/dist/lib/lanes/flag-keys.d.ts +0 -13
  873. package/dist/lib/lanes/flag-keys.js +0 -13
  874. package/dist/lib/lanes/grants.d.ts +0 -29
  875. package/dist/lib/lanes/grants.js +0 -166
  876. package/dist/lib/lanes/hire-grant-dispatch.d.ts +0 -29
  877. package/dist/lib/lanes/hire-grant-dispatch.js +0 -316
  878. package/dist/lib/lanes/hooks-install.d.ts +0 -82
  879. package/dist/lib/lanes/hooks-install.js +0 -479
  880. package/dist/lib/lanes/host-capacity.d.ts +0 -69
  881. package/dist/lib/lanes/host-capacity.js +0 -254
  882. package/dist/lib/lanes/hq-root.d.ts +0 -19
  883. package/dist/lib/lanes/hq-root.js +0 -28
  884. package/dist/lib/lanes/index.d.ts +0 -76
  885. package/dist/lib/lanes/index.js +0 -42
  886. package/dist/lib/lanes/keep-alive.d.ts +0 -68
  887. package/dist/lib/lanes/keep-alive.js +0 -343
  888. package/dist/lib/lanes/kr-freshness.d.ts +0 -76
  889. package/dist/lib/lanes/kr-freshness.js +0 -413
  890. package/dist/lib/lanes/lane-company.d.ts +0 -10
  891. package/dist/lib/lanes/lane-company.js +0 -41
  892. package/dist/lib/lanes/liveness.d.ts +0 -108
  893. package/dist/lib/lanes/liveness.js +0 -396
  894. package/dist/lib/lanes/machine-identity.d.ts +0 -34
  895. package/dist/lib/lanes/machine-identity.js +0 -92
  896. package/dist/lib/lanes/manager-status-gate.d.ts +0 -17
  897. package/dist/lib/lanes/manager-status-gate.js +0 -133
  898. package/dist/lib/lanes/merge-command.d.ts +0 -15
  899. package/dist/lib/lanes/merge-command.js +0 -629
  900. package/dist/lib/lanes/mesh-events.d.ts +0 -127
  901. package/dist/lib/lanes/mesh-events.js +0 -564
  902. package/dist/lib/lanes/message-replay.d.ts +0 -21
  903. package/dist/lib/lanes/message-replay.js +0 -122
  904. package/dist/lib/lanes/models.d.ts +0 -86
  905. package/dist/lib/lanes/models.js +0 -234
  906. package/dist/lib/lanes/monitor.d.ts +0 -48
  907. package/dist/lib/lanes/monitor.js +0 -428
  908. package/dist/lib/lanes/move-account.d.ts +0 -56
  909. package/dist/lib/lanes/move-account.js +0 -193
  910. package/dist/lib/lanes/orphans.d.ts +0 -25
  911. package/dist/lib/lanes/orphans.js +0 -102
  912. package/dist/lib/lanes/outpost-dispatch.d.ts +0 -147
  913. package/dist/lib/lanes/outpost-dispatch.js +0 -271
  914. package/dist/lib/lanes/outpost-hire-cache.d.ts +0 -22
  915. package/dist/lib/lanes/outpost-hire-cache.js +0 -153
  916. package/dist/lib/lanes/outpost-identity.d.ts +0 -33
  917. package/dist/lib/lanes/outpost-identity.js +0 -59
  918. package/dist/lib/lanes/outpost-profile-repin.d.ts +0 -17
  919. package/dist/lib/lanes/outpost-profile-repin.js +0 -84
  920. package/dist/lib/lanes/outpost-pruner-install.d.ts +0 -37
  921. package/dist/lib/lanes/outpost-pruner-install.js +0 -238
  922. package/dist/lib/lanes/outpost-registry-worker-approval.d.ts +0 -18
  923. package/dist/lib/lanes/outpost-registry-worker-approval.js +0 -109
  924. package/dist/lib/lanes/outpost-snapshot-memo.d.ts +0 -6
  925. package/dist/lib/lanes/outpost-snapshot-memo.js +0 -14
  926. package/dist/lib/lanes/outpost-worktree-pruner-flag.d.ts +0 -19
  927. package/dist/lib/lanes/outpost-worktree-pruner-flag.js +0 -86
  928. package/dist/lib/lanes/outpost-worktree-pruner.d.ts +0 -62
  929. package/dist/lib/lanes/outpost-worktree-pruner.js +0 -1201
  930. package/dist/lib/lanes/profile.d.ts +0 -69
  931. package/dist/lib/lanes/profile.js +0 -552
  932. package/dist/lib/lanes/provider-rejection.d.ts +0 -86
  933. package/dist/lib/lanes/provider-rejection.js +0 -286
  934. package/dist/lib/lanes/questions.d.ts +0 -90
  935. package/dist/lib/lanes/questions.js +0 -384
  936. package/dist/lib/lanes/quota.d.ts +0 -134
  937. package/dist/lib/lanes/quota.js +0 -471
  938. package/dist/lib/lanes/reconcile-install.d.ts +0 -90
  939. package/dist/lib/lanes/reconcile-install.js +0 -257
  940. package/dist/lib/lanes/reconcile.d.ts +0 -155
  941. package/dist/lib/lanes/reconcile.js +0 -3193
  942. package/dist/lib/lanes/registry-flag.d.ts +0 -29
  943. package/dist/lib/lanes/registry-flag.js +0 -139
  944. package/dist/lib/lanes/registry-persona.d.ts +0 -20
  945. package/dist/lib/lanes/registry-persona.js +0 -329
  946. package/dist/lib/lanes/registry.d.ts +0 -122
  947. package/dist/lib/lanes/registry.js +0 -570
  948. package/dist/lib/lanes/reviews.d.ts +0 -38
  949. package/dist/lib/lanes/reviews.js +0 -395
  950. package/dist/lib/lanes/runaway-tool-guard.d.ts +0 -38
  951. package/dist/lib/lanes/runaway-tool-guard.js +0 -284
  952. package/dist/lib/lanes/session-relink.d.ts +0 -25
  953. package/dist/lib/lanes/session-relink.js +0 -216
  954. package/dist/lib/lanes/spawn.d.ts +0 -350
  955. package/dist/lib/lanes/spawn.js +0 -2643
  956. package/dist/lib/lanes/ssm-command-context.d.ts +0 -12
  957. package/dist/lib/lanes/ssm-command-context.js +0 -52
  958. package/dist/lib/lanes/store.d.ts +0 -91
  959. package/dist/lib/lanes/store.js +0 -1811
  960. package/dist/lib/lanes/stories.d.ts +0 -23
  961. package/dist/lib/lanes/stories.js +0 -92
  962. package/dist/lib/lanes/story-ledger.d.ts +0 -80
  963. package/dist/lib/lanes/story-ledger.js +0 -815
  964. package/dist/lib/lanes/story-switch.d.ts +0 -21
  965. package/dist/lib/lanes/story-switch.js +0 -75
  966. package/dist/lib/lanes/text-scan.d.ts +0 -11
  967. package/dist/lib/lanes/text-scan.js +0 -103
  968. package/dist/lib/lanes/throttle.d.ts +0 -116
  969. package/dist/lib/lanes/throttle.js +0 -437
  970. package/dist/lib/lanes/timestamp.d.ts +0 -3
  971. package/dist/lib/lanes/timestamp.js +0 -26
  972. package/dist/lib/lanes/tracker-checks.d.ts +0 -77
  973. package/dist/lib/lanes/tracker-checks.js +0 -134
  974. package/dist/lib/lanes/tracker-report-state.d.ts +0 -10
  975. package/dist/lib/lanes/tracker-report-state.js +0 -124
  976. package/dist/lib/lanes/tracker-report.d.ts +0 -203
  977. package/dist/lib/lanes/tracker-report.js +0 -522
  978. package/dist/lib/lanes/tracker-store.d.ts +0 -18
  979. package/dist/lib/lanes/tracker-store.js +0 -106
  980. package/dist/lib/lanes/types.d.ts +0 -1020
  981. package/dist/lib/lanes/types.js +0 -417
  982. package/dist/lib/lanes/wait.d.ts +0 -39
  983. package/dist/lib/lanes/wait.js +0 -159
  984. package/dist/lib/lanes/watch.d.ts +0 -39
  985. package/dist/lib/lanes/watch.js +0 -249
  986. package/dist/lib/lanes/watcher-main.d.ts +0 -11
  987. package/dist/lib/lanes/watcher-main.js +0 -108
  988. package/dist/lib/lanes/watcher.d.ts +0 -287
  989. package/dist/lib/lanes/watcher.js +0 -1972
  990. package/dist/lib/mesh/live/daemon/config.d.ts +0 -36
  991. package/dist/lib/mesh/live/daemon/config.js +0 -120
  992. package/dist/lib/mesh/live/daemon/legacy-listen.d.ts +0 -43
  993. package/dist/lib/mesh/live/daemon/legacy-listen.js +0 -89
  994. package/dist/lib/mesh/live/daemon/live-cache.d.ts +0 -26
  995. package/dist/lib/mesh/live/daemon/live-cache.js +0 -116
  996. package/dist/lib/mesh/live/daemon/mqtt-events.d.ts +0 -7
  997. package/dist/lib/mesh/live/daemon/mqtt-events.js +0 -2
  998. package/dist/lib/mesh/live/daemon/mqtt-events.test-d.d.ts +0 -2
  999. package/dist/lib/mesh/live/daemon/mqtt-events.test-d.js +0 -10
  1000. package/dist/lib/mesh/live/daemon/version-drift.d.ts +0 -5
  1001. package/dist/lib/mesh/live/daemon/version-drift.js +0 -47
  1002. package/dist/lib/mesh/live/daemon/work-subscribe.d.ts +0 -32
  1003. package/dist/lib/mesh/live/daemon/work-subscribe.js +0 -262
  1004. package/dist/lib/mesh/live/report-summary.d.ts +0 -45
  1005. package/dist/lib/mesh/live/report-summary.js +0 -234
  1006. package/dist/lib/mesh/live/session-seq.d.ts +0 -4
  1007. package/dist/lib/mesh/live/session-seq.js +0 -33
  1008. package/dist/lib/mesh/project-board.d.ts +0 -65
  1009. package/dist/lib/mesh/project-board.js +0 -181
  1010. package/dist/lib/mesh/story-status.d.ts +0 -22
  1011. package/dist/lib/mesh/story-status.js +0 -49
  1012. package/dist/lib/monitor.d.ts +0 -149
  1013. package/dist/lib/monitor.js +0 -519
  1014. package/dist/lib/node-binary.d.ts +0 -50
  1015. package/dist/lib/node-binary.js +0 -133
  1016. package/dist/lib/notify-recipient.d.ts +0 -7
  1017. package/dist/lib/notify-recipient.js +0 -11
  1018. package/dist/lib/onboarding/checkpoint.d.ts +0 -13
  1019. package/dist/lib/onboarding/checkpoint.js +0 -44
  1020. package/dist/lib/onboarding/cli/onboard.d.ts +0 -53
  1021. package/dist/lib/onboarding/cli/onboard.js +0 -135
  1022. package/dist/lib/onboarding/cli/prompts.d.ts +0 -28
  1023. package/dist/lib/onboarding/cli/prompts.js +0 -83
  1024. package/dist/lib/onboarding/errors.d.ts +0 -34
  1025. package/dist/lib/onboarding/errors.js +0 -59
  1026. package/dist/lib/onboarding/index.d.ts +0 -13
  1027. package/dist/lib/onboarding/index.js +0 -13
  1028. package/dist/lib/onboarding/orchestrator.d.ts +0 -47
  1029. package/dist/lib/onboarding/orchestrator.js +0 -569
  1030. package/dist/lib/onboarding/types.d.ts +0 -79
  1031. package/dist/lib/onboarding/types.js +0 -8
  1032. package/dist/lib/policy-validator.d.ts +0 -7
  1033. package/dist/lib/policy-validator.js +0 -187
  1034. package/dist/lib/process-flag-company-context.d.ts +0 -8
  1035. package/dist/lib/process-flag-company-context.js +0 -67
  1036. package/dist/lib/report-publish.d.ts +0 -175
  1037. package/dist/lib/report-publish.js +0 -421
  1038. package/dist/lib/report-run.d.ts +0 -62
  1039. package/dist/lib/report-run.js +0 -123
  1040. package/dist/lib/report-snapshot.d.ts +0 -12
  1041. package/dist/lib/report-snapshot.js +0 -135
  1042. package/dist/lib/report-templates.d.ts +0 -9
  1043. package/dist/lib/report-templates.js +0 -21
  1044. package/dist/lib/scaffold-cli-floor.d.ts +0 -8
  1045. package/dist/lib/scaffold-cli-floor.js +0 -50
  1046. package/dist/lib/search-index/collection-path-repair-flag.d.ts +0 -4
  1047. package/dist/lib/search-index/collection-path-repair-flag.js +0 -7
  1048. package/dist/lib/search-index/embed-lock.d.ts +0 -32
  1049. package/dist/lib/search-index/embed-lock.js +0 -286
  1050. package/dist/lib/search-index/load-gate.d.ts +0 -57
  1051. package/dist/lib/search-index/load-gate.js +0 -270
  1052. package/dist/lib/search-index/max-doc-bytes.d.ts +0 -219
  1053. package/dist/lib/search-index/max-doc-bytes.js +0 -463
  1054. package/dist/lib/search-index/qmd-exit-diagnostics.d.ts +0 -5
  1055. package/dist/lib/search-index/qmd-exit-diagnostics.js +0 -40
  1056. package/dist/lib/search-index/reindex-single-flight-flag.d.ts +0 -5
  1057. package/dist/lib/search-index/reindex-single-flight-flag.js +0 -8
  1058. package/dist/lib/service-manager/index.d.ts +0 -42
  1059. package/dist/lib/service-manager/index.js +0 -105
  1060. package/dist/lib/service-manager/launchd.d.ts +0 -81
  1061. package/dist/lib/service-manager/launchd.js +0 -212
  1062. package/dist/lib/service-manager/systemd.d.ts +0 -19
  1063. package/dist/lib/service-manager/systemd.js +0 -72
  1064. package/dist/lib/service-manager/types.d.ts +0 -34
  1065. package/dist/lib/service-manager/types.js +0 -26
  1066. package/dist/lib/test-utils/isolated-flag-company-context.d.ts +0 -3
  1067. package/dist/lib/test-utils/isolated-flag-company-context.js +0 -18
  1068. package/dist/lib/work-context/bind-best.d.ts +0 -66
  1069. package/dist/lib/work-context/bind-best.js +0 -344
  1070. package/dist/lib/work-context/bind-calling-session.d.ts +0 -26
  1071. package/dist/lib/work-context/bind-calling-session.js +0 -63
  1072. package/dist/lib/work-context/company-rebind.d.ts +0 -23
  1073. package/dist/lib/work-context/company-rebind.js +0 -59
  1074. package/dist/lib/work-context/default-company.d.ts +0 -43
  1075. package/dist/lib/work-context/default-company.js +0 -83
  1076. package/dist/lib/work-context/outbox-quarantine-status-flag.d.ts +0 -4
  1077. package/dist/lib/work-context/outbox-quarantine-status-flag.js +0 -7
  1078. package/dist/lib/work-context/prd-sync.d.ts +0 -56
  1079. package/dist/lib/work-context/prd-sync.js +0 -197
  1080. package/dist/lib/work-context/preflight-contract.d.ts +0 -28
  1081. package/dist/lib/work-context/preflight-contract.js +0 -85
  1082. package/dist/lib/work-context/prompt-rebind.d.ts +0 -25
  1083. package/dist/lib/work-context/prompt-rebind.js +0 -85
  1084. package/dist/lib/work-context/windows-acl.d.ts +0 -123
  1085. package/dist/lib/work-context/windows-acl.js +0 -425
  1086. package/dist/lib/workers-registry/read.d.ts +0 -15
  1087. package/dist/lib/workers-registry/read.js +0 -17
  1088. package/dist/native-fast-route.d.ts +0 -7
  1089. package/dist/native-fast-route.js +0 -45
  1090. package/dist/node-network-compat-core.d.ts +0 -12
  1091. package/dist/node-network-compat-core.js +0 -41
  1092. package/dist/node-network-compat-fast.d.ts +0 -7
  1093. package/dist/node-network-compat-fast.js +0 -23
  1094. package/dist/secrets-env-fast-path.d.ts +0 -5
  1095. package/dist/secrets-env-fast-path.js +0 -16
  1096. package/dist/secrets-env-fast-route.d.ts +0 -18
  1097. package/dist/secrets-env-fast-route.js +0 -54
  1098. package/dist/utils/checkpoint-stamp-write-error.d.ts +0 -28
  1099. package/dist/utils/checkpoint-stamp-write-error.js +0 -99
  1100. package/dist/utils/cli-network-lifecycle.d.ts +0 -4
  1101. package/dist/utils/cli-network-lifecycle.js +0 -11
  1102. package/dist/utils/cognito-refresh-sentry.d.ts +0 -3
  1103. package/dist/utils/cognito-refresh-sentry.js +0 -49
  1104. package/dist/utils/console-origin.d.ts +0 -9
  1105. package/dist/utils/console-origin.js +0 -28
  1106. package/dist/utils/exclusive-lock.d.ts +0 -32
  1107. package/dist/utils/exclusive-lock.js +0 -75
  1108. package/dist/utils/fast-stream-errors.d.ts +0 -12
  1109. package/dist/utils/fast-stream-errors.js +0 -18
  1110. package/dist/utils/files-browse-acl.d.ts +0 -5
  1111. package/dist/utils/files-browse-acl.js +0 -11
  1112. package/dist/utils/hq-core-yaml.d.ts +0 -10
  1113. package/dist/utils/hq-core-yaml.js +0 -40
  1114. package/dist/utils/hq-root-resolver.d.ts +0 -13
  1115. package/dist/utils/hq-root-resolver.js +0 -103
  1116. package/dist/utils/redact-url.d.ts +0 -14
  1117. package/dist/utils/redact-url.js +0 -218
  1118. package/dist/utils/scaffold-fast-import-guard.d.ts +0 -2
  1119. package/dist/utils/scaffold-fast-import-guard.js +0 -40
  1120. package/dist/utils/scaffold-packlist-guard.d.ts +0 -7
  1121. package/dist/utils/scaffold-packlist-guard.js +0 -23
  1122. package/dist/utils/scaffold-sibling-references.d.ts +0 -22
  1123. package/dist/utils/scaffold-sibling-references.js +0 -156
  1124. package/dist/utils/secret-load-availability.d.ts +0 -8
  1125. package/dist/utils/secret-load-availability.js +0 -54
  1126. package/dist/utils/staged-install.d.ts +0 -34
  1127. package/dist/utils/staged-install.js +0 -346
  1128. package/dist/utils/staged-npm-install.d.ts +0 -16
  1129. package/dist/utils/staged-npm-install.js +0 -264
  1130. package/dist/utils/sync-log-sources.d.ts +0 -15
  1131. package/dist/utils/sync-log-sources.js +0 -36
  1132. package/dist/utils/table-width.d.ts +0 -7
  1133. package/dist/utils/table-width.js +0 -15
  1134. package/dist/utils/update-command-supervisor.cjs +0 -247
  1135. package/dist/utils/upload-author.d.ts +0 -15
  1136. package/dist/utils/upload-author.js +0 -39
  1137. package/dist/utils/version-report.d.ts +0 -27
  1138. package/dist/utils/version-report.js +0 -105
  1139. package/dist/version-request.d.ts +0 -14
  1140. package/dist/version-request.js +0 -36
  1141. package/scripts/mesh-daemon-if-stale.mjs +0 -20
  1142. package/templates/reports/blank.md +0 -3
  1143. package/templates/reports/daily-digest.md +0 -11
  1144. package/templates/runbooks/update-report.md +0 -21
@@ -1,1086 +0,0 @@
1
- /**
2
- * Merge numbered entity copies (`<slug> 2.md`) into their original file and
3
- * delete them (CO-54, owner decision CO-D-007 option 2).
4
- *
5
- * Gated by `checkpoint.ontology.merge-copies`. A copy is a file named
6
- * `<slug> <n>.md` next to `<slug>.md` of the same type, with the same `id`,
7
- * in one duplicate group. Other members of a group are never touched.
8
- *
9
- * Two steps, run separately so sync can push the merged original before its
10
- * copy goes away:
11
- *
12
- * - merge: the copy's fresh aliases, back-references and relationship lines
13
- * are added to the original, `signal_count` takes the higher value, and
14
- * entity files that link to the copy are re-pointed at the original. Every
15
- * rewritten file is recorded in the outbox before it is written, so sync
16
- * pushes it. Keys the checkpoint does not own keep the original's value.
17
- * - delete: a copy is deleted from the vault, by exact key, only when merging
18
- * it again would change nothing and no entity file or signal links to it.
19
- * The vault keeps every old version. The local file goes after the vault
20
- * delete succeeds, or when the vault no longer has the key.
21
- *
22
- * Copies of one original merge in path order, each into the result of the
23
- * previous one, and none of them counts as holding a name the others move.
24
- * A copy whose body has lines the merged original lacks (prose the merge does
25
- * not carry) is merged but never deleted. A copy linked from any file the
26
- * merge cannot rewrite (a copy, a knowledge file, a signal) is held.
27
- *
28
- * A signal whose `entity_refs` names a copy holds that copy: signals are
29
- * server-owned, so the ref cannot be re-pointed from here. With `rewriteRefs`
30
- * (flag `checkpoint.ontology.merge-rewrite-refs`) invoice and bill links and
31
- * knowledge links are re-pointed at the survivor and the survivor receives
32
- * the copy's `external_ids` and `web_domains`. A signal ref or a link from a
33
- * source still holds the pair (`server_owned_refs`): the sync client cannot
34
- * push those files. A link from another copy or an external id conflict also
35
- * holds a pair.
36
- *
37
- * With `pairKind: "variants"` (flag `checkpoint.ontology.merge-variants`) the
38
- * pairs are two-file duplicate groups whose canonical names differ only in
39
- * case, spacing or punctuation; the survivor is the spaced name, then the
40
- * higher `signal_count`, then path order. The copy's canonical name becomes
41
- * an alias of the survivor. Merge and delete work as for numbered copies.
42
- *
43
- * With `pairKind: "listed"` (flag `checkpoint.ontology.merge-listed-pairs`)
44
- * the pairs are exactly the `only` entries, reviewed by a person: no finder
45
- * runs, so the names may differ. Each entry must name two entities of one
46
- * type; a copy listed twice, or listed both as a copy and as an original, is
47
- * skipped as `listed_conflict`. Holds, merge and delete work as for numbered
48
- * copies.
49
- */
50
- import * as fs from "node:fs";
51
- import * as path from "node:path";
52
- import { isDeepStrictEqual } from "node:util";
53
- import { freshAliases, ownNames } from "./aliases.js";
54
- import { entitiesRoot, safeWriteFile } from "./company.js";
55
- import { appendBackRefs, OWNED_KEYS, parseEntityFile, patchEntityFile, setIdentityKeys } from "./entity-file.js";
56
- import { isWritableEntityType, normalizeEntityName } from "./identity.js";
57
- import { findDuplicateGroups, readBackRefs, recordOutbox } from "./multi-writer.js";
58
- import { buildEntityIndex, listSignalFiles, readSignal } from "./tree.js";
59
- export const MERGE_COPIES_FLAG = "checkpoint.ontology.merge-copies";
60
- /**
61
- * `merge-copies --variants`: merge two-file duplicate groups whose canonical
62
- * names differ only in spacing, case or punctuation (CO-65).
63
- */
64
- export const MERGE_VARIANTS_FLAG = "checkpoint.ontology.merge-variants";
65
- /** `merge-copies --listed`: merge exactly the reviewed `--only` pairs (CO-74). */
66
- export const MERGE_LISTED_PAIRS_FLAG = "checkpoint.ontology.merge-listed-pairs";
67
- /**
68
- * `merge-copies --rewrite-refs`: re-point signal `entity_refs`, invoice and
69
- * bill links, source and knowledge links from a copy to its survivor, and
70
- * carry the copy's `external_ids` and `web_domains` to the survivor.
71
- */
72
- export const MERGE_REWRITE_REFS_FLAG = "checkpoint.ontology.merge-rewrite-refs";
73
- /** `<slug> <n>.md`, the name a file manager gives a second copy. */
74
- const COPY_NAME = /^(.+) (\d+)\.md$/;
75
- /** A relationship list item with a link, as the gardener and checkpoint write them. */
76
- const LINK_ITEM = /^- .*\]\([^)\n]+\)\s*$/;
77
- const BACKREF_ITEM = /^- Referenced in \[/;
78
- const MD_LINK = /\]\(([^)\n]+)\)/g;
79
- /** Keys that differ between copies for reasons that say nothing about content. */
80
- const IGNORED_KEYS = new Set(["first_seen", "confidence"]);
81
- function sectionLines(body) {
82
- const match = /(^|\n)##\s+Relationships\s*\n([\s\S]*?)(?=\n##\s|$)/.exec(body);
83
- return match ? match[2].split(/\r?\n/).map((line) => line.trimEnd()) : [];
84
- }
85
- function splitBody(content) {
86
- const match = /^(---\r?\n[\s\S]*?\r?\n---\r?\n?)([\s\S]*)$/.exec(content);
87
- return match ? { frontmatter: match[1], body: match[2] } : null;
88
- }
89
- /**
90
- * A line of the copy whose every link points at the copy itself or at its
91
- * original. Moved to the original it would link the survivor to itself or to
92
- * the file about to be deleted, so it is neither moved nor unmerged content.
93
- */
94
- function isPairSelfLine(line, pair) {
95
- const targets = [...line.matchAll(MD_LINK)].map((match) => resolveLink(pair.copy, match[1]));
96
- return targets.length > 0 && targets.every((target) => target === pair.copy || target === pair.original);
97
- }
98
- /** Relationship lines of the copy that the original lacks (back-references and self links excluded). */
99
- function missingRelationshipLines(originalContent, copyContent, pair) {
100
- const original = splitBody(originalContent);
101
- const copy = splitBody(copyContent);
102
- if (!original || !copy)
103
- return [];
104
- const have = new Set(original.body.split(/\r?\n/).map((line) => line.trimEnd()));
105
- const out = [];
106
- for (const line of sectionLines(copy.body)) {
107
- if (!LINK_ITEM.test(line) || BACKREF_ITEM.test(line) || have.has(line) || isPairSelfLine(line, pair))
108
- continue;
109
- have.add(line);
110
- out.push(line);
111
- }
112
- return out;
113
- }
114
- /** Append lines to `## Relationships`, creating the section when it is missing. */
115
- function appendRelationshipLines(content, lines) {
116
- if (lines.length === 0)
117
- return content;
118
- const parts = splitBody(content);
119
- const body = parts.body;
120
- const section = /(^|\n)(##\s+Relationships\s*\n)([\s\S]*?)(?=\n##\s|\s*$)/.exec(body);
121
- let next;
122
- if (section) {
123
- const before = body.slice(0, section.index + section[1].length);
124
- const kept = section[3].replace(/\s+$/, "");
125
- const after = body.slice(section.index + section[0].length);
126
- next = `${before}${section[2]}${kept ? `${kept}\n${lines.join("\n")}` : lines.join("\n")}\n${after}`;
127
- }
128
- else {
129
- const trimmed = body.replace(/\s+$/, "");
130
- next = `${trimmed.length > 0 ? `${trimmed}\n\n` : "\n"}## Relationships\n\n${lines.join("\n")}\n`;
131
- }
132
- return `${parts.frontmatter}${next}`;
133
- }
134
- /** Remove one entity from the name indexes so its names stop counting as taken. */
135
- function unindex(index, rel) {
136
- index.byRel.delete(rel);
137
- for (const map of [index.canonical, index.alias, index.squashed]) {
138
- for (const [key, rels] of map) {
139
- if (!rels.delete(rel))
140
- continue;
141
- if (rels.size === 0)
142
- map.delete(key);
143
- }
144
- }
145
- }
146
- /** Copies in scope, and the ones skipped with a reason. Read-only. */
147
- export function findCopyPairs(index) {
148
- const groupOf = new Map();
149
- findDuplicateGroups(index).forEach((group, i) => {
150
- for (const rel of group.paths)
151
- groupOf.set(rel, i);
152
- });
153
- const pairs = [];
154
- const skipped = [];
155
- const candidates = [...index.byRel.values()]
156
- .filter((entity) => isWritableEntityType(entity.type) && COPY_NAME.test(path.posix.basename(entity.rel)))
157
- .sort((a, b) => a.rel.localeCompare(b.rel));
158
- for (const copy of candidates) {
159
- const base = COPY_NAME.exec(path.posix.basename(copy.rel))[1];
160
- const original = `${path.posix.dirname(copy.rel)}/${base}.md`;
161
- const target = index.byRel.get(original);
162
- if (!target) {
163
- skipped.push({ copy: copy.rel, reason: index.invalid.has(original) ? "original_invalid" : "no_original" });
164
- }
165
- else if (target.id !== copy.id || target.type !== copy.type) {
166
- skipped.push({ copy: copy.rel, reason: "identity_differs" });
167
- }
168
- else if (groupOf.get(copy.rel) === undefined || groupOf.get(copy.rel) !== groupOf.get(original)) {
169
- skipped.push({ copy: copy.rel, reason: "not_in_duplicate_group" });
170
- }
171
- else {
172
- pairs.push({ type: copy.type, copy: copy.rel, original });
173
- }
174
- }
175
- return { pairs, skipped };
176
- }
177
- /** The canonical name with case, spacing and punctuation removed. */
178
- function compactName(name, type) {
179
- return normalizeEntityName(name, type).replace(/[^\p{L}\p{N}]/gu, "");
180
- }
181
- /**
182
- * Two-file duplicate groups whose canonical names differ only in case, spacing
183
- * or punctuation. Numbered copies are left to `findCopyPairs`. Read-only.
184
- */
185
- export function findVariantPairs(index) {
186
- const pairs = [];
187
- const skipped = [];
188
- for (const group of findDuplicateGroups(index)) {
189
- const paths = [...group.paths].sort((a, b) => a.localeCompare(b));
190
- const numbered = paths.filter((rel) => COPY_NAME.test(path.posix.basename(rel)));
191
- if (numbered.length > 0) {
192
- for (const rel of numbered)
193
- skipped.push({ copy: rel, reason: "numbered_copy" });
194
- continue;
195
- }
196
- if (paths.length !== 2) {
197
- skipped.push({ copy: paths[0], reason: "group_size" });
198
- continue;
199
- }
200
- const left = index.byRel.get(paths[0]);
201
- const right = index.byRel.get(paths[1]);
202
- if (!left || !right) {
203
- skipped.push({ copy: paths[0], reason: "no_original" });
204
- continue;
205
- }
206
- if (left.type !== right.type) {
207
- skipped.push({ copy: paths[0], reason: "type_differs" });
208
- continue;
209
- }
210
- const leftName = compactName(left.canonical_name, left.type);
211
- const rightName = compactName(right.canonical_name, right.type);
212
- if (leftName === "" || rightName === "" || leftName !== rightName) {
213
- skipped.push({ copy: paths[0], reason: "names_differ" });
214
- continue;
215
- }
216
- const leftSpaced = left.canonical_name.includes(" ");
217
- const rightSpaced = right.canonical_name.includes(" ");
218
- let originalRel = paths[0];
219
- let copyRel = paths[1];
220
- if (leftSpaced !== rightSpaced) {
221
- originalRel = leftSpaced ? paths[0] : paths[1];
222
- copyRel = leftSpaced ? paths[1] : paths[0];
223
- }
224
- else if (left.signal_count !== right.signal_count) {
225
- originalRel = left.signal_count > right.signal_count ? paths[0] : paths[1];
226
- copyRel = originalRel === paths[0] ? paths[1] : paths[0];
227
- }
228
- pairs.push({ type: left.type, copy: copyRel, original: originalRel });
229
- }
230
- pairs.sort((a, b) => a.copy.localeCompare(b.copy));
231
- return { pairs, skipped };
232
- }
233
- /**
234
- * The reviewed pairs themselves, for `pairKind: "listed"`. An entry is kept
235
- * when both files are indexed entities of one writable type. Read-only.
236
- */
237
- export function findListedPairs(index, only) {
238
- const pairs = [];
239
- const skipped = [];
240
- const copyCount = new Map();
241
- for (const entry of only)
242
- copyCount.set(entry.copy, (copyCount.get(entry.copy) ?? 0) + 1);
243
- const originals = new Set(only.map((entry) => entry.original));
244
- for (const entry of only) {
245
- const copy = index.byRel.get(entry.copy);
246
- const original = index.byRel.get(entry.original);
247
- if (copyCount.get(entry.copy) > 1 || originals.has(entry.copy) || entry.copy === entry.original) {
248
- skipped.push({ copy: entry.copy, reason: "listed_conflict" });
249
- }
250
- else if (!copy || !original) {
251
- skipped.push({ copy: entry.copy, reason: index.invalid.has(entry.original) ? "original_invalid" : "no_original" });
252
- }
253
- else if (copy.type !== original.type || !isWritableEntityType(copy.type)) {
254
- skipped.push({ copy: entry.copy, reason: "type_differs" });
255
- }
256
- else {
257
- pairs.push({ type: copy.type, copy: entry.copy, original: entry.original });
258
- }
259
- }
260
- pairs.sort((a, b) => a.copy.localeCompare(b.copy));
261
- return { pairs, skipped };
262
- }
263
- /** Resolve a relative link in `fromRel` to a company-relative path, or null. */
264
- function resolveLink(fromRel, href) {
265
- if (/^[a-z][a-z0-9+.-]*:/i.test(href) || href.startsWith("#") || href.startsWith("/"))
266
- return null;
267
- let decoded;
268
- try {
269
- decoded = decodeURI(href.split("#")[0]);
270
- }
271
- catch {
272
- return null;
273
- }
274
- const resolved = path.posix.normalize(path.posix.join(path.posix.dirname(fromRel), decoded));
275
- return resolved.startsWith("..") ? null : resolved;
276
- }
277
- function listEntityFiles(company) {
278
- const root = entitiesRoot(company);
279
- const out = [];
280
- let types;
281
- try {
282
- types = fs.readdirSync(root, { withFileTypes: true });
283
- }
284
- catch (error) {
285
- if (error.code === "ENOENT")
286
- return out;
287
- throw error;
288
- }
289
- for (const type of types.filter((entry) => entry.isDirectory())) {
290
- for (const file of fs.readdirSync(path.join(root, type.name), { withFileTypes: true })) {
291
- if (file.isFile() && file.name.endsWith(".md"))
292
- out.push(`ontology/entities/${type.name}/${file.name}`);
293
- }
294
- }
295
- return out.sort();
296
- }
297
- /** Company-relative `.md` files outside the entity tree and the rendered brief. */
298
- function listOtherFiles(company) {
299
- const out = [];
300
- const walk = (rel) => {
301
- for (const entry of fs.readdirSync(path.join(company.dir, rel), { withFileTypes: true })) {
302
- if (entry.name.startsWith(".") || entry.name === "node_modules")
303
- continue;
304
- const child = rel ? `${rel}/${entry.name}` : entry.name;
305
- if (entry.isDirectory()) {
306
- if (child !== "ontology/entities")
307
- walk(child);
308
- }
309
- else if (entry.isFile() && entry.name.endsWith(".md") && child !== "company-brief.md") {
310
- out.push(child);
311
- }
312
- }
313
- };
314
- walk("");
315
- return out.sort();
316
- }
317
- /**
318
- * Files outside the entity tree that link to a copy, by markdown link,
319
- * `[[ontology/entities/...]]` annotation or a front-matter `path:` entry.
320
- * These files are not the merge's to rewrite, so a copy they name is held.
321
- */
322
- function scanOtherLinks(company, copies) {
323
- const out = new Map();
324
- if (copies.size === 0)
325
- return out;
326
- const names = [...new Set([...copies].map((copy) => path.posix.basename(copy, ".md")))];
327
- const add = (target, rel) => {
328
- if (!copies.has(target))
329
- return;
330
- let set = out.get(target);
331
- if (!set)
332
- out.set(target, (set = new Set()));
333
- set.add(rel);
334
- };
335
- for (const rel of listOtherFiles(company)) {
336
- const content = read(company, rel);
337
- if (!names.some((name) => content.includes(name) || content.includes(encodeURI(name))))
338
- continue;
339
- for (const match of content.matchAll(MD_LINK)) {
340
- const target = resolveLink(rel, match[1]);
341
- if (target)
342
- add(target, rel);
343
- }
344
- for (const match of content.matchAll(/\[\[(ontology\/entities\/[^\]|\n]+?)(?:\|[^\]\n]*)?\]\]/g)) {
345
- add(match[1].endsWith(".md") ? match[1] : `${match[1]}.md`, rel);
346
- }
347
- for (const match of content.matchAll(/^\s*(?:- )?path:\s*["']?(ontology\/entities\/[^"'\n]+?\.md)["']?\s*$/gm))
348
- add(match[1], rel);
349
- }
350
- return out;
351
- }
352
- function scanLinks(company) {
353
- const scan = { inbound: new Map(), broken: 0 };
354
- for (const rel of listEntityFiles(company)) {
355
- const content = fs.readFileSync(path.join(company.dir, rel), "utf8");
356
- for (const match of content.matchAll(MD_LINK)) {
357
- const target = resolveLink(rel, match[1]);
358
- if (!target)
359
- continue;
360
- if (!fs.existsSync(path.join(company.dir, target)))
361
- scan.broken += 1;
362
- if (target === rel)
363
- continue;
364
- let set = scan.inbound.get(target);
365
- if (!set)
366
- scan.inbound.set(target, (set = new Set()));
367
- set.add(rel);
368
- }
369
- }
370
- return scan;
371
- }
372
- /** Signal files whose `entity_refs` name a copy, keyed by the copy's path. */
373
- function scanSignalRefs(company, copies) {
374
- const out = new Map();
375
- if (copies.size === 0)
376
- return out;
377
- const byRef = new Map();
378
- for (const copy of copies) {
379
- const [, , type, file] = copy.split("/");
380
- byRef.set(`${type}/${file.slice(0, -3)}`, copy);
381
- }
382
- for (const rel of listSignalFiles(company.dir)) {
383
- for (const ref of readSignal(company.dir, rel)?.refs ?? []) {
384
- // Signals write refs both as `type/slug` and as `type/slug.md`.
385
- const copy = byRef.get(ref.endsWith(".md") ? ref.slice(0, -3) : ref);
386
- if (copy)
387
- out.set(copy, [...(out.get(copy) ?? []), rel]);
388
- }
389
- }
390
- return out;
391
- }
392
- /** Re-point every link in `content` that resolves to `copy` at `original`. */
393
- function relink(fromRel, content, copy, original) {
394
- return content.replace(MD_LINK, (whole, href) => {
395
- if (resolveLink(fromRel, href) !== copy)
396
- return whole;
397
- const hash = href.indexOf("#");
398
- const target = hash === -1 ? href : href.slice(0, hash);
399
- const fragment = hash === -1 ? "" : href.slice(hash);
400
- const cut = target.lastIndexOf("/");
401
- const name = path.posix.basename(original);
402
- const encoded = target.slice(cut + 1).includes("%20") ? encodeURI(name) : name;
403
- return `](${target.slice(0, cut + 1)}${encoded}${fragment})`;
404
- });
405
- }
406
- const FRONT_RE = /^---\r?\n([\s\S]*?)\r?\n---(\r?\n|$)/;
407
- const REL_REF = /^(\s*(?:- )?[A-Za-z_][A-Za-z0-9_]*:\s*)(["']?)(\.\.\/[^"'\n]+?\.md)\2\s*$/;
408
- const WIKI_LINK = /\[\[(ontology\/entities\/[^\]|\n]+?)(\|[^\]\n]*)?\]\]/g;
409
- const PATH_LINE = /^(\s*(?:- )?path:\s*)(["']?)(ontology\/entities\/[^"'\n]+?\.md)\2\s*$/;
410
- function frontLines(content) {
411
- const match = FRONT_RE.exec(content);
412
- if (!match)
413
- return null;
414
- return { start: match.index + match[0].indexOf(match[1]), lines: match[1].split(/\r?\n/) };
415
- }
416
- /** Put rewritten front-matter lines back; every byte outside them stays. */
417
- function withFrontLines(content, front, lines, newline) {
418
- const originalLength = front.lines.join(newline).length;
419
- return `${content.slice(0, front.start)}${lines.join(newline)}${content.slice(front.start + originalLength)}`;
420
- }
421
- function fileNewline(content) {
422
- return content.includes("\r\n") ? "\r\n" : "\n";
423
- }
424
- /** In the front matter only, re-point a `../…md` value that resolves to `copy`. */
425
- function rewriteRelRefs(fromRel, content, copy, original) {
426
- const front = frontLines(content);
427
- if (!front)
428
- return content;
429
- const name = path.posix.basename(original);
430
- let changed = false;
431
- const lines = front.lines.map((line) => {
432
- const match = REL_REF.exec(line);
433
- if (!match || resolveLink(fromRel, match[3]) !== copy)
434
- return line;
435
- const value = match[3];
436
- const cut = value.lastIndexOf("/");
437
- changed = true;
438
- return `${match[1]}${match[2]}${value.slice(0, cut + 1)}${name}${match[2]}`;
439
- });
440
- if (!changed)
441
- return content;
442
- return withFrontLines(content, front, lines, fileNewline(content));
443
- }
444
- /** Entity files whose front matter points at a copy through a relative ref. */
445
- function scanRelRefs(company, copies) {
446
- const out = new Map();
447
- if (copies.size === 0)
448
- return out;
449
- for (const rel of listEntityFiles(company)) {
450
- const front = frontLines(read(company, rel));
451
- if (!front)
452
- continue;
453
- for (const line of front.lines) {
454
- const match = REL_REF.exec(line);
455
- if (!match)
456
- continue;
457
- const target = resolveLink(rel, match[3]);
458
- if (!target || !copies.has(target))
459
- continue;
460
- let set = out.get(target);
461
- if (!set)
462
- out.set(target, (set = new Set()));
463
- set.add(rel);
464
- }
465
- }
466
- return out;
467
- }
468
- function listItemBounds(lines, pathIndex) {
469
- let start = pathIndex;
470
- let dashIndent = -1;
471
- while (start >= 0) {
472
- const dash = /^(\s*)- /.exec(lines[start]);
473
- if (dash) {
474
- dashIndent = dash[1].length;
475
- break;
476
- }
477
- start -= 1;
478
- }
479
- if (dashIndent < 0)
480
- return null;
481
- let keyIndent = -1;
482
- for (let i = start + 1; i < lines.length; i += 1) {
483
- if (lines[i].trim() === "")
484
- continue;
485
- const indent = /^(\s*)/.exec(lines[i])[1].length;
486
- if (indent <= dashIndent)
487
- break;
488
- keyIndent = indent;
489
- break;
490
- }
491
- if (keyIndent < 0)
492
- keyIndent = dashIndent + 1;
493
- let end = start + 1;
494
- while (end < lines.length) {
495
- const line = lines[end];
496
- const dash = /^(\s*)- /.exec(line);
497
- if (dash && dash[1].length === dashIndent)
498
- break;
499
- if (line.trim() !== "" && /^(\s*)/.exec(line)[1].length < keyIndent)
500
- break;
501
- end += 1;
502
- }
503
- return { start, end };
504
- }
505
- function rewriteWikiLinks(content, copy, original) {
506
- WIKI_LINK.lastIndex = 0;
507
- return content.replace(WIKI_LINK, (whole, target, label) => {
508
- const resolved = target.endsWith(".md") ? target : `${target}.md`;
509
- if (resolved !== copy)
510
- return whole;
511
- const next = target.endsWith(".md") ? original : original.slice(0, -3);
512
- return `[[${next}${label ?? ""}]]`;
513
- });
514
- }
515
- /**
516
- * Re-point markdown links, wiki-links, annotation `path:` lines and, when both
517
- * ids are known, the `id:` of that same list item.
518
- */
519
- function rewriteOtherFile(fromRel, content, copy, original, copyId, originalId) {
520
- const linked = rewriteWikiLinks(relink(fromRel, content, copy, original), copy, original);
521
- const newline = fileNewline(content);
522
- const lines = linked.split(/\r?\n/);
523
- for (let i = 0; i < lines.length; i += 1) {
524
- const pathMatch = PATH_LINE.exec(lines[i]);
525
- if (!pathMatch || pathMatch[3] !== copy)
526
- continue;
527
- lines[i] = `${pathMatch[1]}${pathMatch[2]}${original}${pathMatch[2]}`;
528
- if (typeof copyId !== "string" || typeof originalId !== "string")
529
- continue;
530
- const bounds = listItemBounds(lines, i);
531
- if (!bounds)
532
- continue;
533
- for (let j = bounds.start; j < bounds.end; j += 1) {
534
- const idMatch = /^(\s*id:\s*)(["']?)([^"'\n]*?)\2(\s*)$/.exec(lines[j]);
535
- if (idMatch && idMatch[3] === copyId)
536
- lines[j] = `${idMatch[1]}${idMatch[2]}${originalId}${idMatch[2]}${idMatch[4]}`;
537
- }
538
- }
539
- return lines.join(newline);
540
- }
541
- /** True when `content` still names `copy` by a link, wiki-link, path or front-matter ref. */
542
- function referencesCopy(fromRel, content, copy) {
543
- MD_LINK.lastIndex = 0;
544
- for (const match of content.matchAll(MD_LINK)) {
545
- if (resolveLink(fromRel, match[1]) === copy)
546
- return true;
547
- }
548
- WIKI_LINK.lastIndex = 0;
549
- for (const match of content.matchAll(WIKI_LINK)) {
550
- const target = match[1].endsWith(".md") ? match[1] : `${match[1]}.md`;
551
- if (target === copy)
552
- return true;
553
- }
554
- for (const line of content.split(/\r?\n/)) {
555
- const pathMatch = PATH_LINE.exec(line);
556
- if (pathMatch && pathMatch[3] === copy)
557
- return true;
558
- }
559
- const front = frontLines(content);
560
- if (front) {
561
- for (const line of front.lines) {
562
- const rel = REL_REF.exec(line);
563
- if (rel && resolveLink(fromRel, rel[3]) === copy)
564
- return true;
565
- }
566
- }
567
- return false;
568
- }
569
- /**
570
- * Signals and sources are written by the server pipeline and the sync
571
- * client never pushes them, so a rewrite made here would not reach the
572
- * vault (hq-cloud cloud-authoritative.ts).
573
- */
574
- function isServerOwnedRel(rel) {
575
- return rel.startsWith("signals/") || rel.startsWith("sources/");
576
- }
577
- const REF_KEYS = new Set(["system", "namespace", "objectType", "recordId"]);
578
- function refKey(ref) {
579
- return `${ref.system}:${ref.namespace}:${ref.recordId}`.toLowerCase();
580
- }
581
- /** An `external_refs` entry, or null when it has another shape (so it is never rewritten). */
582
- function readRef(raw) {
583
- if (raw === null || typeof raw !== "object" || Array.isArray(raw))
584
- return null;
585
- const record = raw;
586
- if (!Object.keys(record).every((key) => REF_KEYS.has(key)))
587
- return null;
588
- if (!Object.values(record).every((value) => typeof value === "string" && value.length > 0))
589
- return null;
590
- if (record.system === undefined || record.namespace === undefined || record.recordId === undefined)
591
- return null;
592
- return record;
593
- }
594
- /** `external_ids` and `web_domains` of a front matter, or "identity_shape". */
595
- function readIdentity(frontmatter) {
596
- let ids = {};
597
- if (frontmatter.external_ids !== undefined) {
598
- const raw = frontmatter.external_ids;
599
- if (raw === null || typeof raw !== "object" || Array.isArray(raw))
600
- return "identity_shape";
601
- ids = {};
602
- for (const [key, value] of Object.entries(raw)) {
603
- if (typeof value !== "string")
604
- return "identity_shape";
605
- ids[key] = value;
606
- }
607
- }
608
- if (frontmatter.web_domains !== undefined) {
609
- if (!Array.isArray(frontmatter.web_domains) || !frontmatter.web_domains.every((domain) => typeof domain === "string")) {
610
- return "identity_shape";
611
- }
612
- }
613
- const domains = frontmatter.web_domains === undefined ? [] : frontmatter.web_domains;
614
- const refs = [];
615
- if (frontmatter.external_refs !== undefined) {
616
- if (!Array.isArray(frontmatter.external_refs))
617
- return "identity_shape";
618
- for (const raw of frontmatter.external_refs) {
619
- const ref = readRef(raw);
620
- if (!ref)
621
- return "identity_shape";
622
- refs.push(ref);
623
- }
624
- }
625
- return { ids, domains, refs };
626
- }
627
- /**
628
- * The survivor's identity after taking in the copy's. Two different ids for
629
- * one provider are a conflict unless `resolution` names one of them as
630
- * primary; the other is then kept in `external_refs`.
631
- */
632
- function unionIdentity(original, copy, resolution) {
633
- const ids = { ...original.ids };
634
- const addIds = [];
635
- const conflicts = [];
636
- const refs = [...original.refs];
637
- const addRefs = [];
638
- const seenRefs = new Set(refs.map(refKey));
639
- const addRef = (ref) => {
640
- const key = refKey(ref);
641
- if (seenRefs.has(key))
642
- return;
643
- seenRefs.add(key);
644
- refs.push(ref);
645
- addRefs.push(key);
646
- };
647
- for (const ref of copy.refs)
648
- addRef(ref);
649
- for (const [key, value] of Object.entries(copy.ids)) {
650
- if (!(key in ids)) {
651
- ids[key] = value;
652
- addIds.push(key);
653
- }
654
- else if (ids[key] !== value) {
655
- const settle = Object.hasOwn(resolution ?? {}, key) ? resolution[key] : undefined;
656
- if (!settle || (settle.primary !== ids[key] && settle.primary !== value)) {
657
- conflicts.push(key);
658
- continue;
659
- }
660
- const secondary = settle.primary === ids[key] ? value : ids[key];
661
- ids[key] = settle.primary;
662
- addRef({
663
- system: key,
664
- namespace: settle.namespace,
665
- ...(settle.object_type !== undefined ? { objectType: settle.object_type } : {}),
666
- recordId: secondary,
667
- });
668
- }
669
- }
670
- const domains = [...original.domains];
671
- const addDomains = [];
672
- const seen = new Set(original.domains.map((domain) => domain.toLowerCase().trim()));
673
- for (const domain of copy.domains) {
674
- const key = domain.toLowerCase().trim();
675
- if (seen.has(key))
676
- continue;
677
- seen.add(key);
678
- domains.push(domain);
679
- addDomains.push(domain);
680
- }
681
- return { ids, domains, refs, addIds, addDomains, addRefs, conflicts };
682
- }
683
- function frontMatterId(content) {
684
- const id = parseEntityFile(content)?.frontmatter.id;
685
- return typeof id === "string" ? id : null;
686
- }
687
- /**
688
- * The original's content with the copy merged in. Never removes anything from
689
- * the original. `siblings` are all copies of the same original; none of them
690
- * counts as holding a name.
691
- */
692
- function mergeCopy(index, pair, siblings, originalContent, copyContent, now) {
693
- const original = parseEntityFile(originalContent);
694
- const copy = parseEntityFile(copyContent);
695
- if (!original || !copy)
696
- return "unparseable";
697
- const copyEntity = index.byRel.get(pair.copy);
698
- const originalEntity = index.byRel.get(pair.original);
699
- if (!copyEntity || !originalEntity)
700
- return "not_indexed";
701
- const scratch = {
702
- ...index,
703
- byRel: new Map(index.byRel),
704
- canonical: new Map([...index.canonical].map(([k, v]) => [k, new Set(v)])),
705
- alias: new Map([...index.alias].map(([k, v]) => [k, new Set(v)])),
706
- squashed: new Map([...index.squashed].map(([k, v]) => [k, new Set(v)])),
707
- };
708
- for (const sibling of siblings)
709
- unindex(scratch, sibling);
710
- const own = ownNames(scratch, pair.original, []);
711
- const names = [copyEntity.canonical_name, ...copyEntity.aliases];
712
- const aliases = freshAliases(scratch, pair.type, pair.original, own, names);
713
- const moved = new Set(aliases.map((alias) => normalizeEntityName(alias, pair.type)));
714
- const dropped = names.filter((name) => {
715
- const normalized = normalizeEntityName(name, pair.type);
716
- return normalized !== "" && !own.has(normalized) && !moved.has(normalized);
717
- });
718
- const withRefs = appendBackRefs(originalContent, readBackRefs(copy.body));
719
- const lines = missingRelationshipLines(withRefs.content, copyContent, pair);
720
- const body = appendRelationshipLines(withRefs.content, lines);
721
- const raise = copyEntity.signal_count > originalEntity.signal_count ? copyEntity.signal_count : undefined;
722
- const patched = patchEntityFile(body, {
723
- addAliases: aliases,
724
- signalCount: copyEntity.signal_count,
725
- lastUpdated: now.toISOString(),
726
- bodyChanged: withRefs.added > 0 || lines.length > 0,
727
- });
728
- if (!patched.ok)
729
- return patched.reason;
730
- const have = new Set(splitBody(patched.content)?.body.split(/\r?\n/).map((line) => line.trim()) ?? []);
731
- // The copy's `# Name` heading is not content: its name moves to an alias.
732
- // The `## Relationships` heading is not content either: its lines count one by one.
733
- const heading = `# ${copyEntity.canonical_name}`;
734
- const leftover = (splitBody(copyContent)?.body.split(/\r?\n/) ?? [])
735
- .map((line) => line.trim())
736
- .filter((line) => line !== "" &&
737
- line !== heading &&
738
- !/^##\s+Relationships$/.test(line) &&
739
- !have.has(line) &&
740
- !(LINK_ITEM.test(line) && !BACKREF_ITEM.test(line) && isPairSelfLine(line, pair))).length;
741
- const keys = [...new Set([...Object.keys(original.frontmatter), ...Object.keys(copy.frontmatter)])].sort();
742
- const kept = keys.filter((key) => !OWNED_KEYS.has(key) && !IGNORED_KEYS.has(key) && !isDeepStrictEqual(original.frontmatter[key], copy.frontmatter[key]));
743
- return {
744
- content: patched.content,
745
- changed: patched.changed,
746
- aliases,
747
- dropped,
748
- backrefs: withRefs.added,
749
- lines: lines.length,
750
- ...(raise !== undefined ? { raise } : {}),
751
- kept,
752
- leftover,
753
- };
754
- }
755
- function read(company, rel) {
756
- return fs.readFileSync(path.join(company.dir, rel), "utf8");
757
- }
758
- /** Links to copies in the company brief (rendered, so reported and not rewritten). */
759
- function briefLinks(company, copies) {
760
- let content;
761
- try {
762
- content = fs.readFileSync(path.join(company.dir, "company-brief.md"), "utf8");
763
- }
764
- catch {
765
- return [];
766
- }
767
- const out = new Set();
768
- for (const match of content.matchAll(MD_LINK)) {
769
- const target = resolveLink("company-brief.md", match[1]);
770
- if (target && copies.has(target))
771
- out.add(target);
772
- }
773
- return [...out].sort();
774
- }
775
- function plan(company, index, pairs, allPairs, now, rewriteRefs, resolutions = new Map()) {
776
- const links = scanLinks(company);
777
- const copies = new Set(allPairs.map((pair) => pair.copy));
778
- const other = scanOtherLinks(company, copies);
779
- if (rewriteRefs) {
780
- for (const [copy, rels] of scanRelRefs(company, copies)) {
781
- let set = other.get(copy);
782
- if (!set)
783
- other.set(copy, (set = new Set()));
784
- for (const rel of rels)
785
- set.add(rel);
786
- }
787
- }
788
- const signalRefs = scanSignalRefs(company, copies);
789
- const siblingsOf = new Map();
790
- for (const pair of allPairs)
791
- siblingsOf.set(pair.original, [...(siblingsOf.get(pair.original) ?? []), pair.copy]);
792
- const out = { plans: [], merges: new Map(), finals: new Map(), notReady: new Map() };
793
- for (const pair of pairs) {
794
- const inbound = [...new Set([...(links.inbound.get(pair.copy) ?? []), ...(other.get(pair.copy) ?? [])])].sort();
795
- const refs = (signalRefs.get(pair.copy) ?? []).sort();
796
- const siblings = siblingsOf.get(pair.original) ?? [pair.copy];
797
- const copyContent = read(company, pair.copy);
798
- const onDisk = read(company, pair.original);
799
- let merged = mergeCopy(index, pair, siblings, out.finals.get(pair.original) ?? onDisk, copyContent, now);
800
- let identity = null;
801
- const resolution = resolutions.get(pair.copy);
802
- if (rewriteRefs && typeof merged !== "string") {
803
- const mergedFront = parseEntityFile(merged.content)?.frontmatter;
804
- const copyFront = parseEntityFile(copyContent)?.frontmatter;
805
- const mergedIdentity = mergedFront ? readIdentity(mergedFront) : "identity_shape";
806
- const copyIdentity = copyFront ? readIdentity(copyFront) : "identity_shape";
807
- if (!mergedFront || !copyFront || mergedIdentity === "identity_shape" || copyIdentity === "identity_shape") {
808
- merged = "identity_shape";
809
- }
810
- else {
811
- const union = unionIdentity(mergedIdentity, copyIdentity, resolution);
812
- if (union.conflicts.length > 0) {
813
- identity = union;
814
- }
815
- else {
816
- const ids = setIdentityKeys(merged.content, {
817
- externalIds: union.ids,
818
- webDomains: union.domains,
819
- ...(union.addRefs.length > 0 ? { externalRefs: union.refs } : {}),
820
- lastUpdated: now.toISOString(),
821
- });
822
- if (!ids.ok) {
823
- merged = ids.reason;
824
- }
825
- else {
826
- merged = { ...merged, content: ids.content, changed: merged.changed || ids.changed };
827
- identity = union;
828
- }
829
- }
830
- }
831
- }
832
- const entry = {
833
- ...pair,
834
- add_aliases: typeof merged === "string" ? [] : merged.aliases,
835
- dropped_aliases: typeof merged === "string" ? [] : merged.dropped,
836
- add_backrefs: typeof merged === "string" ? 0 : merged.backrefs,
837
- add_relationship_lines: typeof merged === "string" ? 0 : merged.lines,
838
- ...(typeof merged !== "string" && merged.raise !== undefined ? { raise_signal_count: merged.raise } : {}),
839
- kept_original_keys: typeof merged === "string" ? [] : merged.kept,
840
- inbound_links: inbound,
841
- signal_refs: refs,
842
- unmerged_body_lines: typeof merged === "string" ? 0 : merged.leftover,
843
- };
844
- if (rewriteRefs && identity && identity.conflicts.length === 0 && typeof merged !== "string") {
845
- entry.add_external_ids = identity.addIds;
846
- entry.add_web_domains = identity.addDomains;
847
- entry.add_external_refs = identity.addRefs;
848
- }
849
- const unwritable = rewriteRefs
850
- ? inbound.filter((rel) => copies.has(rel))
851
- : inbound.filter((rel) => !rel.startsWith("ontology/entities/") || !isWritableEntityType(rel.split("/")[2]) || copies.has(rel));
852
- const serverOwned = rewriteRefs ? [...refs, ...inbound.filter(isServerOwnedRel)] : [];
853
- if (typeof merged === "string") {
854
- entry.held = "merge_invalid";
855
- entry.detail = merged;
856
- }
857
- else if (identity && identity.conflicts.length > 0) {
858
- entry.held = "external_id_conflict";
859
- entry.detail = identity.conflicts.join(", ");
860
- }
861
- else if (serverOwned.length > 0) {
862
- entry.held = "server_owned_refs";
863
- entry.detail = [...new Set(serverOwned)].sort().join(", ");
864
- }
865
- else if (!rewriteRefs && refs.length > 0) {
866
- entry.held = "signal_refs";
867
- }
868
- else if (unwritable.length > 0) {
869
- entry.held = "linked_from_unwritable";
870
- entry.detail = unwritable.join(", ");
871
- }
872
- else {
873
- out.merges.set(pair.copy, merged);
874
- out.finals.set(pair.original, merged.content);
875
- // Deletion is judged against the original as it is on disk now.
876
- const current = mergeCopy(index, pair, siblings, onDisk, copyContent, now);
877
- let reason;
878
- if (!rewriteRefs) {
879
- reason =
880
- typeof current === "string"
881
- ? "merge_invalid"
882
- : current.changed
883
- ? "not_merged"
884
- : current.leftover > 0
885
- ? "unmerged_body"
886
- : inbound.length > 0
887
- ? "linked"
888
- : null;
889
- }
890
- else if (typeof current === "string") {
891
- reason = "merge_invalid";
892
- }
893
- else {
894
- const diskFront = parseEntityFile(onDisk)?.frontmatter;
895
- const copyFront = parseEntityFile(copyContent)?.frontmatter;
896
- const diskIdentity = diskFront ? readIdentity(diskFront) : "identity_shape";
897
- const copyIdentity = copyFront ? readIdentity(copyFront) : "identity_shape";
898
- if (!diskFront || !copyFront || diskIdentity === "identity_shape" || copyIdentity === "identity_shape") {
899
- reason = "merge_invalid";
900
- }
901
- else {
902
- const union = unionIdentity(diskIdentity, copyIdentity, resolution);
903
- const patched = setIdentityKeys(current.content, {
904
- externalIds: union.ids,
905
- webDomains: union.domains,
906
- ...(union.addRefs.length > 0 ? { externalRefs: union.refs } : {}),
907
- lastUpdated: now.toISOString(),
908
- });
909
- reason = union.conflicts.length > 0
910
- ? "external_id_conflict"
911
- : !patched.ok
912
- ? "merge_invalid"
913
- : current.changed || patched.changed
914
- ? "not_merged"
915
- : current.leftover > 0
916
- ? "unmerged_body"
917
- : inbound.length > 0
918
- ? "linked"
919
- : refs.length > 0
920
- ? "signal_refs"
921
- : null;
922
- }
923
- }
924
- if (reason)
925
- out.notReady.set(pair.copy, reason);
926
- }
927
- out.plans.push(entry);
928
- }
929
- return out;
930
- }
931
- function writeEntity(hqRoot, company, rel, content, now) {
932
- // Outbox first: sync pushes an entity file only when its bytes match.
933
- const write = { rel, content };
934
- recordOutbox(hqRoot, company, [write], now);
935
- safeWriteFile(hqRoot, [entitiesRoot(company)], path.join(company.dir, rel), content);
936
- }
937
- /**
938
- * Plan, merge or delete numbered copies for one company. The dry run writes
939
- * nothing; merge writes entity files only; delete removes vault keys and
940
- * local copy files only.
941
- */
942
- export async function mergeCopies(options) {
943
- const { hqRoot, company, mode, now } = options;
944
- const index = buildEntityIndex(company.dir);
945
- const pairKind = options.pairKind ?? "numbered";
946
- if (pairKind === "listed" && !options.only)
947
- throw new Error("merge-copies: listed pairs need an only list");
948
- const found = pairKind === "listed"
949
- ? findListedPairs(index, options.only)
950
- : pairKind === "variants"
951
- ? findVariantPairs(index)
952
- : findCopyPairs(index);
953
- const listed = options.only
954
- ? found.pairs.filter((pair) => options.only.some((entry) => entry.copy === pair.copy && entry.original === pair.original))
955
- : found.pairs;
956
- const pairs = options.limit !== undefined ? listed.slice(0, Math.max(0, options.limit)) : listed;
957
- const before = scanLinks(company).broken;
958
- const rewriteRefs = options.rewriteRefs === true;
959
- const resolutions = new Map();
960
- for (const entry of options.only ?? []) {
961
- if (entry.resolve_external_ids)
962
- resolutions.set(entry.copy, entry.resolve_external_ids);
963
- }
964
- const { plans, merges, finals, notReady } = plan(company, index, pairs, found.pairs, now, rewriteRefs, resolutions);
965
- const report = {
966
- company: company.slug,
967
- mode,
968
- pair_kind: pairKind,
969
- duplicate_groups_before: findDuplicateGroups(index).length,
970
- duplicate_groups_after: 0,
971
- copies_found: found.pairs.length,
972
- plans,
973
- skipped: options.only
974
- ? [
975
- ...found.skipped,
976
- ...found.pairs
977
- .filter((pair) => !listed.includes(pair))
978
- .map((pair) => ({ copy: pair.copy, reason: "not_listed" })),
979
- ]
980
- : found.skipped,
981
- ...(options.only
982
- ? {
983
- only_unmatched: options.only.filter((entry) => !found.pairs.some((pair) => pair.copy === entry.copy && pair.original === entry.original)),
984
- }
985
- : {}),
986
- merged: [],
987
- relinked: [],
988
- ...(rewriteRefs ? { rewritten: [] } : {}),
989
- deleted: [],
990
- vault_already_absent: [],
991
- not_ready: [],
992
- errors: [],
993
- broken_links_before: before,
994
- broken_links_after: before,
995
- brief_links_to_copies: briefLinks(company, new Set(pairs.map((pair) => pair.copy))),
996
- };
997
- if (mode === "merge") {
998
- // Originals first, once each with every copy merged in; then links, read
999
- // back from disk so a relinked original keeps its merge.
1000
- for (const [original, content] of finals) {
1001
- try {
1002
- if (content === read(company, original))
1003
- continue;
1004
- writeEntity(hqRoot, company, original, content, now);
1005
- report.merged.push(original);
1006
- }
1007
- catch (error) {
1008
- report.errors.push({ path: original, error: error.name });
1009
- }
1010
- }
1011
- for (const entry of plans) {
1012
- if (!merges.has(entry.copy))
1013
- continue;
1014
- const copyId = rewriteRefs ? frontMatterId(read(company, entry.copy)) : null;
1015
- const originalId = rewriteRefs ? frontMatterId(read(company, entry.original)) : null;
1016
- for (const rel of entry.inbound_links) {
1017
- try {
1018
- const content = read(company, rel);
1019
- if (!rewriteRefs) {
1020
- const next = relink(rel, content, entry.copy, entry.original);
1021
- if (next === content)
1022
- continue;
1023
- writeEntity(hqRoot, company, rel, next, now);
1024
- if (!report.relinked.includes(rel))
1025
- report.relinked.push(rel);
1026
- continue;
1027
- }
1028
- const next = rel.startsWith("ontology/entities/")
1029
- ? rewriteRelRefs(rel, relink(rel, content, entry.copy, entry.original), entry.copy, entry.original)
1030
- : rewriteOtherFile(rel, content, entry.copy, entry.original, copyId, originalId);
1031
- if (next === content)
1032
- continue;
1033
- if (referencesCopy(rel, next, entry.copy)) {
1034
- report.errors.push({ path: rel, error: "link_not_rewritten" });
1035
- continue;
1036
- }
1037
- if (rel.startsWith("ontology/entities/")) {
1038
- writeEntity(hqRoot, company, rel, next, now);
1039
- if (!report.relinked.includes(rel))
1040
- report.relinked.push(rel);
1041
- }
1042
- else {
1043
- safeWriteFile(hqRoot, [company.dir], path.join(company.dir, rel), next);
1044
- if (!report.rewritten.includes(rel))
1045
- report.rewritten.push(rel);
1046
- }
1047
- }
1048
- catch (error) {
1049
- report.errors.push({ path: rel, error: error.name });
1050
- }
1051
- }
1052
- }
1053
- }
1054
- if (mode === "delete") {
1055
- if (!options.deleteVaultKey)
1056
- throw new Error("merge-copies: delete needs a vault client");
1057
- for (const entry of plans) {
1058
- const reason = entry.held ?? notReady.get(entry.copy) ?? null;
1059
- if (reason) {
1060
- report.not_ready.push({ copy: entry.copy, reason });
1061
- continue;
1062
- }
1063
- try {
1064
- const deleted = await options.deleteVaultKey(entry.copy);
1065
- // 0 means the exact key is already gone (a run that stopped before the
1066
- // local removal, or a copy that never synced): finish the local side.
1067
- if (deleted !== 1 && deleted !== 0) {
1068
- report.errors.push({ path: entry.copy, error: `vault_deleted_${deleted}` });
1069
- continue;
1070
- }
1071
- fs.rmSync(path.join(company.dir, entry.copy), { force: true });
1072
- report.deleted.push(entry.copy);
1073
- if (deleted === 0)
1074
- report.vault_already_absent.push(entry.copy);
1075
- }
1076
- catch (error) {
1077
- report.errors.push({ path: entry.copy, error: error.message || error.name });
1078
- }
1079
- }
1080
- }
1081
- const after = buildEntityIndex(company.dir);
1082
- report.duplicate_groups_after = findDuplicateGroups(after).length;
1083
- report.broken_links_after = scanLinks(company).broken;
1084
- return report;
1085
- }
1086
- //# sourceMappingURL=merge-copies.js.map