@prism-d1/cli 1.0.38 → 1.0.39

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.
@@ -83,10 +83,16 @@ if [[ -n "${AI_TOOL}" ]] && (command -v codeburn &>/dev/null || command -v prism
83
83
  TRACKER_DIR="${HOME}/.prism/tokentracker"
84
84
  TRACKER_FILE="${TRACKER_DIR}/${PROJECT_BASENAME}.json"
85
85
 
86
- # Kiro: use prism-cli parse-code-tool kiro-ide (basename-based project matching)
86
+ # Kiro: CLI (KIRO_SESSION_ID) uses kiro-cli, IDE uses kiro-ide
87
87
  # Everything else: use codeburn
88
88
  if [[ "${AI_TOOL}" == "kiro" ]] && command -v prism-cli &>/dev/null; then
89
- CODEBURN_JSON=$(prism-cli parse-code-tool kiro-ide --project "${PROJECT_BASENAME}" --format json 2>/dev/null || echo "")
89
+ if [[ -n "${KIRO_SESSION_ID:-}" ]]; then
90
+ CODEBURN_JSON=$(prism-cli parse-code-tool kiro-cli --session-id "${KIRO_SESSION_ID}" --project "${PROJECT_BASENAME}" --format json 2>/dev/null || echo "")
91
+ fi
92
+ # Fall back to kiro-ide (covers IDE env vars and CLI sessions without KIRO_SESSION_ID)
93
+ if [[ -z "${CODEBURN_JSON}" || "$(echo "${CODEBURN_JSON}" | jq -r '.overview.calls // 0')" == "0" ]]; then
94
+ CODEBURN_JSON=$(prism-cli parse-code-tool kiro-ide --project "${PROJECT_BASENAME}" --format json 2>/dev/null || echo "")
95
+ fi
90
96
  elif command -v codeburn &>/dev/null; then
91
97
  CODEBURN_JSON=$(codeburn report -p all --project "${PROJECT_FILTER}" --format json 2>/dev/null || echo "")
92
98
  if [[ -z "${CODEBURN_JSON}" || "$(echo "${CODEBURN_JSON}" | jq -r '.overview.calls // 0')" == "0" ]]; then
@@ -0,0 +1,19 @@
1
+ declare const _default: {
2
+ description: string;
3
+ options: ({
4
+ flags: string;
5
+ description: string;
6
+ default?: undefined;
7
+ } | {
8
+ flags: string;
9
+ description: string;
10
+ default: string;
11
+ })[];
12
+ action(opts: {
13
+ sessionId?: string;
14
+ project?: string;
15
+ format: string;
16
+ }): Promise<void>;
17
+ };
18
+ export default _default;
19
+ //# sourceMappingURL=kiro-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro-cli.d.ts","sourceRoot":"","sources":["../../../../src/commands/parse-code-tool/kiro-cli.ts"],"names":[],"mappings":";;;;;;;;;;;iBAqCqB;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;;AAP7E,wBAoEE"}
@@ -0,0 +1,92 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ const CHARS_PER_TOKEN = 4;
5
+ const MODEL_COSTS = {
6
+ 'claude-sonnet-4-6': [0.003, 0.015],
7
+ 'claude-sonnet-4-5': [0.003, 0.015],
8
+ 'claude-sonnet-4': [0.003, 0.015],
9
+ 'claude-haiku-4-5': [0.0008, 0.004],
10
+ 'claude-opus-4-6': [0.015, 0.075],
11
+ 'kiro-auto': [0.003, 0.015],
12
+ };
13
+ function calculateCost(model, input, output) {
14
+ const [inCost, outCost] = MODEL_COSTS[model] ?? [0.003, 0.015];
15
+ return (input * inCost + output * outCost) / 1000;
16
+ }
17
+ function getCliSessionsDir() {
18
+ return join(homedir(), '.kiro', 'sessions', 'cli');
19
+ }
20
+ export default {
21
+ description: 'Parse Kiro CLI session files and output token usage (codeburn-compatible JSON)',
22
+ options: [
23
+ { flags: '--session-id <id>', description: 'Kiro CLI session ID (defaults to KIRO_SESSION_ID env)' },
24
+ { flags: '--project <name>', description: 'Project name for output (defaults to basename of cwd)' },
25
+ { flags: '--format <fmt>', description: 'Output format: json, summary', default: 'json' },
26
+ ],
27
+ async action(opts) {
28
+ const sessionId = opts.sessionId || process.env.KIRO_SESSION_ID;
29
+ if (!sessionId) {
30
+ console.error('No session ID: pass --session-id or set KIRO_SESSION_ID');
31
+ process.exit(1);
32
+ }
33
+ const filePath = join(getCliSessionsDir(), `${sessionId}.jsonl`);
34
+ let raw;
35
+ try {
36
+ raw = await readFile(filePath, 'utf-8');
37
+ }
38
+ catch {
39
+ // No session file — output zero tokens
40
+ const output = { overview: { cost: 0, calls: 0, sessions: 0 }, models: [], projects: [] };
41
+ console.log(JSON.stringify(output, null, 2));
42
+ return;
43
+ }
44
+ let inputChars = 0, outputChars = 0, calls = 0;
45
+ for (const line of raw.split('\n')) {
46
+ if (!line.trim())
47
+ continue;
48
+ let entry;
49
+ try {
50
+ entry = JSON.parse(line);
51
+ }
52
+ catch {
53
+ continue;
54
+ }
55
+ const kind = entry.kind;
56
+ const content = entry.data?.content;
57
+ if (!content || !Array.isArray(content))
58
+ continue;
59
+ const text = content
60
+ .filter(c => c.kind === 'text' && c.data)
61
+ .map(c => c.data)
62
+ .join('');
63
+ if (kind === 'Prompt' || kind === 'ToolResults') {
64
+ inputChars += text.length;
65
+ }
66
+ else if (kind === 'AssistantMessage') {
67
+ outputChars += text.length;
68
+ calls++;
69
+ }
70
+ }
71
+ const inputTokens = Math.ceil(inputChars / CHARS_PER_TOKEN);
72
+ const outputTokens = Math.ceil(outputChars / CHARS_PER_TOKEN);
73
+ const model = 'kiro-auto';
74
+ const cost = calculateCost(model, inputTokens, outputTokens);
75
+ const projectName = opts.project || 'unknown';
76
+ const output = {
77
+ overview: { cost: Math.round(cost * 100) / 100, calls, sessions: 1 },
78
+ models: [{ name: model, inputTokens, outputTokens }],
79
+ projects: [{ name: projectName, cost: Math.round(cost * 100) / 100, calls }],
80
+ };
81
+ if (opts.format === 'summary') {
82
+ console.log(`Kiro CLI Token Usage (session: ${sessionId.slice(0, 8)}...)`);
83
+ console.log(` Calls: ${calls}`);
84
+ console.log(` Cost: $${output.overview.cost}`);
85
+ console.log(` ${model}: ${inputTokens} in / ${outputTokens} out`);
86
+ }
87
+ else {
88
+ console.log(JSON.stringify(output, null, 2));
89
+ }
90
+ },
91
+ };
92
+ //# sourceMappingURL=kiro-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro-cli.js","sourceRoot":"","sources":["../../../../src/commands/parse-code-tool/kiro-cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prism-d1/cli",
3
- "version": "1.0.38",
3
+ "version": "1.0.39",
4
4
  "description": "PRISM D1 Velocity CLI — AI development lifecycle assessment tool",
5
5
  "author": "andklee",
6
6
  "engines": {