@wrongstack/core 0.313.0 → 0.316.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 (343) hide show
  1. package/dist/chronicle/index.js +84 -6391
  2. package/dist/chronicle/legacy-journal-import.d.ts +0 -6
  3. package/dist/chronicle/metrics-ingest.d.ts +14 -0
  4. package/dist/chronicle/metrics-schema.d.ts +10 -1
  5. package/dist/chronicle/metrics-store.d.ts +20 -2
  6. package/dist/chronicle/project-server.js +98 -4874
  7. package/dist/chronicle/sink.d.ts +13 -0
  8. package/dist/chronicle/sqlite-journal.d.ts +20 -2
  9. package/dist/chunk-25LSLC3G.js +334 -0
  10. package/dist/chunk-27QIURLN.js +1073 -0
  11. package/dist/chunk-2FK4WTFF.js +207 -0
  12. package/dist/chunk-2YU4WVBW.js +134 -0
  13. package/dist/chunk-3AGWVSS7.js +4608 -0
  14. package/dist/chunk-3BDV7RL3.js +211 -0
  15. package/dist/chunk-3ECENVHL.js +325 -0
  16. package/dist/chunk-3XPVB7BA.js +135 -0
  17. package/dist/chunk-45WI72ZB.js +16884 -0
  18. package/dist/chunk-4BMVPOHO.js +3748 -0
  19. package/dist/chunk-4I7HGVVA.js +363 -0
  20. package/dist/chunk-4LCZVJVF.js +317 -0
  21. package/dist/chunk-4SJNS7OB.js +217 -0
  22. package/dist/chunk-4VWO3ZXL.js +342 -0
  23. package/dist/chunk-57GEWK5X.js +26 -0
  24. package/dist/chunk-5BMIE7QG.js +46 -0
  25. package/dist/chunk-5S437PRC.js +50 -0
  26. package/dist/chunk-5XDUGTKN.js +511 -0
  27. package/dist/chunk-5YPSXQXM.js +1443 -0
  28. package/dist/chunk-6FHWXLPT.js +10 -0
  29. package/dist/chunk-6H5GEOET.js +2406 -0
  30. package/dist/chunk-6NWEVFEL.js +151 -0
  31. package/dist/chunk-AYW5YINX.js +58 -0
  32. package/dist/chunk-B4AMLZPB.js +9 -0
  33. package/dist/chunk-B7F4WVP4.js +65 -0
  34. package/dist/chunk-BJHVULHO.js +55 -0
  35. package/dist/chunk-BPBKKBUK.js +2085 -0
  36. package/dist/chunk-BYD345OX.js +589 -0
  37. package/dist/chunk-C27KDLOX.js +279 -0
  38. package/dist/chunk-CU546ESW.js +597 -0
  39. package/dist/chunk-DLHHXUAM.js +172 -0
  40. package/dist/chunk-DOTHQSJ2.js +429 -0
  41. package/dist/chunk-DYLPMV4Q.js +711 -0
  42. package/dist/chunk-EODDVJBM.js +82 -0
  43. package/dist/chunk-F3JWNST7.js +361 -0
  44. package/dist/chunk-FC2ZGRF3.js +140 -0
  45. package/dist/chunk-FCBTO76Z.js +5786 -0
  46. package/dist/chunk-FHZVFYSL.js +396 -0
  47. package/dist/chunk-FNXVT7HF.js +52 -0
  48. package/dist/chunk-FWNLEZYG.js +259 -0
  49. package/dist/chunk-FXQLIX3K.js +211 -0
  50. package/dist/chunk-G5S3S5ZN.js +38 -0
  51. package/dist/chunk-GDQ7CZRQ.js +116 -0
  52. package/dist/chunk-GJJGJB2R.js +1374 -0
  53. package/dist/chunk-GTCU6DZ3.js +1 -0
  54. package/dist/chunk-HA4ZYA6T.js +178 -0
  55. package/dist/chunk-HI3JGZR2.js +188 -0
  56. package/dist/chunk-HMLIGAU7.js +395 -0
  57. package/dist/chunk-HXKZ7OBQ.js +303 -0
  58. package/dist/chunk-I7DALG7J.js +292 -0
  59. package/dist/chunk-IRUTEHCE.js +960 -0
  60. package/dist/chunk-IYFBFX34.js +86 -0
  61. package/dist/chunk-J2WRWR37.js +1104 -0
  62. package/dist/chunk-JFPJ6LLQ.js +129 -0
  63. package/dist/chunk-JMULFFLN.js +9 -0
  64. package/dist/chunk-JO4MGB6Z.js +1264 -0
  65. package/dist/chunk-JVKB2TBL.js +48 -0
  66. package/dist/chunk-JX7VBZDK.js +31 -0
  67. package/dist/chunk-K6BXGITA.js +931 -0
  68. package/dist/chunk-KDQJCT2J.js +45 -0
  69. package/dist/chunk-KJ2ZTQSL.js +47 -0
  70. package/dist/chunk-KZMSZV32.js +187 -0
  71. package/dist/chunk-LA7CLDRW.js +129 -0
  72. package/dist/chunk-LHOA5DWA.js +28 -0
  73. package/dist/chunk-LSMMOS2Z.js +119 -0
  74. package/dist/chunk-LX5QWLBL.js +27 -0
  75. package/dist/chunk-LXWCMQNJ.js +789 -0
  76. package/dist/chunk-M27LIEKV.js +2829 -0
  77. package/dist/chunk-MJPHJRAL.js +663 -0
  78. package/dist/chunk-MTL4O5YR.js +228 -0
  79. package/dist/chunk-NDBIPFNY.js +102 -0
  80. package/dist/chunk-NEMIWEXC.js +1199 -0
  81. package/dist/chunk-NHJ75HXY.js +1 -0
  82. package/dist/chunk-NIOAGFPB.js +1510 -0
  83. package/dist/chunk-NS52ISWS.js +355 -0
  84. package/dist/chunk-NSOFPKGT.js +5352 -0
  85. package/dist/chunk-NVIZG63R.js +757 -0
  86. package/dist/chunk-O37BQ65S.js +21 -0
  87. package/dist/chunk-OOYZPOXM.js +308 -0
  88. package/dist/chunk-OSGLYW5J.js +28 -0
  89. package/dist/chunk-PFCMSSUF.js +1640 -0
  90. package/dist/chunk-PFZO3C6H.js +14 -0
  91. package/dist/chunk-PGRVXIMY.js +158 -0
  92. package/dist/chunk-PHH7LD45.js +113 -0
  93. package/dist/chunk-PISBFBJN.js +109 -0
  94. package/dist/chunk-POOOIWE5.js +9 -0
  95. package/dist/chunk-PQNS3U7Z.js +1240 -0
  96. package/dist/chunk-QSTSJOCK.js +402 -0
  97. package/dist/chunk-RFQMOKWK.js +282 -0
  98. package/dist/chunk-RJIZEJ42.js +30 -0
  99. package/dist/chunk-RTOTNK3P.js +484 -0
  100. package/dist/chunk-RXKSDUAU.js +1172 -0
  101. package/dist/chunk-S45JPKQN.js +3317 -0
  102. package/dist/chunk-SAFHACFA.js +152 -0
  103. package/dist/chunk-SQJVFEBV.js +41 -0
  104. package/dist/chunk-SVT4RNTR.js +49 -0
  105. package/dist/chunk-SWUFN7XM.js +43 -0
  106. package/dist/chunk-SXMVYC5H.js +174 -0
  107. package/dist/chunk-SZ6AYUIZ.js +23 -0
  108. package/dist/chunk-TBRL2RCC.js +9 -0
  109. package/dist/chunk-TCCHINEF.js +655 -0
  110. package/dist/chunk-THEGTRAG.js +316 -0
  111. package/dist/chunk-TR4LQE7L.js +2256 -0
  112. package/dist/chunk-TRT2HRWZ.js +18 -0
  113. package/dist/chunk-TWJMGXCI.js +900 -0
  114. package/dist/chunk-U45AXT5D.js +1023 -0
  115. package/dist/chunk-U4FWBSO3.js +509 -0
  116. package/dist/chunk-UBGDX6FI.js +147 -0
  117. package/dist/chunk-UJILKYES.js +75 -0
  118. package/dist/chunk-ULMAQV3T.js +234 -0
  119. package/dist/chunk-VVBP6KGT.js +9 -0
  120. package/dist/chunk-W5VITDM2.js +168 -0
  121. package/dist/chunk-WAHQVNWT.js +194 -0
  122. package/dist/chunk-WBPVKEEE.js +227 -0
  123. package/dist/chunk-WGGYRBXH.js +5434 -0
  124. package/dist/chunk-WLYKU45P.js +5770 -0
  125. package/dist/chunk-WP7BVANJ.js +53 -0
  126. package/dist/chunk-WQQON3SV.js +473 -0
  127. package/dist/chunk-WQTOVMGV.js +119 -0
  128. package/dist/chunk-XBDP4QPW.js +7 -0
  129. package/dist/chunk-XEBHSJLT.js +103 -0
  130. package/dist/chunk-XF4VUMKW.js +231 -0
  131. package/dist/chunk-XQ2ECNK3.js +1 -0
  132. package/dist/chunk-Y5YXDM7D.js +74 -0
  133. package/dist/chunk-YOPAUVU4.js +2588 -0
  134. package/dist/chunk-YPT4A46F.js +362 -0
  135. package/dist/chunk-YWXT3JNM.js +425 -0
  136. package/dist/chunk-YY6APYUM.js +49 -0
  137. package/dist/chunk-Z2IJUO45.js +691 -0
  138. package/dist/chunk-ZHZ2Y2DH.js +1643 -0
  139. package/dist/chunk-ZT7JNIGX.js +152 -0
  140. package/dist/coordination/agent-monitor.d.ts +9 -1
  141. package/dist/coordination/agent-subagent-runner.d.ts +1 -1
  142. package/dist/coordination/agents/agent-prompts.d.ts +8 -0
  143. package/dist/coordination/agents/index.d.ts +33 -1
  144. package/dist/coordination/agents/index.js +184 -6269
  145. package/dist/coordination/agents/phase3-wave1-platform.d.ts +1 -3
  146. package/dist/coordination/agents/phase3-wave2-meta.d.ts +1 -3
  147. package/dist/coordination/agents/phase8-wave3-products.d.ts +1 -3
  148. package/dist/coordination/agents/phase9-wave4-platform-meta.d.ts +1 -3
  149. package/dist/coordination/agents/project-agent-identity.d.ts +11 -11
  150. package/dist/coordination/agents/types.d.ts +13 -2
  151. package/dist/coordination/brain-monitor.d.ts +30 -7
  152. package/dist/coordination/collab-debug.d.ts +1 -1
  153. package/dist/coordination/collab-pause.d.ts +1 -1
  154. package/dist/coordination/delegate-tool.d.ts +7 -5
  155. package/dist/coordination/director-kanban-queue-helpers.d.ts +1 -0
  156. package/dist/coordination/director-options.d.ts +7 -0
  157. package/dist/coordination/director-spawn-model.d.ts +17 -0
  158. package/dist/coordination/director-tools.d.ts +2 -2
  159. package/dist/coordination/director.d.ts +12 -0
  160. package/dist/coordination/dispatcher.d.ts +8 -0
  161. package/dist/coordination/fleet-bus.d.ts +35 -4
  162. package/dist/coordination/fleet-supervisor.d.ts +10 -2
  163. package/dist/coordination/fleet.d.ts +16 -7
  164. package/dist/coordination/index.d.ts +4 -0
  165. package/dist/coordination/index.js +402 -34324
  166. package/dist/coordination/kanban-dispatch-port.d.ts +2 -2
  167. package/dist/coordination/mailbox-http-router.d.ts +4 -3
  168. package/dist/coordination/mailbox-http-validation.d.ts +1 -1
  169. package/dist/coordination/mailbox-project-server.js +48 -3276
  170. package/dist/coordination/mailbox-types.d.ts +24 -6
  171. package/dist/coordination/model-tier-leader.d.ts +122 -0
  172. package/dist/coordination/model-tier.d.ts +122 -0
  173. package/dist/coordination/multi-agent-coordinator.d.ts +24 -0
  174. package/dist/coordination/origin-session.d.ts +16 -0
  175. package/dist/coordination/provider-status-tracker.d.ts +41 -5
  176. package/dist/coordination/session-note-hub.d.ts +44 -0
  177. package/dist/coordination/session-note-tool.d.ts +10 -0
  178. package/dist/core/agent.d.ts +15 -2
  179. package/dist/core/context.d.ts +22 -3
  180. package/dist/core/index.d.ts +2 -0
  181. package/dist/core/index.js +239 -12360
  182. package/dist/core/model-ref.js +5 -23
  183. package/dist/core/provider-runner.d.ts +36 -1
  184. package/dist/core/request-conversation-binding.d.ts +37 -0
  185. package/dist/core/session-notes.d.ts +25 -0
  186. package/dist/core/system-prompt-builder.d.ts +11 -2
  187. package/dist/core/system-prompt-variants.d.ts +78 -0
  188. package/dist/design/index.js +50 -1087
  189. package/dist/execution/auto-compaction-middleware.d.ts +11 -0
  190. package/dist/execution/autonomy-brain.d.ts +2 -1
  191. package/dist/execution/autonomy-prompt-contributor.d.ts +7 -2
  192. package/dist/execution/compaction-core.d.ts +4 -4
  193. package/dist/execution/eternal-autonomy.d.ts +1 -1
  194. package/dist/execution/index.d.ts +1 -1
  195. package/dist/execution/index.js +1615 -21895
  196. package/dist/execution/model-runtime.d.ts +0 -7
  197. package/dist/execution/parallel-eternal-engine.d.ts +7 -7
  198. package/dist/execution/prompt-enhancer.js +16 -535
  199. package/dist/execution/retry-policy.d.ts +31 -1
  200. package/dist/extension/index.js +7 -311
  201. package/dist/goal/index.js +33 -3435
  202. package/dist/hooks/index.js +14 -1138
  203. package/dist/hq/index.js +114 -5139
  204. package/dist/hq/persistence/event-log.d.ts +0 -1
  205. package/dist/hq/persistence.d.ts +4 -4
  206. package/dist/hq/protocol.js +21 -668
  207. package/dist/hq/publisher.d.ts +2 -0
  208. package/dist/index.d.ts +14 -11
  209. package/dist/index.js +1502 -92655
  210. package/dist/infrastructure/index.d.ts +4 -4
  211. package/dist/infrastructure/index.js +504 -5230
  212. package/dist/infrastructure/token-counter.d.ts +9 -0
  213. package/dist/kernel/events/agent-events.d.ts +77 -3
  214. package/dist/kernel/events/brain-events.d.ts +12 -0
  215. package/dist/kernel/events/provider-events.d.ts +22 -1
  216. package/dist/kernel/events/session-events.d.ts +14 -0
  217. package/dist/kernel/events/tool-events.d.ts +13 -0
  218. package/dist/kernel/index.js +14 -992
  219. package/dist/mailbox-attach.d.ts +1 -1
  220. package/dist/models/index.js +41 -1117
  221. package/dist/notifications/index.js +3 -108
  222. package/dist/observability/event-bridge.d.ts +25 -5
  223. package/dist/observability/index.d.ts +9 -8
  224. package/dist/observability/index.js +477 -631
  225. package/dist/observability/tool-usage-source.d.ts +65 -0
  226. package/dist/plugin/index.d.ts +5 -0
  227. package/dist/plugin/index.js +600 -14835
  228. package/dist/plugins/auto-review-plugin.d.ts +3 -2
  229. package/dist/plugins/review-finding-commands.d.ts +0 -8
  230. package/dist/plugins/review-finding-store.js +22 -0
  231. package/dist/plugins/review-finding-types.js +19 -0
  232. package/dist/plugins/review-report-integration.js +21 -0
  233. package/dist/plugins/review-report-store.js +20 -0
  234. package/dist/plugins/review-report-types.js +13 -0
  235. package/dist/prompts/index.js +14 -948
  236. package/dist/registry/index.js +9 -822
  237. package/dist/registry/tool-registry.d.ts +59 -9
  238. package/dist/registry-7N4O3E7W.js +14 -0
  239. package/dist/replay/index.js +6 -84
  240. package/dist/security/capabilities.d.ts +6 -0
  241. package/dist/security/file-permissions.d.ts +1 -1
  242. package/dist/security/index.js +161 -2235
  243. package/dist/security/permission-policy.d.ts +12 -1
  244. package/dist/security/secret-scrubber.d.ts +15 -0
  245. package/dist/session-catalog/index.d.ts +1 -0
  246. package/dist/session-catalog/index.js +41 -2103
  247. package/dist/session-catalog/project-server.js +59 -1435
  248. package/dist/session-catalog/protocol.d.ts +32 -1
  249. package/dist/session-catalog/registry.d.ts +17 -1
  250. package/dist/session-catalog/session-agents.d.ts +56 -0
  251. package/dist/session-catalog/store-rebuild.d.ts +14 -0
  252. package/dist/session-catalog/store-schema.d.ts +26 -0
  253. package/dist/session-catalog/store.d.ts +27 -1
  254. package/dist/session-note-attach.d.ts +9 -0
  255. package/dist/skills/index.js +35 -1578
  256. package/dist/statusline/index.d.ts +43 -0
  257. package/dist/statusline/index.js +102 -0
  258. package/dist/storage/board-store-port.d.ts +2 -2
  259. package/dist/storage/config-loader/in-project-policy.d.ts +29 -0
  260. package/dist/storage/config-loader.d.ts +3 -2
  261. package/dist/storage/file-session-writer.d.ts +4 -2
  262. package/dist/storage/goal-coordination.d.ts +6 -1
  263. package/dist/storage/goal-kanban.d.ts +4 -1
  264. package/dist/storage/index.d.ts +12 -4
  265. package/dist/storage/index.js +198 -15601
  266. package/dist/storage/input-history-store.d.ts +2 -4
  267. package/dist/storage/memory-curator.d.ts +133 -0
  268. package/dist/storage/session-agent-attribution.d.ts +39 -0
  269. package/dist/storage/session-doctor.d.ts +109 -0
  270. package/dist/storage/session-event-bridge.d.ts +5 -7
  271. package/dist/storage/session-outcome.d.ts +42 -0
  272. package/dist/storage/session-recovery.d.ts +55 -0
  273. package/dist/storage/session-store/load-session-data.d.ts +11 -0
  274. package/dist/storage/session-store/prune-helpers.d.ts +1 -1
  275. package/dist/storage/session-store/resume-session.d.ts +0 -2
  276. package/dist/storage/session-store/types.d.ts +8 -0
  277. package/dist/storage/session-store.d.ts +3 -3
  278. package/dist/storage/session-summary-tracker.d.ts +8 -1
  279. package/dist/storage/session-write-buffer.d.ts +18 -0
  280. package/dist/storage/session-writer-truncate.d.ts +2 -0
  281. package/dist/tasking/index.js +10 -676
  282. package/dist/tools/fallback-manage-tools.d.ts +6 -4
  283. package/dist/tools/index.js +52 -9590
  284. package/dist/tools/model-tier-set-tool.d.ts +66 -0
  285. package/dist/types/agent-bridge.d.ts +2 -1
  286. package/dist/types/config/autonomy.d.ts +5 -0
  287. package/dist/types/config/mcp-features.d.ts +7 -0
  288. package/dist/types/config/model-tiers.d.ts +148 -0
  289. package/dist/types/config/root.d.ts +9 -0
  290. package/dist/types/config/tools.d.ts +73 -0
  291. package/dist/types/config/ui.d.ts +1 -1
  292. package/dist/types/config.d.ts +1 -0
  293. package/dist/types/context.d.ts +2 -0
  294. package/dist/types/default-config.d.ts +6 -0
  295. package/dist/types/errors.d.ts +20 -1
  296. package/dist/types/index.d.ts +11 -9
  297. package/dist/types/index.js +131 -1342
  298. package/dist/types/multi-agent.d.ts +43 -0
  299. package/dist/types/plugin.d.ts +1 -1
  300. package/dist/types/provider-runner.d.ts +8 -0
  301. package/dist/types/provider.d.ts +15 -0
  302. package/dist/types/runtime-capability-manifest.d.ts +1 -1
  303. package/dist/types/secret-scrubber.d.ts +15 -0
  304. package/dist/types/session-markers.d.ts +37 -10
  305. package/dist/types/session-markers.js +8 -144
  306. package/dist/types/session-timeline.d.ts +197 -0
  307. package/dist/types/session-timeline.js +12 -0
  308. package/dist/types/session.d.ts +172 -11
  309. package/dist/types/system-prompt.d.ts +27 -0
  310. package/dist/utils/config-backup.d.ts +9 -1
  311. package/dist/utils/error.js +3 -4
  312. package/dist/utils/expect-defined.js +3 -9
  313. package/dist/utils/heap-watchdog.js +6 -706
  314. package/dist/utils/index.js +271 -5685
  315. package/dist/utils/message-invariants.d.ts +4 -1
  316. package/dist/utils/regex-guard.d.ts +1 -1
  317. package/dist/utils/sage-output-block.js +5 -42
  318. package/dist/utils/socket-path.d.ts +1 -1
  319. package/dist/utils/token-estimate.d.ts +6 -2
  320. package/dist/utils/wstack-paths.d.ts +2 -0
  321. package/dist/wiring/proxy-rewrite.d.ts +46 -0
  322. package/dist/wiring/proxy-rewrite.js +24 -121
  323. package/dist/worktree/index.js +6 -887
  324. package/instructions/agents/explore-companion.md +45 -18
  325. package/instructions/agents/memory-curator.md +34 -22
  326. package/instructions/coordination/director-preamble.md +12 -7
  327. package/instructions/coordination/subagent-baseline.md +26 -5
  328. package/instructions/leader-after-task.md +4 -1
  329. package/instructions/llm/chimera-review.md +30 -9
  330. package/instructions/llm/memory-curator.md +31 -0
  331. package/instructions/sections/tool/delegation-compact.md +2 -0
  332. package/instructions/sections/tool/delegation-full.md +5 -1
  333. package/instructions/sections/tool/mailbox-compact.md +5 -1
  334. package/instructions/sections/tool/mailbox-full.md +3 -0
  335. package/instructions/sections/tool/session-note-compact.md +3 -0
  336. package/instructions/sections/tool/session-note-full.md +15 -0
  337. package/instructions/system-lite.md +9 -4
  338. package/instructions/system-pro.md +66 -143
  339. package/instructions/system.md +73 -175
  340. package/package.json +32 -4
  341. package/dist/coordination/agents.d.ts +0 -8
  342. package/dist/coordination/transport.d.ts +0 -2
  343. package/dist/storage/session-writer/session-writer-summary-tracker.d.ts +0 -28
@@ -9,6 +9,9 @@ export interface MessageRepairResult {
9
9
  messages: Message[];
10
10
  report: MessageRepairReport;
11
11
  }
12
+ export interface MessageRepairOptions {
13
+ preserveTrailingToolUse?: boolean | undefined;
14
+ }
12
15
  /**
13
16
  * Repair provider-level tool-call adjacency invariants.
14
17
  *
@@ -18,7 +21,7 @@ export interface MessageRepairResult {
18
21
  * exchange. This function removes only the now-orphaned protocol blocks,
19
22
  * preserving surrounding text/images/thinking blocks where possible.
20
23
  */
21
- export declare function repairToolUseAdjacency(messages: Message[]): MessageRepairResult;
24
+ export declare function repairToolUseAdjacency(messages: Message[], opts?: MessageRepairOptions): MessageRepairResult;
22
25
  /**
23
26
  * True when a message content payload carries meaningful information for
24
27
  * the provider: non-whitespace text, a tool call/result, thinking with
@@ -8,5 +8,5 @@
8
8
  * `tools/tests/regex-guard-parity.test.ts` still pins all three historical
9
9
  * entry points to identical verdicts (now trivially true — one code path).
10
10
  */
11
- export { type CompileFail, type CompileResult, capSubject, compileUserRegex, MAX_SUBJECT_LEN, } from '@wrongstack/primitives';
11
+ export { type CompileFail, type CompileResult, type CompileUserRegexResult, capSubject, compileUserRegex, MAX_SUBJECT_LEN, } from '@wrongstack/primitives';
12
12
  //# sourceMappingURL=regex-guard.d.ts.map
@@ -1,45 +1,8 @@
1
- // src/utils/sage-output-block.ts
2
- var SAGE_INJECTOR_HEADINGS = /* @__PURE__ */ new Set([
3
- "--- SAGE: task-aware project knowledge (Memory Injector) ---",
4
- "--- SAGE: related project knowledge (Memory Injector) ---"
5
- ]);
6
- var SAGE_MEMORY_LINE = /^- \[[^\]]+\](?:\[[^\]]+\])* <memory id="[^"]+">.*<\/memory>(?: .*)?$/;
7
- var SAGE_MEMORY_LINE_TRUNCATED = /^- \[[^\]]+\](?:\[[^\]]+\])* <memory id="[^"]+">.*…$/;
8
- function splitSageOutputBlock(output) {
9
- if (!output.includes("--- SAGE: ")) return { body: output, sageLines: [] };
10
- const lines = output.split("\n");
11
- for (let sageIdx = lines.length - 1; sageIdx >= 0; sageIdx--) {
12
- if (!SAGE_INJECTOR_HEADINGS.has(lines[sageIdx] ?? "")) continue;
13
- const candidate = lines.slice(sageIdx);
14
- if (candidate.length < 2) continue;
15
- const memoryLines = candidate.slice(1).filter((line) => line.trim().length > 0);
16
- if (memoryLines.length === 0) continue;
17
- const bodyOk = memoryLines.every(
18
- (line, index) => SAGE_MEMORY_LINE.test(line) || index === memoryLines.length - 1 && SAGE_MEMORY_LINE_TRUNCATED.test(line)
19
- );
20
- if (!bodyOk) continue;
21
- let end = candidate.length;
22
- while (end > 1 && candidate[end - 1].trim().length === 0) end--;
23
- return {
24
- body: lines.slice(0, sageIdx).join("\n").trimEnd(),
25
- sageLines: candidate.slice(0, end)
26
- };
27
- }
28
- return { body: output, sageLines: [] };
29
- }
30
- function capSageLines(sageLines, maxChars) {
31
- if (sageLines.length < 2) return [];
32
- const header = sageLines[0];
33
- if (header.length >= maxChars) return [];
34
- const out = [header];
35
- let used = header.length;
36
- for (const line of sageLines.slice(1)) {
37
- if (used + 1 + line.length > maxChars) break;
38
- out.push(line);
39
- used += 1 + line.length;
40
- }
41
- return out.length > 1 ? out : [];
42
- }
1
+ import {
2
+ SAGE_INJECTOR_HEADINGS,
3
+ capSageLines,
4
+ splitSageOutputBlock
5
+ } from "../chunk-SVT4RNTR.js";
43
6
  export {
44
7
  SAGE_INJECTOR_HEADINGS,
45
8
  capSageLines,
@@ -4,5 +4,5 @@
4
4
  * share one implementation with packages that depend on persistence directly
5
5
  * (kanban). See `packages/persistence/src/socket-path.ts` for rationale.
6
6
  */
7
- export { assertUnixSocketPathWithinLimit, checkUnixSocketPath, type UnixSocketPathCheck, unixSocketPathLimit, } from '@wrongstack/persistence';
7
+ export { assertUnixSocketPathWithinLimit, checkUnixSocketPath, unixSocketPathLimit } from '@wrongstack/persistence';
8
8
  //# sourceMappingURL=socket-path.d.ts.map
@@ -1,12 +1,16 @@
1
1
  import type { Message } from '../types/messages.js';
2
2
  /**
3
3
  * Estimate tokens for a tool_use block input.
4
- * Caches the stringified result keyed by the stable string representation
5
- * to avoid repeated JSON.stringify calls during context window checks.
4
+ *
5
+ * Memoized on the input object, so the repeated context-window checks and
6
+ * breakdown re-runs that walk the same history serialize each payload once.
6
7
  */
7
8
  export declare function estimateToolInputTokens(input: unknown): number;
8
9
  /**
9
10
  * Estimate tokens for a tool_result content.
11
+ *
12
+ * Same memo as {@link estimateToolInputTokens}; non-object contents (null,
13
+ * numbers) are cheap enough to stringify outright and cannot key a WeakMap.
10
14
  */
11
15
  export declare function estimateToolResultTokens(content: string | unknown): number;
12
16
  /**
@@ -41,6 +41,8 @@ export interface WstackPaths {
41
41
  profileModeConfig: (name: string) => string;
42
42
  /** Resolve ~/.wrongstack/profiles/<name>/provider-status.json */
43
43
  profileProviderStatus: (name: string) => string;
44
+ /** Resolve ~/.wrongstack/profiles/<name>/provider-status-audit.jsonl */
45
+ profileProviderAudit: (name: string) => string;
44
46
  /** Resolve ~/.wrongstack/profiles/<name>/update-cache.json */
45
47
  profileUpdateCache: (name: string) => string;
46
48
  /** ~/.wrongstack/.key — 32 random bytes, mode 0600, AES-GCM key for the secret vault. */
@@ -54,6 +54,34 @@ export interface ProxyConfig {
54
54
  /** Last-known reachability state from the periodic probe. */
55
55
  active: boolean;
56
56
  }
57
+ /**
58
+ * Minimal structural logger for probe transitions. Deliberately not core's
59
+ * full `Logger` so any host (CLI logger, subcommand, test stub) can pass a
60
+ * plain object.
61
+ */
62
+ export interface ProxyTransitionLogger {
63
+ info(message: string): void;
64
+ warn(message: string): void;
65
+ }
66
+ /**
67
+ * Install (or replace) the probe's transition logger. Affects the running
68
+ * probe immediately (the flip path reads this variable at log time).
69
+ * Passing undefined silences transition logging again.
70
+ */
71
+ export declare function setProxyTransitionLogger(logger: ProxyTransitionLogger | undefined): void;
72
+ /**
73
+ * Redact a URL for logging: keep scheme://host[:port]/path, drop query and
74
+ * fragment. Provider/proxy URLs may embed credentials there (`?key=...`);
75
+ * a log line must never persist them.
76
+ */
77
+ export declare function sanitizeUrlForLog(raw: string | undefined): string;
78
+ /**
79
+ * Emit one probe-transition line. Called ONLY when `active` actually flips
80
+ * (never on verdict-identical probes) — every flip is a routing change for
81
+ * every subsequent provider build. Fully isolated: a throwing logger must
82
+ * never alter probe control flow.
83
+ */
84
+ export declare function logProxyTransition(next: boolean, reason: string): void;
57
85
  /** Read the current proxy configuration. Safe to call from any layer. */
58
86
  export declare function getProxyConfig(): ProxyConfig;
59
87
  /**
@@ -83,12 +111,30 @@ export declare function applyProxyConfig(next: Partial<ProxyConfig>): ProxyConfi
83
111
  * excluded" rule so future call sites can't accidentally skip a check.
84
112
  */
85
113
  export declare function shouldRewriteFor(providerId: string): boolean;
114
+ /**
115
+ * Automatically deactivate the proxy if a connection failure occurs while
116
+ * the proxy was marked active. Triggers instant-apply provider rebuilds to
117
+ * fallback immediately to direct provider communication without failing the turn.
118
+ */
119
+ export declare function deactivateProxyOnConnectionFailure(err: unknown): boolean;
86
120
  /**
87
121
  * Reset to defaults. Intended for tests; do NOT call from production code
88
122
  * (the singleton lives for the lifetime of the process). Also drops all
89
123
  * change listeners so tests never observe each other's notifications.
90
124
  */
91
125
  export declare function __resetProxyConfigForTests(): void;
126
+ /** Upper bound for {@link waitForProxyRoutingSettle}. Local provider builds
127
+ * settle in single-digit milliseconds; anything slower means the host is
128
+ * doing network work inside rebuildProvider, and a retrying turn must not
129
+ * hang on it. Resolves on timeout — the barrier delays, never fails. */
130
+ export declare const PROXY_ROUTING_SETTLE_CAP_MS = 2000;
131
+ /**
132
+ * Wait until every registered instant-apply rebuild triggered by the current
133
+ * proxy-config change has settled, the cap elapses, or `signal` aborts.
134
+ * Resolves in all three cases — a settle timeout must not fail the turn,
135
+ * only stop delaying it.
136
+ */
137
+ export declare function waitForProxyRoutingSettle(timeoutMs?: number, signal?: AbortSignal | undefined): Promise<void>;
92
138
  /** Minimal structural logger — keeps this module dependency-free. */
93
139
  export interface ProxyInstantApplyLogger {
94
140
  info: (message: string) => void;
@@ -1,132 +1,35 @@
1
- // src/wiring/proxy-rewrite.ts
2
- var PROXY_PATH_PREFIX = "/proxy/";
3
- var PROXY_EXCLUDED_PROVIDERS = /* @__PURE__ */ new Set(["openai-codex"]);
4
- function isProxyEligible(providerId) {
5
- if (!providerId) return false;
6
- if (PROXY_EXCLUDED_PROVIDERS.has(providerId)) return false;
7
- return true;
8
- }
9
- function rewriteBaseUrl(originalBaseUrl, proxyUrl) {
10
- if (!originalBaseUrl) return void 0;
11
- if (!proxyUrl) return originalBaseUrl;
12
- if (!isProxyEligibleForRewrite(originalBaseUrl, proxyUrl)) return originalBaseUrl;
13
- return composeRewrittenUrl(originalBaseUrl, proxyUrl);
14
- }
15
- function isProxyEligibleForRewrite(originalBaseUrl, proxyUrl) {
16
- if (!originalBaseUrl.includes("://")) return false;
17
- if (!proxyUrl.includes("://")) return false;
18
- const normalizedProxy = proxyUrl.replace(/\/+$/, "");
19
- if (originalBaseUrl.startsWith(`${normalizedProxy}${PROXY_PATH_PREFIX}`)) {
20
- return false;
21
- }
22
- try {
23
- const parsed = new URL(originalBaseUrl);
24
- const isLoopback = parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1" || // WHATWG URL serializes IPv6 hosts with brackets — `[::1]`, not `::1`.
25
- parsed.hostname === "[::1]";
26
- if (isLoopback && parsed.port !== "") return false;
27
- } catch {
28
- }
29
- return true;
30
- }
31
- function composeRewrittenUrl(originalBaseUrl, proxyUrl) {
32
- const parsedOriginal = new URL(originalBaseUrl);
33
- const hostAndPath = `${parsedOriginal.host}${parsedOriginal.pathname}`;
34
- const trailingQuery = parsedOriginal.search || "";
35
- const trailingHash = parsedOriginal.hash || "";
36
- const proxyRoot = proxyUrl.replace(/\/+$/, "");
37
- return `${proxyRoot}${PROXY_PATH_PREFIX}${hostAndPath}${trailingQuery}${trailingHash}`;
38
- }
39
- var DEFAULT_PROXY_CONFIG = { enabled: false, url: "", active: false };
40
- var currentConfig = { ...DEFAULT_PROXY_CONFIG };
41
- function getProxyConfig() {
42
- return currentConfig;
43
- }
44
- var listeners = /* @__PURE__ */ new Set();
45
- function subscribeToProxyConfig(listener) {
46
- listeners.add(listener);
47
- return () => {
48
- listeners.delete(listener);
49
- };
50
- }
51
- function applyProxyConfig(next) {
52
- const previous = currentConfig;
53
- currentConfig = {
54
- enabled: next.enabled ?? previous.enabled,
55
- url: next.url ?? previous.url,
56
- active: next.active ?? previous.active
57
- };
58
- const materialChange = currentConfig.enabled !== previous.enabled || currentConfig.url !== previous.url || currentConfig.active !== previous.active;
59
- if (materialChange) {
60
- for (const listener of listeners) {
61
- try {
62
- listener(currentConfig, previous);
63
- } catch {
64
- }
65
- }
66
- }
67
- return previous;
68
- }
69
- function shouldRewriteFor(providerId) {
70
- const cfg = currentConfig;
71
- if (!cfg.enabled || !cfg.active || !cfg.url) return false;
72
- return isProxyEligible(providerId);
73
- }
74
- function __resetProxyConfigForTests() {
75
- currentConfig = { ...DEFAULT_PROXY_CONFIG };
76
- listeners.clear();
77
- }
78
- function effectiveBaseUrlFor(cfg, providerId, rawBaseUrl) {
79
- if (!rawBaseUrl) return void 0;
80
- const active = cfg.enabled && cfg.active && !!cfg.url && isProxyEligible(providerId);
81
- return active ? rewriteBaseUrl(rawBaseUrl, cfg.url) : rawBaseUrl;
82
- }
83
- function effectiveBaseUrl(providerId, rawBaseUrl) {
84
- return effectiveBaseUrlFor(currentConfig, providerId, rawBaseUrl);
85
- }
86
- function createProxyInstantApply(deps) {
87
- const { getActiveProviderId, getRawBaseUrl, rebuildProvider, logger } = deps;
88
- let lastProviderId = getActiveProviderId();
89
- let lastEffectiveUrl = effectiveBaseUrl(lastProviderId, getRawBaseUrl(lastProviderId));
90
- let disposed = false;
91
- let rebuildChain = Promise.resolve();
92
- const unsubscribe = subscribeToProxyConfig((next, previous) => {
93
- if (disposed) return;
94
- const providerId = getActiveProviderId();
95
- const raw = getRawBaseUrl(providerId);
96
- const nextUrl = effectiveBaseUrlFor(next, providerId, raw);
97
- const baselineUrl = providerId === lastProviderId ? lastEffectiveUrl : effectiveBaseUrlFor(previous, providerId, raw);
98
- lastProviderId = providerId;
99
- lastEffectiveUrl = nextUrl;
100
- if (nextUrl === baselineUrl) return;
101
- rebuildChain = rebuildChain.then(() => rebuildProvider(providerId)).then(() => {
102
- if (!disposed) {
103
- logger.info(`WrongProxy routing changed \u2014 live provider rebuilt (${providerId})`);
104
- }
105
- }).catch((err) => {
106
- if (!disposed) {
107
- logger.warn(
108
- `WrongProxy instant-apply: provider rebuild failed for ${providerId}: ${err instanceof Error ? err.message : String(err)}`
109
- );
110
- }
111
- });
112
- });
113
- return {
114
- dispose() {
115
- if (disposed) return;
116
- disposed = true;
117
- unsubscribe();
118
- }
119
- };
120
- }
1
+ import {
2
+ PROXY_EXCLUDED_PROVIDERS,
3
+ PROXY_ROUTING_SETTLE_CAP_MS,
4
+ __resetProxyConfigForTests,
5
+ applyProxyConfig,
6
+ createProxyInstantApply,
7
+ deactivateProxyOnConnectionFailure,
8
+ getProxyConfig,
9
+ isProxyEligible,
10
+ logProxyTransition,
11
+ rewriteBaseUrl,
12
+ sanitizeUrlForLog,
13
+ setProxyTransitionLogger,
14
+ shouldRewriteFor,
15
+ subscribeToProxyConfig,
16
+ waitForProxyRoutingSettle
17
+ } from "../chunk-4SJNS7OB.js";
121
18
  export {
122
19
  PROXY_EXCLUDED_PROVIDERS,
20
+ PROXY_ROUTING_SETTLE_CAP_MS,
123
21
  __resetProxyConfigForTests,
124
22
  applyProxyConfig,
125
23
  createProxyInstantApply,
24
+ deactivateProxyOnConnectionFailure,
126
25
  getProxyConfig,
127
26
  isProxyEligible,
27
+ logProxyTransition,
128
28
  rewriteBaseUrl,
29
+ sanitizeUrlForLog,
30
+ setProxyTransitionLogger,
129
31
  shouldRewriteFor,
130
- subscribeToProxyConfig
32
+ subscribeToProxyConfig,
33
+ waitForProxyRoutingSettle
131
34
  };
132
35
  //# sourceMappingURL=proxy-rewrite.js.map