@phamvuhoang/otto-core 0.26.0 → 0.27.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 (44) hide show
  1. package/dist/cli-help.d.ts +4 -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/index.d.ts +3 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/inspect.d.ts.map +1 -1
  10. package/dist/inspect.js +16 -0
  11. package/dist/inspect.js.map +1 -1
  12. package/dist/loop.d.ts +5 -0
  13. package/dist/loop.d.ts.map +1 -1
  14. package/dist/loop.js +48 -1
  15. package/dist/loop.js.map +1 -1
  16. package/dist/report-explain.d.ts.map +1 -1
  17. package/dist/report-explain.js +4 -0
  18. package/dist/report-explain.js.map +1 -1
  19. package/dist/run-bin.d.ts.map +1 -1
  20. package/dist/run-bin.js +10 -0
  21. package/dist/run-bin.js.map +1 -1
  22. package/dist/run-report.d.ts +6 -0
  23. package/dist/run-report.d.ts.map +1 -1
  24. package/dist/run-report.js.map +1 -1
  25. package/dist/runner.d.ts +4 -1
  26. package/dist/runner.d.ts.map +1 -1
  27. package/dist/runner.js.map +1 -1
  28. package/dist/skill-activation.d.ts +47 -0
  29. package/dist/skill-activation.d.ts.map +1 -0
  30. package/dist/skill-activation.js +57 -0
  31. package/dist/skill-activation.js.map +1 -0
  32. package/dist/skill-routing.d.ts +83 -0
  33. package/dist/skill-routing.d.ts.map +1 -0
  34. package/dist/skill-routing.js +245 -0
  35. package/dist/skill-routing.js.map +1 -0
  36. package/dist/skills-cli.d.ts +7 -0
  37. package/dist/skills-cli.d.ts.map +1 -1
  38. package/dist/skills-cli.js +43 -2
  39. package/dist/skills-cli.js.map +1 -1
  40. package/dist/stage-exec.d.ts +4 -0
  41. package/dist/stage-exec.d.ts.map +1 -1
  42. package/dist/stage-exec.js +6 -0
  43. package/dist/stage-exec.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,57 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ const STAGE_FAMILIES = [
4
+ "plan",
5
+ "implement",
6
+ "review",
7
+ "report",
8
+ "journal",
9
+ ];
10
+ const TRUTHY = new Set(["1", "true", "yes", "on"]);
11
+ /**
12
+ * Read `.otto/config.json`'s `skills` block as a raw record (the parser in
13
+ * {@link resolveSkillActivation} normalizes it). Absent/malformed file or block →
14
+ * undefined (zero behavior change). Mirrors `readJournalConfig`/`readAgentConfig`.
15
+ */
16
+ export function readSkillsConfig(workspaceDir) {
17
+ try {
18
+ const raw = JSON.parse(readFileSync(join(workspaceDir, ".otto", "config.json"), "utf8"));
19
+ return raw.skills;
20
+ }
21
+ catch {
22
+ return undefined;
23
+ }
24
+ }
25
+ /**
26
+ * Resolve activation from flag/env/config. `--use-skills` (flag) or a truthy
27
+ * `OTTO_USE_SKILLS` (env) force-enable regardless of config; otherwise
28
+ * `config.skills.enabled === true` enables. Per-family booleans on the config
29
+ * block are carried through as overrides. Pure — the caller supplies the raw
30
+ * inputs (mirrors `resolveAgentRuntime`).
31
+ */
32
+ export function resolveSkillActivation(opts) {
33
+ const cfg = opts.config !== null &&
34
+ typeof opts.config === "object" &&
35
+ !Array.isArray(opts.config)
36
+ ? opts.config
37
+ : {};
38
+ const envOn = TRUTHY.has((opts.env ?? "").trim().toLowerCase());
39
+ const enabled = opts.flag === true || envOn || cfg.enabled === true;
40
+ const stages = {};
41
+ for (const family of STAGE_FAMILIES) {
42
+ if (typeof cfg[family] === "boolean")
43
+ stages[family] = cfg[family];
44
+ }
45
+ return { enabled, stages };
46
+ }
47
+ /**
48
+ * Whether skills are active for a given stage family: the master switch must be
49
+ * on AND the family's override (if any) must not be false. A family with no
50
+ * override follows the master switch. Pure.
51
+ */
52
+ export function stageEnabled(activation, family) {
53
+ if (!activation.enabled)
54
+ return false;
55
+ return activation.stages[family] !== false;
56
+ }
57
+ //# sourceMappingURL=skill-activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-activation.js","sourceRoot":"","sources":["../src/skill-activation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAwBjC,MAAM,cAAc,GAA2B;IAC7C,MAAM;IACN,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,SAAS;CACV,CAAC;AAUF,MAAM,MAAM,GAAwB,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CACtC,CAAC;QAC7B,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAItC;IACC,MAAM,GAAG,GACP,IAAI,CAAC,MAAM,KAAK,IAAI;QACpB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzB,CAAC,CAAE,IAAI,CAAC,MAAkC;QAC1C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;IAEpE,MAAM,MAAM,GAA0C,EAAE,CAAC;IACzD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS;YAClC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAY,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAC1B,UAA2B,EAC3B,MAAmB;IAEnB,IAAI,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,83 @@
1
+ import type { StageFamily } from "./skill-activation.js";
2
+ import type { SkillUsage } from "./run-report.js";
3
+ import { type Skill } from "./skills.js";
4
+ /**
5
+ * Stage-scoped skill retrieval (issue #137 P18). Given the skills installed under
6
+ * `.otto/skills/`, the running stage, and the iteration's changed files, decide
7
+ * which **validated, compatible, relevant** skills to inject — bounded by a hard
8
+ * char budget so skill text can never crowd out the real prompt.
9
+ *
10
+ * Eligibility keys on the P17 static gate, NOT the older run-validation:
11
+ * a skill is selectable only when it carries a recorded `compatibility` that is
12
+ * neither `blocked` nor `interactive-only` (AFK is non-interactive), its body has
13
+ * not drifted since validation (`needsRevalidation`), and its scope fits the
14
+ * stage — `afk-safe` anywhere, `stage-scoped` only on its declared stages. Among
15
+ * eligible skills, relevance is scored by scope-glob match against the changed
16
+ * files and specificity; a skill whose constraints forbid the change's risk class
17
+ * is excluded. Pure, deterministic — the loop does the injection + evidence.
18
+ */
19
+ /** Default total char budget for all injected skill text in one stage. */
20
+ export declare const DEFAULT_SKILLS_BUDGET_CHARS = 4000;
21
+ /** Default per-skill excerpt cap, so one skill cannot consume the whole budget. */
22
+ export declare const DEFAULT_PER_SKILL_CHARS = 1200;
23
+ /** Map a concrete stage name (`stages.ts`) to its family, or null if unknown. */
24
+ export declare function stageFamily(stageName: string): StageFamily | null;
25
+ /** One skill's routing verdict — for `otto-skills why --stage`. */
26
+ export type SkillRouteVerdict = {
27
+ name: string;
28
+ eligible: boolean;
29
+ selected: boolean;
30
+ score: number;
31
+ reasons: string[];
32
+ };
33
+ /** A selected skill plus its bounded excerpt and char cost. */
34
+ export type SkillRouteSelection = {
35
+ skill: Skill;
36
+ reasons: string[];
37
+ /** Bounded instruction excerpt (never the full library). */
38
+ excerpt: string;
39
+ chars: number;
40
+ };
41
+ /** The result of routing skills for one stage. */
42
+ export type SkillRouteResult = {
43
+ family: StageFamily | null;
44
+ /** Selected skills, highest-ranked first, within the char budget. */
45
+ selected: SkillRouteSelection[];
46
+ /** Every skill considered, with eligibility + reasons. */
47
+ verdicts: SkillRouteVerdict[];
48
+ budgetChars: number;
49
+ usedChars: number;
50
+ };
51
+ /** Trim a skill body to a char cap, cutting on a line boundary when possible. */
52
+ export declare function boundExcerpt(instructions: string, cap?: number): string;
53
+ /**
54
+ * Route skills for a stage: assess each, rank eligible ones (score desc, then
55
+ * name), then greedily fill the char budget with bounded excerpts. Returns the
56
+ * selection (for injection), the full verdict list (for `why --stage`), and the
57
+ * char accounting. A skill that does not fit the remaining budget is dropped with
58
+ * a reason rather than truncated mid-excerpt. Pure.
59
+ */
60
+ export declare function routeSkillsForStage(skills: Skill[], opts: {
61
+ stageName: string;
62
+ changedPaths?: string[];
63
+ budgetChars?: number;
64
+ perSkillChars?: number;
65
+ now?: Date;
66
+ }): SkillRouteResult;
67
+ /**
68
+ * Render selected skills into a bounded, attributed `<available-skills>` block
69
+ * for prompt injection (issue #138). Each skill is labelled with its source, ref,
70
+ * version, and checksum so a report can trace exactly which instruction shaped the
71
+ * run. The block carries a standing note that repo policy + stage contracts
72
+ * outrank skills and that conflicts must be reported, not silently merged. Returns
73
+ * `""` when nothing is selected, so an opted-in stage with no eligible skill is
74
+ * byte-for-byte unchanged. Pure.
75
+ */
76
+ export declare function formatSkillInjection(selected: SkillRouteSelection[]): string;
77
+ /**
78
+ * Convert selections into `SkillUsage[]` evidence (issue #139): name, version,
79
+ * source, ref, the stage that consumed them, and the retrieval reasons — so a run
80
+ * report can reproduce why each skill was selected from the bundle alone. Pure.
81
+ */
82
+ export declare function toSkillUsages(selected: SkillRouteSelection[], stage: string): SkillUsage[];
83
+ //# sourceMappingURL=skill-routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-routing.d.ts","sourceRoot":"","sources":["../src/skill-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAa,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAUjE;AAED,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,EACpB,GAAG,GAAE,MAAgC,GACpC,MAAM,CAOR;AAyGD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,KAAK,EAAE,EACf,IAAI,EAAE;IACJ,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GACA,gBAAgB,CA8ClB;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAU5E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,KAAK,EAAE,MAAM,GACZ,UAAU,EAAE,CAiBd"}
@@ -0,0 +1,245 @@
1
+ import { classifyRisk } from "./risk.js";
2
+ import { needsRevalidation } from "./skill-validation.js";
3
+ import { globMatch } from "./skills.js";
4
+ /**
5
+ * Stage-scoped skill retrieval (issue #137 P18). Given the skills installed under
6
+ * `.otto/skills/`, the running stage, and the iteration's changed files, decide
7
+ * which **validated, compatible, relevant** skills to inject — bounded by a hard
8
+ * char budget so skill text can never crowd out the real prompt.
9
+ *
10
+ * Eligibility keys on the P17 static gate, NOT the older run-validation:
11
+ * a skill is selectable only when it carries a recorded `compatibility` that is
12
+ * neither `blocked` nor `interactive-only` (AFK is non-interactive), its body has
13
+ * not drifted since validation (`needsRevalidation`), and its scope fits the
14
+ * stage — `afk-safe` anywhere, `stage-scoped` only on its declared stages. Among
15
+ * eligible skills, relevance is scored by scope-glob match against the changed
16
+ * files and specificity; a skill whose constraints forbid the change's risk class
17
+ * is excluded. Pure, deterministic — the loop does the injection + evidence.
18
+ */
19
+ /** Default total char budget for all injected skill text in one stage. */
20
+ export const DEFAULT_SKILLS_BUDGET_CHARS = 4000;
21
+ /** Default per-skill excerpt cap, so one skill cannot consume the whole budget. */
22
+ export const DEFAULT_PER_SKILL_CHARS = 1200;
23
+ /** Map a concrete stage name (`stages.ts`) to its family, or null if unknown. */
24
+ export function stageFamily(stageName) {
25
+ const n = stageName.toLowerCase();
26
+ // "apply-review-implementer" contains both — implement wins (it writes code).
27
+ if (n.includes("implement"))
28
+ return "implement";
29
+ if (n === "verifier")
30
+ return "implement";
31
+ if (n === "plan")
32
+ return "plan";
33
+ if (n.includes("review"))
34
+ return "review";
35
+ if (n.includes("report"))
36
+ return "report";
37
+ if (n.includes("journal"))
38
+ return "journal";
39
+ return null;
40
+ }
41
+ /** Trim a skill body to a char cap, cutting on a line boundary when possible. */
42
+ export function boundExcerpt(instructions, cap = DEFAULT_PER_SKILL_CHARS) {
43
+ const body = instructions.trim();
44
+ if (body.length <= cap)
45
+ return body;
46
+ const slice = body.slice(0, cap);
47
+ const lastNl = slice.lastIndexOf("\n");
48
+ const cut = lastNl > cap * 0.5 ? slice.slice(0, lastNl) : slice;
49
+ return cut.trimEnd() + "\n…";
50
+ }
51
+ /** Decide eligibility for `skill` on `family`, accumulating human reasons. */
52
+ function assess(skill, family, changedPaths, now) {
53
+ const reasons = [];
54
+ const v = skill.validation;
55
+ if (!v.compatibility) {
56
+ return {
57
+ eligible: false,
58
+ score: 0,
59
+ reasons: [
60
+ "not validated (no compatibility recorded — run otto-skills validate)",
61
+ ],
62
+ };
63
+ }
64
+ if (v.compatibility === "blocked") {
65
+ return {
66
+ eligible: false,
67
+ score: 0,
68
+ reasons: ["blocked by the validation gate"],
69
+ };
70
+ }
71
+ if (v.compatibility === "interactive-only") {
72
+ return {
73
+ eligible: false,
74
+ score: 0,
75
+ reasons: ["interactive-only — needs a human, unsafe for AFK stages"],
76
+ };
77
+ }
78
+ if (needsRevalidation(skill)) {
79
+ return {
80
+ eligible: false,
81
+ score: 0,
82
+ reasons: [
83
+ "body drifted since validation — needs revalidation before reuse",
84
+ ],
85
+ };
86
+ }
87
+ if (family === null) {
88
+ return { eligible: false, score: 0, reasons: ["unknown stage family"] };
89
+ }
90
+ let score = 0;
91
+ if (v.compatibility === "stage-scoped") {
92
+ if (!(v.stages ?? []).includes(family)) {
93
+ return {
94
+ eligible: false,
95
+ score: 0,
96
+ reasons: [
97
+ `stage-scoped to ${(v.stages ?? []).join(", ") || "(none)"} — not ${family}`,
98
+ ],
99
+ };
100
+ }
101
+ score += 1; // a skill scoped to exactly this stage is more specific than afk-safe
102
+ reasons.push(`stage-scoped to ${family}`);
103
+ }
104
+ else {
105
+ reasons.push("afk-safe (usable on any stage)");
106
+ }
107
+ // Risk-class exclusion + scope-glob relevance against the changed files.
108
+ if (changedPaths.length > 0) {
109
+ const assessment = classifyRisk(changedPaths);
110
+ const forbidden = skill.constraints.some((c) => c.toLowerCase().includes(assessment.class));
111
+ if (forbidden) {
112
+ return {
113
+ eligible: false,
114
+ score: 0,
115
+ reasons: [
116
+ `excluded by constraint for risk class "${assessment.class}"`,
117
+ ],
118
+ };
119
+ }
120
+ if (skill.scope.length === 0) {
121
+ score += 1;
122
+ reasons.push("repo-wide (no scope restriction)");
123
+ }
124
+ else {
125
+ const hit = changedPaths.filter((p) => skill.scope.some((g) => globMatch(g, p)));
126
+ if (hit.length > 0) {
127
+ score += 2;
128
+ reasons.push(`scope matches changed file(s): ${hit.join(", ")}`);
129
+ }
130
+ else {
131
+ reasons.push("scope does not match the changed files");
132
+ }
133
+ }
134
+ }
135
+ return { eligible: true, score, reasons };
136
+ }
137
+ /**
138
+ * Route skills for a stage: assess each, rank eligible ones (score desc, then
139
+ * name), then greedily fill the char budget with bounded excerpts. Returns the
140
+ * selection (for injection), the full verdict list (for `why --stage`), and the
141
+ * char accounting. A skill that does not fit the remaining budget is dropped with
142
+ * a reason rather than truncated mid-excerpt. Pure.
143
+ */
144
+ export function routeSkillsForStage(skills, opts) {
145
+ const family = stageFamily(opts.stageName);
146
+ const changedPaths = opts.changedPaths ?? [];
147
+ const budgetChars = opts.budgetChars ?? DEFAULT_SKILLS_BUDGET_CHARS;
148
+ const perSkillChars = opts.perSkillChars ?? DEFAULT_PER_SKILL_CHARS;
149
+ const eligible = [];
150
+ const verdicts = [];
151
+ for (const skill of skills) {
152
+ const a = assess(skill, family, changedPaths, opts.now);
153
+ verdicts.push({
154
+ name: skill.name,
155
+ eligible: a.eligible,
156
+ selected: false,
157
+ score: a.score,
158
+ reasons: a.reasons,
159
+ });
160
+ if (a.eligible)
161
+ eligible.push({ skill, score: a.score, reasons: a.reasons });
162
+ }
163
+ eligible.sort((x, y) => y.score - x.score || x.skill.name.localeCompare(y.skill.name));
164
+ const selected = [];
165
+ let usedChars = 0;
166
+ for (const e of eligible) {
167
+ const excerpt = boundExcerpt(e.skill.instructions, perSkillChars);
168
+ const verdict = verdicts.find((v) => v.name === e.skill.name);
169
+ if (usedChars + excerpt.length > budgetChars) {
170
+ verdict.reasons.push("dropped: over the per-stage skill char budget");
171
+ continue;
172
+ }
173
+ usedChars += excerpt.length;
174
+ verdict.selected = true;
175
+ selected.push({
176
+ skill: e.skill,
177
+ reasons: e.reasons,
178
+ excerpt,
179
+ chars: excerpt.length,
180
+ });
181
+ }
182
+ return { family, selected, verdicts, budgetChars, usedChars };
183
+ }
184
+ /** A short attribution string for a skill: source/ref + version (issue #138). */
185
+ function attribution(skill) {
186
+ const p = skill.provenance;
187
+ if (p) {
188
+ const ref = p.upstreamRef ? ` @${p.upstreamRef}` : "";
189
+ const sum = (skill.validation.instructionsChecksum ?? p.checksum).slice(0, 12);
190
+ return `source: ${p.source}${ref}, v${skill.version}, sha256 ${sum}`;
191
+ }
192
+ const sum = (skill.validation.instructionsChecksum ?? "").slice(0, 12);
193
+ return `source: repo, v${skill.version}${sum ? `, sha256 ${sum}` : ""}`;
194
+ }
195
+ /** Standing precedence + conflict guidance prepended to every injected block. */
196
+ const INJECTION_NOTE = "Advisory process context. Repo AGENTS instructions, Otto stage contracts, and " +
197
+ ".otto/policy.json outrank these skills. If a skill conflicts with repo policy " +
198
+ "or a more specific instruction, follow repo policy and note the conflict — do " +
199
+ "not silently mix both.";
200
+ /**
201
+ * Render selected skills into a bounded, attributed `<available-skills>` block
202
+ * for prompt injection (issue #138). Each skill is labelled with its source, ref,
203
+ * version, and checksum so a report can trace exactly which instruction shaped the
204
+ * run. The block carries a standing note that repo policy + stage contracts
205
+ * outrank skills and that conflicts must be reported, not silently merged. Returns
206
+ * `""` when nothing is selected, so an opted-in stage with no eligible skill is
207
+ * byte-for-byte unchanged. Pure.
208
+ */
209
+ export function formatSkillInjection(selected) {
210
+ if (selected.length === 0)
211
+ return "";
212
+ const lines = [`<available-skills note="${INJECTION_NOTE}">`];
213
+ for (const s of selected) {
214
+ lines.push(`### ${s.skill.name} (${attribution(s.skill)})`);
215
+ lines.push(s.excerpt);
216
+ lines.push("");
217
+ }
218
+ lines.push("</available-skills>");
219
+ return lines.join("\n");
220
+ }
221
+ /**
222
+ * Convert selections into `SkillUsage[]` evidence (issue #139): name, version,
223
+ * source, ref, the stage that consumed them, and the retrieval reasons — so a run
224
+ * report can reproduce why each skill was selected from the bundle alone. Pure.
225
+ */
226
+ export function toSkillUsages(selected, stage) {
227
+ return selected.map((s) => {
228
+ const u = {
229
+ name: s.skill.name,
230
+ version: s.skill.version,
231
+ stage,
232
+ reasons: s.reasons,
233
+ };
234
+ if (s.skill.provenance) {
235
+ u.source = s.skill.provenance.source;
236
+ if (s.skill.provenance.upstreamRef)
237
+ u.ref = s.skill.provenance.upstreamRef;
238
+ }
239
+ else {
240
+ u.source = "repo";
241
+ }
242
+ return u;
243
+ });
244
+ }
245
+ //# sourceMappingURL=skill-routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-routing.js","sourceRoot":"","sources":["../src/skill-routing.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type ExternalAuditFinding, type ExternalSkillSource, type SyncPlan } from "./external-skills.js";
2
2
  import { type SkillValidationReport } from "./skill-validation.js";
3
+ import { type SkillRouteResult } from "./skill-routing.js";
3
4
  import { type Skill, type SkillCandidate, type SkillMatch } from "./skills.js";
4
5
  /**
5
6
  * Injectable host surface for {@link runSkills} so the bin stays unit-testable
@@ -27,6 +28,12 @@ export declare function formatSkillsAudit(skills: Skill[], now?: Date): string;
27
28
  * "inspect why a skill was selected" metric). Pure.
28
29
  */
29
30
  export declare function formatWhy(matches: SkillMatch[]): string;
31
+ /**
32
+ * Render the stage-routing explanation (issue #140 P18): which validated skills
33
+ * would be injected into `stageName` and why, plus the char-budget accounting —
34
+ * so a user can reproduce the runtime selection from the CLI alone. Pure.
35
+ */
36
+ export declare function formatWhyStage(stageName: string, result: SkillRouteResult): string;
30
37
  /** Render the candidate skills suggested from repeated successful runs. Pure. */
31
38
  export declare function formatCandidates(candidates: SkillCandidate[]): string;
32
39
  /** Render the configured external sources, sorted. Pure. */
@@ -1 +1 @@
1
- {"version":3,"file":"skills-cli.d.ts","sourceRoot":"","sources":["../src/skills-cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAUL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAExB,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAUL,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,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;AAsBF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EAAE,EACf,GAAG,GAAE,IAAiB,GACrB,MAAM,CAcR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,EAAE,EACf,GAAG,GAAE,IAAiB,GACrB,MAAM,CA6BR;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAUvD;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,CAWrE;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAWpE;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAqBtE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CA8B5E;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAK5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,UAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA2GjB"}
1
+ {"version":3,"file":"skills-cli.d.ts","sourceRoot":"","sources":["../src/skills-cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAUL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAExB,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAUL,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,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;AAuBF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EAAE,EACf,GAAG,GAAE,IAAiB,GACrB,MAAM,CAcR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,EAAE,EACf,GAAG,GAAE,IAAiB,GACrB,MAAM,CA6BR;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAUvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAkBR;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,CAWrE;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAWpE;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAqBtE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CA8B5E;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAK5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,UAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA8HjB"}
@@ -2,6 +2,7 @@ import { resolve } from "node:path";
2
2
  import { addSource, applySync, auditExternal, importedChecksum, planSync, readLock, readSources, removeSource, writeSources, } from "./external-skills.js";
3
3
  import { listRunIds, readManifest } from "./run-report.js";
4
4
  import { needsRevalidation, validateSkill, } from "./skill-validation.js";
5
+ import { routeSkillsForStage } from "./skill-routing.js";
5
6
  import { findSkillCandidates, readSkill, readSkills, recordStaticValidation, selectSkills, skillsDir, skillStatus, writeSkill, } from "./skills.js";
6
7
  const defaultDeps = {
7
8
  env: process.env,
@@ -11,6 +12,7 @@ const defaultDeps = {
11
12
  };
12
13
  const USAGE = "Usage: otto-skills <list|audit|candidates>\n" +
13
14
  " otto-skills why <changed-path>...\n" +
15
+ " otto-skills why --stage <stage> [--changed <path>...]\n" +
14
16
  " otto-skills validate <skill> [--source <name>]\n" +
15
17
  " otto-skills sources <list|add|remove> ...\n" +
16
18
  " otto-skills sync [--dry-run]\n" +
@@ -84,6 +86,29 @@ export function formatWhy(matches) {
84
86
  }
85
87
  return lines.join("\n");
86
88
  }
89
+ /**
90
+ * Render the stage-routing explanation (issue #140 P18): which validated skills
91
+ * would be injected into `stageName` and why, plus the char-budget accounting —
92
+ * so a user can reproduce the runtime selection from the CLI alone. Pure.
93
+ */
94
+ export function formatWhyStage(stageName, result) {
95
+ const lines = [
96
+ `Stage '${stageName}' (family: ${result.family ?? "unknown"}) — skill routing:`,
97
+ ];
98
+ if (result.verdicts.length === 0) {
99
+ lines.push(" No skills installed.");
100
+ return lines.join("\n");
101
+ }
102
+ for (const v of result.verdicts) {
103
+ const tag = v.selected ? "selected" : v.eligible ? "eligible" : "skip";
104
+ lines.push(`- ${v.name} [${tag}] score ${v.score}`);
105
+ for (const r of v.reasons)
106
+ lines.push(` · ${r}`);
107
+ }
108
+ lines.push("");
109
+ lines.push(`budget: ${result.usedChars}/${result.budgetChars} chars used by ${result.selected.length} selected skill(s)`);
110
+ return lines.join("\n");
111
+ }
87
112
  /** Render the candidate skills suggested from repeated successful runs. Pure. */
88
113
  export function formatCandidates(candidates) {
89
114
  if (candidates.length === 0) {
@@ -216,9 +241,25 @@ export async function runSkills(argv, deps = defaultDeps) {
216
241
  }
217
242
  const skills = readSkills(workspaceDir);
218
243
  if (arg === "why") {
219
- const paths = argv.slice(1);
244
+ const rest = argv.slice(1);
245
+ const stage = flagValue(rest, "--stage");
246
+ if (stage) {
247
+ // P18: route validated skills for a concrete stage (with optional --changed
248
+ // paths for scope scoring), explaining the runtime selection.
249
+ const changedIdx = rest.indexOf("--changed");
250
+ const changed = changedIdx >= 0
251
+ ? rest.slice(changedIdx + 1).filter((a) => !a.startsWith("--"))
252
+ : [];
253
+ const result = routeSkillsForStage(skills, {
254
+ stageName: stage,
255
+ changedPaths: changed,
256
+ });
257
+ deps.out(formatWhyStage(stage, result));
258
+ return 0;
259
+ }
260
+ const paths = rest;
220
261
  if (paths.length === 0) {
221
- deps.err(`why needs at least one changed path.\n${USAGE}`);
262
+ deps.err(`why needs at least one changed path (or --stage <stage>).\n${USAGE}`);
222
263
  return 1;
223
264
  }
224
265
  deps.out(formatWhy(selectSkills(skills, { changedPaths: paths })));
@@ -1 +1 @@
1
- {"version":3,"file":"skills-cli.js","sourceRoot":"","sources":["../src/skills-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills-cli.js","sourceRoot":"","sources":["../src/skills-cli.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,10 @@ export type ExecuteStageOptions = {
38
38
  /** Where compressed-spill originals are retained (the run's retrieval store);
39
39
  * required for the compressor to store reversible originals. */
40
40
  retrievalStore?: RetrievalStore;
41
+ /** Bounded, attributed skill guidance appended to the rendered prompt (issue
42
+ * #114 P18). Empty/absent ⇒ the prompt is unchanged. Appended after rendering
43
+ * so it is measured by `analyzeContext` but never disturbs the template. */
44
+ injectedContext?: string;
41
45
  };
42
46
  /** Render a stage's template (inside the retry, so flaky shell tags retry) and run it. */
43
47
  export declare function executeStage(opts: ExecuteStageOptions): Promise<StageResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"stage-exec.d.ts","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yFAAyF;IACzF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;mFAC+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;mFAC+E;IAC/E,UAAU,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC1C;qEACiE;IACjE,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAqCF,0FAA0F;AAC1F,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,WAAW,CAAC,CAgItB"}
1
+ {"version":3,"file":"stage-exec.d.ts","sourceRoot":"","sources":["../src/stage-exec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,0FAA0F;IAC1F,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,yFAAyF;IACzF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;mFAC+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;mFAC+E;IAC/E,UAAU,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC1C;qEACiE;IACjE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;iFAE6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAqCF,0FAA0F;AAC1F,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,WAAW,CAAC,CAsItB"}
@@ -87,6 +87,12 @@ export async function executeStage(opts) {
87
87
  const { originalChars, reducedChars, cacheHits } = reduced.stats;
88
88
  process.stderr.write(`${dim(`prompt reduce ${originalChars} -> ${reducedChars} chars | cache hits ${cacheHits}`)}\n`);
89
89
  }
90
+ // Append the bounded, attributed skill block (issue #114 P18) after
91
+ // rendering + reduction so it reaches the agent verbatim and is measured by
92
+ // analyzeContext below. Empty ⇒ no change to the rendered prompt.
93
+ if (opts.injectedContext && opts.injectedContext.trim().length > 0) {
94
+ prompt = `${prompt}\n\n${opts.injectedContext}\n`;
95
+ }
90
96
  // Route the model for this stage (issue #66 P11): a pin wins, else the
91
97
  // declared tier through the ladder when routing is on, else runtime default.
92
98
  const model = resolveStageModel({