@phamvuhoang/otto-core 0.14.0 → 0.15.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.
Files changed (52) hide show
  1. package/dist/cli-help.d.ts +3 -0
  2. package/dist/cli-help.d.ts.map +1 -1
  3. package/dist/cli-help.js +5 -0
  4. package/dist/cli-help.js.map +1 -1
  5. package/dist/context-budget.d.ts +78 -0
  6. package/dist/context-budget.d.ts.map +1 -0
  7. package/dist/context-budget.js +114 -0
  8. package/dist/context-budget.js.map +1 -0
  9. package/dist/context-report-cli.d.ts +36 -0
  10. package/dist/context-report-cli.d.ts.map +1 -0
  11. package/dist/context-report-cli.js +81 -0
  12. package/dist/context-report-cli.js.map +1 -0
  13. package/dist/context-report.d.ts +40 -0
  14. package/dist/context-report.d.ts.map +1 -0
  15. package/dist/context-report.js +88 -0
  16. package/dist/context-report.js.map +1 -0
  17. package/dist/index.d.ts +7 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +7 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/iteration-compaction.d.ts +73 -0
  22. package/dist/iteration-compaction.d.ts.map +1 -0
  23. package/dist/iteration-compaction.js +105 -0
  24. package/dist/iteration-compaction.js.map +1 -0
  25. package/dist/loop.d.ts.map +1 -1
  26. package/dist/loop.js +1 -0
  27. package/dist/loop.js.map +1 -1
  28. package/dist/memory.d.ts +56 -0
  29. package/dist/memory.d.ts.map +1 -1
  30. package/dist/memory.js +0 -0
  31. package/dist/memory.js.map +1 -1
  32. package/dist/read-dedup.d.ts +84 -0
  33. package/dist/read-dedup.d.ts.map +1 -0
  34. package/dist/read-dedup.js +96 -0
  35. package/dist/read-dedup.js.map +1 -0
  36. package/dist/run-bin.d.ts.map +1 -1
  37. package/dist/run-bin.js +10 -0
  38. package/dist/run-bin.js.map +1 -1
  39. package/dist/run-report.d.ts +3 -0
  40. package/dist/run-report.d.ts.map +1 -1
  41. package/dist/run-report.js.map +1 -1
  42. package/dist/runner.d.ts +4 -0
  43. package/dist/runner.d.ts.map +1 -1
  44. package/dist/runner.js.map +1 -1
  45. package/dist/stage-exec.d.ts.map +1 -1
  46. package/dist/stage-exec.js +10 -3
  47. package/dist/stage-exec.js.map +1 -1
  48. package/dist/tokens.d.ts +21 -0
  49. package/dist/tokens.d.ts.map +1 -1
  50. package/dist/tokens.js +20 -0
  51. package/dist/tokens.js.map +1 -1
  52. package/package.json +1 -1
@@ -4,6 +4,9 @@ export type CliFlags = {
4
4
  help: boolean;
5
5
  version: boolean;
6
6
  printConfig: boolean;
7
+ /** `--context-report` toggle (default false; issue #62 P7). Prints the latest
8
+ * run's per-stage context composition + token slope, then exits. */
9
+ contextReport: boolean;
7
10
  noKeepAlive: boolean;
8
11
  maxRetries?: number;
9
12
  detach: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-help.d.ts","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
package/dist/cli-help.js CHANGED
@@ -52,6 +52,7 @@ export function parseFlags(argv, opts = {}) {
52
52
  let help = false;
53
53
  let version = false;
54
54
  let printConfig = false;
55
+ let contextReport = false;
55
56
  let noKeepAlive = false;
56
57
  let maxRetries;
57
58
  let expectingMaxRetries = false;
@@ -199,6 +200,8 @@ export function parseFlags(argv, opts = {}) {
199
200
  version = true;
200
201
  else if (a === "--print-config")
201
202
  printConfig = true;
203
+ else if (a === "--context-report")
204
+ contextReport = true;
202
205
  else if (a === "--no-keep-alive")
203
206
  noKeepAlive = true;
204
207
  else if (a === "--max-retries")
@@ -311,6 +314,7 @@ export function parseFlags(argv, opts = {}) {
311
314
  help,
312
315
  version,
313
316
  printConfig,
317
+ contextReport,
314
318
  noKeepAlive,
315
319
  maxRetries,
316
320
  detach,
@@ -378,6 +382,7 @@ Flags:
378
382
  -h, --help show this help and exit
379
383
  -V, --version print bin + core version and exit
380
384
  --print-config print resolved config + a preflight check of run prerequisites, then exit
385
+ --context-report print the latest run's per-stage context composition + token slope (from .otto/runs/), then exit
381
386
  --no-keep-alive skip OS wake-lock acquisition (default: acquire system-sleep inhibitor for loop lifetime)
382
387
  --max-retries <N> per-stage retry budget on transient failure (default: 3; 0 disables retries)
383
388
  --detach fork the loop into a background process, print pid + log path, and exit (parent returns 0)
@@ -1 +1 @@
1
- {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Per-stage context budget (issue #62 P7, slice 8 — the final P7 substrate).
3
+ *
4
+ * A soft, model-aware ceiling on the *inline rendered prompt*: it compares a
5
+ * stage's estimated context footprint (slice 1's {@link ContextBreakdown}) to a
6
+ * fraction of the active model's context window, and — when the prompt exceeds
7
+ * the ceiling — recommends which compaction lever to pull. The recommendation
8
+ * points at the largest *reducible* filler: the commits block (slice 6's
9
+ * `compactCommits`) or the learnings block (slice 5's `boundLearnings`); the
10
+ * task source (`inputs`) and the workflow `playbook` are not P7-reducible.
11
+ *
12
+ * Soft, not a gate: exceeding the budget warns and recommends; it never blocks a
13
+ * run. Pure + INERT on the loop — nothing here runs a stage, renders a prompt,
14
+ * or compacts anything. Wiring this assessment into the loop (warn + trigger the
15
+ * slice-5/6 levers when over budget) is a later slice; this is the measurement
16
+ * substrate, mirroring how slices 1 and 4–7 shipped pure-then-wired.
17
+ */
18
+ import type { ContextBreakdown, ContextCategory } from "./context-report.js";
19
+ /** Conservative window for an unrecognized or unset model spec. */
20
+ export declare const DEFAULT_CONTEXT_WINDOW_TOKENS = 200000;
21
+ /**
22
+ * Fraction of the model window the inline rendered prompt should stay under,
23
+ * leaving headroom for the agent's own tool reads and generated output. The
24
+ * ceiling is soft: crossing it warns and recommends compaction, never blocks.
25
+ */
26
+ export declare const DEFAULT_CONTEXT_BUDGET_FRACTION = 0.25;
27
+ /** The model's total context window in tokens (loose match; default on miss). */
28
+ export declare function modelContextWindow(model: string | undefined): number;
29
+ /** The soft inline-prompt budget: a fraction of the model's context window. */
30
+ export declare function modelContextBudget(model: string | undefined, fraction?: number): number;
31
+ /** What to compact when a stage is over budget — the largest reducible filler. */
32
+ export type BudgetRecommendation = {
33
+ category: ContextCategory;
34
+ /** Chars that category currently occupies in the rendered prompt. */
35
+ chars: number;
36
+ /** The P7 lever that shrinks it. */
37
+ lever: string;
38
+ };
39
+ export type ContextBudgetAssessment = {
40
+ /** Estimated tokens of the rendered prompt (from the breakdown). */
41
+ estimatedTokens: number;
42
+ /** The soft ceiling applied (explicit `maxTokens` or model-derived). */
43
+ budgetTokens: number;
44
+ /** The model's full context window the budget is a fraction of. */
45
+ windowTokens: number;
46
+ overBudget: boolean;
47
+ /** Tokens over the budget; 0 when within budget. */
48
+ overByTokens: number;
49
+ /** Tokens of headroom left; 0 when over budget. */
50
+ headroomTokens: number;
51
+ /** estimatedTokens / budgetTokens; 0 when the budget is 0. */
52
+ ratio: number;
53
+ /** Present only when over budget AND a reducible category exists to compact. */
54
+ recommendation?: BudgetRecommendation;
55
+ };
56
+ /** Inputs that drive a context-budget assessment (issue #62 P7 slice 8). */
57
+ export type ContextBudgetContext = {
58
+ /** Active model spec; selects the window. Ignored when `maxTokens` is set. */
59
+ model?: string;
60
+ /** Explicit token ceiling; overrides the model-derived budget. */
61
+ maxTokens?: number;
62
+ /** Fraction of the window for the model-derived budget; default 0.25. */
63
+ fraction?: number;
64
+ };
65
+ /**
66
+ * Assess a stage's rendered-prompt footprint against the soft, model-aware
67
+ * budget, and — when over — recommend compacting the largest reducible filler
68
+ * (commits/learnings). Pure: takes the breakdown, returns the verdict; triggers
69
+ * nothing. The "warn + trigger compaction" wiring is a later slice.
70
+ */
71
+ export declare function assessContextBudget(breakdown: ContextBreakdown, ctx?: ContextBudgetContext): ContextBudgetAssessment;
72
+ /**
73
+ * Render a budget assessment as a short, human-readable line. The `~` prefix
74
+ * marks the estimated-token figures (the budget itself is exact). When over
75
+ * budget with a reducible filler, the line names the category and lever to pull.
76
+ */
77
+ export declare function formatContextBudget(a: ContextBudgetAssessment): string;
78
+ //# sourceMappingURL=context-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-budget.d.ts","sourceRoot":"","sources":["../src/context-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAiB7E,mEAAmE;AACnE,eAAO,MAAM,6BAA6B,SAAU,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,OAAO,CAAC;AAEpD,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAQpE;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,QAAQ,GAAE,MAAwC,GACjD,MAAM,CAER;AAQD,kFAAkF;AAClF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,gBAAgB,EAC3B,GAAG,GAAE,oBAAyB,GAC7B,uBAAuB,CA+BzB;AAKD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,uBAAuB,GAAG,MAAM,CAWtE"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Per-stage context budget (issue #62 P7, slice 8 — the final P7 substrate).
3
+ *
4
+ * A soft, model-aware ceiling on the *inline rendered prompt*: it compares a
5
+ * stage's estimated context footprint (slice 1's {@link ContextBreakdown}) to a
6
+ * fraction of the active model's context window, and — when the prompt exceeds
7
+ * the ceiling — recommends which compaction lever to pull. The recommendation
8
+ * points at the largest *reducible* filler: the commits block (slice 6's
9
+ * `compactCommits`) or the learnings block (slice 5's `boundLearnings`); the
10
+ * task source (`inputs`) and the workflow `playbook` are not P7-reducible.
11
+ *
12
+ * Soft, not a gate: exceeding the budget warns and recommends; it never blocks a
13
+ * run. Pure + INERT on the loop — nothing here runs a stage, renders a prompt,
14
+ * or compacts anything. Wiring this assessment into the loop (warn + trigger the
15
+ * slice-5/6 levers when over budget) is a later slice; this is the measurement
16
+ * substrate, mirroring how slices 1 and 4–7 shipped pure-then-wired.
17
+ */
18
+ /**
19
+ * Known model context windows (tokens), matched by a lowercased substring of the
20
+ * model spec. Otto passes the spec opaquely to the CLI (see `resolveModelArgs`),
21
+ * so specs vary ("claude-opus-4-8", "sonnet", aliases); we match loosely and the
22
+ * 1M-context marker wins over the family default. Order matters: most specific
23
+ * (the 1M markers) first.
24
+ */
25
+ const MODEL_CONTEXT_WINDOWS = [
26
+ ["[1m]", 1_000_000],
27
+ ["-1m", 1_000_000],
28
+ ["opus", 200_000],
29
+ ["sonnet", 200_000],
30
+ ["haiku", 200_000],
31
+ ];
32
+ /** Conservative window for an unrecognized or unset model spec. */
33
+ export const DEFAULT_CONTEXT_WINDOW_TOKENS = 200_000;
34
+ /**
35
+ * Fraction of the model window the inline rendered prompt should stay under,
36
+ * leaving headroom for the agent's own tool reads and generated output. The
37
+ * ceiling is soft: crossing it warns and recommends compaction, never blocks.
38
+ */
39
+ export const DEFAULT_CONTEXT_BUDGET_FRACTION = 0.25;
40
+ /** The model's total context window in tokens (loose match; default on miss). */
41
+ export function modelContextWindow(model) {
42
+ const spec = (model ?? "").toLowerCase();
43
+ if (spec !== "") {
44
+ for (const [needle, window] of MODEL_CONTEXT_WINDOWS) {
45
+ if (spec.includes(needle))
46
+ return window;
47
+ }
48
+ }
49
+ return DEFAULT_CONTEXT_WINDOW_TOKENS;
50
+ }
51
+ /** The soft inline-prompt budget: a fraction of the model's context window. */
52
+ export function modelContextBudget(model, fraction = DEFAULT_CONTEXT_BUDGET_FRACTION) {
53
+ return Math.round(modelContextWindow(model) * fraction);
54
+ }
55
+ /** Categories a P7 lever can shrink, mapped to the lever that does it. */
56
+ const REDUCIBLE_LEVERS = {
57
+ commits: "inter-iteration commit compaction (compactCommits, slice 6)",
58
+ learnings: "bounded learnings injection (boundLearnings, slice 5)",
59
+ };
60
+ /**
61
+ * Assess a stage's rendered-prompt footprint against the soft, model-aware
62
+ * budget, and — when over — recommend compacting the largest reducible filler
63
+ * (commits/learnings). Pure: takes the breakdown, returns the verdict; triggers
64
+ * nothing. The "warn + trigger compaction" wiring is a later slice.
65
+ */
66
+ export function assessContextBudget(breakdown, ctx = {}) {
67
+ const windowTokens = modelContextWindow(ctx.model);
68
+ const budgetTokens = ctx.maxTokens ?? modelContextBudget(ctx.model, ctx.fraction);
69
+ const estimatedTokens = breakdown.estimatedTokens;
70
+ const overBudget = estimatedTokens > budgetTokens;
71
+ let recommendation;
72
+ if (overBudget) {
73
+ // Segments arrive sorted by chars descending (analyzeContext), so the first
74
+ // reducible one is the largest filler a P7 lever can shrink.
75
+ const top = breakdown.segments.find((s) => s.category in REDUCIBLE_LEVERS);
76
+ if (top) {
77
+ recommendation = {
78
+ category: top.category,
79
+ chars: top.chars,
80
+ lever: REDUCIBLE_LEVERS[top.category],
81
+ };
82
+ }
83
+ }
84
+ return {
85
+ estimatedTokens,
86
+ budgetTokens,
87
+ windowTokens,
88
+ overBudget,
89
+ overByTokens: Math.max(0, estimatedTokens - budgetTokens),
90
+ headroomTokens: Math.max(0, budgetTokens - estimatedTokens),
91
+ ratio: budgetTokens > 0 ? estimatedTokens / budgetTokens : 0,
92
+ recommendation,
93
+ };
94
+ }
95
+ const num = new Intl.NumberFormat("en-US");
96
+ const pct = new Intl.NumberFormat("en-US", { maximumFractionDigits: 1 });
97
+ /**
98
+ * Render a budget assessment as a short, human-readable line. The `~` prefix
99
+ * marks the estimated-token figures (the budget itself is exact). When over
100
+ * budget with a reducible filler, the line names the category and lever to pull.
101
+ */
102
+ export function formatContextBudget(a) {
103
+ const head = `context budget: ~${num.format(a.estimatedTokens)} tokens / ` +
104
+ `${num.format(a.budgetTokens)} budget ` +
105
+ `(${pct.format(a.ratio * 100)}% of budget, ` +
106
+ `${num.format(a.windowTokens)}-token window)`;
107
+ if (!a.overBudget)
108
+ return `${head} — within budget`;
109
+ const tail = a.recommendation
110
+ ? ` — compact ${a.recommendation.category} via ${a.recommendation.lever}`
111
+ : " — no P7-reducible filler to compact (inputs/playbook dominate)";
112
+ return `${head} — EXCEEDS by ${num.format(a.overByTokens)} tokens${tail}`;
113
+ }
114
+ //# sourceMappingURL=context-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-budget.js","sourceRoot":"","sources":["../src/context-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type StageRecord } from "./run-report.js";
2
+ /**
3
+ * `otto-afk --context-report` read-only surface (issue #62 P7, slice 3).
4
+ *
5
+ * A pure formatter over the latest run bundle's per-stage context breakdowns
6
+ * (captured in slice 2 — {@link StageRecord.contextBreakdown}), mirroring
7
+ * `otto-runs` / `otto-inspect`: it answers "what filled the window each
8
+ * iteration, and is per-iteration token cost staying bounded?" — the
9
+ * measurement P7's later optimizations are judged against. Read-only; records
10
+ * nothing and runs no stage.
11
+ */
12
+ /** Injectable host surface so the bin stays unit-testable (mirrors `RunsDeps`). */
13
+ export type ContextReportDeps = {
14
+ env: NodeJS.ProcessEnv;
15
+ cwd: string;
16
+ out: (msg: string) => void;
17
+ err: (msg: string) => void;
18
+ };
19
+ /**
20
+ * Render one run's per-stage context breakdowns into a compact composition +
21
+ * slope report. Pure: takes the already-read stage records, returns the string.
22
+ *
23
+ * - Per measured stage: its estimated tokens and per-category share (largest
24
+ * first, the order `analyzeContext` already sorts segments by).
25
+ * - Slope: first-third vs last-third average estimated tokens, with a
26
+ * growing/flat/shrinking label (±10% band) — the "is per-iteration cost
27
+ * bounded?" signal P7's success metric tracks. `n/a` until ≥2 stages measured.
28
+ */
29
+ export declare function formatContextReportRun(runId: string, stages: StageRecord[]): string;
30
+ /**
31
+ * Drive `--context-report`: read the latest run's stage records under
32
+ * `.otto/runs/` and print the composition + slope report. Read-only; resolves
33
+ * to the process exit code (1 only when there is no run to report on).
34
+ */
35
+ export declare function runContextReport(deps?: ContextReportDeps): Promise<number>;
36
+ //# sourceMappingURL=context-report-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-report-cli.d.ts","sourceRoot":"","sources":["../src/context-report-cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGjF;;;;;;;;;GASG;AAEH,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,CAAC;AAgBF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EAAE,GACpB,MAAM,CAyDR;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,GAAE,iBAA+B,GACpC,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -0,0 +1,81 @@
1
+ import { resolve } from "node:path";
2
+ import { listRunIds, readStageRecords } from "./run-report.js";
3
+ import { formatCacheEfficiency, summarizeCacheEfficiency } from "./tokens.js";
4
+ const defaultDeps = {
5
+ env: process.env,
6
+ cwd: process.cwd(),
7
+ out: (m) => process.stdout.write(`${m}\n`),
8
+ err: (m) => process.stderr.write(`${m}\n`),
9
+ };
10
+ const num = new Intl.NumberFormat("en-US");
11
+ const pct = new Intl.NumberFormat("en-US", { maximumFractionDigits: 1 });
12
+ function avg(ns) {
13
+ return ns.reduce((a, b) => a + b, 0) / ns.length;
14
+ }
15
+ /**
16
+ * Render one run's per-stage context breakdowns into a compact composition +
17
+ * slope report. Pure: takes the already-read stage records, returns the string.
18
+ *
19
+ * - Per measured stage: its estimated tokens and per-category share (largest
20
+ * first, the order `analyzeContext` already sorts segments by).
21
+ * - Slope: first-third vs last-third average estimated tokens, with a
22
+ * growing/flat/shrinking label (±10% band) — the "is per-iteration cost
23
+ * bounded?" signal P7's success metric tracks. `n/a` until ≥2 stages measured.
24
+ */
25
+ export function formatContextReportRun(runId, stages) {
26
+ const lines = [`Context report — run ${runId}`];
27
+ const measured = stages.filter((s) => s.contextBreakdown != null);
28
+ if (measured.length === 0) {
29
+ lines.push(" No context breakdown recorded for this run. Breakdowns are captured");
30
+ lines.push(" per stage from the P7 slice-2 build onward; older runs have none.");
31
+ return lines.join("\n");
32
+ }
33
+ lines.push(` ${measured.length} stage(s) measured`, "");
34
+ for (const s of measured) {
35
+ const b = s.contextBreakdown;
36
+ const shares = b.segments
37
+ .map((seg) => `${seg.category} ${pct.format(b.totalChars > 0 ? (seg.chars / b.totalChars) * 100 : 0)}%`)
38
+ .join(" · ");
39
+ lines.push(` iter${s.iteration} ${s.stage} ~${num.format(b.estimatedTokens)} tokens` +
40
+ (shares ? ` ${shares}` : ""));
41
+ }
42
+ lines.push("");
43
+ const toks = measured.map((s) => s.contextBreakdown.estimatedTokens);
44
+ if (toks.length < 2) {
45
+ lines.push(" Slope: n/a (need ≥2 measured stages)");
46
+ }
47
+ else {
48
+ const third = Math.max(1, Math.floor(toks.length / 3));
49
+ const firstAvg = avg(toks.slice(0, third));
50
+ const lastAvg = avg(toks.slice(-third));
51
+ const deltaPct = firstAvg > 0 ? ((lastAvg - firstAvg) / firstAvg) * 100 : 0;
52
+ const trend = deltaPct > 10 ? "growing" : deltaPct < -10 ? "shrinking" : "flat";
53
+ lines.push(` Slope (~tokens/stage): first-third avg ~${num.format(Math.round(firstAvg))} → last-third avg ~${num.format(Math.round(lastAvg))} (${deltaPct >= 0 ? "+" : ""}${pct.format(deltaPct)}%, ${trend})`);
54
+ }
55
+ // Cache efficiency (slice 4) — authoritative provider usage, independent of
56
+ // the estimated-token composition above. Drawn from EVERY stage's usage (not
57
+ // just measured ones); omitted when no input tokens were billed.
58
+ const cache = summarizeCacheEfficiency(stages.map((s) => s.usage));
59
+ if (cache.totalInputTokens > 0) {
60
+ lines.push("", ` ${formatCacheEfficiency(cache)}`);
61
+ }
62
+ return lines.join("\n");
63
+ }
64
+ /**
65
+ * Drive `--context-report`: read the latest run's stage records under
66
+ * `.otto/runs/` and print the composition + slope report. Read-only; resolves
67
+ * to the process exit code (1 only when there is no run to report on).
68
+ */
69
+ export async function runContextReport(deps = defaultDeps) {
70
+ const workspaceDir = resolve(deps.env.OTTO_WORKSPACE ?? deps.cwd);
71
+ const ids = listRunIds(workspaceDir);
72
+ if (ids.length === 0) {
73
+ deps.err(`No runs found under ${workspaceDir}/.otto/runs/. ` +
74
+ "Run Otto first, then re-run with --context-report.");
75
+ return 1;
76
+ }
77
+ const runId = ids[ids.length - 1];
78
+ deps.out(formatContextReportRun(runId, readStageRecords(workspaceDir, runId)));
79
+ return 0;
80
+ }
81
+ //# sourceMappingURL=context-report-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-report-cli.js","sourceRoot":"","sources":["../src/context-report-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Context telemetry (issue #62 P7, slice 1 — "measure before optimizing").
3
+ *
4
+ * A pure analyzer over a *rendered* stage prompt: it attributes the inline
5
+ * window footprint to the sections that actually fill it, so a later P7 slice
6
+ * (prefix caching, bounded learnings, compaction, read-dedup, budget) can prove
7
+ * it shrank the right thing. INERT on the loop — nothing here runs a stage or
8
+ * changes behavior; it only describes a string.
9
+ *
10
+ * Token counts are an estimate (`ceil(chars/4)`), labelled as such. The
11
+ * authoritative per-stage usage comes from the provider via `tokens.ts`; this
12
+ * module answers the orthogonal *composition* question ("which section is the
13
+ * prompt made of") that a single usage total cannot.
14
+ */
15
+ export type ContextCategory = "commits" | "learnings" | "inputs" | "playbook";
16
+ export type ContextSegment = {
17
+ category: ContextCategory;
18
+ chars: number;
19
+ estimatedTokens: number;
20
+ };
21
+ export type ContextBreakdown = {
22
+ totalChars: number;
23
+ estimatedTokens: number;
24
+ /** Per-category footprint, sorted by chars descending; empty categories omitted. */
25
+ segments: ContextSegment[];
26
+ };
27
+ /** Standard rough token estimate: ~4 chars per token, rounded up. */
28
+ export declare function estimateTokens(chars: number): number;
29
+ /**
30
+ * Segment a rendered stage prompt into its context categories. The category
31
+ * char counts sum to the whole prompt: recognized blocks are attributed to
32
+ * their category, all remaining text falls to `playbook`.
33
+ */
34
+ export declare function analyzeContext(prompt: string): ContextBreakdown;
35
+ /**
36
+ * Render a breakdown as a short, human-readable composition report. The `~`
37
+ * prefix marks the token figures as estimates, not authoritative billing.
38
+ */
39
+ export declare function formatContextReport(b: ContextBreakdown): string;
40
+ //# sourceMappingURL=context-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-report.d.ts","sourceRoot":"","sources":["../src/context-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9E,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD;AA8BD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAwB/D;AAKD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAa/D"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Context telemetry (issue #62 P7, slice 1 — "measure before optimizing").
3
+ *
4
+ * A pure analyzer over a *rendered* stage prompt: it attributes the inline
5
+ * window footprint to the sections that actually fill it, so a later P7 slice
6
+ * (prefix caching, bounded learnings, compaction, read-dedup, budget) can prove
7
+ * it shrank the right thing. INERT on the loop — nothing here runs a stage or
8
+ * changes behavior; it only describes a string.
9
+ *
10
+ * Token counts are an estimate (`ceil(chars/4)`), labelled as such. The
11
+ * authoritative per-stage usage comes from the provider via `tokens.ts`; this
12
+ * module answers the orthogonal *composition* question ("which section is the
13
+ * prompt made of") that a single usage total cannot.
14
+ */
15
+ /** Standard rough token estimate: ~4 chars per token, rounded up. */
16
+ export function estimateTokens(chars) {
17
+ return Math.ceil(Math.max(0, chars) / 4);
18
+ }
19
+ /**
20
+ * Top-level rendered-prompt block tags → the category they fill. These markers
21
+ * are stable across the afk / ghafk / ghafk-issue templates (see
22
+ * `templates/{afk,ghafk,ghafk-issue}.md`). Anything outside a recognized block
23
+ * is the workflow instructions, attributed to `playbook`.
24
+ */
25
+ const BLOCK_CATEGORY = {
26
+ commits: "commits",
27
+ learnings: "learnings",
28
+ inputs: "inputs",
29
+ issue: "inputs",
30
+ "issues-summary": "inputs",
31
+ "issues-full-file": "inputs",
32
+ };
33
+ /** Sum the char footprint of every recognized `<tag>…</tag>` span, by category. */
34
+ function recognizedSpans(prompt) {
35
+ const byCategory = new Map();
36
+ for (const [tag, category] of Object.entries(BLOCK_CATEGORY)) {
37
+ // Non-greedy, dot-all: each top-level block appears at most once per prompt.
38
+ const re = new RegExp(`<${tag}>[\\s\\S]*?</${tag}>`, "g");
39
+ for (const match of prompt.matchAll(re)) {
40
+ byCategory.set(category, (byCategory.get(category) ?? 0) + match[0].length);
41
+ }
42
+ }
43
+ return byCategory;
44
+ }
45
+ /**
46
+ * Segment a rendered stage prompt into its context categories. The category
47
+ * char counts sum to the whole prompt: recognized blocks are attributed to
48
+ * their category, all remaining text falls to `playbook`.
49
+ */
50
+ export function analyzeContext(prompt) {
51
+ const totalChars = prompt.length;
52
+ const byCategory = recognizedSpans(prompt);
53
+ const recognizedTotal = [...byCategory.values()].reduce((a, b) => a + b, 0);
54
+ const playbook = totalChars - recognizedTotal;
55
+ if (playbook > 0) {
56
+ byCategory.set("playbook", playbook);
57
+ }
58
+ const segments = [...byCategory.entries()]
59
+ .filter(([, chars]) => chars > 0)
60
+ .map(([category, chars]) => ({
61
+ category,
62
+ chars,
63
+ estimatedTokens: estimateTokens(chars),
64
+ }))
65
+ .sort((a, b) => b.chars - a.chars);
66
+ return {
67
+ totalChars,
68
+ estimatedTokens: estimateTokens(totalChars),
69
+ segments,
70
+ };
71
+ }
72
+ const pct = new Intl.NumberFormat("en-US", { maximumFractionDigits: 1 });
73
+ const num = new Intl.NumberFormat("en-US");
74
+ /**
75
+ * Render a breakdown as a short, human-readable composition report. The `~`
76
+ * prefix marks the token figures as estimates, not authoritative billing.
77
+ */
78
+ export function formatContextReport(b) {
79
+ const header = `context: ${num.format(b.totalChars)} chars (~${num.format(b.estimatedTokens)} tokens)`;
80
+ if (b.segments.length === 0)
81
+ return header;
82
+ const lines = b.segments.map((s) => {
83
+ const share = b.totalChars > 0 ? (s.chars / b.totalChars) * 100 : 0;
84
+ return ` ${s.category.padEnd(10)} ${num.format(s.chars)} chars (~${num.format(s.estimatedTokens)} tokens) ${pct.format(share)}%`;
85
+ });
86
+ return [header, ...lines].join("\n");
87
+ }
88
+ //# sourceMappingURL=context-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-report.js","sourceRoot":"","sources":["../src/context-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAoC;IACtD,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,gBAAgB,EAAE,QAAQ;IAC1B,kBAAkB,EAAE,QAAQ;CAC7B,CAAC;AAEF,mFAAmF;AACnF,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7D,6EAA6E;QAC7E,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,gBAAgB,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;IAC9C,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,UAAU,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,QAAQ,GAAqB,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,QAAQ;QACR,KAAK;QACL,eAAe,EAAE,cAAc,CAAC,KAAK,CAAC;KACvC,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO;QACL,UAAU;QACV,eAAe,EAAE,cAAc,CAAC,UAAU,CAAC;QAC3C,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC;AACzE,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,CAAmB;IACrD,MAAM,MAAM,GAAG,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,GAAG,CAAC,MAAM,CACvE,CAAC,CAAC,eAAe,CAClB,UAAU,CAAC;IACZ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE3C,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,CAC5E,CAAC,CAAC,eAAe,CAClB,aAAa,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}