@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,103 @@
1
+ // src/skills/limits.ts
2
+ var SKILL_LIMITS = {
3
+ /**
4
+ * Per-skill body cap when injecting a full skill body into the system prompt
5
+ * (eager mode), and when returning a skill body from the `skill` tool.
6
+ * ~4k tokens. Oversized bodies are truncated at a paragraph boundary.
7
+ *
8
+ * Consumers: `system-prompt-builder.capSkillBody`, `skill` tool body return.
9
+ */
10
+ MAX_SKILL_BODY_CHARS: 16e3,
11
+ /**
12
+ * Per-resource cap when the `skill` tool loads a bundled file
13
+ * (`scripts/`, `references/`, `assets/`). ~8k tokens.
14
+ *
15
+ * Consumer: `skill` tool `loadResource`.
16
+ */
17
+ MAX_RESOURCE_CHARS: 32e3,
18
+ /**
19
+ * Maximum number of bundled resource paths the `skill` tool lists in one
20
+ * response. Caps a pathological skill (huge `assets/` tree) from blowing up
21
+ * the tool result.
22
+ *
23
+ * Consumer: `skill` tool resource listing.
24
+ */
25
+ MAX_LISTED_RESOURCES: 100,
26
+ /**
27
+ * Max size of a single installed skill file (SKILL.md or a bundled resource).
28
+ * Guards against a malicious registry skill shipping a multi-MB blob that
29
+ * then flows into the prompt. 100KB.
30
+ *
31
+ * Consumer: `SkillInstaller.install` / `importFromDir`.
32
+ */
33
+ MAX_SKILL_FILE_SIZE: 100 * 1024,
34
+ /**
35
+ * Max size of a GitHub tarball downloaded by the skill installer. Guards
36
+ * against a repo accidentally (or maliciously) shipping a giant tarball that
37
+ * would be extracted into a temp dir. 50MB.
38
+ *
39
+ * Consumer: `downloadGitHubTarball`.
40
+ */
41
+ MAX_TARBALL_SIZE: 50 * 1024 * 1024,
42
+ /**
43
+ * Maximum size of a GitHub skill tarball after gzip decompression. The
44
+ * compressed download limit alone does not protect against highly
45
+ * compressible archives expanding until the process runs out of memory.
46
+ *
47
+ * Consumer: `downloadGitHubTarball`.
48
+ */
49
+ MAX_UNCOMPRESSED_TARBALL_SIZE: 64 * 1024 * 1024,
50
+ /**
51
+ * Default total char budget for skill bodies injected in eager mode when
52
+ * `config.skills.eagerMaxChars` is unset. ~6k tokens. Skills are injected
53
+ * highest-priority first; once the budget is exhausted the remaining skills
54
+ * are listed as a manifest the agent loads via the `skill` tool. Set very
55
+ * high to effectively disable budgeting.
56
+ *
57
+ * Consumer: `DefaultSystemPromptBuilder.buildMemoryAndSkills` (default for
58
+ * `skillEagerMaxChars`).
59
+ */
60
+ EAGER_DEFAULT_MAX_CHARS: 24e3,
61
+ /**
62
+ * Default total char budget for compact (token-saving) skill bodies injected
63
+ * by `buildCompactSkillBodiesText`. Mirrors the eager ceiling so compact mode
64
+ * can never inject more total skill text than eager mode. Before this bound
65
+ * existed, compact mode injected EVERY skill's compact body with no cap, so
66
+ * the section grew linearly with the number of installed skills. Skills past
67
+ * the budget overflow to a name list the agent loads via the `skill` tool.
68
+ *
69
+ * Consumer: `buildCompactSkillBodiesText` (default for its `budget` param).
70
+ */
71
+ COMPACT_DEFAULT_MAX_CHARS: 24e3,
72
+ /**
73
+ * Auto-compact body limits (the token-saving fallback used when a skill has
74
+ * no hand-crafted `SKILL.save.md`). The Overview and Rules sections are
75
+ * extracted and trimmed to these char budgets, then the total is capped.
76
+ *
77
+ * Consumer: `DefaultSkillLoader.compactSkillBody`.
78
+ */
79
+ COMPACT_OVERVIEW_MAX: 200,
80
+ COMPACT_RULES_MAX: 350,
81
+ COMPACT_TOTAL_MAX: 450,
82
+ /**
83
+ * Max length of a skill name (agentskills.io spec). Enforced by the
84
+ * frontmatter validator's format regex plus this length bound.
85
+ *
86
+ * Consumer: `isValidSkillNameFormat`.
87
+ */
88
+ SKILL_NAME_MAX_LEN: 64,
89
+ /**
90
+ * Soft line limit for a SKILL.md body, per the bundled `skill-creator` rule.
91
+ * Not enforced in code (a skill can exceed it) — surfaced by `/skill-gen
92
+ * validate` and the `skill-creator` skill as guidance to move deep material
93
+ * into `references/`.
94
+ *
95
+ * Consumer: `skill-creator` skill, `/skill-gen validate` advisory.
96
+ */
97
+ SKILL_BODY_LINE_LIMIT: 500
98
+ };
99
+
100
+ export {
101
+ SKILL_LIMITS
102
+ };
103
+ //# sourceMappingURL=chunk-XEBHSJLT.js.map
@@ -0,0 +1,231 @@
1
+ import {
2
+ DefaultPromptStore,
3
+ migratePromptEntry
4
+ } from "./chunk-PGRVXIMY.js";
5
+ import {
6
+ PROMPT_CATEGORY_LABELS,
7
+ isBuiltinCategory
8
+ } from "./chunk-KDQJCT2J.js";
9
+
10
+ // src/execution/prompt-loader.ts
11
+ import * as fs from "node:fs/promises";
12
+ import * as path from "node:path";
13
+ var DefaultPromptLoader = class {
14
+ projectStore;
15
+ userStore;
16
+ builtinDir;
17
+ cache;
18
+ builtinCache;
19
+ constructor(opts) {
20
+ this.projectStore = typeof opts.paths.inProjectPrompts === "string" ? new DefaultPromptStore(opts.paths.inProjectPrompts) : void 0;
21
+ this.userStore = typeof opts.paths.globalPrompts === "string" ? new DefaultPromptStore(opts.paths.globalPrompts) : void 0;
22
+ this.builtinDir = opts.bundledDir ? path.join(opts.bundledDir, "prompts") : void 0;
23
+ }
24
+ async list() {
25
+ if (this.cache) return this.cache;
26
+ const seen = /* @__PURE__ */ new Set();
27
+ const out = [];
28
+ const layers = [
29
+ (await (this.projectStore?.list() ?? Promise.resolve([]))).map((e) => ({
30
+ ...e,
31
+ source: "project"
32
+ })),
33
+ await (this.userStore?.list() ?? Promise.resolve([])),
34
+ // keeps stored source ('user' or 'synced')
35
+ await this.readBuiltin()
36
+ ];
37
+ for (const layer of layers) {
38
+ for (const e of layer) {
39
+ if (seen.has(e.slug)) continue;
40
+ seen.add(e.slug);
41
+ out.push(e);
42
+ }
43
+ }
44
+ this.cache = out;
45
+ return out;
46
+ }
47
+ async find(slugOrId) {
48
+ const all = await this.list();
49
+ return all.find((e) => e.slug === slugOrId) ?? all.find((e) => e.id === slugOrId);
50
+ }
51
+ async search(query, opts = {}) {
52
+ let pool = await this.list();
53
+ if (opts.category) pool = pool.filter((e) => e.category === opts.category);
54
+ const q = query.trim().toLowerCase();
55
+ let results;
56
+ if (!q) {
57
+ results = pool;
58
+ } else {
59
+ const tokens = q.split(/\s+/).filter(Boolean);
60
+ results = pool.map((e) => ({ e, score: scorePrompt(e, tokens) })).filter((r) => r.score > 0).sort((a, b) => b.score - a.score).map((r) => r.e);
61
+ }
62
+ return typeof opts.limit === "number" ? results.slice(0, opts.limit) : results;
63
+ }
64
+ async categories() {
65
+ const all = await this.list();
66
+ const counts = /* @__PURE__ */ new Map();
67
+ for (const e of all) counts.set(e.category, (counts.get(e.category) ?? 0) + 1);
68
+ return [...counts.entries()].map(([id, count]) => ({
69
+ id,
70
+ label: isBuiltinCategory(id) ? PROMPT_CATEGORY_LABELS[id] : id,
71
+ count
72
+ })).sort((a, b) => b.count - a.count || a.label.localeCompare(b.label));
73
+ }
74
+ async save(entry, opts = {}) {
75
+ const store = opts.scope === "project" ? this.projectStore : this.userStore;
76
+ if (!store)
77
+ throw new Error(`Prompt ${opts.scope ?? "user"} layer is not writable (no directory).`);
78
+ const normalized = entry.source === "builtin" ? {
79
+ ...entry,
80
+ source: opts.scope === "project" ? "project" : "user",
81
+ forkedFrom: entry.forkedFrom ?? entry.slug
82
+ } : entry;
83
+ await store.save(normalized);
84
+ this.invalidateCache();
85
+ }
86
+ async delete(slugOrId) {
87
+ const entry = await this.find(slugOrId);
88
+ if (!entry) return false;
89
+ if (entry.source === "builtin") return false;
90
+ const store = entry.source === "project" ? this.projectStore : this.userStore;
91
+ if (!store) return false;
92
+ const ok = await store.delete(entry.id);
93
+ if (ok) this.invalidateCache();
94
+ return ok;
95
+ }
96
+ async setFavorite(slugOrId, favorite) {
97
+ const entry = await this.find(slugOrId);
98
+ if (!entry) return void 0;
99
+ const now = (/* @__PURE__ */ new Date()).toISOString();
100
+ if (entry.source === "builtin") {
101
+ if (!this.userStore) return void 0;
102
+ const copy = {
103
+ ...entry,
104
+ favorite,
105
+ source: "user",
106
+ forkedFrom: entry.slug,
107
+ updatedAt: now
108
+ };
109
+ await this.userStore.save(copy);
110
+ this.invalidateCache();
111
+ return copy;
112
+ }
113
+ const updated = { ...entry, favorite, updatedAt: now };
114
+ const store = entry.source === "project" ? this.projectStore : this.userStore;
115
+ if (!store) return void 0;
116
+ await store.save(updated);
117
+ this.invalidateCache();
118
+ return updated;
119
+ }
120
+ invalidateCache() {
121
+ this.cache = void 0;
122
+ this.builtinCache = void 0;
123
+ }
124
+ async readBuiltin() {
125
+ if (this.builtinCache) return this.builtinCache;
126
+ const dir = this.builtinDir;
127
+ if (!dir) {
128
+ this.builtinCache = [];
129
+ return [];
130
+ }
131
+ const out = [];
132
+ const files = await walkJson(dir);
133
+ for (const file of files) {
134
+ try {
135
+ const parsed = JSON.parse(await fs.readFile(file, "utf8"));
136
+ const migrated = migratePromptEntry(parsed);
137
+ if (migrated) out.push({ ...migrated, source: "builtin" });
138
+ } catch {
139
+ }
140
+ }
141
+ this.builtinCache = out;
142
+ return out;
143
+ }
144
+ };
145
+ async function walkJson(dir) {
146
+ const out = [];
147
+ let entries;
148
+ try {
149
+ entries = await fs.readdir(dir, { withFileTypes: true });
150
+ } catch {
151
+ return out;
152
+ }
153
+ for (const e of entries) {
154
+ const full = path.join(dir, e.name);
155
+ if (e.isDirectory()) {
156
+ out.push(...await walkJson(full));
157
+ } else if (e.name.endsWith(".json") && e.name !== "index.json" && e.name !== "schema.json") {
158
+ out.push(full);
159
+ }
160
+ }
161
+ return out;
162
+ }
163
+ function scorePrompt(e, tokens) {
164
+ const title = e.title.toLowerCase();
165
+ const slug = e.slug.toLowerCase();
166
+ const desc = e.description.toLowerCase();
167
+ const cat = e.category.toLowerCase();
168
+ const tags = e.tags.map((t) => t.toLowerCase());
169
+ const content = e.content.toLowerCase();
170
+ let score = 0;
171
+ for (const tok of tokens) {
172
+ let hit = 0;
173
+ if (title.includes(tok)) hit += 5;
174
+ if (slug.includes(tok)) hit += 4;
175
+ if (tags.some((t) => t.includes(tok))) hit += 3;
176
+ if (desc.includes(tok)) hit += 2;
177
+ if (cat.includes(tok)) hit += 2;
178
+ if (content.includes(tok)) hit += 1;
179
+ if (hit === 0 && tok.length >= 3) {
180
+ if (isSubsequence(tok, title)) hit += 2;
181
+ else if (isSubsequence(tok, slug)) hit += 2;
182
+ else if (tags.some((t) => isSubsequence(tok, t))) hit += 1;
183
+ }
184
+ if (hit === 0) return 0;
185
+ score += hit;
186
+ }
187
+ if (e.favorite) score += 1;
188
+ return score;
189
+ }
190
+ function isSubsequence(needle, hay) {
191
+ let i = 0;
192
+ for (let j = 0; j < hay.length && i < needle.length; j++) {
193
+ if (hay[j] === needle[i]) i++;
194
+ }
195
+ return i === needle.length;
196
+ }
197
+ function renderPrompt(entry, values = {}) {
198
+ const declared = new Map((entry.variables ?? []).map((v) => [v.name, v]));
199
+ const missing = [];
200
+ const invalid = [];
201
+ const text = entry.content.replace(/\{\{\s*([\w.-]+)\s*\}\}/g, (whole, rawName) => {
202
+ const name = rawName.trim();
203
+ if (Object.hasOwn(values, name) && values[name] !== void 0) {
204
+ return values[name];
205
+ }
206
+ const decl = declared.get(name);
207
+ if (decl?.default !== void 0) return decl.default;
208
+ if (decl?.required) missing.push(name);
209
+ return whole;
210
+ });
211
+ for (const v of entry.variables ?? []) {
212
+ if (v.required && !(v.name in values) && v.default === void 0 && !missing.includes(v.name)) {
213
+ if (new RegExp(`\\{\\{\\s*${escapeRegExp(v.name)}\\s*\\}\\}`).test(entry.content)) {
214
+ missing.push(v.name);
215
+ }
216
+ }
217
+ if (v.enum && v.enum.length > 0 && Object.hasOwn(values, v.name) && values[v.name] !== void 0 && values[v.name] !== "" && !v.enum.includes(values[v.name])) {
218
+ invalid.push(v.name);
219
+ }
220
+ }
221
+ return { text, missing, invalid };
222
+ }
223
+ function escapeRegExp(s) {
224
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
225
+ }
226
+
227
+ export {
228
+ DefaultPromptLoader,
229
+ renderPrompt
230
+ };
231
+ //# sourceMappingURL=chunk-XF4VUMKW.js.map
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-XQ2ECNK3.js.map
@@ -0,0 +1,74 @@
1
+ import {
2
+ DefaultSecretScrubber
3
+ } from "./chunk-QSTSJOCK.js";
4
+
5
+ // src/security/error-sanitize.ts
6
+ import { homedir } from "node:os";
7
+ var scrubber = new DefaultSecretScrubber();
8
+ var ERROR_DETAIL_MAX = 500;
9
+ function messageOf(err) {
10
+ if (err instanceof Error) return err.message;
11
+ if (typeof err === "string") return err;
12
+ try {
13
+ return String(err);
14
+ } catch {
15
+ return "unknown error";
16
+ }
17
+ }
18
+ function sanitizeApiError(err) {
19
+ const lower = messageOf(err).toLowerCase();
20
+ if (lower.includes("enoent") || lower.includes("no such file")) {
21
+ return "resource not found";
22
+ }
23
+ if (lower.includes("eacces") || lower.includes("permission")) {
24
+ return "permission denied";
25
+ }
26
+ if (lower.includes("json") && (lower.includes("parse") || lower.includes("unexpected"))) {
27
+ return "malformed data";
28
+ }
29
+ return "internal error";
30
+ }
31
+ function scrubErrorDetail(err) {
32
+ const out = scrubErrorText(messageOf(err));
33
+ return out.length > ERROR_DETAIL_MAX ? `${out.slice(0, ERROR_DETAIL_MAX - 1)}\u2026` : out;
34
+ }
35
+ function scrubErrorText(text) {
36
+ if (!text) return text;
37
+ let out = scrubber.scrub(text);
38
+ const home = safeHomedir();
39
+ if (home && home.length > 2) {
40
+ out = replaceAllCaseInsensitive(out, home, "~");
41
+ const alt = home.includes("\\") ? home.replace(/\\/g, "/") : home.replace(/\//g, "\\");
42
+ if (alt !== home) out = replaceAllCaseInsensitive(out, alt, "~");
43
+ }
44
+ return out;
45
+ }
46
+ function safeHomedir() {
47
+ try {
48
+ return homedir();
49
+ } catch {
50
+ return "";
51
+ }
52
+ }
53
+ function replaceAllCaseInsensitive(haystack, needle, replacement) {
54
+ const lowerHay = haystack.toLowerCase();
55
+ const lowerNeedle = needle.toLowerCase();
56
+ let idx = lowerHay.indexOf(lowerNeedle);
57
+ if (idx === -1) return haystack;
58
+ let out = "";
59
+ let from = 0;
60
+ while (idx !== -1) {
61
+ out += haystack.slice(from, idx) + replacement;
62
+ from = idx + needle.length;
63
+ idx = lowerHay.indexOf(lowerNeedle, from);
64
+ }
65
+ return out + haystack.slice(from);
66
+ }
67
+
68
+ export {
69
+ ERROR_DETAIL_MAX,
70
+ sanitizeApiError,
71
+ scrubErrorDetail,
72
+ scrubErrorText
73
+ };
74
+ //# sourceMappingURL=chunk-Y5YXDM7D.js.map