@wrongstack/core 0.297.0 → 0.298.1

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 (806) hide show
  1. package/dist/chronicle/index.js +126 -22
  2. package/dist/chronicle/project-server-client.d.ts +12 -0
  3. package/dist/chronicle/project-server-protocol.d.ts +22 -0
  4. package/dist/chronicle/project-server.js +238 -157
  5. package/dist/coordination/agents/index.js +136 -1
  6. package/dist/coordination/agents/role-skills.d.ts +3 -2
  7. package/dist/coordination/brain-trace.d.ts +2 -1
  8. package/dist/coordination/director/director-task-registry.d.ts +12 -0
  9. package/dist/coordination/fleet-supervisor.d.ts +21 -0
  10. package/dist/coordination/index.d.ts +23 -21
  11. package/dist/coordination/index.js +16493 -16068
  12. package/dist/coordination/mail-tools.d.ts +3 -3
  13. package/dist/coordination/mailbox-credential-store.d.ts +22 -2
  14. package/dist/coordination/mailbox-credential-throttle.d.ts +63 -0
  15. package/dist/coordination/mailbox-project-server-client.d.ts +16 -0
  16. package/dist/coordination/mailbox-project-server-protocol.d.ts +43 -5
  17. package/dist/coordination/mailbox-project-server.js +508 -253
  18. package/dist/coordination/provider-status-tracker.d.ts +2 -0
  19. package/dist/coordination/remote-mailbox-credential-store.d.ts +5 -5
  20. package/dist/coordination/remote-mailbox.d.ts +8 -4
  21. package/dist/coordination/sqlite-mailbox-credentials.d.ts +11 -0
  22. package/dist/core/fallback-profile-manager.d.ts +14 -0
  23. package/dist/core/index.js +451 -137
  24. package/dist/core/instruction-bundle.d.ts +12 -0
  25. package/dist/core/system-prompt-builder.d.ts +14 -0
  26. package/dist/core/system-prompt-skill-bodies.d.ts +1 -1
  27. package/dist/core/system-prompt-skill-text.d.ts +1 -2
  28. package/dist/defaults/index.js +2191 -1208
  29. package/dist/design/index.js +47 -8
  30. package/dist/execution/design-materialize.d.ts +22 -0
  31. package/dist/execution/index.js +495 -248
  32. package/dist/execution/skill-loader.d.ts +10 -1
  33. package/dist/execution/tool-error-taxonomy.d.ts +31 -0
  34. package/dist/execution/tool-executor.d.ts +1 -0
  35. package/dist/goal/index.js +3 -1
  36. package/dist/hooks/index.js +5 -0
  37. package/dist/hq/auth-audit.d.ts +6 -0
  38. package/dist/hq/auth-store.d.ts +59 -3
  39. package/dist/hq/index.js +401 -101
  40. package/dist/hq/kanban-store.d.ts +3 -0
  41. package/dist/hq/protocol/core.d.ts +3 -15
  42. package/dist/hq/protocol/envelope.d.ts +29 -0
  43. package/dist/hq/protocol/governance.d.ts +34 -0
  44. package/dist/hq/protocol/project.d.ts +3 -0
  45. package/dist/hq/protocol/resume.d.ts +1 -1
  46. package/dist/hq/protocol.d.ts +9 -8
  47. package/dist/hq/protocol.js +675 -0
  48. package/dist/index.js +9012 -6916
  49. package/dist/infrastructure/index.js +199 -102
  50. package/dist/kernel/events/session-events.d.ts +3 -0
  51. package/dist/kernel/events/tool-events.d.ts +3 -1
  52. package/dist/models/index.js +1 -1
  53. package/dist/observability/index.js +27 -0
  54. package/dist/observability/prometheus.d.ts +11 -0
  55. package/dist/plugin/index.d.ts +5 -1
  56. package/dist/plugin/index.js +988 -558
  57. package/dist/plugins/auto-review-plugin.d.ts +1 -11
  58. package/dist/plugins/review-store-maintenance.d.ts +26 -0
  59. package/dist/plugins/review-types.d.ts +6 -0
  60. package/dist/security/auto-approve-policy.d.ts +37 -0
  61. package/dist/security/capabilities.d.ts +45 -1
  62. package/dist/security/error-sanitize.d.ts +49 -0
  63. package/dist/security/file-permissions.d.ts +41 -0
  64. package/dist/security/index.d.ts +9 -6
  65. package/dist/security/index.js +3008 -2029
  66. package/dist/security/permission-helpers.d.ts +93 -0
  67. package/dist/security/permission-policy.d.ts +37 -35
  68. package/dist/security/secret-vault.d.ts +17 -0
  69. package/dist/security/totp.d.ts +86 -0
  70. package/dist/skills/frontmatter.d.ts +12 -1
  71. package/dist/skills/github-fetcher.d.ts +48 -0
  72. package/dist/skills/index.js +137 -26
  73. package/dist/skills/limits.d.ts +19 -0
  74. package/dist/skills/skill-installer.d.ts +13 -0
  75. package/dist/storage/index.js +929 -733
  76. package/dist/storage/provider-config-watcher.d.ts +1 -0
  77. package/dist/storage/session-helpers.d.ts +1 -0
  78. package/dist/storage/session-store.d.ts +9 -2
  79. package/dist/storage/session-workspace-checkpoints.d.ts +5 -0
  80. package/dist/tools/fallback-manage-tools.d.ts +6 -0
  81. package/dist/tools/index.js +287 -131
  82. package/dist/tools/mcp-use.d.ts +1 -1
  83. package/dist/types/blocks.d.ts +7 -0
  84. package/dist/types/config/autonomy.d.ts +15 -7
  85. package/dist/types/config/mcp-features.d.ts +9 -1
  86. package/dist/types/config/root.d.ts +10 -4
  87. package/dist/types/context-window.d.ts +15 -0
  88. package/dist/types/index.d.ts +1 -1
  89. package/dist/types/secret-vault.d.ts +8 -0
  90. package/dist/types/session.d.ts +2 -0
  91. package/dist/types/skill.d.ts +56 -0
  92. package/dist/types/tool-executor.d.ts +2 -0
  93. package/dist/utils/env-typed.d.ts +64 -0
  94. package/dist/utils/glob-match.d.ts +21 -1
  95. package/dist/utils/heap-watchdog.js +1 -1
  96. package/dist/utils/incoming-images.d.ts +19 -0
  97. package/dist/utils/index.d.ts +16 -12
  98. package/dist/utils/index.js +3128 -2800
  99. package/dist/utils/path-segment.d.ts +29 -0
  100. package/dist/utils/sage-output-block.js +48 -0
  101. package/dist/utils/win32-cmd.d.ts +25 -0
  102. package/dist/worktree/index.js +5 -0
  103. package/instructions/llm/chimera-review.md +4 -6
  104. package/package.json +13 -4
  105. package/skills/auto-review/SKILL.md +11 -76
  106. package/skills/chimera/SKILL.md +31 -49
  107. package/skills/data-governance/SKILL.md +92 -0
  108. package/skills/wrongstack-kanban/SKILL.md +125 -64
  109. package/dist/agent-status-helpers.d.ts.map +0 -1
  110. package/dist/agent-status-tracker.d.ts.map +0 -1
  111. package/dist/boot.d.ts.map +0 -1
  112. package/dist/chronicle/context.d.ts.map +0 -1
  113. package/dist/chronicle/decision-adapter.d.ts.map +0 -1
  114. package/dist/chronicle/domain-adapter.d.ts.map +0 -1
  115. package/dist/chronicle/event-hash.d.ts.map +0 -1
  116. package/dist/chronicle/file-observer.d.ts.map +0 -1
  117. package/dist/chronicle/health-monitor.d.ts.map +0 -1
  118. package/dist/chronicle/identity.d.ts.map +0 -1
  119. package/dist/chronicle/index.d.ts.map +0 -1
  120. package/dist/chronicle/index.js.map +0 -7
  121. package/dist/chronicle/journal.d.ts.map +0 -1
  122. package/dist/chronicle/legacy-journal-import.d.ts.map +0 -1
  123. package/dist/chronicle/metrics-store.d.ts.map +0 -1
  124. package/dist/chronicle/partition-filename.d.ts.map +0 -1
  125. package/dist/chronicle/partition-range-cache.d.ts.map +0 -1
  126. package/dist/chronicle/process-adapter.d.ts.map +0 -1
  127. package/dist/chronicle/project-access.d.ts.map +0 -1
  128. package/dist/chronicle/project-server-client.d.ts.map +0 -1
  129. package/dist/chronicle/project-server-endpoint.d.ts.map +0 -1
  130. package/dist/chronicle/project-server-protocol.d.ts.map +0 -1
  131. package/dist/chronicle/project-server.d.ts.map +0 -1
  132. package/dist/chronicle/project-server.js.map +0 -7
  133. package/dist/chronicle/prompt-manifest.d.ts.map +0 -1
  134. package/dist/chronicle/provider-adapter.d.ts.map +0 -1
  135. package/dist/chronicle/query.d.ts.map +0 -1
  136. package/dist/chronicle/review-adapter.d.ts.map +0 -1
  137. package/dist/chronicle/rollup-adapter.d.ts.map +0 -1
  138. package/dist/chronicle/sink.d.ts.map +0 -1
  139. package/dist/chronicle/sqlite-journal.d.ts.map +0 -1
  140. package/dist/chronicle/sqlite-query.d.ts.map +0 -1
  141. package/dist/chronicle/stream-adapter.d.ts.map +0 -1
  142. package/dist/chronicle/tool-adapter.d.ts.map +0 -1
  143. package/dist/chronicle/types.d.ts.map +0 -1
  144. package/dist/coordination/adaptive-concurrency.d.ts.map +0 -1
  145. package/dist/coordination/agent-bridge.d.ts.map +0 -1
  146. package/dist/coordination/agent-monitor.d.ts.map +0 -1
  147. package/dist/coordination/agent-subagent-runner.d.ts.map +0 -1
  148. package/dist/coordination/agents/agent-prompts.d.ts.map +0 -1
  149. package/dist/coordination/agents/index.d.ts.map +0 -1
  150. package/dist/coordination/agents/index.js.map +0 -7
  151. package/dist/coordination/agents/phase1-discovery.d.ts.map +0 -1
  152. package/dist/coordination/agents/phase2-planning.d.ts.map +0 -1
  153. package/dist/coordination/agents/phase3-build.d.ts.map +0 -1
  154. package/dist/coordination/agents/phase3-techstack.d.ts.map +0 -1
  155. package/dist/coordination/agents/phase3-wave1-platform.d.ts.map +0 -1
  156. package/dist/coordination/agents/phase3-wave2-meta.d.ts.map +0 -1
  157. package/dist/coordination/agents/phase4-verify.d.ts.map +0 -1
  158. package/dist/coordination/agents/phase5-review.d.ts.map +0 -1
  159. package/dist/coordination/agents/phase6-domain.d.ts.map +0 -1
  160. package/dist/coordination/agents/phase7-knowledge.d.ts.map +0 -1
  161. package/dist/coordination/agents/phase8-delivery.d.ts.map +0 -1
  162. package/dist/coordination/agents/phase8-wave3-products.d.ts.map +0 -1
  163. package/dist/coordination/agents/phase9-meta.d.ts.map +0 -1
  164. package/dist/coordination/agents/phase9-wave4-platform-meta.d.ts.map +0 -1
  165. package/dist/coordination/agents/project-agent-config-validation.d.ts.map +0 -1
  166. package/dist/coordination/agents/project-agent-consolidation.d.ts.map +0 -1
  167. package/dist/coordination/agents/project-agent-files.d.ts.map +0 -1
  168. package/dist/coordination/agents/project-agent-identity-types.d.ts.map +0 -1
  169. package/dist/coordination/agents/project-agent-identity.d.ts.map +0 -1
  170. package/dist/coordination/agents/project-agent-knowledge-manifests.d.ts.map +0 -1
  171. package/dist/coordination/agents/project-agent-learning-entries.d.ts.map +0 -1
  172. package/dist/coordination/agents/project-agent-learning-normalize.d.ts.map +0 -1
  173. package/dist/coordination/agents/project-agent-learning-policy.d.ts.map +0 -1
  174. package/dist/coordination/agents/project-agent-learning-structured.d.ts.map +0 -1
  175. package/dist/coordination/agents/project-agent-paths.d.ts.map +0 -1
  176. package/dist/coordination/agents/project-agent-profile.d.ts.map +0 -1
  177. package/dist/coordination/agents/role-skills.d.ts.map +0 -1
  178. package/dist/coordination/agents/types.d.ts.map +0 -1
  179. package/dist/coordination/agents.d.ts.map +0 -1
  180. package/dist/coordination/auto-extend.d.ts.map +0 -1
  181. package/dist/coordination/autonomous-brain.d.ts.map +0 -1
  182. package/dist/coordination/autonomous-coordinator.d.ts.map +0 -1
  183. package/dist/coordination/brain-cache.d.ts.map +0 -1
  184. package/dist/coordination/brain-heuristics.d.ts.map +0 -1
  185. package/dist/coordination/brain-ledger.d.ts.map +0 -1
  186. package/dist/coordination/brain-monitor.d.ts.map +0 -1
  187. package/dist/coordination/brain-rules.d.ts.map +0 -1
  188. package/dist/coordination/brain-telemetry.d.ts.map +0 -1
  189. package/dist/coordination/brain-trace.d.ts.map +0 -1
  190. package/dist/coordination/brain.d.ts.map +0 -1
  191. package/dist/coordination/change-manager.d.ts.map +0 -1
  192. package/dist/coordination/checkpoint-wiring.d.ts.map +0 -1
  193. package/dist/coordination/collab-bus.d.ts.map +0 -1
  194. package/dist/coordination/collab-debug-types.d.ts.map +0 -1
  195. package/dist/coordination/collab-debug.d.ts.map +0 -1
  196. package/dist/coordination/collab-director-host.d.ts.map +0 -1
  197. package/dist/coordination/commit-safety.d.ts.map +0 -1
  198. package/dist/coordination/consensus-protocol.d.ts.map +0 -1
  199. package/dist/coordination/coordinator/error-classifier.d.ts.map +0 -1
  200. package/dist/coordination/delegate-tool.d.ts.map +0 -1
  201. package/dist/coordination/dep-watcher-bridge.d.ts.map +0 -1
  202. package/dist/coordination/dep-watcher.d.ts.map +0 -1
  203. package/dist/coordination/director/director-btw-notes.d.ts.map +0 -1
  204. package/dist/coordination/director/director-budget-policy.d.ts.map +0 -1
  205. package/dist/coordination/director/director-collab.d.ts.map +0 -1
  206. package/dist/coordination/director/director-errors.d.ts.map +0 -1
  207. package/dist/coordination/director/director-task-registry.d.ts.map +0 -1
  208. package/dist/coordination/director/director-toolset.d.ts.map +0 -1
  209. package/dist/coordination/director-basic-tools.d.ts.map +0 -1
  210. package/dist/coordination/director-collab-tools.d.ts.map +0 -1
  211. package/dist/coordination/director-host-contracts.d.ts.map +0 -1
  212. package/dist/coordination/director-input-helpers.d.ts.map +0 -1
  213. package/dist/coordination/director-kanban-queue-helpers.d.ts.map +0 -1
  214. package/dist/coordination/director-options.d.ts.map +0 -1
  215. package/dist/coordination/director-prompts.d.ts.map +0 -1
  216. package/dist/coordination/director-quality-gate-tool.d.ts.map +0 -1
  217. package/dist/coordination/director-session.d.ts.map +0 -1
  218. package/dist/coordination/director-spawn-model.d.ts.map +0 -1
  219. package/dist/coordination/director-tools.d.ts.map +0 -1
  220. package/dist/coordination/director.d.ts.map +0 -1
  221. package/dist/coordination/dispatcher.d.ts.map +0 -1
  222. package/dist/coordination/file-author-tracker.d.ts.map +0 -1
  223. package/dist/coordination/fleet-bus.d.ts.map +0 -1
  224. package/dist/coordination/fleet-event-validation.d.ts.map +0 -1
  225. package/dist/coordination/fleet-manager.d.ts.map +0 -1
  226. package/dist/coordination/fleet-spawn.d.ts.map +0 -1
  227. package/dist/coordination/fleet-status-tool.d.ts.map +0 -1
  228. package/dist/coordination/fleet-supervisor.d.ts.map +0 -1
  229. package/dist/coordination/fleet.d.ts.map +0 -1
  230. package/dist/coordination/global-mailbox-completion.d.ts.map +0 -1
  231. package/dist/coordination/global-mailbox-paths.d.ts.map +0 -1
  232. package/dist/coordination/icoordinator.d.ts.map +0 -1
  233. package/dist/coordination/ifleet-manager.d.ts.map +0 -1
  234. package/dist/coordination/in-memory-transport.d.ts.map +0 -1
  235. package/dist/coordination/index.d.ts.map +0 -1
  236. package/dist/coordination/index.js.map +0 -7
  237. package/dist/coordination/knowledge-graph.d.ts.map +0 -1
  238. package/dist/coordination/large-answer-store.d.ts.map +0 -1
  239. package/dist/coordination/mail-tools.d.ts.map +0 -1
  240. package/dist/coordination/mailbox-actions.d.ts.map +0 -1
  241. package/dist/coordination/mailbox-auth-types.d.ts.map +0 -1
  242. package/dist/coordination/mailbox-codecs.d.ts.map +0 -1
  243. package/dist/coordination/mailbox-constants.d.ts.map +0 -1
  244. package/dist/coordination/mailbox-credential-store.d.ts.map +0 -1
  245. package/dist/coordination/mailbox-events.d.ts.map +0 -1
  246. package/dist/coordination/mailbox-health.d.ts.map +0 -1
  247. package/dist/coordination/mailbox-hooks.d.ts.map +0 -1
  248. package/dist/coordination/mailbox-http-auth.d.ts.map +0 -1
  249. package/dist/coordination/mailbox-http-rate-limit.d.ts.map +0 -1
  250. package/dist/coordination/mailbox-http-router.d.ts.map +0 -1
  251. package/dist/coordination/mailbox-http-validation.d.ts.map +0 -1
  252. package/dist/coordination/mailbox-message-codec.d.ts.map +0 -1
  253. package/dist/coordination/mailbox-parse-state.d.ts.map +0 -1
  254. package/dist/coordination/mailbox-project-server-client.d.ts.map +0 -1
  255. package/dist/coordination/mailbox-project-server-endpoint.d.ts.map +0 -1
  256. package/dist/coordination/mailbox-project-server-protocol.d.ts.map +0 -1
  257. package/dist/coordination/mailbox-project-server.d.ts.map +0 -1
  258. package/dist/coordination/mailbox-project-server.js.map +0 -7
  259. package/dist/coordination/mailbox-receipt-folding.d.ts.map +0 -1
  260. package/dist/coordination/mailbox-registry-codec.d.ts.map +0 -1
  261. package/dist/coordination/mailbox-retention-state.d.ts.map +0 -1
  262. package/dist/coordination/mailbox-status-mappers.d.ts.map +0 -1
  263. package/dist/coordination/mailbox-tool.d.ts.map +0 -1
  264. package/dist/coordination/mailbox-type-properties.d.ts.map +0 -1
  265. package/dist/coordination/mailbox-types.d.ts.map +0 -1
  266. package/dist/coordination/model-matrix.d.ts.map +0 -1
  267. package/dist/coordination/multi-agent-coordinator.d.ts.map +0 -1
  268. package/dist/coordination/multi-agent-timeout.d.ts.map +0 -1
  269. package/dist/coordination/null-fleet-bus.d.ts.map +0 -1
  270. package/dist/coordination/package-author-tracker.d.ts.map +0 -1
  271. package/dist/coordination/package-outdated-watcher.d.ts.map +0 -1
  272. package/dist/coordination/provider-status-tracker.d.ts.map +0 -1
  273. package/dist/coordination/remote-mailbox-credential-store.d.ts.map +0 -1
  274. package/dist/coordination/remote-mailbox.d.ts.map +0 -1
  275. package/dist/coordination/single-instance-mailbox.d.ts.map +0 -1
  276. package/dist/coordination/spawn-budget.d.ts.map +0 -1
  277. package/dist/coordination/sqlite-mailbox-compaction.d.ts.map +0 -1
  278. package/dist/coordination/sqlite-mailbox-credentials.d.ts.map +0 -1
  279. package/dist/coordination/sqlite-mailbox-rows.d.ts.map +0 -1
  280. package/dist/coordination/sqlite-mailbox-schema.d.ts.map +0 -1
  281. package/dist/coordination/sqlite-mailbox.d.ts.map +0 -1
  282. package/dist/coordination/subagent-budget.d.ts.map +0 -1
  283. package/dist/coordination/subagent-nicknames.d.ts.map +0 -1
  284. package/dist/coordination/subagent-result-tool.d.ts.map +0 -1
  285. package/dist/coordination/task-auctioneer.d.ts.map +0 -1
  286. package/dist/coordination/task-dag.d.ts.map +0 -1
  287. package/dist/coordination/techstack-mailbox-consumer.d.ts.map +0 -1
  288. package/dist/coordination/transport.d.ts.map +0 -1
  289. package/dist/coordination/worktree-task-runner.d.ts.map +0 -1
  290. package/dist/core/agent-internals.d.ts.map +0 -1
  291. package/dist/core/agent-loop.d.ts.map +0 -1
  292. package/dist/core/agent-response.d.ts.map +0 -1
  293. package/dist/core/agent-tools.d.ts.map +0 -1
  294. package/dist/core/agent-types.d.ts.map +0 -1
  295. package/dist/core/agent.d.ts.map +0 -1
  296. package/dist/core/btw.d.ts.map +0 -1
  297. package/dist/core/context.d.ts.map +0 -1
  298. package/dist/core/continue-intent.d.ts.map +0 -1
  299. package/dist/core/continue-to-next-iteration.d.ts.map +0 -1
  300. package/dist/core/conversation-state.d.ts.map +0 -1
  301. package/dist/core/fallback-model.d.ts.map +0 -1
  302. package/dist/core/fallback-profile-manager.d.ts.map +0 -1
  303. package/dist/core/fleet-pulse.d.ts.map +0 -1
  304. package/dist/core/index.d.ts.map +0 -1
  305. package/dist/core/index.js.map +0 -7
  306. package/dist/core/input-builder.d.ts.map +0 -1
  307. package/dist/core/instruction-bundle.d.ts.map +0 -1
  308. package/dist/core/iteration-limit.d.ts.map +0 -1
  309. package/dist/core/mailbox-loop.d.ts.map +0 -1
  310. package/dist/core/model-availability-calendar.d.ts.map +0 -1
  311. package/dist/core/model-ref.d.ts.map +0 -1
  312. package/dist/core/model-ref.js.map +0 -7
  313. package/dist/core/modes/brief.d.ts.map +0 -1
  314. package/dist/core/modes/default.d.ts.map +0 -1
  315. package/dist/core/modes/teach.d.ts.map +0 -1
  316. package/dist/core/provider-runner.d.ts.map +0 -1
  317. package/dist/core/queued-messages.d.ts.map +0 -1
  318. package/dist/core/request-provider-binding.d.ts.map +0 -1
  319. package/dist/core/run-env.d.ts.map +0 -1
  320. package/dist/core/streaming-response-builder.d.ts.map +0 -1
  321. package/dist/core/system-prompt-blocks.d.ts.map +0 -1
  322. package/dist/core/system-prompt-builder.d.ts.map +0 -1
  323. package/dist/core/system-prompt-environment-probes.d.ts.map +0 -1
  324. package/dist/core/system-prompt-environment.d.ts.map +0 -1
  325. package/dist/core/system-prompt-memory-skills.d.ts.map +0 -1
  326. package/dist/core/system-prompt-plan.d.ts.map +0 -1
  327. package/dist/core/system-prompt-shell.d.ts.map +0 -1
  328. package/dist/core/system-prompt-skill-bodies.d.ts.map +0 -1
  329. package/dist/core/system-prompt-skill-text.d.ts.map +0 -1
  330. package/dist/defaults/index.d.ts.map +0 -1
  331. package/dist/defaults/index.js.map +0 -7
  332. package/dist/design/index.d.ts.map +0 -1
  333. package/dist/design/index.js.map +0 -7
  334. package/dist/execution/auto-compaction-middleware.d.ts.map +0 -1
  335. package/dist/execution/autonomous-runner.d.ts.map +0 -1
  336. package/dist/execution/autonomy-brain.d.ts.map +0 -1
  337. package/dist/execution/autonomy-prompt-contributor.d.ts.map +0 -1
  338. package/dist/execution/brain-chain.d.ts.map +0 -1
  339. package/dist/execution/brain-circuit.d.ts.map +0 -1
  340. package/dist/execution/brain-evaluation.d.ts.map +0 -1
  341. package/dist/execution/brain-runtime-constants.d.ts.map +0 -1
  342. package/dist/execution/brain-runtime.d.ts.map +0 -1
  343. package/dist/execution/compaction-core.d.ts.map +0 -1
  344. package/dist/execution/compaction-scoring.d.ts.map +0 -1
  345. package/dist/execution/compaction-summary-cache.d.ts.map +0 -1
  346. package/dist/execution/compactor.d.ts.map +0 -1
  347. package/dist/execution/council-brain.d.ts.map +0 -1
  348. package/dist/execution/council-orchestrator.d.ts.map +0 -1
  349. package/dist/execution/council-personas.d.ts.map +0 -1
  350. package/dist/execution/council-profiles.d.ts.map +0 -1
  351. package/dist/execution/council-prompts.d.ts.map +0 -1
  352. package/dist/execution/council-resolution.d.ts.map +0 -1
  353. package/dist/execution/design-color.d.ts.map +0 -1
  354. package/dist/execution/design-detect.d.ts.map +0 -1
  355. package/dist/execution/design-kit-loader.d.ts.map +0 -1
  356. package/dist/execution/design-materialize.d.ts.map +0 -1
  357. package/dist/execution/design-project-store.d.ts.map +0 -1
  358. package/dist/execution/design-tune.d.ts.map +0 -1
  359. package/dist/execution/design-verify.d.ts.map +0 -1
  360. package/dist/execution/enhance-recovery.d.ts.map +0 -1
  361. package/dist/execution/error-handler.d.ts.map +0 -1
  362. package/dist/execution/eternal-autonomy-types.d.ts.map +0 -1
  363. package/dist/execution/eternal-autonomy.d.ts.map +0 -1
  364. package/dist/execution/goal-preamble.d.ts.map +0 -1
  365. package/dist/execution/index.d.ts.map +0 -1
  366. package/dist/execution/index.js.map +0 -7
  367. package/dist/execution/intelligent-compactor.d.ts.map +0 -1
  368. package/dist/execution/model-runtime.d.ts.map +0 -1
  369. package/dist/execution/one-shot-llm.d.ts.map +0 -1
  370. package/dist/execution/parallel-eternal-engine.d.ts.map +0 -1
  371. package/dist/execution/prompt-enhancer.d.ts.map +0 -1
  372. package/dist/execution/prompt-enhancer.js.map +0 -7
  373. package/dist/execution/prompt-loader.d.ts.map +0 -1
  374. package/dist/execution/provider-runner-impl.d.ts.map +0 -1
  375. package/dist/execution/regex-patterns.d.ts.map +0 -1
  376. package/dist/execution/retry-policy.d.ts.map +0 -1
  377. package/dist/execution/selective-compactor.d.ts.map +0 -1
  378. package/dist/execution/skill-loader.d.ts.map +0 -1
  379. package/dist/execution/strategy-compactor.d.ts.map +0 -1
  380. package/dist/execution/subagent-compaction.d.ts.map +0 -1
  381. package/dist/execution/tool-executor-logging.d.ts.map +0 -1
  382. package/dist/execution/tool-executor-results.d.ts.map +0 -1
  383. package/dist/execution/tool-executor-stream.d.ts.map +0 -1
  384. package/dist/execution/tool-executor-support.d.ts.map +0 -1
  385. package/dist/execution/tool-executor.d.ts.map +0 -1
  386. package/dist/extension/extension-points.d.ts.map +0 -1
  387. package/dist/extension/index.d.ts.map +0 -1
  388. package/dist/extension/index.js.map +0 -7
  389. package/dist/extension/registry.d.ts.map +0 -1
  390. package/dist/fleet-notifier.d.ts.map +0 -1
  391. package/dist/goal/checkpoint.d.ts.map +0 -1
  392. package/dist/goal/goal-assessor.d.ts.map +0 -1
  393. package/dist/goal/goal-planner.d.ts.map +0 -1
  394. package/dist/goal/goal-runner.d.ts.map +0 -1
  395. package/dist/goal/index.d.ts.map +0 -1
  396. package/dist/goal/index.js.map +0 -7
  397. package/dist/goal/phase-board-mutations.d.ts.map +0 -1
  398. package/dist/goal/phase-graph-builder.d.ts.map +0 -1
  399. package/dist/goal/phase-orchestrator-integration.d.ts.map +0 -1
  400. package/dist/goal/phase-orchestrator-queries.d.ts.map +0 -1
  401. package/dist/goal/phase-orchestrator-runtime.d.ts.map +0 -1
  402. package/dist/goal/phase-orchestrator-types.d.ts.map +0 -1
  403. package/dist/goal/phase-orchestrator.d.ts.map +0 -1
  404. package/dist/goal/phase-store.d.ts.map +0 -1
  405. package/dist/goal/types.d.ts.map +0 -1
  406. package/dist/hooks/http-executor.d.ts.map +0 -1
  407. package/dist/hooks/index.d.ts.map +0 -1
  408. package/dist/hooks/index.js.map +0 -7
  409. package/dist/hooks/registry.d.ts.map +0 -1
  410. package/dist/hooks/runner.d.ts.map +0 -1
  411. package/dist/hooks/shell-executor.d.ts.map +0 -1
  412. package/dist/hooks/shell-hooks-equal.d.ts.map +0 -1
  413. package/dist/hq/alerts.d.ts.map +0 -1
  414. package/dist/hq/auth-audit.d.ts.map +0 -1
  415. package/dist/hq/auth-store.d.ts.map +0 -1
  416. package/dist/hq/bootstrap-store.d.ts.map +0 -1
  417. package/dist/hq/brain-bridge.d.ts.map +0 -1
  418. package/dist/hq/bridge-context.d.ts.map +0 -1
  419. package/dist/hq/commands.d.ts.map +0 -1
  420. package/dist/hq/cost-bridge.d.ts.map +0 -1
  421. package/dist/hq/exposure.d.ts.map +0 -1
  422. package/dist/hq/factory.d.ts.map +0 -1
  423. package/dist/hq/fleet-bridge.d.ts.map +0 -1
  424. package/dist/hq/index.d.ts.map +0 -1
  425. package/dist/hq/index.js.map +0 -7
  426. package/dist/hq/kanban-store.d.ts.map +0 -1
  427. package/dist/hq/mailbox-mapper.d.ts.map +0 -1
  428. package/dist/hq/persistence/event-log.d.ts.map +0 -1
  429. package/dist/hq/persistence/jsonl-io.d.ts.map +0 -1
  430. package/dist/hq/persistence/simple-log.d.ts.map +0 -1
  431. package/dist/hq/persistence/snapshot-store.d.ts.map +0 -1
  432. package/dist/hq/persistence/timeseries-store.d.ts.map +0 -1
  433. package/dist/hq/persistence.d.ts.map +0 -1
  434. package/dist/hq/protocol/brain.d.ts.map +0 -1
  435. package/dist/hq/protocol/browser.d.ts.map +0 -1
  436. package/dist/hq/protocol/client.d.ts.map +0 -1
  437. package/dist/hq/protocol/core.d.ts.map +0 -1
  438. package/dist/hq/protocol/fleet.d.ts.map +0 -1
  439. package/dist/hq/protocol/kanban.d.ts.map +0 -1
  440. package/dist/hq/protocol/mailbox.d.ts.map +0 -1
  441. package/dist/hq/protocol/mcp.d.ts.map +0 -1
  442. package/dist/hq/protocol/peer.d.ts.map +0 -1
  443. package/dist/hq/protocol/project.d.ts.map +0 -1
  444. package/dist/hq/protocol/resume.d.ts.map +0 -1
  445. package/dist/hq/protocol/session.d.ts.map +0 -1
  446. package/dist/hq/protocol/tool.d.ts.map +0 -1
  447. package/dist/hq/protocol.d.ts.map +0 -1
  448. package/dist/hq/publisher.d.ts.map +0 -1
  449. package/dist/hq/redaction.d.ts.map +0 -1
  450. package/dist/hq/session-bridge.d.ts.map +0 -1
  451. package/dist/hq/tool-bridge.d.ts.map +0 -1
  452. package/dist/hq/transcript-mapper.d.ts.map +0 -1
  453. package/dist/hq/worktree-bridge.d.ts.map +0 -1
  454. package/dist/hq/write-queues.d.ts.map +0 -1
  455. package/dist/index.d.ts.map +0 -1
  456. package/dist/index.js.map +0 -7
  457. package/dist/infrastructure/context-manager.d.ts.map +0 -1
  458. package/dist/infrastructure/index.d.ts.map +0 -1
  459. package/dist/infrastructure/index.js.map +0 -7
  460. package/dist/infrastructure/logger.d.ts.map +0 -1
  461. package/dist/infrastructure/mcp-servers.d.ts.map +0 -1
  462. package/dist/infrastructure/path-resolver.d.ts.map +0 -1
  463. package/dist/infrastructure/provider-cache-ledger.d.ts.map +0 -1
  464. package/dist/infrastructure/token-counter.d.ts.map +0 -1
  465. package/dist/kernel/container.d.ts.map +0 -1
  466. package/dist/kernel/events/agent-events.d.ts.map +0 -1
  467. package/dist/kernel/events/brain-events.d.ts.map +0 -1
  468. package/dist/kernel/events/file-events.d.ts.map +0 -1
  469. package/dist/kernel/events/fleet-events.d.ts.map +0 -1
  470. package/dist/kernel/events/memory-events.d.ts.map +0 -1
  471. package/dist/kernel/events/network-events.d.ts.map +0 -1
  472. package/dist/kernel/events/process-events.d.ts.map +0 -1
  473. package/dist/kernel/events/provider-events.d.ts.map +0 -1
  474. package/dist/kernel/events/sdd-events.d.ts.map +0 -1
  475. package/dist/kernel/events/session-events.d.ts.map +0 -1
  476. package/dist/kernel/events/tool-events.d.ts.map +0 -1
  477. package/dist/kernel/events/worktree-events.d.ts.map +0 -1
  478. package/dist/kernel/events.d.ts.map +0 -1
  479. package/dist/kernel/index.d.ts.map +0 -1
  480. package/dist/kernel/index.js.map +0 -7
  481. package/dist/kernel/pipeline.d.ts.map +0 -1
  482. package/dist/kernel/run-controller.d.ts.map +0 -1
  483. package/dist/kernel/tokens.d.ts.map +0 -1
  484. package/dist/mailbox-attach.d.ts.map +0 -1
  485. package/dist/middleware/collab-pause.d.ts.map +0 -1
  486. package/dist/models/alibaba-token-plan-catalog.d.ts.map +0 -1
  487. package/dist/models/codex-catalog.d.ts.map +0 -1
  488. package/dist/models/index.d.ts.map +0 -1
  489. package/dist/models/index.js.map +0 -7
  490. package/dist/models/llm-selector.d.ts.map +0 -1
  491. package/dist/models/mode-store.d.ts.map +0 -1
  492. package/dist/models/model-intelligence.d.ts.map +0 -1
  493. package/dist/models/model-router.d.ts.map +0 -1
  494. package/dist/models/models-registry.d.ts.map +0 -1
  495. package/dist/models/provider-model-resolve.d.ts.map +0 -1
  496. package/dist/notifications/index.d.ts.map +0 -1
  497. package/dist/notifications/index.js.map +0 -7
  498. package/dist/notifications/notifier-impl.d.ts.map +0 -1
  499. package/dist/notifications/notifier.d.ts.map +0 -1
  500. package/dist/notifications/types.d.ts.map +0 -1
  501. package/dist/observability/event-bridge.d.ts.map +0 -1
  502. package/dist/observability/health.d.ts.map +0 -1
  503. package/dist/observability/index.d.ts.map +0 -1
  504. package/dist/observability/index.js.map +0 -7
  505. package/dist/observability/metrics.d.ts.map +0 -1
  506. package/dist/observability/network-telemetry.d.ts.map +0 -1
  507. package/dist/observability/otel-tracer.d.ts.map +0 -1
  508. package/dist/observability/otlp-metrics.d.ts.map +0 -1
  509. package/dist/observability/otlp-traces.d.ts.map +0 -1
  510. package/dist/observability/process-telemetry.d.ts.map +0 -1
  511. package/dist/observability/prometheus.d.ts.map +0 -1
  512. package/dist/observability/redact-command.d.ts.map +0 -1
  513. package/dist/observability/tracer.d.ts.map +0 -1
  514. package/dist/plugin/api.d.ts.map +0 -1
  515. package/dist/plugin/config.d.ts.map +0 -1
  516. package/dist/plugin/index.d.ts.map +0 -1
  517. package/dist/plugin/index.js.map +0 -7
  518. package/dist/plugin/loader.d.ts.map +0 -1
  519. package/dist/plugins/auto-review-plugin.d.ts.map +0 -1
  520. package/dist/plugins/chimera-plugin.d.ts.map +0 -1
  521. package/dist/plugins/prompts-plugin.d.ts.map +0 -1
  522. package/dist/plugins/review-claim-registry.d.ts.map +0 -1
  523. package/dist/plugins/review-context-builder.d.ts.map +0 -1
  524. package/dist/plugins/review-finding-commands.d.ts.map +0 -1
  525. package/dist/plugins/review-finding-integration.d.ts.map +0 -1
  526. package/dist/plugins/review-finding-parser.d.ts.map +0 -1
  527. package/dist/plugins/review-finding-store.d.ts.map +0 -1
  528. package/dist/plugins/review-finding-types.d.ts.map +0 -1
  529. package/dist/plugins/review-report-integration.d.ts.map +0 -1
  530. package/dist/plugins/review-report-store.d.ts.map +0 -1
  531. package/dist/plugins/review-report-types.d.ts.map +0 -1
  532. package/dist/plugins/review-types.d.ts.map +0 -1
  533. package/dist/plugins/skills-plugin.d.ts.map +0 -1
  534. package/dist/plugins/sync-plugin.d.ts.map +0 -1
  535. package/dist/prompts/index.d.ts.map +0 -1
  536. package/dist/prompts/prompt-installer.d.ts.map +0 -1
  537. package/dist/prompts/prompt-manifest-store.d.ts.map +0 -1
  538. package/dist/registry/index.d.ts.map +0 -1
  539. package/dist/registry/index.js.map +0 -7
  540. package/dist/registry/provider-registry.d.ts.map +0 -1
  541. package/dist/registry/slash-command-registry.d.ts.map +0 -1
  542. package/dist/registry/tool-registry.d.ts.map +0 -1
  543. package/dist/replay/hash.d.ts.map +0 -1
  544. package/dist/replay/index.d.ts.map +0 -1
  545. package/dist/replay/index.js.map +0 -7
  546. package/dist/replay/replay-provider-runner.d.ts.map +0 -1
  547. package/dist/security/capabilities.d.ts.map +0 -1
  548. package/dist/security/config-secrets.d.ts.map +0 -1
  549. package/dist/security/directory-permission-policy.d.ts.map +0 -1
  550. package/dist/security/directory-policy-schema.d.ts.map +0 -1
  551. package/dist/security/index.d.ts.map +0 -1
  552. package/dist/security/index.js.map +0 -7
  553. package/dist/security/kanban-boundary.d.ts.map +0 -1
  554. package/dist/security/permission-policy-schema.d.ts.map +0 -1
  555. package/dist/security/permission-policy.d.ts.map +0 -1
  556. package/dist/security/readonly-permission-policy.d.ts.map +0 -1
  557. package/dist/security/secret-scrubber.d.ts.map +0 -1
  558. package/dist/security/secret-vault.d.ts.map +0 -1
  559. package/dist/security/trust-boundary.d.ts.map +0 -1
  560. package/dist/security/yolo-risk.d.ts.map +0 -1
  561. package/dist/session-registry-atomic-file.d.ts.map +0 -1
  562. package/dist/session-registry-types.d.ts.map +0 -1
  563. package/dist/session-registry.d.ts.map +0 -1
  564. package/dist/skills/foreign-sources.d.ts.map +0 -1
  565. package/dist/skills/frontmatter.d.ts.map +0 -1
  566. package/dist/skills/github-fetcher.d.ts.map +0 -1
  567. package/dist/skills/index.d.ts.map +0 -1
  568. package/dist/skills/index.js.map +0 -7
  569. package/dist/skills/limits.d.ts.map +0 -1
  570. package/dist/skills/manifest-store.d.ts.map +0 -1
  571. package/dist/skills/registry/github-direct-adapter.d.ts.map +0 -1
  572. package/dist/skills/registry/registry-adapter.d.ts.map +0 -1
  573. package/dist/skills/registry/skills-sh-adapter.d.ts.map +0 -1
  574. package/dist/skills/skill-generator.d.ts.map +0 -1
  575. package/dist/skills/skill-installer.d.ts.map +0 -1
  576. package/dist/storage/annotations-store.d.ts.map +0 -1
  577. package/dist/storage/attachment-store.d.ts.map +0 -1
  578. package/dist/storage/cloud-sync.d.ts.map +0 -1
  579. package/dist/storage/completed-work-checkpoint.d.ts.map +0 -1
  580. package/dist/storage/config-loader/bootstrap.d.ts.map +0 -1
  581. package/dist/storage/config-loader/default-repair.d.ts.map +0 -1
  582. package/dist/storage/config-loader/defaults.d.ts.map +0 -1
  583. package/dist/storage/config-loader/diagnostics.d.ts.map +0 -1
  584. package/dist/storage/config-loader/env-overrides.d.ts.map +0 -1
  585. package/dist/storage/config-loader/in-project-policy.d.ts.map +0 -1
  586. package/dist/storage/config-loader/inline-provider-models.d.ts.map +0 -1
  587. package/dist/storage/config-loader/legacy-sage-migration.d.ts.map +0 -1
  588. package/dist/storage/config-loader/path-identity.d.ts.map +0 -1
  589. package/dist/storage/config-loader/types.d.ts.map +0 -1
  590. package/dist/storage/config-loader/validation.d.ts.map +0 -1
  591. package/dist/storage/config-loader.d.ts.map +0 -1
  592. package/dist/storage/config-migration.d.ts.map +0 -1
  593. package/dist/storage/config-store.d.ts.map +0 -1
  594. package/dist/storage/director-state.d.ts.map +0 -1
  595. package/dist/storage/file-session-writer.d.ts.map +0 -1
  596. package/dist/storage/goal-coordination.d.ts.map +0 -1
  597. package/dist/storage/goal-kanban.d.ts.map +0 -1
  598. package/dist/storage/goal-store.d.ts.map +0 -1
  599. package/dist/storage/index.d.ts.map +0 -1
  600. package/dist/storage/index.js.map +0 -7
  601. package/dist/storage/input-history-store.d.ts.map +0 -1
  602. package/dist/storage/memory-backend.d.ts.map +0 -1
  603. package/dist/storage/memory-consolidator.d.ts.map +0 -1
  604. package/dist/storage/memory-graph-backend.d.ts.map +0 -1
  605. package/dist/storage/plan-store.d.ts.map +0 -1
  606. package/dist/storage/plan-templates.d.ts.map +0 -1
  607. package/dist/storage/prompt-store.d.ts.map +0 -1
  608. package/dist/storage/prompt-usage-store.d.ts.map +0 -1
  609. package/dist/storage/provider-config-watcher.d.ts.map +0 -1
  610. package/dist/storage/queue-store.d.ts.map +0 -1
  611. package/dist/storage/recovery-lock.d.ts.map +0 -1
  612. package/dist/storage/replay-log-store.d.ts.map +0 -1
  613. package/dist/storage/session-analyzer.d.ts.map +0 -1
  614. package/dist/storage/session-checkpoint-cas.d.ts.map +0 -1
  615. package/dist/storage/session-event-bridge.d.ts.map +0 -1
  616. package/dist/storage/session-helpers.d.ts.map +0 -1
  617. package/dist/storage/session-id-resolver.d.ts.map +0 -1
  618. package/dist/storage/session-id.d.ts.map +0 -1
  619. package/dist/storage/session-read-scrubber.d.ts.map +0 -1
  620. package/dist/storage/session-reader.d.ts.map +0 -1
  621. package/dist/storage/session-recovery.d.ts.map +0 -1
  622. package/dist/storage/session-resume-validation.d.ts.map +0 -1
  623. package/dist/storage/session-rewind-apply.d.ts.map +0 -1
  624. package/dist/storage/session-rewinder.d.ts.map +0 -1
  625. package/dist/storage/session-store/delete-session-artifacts.d.ts.map +0 -1
  626. package/dist/storage/session-store/delete-session-guards.d.ts.map +0 -1
  627. package/dist/storage/session-store/directory-scan.d.ts.map +0 -1
  628. package/dist/storage/session-store/directory-session-files.d.ts.map +0 -1
  629. package/dist/storage/session-store/events.d.ts.map +0 -1
  630. package/dist/storage/session-store/fork-session.d.ts.map +0 -1
  631. package/dist/storage/session-store/index-reader.d.ts.map +0 -1
  632. package/dist/storage/session-store/load-cache.d.ts.map +0 -1
  633. package/dist/storage/session-store/load-session-data.d.ts.map +0 -1
  634. package/dist/storage/session-store/paths.d.ts.map +0 -1
  635. package/dist/storage/session-store/prune-helpers.d.ts.map +0 -1
  636. package/dist/storage/session-store/replay.d.ts.map +0 -1
  637. package/dist/storage/session-store/search-events.d.ts.map +0 -1
  638. package/dist/storage/session-store/shard-manifest.d.ts.map +0 -1
  639. package/dist/storage/session-store/summary-builder.d.ts.map +0 -1
  640. package/dist/storage/session-store/summary-header.d.ts.map +0 -1
  641. package/dist/storage/session-store/types.d.ts.map +0 -1
  642. package/dist/storage/session-store.d.ts.map +0 -1
  643. package/dist/storage/session-summary.d.ts.map +0 -1
  644. package/dist/storage/session-tool-call-ends.d.ts.map +0 -1
  645. package/dist/storage/session-writer-scrubber.d.ts.map +0 -1
  646. package/dist/storage/session-writer-truncate.d.ts.map +0 -1
  647. package/dist/storage/storage-concurrency.d.ts.map +0 -1
  648. package/dist/storage/task-store.d.ts.map +0 -1
  649. package/dist/storage/todos-checkpoint.d.ts.map +0 -1
  650. package/dist/storage/tool-audit-log.d.ts.map +0 -1
  651. package/dist/tasking/index.d.ts.map +0 -1
  652. package/dist/tasking/index.js.map +0 -7
  653. package/dist/tasking/task-store.d.ts.map +0 -1
  654. package/dist/tasking/task-tracker.d.ts.map +0 -1
  655. package/dist/tools/council-tool.d.ts.map +0 -1
  656. package/dist/tools/fallback-chain-manage-tool.d.ts.map +0 -1
  657. package/dist/tools/fallback-favorite-manage-tool.d.ts.map +0 -1
  658. package/dist/tools/fallback-manage-helpers.d.ts.map +0 -1
  659. package/dist/tools/fallback-manage-tool-options.d.ts.map +0 -1
  660. package/dist/tools/fallback-manage-tools.d.ts.map +0 -1
  661. package/dist/tools/fallback-model-ref-parse.d.ts.map +0 -1
  662. package/dist/tools/fallback-provider-key-store.d.ts.map +0 -1
  663. package/dist/tools/fallback-system-config-view-tool.d.ts.map +0 -1
  664. package/dist/tools/index.d.ts.map +0 -1
  665. package/dist/tools/index.js.map +0 -7
  666. package/dist/tools/mcp-control.d.ts.map +0 -1
  667. package/dist/tools/mcp-use.d.ts.map +0 -1
  668. package/dist/tools/one-shot-llm-tool.d.ts.map +0 -1
  669. package/dist/tools/plugin-manager.d.ts.map +0 -1
  670. package/dist/types/agent-bridge.d.ts.map +0 -1
  671. package/dist/types/attachment.d.ts.map +0 -1
  672. package/dist/types/autonomy.d.ts.map +0 -1
  673. package/dist/types/blocks.d.ts.map +0 -1
  674. package/dist/types/compactor.d.ts.map +0 -1
  675. package/dist/types/config/autonomy.d.ts.map +0 -1
  676. package/dist/types/config/context.d.ts.map +0 -1
  677. package/dist/types/config/fleet-chat.d.ts.map +0 -1
  678. package/dist/types/config/mcp-features.d.ts.map +0 -1
  679. package/dist/types/config/providers.d.ts.map +0 -1
  680. package/dist/types/config/root.d.ts.map +0 -1
  681. package/dist/types/config/runtime.d.ts.map +0 -1
  682. package/dist/types/config/skills-fleet-brain.d.ts.map +0 -1
  683. package/dist/types/config/tools.d.ts.map +0 -1
  684. package/dist/types/config.d.ts.map +0 -1
  685. package/dist/types/context-evidence.d.ts.map +0 -1
  686. package/dist/types/context-window.d.ts.map +0 -1
  687. package/dist/types/council.d.ts.map +0 -1
  688. package/dist/types/default-config.d.ts.map +0 -1
  689. package/dist/types/design-kit.d.ts.map +0 -1
  690. package/dist/types/error-handler.d.ts.map +0 -1
  691. package/dist/types/errors.d.ts.map +0 -1
  692. package/dist/types/file-event-record.d.ts.map +0 -1
  693. package/dist/types/hooks.d.ts.map +0 -1
  694. package/dist/types/index.d.ts.map +0 -1
  695. package/dist/types/index.js.map +0 -7
  696. package/dist/types/input-reader.d.ts.map +0 -1
  697. package/dist/types/logger.d.ts.map +0 -1
  698. package/dist/types/memory.d.ts.map +0 -1
  699. package/dist/types/messages.d.ts.map +0 -1
  700. package/dist/types/mode-prompts.d.ts.map +0 -1
  701. package/dist/types/mode.d.ts.map +0 -1
  702. package/dist/types/models-registry.d.ts.map +0 -1
  703. package/dist/types/multi-agent.d.ts.map +0 -1
  704. package/dist/types/observability.d.ts.map +0 -1
  705. package/dist/types/one-shot-llm.d.ts.map +0 -1
  706. package/dist/types/path-resolver.d.ts.map +0 -1
  707. package/dist/types/permission.d.ts.map +0 -1
  708. package/dist/types/plugin.d.ts.map +0 -1
  709. package/dist/types/prompt-registry.d.ts.map +0 -1
  710. package/dist/types/prompt.d.ts.map +0 -1
  711. package/dist/types/provider-runner.d.ts.map +0 -1
  712. package/dist/types/provider.d.ts.map +0 -1
  713. package/dist/types/quota-regex.d.ts.map +0 -1
  714. package/dist/types/renderer.d.ts.map +0 -1
  715. package/dist/types/retry-policy.d.ts.map +0 -1
  716. package/dist/types/secret-scrubber.d.ts.map +0 -1
  717. package/dist/types/secret-vault.d.ts.map +0 -1
  718. package/dist/types/selector.d.ts.map +0 -1
  719. package/dist/types/session-markers.d.ts.map +0 -1
  720. package/dist/types/session-markers.js.map +0 -7
  721. package/dist/types/session-reader.d.ts.map +0 -1
  722. package/dist/types/session-rewinder.d.ts.map +0 -1
  723. package/dist/types/session.d.ts.map +0 -1
  724. package/dist/types/side-effect.d.ts.map +0 -1
  725. package/dist/types/skill.d.ts.map +0 -1
  726. package/dist/types/slash-command.d.ts.map +0 -1
  727. package/dist/types/spec.d.ts.map +0 -1
  728. package/dist/types/system-prompt-contributor.d.ts.map +0 -1
  729. package/dist/types/system-prompt.d.ts.map +0 -1
  730. package/dist/types/task-graph.d.ts.map +0 -1
  731. package/dist/types/token-counter.d.ts.map +0 -1
  732. package/dist/types/tool-executor.d.ts.map +0 -1
  733. package/dist/types/tool-markers.d.ts.map +0 -1
  734. package/dist/types/tool.d.ts.map +0 -1
  735. package/dist/types/utility-types.d.ts.map +0 -1
  736. package/dist/utils/assert-never.d.ts.map +0 -1
  737. package/dist/utils/atomic-write.d.ts.map +0 -1
  738. package/dist/utils/cache-key.d.ts.map +0 -1
  739. package/dist/utils/child-env.d.ts.map +0 -1
  740. package/dist/utils/color.d.ts.map +0 -1
  741. package/dist/utils/compaction-preview.d.ts.map +0 -1
  742. package/dist/utils/config-backup.d.ts.map +0 -1
  743. package/dist/utils/config-json.d.ts.map +0 -1
  744. package/dist/utils/connectivity.d.ts.map +0 -1
  745. package/dist/utils/context-breakdown.d.ts.map +0 -1
  746. package/dist/utils/context-evidence.d.ts.map +0 -1
  747. package/dist/utils/continuous-memory-profiler.d.ts.map +0 -1
  748. package/dist/utils/crash-shield.d.ts.map +0 -1
  749. package/dist/utils/deep-merge.d.ts.map +0 -1
  750. package/dist/utils/diff.d.ts.map +0 -1
  751. package/dist/utils/error.d.ts.map +0 -1
  752. package/dist/utils/error.js.map +0 -7
  753. package/dist/utils/expect-defined.d.ts.map +0 -1
  754. package/dist/utils/expect-defined.js.map +0 -7
  755. package/dist/utils/glob-expand.d.ts.map +0 -1
  756. package/dist/utils/glob-match.d.ts.map +0 -1
  757. package/dist/utils/heap-watchdog-types.d.ts.map +0 -1
  758. package/dist/utils/heap-watchdog.d.ts.map +0 -1
  759. package/dist/utils/heap-watchdog.js.map +0 -7
  760. package/dist/utils/incoming-images.d.ts.map +0 -1
  761. package/dist/utils/index.d.ts.map +0 -1
  762. package/dist/utils/index.js.map +0 -7
  763. package/dist/utils/instruction-file.d.ts.map +0 -1
  764. package/dist/utils/ip-guard.d.ts.map +0 -1
  765. package/dist/utils/json-repair.d.ts.map +0 -1
  766. package/dist/utils/json-schema-validate.d.ts.map +0 -1
  767. package/dist/utils/lru-cache.d.ts.map +0 -1
  768. package/dist/utils/memory-flight-recorder.d.ts.map +0 -1
  769. package/dist/utils/merge-custom-models.d.ts.map +0 -1
  770. package/dist/utils/merge-models-payload.d.ts.map +0 -1
  771. package/dist/utils/message-invariants.d.ts.map +0 -1
  772. package/dist/utils/newline-normalize.d.ts.map +0 -1
  773. package/dist/utils/perf-profile.d.ts.map +0 -1
  774. package/dist/utils/pid.d.ts.map +0 -1
  775. package/dist/utils/project-identity.d.ts.map +0 -1
  776. package/dist/utils/project-watch.d.ts.map +0 -1
  777. package/dist/utils/regex-guard.d.ts.map +0 -1
  778. package/dist/utils/safe-json.d.ts.map +0 -1
  779. package/dist/utils/sage-output-block.d.ts.map +0 -1
  780. package/dist/utils/session-scoped-path.d.ts.map +0 -1
  781. package/dist/utils/sleep.d.ts.map +0 -1
  782. package/dist/utils/slug.d.ts.map +0 -1
  783. package/dist/utils/socket-path.d.ts.map +0 -1
  784. package/dist/utils/sqlite-warning.d.ts.map +0 -1
  785. package/dist/utils/string.d.ts.map +0 -1
  786. package/dist/utils/task-format.d.ts.map +0 -1
  787. package/dist/utils/term.d.ts.map +0 -1
  788. package/dist/utils/todos-format.d.ts.map +0 -1
  789. package/dist/utils/token-estimate.d.ts.map +0 -1
  790. package/dist/utils/tool-description-mode.d.ts.map +0 -1
  791. package/dist/utils/tool-name.d.ts.map +0 -1
  792. package/dist/utils/tool-output-serializer.d.ts.map +0 -1
  793. package/dist/utils/tool-result-render-mode.d.ts.map +0 -1
  794. package/dist/utils/tool-subject.d.ts.map +0 -1
  795. package/dist/utils/tool-wire-compact.d.ts.map +0 -1
  796. package/dist/utils/tree-kill.d.ts.map +0 -1
  797. package/dist/utils/tree-kill.js.map +0 -7
  798. package/dist/utils/ulid.d.ts.map +0 -1
  799. package/dist/utils/walk-ignore.d.ts.map +0 -1
  800. package/dist/utils/wstack-paths.d.ts.map +0 -1
  801. package/dist/worktree/index.d.ts.map +0 -1
  802. package/dist/worktree/index.js.map +0 -7
  803. package/dist/worktree/worktree-git.d.ts.map +0 -1
  804. package/dist/worktree/worktree-managed-ops.d.ts.map +0 -1
  805. package/dist/worktree/worktree-manager.d.ts.map +0 -1
  806. package/dist/worktree/worktree-types.d.ts.map +0 -1
package/dist/hq/index.js CHANGED
@@ -1,10 +1,83 @@
1
- // src/hq/protocol/tool.ts
2
- var DEFAULT_HQ_REDACTION_POLICY = {
3
- rawContent: true,
4
- toolArgs: "full",
5
- paths: "full"
6
- };
7
- var HQ_TRANSCRIPT_TEXT_CAP = 16e3;
1
+ // src/hq/protocol/governance.ts
2
+ var SIGNAL_LEVELS = /* @__PURE__ */ new Set([
3
+ "healthy",
4
+ "notice",
5
+ "warning",
6
+ "unavailable"
7
+ ]);
8
+ var SIGNAL_CODES = /* @__PURE__ */ new Set([
9
+ "attachment_broker_healthy",
10
+ "attachment_broker_initializing",
11
+ "attachment_broker_status_unavailable",
12
+ "attachment_broker_degraded",
13
+ "attachment_broker_audit_unhealthy",
14
+ "attachment_broker_revocation_pending",
15
+ "attachment_broker_stopped",
16
+ "broker_missing",
17
+ "broker_invalid",
18
+ "connection_failed",
19
+ "request_rejected",
20
+ "unexpected_response"
21
+ ]);
22
+ var OPERATOR_ACTIONS = /* @__PURE__ */ new Set(["none", "observe", "investigate"]);
23
+ var BROKER_STATES = /* @__PURE__ */ new Set(["idle", "active", "retry_wait", "stopped"]);
24
+ var BROKER_HEALTH = /* @__PURE__ */ new Set(["initializing", "healthy", "degraded", "stopped"]);
25
+ function isNonNegativeInteger(value) {
26
+ return typeof value === "number" && Number.isInteger(value) && value >= 0;
27
+ }
28
+ function hasOnlyKeys(value, allowed) {
29
+ const allowedKeys = new Set(allowed);
30
+ return Object.keys(value).every((key) => allowedKeys.has(key));
31
+ }
32
+ function isHqGovernanceSnapshotPayload(value) {
33
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
34
+ const payload = value;
35
+ if (!hasOnlyKeys(payload, [
36
+ "schemaVersion",
37
+ "projectId",
38
+ "observedAt",
39
+ "available",
40
+ "signal",
41
+ "daemon",
42
+ "attachmentBroker"
43
+ ]) || payload.schemaVersion !== 1 || typeof payload.projectId !== "string" || payload.projectId.length === 0 || typeof payload.observedAt !== "string" || typeof payload.available !== "boolean" || typeof payload.signal !== "object" || payload.signal === null || Array.isArray(payload.signal)) {
44
+ return false;
45
+ }
46
+ const signal = payload.signal;
47
+ if (!hasOnlyKeys(signal, ["level", "code", "operatorAction", "executionDisposition"]) || !SIGNAL_LEVELS.has(signal.level) || !SIGNAL_CODES.has(signal.code) || !OPERATOR_ACTIONS.has(signal.operatorAction) || signal.executionDisposition !== "continue") {
48
+ return false;
49
+ }
50
+ if (payload.available === false && (signal.level !== "unavailable" || payload.daemon !== void 0 || payload.attachmentBroker !== void 0) || payload.available === true && signal.level === "unavailable") {
51
+ return false;
52
+ }
53
+ if (payload.daemon !== void 0) {
54
+ if (typeof payload.daemon !== "object" || payload.daemon === null || Array.isArray(payload.daemon)) {
55
+ return false;
56
+ }
57
+ const daemon = payload.daemon;
58
+ if (!hasOnlyKeys(daemon, ["pid", "startedAt"]) || !isNonNegativeInteger(daemon.pid) || typeof daemon.startedAt !== "string") {
59
+ return false;
60
+ }
61
+ }
62
+ if (payload.attachmentBroker !== void 0 && payload.attachmentBroker !== null) {
63
+ if (typeof payload.attachmentBroker !== "object" || Array.isArray(payload.attachmentBroker)) {
64
+ return false;
65
+ }
66
+ const broker = payload.attachmentBroker;
67
+ if (!hasOnlyKeys(broker, [
68
+ "state",
69
+ "health",
70
+ "consecutiveFailures",
71
+ "pendingRevocations",
72
+ "auditHealthy",
73
+ "expiresAt",
74
+ "nextActionAt"
75
+ ]) || !BROKER_STATES.has(broker.state) || !BROKER_HEALTH.has(broker.health) || !isNonNegativeInteger(broker.consecutiveFailures) || !isNonNegativeInteger(broker.pendingRevocations) || typeof broker.auditHealthy !== "boolean" || broker.expiresAt !== void 0 && typeof broker.expiresAt !== "string" || broker.nextActionAt !== void 0 && typeof broker.nextActionAt !== "string") {
76
+ return false;
77
+ }
78
+ }
79
+ return true;
80
+ }
8
81
 
9
82
  // src/hq/protocol/kanban.ts
10
83
  var HQ_KANBAN_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]*$/;
@@ -85,33 +158,10 @@ function isHqPeerLostPayload(x) {
85
158
  return true;
86
159
  }
87
160
 
88
- // src/hq/protocol/resume.ts
89
- var HQ_RESUME_GAP_MAX_ENVELOPES = 1e3;
90
- var HQ_RESUME_GAP_MAX_BYTES = 1048576;
91
- var HQ_RESUME_GAP_MAX_STALE_MS = 24 * 60 * 60 * 1e3;
92
- function isHqResumeGapMessage(x) {
93
- if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
94
- const v = x;
95
- if (v.type !== "hq.resume_gap") return false;
96
- if (!Number.isSafeInteger(v.lastSeqSeen) || v.lastSeqSeen < 0) return false;
97
- if (!Array.isArray(v.envelopes)) return false;
98
- if (v.envelopes.length > HQ_RESUME_GAP_MAX_ENVELOPES) return false;
99
- if (typeof v.truncated !== "boolean") return false;
100
- return true;
101
- }
102
- function isHqResumeRejectMessage(x) {
103
- if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
104
- const v = x;
105
- if (v.type !== "hq.resume_reject") return false;
106
- if (v.reason !== "gap_too_large" && v.reason !== "last_seen_too_old" && v.reason !== "log_unavailable") {
107
- return false;
108
- }
109
- if (typeof v.detectedAt !== "string" || !Number.isFinite(Date.parse(v.detectedAt))) return false;
110
- return true;
111
- }
161
+ // src/hq/protocol/envelope.ts
162
+ var HQ_PROTOCOL_VERSION = 1;
112
163
 
113
164
  // src/hq/protocol/core.ts
114
- var HQ_PROTOCOL_VERSION = 1;
115
165
  var KNOWN_HQ_CLIENT_FRAME_TYPES = /* @__PURE__ */ new Set([
116
166
  "client.hello",
117
167
  "client.event",
@@ -277,6 +327,7 @@ var KNOWN_HQ_EVENT_PAYLOAD_TYPES = /* @__PURE__ */ new Set([
277
327
  "client.heartbeat",
278
328
  "mcp.health.snapshot",
279
329
  "mcp.operation",
330
+ "governance.snapshot",
280
331
  "peer.rehydrate",
281
332
  "peer.lost"
282
333
  ]);
@@ -542,6 +593,8 @@ function parseHqEventPayload(eventType, payload) {
542
593
  return isHqMcpHealthSnapshotPayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
543
594
  case "mcp.operation":
544
595
  return isHqMcpOperationPayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
596
+ case "governance.snapshot":
597
+ return isHqGovernanceSnapshotPayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
545
598
  case "peer.rehydrate":
546
599
  return isHqPeerRehydratePayload(payload) ? { ok: true, payload } : { ok: false, reason: "malformed-payload" };
547
600
  case "peer.lost":
@@ -567,6 +620,39 @@ function createHqEventEnvelope(input) {
567
620
  };
568
621
  }
569
622
 
623
+ // src/hq/protocol/resume.ts
624
+ var HQ_RESUME_GAP_MAX_ENVELOPES = 1e3;
625
+ var HQ_RESUME_GAP_MAX_BYTES = 1048576;
626
+ var HQ_RESUME_GAP_MAX_STALE_MS = 24 * 60 * 60 * 1e3;
627
+ function isHqResumeGapMessage(x) {
628
+ if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
629
+ const v = x;
630
+ if (v.type !== "hq.resume_gap") return false;
631
+ if (!Number.isSafeInteger(v.lastSeqSeen) || v.lastSeqSeen < 0) return false;
632
+ if (!Array.isArray(v.envelopes)) return false;
633
+ if (v.envelopes.length > HQ_RESUME_GAP_MAX_ENVELOPES) return false;
634
+ if (typeof v.truncated !== "boolean") return false;
635
+ return true;
636
+ }
637
+ function isHqResumeRejectMessage(x) {
638
+ if (typeof x !== "object" || x === null || Array.isArray(x)) return false;
639
+ const v = x;
640
+ if (v.type !== "hq.resume_reject") return false;
641
+ if (v.reason !== "gap_too_large" && v.reason !== "last_seen_too_old" && v.reason !== "log_unavailable") {
642
+ return false;
643
+ }
644
+ if (typeof v.detectedAt !== "string" || !Number.isFinite(Date.parse(v.detectedAt))) return false;
645
+ return true;
646
+ }
647
+
648
+ // src/hq/protocol/tool.ts
649
+ var DEFAULT_HQ_REDACTION_POLICY = {
650
+ rawContent: true,
651
+ toolArgs: "full",
652
+ paths: "full"
653
+ };
654
+ var HQ_TRANSCRIPT_TEXT_CAP = 16e3;
655
+
570
656
  // src/hq/publisher.ts
571
657
  import { randomUUID } from "node:crypto";
572
658
  import * as v8 from "node:v8";
@@ -580,61 +666,71 @@ var PATTERNS = [
580
666
  // strings don't trigger false positives.
581
667
  {
582
668
  type: "anthropic_key",
583
- regex: /(?<![A-Za-z0-9])sk-ant-api\d+-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g
669
+ regex: /(?<![A-Za-z0-9])sk-ant-api\d+-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g,
670
+ anchor: "sk-ant-"
584
671
  },
585
- { type: "openai_key", regex: /(?<![A-Za-z0-9])sk-(?:proj-)?[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g },
586
- { type: "github_pat", regex: /(?<![A-Za-z0-9])ghp_[A-Za-z0-9]{36,}(?![A-Za-z0-9])/g },
587
- { type: "github_pat_v2", regex: /(?<![A-Za-z0-9])github_pat_[A-Za-z0-9_]{50,}(?![A-Za-z0-9])/g },
588
- { type: "aws_access_key", regex: /(?<![A-Za-z0-9])AKIA[0-9A-Z]{16}(?![A-Za-z0-9])/g },
589
- { type: "gcp_key", regex: /(?<![A-Za-z0-9])AIza[0-9A-Za-z_-]{35}(?![A-Za-z0-9])/g },
590
- { type: "slack_token", regex: /(?<![A-Za-z0-9-])xox[abpos]-[A-Za-z0-9-]{10,}(?![A-Za-z0-9-])/g },
672
+ { type: "openai_key", regex: /(?<![A-Za-z0-9])sk-(?:proj-)?[A-Za-z0-9_-]{20,}(?![A-Za-z0-9])/g, anchor: "sk-" },
673
+ { type: "github_pat", regex: /(?<![A-Za-z0-9])ghp_[A-Za-z0-9]{36,}(?![A-Za-z0-9])/g, anchor: "ghp_" },
674
+ { type: "github_pat_v2", regex: /(?<![A-Za-z0-9])github_pat_[A-Za-z0-9_]{50,}(?![A-Za-z0-9])/g, anchor: "github_pat_" },
675
+ { type: "aws_access_key", regex: /(?<![A-Za-z0-9])AKIA[0-9A-Z]{16}(?![A-Za-z0-9])/g, anchor: "AKIA" },
676
+ { type: "gcp_key", regex: /(?<![A-Za-z0-9])AIza[0-9A-Za-z_-]{35}(?![A-Za-z0-9])/g, anchor: "AIza" },
677
+ { type: "slack_token", regex: /(?<![A-Za-z0-9-])xox[abpos]-[A-Za-z0-9-]{10,}(?![A-Za-z0-9-])/g, anchor: "xox" },
591
678
  {
592
679
  type: "stripe_key",
593
- regex: /(?<![A-Za-z0-9])sk_(?:live|test)_[A-Za-z0-9]{24,}(?![A-Za-z0-9])/g
680
+ regex: /(?<![A-Za-z0-9])sk_(?:live|test)_[A-Za-z0-9]{24,}(?![A-Za-z0-9])/g,
681
+ anchor: "sk_"
594
682
  },
595
683
  {
596
684
  type: "twilio_sid",
597
- regex: /(?<![A-Za-z0-9])AC[a-f0-9]{32}(?![A-Za-z0-9])/g
685
+ regex: /(?<![A-Za-z0-9])AC[a-f0-9]{32}(?![A-Za-z0-9])/g,
686
+ anchor: "AC"
598
687
  },
599
688
  {
600
689
  type: "telegram_bot_token",
601
690
  // Telegram tokens are of the form bot<digits>:<alphanum> in URL paths
602
- regex: /\/bot\d+:[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g
691
+ regex: /\/bot\d+:[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
692
+ anchor: "/bot"
603
693
  },
604
694
  {
605
695
  type: "jwt",
606
696
  // Anchored: look for literal "eyJ" which is unambiguous for JWT header
607
- regex: /(?<![A-Za-z0-9/+=])eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}(?![A-Za-z0-9/+=])/g
697
+ regex: /(?<![A-Za-z0-9/+=])eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}(?![A-Za-z0-9/+=])/g,
698
+ anchor: "eyJ"
608
699
  },
609
700
  {
610
701
  type: "private_key",
611
702
  // Anchored: start must be BEGIN, end must be END with no extra dashes after END
612
- regex: /(?:^|\n)-----BEGIN (?:RSA|EC|OPENSSH|DSA|PGP)? ?PRIVATE KEY-----[\s\S]*?-----END[^-]*-----(?:\n|$)/g
703
+ regex: /(?:^|\n)-----BEGIN (?:RSA|EC|OPENSSH|DSA|PGP)? ?PRIVATE KEY-----[\s\S]*?-----END[^-]*-----(?:\n|$)/g,
704
+ anchor: "-----BEGIN"
613
705
  },
614
- { type: "mongodb_uri", regex: /mongodb(?:\+srv)?:\/\/[^\s"'`]+/g },
615
- { type: "postgres_uri", regex: /postgres(?:ql)?:\/\/[^\s"'`]+/g },
616
- { type: "mysql_uri", regex: /mysql:\/\/[^\s"'`]+/g },
617
- { type: "redis_uri", regex: /redis:\/\/[^\s"'`]+/g },
706
+ { type: "mongodb_uri", regex: /mongodb(?:\+srv)?:\/\/[^\s"'`]+/g, anchor: "mongodb" },
707
+ { type: "postgres_uri", regex: /postgres(?:ql)?:\/\/[^\s"'`]+/g, anchor: "postgres" },
708
+ { type: "mysql_uri", regex: /mysql:\/\/[^\s"'`]+/g, anchor: "mysql://" },
709
+ { type: "redis_uri", regex: /redis:\/\/[^\s"'`]+/g, anchor: "redis://" },
618
710
  // AI/ML provider keys — modern LLM services with well-known prefixes
619
711
  {
620
712
  type: "huggingface_token",
621
713
  // HuggingFace tokens: hf_ followed by 34 alphanumeric chars
622
- regex: /(?<![A-Za-z0-9])hf_[A-Za-z0-9]{34}(?![A-Za-z0-9])/g
714
+ regex: /(?<![A-Za-z0-9])hf_[A-Za-z0-9]{34}(?![A-Za-z0-9])/g,
715
+ anchor: "hf_"
623
716
  },
624
717
  {
625
718
  type: "replicate_token",
626
719
  // Replicate tokens: r8_ followed by 40+ alphanumeric chars
627
- regex: /(?<![A-Za-z0-9])r8_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g
720
+ regex: /(?<![A-Za-z0-9])r8_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
721
+ anchor: "r8_"
628
722
  },
629
723
  {
630
724
  type: "perplexity_key",
631
725
  // Perplexity API keys: pplx- followed by 40+ alphanumeric chars
632
- regex: /(?<![A-Za-z0-9])pplx-[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g
726
+ regex: /(?<![A-Za-z0-9])pplx-[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
727
+ anchor: "pplx-"
633
728
  },
634
729
  {
635
730
  type: "groq_key",
636
731
  // Groq API keys: gsk_ followed by 40+ alphanumeric chars
637
- regex: /(?<![A-Za-z0-9])gsk_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g
732
+ regex: /(?<![A-Za-z0-9])gsk_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
733
+ anchor: "gsk_"
638
734
  },
639
735
  {
640
736
  type: "bearer_token",
@@ -647,7 +743,8 @@ var PATTERNS = [
647
743
  // tokens sharing a single delimiter (`Bearer a… Bearer b…`) must both be
648
744
  // redacted. A consuming trailing delimiter would eat the separator the
649
745
  // next match needs for its leading anchor, leaking the second token.
650
- regex: /(?:^|[^A-Za-z0-9_.~+/-])Bearer\s+[A-Za-z0-9._~+/-]{12,512}=*(?=$|[^A-Za-z0-9_.~+/-])/g
746
+ regex: /(?:^|[^A-Za-z0-9_.~+/-])Bearer\s+[A-Za-z0-9._~+/-]{12,512}=*(?=$|[^A-Za-z0-9_.~+/-])/g,
747
+ anchor: "Bearer"
651
748
  },
652
749
  {
653
750
  type: "high_entropy_env",
@@ -663,7 +760,89 @@ var PATTERNS = [
663
760
  // replacement so the separator between adjacent secrets is preserved
664
761
  // rather than collapsed. Capture groups are therefore: 1=leading
665
762
  // delimiter, 2=key name, 3=value.
666
- regex: /(^|\s)([A-Z_]{4,}(?:KEY|TOKEN|SECRET|PASSWORD|PWD))\s*[:=]\s*['"]?([A-Za-z0-9_/+=-]{20,512})['"]?(?=\s|$)/g
763
+ regex: /(^|\s)([A-Z_]{4,}(?:KEY|TOKEN|SECRET|PASSWORD|PWD))\s*[:=]\s*['"]?([A-Za-z0-9_/+=-]{20,512})['"]?(?=\s|$)/g,
764
+ anchor: ["KEY", "TOKEN", "SECRET", "PASSWORD", "PWD"]
765
+ },
766
+ // ── Ported from packages/plugins credential-patterns.ts (WS-034) ─────────
767
+ // The plugin runtime carried 37 patterns while this scrubber — the one that
768
+ // guards session JSONL, chronicle, HQ broadcast, WebUI events and the auth
769
+ // audit — carried 22. The plugin side already had a parity test; it just did
770
+ // not cover core. Most consequential: WrongStack mints `gho_` tokens itself
771
+ // in the Copilot OAuth flow, and `gh[ousr]_` was absent here.
772
+ {
773
+ type: "github_oauth_token",
774
+ regex: /(?<![A-Za-z0-9])gh[ousr]_[A-Za-z0-9]{36,}(?![A-Za-z0-9])/g,
775
+ anchor: ["gho_", "ghu_", "ghs_", "ghr_"]
776
+ },
777
+ {
778
+ type: "gitlab_pat",
779
+ regex: /(?<![A-Za-z0-9])glpat-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
780
+ anchor: "glpat-"
781
+ },
782
+ {
783
+ type: "gitlab_runner_token",
784
+ regex: /(?<![A-Za-z0-9])glrt-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
785
+ anchor: "glrt-"
786
+ },
787
+ {
788
+ type: "npm_token",
789
+ regex: /(?<![A-Za-z0-9])npm_[A-Za-z0-9]{36}(?![A-Za-z0-9])/g,
790
+ anchor: "npm_"
791
+ },
792
+ {
793
+ type: "slack_app_token",
794
+ regex: /(?<![A-Za-z0-9-])xapp-\d-[A-Za-z0-9-]{10,}(?![A-Za-z0-9-])/g,
795
+ anchor: "xapp-"
796
+ },
797
+ {
798
+ type: "slack_webhook",
799
+ regex: /https:\/\/hooks\.slack\.com\/services\/T[A-Za-z0-9_-]+\/B[A-Za-z0-9_-]+\/[A-Za-z0-9]{16,}/g,
800
+ anchor: "hooks.slack.com"
801
+ },
802
+ {
803
+ type: "sendgrid_key",
804
+ regex: /(?<![A-Za-z0-9])SG\.[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
805
+ anchor: "SG."
806
+ },
807
+ {
808
+ type: "digitalocean_token",
809
+ regex: /(?<![A-Za-z0-9])dop_v1_[a-f0-9]{64}(?![A-Za-z0-9])/g,
810
+ anchor: "dop_v1_"
811
+ },
812
+ {
813
+ type: "doppler_token",
814
+ regex: /(?<![A-Za-z0-9])dp\.(?:pt|st|sa|scim|audit)\.[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
815
+ anchor: "dp."
816
+ },
817
+ {
818
+ type: "shopify_token",
819
+ regex: /(?<![A-Za-z0-9])shp(?:at|ca|pa|ss)_[a-fA-F0-9]{32}(?![A-Za-z0-9])/g,
820
+ anchor: "shp"
821
+ },
822
+ {
823
+ type: "docker_pat",
824
+ regex: /(?<![A-Za-z0-9])dckr_pat_[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
825
+ anchor: "dckr_pat_"
826
+ },
827
+ {
828
+ type: "linear_key",
829
+ regex: /(?<![A-Za-z0-9])lin_api_[A-Za-z0-9]{40,}(?![A-Za-z0-9])/g,
830
+ anchor: "lin_api_"
831
+ },
832
+ {
833
+ type: "atlassian_token",
834
+ regex: /(?<![A-Za-z0-9])ATATT3[A-Za-z0-9_\-=]{40,}(?![A-Za-z0-9_\-=])/g,
835
+ anchor: "ATATT3"
836
+ },
837
+ {
838
+ type: "square_token",
839
+ regex: /(?<![A-Za-z0-9])(?:sq0(?:atp|csp)-|EAAA)[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
840
+ anchor: ["sq0atp-", "sq0csp-", "EAAA"]
841
+ },
842
+ {
843
+ type: "google_oauth_client_secret",
844
+ regex: /(?<![A-Za-z0-9_-])GOCSPX-[A-Za-z0-9_-]{20,}(?![A-Za-z0-9_-])/g,
845
+ anchor: "GOCSPX-"
667
846
  }
668
847
  ];
669
848
  var SIMPLE_PATTERNS = PATTERNS.filter((p) => p.type !== "high_entropy_env");
@@ -672,32 +851,32 @@ var HIGH_ENTROPY_REGEX = PATTERNS.find((p) => p.type === "high_entropy_env").reg
672
851
  var COMBINED_REPLACEMENTS = SIMPLE_PATTERNS.map((p) => `[REDACTED:${p.type}]`);
673
852
  var SCRUB_CHUNK_BYTES = 64 * 1024;
674
853
  var SCRUB_OVERLAP_BYTES = 1024;
854
+ var PATTERN_ANCHORS = [
855
+ ...new Set(
856
+ PATTERNS.flatMap(
857
+ (pattern) => typeof pattern.anchor === "string" ? [pattern.anchor] : [...pattern.anchor]
858
+ )
859
+ )
860
+ ];
861
+ var JSON_KEY_ANCHORS = [
862
+ '"apiKey"',
863
+ '"api_key"',
864
+ '"token"',
865
+ '"secret"',
866
+ '"password"',
867
+ '"authorization"',
868
+ '"bearer"',
869
+ '"private_key"',
870
+ '"access_token"',
871
+ '"refresh_token"',
872
+ '"client_secret"'
873
+ ];
874
+ var ALL_ANCHORS = [...PATTERN_ANCHORS, ...JSON_KEY_ANCHORS];
675
875
  function hasCredentialAnchors(text) {
676
- return text.includes("-----BEGIN") || // Private keys (most unique → cheap reject)
677
- text.includes("sk-") || // Anthropic + OpenAI keys
678
- text.includes("sk_") || // Stripe live/test keys
679
- text.includes("ghp_") || // GitHub PAT v1
680
- text.includes("github_pat_") || // GitHub PAT v2
681
- text.includes("eyJ") || // JWT
682
- text.includes("AKIA") || // AWS access key
683
- text.includes("AIza") || // GCP service key
684
- text.includes("xox") || // Slack token (xoxa/xoxb/xoxp/xoxo/xoxs)
685
- text.includes("Bearer ") || // Bearer token (space suffix reduces false positives)
686
- text.includes("/bot") || // Telegram bot token (URL path pattern)
687
- text.includes("hf_") || // HuggingFace token
688
- text.includes("r8_") || // Replicate token
689
- text.includes("pplx-") || // Perplexity API key
690
- text.includes("gsk_") || // Groq API key
691
- text.includes("_KEY=") || // High-entropy env vars: API_KEY=, SECRET_KEY=, ...
692
- text.includes("_TOKEN=") || // ACCESS_TOKEN=, AUTH_TOKEN=, ...
693
- text.includes("_SECRET=") || // API_SECRET=, CLIENT_SECRET=, ...
694
- text.includes("_PASSWORD=") || // DB_PASSWORD=, ROOT_PASSWORD=, ...
695
- text.includes("mongodb://") || text.includes("mongodb+srv://") || text.includes("postgres://") || text.includes("postgresql://") || text.includes("mysql://") || text.includes("redis://") || // JSON-style credential keys: tool outputs often serialise objects as
696
- // raw JSON strings rather than parsed objects. The value may not start
697
- // with a recognisable prefix (sk-, ghp_, etc.), so we anchor on common
698
- // key names. The `"` prefix avoids matching prose that happens to mention
699
- // these words — JSON serialisation always quotes string keys.
700
- text.includes('"apiKey"') || text.includes('"api_key"') || text.includes('"token"') || text.includes('"secret"') || text.includes('"password"') || text.includes('"authorization"') || text.includes('"bearer"') || text.includes('"private_key"') || text.includes('"access_token"') || text.includes('"refresh_token"') || text.includes('"client_secret"');
876
+ for (const anchor of ALL_ANCHORS) {
877
+ if (text.includes(anchor)) return true;
878
+ }
879
+ return false;
701
880
  }
702
881
  var DefaultSecretScrubber = class {
703
882
  scrub(text) {
@@ -901,7 +1080,7 @@ function scrubAndTruncateHqPreview(value, maxLength = 280) {
901
1080
  return summarizeString(value, maxLength, true);
902
1081
  }
903
1082
  function visitValue(value, options, key) {
904
- if (!options.policy.rawContent && key !== void 0 && isSensitiveKey(key)) {
1083
+ if (key !== void 0 && isSensitiveKey(key)) {
905
1084
  return { value: SENSITIVE_FIELD_REPLACEMENT, redacted: true };
906
1085
  }
907
1086
  if (typeof value === "string") {
@@ -912,7 +1091,7 @@ function visitValue(value, options, key) {
912
1091
  if (!options.preserveRawContentKeys && !options.policy.rawContent && key !== void 0 && isRawContentKey(key)) {
913
1092
  return { value: RAW_CONTENT_REPLACEMENT, redacted: true };
914
1093
  }
915
- const scrubbed = summarizeString(value, options.maxSummaryLength, !options.policy.rawContent);
1094
+ const scrubbed = summarizeString(value, options.maxSummaryLength, true);
916
1095
  return { value: scrubbed, redacted: scrubbed !== value };
917
1096
  }
918
1097
  if (value === null || typeof value !== "object") return { value, redacted: false };
@@ -964,7 +1143,7 @@ function redactHqEvent(event, options = {}) {
964
1143
  }
965
1144
  function summarizeHqToolArgs(value, options = {}) {
966
1145
  const policy = resolveHqRedactionPolicy(options.policy);
967
- if (policy.toolArgs === "full") return value;
1146
+ if (policy.toolArgs === "full") return redactHqValue(value, options).value;
968
1147
  if (policy.toolArgs === "none") return "[REDACTED:hq_tool_args]";
969
1148
  if (policy.toolArgs === "redacted") return redactHqValue(value, options).value;
970
1149
  if (value === null || typeof value !== "object") return redactHqValue(value, options).value;
@@ -1836,10 +2015,51 @@ function isMissingFileError(error) {
1836
2015
 
1837
2016
  // src/hq/auth-store.ts
1838
2017
  import { createHash as createHash2, randomBytes, randomUUID as randomUUID2, scrypt, timingSafeEqual } from "node:crypto";
1839
- import * as fs3 from "node:fs/promises";
1840
2018
  import * as syncFs from "node:fs";
2019
+ import * as fs3 from "node:fs/promises";
1841
2020
  import * as path4 from "node:path";
1842
2021
 
2022
+ // src/security/file-permissions.ts
2023
+ import { chmod } from "node:fs/promises";
2024
+ var SECRET_FILE_MODE = 384;
2025
+ async function restrictFilePermissions(filePath, opts) {
2026
+ const label = opts?.label ?? "file-permissions";
2027
+ const warn = opts?.warn ?? ((msg) => console.warn(msg));
2028
+ if (process.platform === "win32") {
2029
+ try {
2030
+ const { execFile } = await import("node:child_process");
2031
+ const { promisify } = await import("node:util");
2032
+ const execFileAsync = promisify(execFile);
2033
+ const user = windowsAccountName();
2034
+ if (!user) {
2035
+ warn(
2036
+ `[${label}] Could not determine the current Windows user for ${filePath}; skipping icacls hardening.`
2037
+ );
2038
+ return;
2039
+ }
2040
+ await execFileAsync("icacls", [filePath, "/inheritance:r", "/grant:r", `${user}:(F)`], {
2041
+ windowsHide: true
2042
+ });
2043
+ } catch {
2044
+ warn(
2045
+ `[${label}] Could not restrict permissions on ${filePath} \u2014 it may be readable by other users on this system.`
2046
+ );
2047
+ }
2048
+ } else {
2049
+ try {
2050
+ await chmod(filePath, SECRET_FILE_MODE);
2051
+ } catch {
2052
+ }
2053
+ }
2054
+ }
2055
+ function windowsAccountName() {
2056
+ const username = process.env.USERNAME || process.env.USER;
2057
+ if (!username || username.includes("\0")) return void 0;
2058
+ const domain = process.env.USERDOMAIN;
2059
+ if (domain && !domain.includes("\0")) return `${domain}\\${username}`;
2060
+ return username;
2061
+ }
2062
+
1843
2063
  // src/utils/wstack-paths.ts
1844
2064
  import { createHash } from "node:crypto";
1845
2065
  import * as fs2 from "node:fs";
@@ -1969,11 +2189,31 @@ function resolveWstackPaths(opts) {
1969
2189
  }
1970
2190
 
1971
2191
  // src/hq/auth-audit.ts
1972
- import { appendFileSync, mkdirSync } from "node:fs";
2192
+ import { appendFileSync, readFileSync as readFileSync3, mkdirSync } from "node:fs";
1973
2193
  import * as path3 from "node:path";
1974
2194
  function hqAuthAuditPath(dataDir) {
1975
2195
  return path3.join(dataDir, "auth-audit.jsonl");
1976
2196
  }
2197
+ function readHqAuthAuditTail(dataDir, maxEntries = 50) {
2198
+ const filePath = hqAuthAuditPath(dataDir);
2199
+ let content;
2200
+ try {
2201
+ content = readFileSync3(filePath, "utf8");
2202
+ } catch {
2203
+ return [];
2204
+ }
2205
+ const lines = content.trimEnd().split("\n");
2206
+ const tail = lines.slice(-maxEntries);
2207
+ const entries = [];
2208
+ for (const line of tail) {
2209
+ if (!line) continue;
2210
+ try {
2211
+ entries.push(JSON.parse(line));
2212
+ } catch {
2213
+ }
2214
+ }
2215
+ return entries.reverse();
2216
+ }
1977
2217
  function appendHqAuthAudit(dataDir, entry, options) {
1978
2218
  try {
1979
2219
  mkdirSync(dataDir, { recursive: true });
@@ -2001,6 +2241,20 @@ function resolveHqDataDir(override, env = process.env) {
2001
2241
  if (!raw) return defaultHqDataDir();
2002
2242
  return path4.isAbsolute(raw) ? path4.resolve(raw) : path4.resolve(process.cwd(), raw);
2003
2243
  }
2244
+ function hqTokenVerifier(secret) {
2245
+ return createHash2("sha256").update(secret, "utf8").digest("hex");
2246
+ }
2247
+ function hqTokenKey(token) {
2248
+ if (token.verifier !== void 0 && token.verifier.length > 0) return token.verifier;
2249
+ return token.token ? hqTokenVerifier(token.token) : "";
2250
+ }
2251
+ function hashBrowserToken(token) {
2252
+ if (token.verifier !== void 0 && token.verifier.length > 0) {
2253
+ return token.token ? { ...token, token: "" } : token;
2254
+ }
2255
+ if (!token.token) return token;
2256
+ return { ...token, verifier: hqTokenVerifier(token.token), token: "" };
2257
+ }
2004
2258
  function isTokenExpired(token, at = Date.now(), clockSkewMs = 0) {
2005
2259
  if (token === void 0) return false;
2006
2260
  const expiresAt = token.expiresAt;
@@ -2034,6 +2288,9 @@ function hqAuthContentHash(file) {
2034
2288
  ...file.clientTokens !== void 0 ? { clientTokens: file.clientTokens.map(redactToken) } : {},
2035
2289
  ...file.passwordHash !== void 0 ? { passwordHash: REDACTED } : {},
2036
2290
  ...file.cookieSecret !== void 0 ? { cookieSecret: REDACTED } : {},
2291
+ ...file.totpSecret !== void 0 ? { totpSecret: REDACTED } : {},
2292
+ ...file.totpPendingSecret !== void 0 ? { totpPendingSecret: REDACTED } : {},
2293
+ ...file.totpRecoveryCodes !== void 0 ? { totpRecoveryCodes: file.totpRecoveryCodes.map(() => REDACTED) } : {},
2037
2294
  ...file.alertRules !== void 0 ? { alertRules: file.alertRules } : {}
2038
2295
  };
2039
2296
  const payload = JSON.stringify(projection);
@@ -2053,8 +2310,10 @@ async function writeHqRuntimeFile(dataDir, file) {
2053
2310
  ...file,
2054
2311
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
2055
2312
  };
2056
- await atomicWrite(hqRuntimeFilePath(dataDir), `${JSON.stringify(payload, null, 2)}
2057
- `, { mode: 384 });
2313
+ const target = hqRuntimeFilePath(dataDir);
2314
+ await atomicWrite(target, `${JSON.stringify(payload, null, 2)}
2315
+ `, { mode: SECRET_FILE_MODE });
2316
+ await restrictFilePermissions(target, { label: "hq-runtime" });
2058
2317
  }
2059
2318
  function isProcessAlive(pid) {
2060
2319
  if (!Number.isInteger(pid) || pid <= 0) return false;
@@ -2067,7 +2326,9 @@ function isProcessAlive(pid) {
2067
2326
  }
2068
2327
  function readHqRuntimeFileSync(dataDir) {
2069
2328
  try {
2070
- const parsed = JSON.parse(syncFs.readFileSync(hqRuntimeFilePath(dataDir), "utf8"));
2329
+ const parsed = JSON.parse(
2330
+ syncFs.readFileSync(hqRuntimeFilePath(dataDir), "utf8")
2331
+ );
2071
2332
  if (typeof parsed.url !== "string" || parsed.url.trim().length === 0) return void 0;
2072
2333
  if (typeof parsed.pid === "number" && !isProcessAlive(parsed.pid)) return void 0;
2073
2334
  return {
@@ -2110,10 +2371,17 @@ async function writeHqAuthFile(dataDir, file) {
2110
2371
  const payload = {
2111
2372
  ...file,
2112
2373
  version: HQ_AUTH_FILE_VERSION,
2113
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
2374
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
2375
+ // WS-044: browser secrets never touch the disk. Any legacy cleartext in
2376
+ // the incoming file is converted here, so the first write after an
2377
+ // upgrade migrates the whole list — no separate migration step to forget
2378
+ // to run, and no window where an old file stays cleartext because nothing
2379
+ // happened to rewrite it.
2380
+ ...file.browserTokens !== void 0 ? { browserTokens: file.browserTokens.map(hashBrowserToken) } : {}
2114
2381
  };
2115
2382
  await atomicWrite(target, `${JSON.stringify(payload, null, 2)}
2116
- `, { mode: 384 });
2383
+ `, { mode: SECRET_FILE_MODE });
2384
+ await restrictFilePermissions(target, { label: "hq-auth" });
2117
2385
  }
2118
2386
  async function ensureHqFirstRunAuthFile(dataDir, opts = {}) {
2119
2387
  const file = hqAuthFilePath(dataDir);
@@ -2319,6 +2587,7 @@ function discoverLocalHqEndpoint(options = {}) {
2319
2587
  const dataDir = resolveHqDataDir(options.dataDir, options.env ?? process.env);
2320
2588
  const runtime = readHqRuntimeFileSync(dataDir);
2321
2589
  if (runtime === void 0) return void 0;
2590
+ if (!isLoopbackHqUrl(runtime.url)) return void 0;
2322
2591
  const token = readFirstClientTokenFromAuthFile(dataDir);
2323
2592
  return { url: runtime.url, ...token ? { token } : {} };
2324
2593
  }
@@ -3312,11 +3581,8 @@ function startToolTelemetryBridge(opts) {
3312
3581
  }
3313
3582
  function truncateForSummary(output, policy, max = 280) {
3314
3583
  const resolved = resolveHqRedactionPolicy(policy);
3315
- if (resolved.rawContent) {
3316
- if (output.length <= max) return output;
3317
- return `${output.slice(0, max)}\u2026[truncated:${output.length - max}]`;
3318
- }
3319
- return scrubAndTruncateHqPreview(output, max) ?? "";
3584
+ const limit = resolved.rawContent ? Math.max(max, HQ_TRANSCRIPT_TEXT_CAP) : max;
3585
+ return scrubAndTruncateHqPreview(output, limit) ?? "";
3320
3586
  }
3321
3587
 
3322
3588
  // src/hq/cost-bridge.ts
@@ -3438,6 +3704,7 @@ var BestEffortLatestQueue = class {
3438
3704
  };
3439
3705
 
3440
3706
  // src/hq/kanban-store.ts
3707
+ var MAX_HQ_KANBAN_CACHE_PROJECTS = 32;
3441
3708
  var HqKanbanStore = class {
3442
3709
  dirPath;
3443
3710
  cache = /* @__PURE__ */ new Map();
@@ -3448,14 +3715,18 @@ var HqKanbanStore = class {
3448
3715
  }
3449
3716
  async load(projectId) {
3450
3717
  const cached = this.cache.get(projectId);
3451
- if (cached !== void 0) return structuredClone(cached);
3718
+ if (cached !== void 0) {
3719
+ this.cache.delete(projectId);
3720
+ this.cache.set(projectId, cached);
3721
+ return structuredClone(cached);
3722
+ }
3452
3723
  try {
3453
3724
  const content = await fs6.readFile(this.filePath(projectId), "utf8");
3454
3725
  const snapshot = JSON.parse(content);
3455
3726
  if (!isHqKanbanSnapshotPayload(snapshot) || snapshot.projectId !== projectId) {
3456
3727
  return emptyKanbanSnapshot(projectId);
3457
3728
  }
3458
- this.cache.set(projectId, snapshot);
3729
+ this.setCached(projectId, snapshot);
3459
3730
  return structuredClone(snapshot);
3460
3731
  } catch {
3461
3732
  return emptyKanbanSnapshot(projectId);
@@ -3470,11 +3741,13 @@ var HqKanbanStore = class {
3470
3741
  () => {
3471
3742
  if (this.mergeChains.get(incoming.projectId) === next) {
3472
3743
  this.mergeChains.delete(incoming.projectId);
3744
+ this.trimCache();
3473
3745
  }
3474
3746
  },
3475
3747
  () => {
3476
3748
  if (this.mergeChains.get(incoming.projectId) === next) {
3477
3749
  this.mergeChains.delete(incoming.projectId);
3750
+ this.trimCache();
3478
3751
  }
3479
3752
  }
3480
3753
  );
@@ -3483,7 +3756,8 @@ var HqKanbanStore = class {
3483
3756
  async mergeNow(incoming) {
3484
3757
  const current = await this.load(incoming.projectId);
3485
3758
  const records = /* @__PURE__ */ new Map();
3486
- for (const record of [...current.boards, ...current.tombstones]) records.set(record.boardId, record);
3759
+ for (const record of [...current.boards, ...current.tombstones])
3760
+ records.set(record.boardId, record);
3487
3761
  for (const record of [...incoming.boards, ...incoming.tombstones]) {
3488
3762
  const existing = records.get(record.boardId);
3489
3763
  if (existing === void 0 || compareKanbanRecord(record, existing) > 0) {
@@ -3502,8 +3776,15 @@ var HqKanbanStore = class {
3502
3776
  }
3503
3777
  merged.boards.sort((a, b) => a.boardId.localeCompare(b.boardId));
3504
3778
  merged.tombstones.sort((a, b) => a.boardId.localeCompare(b.boardId));
3505
- this.cache.set(incoming.projectId, merged);
3506
- this.writer(incoming.projectId).enqueue(merged);
3779
+ this.setCached(incoming.projectId, merged);
3780
+ const writer = this.writer(incoming.projectId);
3781
+ writer.enqueue(merged);
3782
+ void writer.drain().then(() => {
3783
+ if (this.writers.get(incoming.projectId) === writer) {
3784
+ this.writers.delete(incoming.projectId);
3785
+ this.trimCache();
3786
+ }
3787
+ });
3507
3788
  return structuredClone(merged);
3508
3789
  }
3509
3790
  async drain() {
@@ -3521,6 +3802,21 @@ var HqKanbanStore = class {
3521
3802
  }
3522
3803
  return writer;
3523
3804
  }
3805
+ setCached(projectId, snapshot) {
3806
+ this.cache.delete(projectId);
3807
+ this.cache.set(projectId, snapshot);
3808
+ this.trimCache(projectId);
3809
+ }
3810
+ trimCache(protectedProjectId) {
3811
+ if (this.cache.size <= MAX_HQ_KANBAN_CACHE_PROJECTS) return;
3812
+ for (const projectId of this.cache.keys()) {
3813
+ if (this.cache.size <= MAX_HQ_KANBAN_CACHE_PROJECTS) break;
3814
+ if (projectId === protectedProjectId || this.writers.has(projectId) || this.mergeChains.has(projectId)) {
3815
+ continue;
3816
+ }
3817
+ this.cache.delete(projectId);
3818
+ }
3819
+ }
3524
3820
  filePath(projectId) {
3525
3821
  const safe = createHash4("sha256").update(projectId).digest("hex");
3526
3822
  return path6.join(this.dirPath, `${safe}.json`);
@@ -3780,7 +4076,7 @@ var HqEventLog = class {
3780
4076
  async appendInternal(events) {
3781
4077
  await this.ensureLineCount();
3782
4078
  const lines = events.map((event) => JSON.stringify(event)).join("\n") + "\n";
3783
- await fs8.appendFile(this.filePath, lines, { encoding: "utf8" });
4079
+ await fs8.appendFile(this.filePath, lines, { encoding: "utf8", mode: SECRET_FILE_MODE });
3784
4080
  this.lineCount += events.length;
3785
4081
  this.byteCount += Buffer.byteLength(lines, "utf8");
3786
4082
  if (this.lineCount >= this.maxLines || this.byteCount >= this.maxBytes) {
@@ -4199,7 +4495,7 @@ var HqTimeseriesStore = class {
4199
4495
  const lines = snapshot.samples.map((bucket) => JSON.stringify(bucket)).join("\n") + "\n";
4200
4496
  await withFileLock(this.filePath, async () => {
4201
4497
  this.diskLineCount ??= await countNonEmptyLines(this.filePath);
4202
- await fs11.appendFile(this.filePath, lines, { encoding: "utf8" });
4498
+ await fs11.appendFile(this.filePath, lines, { encoding: "utf8", mode: SECRET_FILE_MODE });
4203
4499
  this.diskLineCount += snapshot.samples.length;
4204
4500
  const compactAt = Math.max(this.maxBuckets + 1, this.maxBuckets * 4);
4205
4501
  if (this.diskLineCount >= compactAt) {
@@ -4762,6 +5058,9 @@ export {
4762
5058
  hqAuthFilePath,
4763
5059
  hqEventLogPresetFields,
4764
5060
  hqRuntimeFilePath,
5061
+ hqTokenKey,
5062
+ hqTokenVerifier,
5063
+ isHqGovernanceSnapshotPayload,
4765
5064
  isHqKanbanSnapshotPayload,
4766
5065
  isHqPeerLostPayload,
4767
5066
  isHqPeerRehydratePayload,
@@ -4781,6 +5080,7 @@ export {
4781
5080
  mutateHqAuthFile,
4782
5081
  parseHqEventPayload,
4783
5082
  parseHqFrame,
5083
+ readHqAuthAuditTail,
4784
5084
  readHqAuthFile,
4785
5085
  readHqRuntimeFileSync,
4786
5086
  redactHqEvent,