@rasensio/aidlc 1.2.1 → 1.4.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 (120) hide show
  1. package/dist/cli.js +4 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/claim.d.ts +15 -0
  4. package/dist/commands/claim.d.ts.map +1 -0
  5. package/dist/commands/claim.js +122 -0
  6. package/dist/commands/claim.js.map +1 -0
  7. package/dist/commands/cost.d.ts +12 -0
  8. package/dist/commands/cost.d.ts.map +1 -0
  9. package/dist/commands/cost.js +409 -0
  10. package/dist/commands/cost.js.map +1 -0
  11. package/dist/commands/gate.d.ts.map +1 -1
  12. package/dist/commands/gate.js +17 -0
  13. package/dist/commands/gate.js.map +1 -1
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +38 -2
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/status.d.ts.map +1 -1
  18. package/dist/commands/status.js +59 -2
  19. package/dist/commands/status.js.map +1 -1
  20. package/dist/commands/transition.d.ts.map +1 -1
  21. package/dist/commands/transition.js +30 -0
  22. package/dist/commands/transition.js.map +1 -1
  23. package/dist/core/gate.d.ts +7 -0
  24. package/dist/core/gate.d.ts.map +1 -1
  25. package/dist/core/gate.js.map +1 -1
  26. package/dist/core/types.d.ts +18 -1
  27. package/dist/core/types.d.ts.map +1 -1
  28. package/dist/cost/config.d.ts +8 -0
  29. package/dist/cost/config.d.ts.map +1 -0
  30. package/dist/cost/config.js +37 -0
  31. package/dist/cost/config.js.map +1 -0
  32. package/dist/cost/hooks/claude-code.d.ts +29 -0
  33. package/dist/cost/hooks/claude-code.d.ts.map +1 -0
  34. package/dist/cost/hooks/claude-code.js +101 -0
  35. package/dist/cost/hooks/claude-code.js.map +1 -0
  36. package/dist/cost/hooks/kiro.d.ts +17 -0
  37. package/dist/cost/hooks/kiro.d.ts.map +1 -0
  38. package/dist/cost/hooks/kiro.js +66 -0
  39. package/dist/cost/hooks/kiro.js.map +1 -0
  40. package/dist/cost/ledger.d.ts +70 -0
  41. package/dist/cost/ledger.d.ts.map +1 -0
  42. package/dist/cost/ledger.js +314 -0
  43. package/dist/cost/ledger.js.map +1 -0
  44. package/dist/cost/providers/claude-code.d.ts +20 -0
  45. package/dist/cost/providers/claude-code.d.ts.map +1 -0
  46. package/dist/cost/providers/claude-code.js +116 -0
  47. package/dist/cost/providers/claude-code.js.map +1 -0
  48. package/dist/cost/providers/kiro.d.ts +19 -0
  49. package/dist/cost/providers/kiro.d.ts.map +1 -0
  50. package/dist/cost/providers/kiro.js +147 -0
  51. package/dist/cost/providers/kiro.js.map +1 -0
  52. package/dist/cost/providers/provider.d.ts +36 -0
  53. package/dist/cost/providers/provider.d.ts.map +1 -0
  54. package/dist/cost/providers/provider.js +21 -0
  55. package/dist/cost/providers/provider.js.map +1 -0
  56. package/dist/cost/rates-bundled.d.ts +11 -0
  57. package/dist/cost/rates-bundled.d.ts.map +1 -0
  58. package/dist/cost/rates-bundled.js +23 -0
  59. package/dist/cost/rates-bundled.js.map +1 -0
  60. package/dist/cost/rates.d.ts +42 -0
  61. package/dist/cost/rates.d.ts.map +1 -0
  62. package/dist/cost/rates.js +190 -0
  63. package/dist/cost/rates.js.map +1 -0
  64. package/dist/cost/recorder.d.ts +57 -0
  65. package/dist/cost/recorder.d.ts.map +1 -0
  66. package/dist/cost/recorder.js +339 -0
  67. package/dist/cost/recorder.js.map +1 -0
  68. package/dist/cost/report.d.ts +44 -0
  69. package/dist/cost/report.d.ts.map +1 -0
  70. package/dist/cost/report.js +164 -0
  71. package/dist/cost/report.js.map +1 -0
  72. package/dist/cost/sessions.d.ts +40 -0
  73. package/dist/cost/sessions.d.ts.map +1 -0
  74. package/dist/cost/sessions.js +200 -0
  75. package/dist/cost/sessions.js.map +1 -0
  76. package/dist/cost/sync.d.ts +24 -0
  77. package/dist/cost/sync.d.ts.map +1 -0
  78. package/dist/cost/sync.js +191 -0
  79. package/dist/cost/sync.js.map +1 -0
  80. package/dist/cost/types.d.ts +116 -0
  81. package/dist/cost/types.d.ts.map +1 -0
  82. package/dist/cost/types.js +13 -0
  83. package/dist/cost/types.js.map +1 -0
  84. package/dist/setup/setup-compute.d.ts +6 -0
  85. package/dist/setup/setup-compute.d.ts.map +1 -1
  86. package/dist/setup/setup-compute.js +3 -0
  87. package/dist/setup/setup-compute.js.map +1 -1
  88. package/dist/traceability/cache.d.ts +21 -0
  89. package/dist/traceability/cache.d.ts.map +1 -0
  90. package/dist/traceability/cache.js +106 -0
  91. package/dist/traceability/cache.js.map +1 -0
  92. package/dist/traceability/coverage-block.d.ts +21 -0
  93. package/dist/traceability/coverage-block.d.ts.map +1 -0
  94. package/dist/traceability/coverage-block.js +41 -0
  95. package/dist/traceability/coverage-block.js.map +1 -0
  96. package/dist/traceability/gate-criterion.d.ts +34 -0
  97. package/dist/traceability/gate-criterion.d.ts.map +1 -0
  98. package/dist/traceability/gate-criterion.js +128 -0
  99. package/dist/traceability/gate-criterion.js.map +1 -0
  100. package/dist/traceability/matrix.d.ts +35 -0
  101. package/dist/traceability/matrix.d.ts.map +1 -0
  102. package/dist/traceability/matrix.js +93 -0
  103. package/dist/traceability/matrix.js.map +1 -0
  104. package/dist/traceability/parser.d.ts +27 -0
  105. package/dist/traceability/parser.d.ts.map +1 -0
  106. package/dist/traceability/parser.js +101 -0
  107. package/dist/traceability/parser.js.map +1 -0
  108. package/dist/traceability/scanner.d.ts +62 -0
  109. package/dist/traceability/scanner.d.ts.map +1 -0
  110. package/dist/traceability/scanner.js +198 -0
  111. package/dist/traceability/scanner.js.map +1 -0
  112. package/dist/traceability/types.d.ts +77 -0
  113. package/dist/traceability/types.d.ts.map +1 -0
  114. package/dist/traceability/types.js +8 -0
  115. package/dist/traceability/types.js.map +1 -0
  116. package/package.json +3 -5
  117. package/dist/commands/setup.d.ts +0 -24
  118. package/dist/commands/setup.d.ts.map +0 -1
  119. package/dist/commands/setup.js +0 -262
  120. package/dist/commands/setup.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/cost/ledger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * claude-code cost provider: transcript JSONL parsing since a cursor.
3
+ *
4
+ * Transcripts live at ~/.claude/projects/<project-slug>/<session-id>.jsonl
5
+ * (CLAUDE_CONFIG_DIR respected). The entry format is internal to Claude Code
6
+ * and may change between versions — extraction is fail-soft: anything that
7
+ * doesn't match the expected shape is skipped and counted, never fatal (D1).
8
+ *
9
+ * Cursor: last processed entry uuid. Resume/compaction append to the same
10
+ * file, so uuid-based resumption is safe; if the cursor uuid is absent
11
+ * (e.g. /branch copied the file), extraction falls back to the beginning
12
+ * and the recorder's coverage dedup prevents double counting.
13
+ *
14
+ * Design: design.md §3
15
+ */
16
+ import type { CostProvider, ProviderEnv } from './provider.js';
17
+ /** Root directory that transcripts must live under (FR3.9). */
18
+ export declare function transcriptRoot(env: ProviderEnv): string;
19
+ export declare const claudeCodeProvider: CostProvider;
20
+ //# sourceMappingURL=claude-code.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * claude-code cost provider: transcript JSONL parsing since a cursor.
3
+ *
4
+ * Transcripts live at ~/.claude/projects/<project-slug>/<session-id>.jsonl
5
+ * (CLAUDE_CONFIG_DIR respected). The entry format is internal to Claude Code
6
+ * and may change between versions — extraction is fail-soft: anything that
7
+ * doesn't match the expected shape is skipped and counted, never fatal (D1).
8
+ *
9
+ * Cursor: last processed entry uuid. Resume/compaction append to the same
10
+ * file, so uuid-based resumption is safe; if the cursor uuid is absent
11
+ * (e.g. /branch copied the file), extraction falls back to the beginning
12
+ * and the recorder's coverage dedup prevents double counting.
13
+ *
14
+ * Design: design.md §3
15
+ */
16
+ import { createReadStream, existsSync, realpathSync } from 'node:fs';
17
+ import { createInterface } from 'node:readline';
18
+ import { homedir } from 'node:os';
19
+ import { join, resolve, sep } from 'node:path';
20
+ import { SESSION_ID_RE, MODEL_ID_RE } from '../types.js';
21
+ /** Root directory that transcripts must live under (FR3.9). */
22
+ export function transcriptRoot(env) {
23
+ const configDir = process.env.CLAUDE_CONFIG_DIR;
24
+ const base = configDir && configDir.trim() !== '' ? configDir : join(env.home ?? homedir(), '.claude');
25
+ return join(base, 'projects');
26
+ }
27
+ function isCount(v) {
28
+ return typeof v === 'number' && Number.isFinite(v) && v >= 0;
29
+ }
30
+ export const claudeCodeProvider = {
31
+ name: 'claude-code',
32
+ detect(env) {
33
+ return existsSync(transcriptRoot(env));
34
+ },
35
+ resolveSource(input, env) {
36
+ if (!SESSION_ID_RE.test(input.session_id))
37
+ return null;
38
+ if (!input.transcript_path)
39
+ return null;
40
+ let real;
41
+ try {
42
+ real = realpathSync(resolve(input.transcript_path));
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ let root;
48
+ try {
49
+ root = realpathSync(transcriptRoot(env));
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ if (real !== root && !real.startsWith(root + sep))
55
+ return null;
56
+ if (!real.endsWith('.jsonl'))
57
+ return null;
58
+ return { provider: 'claude-code', path: real };
59
+ },
60
+ async extract(source, since) {
61
+ const segments = [];
62
+ const rl = createInterface({
63
+ input: createReadStream(source.path, { encoding: 'utf8' }),
64
+ crlfDelay: Infinity,
65
+ });
66
+ // When a cursor is set, skip lines until we pass the entry carrying it.
67
+ // Cursor uuid absent from the file → seenCursor stays false and we emit
68
+ // everything; the recorder's coverage dedup handles the overlap.
69
+ let skipping = since !== null;
70
+ const all = [];
71
+ for await (const line of rl) {
72
+ const t = line.trim();
73
+ if (t === '')
74
+ continue;
75
+ let entry;
76
+ try {
77
+ entry = JSON.parse(t);
78
+ }
79
+ catch {
80
+ continue;
81
+ }
82
+ const uuid = typeof entry.uuid === 'string' ? entry.uuid : null;
83
+ const message = entry.message;
84
+ const usage = message?.usage;
85
+ const model = typeof message?.model === 'string' ? message.model : null;
86
+ const at = typeof entry.timestamp === 'string' && !Number.isNaN(Date.parse(entry.timestamp))
87
+ ? entry.timestamp
88
+ : null;
89
+ if (usage && model && MODEL_ID_RE.test(model) && at && uuid) {
90
+ const units = {
91
+ kind: 'tokens',
92
+ model,
93
+ input_tokens: isCount(usage.input_tokens) ? usage.input_tokens : 0,
94
+ output_tokens: isCount(usage.output_tokens) ? usage.output_tokens : 0,
95
+ cache_read_tokens: isCount(usage.cache_read_input_tokens) ? usage.cache_read_input_tokens : 0,
96
+ cache_write_tokens: isCount(usage.cache_creation_input_tokens) ? usage.cache_creation_input_tokens : 0,
97
+ };
98
+ const seg = { at, units, cursor: uuid };
99
+ if (skipping)
100
+ all.push(seg);
101
+ else
102
+ segments.push(seg);
103
+ }
104
+ if (skipping && uuid === since) {
105
+ // Found the cursor: everything collected so far precedes it — drop it.
106
+ skipping = false;
107
+ all.length = 0;
108
+ }
109
+ }
110
+ // Cursor never found: fall back to emitting everything (recorder dedups).
111
+ if (skipping)
112
+ return all;
113
+ return segments;
114
+ },
115
+ };
116
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/cost/providers/claude-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * kiro cost provider: per-turn credit usage from local session files.
3
+ *
4
+ * Two on-disk shapes (both undocumented — fail-soft everywhere, D2):
5
+ * - IDE: ~/.kiro/sessions/<workspace-hash>/sess_<uuid>/messages.jsonl with
6
+ * usage_summary events: promptTurnSummaries[].usage (credits, fractional).
7
+ * session.json alongside carries workspacePaths for project matching.
8
+ * - CLI: ~/.kiro/sessions/cli/<uuid>.json with
9
+ * session_state.conversation_metadata.user_turn_metadatas[].metering_usage.
10
+ *
11
+ * Cursor: "<n>" — count of usage events already consumed from the file
12
+ * (files are append-only per session).
13
+ *
14
+ * Design: design.md §3, D2
15
+ */
16
+ import type { CostProvider, ProviderEnv } from './provider.js';
17
+ export declare function kiroSessionsRoot(env: ProviderEnv): string;
18
+ export declare const kiroProvider: CostProvider;
19
+ //# sourceMappingURL=kiro.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * kiro cost provider: per-turn credit usage from local session files.
3
+ *
4
+ * Two on-disk shapes (both undocumented — fail-soft everywhere, D2):
5
+ * - IDE: ~/.kiro/sessions/<workspace-hash>/sess_<uuid>/messages.jsonl with
6
+ * usage_summary events: promptTurnSummaries[].usage (credits, fractional).
7
+ * session.json alongside carries workspacePaths for project matching.
8
+ * - CLI: ~/.kiro/sessions/cli/<uuid>.json with
9
+ * session_state.conversation_metadata.user_turn_metadatas[].metering_usage.
10
+ *
11
+ * Cursor: "<n>" — count of usage events already consumed from the file
12
+ * (files are append-only per session).
13
+ *
14
+ * Design: design.md §3, D2
15
+ */
16
+ import { readFileSync, existsSync, realpathSync } from 'node:fs';
17
+ import { homedir } from 'node:os';
18
+ import { join, resolve, sep } from 'node:path';
19
+ import { SESSION_ID_RE } from '../types.js';
20
+ export function kiroSessionsRoot(env) {
21
+ return join(env.home ?? homedir(), '.kiro', 'sessions');
22
+ }
23
+ function isCount(v) {
24
+ return typeof v === 'number' && Number.isFinite(v) && v >= 0;
25
+ }
26
+ /** Parse IDE messages.jsonl usage_summary events. Fail-soft per line. */
27
+ function parseIdeUsage(path) {
28
+ const events = [];
29
+ let raw;
30
+ try {
31
+ raw = readFileSync(path, 'utf8');
32
+ }
33
+ catch {
34
+ return events;
35
+ }
36
+ for (const line of raw.split('\n')) {
37
+ const t = line.trim();
38
+ if (t === '')
39
+ continue;
40
+ try {
41
+ const entry = JSON.parse(t);
42
+ if (entry.type !== 'usage_summary')
43
+ continue;
44
+ const at = typeof entry.timestamp === 'string' && !Number.isNaN(Date.parse(entry.timestamp))
45
+ ? entry.timestamp
46
+ : new Date(0).toISOString();
47
+ const summaries = entry.promptTurnSummaries;
48
+ if (!Array.isArray(summaries))
49
+ continue;
50
+ for (const s of summaries) {
51
+ const rec = s;
52
+ if (rec.unit === 'credit' && isCount(rec.usage)) {
53
+ events.push({ at, credits: rec.usage, model: null });
54
+ }
55
+ }
56
+ }
57
+ catch {
58
+ continue;
59
+ }
60
+ }
61
+ return events;
62
+ }
63
+ /** Parse CLI session JSON metering_usage entries. Fail-soft. */
64
+ function parseCliUsage(path) {
65
+ const events = [];
66
+ let root;
67
+ try {
68
+ root = JSON.parse(readFileSync(path, 'utf8'));
69
+ }
70
+ catch {
71
+ return events;
72
+ }
73
+ const state = root.session_state;
74
+ const meta = state?.conversation_metadata;
75
+ const turns = meta?.user_turn_metadatas;
76
+ if (!Array.isArray(turns))
77
+ return events;
78
+ for (const turn of turns) {
79
+ const t = turn;
80
+ const at = typeof t.end_timestamp === 'string' && !Number.isNaN(Date.parse(t.end_timestamp))
81
+ ? t.end_timestamp
82
+ : new Date(0).toISOString();
83
+ const model = typeof t.model === 'string' ? t.model : null;
84
+ const metering = t.metering_usage;
85
+ if (!Array.isArray(metering))
86
+ continue;
87
+ for (const m of metering) {
88
+ const rec = m;
89
+ if (rec.unit === 'credit' && isCount(rec.value)) {
90
+ events.push({ at, credits: rec.value, model });
91
+ }
92
+ }
93
+ }
94
+ return events;
95
+ }
96
+ export const kiroProvider = {
97
+ name: 'kiro',
98
+ detect(env) {
99
+ return existsSync(kiroSessionsRoot(env));
100
+ },
101
+ resolveSource(input, env) {
102
+ if (!SESSION_ID_RE.test(input.session_id))
103
+ return null;
104
+ const root = kiroSessionsRoot(env);
105
+ let realRoot;
106
+ try {
107
+ realRoot = realpathSync(root);
108
+ }
109
+ catch {
110
+ return null;
111
+ }
112
+ // CLI shape first: sessions/cli/<id>.json
113
+ const cliPath = join(realRoot, 'cli', `${input.session_id}.json`);
114
+ if (existsSync(cliPath)) {
115
+ return { provider: 'kiro', path: realpathSync(cliPath) };
116
+ }
117
+ // IDE shape: locate sess_<id> under a workspace-hash directory whose
118
+ // session.json workspacePaths includes the project root.
119
+ if (input.transcript_path) {
120
+ let real;
121
+ try {
122
+ real = realpathSync(resolve(input.transcript_path));
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ if (real !== realRoot && !real.startsWith(realRoot + sep))
128
+ return null;
129
+ return { provider: 'kiro', path: real };
130
+ }
131
+ return null;
132
+ },
133
+ async extract(source, since) {
134
+ const events = source.path.endsWith('.json')
135
+ ? parseCliUsage(source.path)
136
+ : parseIdeUsage(source.path);
137
+ const consumed = since !== null && /^\d+$/.test(since) ? Number(since) : 0;
138
+ const segments = [];
139
+ for (let i = consumed; i < events.length; i++) {
140
+ const e = events[i];
141
+ const units = { kind: 'credits', credits: e.credits, model: e.model };
142
+ segments.push({ at: e.at, units, cursor: String(i + 1) });
143
+ }
144
+ return segments;
145
+ },
146
+ };
147
+ //# sourceMappingURL=kiro.js.map
@@ -0,0 +1 @@
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,GAAG,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,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,IAAI,CAAC;QACvD,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;QAED,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,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,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,IAAI,CAAC;YACd,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Cost provider seam (FR3.1).
3
+ *
4
+ * A provider knows how to (a) detect its platform, (b) locate and validate
5
+ * its usage records for a session, and (c) extract usage segments since a
6
+ * cursor. Providers never touch ledgers or instances — attribution belongs
7
+ * to the recorder.
8
+ *
9
+ * Design: design.md §3
10
+ */
11
+ import type { RecordInput, SourceRef, UsageSegment } from '../types.js';
12
+ export interface ProviderEnv {
13
+ projectRoot: string;
14
+ /** Home directory override for tests. */
15
+ home?: string;
16
+ }
17
+ export interface CostProvider {
18
+ readonly name: string;
19
+ /** Is this platform present for the project/user? */
20
+ detect(env: ProviderEnv): boolean;
21
+ /**
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.
25
+ */
26
+ resolveSource(input: RecordInput, env: ProviderEnv): SourceRef | null;
27
+ /**
28
+ * Extract usage segments after `since` (a cursor previously returned in
29
+ * a segment). Streaming and fail-soft: malformed records are skipped.
30
+ */
31
+ extract(source: SourceRef, since: string | null, env: ProviderEnv): Promise<UsageSegment[]>;
32
+ }
33
+ export declare function registerProvider(p: CostProvider): void;
34
+ export declare function getProvider(name: string): CostProvider | undefined;
35
+ export declare function allProviders(): CostProvider[];
36
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/cost/providers/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IAClC;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IACtE;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CAC7F;AAID,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAEtD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAElE;AAED,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAE7C"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Cost provider seam (FR3.1).
3
+ *
4
+ * A provider knows how to (a) detect its platform, (b) locate and validate
5
+ * its usage records for a session, and (c) extract usage segments since a
6
+ * cursor. Providers never touch ledgers or instances — attribution belongs
7
+ * to the recorder.
8
+ *
9
+ * Design: design.md §3
10
+ */
11
+ const registry = new Map();
12
+ export function registerProvider(p) {
13
+ registry.set(p.name, p);
14
+ }
15
+ export function getProvider(name) {
16
+ return registry.get(name);
17
+ }
18
+ export function allProviders() {
19
+ return [...registry.values()];
20
+ }
21
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/cost/providers/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA2BH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEjD,MAAM,UAAU,gBAAgB,CAAC,CAAe;IAC9C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Bundled rate table, versioned with the CLI (FR6.1).
3
+ *
4
+ * Anthropic list prices per MTok; kiro-credit at the standard overage rate.
5
+ * `aidlc cost rates update` refreshes token rates from the configured
6
+ * source; unit-priced entries (kiro-credit) have no public feed and are
7
+ * bundled/override only (D3).
8
+ */
9
+ import type { RateSnapshot } from './types.js';
10
+ export declare const BUNDLED_RATES: RateSnapshot;
11
+ //# sourceMappingURL=rates-bundled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rates-bundled.d.ts","sourceRoot":"","sources":["../../src/cost/rates-bundled.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,YAa3B,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Bundled rate table, versioned with the CLI (FR6.1).
3
+ *
4
+ * Anthropic list prices per MTok; kiro-credit at the standard overage rate.
5
+ * `aidlc cost rates update` refreshes token rates from the configured
6
+ * source; unit-priced entries (kiro-credit) have no public feed and are
7
+ * bundled/override only (D3).
8
+ */
9
+ export const BUNDLED_RATES = {
10
+ snapshot_version: 'bundled-2026-08-15',
11
+ effective_date: '2026-08-15',
12
+ rates: {
13
+ 'claude-fable-5': { input_per_mtok: 5.0, output_per_mtok: 25.0, cache_read_per_mtok: 0.5, cache_write_per_mtok: 6.25 },
14
+ 'claude-opus-5': { input_per_mtok: 5.0, output_per_mtok: 25.0, cache_read_per_mtok: 0.5, cache_write_per_mtok: 6.25 },
15
+ 'claude-opus-4-1': { input_per_mtok: 15.0, output_per_mtok: 75.0, cache_read_per_mtok: 1.5, cache_write_per_mtok: 18.75 },
16
+ 'claude-sonnet-5': { input_per_mtok: 3.0, output_per_mtok: 15.0, cache_read_per_mtok: 0.3, cache_write_per_mtok: 3.75 },
17
+ 'claude-sonnet-4-6': { input_per_mtok: 3.0, output_per_mtok: 15.0, cache_read_per_mtok: 0.3, cache_write_per_mtok: 3.75 },
18
+ 'claude-sonnet-4-5': { input_per_mtok: 3.0, output_per_mtok: 15.0, cache_read_per_mtok: 0.3, cache_write_per_mtok: 3.75 },
19
+ 'claude-haiku-4-5': { input_per_mtok: 1.0, output_per_mtok: 5.0, cache_read_per_mtok: 0.1, cache_write_per_mtok: 1.25 },
20
+ 'kiro-credit': { per_unit: 0.04 },
21
+ },
22
+ };
23
+ //# sourceMappingURL=rates-bundled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rates-bundled.js","sourceRoot":"","sources":["../../src/cost/rates-bundled.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,gBAAgB,EAAE,oBAAoB;IACtC,cAAc,EAAE,YAAY;IAC5B,KAAK,EAAE;QACL,gBAAgB,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE;QACtH,eAAe,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE;QACrH,iBAAiB,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE;QACzH,iBAAiB,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE;QACvH,mBAAmB,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE;QACzH,mBAAmB,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE;QACzH,kBAAkB,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE;QACvH,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAClC;CACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Rate table: bundled defaults, on-demand cached updates, config overrides.
3
+ *
4
+ * Resolution precedence: config override > cached update > bundled (FR6.5).
5
+ * Model ids are normalized with a closed table-driven rule before lookup —
6
+ * additions are code changes with tests, never "etc.".
7
+ *
8
+ * Dollar math uses integer micro-dollars to avoid float drift (DD6).
9
+ *
10
+ * Design: design.md §4.5, D3
11
+ */
12
+ import type { RateEntry, RateSnapshot, CostConfig, CostUnits } from './types.js';
13
+ /** Normalization rule: applied in order; printed by `rates show --normalization`. */
14
+ export declare const NORMALIZATION_RULES: Array<{
15
+ kind: 'prefix' | 'suffix';
16
+ pattern: RegExp;
17
+ describe: string;
18
+ }>;
19
+ /** Normalize a raw model id for rate lookup (FR6.5). */
20
+ export declare function normalizeModelId(model: string): string;
21
+ export declare function cachedRatesPath(projectRoot: string): string;
22
+ export declare function loadBundled(): RateSnapshot;
23
+ export type RateOrigin = 'override' | 'cached' | 'bundled';
24
+ export interface EffectiveRates {
25
+ snapshot: string;
26
+ entries: Map<string, {
27
+ rate: RateEntry;
28
+ origin: RateOrigin;
29
+ }>;
30
+ }
31
+ /** Merge bundled < cached < overrides into the effective table. */
32
+ export declare function effectiveRates(projectRoot: string, config: CostConfig | null): EffectiveRates;
33
+ /** Cost of usage units in integer micro-dollars; null = unpriced. */
34
+ export declare function priceUnits(units: CostUnits, rates: EffectiveRates): number | null;
35
+ export declare function microToUsd(micro: number): string;
36
+ /**
37
+ * Fetch the LiteLLM pricing JSON and cache the models we know how to price.
38
+ * HTTPS only, redirects refused, 5MB cap, schema-validated, temp-then-rename.
39
+ * Throws with a user-safe message on any failure — callers keep the old table.
40
+ */
41
+ export declare function updateRates(projectRoot: string, config: CostConfig | null): Promise<RateSnapshot>;
42
+ //# sourceMappingURL=rates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rates.d.ts","sourceRoot":"","sources":["../../src/cost/rates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOjF,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAQvG,CAAC;AAEF,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CActD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAwBD,wBAAgB,WAAW,IAAI,YAAY,CAE1C;AAaD,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,cAAc,CAiB7F;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAiBjF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAcD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CA4DvG"}