@rasensio/aidlc 1.8.0 → 1.9.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 (106) hide show
  1. package/dist/cli.js +2 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/add-action.d.ts.map +1 -1
  4. package/dist/commands/add-action.js +2 -3
  5. package/dist/commands/add-action.js.map +1 -1
  6. package/dist/commands/add-skill.d.ts +28 -0
  7. package/dist/commands/add-skill.d.ts.map +1 -0
  8. package/dist/commands/add-skill.js +315 -0
  9. package/dist/commands/add-skill.js.map +1 -0
  10. package/dist/commands/add.d.ts +25 -0
  11. package/dist/commands/add.d.ts.map +1 -0
  12. package/dist/commands/add.js +29 -0
  13. package/dist/commands/add.js.map +1 -0
  14. package/dist/commands/cost.d.ts +2 -0
  15. package/dist/commands/cost.d.ts.map +1 -1
  16. package/dist/commands/cost.js +16 -1
  17. package/dist/commands/cost.js.map +1 -1
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +1 -10
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/update.d.ts.map +1 -1
  22. package/dist/commands/update.js +1 -9
  23. package/dist/commands/update.js.map +1 -1
  24. package/dist/compile/adapters/claude-code.d.ts.map +1 -1
  25. package/dist/compile/adapters/claude-code.js +3 -24
  26. package/dist/compile/adapters/claude-code.js.map +1 -1
  27. package/dist/compile/adapters/codex.d.ts.map +1 -1
  28. package/dist/compile/adapters/codex.js +3 -2
  29. package/dist/compile/adapters/codex.js.map +1 -1
  30. package/dist/compile/adapters/cursor.d.ts.map +1 -1
  31. package/dist/compile/adapters/cursor.js +4 -2
  32. package/dist/compile/adapters/cursor.js.map +1 -1
  33. package/dist/compile/adapters/kiro.d.ts.map +1 -1
  34. package/dist/compile/adapters/kiro.js +6 -10
  35. package/dist/compile/adapters/kiro.js.map +1 -1
  36. package/dist/compile/adapters/windsurf.d.ts.map +1 -1
  37. package/dist/compile/adapters/windsurf.js +9 -11
  38. package/dist/compile/adapters/windsurf.js.map +1 -1
  39. package/dist/compile/content-root.d.ts +22 -0
  40. package/dist/compile/content-root.d.ts.map +1 -0
  41. package/dist/compile/content-root.js +28 -0
  42. package/dist/compile/content-root.js.map +1 -0
  43. package/dist/compile/limits.d.ts +20 -0
  44. package/dist/compile/limits.d.ts.map +1 -0
  45. package/dist/compile/limits.js +20 -0
  46. package/dist/compile/limits.js.map +1 -0
  47. package/dist/compile/naming.d.ts +92 -0
  48. package/dist/compile/naming.d.ts.map +1 -0
  49. package/dist/compile/naming.js +105 -0
  50. package/dist/compile/naming.js.map +1 -0
  51. package/dist/cost/providers/claude-code.d.ts +2 -0
  52. package/dist/cost/providers/claude-code.d.ts.map +1 -1
  53. package/dist/cost/providers/claude-code.js +34 -12
  54. package/dist/cost/providers/claude-code.js.map +1 -1
  55. package/dist/cost/providers/kiro.d.ts.map +1 -1
  56. package/dist/cost/providers/kiro.js +23 -10
  57. package/dist/cost/providers/kiro.js.map +1 -1
  58. package/dist/cost/providers/provider.d.ts +9 -4
  59. package/dist/cost/providers/provider.d.ts.map +1 -1
  60. package/dist/cost/providers/provider.js.map +1 -1
  61. package/dist/cost/recorder.d.ts +27 -3
  62. package/dist/cost/recorder.d.ts.map +1 -1
  63. package/dist/cost/recorder.js +116 -11
  64. package/dist/cost/recorder.js.map +1 -1
  65. package/dist/cost/sync.js +2 -2
  66. package/dist/cost/sync.js.map +1 -1
  67. package/dist/cost/types.d.ts +20 -0
  68. package/dist/cost/types.d.ts.map +1 -1
  69. package/dist/cost/types.js +2 -0
  70. package/dist/cost/types.js.map +1 -1
  71. package/dist/doctor/migrations/index.d.ts.map +1 -1
  72. package/dist/doctor/migrations/index.js +2 -0
  73. package/dist/doctor/migrations/index.js.map +1 -1
  74. package/dist/doctor/migrations/prune-capture-log.d.ts +11 -0
  75. package/dist/doctor/migrations/prune-capture-log.d.ts.map +1 -0
  76. package/dist/doctor/migrations/prune-capture-log.js +31 -0
  77. package/dist/doctor/migrations/prune-capture-log.js.map +1 -0
  78. package/dist/operational/discover.d.ts +89 -0
  79. package/dist/operational/discover.d.ts.map +1 -0
  80. package/dist/operational/discover.js +132 -0
  81. package/dist/operational/discover.js.map +1 -0
  82. package/dist/operational/emit.d.ts +93 -0
  83. package/dist/operational/emit.d.ts.map +1 -0
  84. package/dist/operational/emit.js +227 -0
  85. package/dist/operational/emit.js.map +1 -0
  86. package/dist/operational/knowledge.d.ts +64 -0
  87. package/dist/operational/knowledge.d.ts.map +1 -0
  88. package/dist/operational/knowledge.js +144 -0
  89. package/dist/operational/knowledge.js.map +1 -0
  90. package/dist/operational/packagers.d.ts +67 -0
  91. package/dist/operational/packagers.d.ts.map +1 -0
  92. package/dist/operational/packagers.js +252 -0
  93. package/dist/operational/packagers.js.map +1 -0
  94. package/dist/operational/redact.d.ts +49 -0
  95. package/dist/operational/redact.d.ts.map +1 -0
  96. package/dist/operational/redact.js +135 -0
  97. package/dist/operational/redact.js.map +1 -0
  98. package/dist/operational/schema.d.ts +80 -0
  99. package/dist/operational/schema.d.ts.map +1 -0
  100. package/dist/operational/schema.js +205 -0
  101. package/dist/operational/schema.js.map +1 -0
  102. package/dist/operational/verify.d.ts +100 -0
  103. package/dist/operational/verify.d.ts.map +1 -0
  104. package/dist/operational/verify.js +175 -0
  105. package/dist/operational/verify.js.map +1 -0
  106. package/package.json +2 -2
@@ -20,24 +20,22 @@
20
20
  *
21
21
  * @module
22
22
  */
23
- // ---------------------------------------------------------------------------
24
- // Constants
25
- // ---------------------------------------------------------------------------
26
- /** Maximum characters allowed per rule file. */
27
- const MAX_FILE_CHARS = 6000;
28
- /** Maximum total characters across all rule files. */
29
- const MAX_TOTAL_CHARS = 12000;
30
- /** Warning threshold — warn when total approaches this percentage of the limit. */
31
- const TOTAL_WARN_THRESHOLD = 0.85;
23
+ import { prefixedRuleFilename, skillSlug as sharedSkillSlug } from '../naming.js';
24
+ import { MAX_FILE_CHARS, MAX_TOTAL_CHARS, TOTAL_WARN_THRESHOLD } from '../limits.js';
32
25
  // ---------------------------------------------------------------------------
33
26
  // Helpers
34
27
  // ---------------------------------------------------------------------------
35
28
  /**
36
29
  * Derive a short filename-safe slug from a skill name.
37
30
  * E.g., "aidlc-implementation" -> "aidlc-implementation"
31
+ *
32
+ * Windsurf's slug is deliberately weaker than the claude-code/kiro directory
33
+ * convention — it neither collapses hyphen runs nor truncates. Shared via
34
+ * naming.ts but kept distinct, because unifying them would change windsurf's
35
+ * output for non-conforming names and AC-33 forbids that here.
38
36
  */
39
37
  function skillSlug(skill) {
40
- return skill.meta.name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
38
+ return sharedSkillSlug(skill.meta.name);
41
39
  }
42
40
  /**
43
41
  * Determine the canonical skill filename for `.aidlc/skills/`.
@@ -214,7 +212,7 @@ export const windsurfAdapter = {
214
212
  totalChars += ruleContent.length;
215
213
  ops.push({
216
214
  kind: 'create',
217
- path: `.windsurf/rules/aidlc-${skillSlug(skill)}.md`,
215
+ path: `.windsurf/rules/${prefixedRuleFilename(skillSlug(skill), '.md')}`,
218
216
  content: ruleContent,
219
217
  });
220
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../../src/compile/adapters/windsurf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../../src/compile/adapters/windsurf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Content-package location.
3
+ *
4
+ * `init.ts` and `update.ts` each defined this privately and identically. The
5
+ * operational-skill emitter is the third caller — it reads the verification-steps
6
+ * source straight from the installed package rather than from a project-level
7
+ * `.aidlc/guidance/` directory (AC-36) — so it moves here rather than being
8
+ * copied a third time.
9
+ *
10
+ * @module
11
+ */
12
+ /**
13
+ * Resolve the content package root directory (where `skills/`, `guidance/`,
14
+ * `templates/`, and `capabilities/` live).
15
+ *
16
+ * Uses module resolution rather than a relative path so it works from a global
17
+ * install, a workspace link, and a linked worktree alike.
18
+ *
19
+ * @returns Absolute path to the `@rasensio/aidlc-content` package root.
20
+ */
21
+ export declare function getContentPackageRoot(): string;
22
+ //# sourceMappingURL=content-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-root.d.ts","sourceRoot":"","sources":["../../src/compile/content-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAI9C"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Content-package location.
3
+ *
4
+ * `init.ts` and `update.ts` each defined this privately and identically. The
5
+ * operational-skill emitter is the third caller — it reads the verification-steps
6
+ * source straight from the installed package rather than from a project-level
7
+ * `.aidlc/guidance/` directory (AC-36) — so it moves here rather than being
8
+ * copied a third time.
9
+ *
10
+ * @module
11
+ */
12
+ import { createRequire } from 'node:module';
13
+ import { dirname } from 'node:path';
14
+ /**
15
+ * Resolve the content package root directory (where `skills/`, `guidance/`,
16
+ * `templates/`, and `capabilities/` live).
17
+ *
18
+ * Uses module resolution rather than a relative path so it works from a global
19
+ * install, a workspace link, and a linked worktree alike.
20
+ *
21
+ * @returns Absolute path to the `@rasensio/aidlc-content` package root.
22
+ */
23
+ export function getContentPackageRoot() {
24
+ const require = createRequire(import.meta.url);
25
+ const contentPkgPath = require.resolve('@rasensio/aidlc-content/package.json');
26
+ return dirname(contentPkgPath);
27
+ }
28
+ //# sourceMappingURL=content-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-root.js","sourceRoot":"","sources":["../../src/compile/content-root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Platform-imposed size budgets for emitted rule files.
3
+ *
4
+ * Extracted from the windsurf adapter so operational packaging can enforce the
5
+ * same per-file ceiling instead of hardcoding a second copy of the number.
6
+ *
7
+ * Known limitation (AC-48): `MAX_TOTAL_CHARS` is enforced *within* a single
8
+ * InstallPlan. Framework and operational emission produce separate plans, so
9
+ * neither sees the other's contribution to the total. The per-file cap is
10
+ * enforced for both; the cross-plan total is not.
11
+ *
12
+ * @module
13
+ */
14
+ /** Windsurf per-rule-file character ceiling. */
15
+ export declare const MAX_FILE_CHARS = 6000;
16
+ /** Windsurf total-rules character ceiling across all rule files. */
17
+ export declare const MAX_TOTAL_CHARS = 12000;
18
+ /** Fraction of a ceiling at which a warning is emitted. */
19
+ export declare const TOTAL_WARN_THRESHOLD = 0.85;
20
+ //# sourceMappingURL=limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/compile/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,oEAAoE;AACpE,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,OAAO,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Platform-imposed size budgets for emitted rule files.
3
+ *
4
+ * Extracted from the windsurf adapter so operational packaging can enforce the
5
+ * same per-file ceiling instead of hardcoding a second copy of the number.
6
+ *
7
+ * Known limitation (AC-48): `MAX_TOTAL_CHARS` is enforced *within* a single
8
+ * InstallPlan. Framework and operational emission produce separate plans, so
9
+ * neither sees the other's contribution to the total. The per-file cap is
10
+ * enforced for both; the cross-plan total is not.
11
+ *
12
+ * @module
13
+ */
14
+ /** Windsurf per-rule-file character ceiling. */
15
+ export const MAX_FILE_CHARS = 6000;
16
+ /** Windsurf total-rules character ceiling across all rule files. */
17
+ export const MAX_TOTAL_CHARS = 12000;
18
+ /** Fraction of a ceiling at which a warning is emitted. */
19
+ export const TOTAL_WARN_THRESHOLD = 0.85;
20
+ //# sourceMappingURL=limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/compile/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Shared skill-naming conventions for platform packaging.
3
+ *
4
+ * Before this module the five adapters each restated their own naming rules in
5
+ * a private helper, so framework and operational packaging could drift apart
6
+ * (AC-34). The helpers were *not* equivalent — they implemented three distinct
7
+ * behaviours — so this module exposes the behaviour space explicitly rather than
8
+ * collapsing them into one function and silently changing adapter output:
9
+ *
10
+ * | Caller | Function | Behaviour |
11
+ * |---------------------|---------------------------|---------------------------------------------|
12
+ * | claude-code, kiro | `normalizeSkillName` | substitute, collapse, trim, prefix, truncate |
13
+ * | windsurf | `skillSlug` | lowercase + substitute only |
14
+ * | cursor, codex | `canonicalSkillFilename` | pass-through |
15
+ *
16
+ * Prefixing is a caller choice, never unconditional (AC-41): framework emission
17
+ * passes `prefix: true`, operational emission passes `prefix: false`. That is
18
+ * what lets operational skills stay out of the reserved `aidlc-` namespace
19
+ * (AC-19) while still reusing these conventions.
20
+ *
21
+ * Requirements: AC-19, AC-33, AC-34, AC-41
22
+ *
23
+ * @module
24
+ */
25
+ /** Maximum length for a platform skill directory or file name. */
26
+ export declare const MAX_SKILL_NAME_LENGTH = 64;
27
+ /** The namespace prefix reserved for framework-owned skills. */
28
+ export declare const FRAMEWORK_PREFIX = "aidlc-";
29
+ /** Options controlling how a skill name becomes a path segment. */
30
+ export interface SkillNameOpts {
31
+ /**
32
+ * Apply the reserved `aidlc-` framework prefix. Always explicit — an
33
+ * unconditional prefix is what made AC-19 and AC-34 contradictory (AC-41).
34
+ */
35
+ prefix: boolean;
36
+ /** Collapse runs of hyphens and trim leading/trailing ones. Default true. */
37
+ collapse?: boolean;
38
+ /** Truncate to this length. Default `MAX_SKILL_NAME_LENGTH`; 0 disables. */
39
+ truncate?: number;
40
+ }
41
+ /**
42
+ * Normalize a skill name into a filesystem-safe path segment.
43
+ *
44
+ * This is the claude-code / kiro directory convention: lowercase, non-charset
45
+ * characters substituted with hyphens, hyphen runs collapsed, ends trimmed,
46
+ * optionally prefixed, then truncated.
47
+ *
48
+ * @param name - Raw skill name.
49
+ * @param opts - Prefix choice plus optional collapse/truncate overrides.
50
+ * @returns A lowercase hyphenated segment safe to use as a directory name.
51
+ */
52
+ export declare function normalizeSkillName(name: string, opts: SkillNameOpts): string;
53
+ /**
54
+ * Windsurf's weaker slug: lowercase and substitute, but neither collapse nor
55
+ * truncate nor prefix.
56
+ *
57
+ * Deliberately not unified with `normalizeSkillName`. The two agree on every
58
+ * name shipped today (all are already lowercase-hyphenated), but they diverge on
59
+ * non-conforming input, and changing windsurf's output would violate AC-33.
60
+ * `test/golden-adapters-refactor.test.ts` pins the difference.
61
+ *
62
+ * @param name - Raw skill name.
63
+ * @returns A lowercase slug with non-charset characters substituted.
64
+ */
65
+ export declare function skillSlug(name: string): string;
66
+ /**
67
+ * The canonical `.aidlc/skills/` filename convention: the skill name verbatim
68
+ * plus `.md`.
69
+ *
70
+ * Used by claude-code, kiro, cursor, and codex. Windsurf routes its canonical
71
+ * filename through `skillSlug` instead — a pre-existing inconsistency preserved
72
+ * here rather than fixed, per AC-33.
73
+ *
74
+ * @param name - Raw skill name.
75
+ * @returns `<name>.md`.
76
+ */
77
+ export declare function canonicalSkillFilename(name: string): string;
78
+ /**
79
+ * Build a platform rule/file name carrying the framework prefix.
80
+ *
81
+ * Several adapters built this prefix inline in a template literal
82
+ * (`.cursor/rules/aidlc-${name}.mdc`), which meant re-pointing the helpers alone
83
+ * would have left the convention restated per platform — the drift AC-34 exists
84
+ * to prevent. Note this reproduces the existing double-prefix for framework
85
+ * skills (`aidlc-aidlc-overview`), which AC-33 requires us to preserve.
86
+ *
87
+ * @param name - Raw skill name (or slug).
88
+ * @param ext - File extension including the dot, e.g. `.mdc`.
89
+ * @returns `aidlc-<name><ext>`.
90
+ */
91
+ export declare function prefixedRuleFilename(name: string, ext: string): string;
92
+ //# sourceMappingURL=naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/compile/naming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAQxC,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAEzC,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAmB5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Shared skill-naming conventions for platform packaging.
3
+ *
4
+ * Before this module the five adapters each restated their own naming rules in
5
+ * a private helper, so framework and operational packaging could drift apart
6
+ * (AC-34). The helpers were *not* equivalent — they implemented three distinct
7
+ * behaviours — so this module exposes the behaviour space explicitly rather than
8
+ * collapsing them into one function and silently changing adapter output:
9
+ *
10
+ * | Caller | Function | Behaviour |
11
+ * |---------------------|---------------------------|---------------------------------------------|
12
+ * | claude-code, kiro | `normalizeSkillName` | substitute, collapse, trim, prefix, truncate |
13
+ * | windsurf | `skillSlug` | lowercase + substitute only |
14
+ * | cursor, codex | `canonicalSkillFilename` | pass-through |
15
+ *
16
+ * Prefixing is a caller choice, never unconditional (AC-41): framework emission
17
+ * passes `prefix: true`, operational emission passes `prefix: false`. That is
18
+ * what lets operational skills stay out of the reserved `aidlc-` namespace
19
+ * (AC-19) while still reusing these conventions.
20
+ *
21
+ * Requirements: AC-19, AC-33, AC-34, AC-41
22
+ *
23
+ * @module
24
+ */
25
+ /** Maximum length for a platform skill directory or file name. */
26
+ export const MAX_SKILL_NAME_LENGTH = 64;
27
+ /**
28
+ * The one skill that never takes the `aidlc-` prefix: the bare entry point.
29
+ * Both prefixing adapters exempt it, so the shared helper must too.
30
+ */
31
+ const BARE_ENTRY_POINT = 'aidlc';
32
+ /** The namespace prefix reserved for framework-owned skills. */
33
+ export const FRAMEWORK_PREFIX = 'aidlc-';
34
+ /**
35
+ * Normalize a skill name into a filesystem-safe path segment.
36
+ *
37
+ * This is the claude-code / kiro directory convention: lowercase, non-charset
38
+ * characters substituted with hyphens, hyphen runs collapsed, ends trimmed,
39
+ * optionally prefixed, then truncated.
40
+ *
41
+ * @param name - Raw skill name.
42
+ * @param opts - Prefix choice plus optional collapse/truncate overrides.
43
+ * @returns A lowercase hyphenated segment safe to use as a directory name.
44
+ */
45
+ export function normalizeSkillName(name, opts) {
46
+ const collapse = opts.collapse ?? true;
47
+ const truncate = opts.truncate ?? MAX_SKILL_NAME_LENGTH;
48
+ let normalized = name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
49
+ if (collapse) {
50
+ normalized = normalized.replace(/-+/g, '-').replace(/^-|-$/g, '');
51
+ }
52
+ if (opts.prefix && normalized !== BARE_ENTRY_POINT && !normalized.startsWith(FRAMEWORK_PREFIX)) {
53
+ normalized = `${FRAMEWORK_PREFIX}${normalized}`;
54
+ }
55
+ if (truncate > 0 && normalized.length > truncate) {
56
+ normalized = normalized.slice(0, truncate);
57
+ }
58
+ return normalized;
59
+ }
60
+ /**
61
+ * Windsurf's weaker slug: lowercase and substitute, but neither collapse nor
62
+ * truncate nor prefix.
63
+ *
64
+ * Deliberately not unified with `normalizeSkillName`. The two agree on every
65
+ * name shipped today (all are already lowercase-hyphenated), but they diverge on
66
+ * non-conforming input, and changing windsurf's output would violate AC-33.
67
+ * `test/golden-adapters-refactor.test.ts` pins the difference.
68
+ *
69
+ * @param name - Raw skill name.
70
+ * @returns A lowercase slug with non-charset characters substituted.
71
+ */
72
+ export function skillSlug(name) {
73
+ return name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
74
+ }
75
+ /**
76
+ * The canonical `.aidlc/skills/` filename convention: the skill name verbatim
77
+ * plus `.md`.
78
+ *
79
+ * Used by claude-code, kiro, cursor, and codex. Windsurf routes its canonical
80
+ * filename through `skillSlug` instead — a pre-existing inconsistency preserved
81
+ * here rather than fixed, per AC-33.
82
+ *
83
+ * @param name - Raw skill name.
84
+ * @returns `<name>.md`.
85
+ */
86
+ export function canonicalSkillFilename(name) {
87
+ return `${name}.md`;
88
+ }
89
+ /**
90
+ * Build a platform rule/file name carrying the framework prefix.
91
+ *
92
+ * Several adapters built this prefix inline in a template literal
93
+ * (`.cursor/rules/aidlc-${name}.mdc`), which meant re-pointing the helpers alone
94
+ * would have left the convention restated per platform — the drift AC-34 exists
95
+ * to prevent. Note this reproduces the existing double-prefix for framework
96
+ * skills (`aidlc-aidlc-overview`), which AC-33 requires us to preserve.
97
+ *
98
+ * @param name - Raw skill name (or slug).
99
+ * @param ext - File extension including the dot, e.g. `.mdc`.
100
+ * @returns `aidlc-<name><ext>`.
101
+ */
102
+ export function prefixedRuleFilename(name, ext) {
103
+ return `${FRAMEWORK_PREFIX}${name}${ext}`;
104
+ }
105
+ //# sourceMappingURL=naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/compile/naming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC;;;GAGG;AACH,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAezC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,IAAmB;IAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,qBAAqB,CAAC;IAExD,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAEhE,IAAI,QAAQ,EAAE,CAAC;QACb,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,KAAK,gBAAgB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/F,UAAU,GAAG,GAAG,gBAAgB,GAAG,UAAU,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QACjD,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,GAAG,IAAI,KAAK,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,GAAW;IAC5D,OAAO,GAAG,gBAAgB,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;AAC5C,CAAC"}
@@ -16,5 +16,7 @@
16
16
  import type { CostProvider, ProviderEnv } from './provider.js';
17
17
  /** Root directory that transcripts must live under (FR3.9). */
18
18
  export declare function transcriptRoot(env: ProviderEnv): string;
19
+ /** Is `p` the directory `root` or something beneath it? Purely lexical. */
20
+ export declare function isWithin(root: string, p: string): boolean;
19
21
  export declare const claudeCodeProvider: CostProvider;
20
22
  //# sourceMappingURL=claude-code.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/cost/providers/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/D,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAIvD;AAMD,eAAO,MAAM,kBAAkB,EAAE,YAmFhC,CAAC"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/cost/providers/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/D,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAIvD;AAMD,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,eAAO,MAAM,kBAAkB,EAAE,YAqGhC,CAAC"}
@@ -27,6 +27,10 @@ export function transcriptRoot(env) {
27
27
  function isCount(v) {
28
28
  return typeof v === 'number' && Number.isFinite(v) && v >= 0;
29
29
  }
30
+ /** Is `p` the directory `root` or something beneath it? Purely lexical. */
31
+ export function isWithin(root, p) {
32
+ return p === root || p.startsWith(root + sep);
33
+ }
30
34
  export const claudeCodeProvider = {
31
35
  name: 'claude-code',
32
36
  detect(env) {
@@ -34,28 +38,46 @@ export const claudeCodeProvider = {
34
38
  },
35
39
  resolveSource(input, env) {
36
40
  if (!SESSION_ID_RE.test(input.session_id))
37
- return null;
41
+ return { ok: false, reason: 'invalid-input' };
38
42
  if (!input.transcript_path)
39
- return null;
40
- let real;
43
+ return { ok: false, reason: 'invalid-input' };
44
+ const requested = resolve(input.transcript_path);
45
+ if (!requested.endsWith('.jsonl'))
46
+ return { ok: false, reason: 'invalid-input' };
47
+ // Lexical containment first, against both the raw and the resolved root
48
+ // (the home dir may itself be a symlink). Deciding this before any disk
49
+ // access is what keeps `source-missing` from reporting on paths outside the
50
+ // root: out of bounds is `invalid-input` whether or not it exists, so the
51
+ // benign code is never an existence oracle (FR3.9, NFR-3).
52
+ const rawRoot = transcriptRoot(env);
53
+ let realRoot = null;
41
54
  try {
42
- real = realpathSync(resolve(input.transcript_path));
55
+ realRoot = realpathSync(rawRoot);
43
56
  }
44
57
  catch {
45
- return null;
58
+ realRoot = null;
46
59
  }
47
- let root;
60
+ const inBounds = isWithin(rawRoot, requested) || (realRoot !== null && isWithin(realRoot, requested));
61
+ if (!inBounds)
62
+ return { ok: false, reason: 'invalid-input' };
63
+ // In bounds, but the platform root isn't on disk: nothing to capture here.
64
+ if (realRoot === null)
65
+ return { ok: false, reason: 'source-missing' };
66
+ let real;
48
67
  try {
49
- root = realpathSync(transcriptRoot(env));
68
+ real = realpathSync(requested);
50
69
  }
51
70
  catch {
52
- return null;
71
+ // In bounds and well-formed, but not on disk: the session produced no
72
+ // transcript. Ordinary session churn, not a failure (AC-3).
73
+ return { ok: false, reason: 'source-missing' };
53
74
  }
54
- if (real !== root && !real.startsWith(root + sep))
55
- return null;
75
+ // Re-check after resolution: a symlink inside the root may point out of it.
76
+ if (!isWithin(realRoot, real))
77
+ return { ok: false, reason: 'invalid-input' };
56
78
  if (!real.endsWith('.jsonl'))
57
- return null;
58
- return { provider: 'claude-code', path: real };
79
+ return { ok: false, reason: 'invalid-input' };
80
+ return { ok: true, source: { provider: 'claude-code', path: real } };
59
81
  },
60
82
  async extract(source, since) {
61
83
  const segments = [];
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/cost/providers/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/cost/providers/claude-code.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../../src/cost/providers/kiro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEzD;AA4ED,eAAO,MAAM,YAAY,EAAE,YAoD1B,CAAC"}
1
+ {"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../../src/cost/providers/kiro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG/D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEzD;AA4ED,eAAO,MAAM,YAAY,EAAE,YA+D1B,CAAC"}
@@ -15,8 +15,9 @@
15
15
  */
16
16
  import { readFileSync, existsSync, realpathSync } from 'node:fs';
17
17
  import { homedir } from 'node:os';
18
- import { join, resolve, sep } from 'node:path';
18
+ import { join, resolve } from 'node:path';
19
19
  import { SESSION_ID_RE } from '../types.js';
20
+ import { isWithin } from './claude-code.js';
20
21
  export function kiroSessionsRoot(env) {
21
22
  return join(env.home ?? homedir(), '.kiro', 'sessions');
22
23
  }
@@ -100,19 +101,30 @@ export const kiroProvider = {
100
101
  },
101
102
  resolveSource(input, env) {
102
103
  if (!SESSION_ID_RE.test(input.session_id))
103
- return null;
104
+ return { ok: false, reason: 'invalid-input' };
104
105
  const root = kiroSessionsRoot(env);
105
- let realRoot;
106
+ let realRoot = null;
106
107
  try {
107
108
  realRoot = realpathSync(root);
108
109
  }
109
110
  catch {
110
- return null;
111
+ realRoot = null;
111
112
  }
113
+ // Containment before anything else, for the same reason as claude-code: an
114
+ // out-of-bounds path must read as a rejection even when kiro isn't present.
115
+ if (input.transcript_path !== undefined) {
116
+ const requested = resolve(input.transcript_path);
117
+ const inBounds = isWithin(root, requested) || (realRoot !== null && isWithin(realRoot, requested));
118
+ if (!inBounds)
119
+ return { ok: false, reason: 'invalid-input' };
120
+ }
121
+ // Kiro isn't installed here — benign, nothing to capture.
122
+ if (realRoot === null)
123
+ return { ok: false, reason: 'source-missing' };
112
124
  // CLI shape first: sessions/cli/<id>.json
113
125
  const cliPath = join(realRoot, 'cli', `${input.session_id}.json`);
114
126
  if (existsSync(cliPath)) {
115
- return { provider: 'kiro', path: realpathSync(cliPath) };
127
+ return { ok: true, source: { provider: 'kiro', path: realpathSync(cliPath) } };
116
128
  }
117
129
  // IDE shape: locate sess_<id> under a workspace-hash directory whose
118
130
  // session.json workspacePaths includes the project root.
@@ -122,13 +134,14 @@ export const kiroProvider = {
122
134
  real = realpathSync(resolve(input.transcript_path));
123
135
  }
124
136
  catch {
125
- return null;
137
+ return { ok: false, reason: 'source-missing' };
126
138
  }
127
- if (real !== realRoot && !real.startsWith(realRoot + sep))
128
- return null;
129
- return { provider: 'kiro', path: real };
139
+ if (!isWithin(realRoot, real))
140
+ return { ok: false, reason: 'invalid-input' };
141
+ return { ok: true, source: { provider: 'kiro', path: real } };
130
142
  }
131
- return null;
143
+ // No CLI file and no IDE path: this session left no records behind.
144
+ return { ok: false, reason: 'source-missing' };
132
145
  },
133
146
  async extract(source, since) {
134
147
  const events = source.path.endsWith('.json')
@@ -1 +1 @@
1
- {"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../../src/cost/providers/kiro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../../src/cost/providers/kiro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,UAAU,gBAAgB,CAAC,GAAgB;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,OAAO,CAAC,CAAU;IACzB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAQD,yEAAyE;AACzE,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAA4B,CAAC;YACvD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;gBAAE,SAAS;YAC7C,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1F,CAAC,CAAC,KAAK,CAAC,SAAS;gBACjB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,mBAAmB,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBAAE,SAAS;YACxC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,CAA4B,CAAC;gBACzC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gEAAgE;AAChE,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,IAAI,IAA6B,CAAC;IAClC,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAA4B,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAoD,CAAC;IACxE,MAAM,IAAI,GAAG,KAAK,EAAE,qBAA4D,CAAC;IACjF,MAAM,KAAK,GAAG,IAAI,EAAE,mBAAmB,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,IAA+B,CAAC;QAC1C,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC,CAAC,aAAa;YACjB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,CAA4B,CAAC;YACzC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,MAAM;IAEZ,MAAM,CAAC,GAAgB;QACrB,OAAO,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,KAAkB,EAAE,GAAgB;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QACzF,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAC/D,CAAC;QACD,0DAA0D;QAC1D,IAAI,QAAQ,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAEtE,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,UAAU,OAAO,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACjF,CAAC;QAED,qEAAqE;QACrE,yDAAyD;QACzD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,IAAY,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YACjD,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;YAC7E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAChE,CAAC;QACD,oEAAoE;QACpE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAiB,EAAE,KAAoB;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC1C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * Design: design.md §3
10
10
  */
11
- import type { RecordInput, SourceRef, UsageSegment } from '../types.js';
11
+ import type { RecordInput, ResolveResult, SourceRef, UsageSegment } from '../types.js';
12
12
  export interface ProviderEnv {
13
13
  projectRoot: string;
14
14
  /** Home directory override for tests. */
@@ -20,10 +20,15 @@ export interface CostProvider {
20
20
  detect(env: ProviderEnv): boolean;
21
21
  /**
22
22
  * Validate hook input and resolve the usage-record source (FR3.9).
23
- * Returns null (with a logged reason) when input is invalid or the
24
- * source is outside the platform's known root.
23
+ *
24
+ * Returns `{ok: false, reason}` rather than a bare null so the recorder can
25
+ * tell a benign miss (`source-missing`: the session simply wrote no records)
26
+ * from a rejection (`invalid-input`: malformed, or outside the platform's
27
+ * known root). Containment is checked lexically before touching the disk, so
28
+ * a non-existent path outside the root reports `invalid-input` and never
29
+ * leaks whether it exists.
25
30
  */
26
- resolveSource(input: RecordInput, env: ProviderEnv): SourceRef | null;
31
+ resolveSource(input: RecordInput, env: ProviderEnv): ResolveResult;
27
32
  /**
28
33
  * Extract usage segments after `since` (a cursor previously returned in
29
34
  * a segment). Streaming and fail-soft: malformed records are skipped.