@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
@@ -0,0 +1,151 @@
1
+ // src/utils/child-env.ts
2
+ var ALLOWED_KEYS = /* @__PURE__ */ new Set([
3
+ "PATH",
4
+ "HOME",
5
+ "USER",
6
+ "USERNAME",
7
+ "LOGNAME",
8
+ "SHELL",
9
+ "LANG",
10
+ "LC_ALL",
11
+ "LC_CTYPE",
12
+ "TERM",
13
+ "TZ",
14
+ "TMPDIR",
15
+ "TEMP",
16
+ "TMP",
17
+ "PWD",
18
+ "OLDPWD",
19
+ "COMSPEC",
20
+ "SYSTEMROOT",
21
+ "SYSTEMDRIVE",
22
+ "WINDIR",
23
+ "PROGRAMFILES",
24
+ "PROGRAMFILES(X86)",
25
+ "PROGRAMDATA",
26
+ "APPDATA",
27
+ "LOCALAPPDATA",
28
+ "USERPROFILE",
29
+ "PUBLIC",
30
+ "PATHEXT"
31
+ ]);
32
+ var SECRET_NAME_PARTS = [
33
+ "TOKEN",
34
+ "SECRET",
35
+ "PASSWORD",
36
+ "PASSWD",
37
+ // WRONGSTACK_VAULT_PASSPHRASE is the vault KEK. Without this entry it matched
38
+ // no rule here and fell through to the `WRONGSTACK_` prefix allow-rule, so the
39
+ // key that protects the credential vault was forwarded to every child process
40
+ // — including the agent's own exec/bash tools and MCP stdio servers (WS-033).
41
+ "PASSPHRASE",
42
+ "AUTH",
43
+ "CRED",
44
+ "BEARER",
45
+ "COOKIE",
46
+ "PRIVATE"
47
+ ];
48
+ function looksSecret(name) {
49
+ const upper = name.toUpperCase();
50
+ for (const p of SECRET_NAME_PARTS) {
51
+ if (upper.includes(p)) return true;
52
+ }
53
+ if (/(?:^|_)KEY(?:$|_|S$)/i.test(upper)) return true;
54
+ if (/API[_-]?KEY/i.test(upper)) return true;
55
+ if (/ACCESS[_-]?KEY/i.test(upper)) return true;
56
+ if (/SESSION[_-]?ID/i.test(upper) === false && /SESSION/i.test(upper)) {
57
+ return true;
58
+ }
59
+ return false;
60
+ }
61
+ function valueHasEmbeddedCredential(value) {
62
+ return /\b[a-z][a-z0-9+.-]*:\/\/[^/\s:@]*:[^/\s@]+@/i.test(value);
63
+ }
64
+ var NODE_OPTIONS_INJECTION_FLAG = /^(?:--require|-r|--import|--loader|--experimental-loader)$/;
65
+ var NODE_OPTIONS_INJECTION_FLAG_EQ = /^(?:--require|-r|--import|--loader|--experimental-loader)=/;
66
+ function sanitizeNodeOptions(value) {
67
+ const tokens = value.split(/\s+/).filter(Boolean);
68
+ const kept = [];
69
+ for (let i = 0; i < tokens.length; i++) {
70
+ const tok = tokens[i];
71
+ if (NODE_OPTIONS_INJECTION_FLAG_EQ.test(tok)) continue;
72
+ if (NODE_OPTIONS_INJECTION_FLAG.test(tok)) {
73
+ i++;
74
+ continue;
75
+ }
76
+ kept.push(tok);
77
+ }
78
+ return kept.join(" ");
79
+ }
80
+ var gitIdentity = null;
81
+ function configureChildEnvGitIdentity(identity) {
82
+ const name = identity?.name?.trim();
83
+ const email = identity?.email?.trim();
84
+ gitIdentity = name || email ? { name: name || void 0, email: email || void 0 } : null;
85
+ }
86
+ function getChildEnvGitIdentity() {
87
+ return gitIdentity;
88
+ }
89
+ function buildChildEnv(optsOrSessionId) {
90
+ const opts = typeof optsOrSessionId === "string" ? { sessionId: optsOrSessionId } : optsOrSessionId ?? {};
91
+ const hasOwn = Object.hasOwn(process.env, "WRONGSTACK_CHILD_ENV_PASSTHROUGH");
92
+ const legacyHasOwn = Object.hasOwn(process.env, "WRONGSTACK_BASH_ENV_PASSTHROUGH");
93
+ const passthrough = hasOwn && process.env["WRONGSTACK_CHILD_ENV_PASSTHROUGH"] === "1" || legacyHasOwn && process.env["WRONGSTACK_BASH_ENV_PASSTHROUGH"] === "1";
94
+ if (passthrough && !process.env["CI"]) {
95
+ console.warn(
96
+ "[agent] WARNING: WRONGSTACK_*_ENV_PASSTHROUGH=1 is active \u2014\n all parent env vars (including API keys) forwarded to child processes.\n Do not use on shared or multi-tenant systems."
97
+ );
98
+ }
99
+ const out = {};
100
+ const nodeEnvDefaulted = process.env["WRONGSTACK_NODE_ENV_DEFAULTED"] === "1";
101
+ for (const [k, v] of Object.entries(process.env)) {
102
+ if (v === void 0) continue;
103
+ if (nodeEnvDefaulted && (k === "NODE_ENV" || k === "WRONGSTACK_NODE_ENV_DEFAULTED")) continue;
104
+ if (passthrough) {
105
+ out[k] = v;
106
+ continue;
107
+ }
108
+ const upper = k.toUpperCase();
109
+ if (valueHasEmbeddedCredential(v)) continue;
110
+ if (ALLOWED_KEYS.has(upper)) {
111
+ out[k] = v;
112
+ continue;
113
+ }
114
+ if (looksSecret(upper)) continue;
115
+ if (upper === "NODE_OPTIONS") {
116
+ const sanitized = sanitizeNodeOptions(v);
117
+ if (sanitized) out[k] = sanitized;
118
+ continue;
119
+ }
120
+ if (upper.startsWith("NODE_") || upper.startsWith("NPM_") || upper.startsWith("PNPM_") || upper.startsWith("YARN_") || upper.startsWith("GIT_") || upper.startsWith("CI") || upper.startsWith("XDG_") || // Our own non-secret knobs (WRONGSTACK_HOME, WRONGSTACK_SESSION_ID, …).
121
+ // Secrets never live in WRONGSTACK_* env vars (they're in the encrypted
122
+ // vault). Forwarding keeps child wstack processes — e.g. ones spawned
123
+ // by the test suite — inside the same redirected global root.
124
+ upper.startsWith("WRONGSTACK_") || upper === "EDITOR" || upper === "VISUAL" || upper === "PAGER") {
125
+ out[k] = v;
126
+ }
127
+ }
128
+ if (gitIdentity) {
129
+ if (gitIdentity.name) {
130
+ out["GIT_AUTHOR_NAME"] = gitIdentity.name;
131
+ out["GIT_COMMITTER_NAME"] = gitIdentity.name;
132
+ }
133
+ if (gitIdentity.email) {
134
+ out["GIT_AUTHOR_EMAIL"] = gitIdentity.email;
135
+ out["GIT_COMMITTER_EMAIL"] = gitIdentity.email;
136
+ }
137
+ }
138
+ if (opts.extra) {
139
+ Object.assign(out, opts.extra);
140
+ }
141
+ if (opts.sessionId) out["WRONGSTACK_SESSION_ID"] = opts.sessionId.replace(/\\/g, "/");
142
+ return out;
143
+ }
144
+
145
+ export {
146
+ sanitizeNodeOptions,
147
+ configureChildEnvGitIdentity,
148
+ getChildEnvGitIdentity,
149
+ buildChildEnv
150
+ };
151
+ //# sourceMappingURL=chunk-6NWEVFEL.js.map
@@ -0,0 +1,58 @@
1
+ import {
2
+ assertUnixSocketPathWithinLimit
3
+ } from "./chunk-POOOIWE5.js";
4
+
5
+ // src/session-catalog/protocol.ts
6
+ var SESSION_CATALOG_PROTOCOL_VERSION = 1;
7
+ var SESSION_CATALOG_MAX_FRAME_CHARS = 4 * 1024 * 1024;
8
+ var SESSION_CATALOG_DEFAULT_LEASE_MS = 3e4;
9
+ var SESSION_CATALOG_DEFAULT_RESERVATION_MS = 15e3;
10
+ var SESSION_CATALOG_MAX_AGENTS = 128;
11
+ function encodeSessionCatalogMessage(message) {
12
+ return `${JSON.stringify(message)}
13
+ `;
14
+ }
15
+
16
+ // src/session-catalog/endpoint.ts
17
+ import { createHash } from "node:crypto";
18
+ import * as fs from "node:fs";
19
+ import * as os from "node:os";
20
+ import * as path from "node:path";
21
+ var SESSION_CATALOG_METADATA_FILE = ".session-catalog-server.json";
22
+ function normalizedPath(value) {
23
+ const resolved = path.resolve(value);
24
+ return process.platform === "win32" ? resolved.toLowerCase() : resolved;
25
+ }
26
+ function sessionCatalogProjectServerKey(projectDir) {
27
+ return createHash("sha256").update(normalizedPath(projectDir)).digest("hex").slice(0, 24);
28
+ }
29
+ function sessionCatalogProjectServerEndpoint(projectDir) {
30
+ const key = sessionCatalogProjectServerKey(projectDir);
31
+ if (process.platform === "win32") {
32
+ return `\\\\.\\pipe\\wrongstack-session-catalog-v${SESSION_CATALOG_PROTOCOL_VERSION}-${key}`;
33
+ }
34
+ return path.join(os.tmpdir(), `wssc-v${SESSION_CATALOG_PROTOCOL_VERSION}`, `${key}.sock`);
35
+ }
36
+ function sessionCatalogProjectServerMetadataPath(projectDir) {
37
+ return path.join(projectDir, SESSION_CATALOG_METADATA_FILE);
38
+ }
39
+ function ensureSessionCatalogSocketDirectory(endpoint) {
40
+ if (process.platform === "win32") return;
41
+ assertUnixSocketPathWithinLimit(endpoint, "session-catalog");
42
+ fs.mkdirSync(path.dirname(endpoint), { recursive: true, mode: 448 });
43
+ }
44
+
45
+ export {
46
+ SESSION_CATALOG_PROTOCOL_VERSION,
47
+ SESSION_CATALOG_MAX_FRAME_CHARS,
48
+ SESSION_CATALOG_DEFAULT_LEASE_MS,
49
+ SESSION_CATALOG_DEFAULT_RESERVATION_MS,
50
+ SESSION_CATALOG_MAX_AGENTS,
51
+ encodeSessionCatalogMessage,
52
+ SESSION_CATALOG_METADATA_FILE,
53
+ sessionCatalogProjectServerKey,
54
+ sessionCatalogProjectServerEndpoint,
55
+ sessionCatalogProjectServerMetadataPath,
56
+ ensureSessionCatalogSocketDirectory
57
+ };
58
+ //# sourceMappingURL=chunk-AYW5YINX.js.map
@@ -0,0 +1,9 @@
1
+ // src/utils/string.ts
2
+ function truncate(s, max) {
3
+ return s.length <= max ? s : `${s.slice(0, max - 1)}\u2026`;
4
+ }
5
+
6
+ export {
7
+ truncate
8
+ };
9
+ //# sourceMappingURL=chunk-B4AMLZPB.js.map
@@ -0,0 +1,65 @@
1
+ // src/utils/deep-merge.ts
2
+ var FORBIDDEN_PROTO_KEYS = /* @__PURE__ */ new Set([
3
+ "__proto__",
4
+ "constructor",
5
+ "prototype",
6
+ "__defineGetter__",
7
+ "__defineSetter__",
8
+ "__lookupGetter__",
9
+ "__lookupSetter__"
10
+ ]);
11
+ function isPrimitiveArray(a) {
12
+ return a.every((v) => v === null || typeof v !== "object" && typeof v !== "function");
13
+ }
14
+ function deepMerge(base, patch, options = {}) {
15
+ const {
16
+ conflictResolution = "prefer-patch",
17
+ arrayMode = "replace",
18
+ protectProto = true,
19
+ onNonPrimitiveArrayReplace
20
+ } = options;
21
+ if (typeof base !== "object" || base === null) {
22
+ return conflictResolution === "prefer-patch" ? patch : base;
23
+ }
24
+ if (typeof patch !== "object" || patch === null) {
25
+ return conflictResolution === "prefer-patch" ? patch : base;
26
+ }
27
+ if (Array.isArray(base) && Array.isArray(patch)) {
28
+ if (arrayMode === "concat-primitives" && isPrimitiveArray(base) && isPrimitiveArray(patch)) {
29
+ return [.../* @__PURE__ */ new Set([...base, ...patch])];
30
+ }
31
+ return conflictResolution === "prefer-patch" ? patch : base;
32
+ }
33
+ if (Array.isArray(base) || Array.isArray(patch)) {
34
+ return conflictResolution === "prefer-patch" ? patch : base;
35
+ }
36
+ const baseObj = base;
37
+ const patchObj = patch;
38
+ const out = { ...baseObj };
39
+ for (const [k, v] of Object.entries(patchObj)) {
40
+ if (protectProto && FORBIDDEN_PROTO_KEYS.has(k)) continue;
41
+ const existing = out[k];
42
+ if (v !== null && typeof v === "object" && !Array.isArray(v) && existing !== null && typeof existing === "object" && !Array.isArray(existing)) {
43
+ out[k] = deepMerge(existing, v, options);
44
+ } else if (Array.isArray(v) && Array.isArray(existing)) {
45
+ if (onNonPrimitiveArrayReplace && !isPrimitiveArray(v)) {
46
+ onNonPrimitiveArrayReplace(k, existing.length, v.length);
47
+ }
48
+ out[k] = deepMerge(existing, v, options);
49
+ } else if (v !== void 0) {
50
+ if (onNonPrimitiveArrayReplace && Array.isArray(v) && !isPrimitiveArray(v)) {
51
+ const existingLen = Array.isArray(existing) ? existing.length : 0;
52
+ onNonPrimitiveArrayReplace(k, existingLen, v.length);
53
+ }
54
+ out[k] = conflictResolution === "prefer-base" && k in baseObj ? existing : v;
55
+ }
56
+ }
57
+ return out;
58
+ }
59
+
60
+ export {
61
+ FORBIDDEN_PROTO_KEYS,
62
+ isPrimitiveArray,
63
+ deepMerge
64
+ };
65
+ //# sourceMappingURL=chunk-B7F4WVP4.js.map
@@ -0,0 +1,55 @@
1
+ import {
2
+ hashRequest
3
+ } from "./chunk-SWUFN7XM.js";
4
+
5
+ // src/replay/replay-provider-runner.ts
6
+ var ReplayProviderRunner = class {
7
+ constructor(inner, opts) {
8
+ this.inner = inner;
9
+ this.opts = opts;
10
+ }
11
+ inner;
12
+ opts;
13
+ /** Resolve the target session for this call. See {@link ReplayProviderRunnerOptions.sessionId}. */
14
+ resolveSessionId() {
15
+ const { sessionId } = this.opts;
16
+ return typeof sessionId === "function" ? sessionId() : sessionId;
17
+ }
18
+ async run(runOpts) {
19
+ const hash = hashRequest(runOpts.request);
20
+ const sessionId = this.resolveSessionId();
21
+ const cached = await this.opts.log.lookup(sessionId, hash);
22
+ if (this.opts.mode === "replay") {
23
+ if (!cached) {
24
+ this.opts.logger?.warn?.(
25
+ `replay: no recorded response for hash ${hash} (model ${runOpts.request.model})`
26
+ );
27
+ throw new Error(
28
+ `ReplayProviderRunner: no recorded response for hash ${hash} in session ${sessionId}. Either the request changed since recording, or this session has no replay log.`
29
+ );
30
+ }
31
+ this.opts.logger?.debug?.(
32
+ `replay: served cached response for hash ${hash} (recorded ${cached.ts})`
33
+ );
34
+ return cached.response;
35
+ }
36
+ if (this.opts.mode === "auto" && cached) {
37
+ this.opts.logger?.debug?.(
38
+ `replay: auto-hit hash ${hash}, served cached response`
39
+ );
40
+ return cached.response;
41
+ }
42
+ const response = await this.inner.run(runOpts);
43
+ await this.opts.log.record({
44
+ sessionId,
45
+ request: runOpts.request,
46
+ response
47
+ });
48
+ return response;
49
+ }
50
+ };
51
+
52
+ export {
53
+ ReplayProviderRunner
54
+ };
55
+ //# sourceMappingURL=chunk-BJHVULHO.js.map