@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.
- package/dist/chronicle/index.js +84 -6391
- package/dist/chronicle/legacy-journal-import.d.ts +0 -6
- package/dist/chronicle/metrics-ingest.d.ts +14 -0
- package/dist/chronicle/metrics-schema.d.ts +10 -1
- package/dist/chronicle/metrics-store.d.ts +20 -2
- package/dist/chronicle/project-server.js +98 -4874
- package/dist/chronicle/sink.d.ts +13 -0
- package/dist/chronicle/sqlite-journal.d.ts +20 -2
- package/dist/chunk-25LSLC3G.js +334 -0
- package/dist/chunk-27QIURLN.js +1073 -0
- package/dist/chunk-2FK4WTFF.js +207 -0
- package/dist/chunk-2YU4WVBW.js +134 -0
- package/dist/chunk-3AGWVSS7.js +4608 -0
- package/dist/chunk-3BDV7RL3.js +211 -0
- package/dist/chunk-3ECENVHL.js +325 -0
- package/dist/chunk-3XPVB7BA.js +135 -0
- package/dist/chunk-45WI72ZB.js +16884 -0
- package/dist/chunk-4BMVPOHO.js +3748 -0
- package/dist/chunk-4I7HGVVA.js +363 -0
- package/dist/chunk-4LCZVJVF.js +317 -0
- package/dist/chunk-4SJNS7OB.js +217 -0
- package/dist/chunk-4VWO3ZXL.js +342 -0
- package/dist/chunk-57GEWK5X.js +26 -0
- package/dist/chunk-5BMIE7QG.js +46 -0
- package/dist/chunk-5S437PRC.js +50 -0
- package/dist/chunk-5XDUGTKN.js +511 -0
- package/dist/chunk-5YPSXQXM.js +1443 -0
- package/dist/chunk-6FHWXLPT.js +10 -0
- package/dist/chunk-6H5GEOET.js +2406 -0
- package/dist/chunk-6NWEVFEL.js +151 -0
- package/dist/chunk-AYW5YINX.js +58 -0
- package/dist/chunk-B4AMLZPB.js +9 -0
- package/dist/chunk-B7F4WVP4.js +65 -0
- package/dist/chunk-BJHVULHO.js +55 -0
- package/dist/chunk-BPBKKBUK.js +2085 -0
- package/dist/chunk-BYD345OX.js +589 -0
- package/dist/chunk-C27KDLOX.js +279 -0
- package/dist/chunk-CU546ESW.js +597 -0
- package/dist/chunk-DLHHXUAM.js +172 -0
- package/dist/chunk-DOTHQSJ2.js +429 -0
- package/dist/chunk-DYLPMV4Q.js +711 -0
- package/dist/chunk-EODDVJBM.js +82 -0
- package/dist/chunk-F3JWNST7.js +361 -0
- package/dist/chunk-FC2ZGRF3.js +140 -0
- package/dist/chunk-FCBTO76Z.js +5786 -0
- package/dist/chunk-FHZVFYSL.js +396 -0
- package/dist/chunk-FNXVT7HF.js +52 -0
- package/dist/chunk-FWNLEZYG.js +259 -0
- package/dist/chunk-FXQLIX3K.js +211 -0
- package/dist/chunk-G5S3S5ZN.js +38 -0
- package/dist/chunk-GDQ7CZRQ.js +116 -0
- package/dist/chunk-GJJGJB2R.js +1374 -0
- package/dist/chunk-GTCU6DZ3.js +1 -0
- package/dist/chunk-HA4ZYA6T.js +178 -0
- package/dist/chunk-HI3JGZR2.js +188 -0
- package/dist/chunk-HMLIGAU7.js +395 -0
- package/dist/chunk-HXKZ7OBQ.js +303 -0
- package/dist/chunk-I7DALG7J.js +292 -0
- package/dist/chunk-IRUTEHCE.js +960 -0
- package/dist/chunk-IYFBFX34.js +86 -0
- package/dist/chunk-J2WRWR37.js +1104 -0
- package/dist/chunk-JFPJ6LLQ.js +129 -0
- package/dist/chunk-JMULFFLN.js +9 -0
- package/dist/chunk-JO4MGB6Z.js +1264 -0
- package/dist/chunk-JVKB2TBL.js +48 -0
- package/dist/chunk-JX7VBZDK.js +31 -0
- package/dist/chunk-K6BXGITA.js +931 -0
- package/dist/chunk-KDQJCT2J.js +45 -0
- package/dist/chunk-KJ2ZTQSL.js +47 -0
- package/dist/chunk-KZMSZV32.js +187 -0
- package/dist/chunk-LA7CLDRW.js +129 -0
- package/dist/chunk-LHOA5DWA.js +28 -0
- package/dist/chunk-LSMMOS2Z.js +119 -0
- package/dist/chunk-LX5QWLBL.js +27 -0
- package/dist/chunk-LXWCMQNJ.js +789 -0
- package/dist/chunk-M27LIEKV.js +2829 -0
- package/dist/chunk-MJPHJRAL.js +663 -0
- package/dist/chunk-MTL4O5YR.js +228 -0
- package/dist/chunk-NDBIPFNY.js +102 -0
- package/dist/chunk-NEMIWEXC.js +1199 -0
- package/dist/chunk-NHJ75HXY.js +1 -0
- package/dist/chunk-NIOAGFPB.js +1510 -0
- package/dist/chunk-NS52ISWS.js +355 -0
- package/dist/chunk-NSOFPKGT.js +5352 -0
- package/dist/chunk-NVIZG63R.js +757 -0
- package/dist/chunk-O37BQ65S.js +21 -0
- package/dist/chunk-OOYZPOXM.js +308 -0
- package/dist/chunk-OSGLYW5J.js +28 -0
- package/dist/chunk-PFCMSSUF.js +1640 -0
- package/dist/chunk-PFZO3C6H.js +14 -0
- package/dist/chunk-PGRVXIMY.js +158 -0
- package/dist/chunk-PHH7LD45.js +113 -0
- package/dist/chunk-PISBFBJN.js +109 -0
- package/dist/chunk-POOOIWE5.js +9 -0
- package/dist/chunk-PQNS3U7Z.js +1240 -0
- package/dist/chunk-QSTSJOCK.js +402 -0
- package/dist/chunk-RFQMOKWK.js +282 -0
- package/dist/chunk-RJIZEJ42.js +30 -0
- package/dist/chunk-RTOTNK3P.js +484 -0
- package/dist/chunk-RXKSDUAU.js +1172 -0
- package/dist/chunk-S45JPKQN.js +3317 -0
- package/dist/chunk-SAFHACFA.js +152 -0
- package/dist/chunk-SQJVFEBV.js +41 -0
- package/dist/chunk-SVT4RNTR.js +49 -0
- package/dist/chunk-SWUFN7XM.js +43 -0
- package/dist/chunk-SXMVYC5H.js +174 -0
- package/dist/chunk-SZ6AYUIZ.js +23 -0
- package/dist/chunk-TBRL2RCC.js +9 -0
- package/dist/chunk-TCCHINEF.js +655 -0
- package/dist/chunk-THEGTRAG.js +316 -0
- package/dist/chunk-TR4LQE7L.js +2256 -0
- package/dist/chunk-TRT2HRWZ.js +18 -0
- package/dist/chunk-TWJMGXCI.js +900 -0
- package/dist/chunk-U45AXT5D.js +1023 -0
- package/dist/chunk-U4FWBSO3.js +509 -0
- package/dist/chunk-UBGDX6FI.js +147 -0
- package/dist/chunk-UJILKYES.js +75 -0
- package/dist/chunk-ULMAQV3T.js +234 -0
- package/dist/chunk-VVBP6KGT.js +9 -0
- package/dist/chunk-W5VITDM2.js +168 -0
- package/dist/chunk-WAHQVNWT.js +194 -0
- package/dist/chunk-WBPVKEEE.js +227 -0
- package/dist/chunk-WGGYRBXH.js +5434 -0
- package/dist/chunk-WLYKU45P.js +5770 -0
- package/dist/chunk-WP7BVANJ.js +53 -0
- package/dist/chunk-WQQON3SV.js +473 -0
- package/dist/chunk-WQTOVMGV.js +119 -0
- package/dist/chunk-XBDP4QPW.js +7 -0
- package/dist/chunk-XEBHSJLT.js +103 -0
- package/dist/chunk-XF4VUMKW.js +231 -0
- package/dist/chunk-XQ2ECNK3.js +1 -0
- package/dist/chunk-Y5YXDM7D.js +74 -0
- package/dist/chunk-YOPAUVU4.js +2588 -0
- package/dist/chunk-YPT4A46F.js +362 -0
- package/dist/chunk-YWXT3JNM.js +425 -0
- package/dist/chunk-YY6APYUM.js +49 -0
- package/dist/chunk-Z2IJUO45.js +691 -0
- package/dist/chunk-ZHZ2Y2DH.js +1643 -0
- package/dist/chunk-ZT7JNIGX.js +152 -0
- package/dist/coordination/agent-monitor.d.ts +9 -1
- package/dist/coordination/agent-subagent-runner.d.ts +1 -1
- package/dist/coordination/agents/agent-prompts.d.ts +8 -0
- package/dist/coordination/agents/index.d.ts +33 -1
- package/dist/coordination/agents/index.js +184 -6269
- package/dist/coordination/agents/phase3-wave1-platform.d.ts +1 -3
- package/dist/coordination/agents/phase3-wave2-meta.d.ts +1 -3
- package/dist/coordination/agents/phase8-wave3-products.d.ts +1 -3
- package/dist/coordination/agents/phase9-wave4-platform-meta.d.ts +1 -3
- package/dist/coordination/agents/project-agent-identity.d.ts +11 -11
- package/dist/coordination/agents/types.d.ts +13 -2
- package/dist/coordination/brain-monitor.d.ts +30 -7
- package/dist/coordination/collab-debug.d.ts +1 -1
- package/dist/coordination/collab-pause.d.ts +1 -1
- package/dist/coordination/delegate-tool.d.ts +7 -5
- package/dist/coordination/director-kanban-queue-helpers.d.ts +1 -0
- package/dist/coordination/director-options.d.ts +7 -0
- package/dist/coordination/director-spawn-model.d.ts +17 -0
- package/dist/coordination/director-tools.d.ts +2 -2
- package/dist/coordination/director.d.ts +12 -0
- package/dist/coordination/dispatcher.d.ts +8 -0
- package/dist/coordination/fleet-bus.d.ts +35 -4
- package/dist/coordination/fleet-supervisor.d.ts +10 -2
- package/dist/coordination/fleet.d.ts +16 -7
- package/dist/coordination/index.d.ts +4 -0
- package/dist/coordination/index.js +402 -34324
- package/dist/coordination/kanban-dispatch-port.d.ts +2 -2
- package/dist/coordination/mailbox-http-router.d.ts +4 -3
- package/dist/coordination/mailbox-http-validation.d.ts +1 -1
- package/dist/coordination/mailbox-project-server.js +48 -3276
- package/dist/coordination/mailbox-types.d.ts +24 -6
- package/dist/coordination/model-tier-leader.d.ts +122 -0
- package/dist/coordination/model-tier.d.ts +122 -0
- package/dist/coordination/multi-agent-coordinator.d.ts +24 -0
- package/dist/coordination/origin-session.d.ts +16 -0
- package/dist/coordination/provider-status-tracker.d.ts +41 -5
- package/dist/coordination/session-note-hub.d.ts +44 -0
- package/dist/coordination/session-note-tool.d.ts +10 -0
- package/dist/core/agent.d.ts +15 -2
- package/dist/core/context.d.ts +22 -3
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +239 -12360
- package/dist/core/model-ref.js +5 -23
- package/dist/core/provider-runner.d.ts +36 -1
- package/dist/core/request-conversation-binding.d.ts +37 -0
- package/dist/core/session-notes.d.ts +25 -0
- package/dist/core/system-prompt-builder.d.ts +11 -2
- package/dist/core/system-prompt-variants.d.ts +78 -0
- package/dist/design/index.js +50 -1087
- package/dist/execution/auto-compaction-middleware.d.ts +11 -0
- package/dist/execution/autonomy-brain.d.ts +2 -1
- package/dist/execution/autonomy-prompt-contributor.d.ts +7 -2
- package/dist/execution/compaction-core.d.ts +4 -4
- package/dist/execution/eternal-autonomy.d.ts +1 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.js +1615 -21895
- package/dist/execution/model-runtime.d.ts +0 -7
- package/dist/execution/parallel-eternal-engine.d.ts +7 -7
- package/dist/execution/prompt-enhancer.js +16 -535
- package/dist/execution/retry-policy.d.ts +31 -1
- package/dist/extension/index.js +7 -311
- package/dist/goal/index.js +33 -3435
- package/dist/hooks/index.js +14 -1138
- package/dist/hq/index.js +114 -5139
- package/dist/hq/persistence/event-log.d.ts +0 -1
- package/dist/hq/persistence.d.ts +4 -4
- package/dist/hq/protocol.js +21 -668
- package/dist/hq/publisher.d.ts +2 -0
- package/dist/index.d.ts +14 -11
- package/dist/index.js +1502 -92655
- package/dist/infrastructure/index.d.ts +4 -4
- package/dist/infrastructure/index.js +504 -5230
- package/dist/infrastructure/token-counter.d.ts +9 -0
- package/dist/kernel/events/agent-events.d.ts +77 -3
- package/dist/kernel/events/brain-events.d.ts +12 -0
- package/dist/kernel/events/provider-events.d.ts +22 -1
- package/dist/kernel/events/session-events.d.ts +14 -0
- package/dist/kernel/events/tool-events.d.ts +13 -0
- package/dist/kernel/index.js +14 -992
- package/dist/mailbox-attach.d.ts +1 -1
- package/dist/models/index.js +41 -1117
- package/dist/notifications/index.js +3 -108
- package/dist/observability/event-bridge.d.ts +25 -5
- package/dist/observability/index.d.ts +9 -8
- package/dist/observability/index.js +477 -631
- package/dist/observability/tool-usage-source.d.ts +65 -0
- package/dist/plugin/index.d.ts +5 -0
- package/dist/plugin/index.js +600 -14835
- package/dist/plugins/auto-review-plugin.d.ts +3 -2
- package/dist/plugins/review-finding-commands.d.ts +0 -8
- package/dist/plugins/review-finding-store.js +22 -0
- package/dist/plugins/review-finding-types.js +19 -0
- package/dist/plugins/review-report-integration.js +21 -0
- package/dist/plugins/review-report-store.js +20 -0
- package/dist/plugins/review-report-types.js +13 -0
- package/dist/prompts/index.js +14 -948
- package/dist/registry/index.js +9 -822
- package/dist/registry/tool-registry.d.ts +59 -9
- package/dist/registry-7N4O3E7W.js +14 -0
- package/dist/replay/index.js +6 -84
- package/dist/security/capabilities.d.ts +6 -0
- package/dist/security/file-permissions.d.ts +1 -1
- package/dist/security/index.js +161 -2235
- package/dist/security/permission-policy.d.ts +12 -1
- package/dist/security/secret-scrubber.d.ts +15 -0
- package/dist/session-catalog/index.d.ts +1 -0
- package/dist/session-catalog/index.js +41 -2103
- package/dist/session-catalog/project-server.js +59 -1435
- package/dist/session-catalog/protocol.d.ts +32 -1
- package/dist/session-catalog/registry.d.ts +17 -1
- package/dist/session-catalog/session-agents.d.ts +56 -0
- package/dist/session-catalog/store-rebuild.d.ts +14 -0
- package/dist/session-catalog/store-schema.d.ts +26 -0
- package/dist/session-catalog/store.d.ts +27 -1
- package/dist/session-note-attach.d.ts +9 -0
- package/dist/skills/index.js +35 -1578
- package/dist/statusline/index.d.ts +43 -0
- package/dist/statusline/index.js +102 -0
- package/dist/storage/board-store-port.d.ts +2 -2
- package/dist/storage/config-loader/in-project-policy.d.ts +29 -0
- package/dist/storage/config-loader.d.ts +3 -2
- package/dist/storage/file-session-writer.d.ts +4 -2
- package/dist/storage/goal-coordination.d.ts +6 -1
- package/dist/storage/goal-kanban.d.ts +4 -1
- package/dist/storage/index.d.ts +12 -4
- package/dist/storage/index.js +198 -15601
- package/dist/storage/input-history-store.d.ts +2 -4
- package/dist/storage/memory-curator.d.ts +133 -0
- package/dist/storage/session-agent-attribution.d.ts +39 -0
- package/dist/storage/session-doctor.d.ts +109 -0
- package/dist/storage/session-event-bridge.d.ts +5 -7
- package/dist/storage/session-outcome.d.ts +42 -0
- package/dist/storage/session-recovery.d.ts +55 -0
- package/dist/storage/session-store/load-session-data.d.ts +11 -0
- package/dist/storage/session-store/prune-helpers.d.ts +1 -1
- package/dist/storage/session-store/resume-session.d.ts +0 -2
- package/dist/storage/session-store/types.d.ts +8 -0
- package/dist/storage/session-store.d.ts +3 -3
- package/dist/storage/session-summary-tracker.d.ts +8 -1
- package/dist/storage/session-write-buffer.d.ts +18 -0
- package/dist/storage/session-writer-truncate.d.ts +2 -0
- package/dist/tasking/index.js +10 -676
- package/dist/tools/fallback-manage-tools.d.ts +6 -4
- package/dist/tools/index.js +52 -9590
- package/dist/tools/model-tier-set-tool.d.ts +66 -0
- package/dist/types/agent-bridge.d.ts +2 -1
- package/dist/types/config/autonomy.d.ts +5 -0
- package/dist/types/config/mcp-features.d.ts +7 -0
- package/dist/types/config/model-tiers.d.ts +148 -0
- package/dist/types/config/root.d.ts +9 -0
- package/dist/types/config/tools.d.ts +73 -0
- package/dist/types/config/ui.d.ts +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/context.d.ts +2 -0
- package/dist/types/default-config.d.ts +6 -0
- package/dist/types/errors.d.ts +20 -1
- package/dist/types/index.d.ts +11 -9
- package/dist/types/index.js +131 -1342
- package/dist/types/multi-agent.d.ts +43 -0
- package/dist/types/plugin.d.ts +1 -1
- package/dist/types/provider-runner.d.ts +8 -0
- package/dist/types/provider.d.ts +15 -0
- package/dist/types/runtime-capability-manifest.d.ts +1 -1
- package/dist/types/secret-scrubber.d.ts +15 -0
- package/dist/types/session-markers.d.ts +37 -10
- package/dist/types/session-markers.js +8 -144
- package/dist/types/session-timeline.d.ts +197 -0
- package/dist/types/session-timeline.js +12 -0
- package/dist/types/session.d.ts +172 -11
- package/dist/types/system-prompt.d.ts +27 -0
- package/dist/utils/config-backup.d.ts +9 -1
- package/dist/utils/error.js +3 -4
- package/dist/utils/expect-defined.js +3 -9
- package/dist/utils/heap-watchdog.js +6 -706
- package/dist/utils/index.js +271 -5685
- package/dist/utils/message-invariants.d.ts +4 -1
- package/dist/utils/regex-guard.d.ts +1 -1
- package/dist/utils/sage-output-block.js +5 -42
- package/dist/utils/socket-path.d.ts +1 -1
- package/dist/utils/token-estimate.d.ts +6 -2
- package/dist/utils/wstack-paths.d.ts +2 -0
- package/dist/wiring/proxy-rewrite.d.ts +46 -0
- package/dist/wiring/proxy-rewrite.js +24 -121
- package/dist/worktree/index.js +6 -887
- package/instructions/agents/explore-companion.md +45 -18
- package/instructions/agents/memory-curator.md +34 -22
- package/instructions/coordination/director-preamble.md +12 -7
- package/instructions/coordination/subagent-baseline.md +26 -5
- package/instructions/leader-after-task.md +4 -1
- package/instructions/llm/chimera-review.md +30 -9
- package/instructions/llm/memory-curator.md +31 -0
- package/instructions/sections/tool/delegation-compact.md +2 -0
- package/instructions/sections/tool/delegation-full.md +5 -1
- package/instructions/sections/tool/mailbox-compact.md +5 -1
- package/instructions/sections/tool/mailbox-full.md +3 -0
- package/instructions/sections/tool/session-note-compact.md +3 -0
- package/instructions/sections/tool/session-note-full.md +15 -0
- package/instructions/system-lite.md +9 -4
- package/instructions/system-pro.md +66 -143
- package/instructions/system.md +73 -175
- package/package.json +32 -4
- package/dist/coordination/agents.d.ts +0 -8
- package/dist/coordination/transport.d.ts +0 -2
- 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
|