dsh-fast 0.1.3 → 0.2.0

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/CHANGELOG.md CHANGED
@@ -5,6 +5,12 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.2.0] - 2026-08-26
9
+
10
+ ### Added
11
+
12
+ - System prompt bucket breakdown (AGENTS.md / skills / persona).
13
+
8
14
  ## [0.1.3] - 2026-08-22
9
15
 
10
16
  ### Changed
package/README.es.md CHANGED
@@ -123,7 +123,9 @@ pnpm pack
123
123
 
124
124
  ## Contributors
125
125
 
126
- `dsh-fast` contributors.
126
+ Gracias a todas las personas que han contribuido a `dsh-fast`:
127
+
128
+ - **[PerryLink](https://github.com/PerryLink)** — autor y mantenedor: diseñó y construyó los diagnósticos de solo lectura (latencia de carga de sesión, recuentos de spill, métricas de compactación, volumen de inyección de contexto, tasa de aciertos de la caché LLM), el comando `/fast` y la herramienta `fast_report`, el dominio de almacenamiento `dsh_fast` y la documentación en cinco idiomas.
127
129
 
128
130
  ## PerryLink DSH Plugin Family
129
131
 
package/README.hi.md CHANGED
@@ -123,7 +123,9 @@ pnpm pack
123
123
 
124
124
  ## Contributors
125
125
 
126
- `dsh-fast` contributors.
126
+ `dsh-fast` में योगदान देने वाले सभी लोगों का धन्यवाद:
127
+
128
+ - **[PerryLink](https://github.com/PerryLink)** — लेखक और अनुरक्षक: रीड-ओनली डायग्नोस्टिक्स (सेशन-लोड विलंब, स्पिल-हिट गणना, कम्पैक्शन मीट्रिक्स, कॉन्टेक्स्ट-इंजेक्शन वॉल्यूम, LLM कैश हिट रेट), `/fast` कमांड और `fast_report` टूल, `dsh_fast` स्टोरेज डोमेन तथा पाँच-भाषा दस्तावेज़ का डिज़ाइन व निर्माण किया।
127
129
 
128
130
  ## PerryLink DSH Plugin Family
129
131
 
package/README.md CHANGED
@@ -124,7 +124,9 @@ pnpm pack
124
124
 
125
125
  ## Contributors
126
126
 
127
- `dsh-fast` contributors.
127
+ Thanks to everyone who has contributed to `dsh-fast`:
128
+
129
+ - **[PerryLink](https://github.com/PerryLink)** — author and maintainer: designed and built the read-only diagnostics (session-load timing, spill-hit counts, compaction metrics, context-injection volume, LLM cache hit rate), the `/fast` command and `fast_report` tool, the `dsh_fast` storage domain, and the five-language documentation.
128
130
 
129
131
  ## PerryLink DSH Plugin Family
130
132
 
package/README.pt.md CHANGED
@@ -123,7 +123,9 @@ pnpm pack
123
123
 
124
124
  ## Contributors
125
125
 
126
- `dsh-fast` contributors.
126
+ Obrigado a todas as pessoas que contribuíram com o `dsh-fast`:
127
+
128
+ - **[PerryLink](https://github.com/PerryLink)** — autor e mantenedor: projetou e construiu os diagnósticos somente leitura (latência de carregamento de sessão, contagens de spill, métricas de compactação, volume de injeção de contexto, taxa de acertos de cache do LLM), o comando `/fast` e a ferramenta `fast_report`, o domínio de armazenamento `dsh_fast` e a documentação em cinco idiomas.
127
129
 
128
130
  ## PerryLink DSH Plugin Family
129
131
 
package/README.zh.md CHANGED
@@ -123,7 +123,9 @@ pnpm pack
123
123
 
124
124
  ## Contributors
125
125
 
126
- `dsh-fast` contributors.
126
+ 感谢所有为 `dsh-fast` 做出贡献的人:
127
+
128
+ - **[PerryLink](https://github.com/PerryLink)** —— 作者与维护者:设计并实现了只读诊断(会话加载耗时、spill 命中统计、compaction 指标、上下文注入体量、LLM 缓存命中率)、`/fast` 命令与 `fast_report` 工具、`dsh_fast` 存储域以及五语文档。
127
129
 
128
130
  ## PerryLink DSH Plugin Family
129
131
 
package/lib/index.js CHANGED
@@ -97,9 +97,70 @@ const CHARS_PER_TOKEN = 4;
97
97
  const ROLE_OVERHEAD = 4;
98
98
  /** Per-block structural overhead for JSON framing and type tags. */
99
99
  const BLOCK_OVERHEAD = 4;
100
+ /** Which tracked bucket a section name belongs to. */
101
+ function bucketOf(name) {
102
+ if (name === "deployment:persona") return "persona";
103
+ if (name.toLowerCase().includes("skill")) return "skills";
104
+ if (/agent|instructions?/iu.test(name)) return "agentsMd";
105
+ return "other";
106
+ }
107
+ /** An empty breakdown (all buckets zeroed). */
108
+ function emptyBreakdown() {
109
+ return {
110
+ agentsMd: {
111
+ tokens: 0,
112
+ chars: 0,
113
+ share: 0
114
+ },
115
+ skills: {
116
+ tokens: 0,
117
+ chars: 0,
118
+ share: 0
119
+ },
120
+ persona: {
121
+ tokens: 0,
122
+ chars: 0,
123
+ share: 0
124
+ },
125
+ other: {
126
+ tokens: 0,
127
+ chars: 0,
128
+ share: 0
129
+ }
130
+ };
131
+ }
100
132
  /**
101
- * Price the assembled system prompt (AGENTS.md + skill directory + persona +
102
- * harness instructions).
133
+ * Classify the named system-prompt sections into the AGENTS.md / skills /
134
+ * persona / other buckets, with heuristic tokens and per-bucket shares. The
135
+ * caller supplies either the real assembled sections (via the optional
136
+ * `systemPrompt` service) or a single synthetic `{ name: 'other' }` section
137
+ * carrying the rendered prompt, so the breakdown always sums to the system
138
+ * prompt.
139
+ * @param sections - named sections (never empty in practice).
140
+ * @returns the per-bucket breakdown.
141
+ */
142
+ function classifySystemSections(sections) {
143
+ const breakdown = emptyBreakdown();
144
+ for (const section of sections) {
145
+ const chars = section.text.length;
146
+ if (chars === 0) continue;
147
+ const bucket = breakdown[bucketOf(section.name)];
148
+ bucket.chars += chars;
149
+ bucket.tokens += Math.ceil(chars / CHARS_PER_TOKEN);
150
+ }
151
+ const total = breakdown.agentsMd.tokens + breakdown.skills.tokens + breakdown.persona.tokens + breakdown.other.tokens;
152
+ if (total <= 0) return breakdown;
153
+ for (const bucket of [
154
+ breakdown.agentsMd,
155
+ breakdown.skills,
156
+ breakdown.persona,
157
+ breakdown.other
158
+ ]) bucket.share = bucket.tokens / total;
159
+ return breakdown;
160
+ }
161
+ /**
162
+ * Price the assembled system prompt (harness identity + persona + tool
163
+ * guidance + plugin sections).
103
164
  * @param header - canonical request envelope, or undefined before any request.
104
165
  * @returns heuristic system-prompt tokens; 0 when absent.
105
166
  */
@@ -234,9 +295,12 @@ var FastCollector = class {
234
295
  * the optional token meter is consulted, so it never runs in the append path.
235
296
  * @param session - the session to snapshot.
236
297
  * @param measure - optional token-meter measure function.
298
+ * @param sections - optional named system-prompt sections (from the optional
299
+ * `systemPrompt` service); absent = the whole rendered system prompt is
300
+ * attributed to the `other` bucket.
237
301
  * @returns the snapshot.
238
302
  */
239
- snapshot(session, measure) {
303
+ snapshot(session, measure, sections) {
240
304
  const state = this.live.get(session);
241
305
  if (state === void 0) return emptySnapshot();
242
306
  const measurement = measure === void 0 ? void 0 : measure(session);
@@ -244,6 +308,11 @@ var FastCollector = class {
244
308
  const toolSchemaTokens = estimateToolsTokens(state.lastHeader);
245
309
  const surfaceTokens = measurement?.surfaceTokens ?? 0;
246
310
  const totalTokens = measurement?.totalTokens ?? systemTokens + toolSchemaTokens + surfaceTokens;
311
+ const systemChars = state.lastHeader?.system?.length ?? 0;
312
+ const systemBreakdown = classifySystemSections(sections ?? (systemChars > 0 ? [{
313
+ name: "other",
314
+ text: state.lastHeader.system
315
+ }] : []));
247
316
  return {
248
317
  load: {
249
318
  kind: state.kind,
@@ -265,7 +334,8 @@ var FastCollector = class {
265
334
  systemTokens,
266
335
  toolSchemaTokens,
267
336
  surfaceTokens,
268
- ...sharesOf(totalTokens, systemTokens, toolSchemaTokens, surfaceTokens)
337
+ ...sharesOf(totalTokens, systemTokens, toolSchemaTokens, surfaceTokens),
338
+ systemBreakdown
269
339
  },
270
340
  cache: this.cacheStats(state)
271
341
  };
@@ -340,7 +410,29 @@ function emptySnapshot() {
340
410
  surfaceTokens: 0,
341
411
  systemShare: 0,
342
412
  toolsShare: 0,
343
- surfaceShare: 0
413
+ surfaceShare: 0,
414
+ systemBreakdown: {
415
+ agentsMd: {
416
+ tokens: 0,
417
+ chars: 0,
418
+ share: 0
419
+ },
420
+ skills: {
421
+ tokens: 0,
422
+ chars: 0,
423
+ share: 0
424
+ },
425
+ persona: {
426
+ tokens: 0,
427
+ chars: 0,
428
+ share: 0
429
+ },
430
+ other: {
431
+ tokens: 0,
432
+ chars: 0,
433
+ share: 0
434
+ }
435
+ }
344
436
  },
345
437
  cache: {
346
438
  inputTokens: 0,
@@ -467,6 +559,12 @@ function renderFastText(report) {
467
559
  `tool schema: ${context.toolSchemaTokens} (${formatPercent(context.toolsShare)})`,
468
560
  `surface: ${context.surfaceTokens} (${formatPercent(context.surfaceShare)})`,
469
561
  "",
562
+ "## System prompt breakdown",
563
+ `persona: ${context.systemBreakdown.persona.tokens} tokens / ${context.systemBreakdown.persona.chars} chars (${formatPercent(context.systemBreakdown.persona.share)})`,
564
+ `skills: ${context.systemBreakdown.skills.tokens} tokens / ${context.systemBreakdown.skills.chars} chars (${formatPercent(context.systemBreakdown.skills.share)})`,
565
+ `AGENTS.md: ${context.systemBreakdown.agentsMd.tokens} tokens / ${context.systemBreakdown.agentsMd.chars} chars (${formatPercent(context.systemBreakdown.agentsMd.share)})`,
566
+ `other (harness identity + tool guidance): ${context.systemBreakdown.other.tokens} tokens / ${context.systemBreakdown.other.chars} chars (${formatPercent(context.systemBreakdown.other.share)})`,
567
+ "",
470
568
  "## LLM cache",
471
569
  `input: ${cache.inputTokens}, cache read: ${cache.cacheReadTokens}, cache write: ${cache.cacheWriteTokens}, output: ${cache.outputTokens}`,
472
570
  `hit rate: ${formatPercent(cache.hitRate)}`
@@ -527,6 +625,19 @@ const compactionSchema = z$1.object({
527
625
  automatic: z$1.number().int().nonnegative(),
528
626
  shadowedTokens: z$1.number().int().nonnegative()
529
627
  });
628
+ /** Zod schema for one prompt bucket. */
629
+ const bucketSchema = z$1.object({
630
+ tokens: z$1.number().nonnegative(),
631
+ chars: z$1.number().nonnegative(),
632
+ share: z$1.number()
633
+ });
634
+ /** Zod schema for the system-prompt breakdown. */
635
+ const breakdownSchema = z$1.object({
636
+ agentsMd: bucketSchema,
637
+ skills: bucketSchema,
638
+ persona: bucketSchema,
639
+ other: bucketSchema
640
+ });
530
641
  /** Zod schema for the context section. */
531
642
  const contextSchema = z$1.object({
532
643
  totalTokens: z$1.number().nonnegative(),
@@ -535,7 +646,8 @@ const contextSchema = z$1.object({
535
646
  surfaceTokens: z$1.number().nonnegative(),
536
647
  systemShare: z$1.number(),
537
648
  toolsShare: z$1.number(),
538
- surfaceShare: z$1.number()
649
+ surfaceShare: z$1.number(),
650
+ systemBreakdown: breakdownSchema
539
651
  });
540
652
  /** Zod schema for the cache section. */
541
653
  const cacheSchema = z$1.object({
@@ -579,7 +691,7 @@ function appendSample(history, sample, maxSamples) {
579
691
  //#endregion
580
692
  //#region src/version.ts
581
693
  /** Single-source plugin version, bumped by `scripts/release.mjs`. @module dsh-fast/version */
582
- const VERSION = "0.1.3";
694
+ const VERSION = "0.2.0";
583
695
  //#endregion
584
696
  //#region src/index.ts
585
697
  const name = "fast";
@@ -620,17 +732,31 @@ async function apply(ctx, config = {}) {
620
732
  return;
621
733
  }
622
734
  };
735
+ /** Assemble the named system-prompt sections for the per-section breakdown. */
736
+ const assembleSections = async () => {
737
+ const systemPrompt = ctx.get("systemPrompt");
738
+ if (systemPrompt === void 0) return void 0;
739
+ try {
740
+ return (await systemPrompt.assemble()).sections.map((section) => ({
741
+ name: section.name,
742
+ text: section.text
743
+ }));
744
+ } catch (error) {
745
+ logger.warn(`system-prompt section assembly failed: ${error instanceof Error ? error.message : String(error)}`);
746
+ return;
747
+ }
748
+ };
623
749
  /** Build the complete report for one session. */
624
- const reportFor = (session) => {
625
- return buildReport(collector.snapshot(session, measure), {
750
+ const reportFor = async (session) => {
751
+ return buildReport(collector.snapshot(session, measure, await assembleSections()), {
626
752
  sessionId: session.id,
627
753
  ...resolved.includeCwd && session.header.cwd !== void 0 ? { cwd: session.header.cwd } : {},
628
754
  generatedAt: Date.now()
629
755
  }, resolved, VERSION);
630
756
  };
631
757
  /** Append one snapshot to the session's durable history (fire-and-forget). */
632
- const persist = (session) => {
633
- const snapshot = collector.snapshot(session, measure);
758
+ const persist = async (session) => {
759
+ const snapshot = collector.snapshot(session, measure, await assembleSections());
634
760
  const next = appendSample(sessions.get(session.id), {
635
761
  at: Date.now(),
636
762
  snapshot
@@ -642,10 +768,10 @@ async function apply(ctx, config = {}) {
642
768
  ctx.commands.register({
643
769
  name: "fast",
644
770
  description: "Print the dsh-fast performance report for the active session.",
645
- handler: (invocation) => {
771
+ async handler(invocation) {
646
772
  return {
647
773
  kind: "success",
648
- text: renderFastText(reportFor(invocation.agent.session))
774
+ text: renderFastText(await reportFor(invocation.agent.session))
649
775
  };
650
776
  }
651
777
  });
@@ -761,6 +887,89 @@ async function apply(ctx, config = {}) {
761
887
  surfaceShare: {
762
888
  type: "number",
763
889
  required: true
890
+ },
891
+ systemBreakdown: {
892
+ type: "object",
893
+ properties: {
894
+ agentsMd: {
895
+ type: "object",
896
+ properties: {
897
+ tokens: {
898
+ type: "number",
899
+ required: true
900
+ },
901
+ chars: {
902
+ type: "number",
903
+ required: true
904
+ },
905
+ share: {
906
+ type: "number",
907
+ required: true
908
+ }
909
+ },
910
+ additionalProperties: false,
911
+ required: true
912
+ },
913
+ skills: {
914
+ type: "object",
915
+ properties: {
916
+ tokens: {
917
+ type: "number",
918
+ required: true
919
+ },
920
+ chars: {
921
+ type: "number",
922
+ required: true
923
+ },
924
+ share: {
925
+ type: "number",
926
+ required: true
927
+ }
928
+ },
929
+ additionalProperties: false,
930
+ required: true
931
+ },
932
+ persona: {
933
+ type: "object",
934
+ properties: {
935
+ tokens: {
936
+ type: "number",
937
+ required: true
938
+ },
939
+ chars: {
940
+ type: "number",
941
+ required: true
942
+ },
943
+ share: {
944
+ type: "number",
945
+ required: true
946
+ }
947
+ },
948
+ additionalProperties: false,
949
+ required: true
950
+ },
951
+ other: {
952
+ type: "object",
953
+ properties: {
954
+ tokens: {
955
+ type: "number",
956
+ required: true
957
+ },
958
+ chars: {
959
+ type: "number",
960
+ required: true
961
+ },
962
+ share: {
963
+ type: "number",
964
+ required: true
965
+ }
966
+ },
967
+ additionalProperties: false,
968
+ required: true
969
+ }
970
+ },
971
+ additionalProperties: false,
972
+ required: true
764
973
  }
765
974
  },
766
975
  additionalProperties: false,
@@ -810,7 +1019,7 @@ async function apply(ctx, config = {}) {
810
1019
  async execute(_args, exec) {
811
1020
  const session = exec.agent?.session;
812
1021
  if (session === void 0) throw new Error("fast_report requires an agent-owned session");
813
- return reportFor(session);
1022
+ return await reportFor(session);
814
1023
  }
815
1024
  }));
816
1025
  ctx.on("session/created", (session) => {
@@ -841,4 +1050,4 @@ async function apply(ctx, config = {}) {
841
1050
  });
842
1051
  }
843
1052
  //#endregion
844
- export { Config, FastCollector, VERSION, appendSample, apply, buildReport, buildSuggestions, detectSpilledResult, fastDomainSpec, flattenToolResultText, historySchema, hitRateOf, inject, name, renderFastText, resolveConfig, sanitizePath, sanitizeText, sharesOf, stripControl, truncate };
1053
+ export { Config, FastCollector, VERSION, appendSample, apply, buildReport, buildSuggestions, classifySystemSections, detectSpilledResult, fastDomainSpec, flattenToolResultText, historySchema, hitRateOf, inject, name, renderFastText, resolveConfig, sanitizePath, sanitizeText, sharesOf, stripControl, truncate };
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/analyze.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjD,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CA4CzF;AAYD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAsCzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAUzH"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/analyze.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjD,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CA4CzF;AAYD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA4CzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAUzH"}
@@ -80,6 +80,12 @@ export function renderFastText(report) {
80
80
  `tool schema: ${context.toolSchemaTokens} (${formatPercent(context.toolsShare)})`,
81
81
  `surface: ${context.surfaceTokens} (${formatPercent(context.surfaceShare)})`,
82
82
  '',
83
+ '## System prompt breakdown',
84
+ `persona: ${context.systemBreakdown.persona.tokens} tokens / ${context.systemBreakdown.persona.chars} chars (${formatPercent(context.systemBreakdown.persona.share)})`,
85
+ `skills: ${context.systemBreakdown.skills.tokens} tokens / ${context.systemBreakdown.skills.chars} chars (${formatPercent(context.systemBreakdown.skills.share)})`,
86
+ `AGENTS.md: ${context.systemBreakdown.agentsMd.tokens} tokens / ${context.systemBreakdown.agentsMd.chars} chars (${formatPercent(context.systemBreakdown.agentsMd.share)})`,
87
+ `other (harness identity + tool guidance): ${context.systemBreakdown.other.tokens} tokens / ${context.systemBreakdown.other.chars} chars (${formatPercent(context.systemBreakdown.other.share)})`,
88
+ '',
83
89
  '## LLM cache',
84
90
  `input: ${cache.inputTokens}, cache read: ${cache.cacheReadTokens}, cache write: ${cache.cacheWriteTokens}, output: ${cache.outputTokens}`,
85
91
  `hit rate: ${formatPercent(cache.hitRate)}`,
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/analyze.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/analyze.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  import type { Session, SessionEvent, ToolResultMessage } from '@deepseek-ai/dsh-session';
11
11
  import type { FastSnapshot, ContextStats } from './model.js';
12
12
  import type { ResolvedConfig } from './config.js';
13
+ import { type SystemSection } from './estimate.js';
13
14
  /**
14
15
  * The structural surface of the optional `ctx.tokenMeter` service. Only the
15
16
  * fields dsh-fast reads are declared; the service is optional, so a host
@@ -69,9 +70,12 @@ export declare class FastCollector {
69
70
  * the optional token meter is consulted, so it never runs in the append path.
70
71
  * @param session - the session to snapshot.
71
72
  * @param measure - optional token-meter measure function.
73
+ * @param sections - optional named system-prompt sections (from the optional
74
+ * `systemPrompt` service); absent = the whole rendered system prompt is
75
+ * attributed to the `other` bucket.
72
76
  * @returns the snapshot.
73
77
  */
74
- snapshot(session: Session, measure?: MeasureFn): FastSnapshot;
78
+ snapshot(session: Session, measure?: MeasureFn, sections?: readonly SystemSection[]): FastSnapshot;
75
79
  /** Aggregate cache counters into the report shape. */
76
80
  private cacheStats;
77
81
  /** Fold one provider usage record. */
@@ -1 +1 @@
1
- {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGxF,OAAO,KAAK,EAAE,YAAY,EAAc,YAAY,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED,+CAA+C;AAC/C,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,gBAAgB,GAAG,SAAS,CAAA;AAK1E,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAQxE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAGvE;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,YAAY,GAAG,cAAc,CAAC,CAOnE;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzE;AAsBD;;;;GAIG;AACH,qBAAa,aAAa;IAIZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IAErD,kDAAkD;gBACrB,MAAM,EAAE,cAAc;IAEnD,oDAAoD;IACpD,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI5C,wCAAwC;IACxC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI7C;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAmCxD,qDAAqD;IACrD,YAAY,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAIzC,kEAAkE;IAClE,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAI9B,kDAAkD;IAClD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIlC,yDAAyD;IACzD,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKjC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,GAAG,YAAY;IAgC7D,sDAAsD;IACtD,OAAO,CAAC,UAAU;IAUlB,sCAAsC;IACtC,OAAO,CAAC,SAAS;IAYjB,iEAAiE;IACjE,OAAO,CAAC,KAAK;CAwBd"}
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../../src/collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAGxF,OAAO,KAAK,EAAE,YAAY,EAAc,YAAY,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAqE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAErH;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAED,+CAA+C;AAC/C,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,gBAAgB,GAAG,SAAS,CAAA;AAK1E,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAQxE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAGvE;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,YAAY,GAAG,cAAc,CAAC,CAOnE;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIzE;AAsBD;;;;GAIG;AACH,qBAAa,aAAa;IAIZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IAErD,kDAAkD;gBACrB,MAAM,EAAE,cAAc;IAEnD,oDAAoD;IACpD,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI5C,wCAAwC;IACxC,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAI7C;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI;IAmCxD,qDAAqD;IACrD,YAAY,IAAI,gBAAgB,CAAC,OAAO,CAAC;IAIzC,kEAAkE;IAClE,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAI9B,kDAAkD;IAClD,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIlC,yDAAyD;IACzD,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,YAAY;IAqClG,sDAAsD;IACtD,OAAO,CAAC,UAAU;IAUlB,sCAAsC;IACtC,OAAO,CAAC,SAAS;IAYjB,iEAAiE;IACjE,OAAO,CAAC,KAAK;CAwBd"}
@@ -7,7 +7,7 @@
7
7
  * `Map` keyed by the live Session so the timer can iterate it.
8
8
  * @module dsh-fast/collector
9
9
  */
10
- import { estimateSystemTokens, estimateToolsTokens } from "./estimate.js";
10
+ import { classifySystemSections, estimateSystemTokens, estimateToolsTokens } from "./estimate.js";
11
11
  /** The durable marker every spill notice carries (`... Full ... stored at: <locator> ...`). */
12
12
  const SPILL_NOTICE_MARKERS = ['Full', 'stored at:'];
13
13
  /** Flatten a tool result's model-facing text blocks to one string. */
@@ -134,9 +134,12 @@ export class FastCollector {
134
134
  * the optional token meter is consulted, so it never runs in the append path.
135
135
  * @param session - the session to snapshot.
136
136
  * @param measure - optional token-meter measure function.
137
+ * @param sections - optional named system-prompt sections (from the optional
138
+ * `systemPrompt` service); absent = the whole rendered system prompt is
139
+ * attributed to the `other` bucket.
137
140
  * @returns the snapshot.
138
141
  */
139
- snapshot(session, measure) {
142
+ snapshot(session, measure, sections) {
140
143
  const state = this.live.get(session);
141
144
  if (state === undefined)
142
145
  return emptySnapshot();
@@ -145,6 +148,8 @@ export class FastCollector {
145
148
  const toolSchemaTokens = estimateToolsTokens(state.lastHeader);
146
149
  const surfaceTokens = measurement?.surfaceTokens ?? 0;
147
150
  const totalTokens = measurement?.totalTokens ?? (systemTokens + toolSchemaTokens + surfaceTokens);
151
+ const systemChars = state.lastHeader?.system?.length ?? 0;
152
+ const systemBreakdown = classifySystemSections(sections ?? (systemChars > 0 ? [{ name: 'other', text: state.lastHeader.system }] : []));
148
153
  return {
149
154
  load: {
150
155
  kind: state.kind,
@@ -164,6 +169,7 @@ export class FastCollector {
164
169
  toolSchemaTokens,
165
170
  surfaceTokens,
166
171
  ...sharesOf(totalTokens, systemTokens, toolSchemaTokens, surfaceTokens),
172
+ systemBreakdown,
167
173
  },
168
174
  cache: this.cacheStats(state),
169
175
  };
@@ -229,6 +235,12 @@ function emptySnapshot() {
229
235
  systemShare: 0,
230
236
  toolsShare: 0,
231
237
  surfaceShare: 0,
238
+ systemBreakdown: {
239
+ agentsMd: { tokens: 0, chars: 0, share: 0 },
240
+ skills: { tokens: 0, chars: 0, share: 0 },
241
+ persona: { tokens: 0, chars: 0, share: 0 },
242
+ other: { tokens: 0, chars: 0, share: 0 },
243
+ },
232
244
  },
233
245
  cache: { inputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0, outputTokens: 0, hitRate: null },
234
246
  };
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/collector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../src/collector.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,26 @@
8
8
  * @module dsh-fast/estimate
9
9
  */
10
10
  import type { EpochHeader } from '@deepseek-ai/dsh-session';
11
+ import type { SystemPromptBreakdown } from './model.js';
12
+ /** One named system-prompt section (name + resolved text). */
13
+ export interface SystemSection {
14
+ name: string;
15
+ text: string;
16
+ }
11
17
  /**
12
- * Price the assembled system prompt (AGENTS.md + skill directory + persona +
13
- * harness instructions).
18
+ * Classify the named system-prompt sections into the AGENTS.md / skills /
19
+ * persona / other buckets, with heuristic tokens and per-bucket shares. The
20
+ * caller supplies either the real assembled sections (via the optional
21
+ * `systemPrompt` service) or a single synthetic `{ name: 'other' }` section
22
+ * carrying the rendered prompt, so the breakdown always sums to the system
23
+ * prompt.
24
+ * @param sections - named sections (never empty in practice).
25
+ * @returns the per-bucket breakdown.
26
+ */
27
+ export declare function classifySystemSections(sections: readonly SystemSection[]): SystemPromptBreakdown;
28
+ /**
29
+ * Price the assembled system prompt (harness identity + persona + tool
30
+ * guidance + plugin sections).
14
31
  * @param header - canonical request envelope, or undefined before any request.
15
32
  * @returns heuristic system-prompt tokens; 0 when absent.
16
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../../src/estimate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAW3D;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAG5E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAG3E"}
1
+ {"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../../src/estimate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAWvD,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,GAAG,qBAAqB,CAehG;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAG5E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAG3E"}