@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 @@
1
+ //# sourceMappingURL=chunk-GTCU6DZ3.js.map
@@ -0,0 +1,178 @@
1
+ // src/observability/network-telemetry.ts
2
+ import { AsyncLocalStorage } from "node:async_hooks";
3
+ import { createHash, randomUUID } from "node:crypto";
4
+ import { channel } from "node:diagnostics_channel";
5
+ var storage = new AsyncLocalStorage();
6
+ var requests = /* @__PURE__ */ new WeakMap();
7
+ var users = 0;
8
+ var unsubscribe;
9
+ function runWithNetworkTelemetry(context, run) {
10
+ return storage.run(context, run);
11
+ }
12
+ function startNetworkTelemetryMonitor() {
13
+ users++;
14
+ if (!unsubscribe) unsubscribe = subscribe();
15
+ let stopped = false;
16
+ return () => {
17
+ if (stopped) return;
18
+ stopped = true;
19
+ users--;
20
+ if (users <= 0) {
21
+ unsubscribe?.();
22
+ unsubscribe = void 0;
23
+ users = 0;
24
+ }
25
+ };
26
+ }
27
+ function subscribe() {
28
+ const create = channel("undici:request:create");
29
+ const headers = channel("undici:request:headers");
30
+ const error = channel("undici:request:error");
31
+ const onCreate = (message) => {
32
+ const context = storage.getStore();
33
+ const request = objectField(message, "request");
34
+ if (!context || !request) return;
35
+ const target = safeTarget(request);
36
+ const startedAt = (/* @__PURE__ */ new Date()).toISOString();
37
+ const requestBytes = numberField(request, "contentLength");
38
+ const state = {
39
+ ...context,
40
+ requestId: randomUUID(),
41
+ ...target,
42
+ ...requestBytes !== void 0 ? { requestBytes } : {},
43
+ startedAt,
44
+ startedNs: process.hrtime.bigint()
45
+ };
46
+ requests.set(request, state);
47
+ context.events.emit("network.request.started", {
48
+ ...identity(state),
49
+ requestId: state.requestId,
50
+ method: state.method,
51
+ scheme: state.scheme,
52
+ serverAddress: state.serverAddress,
53
+ ...state.serverPort !== void 0 ? { serverPort: state.serverPort } : {},
54
+ pathHash: state.pathHash,
55
+ queryKeys: queryKeys(request),
56
+ ...state.requestBytes !== void 0 ? { requestBytes: state.requestBytes } : {},
57
+ startedAt
58
+ });
59
+ };
60
+ const onHeaders = (message) => {
61
+ const request = objectField(message, "request");
62
+ if (!request) return;
63
+ const state = requests.get(request);
64
+ if (!state) return;
65
+ requests.delete(request);
66
+ const response = objectField(message, "response");
67
+ const responseBytes = contentLength(response);
68
+ state.events.emit("network.request.completed", {
69
+ ...identity(state),
70
+ requestId: state.requestId,
71
+ method: state.method,
72
+ scheme: state.scheme,
73
+ serverAddress: state.serverAddress,
74
+ ...state.serverPort !== void 0 ? { serverPort: state.serverPort } : {},
75
+ pathHash: state.pathHash,
76
+ statusCode: numberField(response, "statusCode") ?? 0,
77
+ durationMs: elapsed(state.startedNs),
78
+ ...state.requestBytes !== void 0 ? { requestBytes: state.requestBytes } : {},
79
+ ...responseBytes !== void 0 ? { responseBytes } : {},
80
+ completedAt: (/* @__PURE__ */ new Date()).toISOString()
81
+ });
82
+ };
83
+ const onError = (message) => {
84
+ const request = objectField(message, "request");
85
+ if (!request) return;
86
+ const state = requests.get(request);
87
+ if (!state) return;
88
+ requests.delete(request);
89
+ const err = objectField(message, "error");
90
+ const errorCode = stringField(err, "code");
91
+ state.events.emit("network.request.failed", {
92
+ ...identity(state),
93
+ requestId: state.requestId,
94
+ method: state.method,
95
+ scheme: state.scheme,
96
+ serverAddress: state.serverAddress,
97
+ ...state.serverPort !== void 0 ? { serverPort: state.serverPort } : {},
98
+ pathHash: state.pathHash,
99
+ durationMs: elapsed(state.startedNs),
100
+ errorName: stringField(err, "name") ?? "Error",
101
+ ...errorCode ? { errorCode } : {},
102
+ failedAt: (/* @__PURE__ */ new Date()).toISOString()
103
+ });
104
+ };
105
+ create.subscribe(onCreate);
106
+ headers.subscribe(onHeaders);
107
+ error.subscribe(onError);
108
+ return () => {
109
+ create.unsubscribe(onCreate);
110
+ headers.unsubscribe(onHeaders);
111
+ error.unsubscribe(onError);
112
+ };
113
+ }
114
+ function identity(state) {
115
+ return {
116
+ sessionId: state.sessionId,
117
+ ...state.traceId ? { traceId: state.traceId } : {},
118
+ ...state.agentId ? { agentId: state.agentId } : {},
119
+ ...state.toolCallId ? { toolCallId: state.toolCallId } : {},
120
+ ...state.attemptId ? { attemptId: state.attemptId } : {},
121
+ initiator: state.initiator,
122
+ operationName: state.operationName
123
+ };
124
+ }
125
+ function safeTarget(request) {
126
+ const origin = String(request.origin ?? "");
127
+ const path = String(request.path ?? "");
128
+ let url;
129
+ try {
130
+ url = new URL(path, origin);
131
+ } catch {
132
+ url = new URL("http://invalid.local/");
133
+ }
134
+ return {
135
+ method: String(request.method ?? "GET").toUpperCase(),
136
+ scheme: url.protocol.replace(":", ""),
137
+ serverAddress: url.hostname,
138
+ ...url.port ? { serverPort: Number(url.port) } : {},
139
+ pathHash: hash(url.pathname)
140
+ };
141
+ }
142
+ function queryKeys(request) {
143
+ try {
144
+ return [...new URL(String(request.path ?? ""), String(request.origin ?? "")).searchParams.keys()].filter((v, i, a) => a.indexOf(v) === i).slice(0, 50);
145
+ } catch {
146
+ return [];
147
+ }
148
+ }
149
+ function contentLength(response) {
150
+ const raw = response?.headers;
151
+ if (!Array.isArray(raw)) return void 0;
152
+ for (let index = 0; index < raw.length - 1; index += 2) if (String(raw[index]).toLowerCase() === "content-length") {
153
+ const value = Number(String(raw[index + 1]));
154
+ return Number.isFinite(value) ? value : void 0;
155
+ }
156
+ return void 0;
157
+ }
158
+ function objectField(value, key) {
159
+ return value && typeof value === "object" && value[key] && typeof value[key] === "object" ? value[key] : void 0;
160
+ }
161
+ function stringField(value, key) {
162
+ return typeof value?.[key] === "string" ? value[key] : void 0;
163
+ }
164
+ function numberField(value, key) {
165
+ return typeof value?.[key] === "number" ? value[key] : void 0;
166
+ }
167
+ function elapsed(start) {
168
+ return Number(process.hrtime.bigint() - start) / 1e6;
169
+ }
170
+ function hash(value) {
171
+ return createHash("sha256").update(value).digest("hex");
172
+ }
173
+
174
+ export {
175
+ runWithNetworkTelemetry,
176
+ startNetworkTelemetryMonitor
177
+ };
178
+ //# sourceMappingURL=chunk-HA4ZYA6T.js.map
@@ -0,0 +1,188 @@
1
+ import {
2
+ atomicWrite
3
+ } from "./chunk-OSGLYW5J.js";
4
+
5
+ // src/utils/ulid.ts
6
+ import { randomBytes } from "node:crypto";
7
+ var ENCODING = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
8
+ var ENCODING_LEN = ENCODING.length;
9
+ var TIME_LEN = 10;
10
+ var RANDOM_LEN = 16;
11
+ function encodeTime(now, len) {
12
+ let mod;
13
+ let str = "";
14
+ for (let i = len - 1; i >= 0; i--) {
15
+ mod = now % ENCODING_LEN;
16
+ str = ENCODING[mod] + str;
17
+ now = (now - mod) / ENCODING_LEN;
18
+ }
19
+ return str;
20
+ }
21
+ function encodeRandom(len) {
22
+ const bytes = randomBytes(len);
23
+ let str = "";
24
+ for (let i = 0; i < len; i++) {
25
+ str += ENCODING[bytes[i] % ENCODING_LEN];
26
+ }
27
+ return str;
28
+ }
29
+ function ulid(seedTime = Date.now()) {
30
+ const safeTime = typeof seedTime === "number" && Number.isFinite(seedTime) && seedTime > 0 ? seedTime : Date.now();
31
+ return encodeTime(safeTime, TIME_LEN) + encodeRandom(RANDOM_LEN);
32
+ }
33
+ function isUlid(value) {
34
+ if (typeof value !== "string" || value.length !== TIME_LEN + RANDOM_LEN) return false;
35
+ for (const ch of value) {
36
+ if (!ENCODING.includes(ch)) return false;
37
+ }
38
+ return true;
39
+ }
40
+
41
+ // src/utils/project-identity.ts
42
+ import * as fs from "node:fs";
43
+ import * as fsPromises from "node:fs/promises";
44
+ import * as path from "node:path";
45
+ var PROJECT_IDENTITY_VERSION = 1;
46
+ var PROJECT_ID_PREFIX = "proj_";
47
+ var PROJECT_IDENTITY_RELATIVE_PATH = path.join(".wrongstack", "project.json");
48
+ var PROJECT_GITIGNORE_RULES = [
49
+ ".wrongstack/",
50
+ "!/.wrongstack/",
51
+ "/.wrongstack/*",
52
+ "!/.wrongstack/project.json"
53
+ ];
54
+ function projectIdentityPath(projectRoot) {
55
+ return path.join(projectRoot, PROJECT_IDENTITY_RELATIVE_PATH);
56
+ }
57
+ function createProjectId(seedTime = Date.now()) {
58
+ return `${PROJECT_ID_PREFIX}${ulid(seedTime)}`;
59
+ }
60
+ function isProjectId(value) {
61
+ return value.startsWith(PROJECT_ID_PREFIX) && isUlid(value.slice(PROJECT_ID_PREFIX.length));
62
+ }
63
+ function readProjectIdentitySync(projectRoot) {
64
+ const filePath = projectIdentityPath(projectRoot);
65
+ try {
66
+ return parseProjectIdentity(fs.readFileSync(filePath, "utf8"), filePath);
67
+ } catch (error) {
68
+ if (isMissingFileError(error)) return void 0;
69
+ throw error;
70
+ }
71
+ }
72
+ async function readProjectIdentity(projectRoot) {
73
+ const filePath = projectIdentityPath(projectRoot);
74
+ try {
75
+ return parseProjectIdentity(await fsPromises.readFile(filePath, "utf8"), filePath);
76
+ } catch (error) {
77
+ if (isMissingFileError(error)) return void 0;
78
+ throw error;
79
+ }
80
+ }
81
+ async function ensureProjectIdentity(projectRoot, idFactory = createProjectId) {
82
+ const existing = await readProjectIdentity(projectRoot);
83
+ if (existing) return { identity: existing, created: false };
84
+ const filePath = projectIdentityPath(projectRoot);
85
+ const identity = makeIdentity(idFactory());
86
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
87
+ try {
88
+ await fsPromises.writeFile(filePath, serializeProjectIdentity(identity), {
89
+ encoding: "utf8",
90
+ flag: "wx"
91
+ });
92
+ return { identity, created: true };
93
+ } catch (error) {
94
+ if (!isAlreadyExistsError(error)) throw error;
95
+ const winner = await readProjectIdentity(projectRoot);
96
+ if (!winner) throw error;
97
+ return { identity: winner, created: false };
98
+ }
99
+ }
100
+ async function rekeyProjectIdentity(projectRoot, idFactory = createProjectId) {
101
+ const previous = await readProjectIdentity(projectRoot);
102
+ const identity = makeIdentity(idFactory());
103
+ const filePath = projectIdentityPath(projectRoot);
104
+ await fsPromises.mkdir(path.dirname(filePath), { recursive: true });
105
+ await atomicWrite(filePath, serializeProjectIdentity(identity));
106
+ return { previous, identity };
107
+ }
108
+ async function ensureProjectGitignore(projectRoot) {
109
+ const filePath = path.join(projectRoot, ".gitignore");
110
+ let content = "";
111
+ try {
112
+ content = await fsPromises.readFile(filePath, "utf8");
113
+ } catch (error) {
114
+ if (!isMissingFileError(error)) throw error;
115
+ }
116
+ const hadTrailingNewline = content.endsWith("\n");
117
+ const lines = content.length === 0 ? [] : content.split(/\r?\n/);
118
+ if (hadTrailingNewline) lines.pop();
119
+ let changed = false;
120
+ for (let index = 0; index < lines.length; index++) {
121
+ if (lines[index]?.trim() === ".wrongstack/*") {
122
+ lines[index] = ".wrongstack/";
123
+ changed = true;
124
+ }
125
+ }
126
+ for (const entry of PROJECT_GITIGNORE_RULES) {
127
+ if (!lines.some((line) => line.trim() === entry)) {
128
+ if (entry === ".wrongstack/" && lines.length > 0 && lines.at(-1) !== "") lines.push("");
129
+ lines.push(entry);
130
+ changed = true;
131
+ }
132
+ }
133
+ if (!changed) return;
134
+ const eol = content.includes("\r\n") ? "\r\n" : "\n";
135
+ await atomicWrite(filePath, `${lines.join(eol)}${eol}`);
136
+ }
137
+ function makeIdentity(projectId) {
138
+ if (!isProjectId(projectId)) {
139
+ throw new Error(`Invalid WrongStack project id: ${projectId}`);
140
+ }
141
+ return { version: PROJECT_IDENTITY_VERSION, projectId };
142
+ }
143
+ function parseProjectIdentity(raw, filePath) {
144
+ let value;
145
+ try {
146
+ value = JSON.parse(raw);
147
+ } catch {
148
+ throw new Error(`Invalid JSON in WrongStack project identity file: ${filePath}`);
149
+ }
150
+ if (typeof value !== "object" || value === null) {
151
+ throw new Error(`Invalid WrongStack project identity file: ${filePath}`);
152
+ }
153
+ const record = value;
154
+ if (record["version"] !== PROJECT_IDENTITY_VERSION) {
155
+ throw new Error(`Unsupported WrongStack project identity version in ${filePath}`);
156
+ }
157
+ if (typeof record["projectId"] !== "string" || !isProjectId(record["projectId"])) {
158
+ throw new Error(`Invalid projectId in WrongStack project identity file: ${filePath}`);
159
+ }
160
+ return { version: PROJECT_IDENTITY_VERSION, projectId: record["projectId"] };
161
+ }
162
+ function serializeProjectIdentity(identity) {
163
+ return `${JSON.stringify(identity, null, 2)}
164
+ `;
165
+ }
166
+ function isMissingFileError(error) {
167
+ return error?.code === "ENOENT";
168
+ }
169
+ function isAlreadyExistsError(error) {
170
+ return error?.code === "EEXIST";
171
+ }
172
+
173
+ export {
174
+ ulid,
175
+ isUlid,
176
+ PROJECT_IDENTITY_VERSION,
177
+ PROJECT_ID_PREFIX,
178
+ PROJECT_IDENTITY_RELATIVE_PATH,
179
+ projectIdentityPath,
180
+ createProjectId,
181
+ isProjectId,
182
+ readProjectIdentitySync,
183
+ readProjectIdentity,
184
+ ensureProjectIdentity,
185
+ rekeyProjectIdentity,
186
+ ensureProjectGitignore
187
+ };
188
+ //# sourceMappingURL=chunk-HI3JGZR2.js.map