@codemieai/code 0.4.2 → 0.6.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 (187) hide show
  1. package/README.md +7 -1
  2. package/bin/codemie-kimi-acp.js +18 -0
  3. package/bin/codemie-kimi.js +18 -0
  4. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  5. package/dist/agents/core/AgentCLI.js +26 -2
  6. package/dist/agents/core/AgentCLI.js.map +1 -1
  7. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  8. package/dist/agents/core/BaseAgentAdapter.js +39 -8
  9. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  10. package/dist/agents/core/metrics/types.d.ts +1 -1
  11. package/dist/agents/core/metrics/types.d.ts.map +1 -1
  12. package/dist/agents/core/reasoning-effort.d.ts +8 -0
  13. package/dist/agents/core/reasoning-effort.d.ts.map +1 -0
  14. package/dist/agents/core/reasoning-effort.js +70 -0
  15. package/dist/agents/core/reasoning-effort.js.map +1 -0
  16. package/dist/agents/core/session/BaseProcessor.d.ts +2 -0
  17. package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -1
  18. package/dist/agents/core/session/BaseSessionAdapter.d.ts +7 -0
  19. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  20. package/dist/agents/core/types.d.ts +62 -0
  21. package/dist/agents/core/types.d.ts.map +1 -1
  22. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  23. package/dist/agents/plugins/claude/claude.plugin.js +15 -4
  24. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  25. package/dist/agents/plugins/claude/claude.session.d.ts +9 -0
  26. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  27. package/dist/agents/plugins/claude/claude.session.js +40 -9
  28. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  29. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +9 -0
  30. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  31. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +45 -11
  32. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  33. package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
  34. package/dist/agents/plugins/codex/codex-models.js +7 -3
  35. package/dist/agents/plugins/codex/codex-models.js.map +1 -1
  36. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
  37. package/dist/agents/plugins/codex/codex.plugin.js +25 -7
  38. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
  39. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  40. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -1
  41. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +3 -0
  42. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -1
  43. package/dist/agents/plugins/kimi/extension/SKILL.md +6 -0
  44. package/dist/agents/plugins/kimi/extension/manifest.json +8 -0
  45. package/dist/agents/plugins/kimi/kimi-acp.plugin.d.ts +7 -0
  46. package/dist/agents/plugins/kimi/kimi-acp.plugin.d.ts.map +1 -0
  47. package/dist/agents/plugins/kimi/kimi-acp.plugin.js +28 -0
  48. package/dist/agents/plugins/kimi/kimi-acp.plugin.js.map +1 -0
  49. package/dist/agents/plugins/kimi/kimi.extension-installer.d.ts +56 -0
  50. package/dist/agents/plugins/kimi/kimi.extension-installer.d.ts.map +1 -0
  51. package/dist/agents/plugins/kimi/kimi.extension-installer.js +79 -0
  52. package/dist/agents/plugins/kimi/kimi.extension-installer.js.map +1 -0
  53. package/dist/agents/plugins/kimi/kimi.hook-config-injector.d.ts +34 -0
  54. package/dist/agents/plugins/kimi/kimi.hook-config-injector.d.ts.map +1 -0
  55. package/dist/agents/plugins/kimi/kimi.hook-config-injector.js +158 -0
  56. package/dist/agents/plugins/kimi/kimi.hook-config-injector.js.map +1 -0
  57. package/dist/agents/plugins/kimi/kimi.hook-transformer.d.ts +23 -0
  58. package/dist/agents/plugins/kimi/kimi.hook-transformer.d.ts.map +1 -0
  59. package/dist/agents/plugins/kimi/kimi.hook-transformer.js +46 -0
  60. package/dist/agents/plugins/kimi/kimi.hook-transformer.js.map +1 -0
  61. package/dist/agents/plugins/kimi/kimi.models.d.ts +8 -0
  62. package/dist/agents/plugins/kimi/kimi.models.d.ts.map +1 -0
  63. package/dist/agents/plugins/kimi/kimi.models.js +174 -0
  64. package/dist/agents/plugins/kimi/kimi.models.js.map +1 -0
  65. package/dist/agents/plugins/kimi/kimi.paths.d.ts +65 -0
  66. package/dist/agents/plugins/kimi/kimi.paths.d.ts.map +1 -0
  67. package/dist/agents/plugins/kimi/kimi.paths.js +95 -0
  68. package/dist/agents/plugins/kimi/kimi.paths.js.map +1 -0
  69. package/dist/agents/plugins/kimi/kimi.plugin.d.ts +37 -0
  70. package/dist/agents/plugins/kimi/kimi.plugin.d.ts.map +1 -0
  71. package/dist/agents/plugins/kimi/kimi.plugin.js +329 -0
  72. package/dist/agents/plugins/kimi/kimi.plugin.js.map +1 -0
  73. package/dist/agents/plugins/kimi/kimi.session.d.ts +40 -0
  74. package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -0
  75. package/dist/agents/plugins/kimi/kimi.session.js +191 -0
  76. package/dist/agents/plugins/kimi/kimi.session.js.map +1 -0
  77. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.d.ts +43 -0
  78. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.d.ts.map +1 -0
  79. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.js +421 -0
  80. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.js.map +1 -0
  81. package/dist/agents/plugins/kimi/session/types.d.ts +81 -0
  82. package/dist/agents/plugins/kimi/session/types.d.ts.map +1 -0
  83. package/dist/agents/plugins/kimi/session/types.js +5 -0
  84. package/dist/agents/plugins/kimi/session/types.js.map +1 -0
  85. package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
  86. package/dist/agents/plugins/opencode/opencode-dynamic-models.js +8 -1
  87. package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
  88. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -1
  89. package/dist/agents/plugins/opencode/opencode-model-configs.js +29 -0
  90. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -1
  91. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -1
  92. package/dist/agents/plugins/opencode/opencode.plugin.js +13 -0
  93. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -1
  94. package/dist/agents/registry.d.ts.map +1 -1
  95. package/dist/agents/registry.js +4 -0
  96. package/dist/agents/registry.js.map +1 -1
  97. package/dist/cli/commands/analytics/cost/cost-calculator.d.ts.map +1 -1
  98. package/dist/cli/commands/analytics/cost/cost-calculator.js +19 -2
  99. package/dist/cli/commands/analytics/cost/cost-calculator.js.map +1 -1
  100. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
  101. package/dist/cli/commands/analytics/cost/cost-enricher.js +67 -1
  102. package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
  103. package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts +2 -2
  104. package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts.map +1 -1
  105. package/dist/cli/commands/analytics/cost/dispatch-extractor.js +6 -4
  106. package/dist/cli/commands/analytics/cost/dispatch-extractor.js.map +1 -1
  107. package/dist/cli/commands/analytics/cost/pricing.d.ts +1 -0
  108. package/dist/cli/commands/analytics/cost/pricing.d.ts.map +1 -1
  109. package/dist/cli/commands/analytics/cost/pricing.js +1 -0
  110. package/dist/cli/commands/analytics/cost/pricing.js.map +1 -1
  111. package/dist/cli/commands/analytics/cost/pricing.json +79 -37
  112. package/dist/cli/commands/analytics/cost/types.d.ts +14 -0
  113. package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
  114. package/dist/cli/commands/analytics/cost/types.js.map +1 -1
  115. package/dist/cli/commands/analytics/cost/usage-readers.d.ts +13 -4
  116. package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
  117. package/dist/cli/commands/analytics/cost/usage-readers.js +121 -27
  118. package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
  119. package/dist/cli/commands/analytics/model-normalizer.d.ts +2 -0
  120. package/dist/cli/commands/analytics/model-normalizer.d.ts.map +1 -1
  121. package/dist/cli/commands/analytics/model-normalizer.js +8 -0
  122. package/dist/cli/commands/analytics/model-normalizer.js.map +1 -1
  123. package/dist/cli/commands/analytics/report/client/app.js +233 -120
  124. package/dist/cli/commands/analytics/report/template.html +28 -4
  125. package/dist/cli/commands/hook.d.ts.map +1 -1
  126. package/dist/cli/commands/hook.js +24 -7
  127. package/dist/cli/commands/hook.js.map +1 -1
  128. package/dist/env/types.d.ts +3 -0
  129. package/dist/env/types.d.ts.map +1 -1
  130. package/dist/env/types.js.map +1 -1
  131. package/dist/providers/index.d.ts +2 -0
  132. package/dist/providers/index.d.ts.map +1 -1
  133. package/dist/providers/index.js +2 -0
  134. package/dist/providers/index.js.map +1 -1
  135. package/dist/providers/plugins/moonshot-subscription/index.d.ts +9 -0
  136. package/dist/providers/plugins/moonshot-subscription/index.d.ts.map +1 -0
  137. package/dist/providers/plugins/moonshot-subscription/index.js +9 -0
  138. package/dist/providers/plugins/moonshot-subscription/index.js.map +1 -0
  139. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.d.ts +8 -0
  140. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.d.ts.map +1 -0
  141. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.js +80 -0
  142. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.js.map +1 -0
  143. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.d.ts +11 -0
  144. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.d.ts.map +1 -0
  145. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.js +111 -0
  146. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.js.map +1 -0
  147. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts +9 -2
  148. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts.map +1 -1
  149. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js +17 -6
  150. package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js.map +1 -1
  151. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +2 -1
  152. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  153. package/dist/providers/plugins/sso/proxy/plugins/index.js +3 -1
  154. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  155. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.d.ts +18 -0
  156. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.d.ts.map +1 -0
  157. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.js +56 -0
  158. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.js.map +1 -0
  159. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.d.ts +12 -0
  160. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.d.ts.map +1 -1
  161. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.js +48 -14
  162. package/dist/providers/plugins/sso/proxy/plugins/request-sanitizer.plugin.js.map +1 -1
  163. package/dist/providers/plugins/sso/sso.auth.d.ts +5 -0
  164. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  165. package/dist/providers/plugins/sso/sso.auth.js +23 -1
  166. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  167. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
  168. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +6 -0
  169. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
  170. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -1
  171. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +21 -0
  172. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -1
  173. package/dist/utils/config.d.ts +24 -0
  174. package/dist/utils/config.d.ts.map +1 -1
  175. package/dist/utils/config.js +85 -8
  176. package/dist/utils/config.js.map +1 -1
  177. package/dist/utils/exec.js +1 -1
  178. package/dist/utils/exec.js.map +1 -1
  179. package/dist/utils/native-installer.d.ts.map +1 -1
  180. package/dist/utils/native-installer.js +6 -3
  181. package/dist/utils/native-installer.js.map +1 -1
  182. package/dist/utils/windows-path.d.ts.map +1 -1
  183. package/dist/utils/windows-path.js +6 -2
  184. package/dist/utils/windows-path.js.map +1 -1
  185. package/package.json +4 -1
  186. package/scripts/copy-plugins.js +5 -0
  187. package/scripts/test-desktop-telemetry.js +1 -1
@@ -7,6 +7,7 @@
7
7
  "Google": "ai.google.dev/gemini-api/docs/pricing",
8
8
  "xAI": "docs.x.ai/developers/models",
9
9
  "DeepSeek": "api-docs.deepseek.com/quick_start/pricing",
10
+ "Moonshot": "platform.moonshot.cn/docs/pricing",
10
11
  "Z.ai": "docs.z.ai/guides/overview/pricing",
11
12
  "Zen": "opencode.ai/docs/zen/"
12
13
  },
@@ -16,97 +17,112 @@
16
17
  "cacheRead": "cache hit price (Anthropic: 0.1x input, OpenAI: varies, Google: ~0.1x input)",
17
18
  "cacheWrite": "cache write price (Anthropic: 1.25x input, OpenAI: ~same as input)"
18
19
  },
19
- "note": "codemie: added claude 4-7/4-8 tier estimates 2026-06-08"
20
+ "note": "codemie: added claude 4-7/4-8 tier estimates 2026-06-08; added kimi-for-coding alias and normalized kimi-k2-5 key 2026-06-15"
20
21
  },
21
22
  "claude-opus-4-6": {
22
23
  "input": 5,
23
24
  "output": 25,
24
25
  "cacheRead": 0.5,
25
- "cacheWrite": 6.25
26
+ "cacheWrite": 6.25,
27
+ "cacheWrite1h": 10.0
26
28
  },
27
29
  "claude-sonnet-4-6": {
28
30
  "input": 3,
29
31
  "output": 15,
30
32
  "cacheRead": 0.3,
31
- "cacheWrite": 3.75
33
+ "cacheWrite": 3.75,
34
+ "cacheWrite1h": 6.0
32
35
  },
33
36
  "claude-opus-4-5": {
34
37
  "input": 5,
35
38
  "output": 25,
36
39
  "cacheRead": 0.5,
37
- "cacheWrite": 6.25
40
+ "cacheWrite": 6.25,
41
+ "cacheWrite1h": 10.0
38
42
  },
39
43
  "claude-sonnet-4-5": {
40
44
  "input": 3,
41
45
  "output": 15,
42
46
  "cacheRead": 0.3,
43
- "cacheWrite": 3.75
47
+ "cacheWrite": 3.75,
48
+ "cacheWrite1h": 6.0
44
49
  },
45
50
  "claude-haiku-4-5": {
46
51
  "input": 1,
47
52
  "output": 5,
48
53
  "cacheRead": 0.1,
49
- "cacheWrite": 1.25
54
+ "cacheWrite": 1.25,
55
+ "cacheWrite1h": 2.0
50
56
  },
51
57
  "claude-opus-4-1": {
52
58
  "input": 15,
53
59
  "output": 75,
54
60
  "cacheRead": 1.5,
55
- "cacheWrite": 18.75
61
+ "cacheWrite": 18.75,
62
+ "cacheWrite1h": 30.0
56
63
  },
57
64
  "claude-opus-4-0": {
58
65
  "input": 15,
59
66
  "output": 75,
60
67
  "cacheRead": 1.5,
61
- "cacheWrite": 18.75
68
+ "cacheWrite": 18.75,
69
+ "cacheWrite1h": 30.0
62
70
  },
63
71
  "claude-sonnet-4-0": {
64
72
  "input": 3,
65
73
  "output": 15,
66
74
  "cacheRead": 0.3,
67
- "cacheWrite": 3.75
75
+ "cacheWrite": 3.75,
76
+ "cacheWrite1h": 6.0
68
77
  },
69
78
  "claude-sonnet-4": {
70
79
  "input": 3,
71
80
  "output": 15,
72
81
  "cacheRead": 0.3,
73
- "cacheWrite": 3.75
82
+ "cacheWrite": 3.75,
83
+ "cacheWrite1h": 6.0
74
84
  },
75
85
  "claude-sonnet-3-7": {
76
86
  "input": 3,
77
87
  "output": 15,
78
88
  "cacheRead": 0.3,
79
- "cacheWrite": 3.75
89
+ "cacheWrite": 3.75,
90
+ "cacheWrite1h": 6.0
80
91
  },
81
92
  "claude-3-5-sonnet": {
82
93
  "input": 3,
83
94
  "output": 15,
84
95
  "cacheRead": 0.3,
85
- "cacheWrite": 3.75
96
+ "cacheWrite": 3.75,
97
+ "cacheWrite1h": 6.0
86
98
  },
87
99
  "claude-3-5-haiku": {
88
100
  "input": 0.8,
89
101
  "output": 4,
90
102
  "cacheRead": 0.08,
91
- "cacheWrite": 1
103
+ "cacheWrite": 1,
104
+ "cacheWrite1h": 1.6
92
105
  },
93
106
  "claude-3-opus": {
94
107
  "input": 15,
95
108
  "output": 75,
96
109
  "cacheRead": 1.5,
97
- "cacheWrite": 18.75
110
+ "cacheWrite": 18.75,
111
+ "cacheWrite1h": 30.0
98
112
  },
99
113
  "claude-3-sonnet": {
100
114
  "input": 3,
101
115
  "output": 15,
102
116
  "cacheRead": 0.3,
103
- "cacheWrite": 3.75
117
+ "cacheWrite": 3.75,
118
+ "cacheWrite1h": 6.0
104
119
  },
105
120
  "claude-3-haiku": {
106
121
  "input": 0.25,
107
122
  "output": 1.25,
108
123
  "cacheRead": 0.03,
109
- "cacheWrite": 0.3
124
+ "cacheWrite": 0.3,
125
+ "cacheWrite1h": 0.5
110
126
  },
111
127
  "gpt-5-4": {
112
128
  "input": 2.5,
@@ -406,91 +422,106 @@
406
422
  "input": 5,
407
423
  "output": 25,
408
424
  "cacheRead": 0.5,
409
- "cacheWrite": 6.25
425
+ "cacheWrite": 6.25,
426
+ "cacheWrite1h": 10.0
410
427
  },
411
428
  "claude-3-5-haiku-latest": {
412
429
  "input": 0.8,
413
430
  "output": 4,
414
431
  "cacheRead": 0.08,
415
- "cacheWrite": 1
432
+ "cacheWrite": 1,
433
+ "cacheWrite1h": 1.6
416
434
  },
417
435
  "claude-3-5-sonnet-20241022": {
418
436
  "input": 3,
419
437
  "output": 15,
420
438
  "cacheRead": 0.3,
421
- "cacheWrite": 3.75
439
+ "cacheWrite": 3.75,
440
+ "cacheWrite1h": 6.0
422
441
  },
423
442
  "claude-3-sonnet-20240229": {
424
443
  "input": 3,
425
444
  "output": 15,
426
445
  "cacheRead": 0.3,
427
- "cacheWrite": 0.3
446
+ "cacheWrite": 0.3,
447
+ "cacheWrite1h": 0.5
428
448
  },
429
449
  "claude-opus-4-20250514": {
430
450
  "input": 15,
431
451
  "output": 75,
432
452
  "cacheRead": 1.5,
433
- "cacheWrite": 18.75
453
+ "cacheWrite": 18.75,
454
+ "cacheWrite1h": 30.0
434
455
  },
435
456
  "claude-sonnet-4-5-20250929": {
436
457
  "input": 3,
437
458
  "output": 15,
438
459
  "cacheRead": 0.3,
439
- "cacheWrite": 3.75
460
+ "cacheWrite": 3.75,
461
+ "cacheWrite1h": 6.0
440
462
  },
441
463
  "claude-3-5-haiku-20241022": {
442
464
  "input": 0.8,
443
465
  "output": 4,
444
466
  "cacheRead": 0.08,
445
- "cacheWrite": 1
467
+ "cacheWrite": 1,
468
+ "cacheWrite1h": 1.6
446
469
  },
447
470
  "claude-3-5-sonnet-20240620": {
448
471
  "input": 3,
449
472
  "output": 15,
450
473
  "cacheRead": 0.3,
451
- "cacheWrite": 3.75
474
+ "cacheWrite": 3.75,
475
+ "cacheWrite1h": 6.0
452
476
  },
453
477
  "claude-3-7-sonnet-latest": {
454
478
  "input": 3,
455
479
  "output": 15,
456
480
  "cacheRead": 0.3,
457
- "cacheWrite": 3.75
481
+ "cacheWrite": 3.75,
482
+ "cacheWrite1h": 6.0
458
483
  },
459
484
  "claude-3-7-sonnet-20250219": {
460
485
  "input": 3,
461
486
  "output": 15,
462
487
  "cacheRead": 0.3,
463
- "cacheWrite": 3.75
488
+ "cacheWrite": 3.75,
489
+ "cacheWrite1h": 6.0
464
490
  },
465
491
  "claude-3-haiku-20240307": {
466
492
  "input": 0.25,
467
493
  "output": 1.25,
468
494
  "cacheRead": 0.03,
469
- "cacheWrite": 0.3
495
+ "cacheWrite": 0.3,
496
+ "cacheWrite1h": 0.5
470
497
  },
471
498
  "claude-haiku-4-5-20251001": {
472
499
  "input": 1,
473
500
  "output": 5,
474
501
  "cacheRead": 0.1,
475
- "cacheWrite": 1.25
502
+ "cacheWrite": 1.25,
503
+ "cacheWrite1h": 2.0
476
504
  },
477
505
  "claude-3-opus-20240229": {
478
506
  "input": 15,
479
507
  "output": 75,
480
508
  "cacheRead": 1.5,
481
- "cacheWrite": 18.75
509
+ "cacheWrite": 18.75,
510
+ "cacheWrite1h": 30.0
482
511
  },
483
512
  "claude-sonnet-4-20250514": {
484
513
  "input": 3,
485
514
  "output": 15,
486
515
  "cacheRead": 0.3,
487
- "cacheWrite": 3.75
516
+ "cacheWrite": 3.75,
517
+ "cacheWrite1h": 6.0
488
518
  },
489
519
  "claude-opus-4-1-20250805": {
490
520
  "input": 15,
491
521
  "output": 75,
492
522
  "cacheRead": 1.5,
493
- "cacheWrite": 18.75
523
+ "cacheWrite": 18.75,
524
+ "cacheWrite1h": 30.0
494
525
  },
495
526
  "gpt-4o-2024-11-20": {
496
527
  "input": 2.5,
@@ -918,7 +949,13 @@
918
949
  "cacheRead": 0.1,
919
950
  "cacheWrite": 0
920
951
  },
921
- "kimi-k2.5": {
952
+ "kimi-k2-5": {
953
+ "input": 0.6,
954
+ "output": 3,
955
+ "cacheRead": 0.1,
956
+ "cacheWrite": 0
957
+ },
958
+ "kimi-for-coding": {
922
959
  "input": 0.6,
923
960
  "output": 3,
924
961
  "cacheRead": 0.1,
@@ -946,30 +983,35 @@
946
983
  "input": 5,
947
984
  "output": 25,
948
985
  "cacheRead": 0.5,
949
- "cacheWrite": 6.25
986
+ "cacheWrite": 6.25,
987
+ "cacheWrite1h": 10.0
950
988
  },
951
989
  "claude-opus-4-8": {
952
990
  "input": 5,
953
991
  "output": 25,
954
992
  "cacheRead": 0.5,
955
- "cacheWrite": 6.25
993
+ "cacheWrite": 6.25,
994
+ "cacheWrite1h": 10.0
956
995
  },
957
996
  "claude-sonnet-4-7": {
958
997
  "input": 3,
959
998
  "output": 15,
960
999
  "cacheRead": 0.3,
961
- "cacheWrite": 3.75
1000
+ "cacheWrite": 3.75,
1001
+ "cacheWrite1h": 6.0
962
1002
  },
963
1003
  "claude-sonnet-4-8": {
964
1004
  "input": 3,
965
1005
  "output": 15,
966
1006
  "cacheRead": 0.3,
967
- "cacheWrite": 3.75
1007
+ "cacheWrite": 3.75,
1008
+ "cacheWrite1h": 6.0
968
1009
  },
969
1010
  "claude-haiku-4-6": {
970
1011
  "input": 1,
971
1012
  "output": 5,
972
1013
  "cacheRead": 0.1,
973
- "cacheWrite": 1.25
1014
+ "cacheWrite": 1.25,
1015
+ "cacheWrite1h": 2.0
974
1016
  }
975
1017
  }
@@ -10,6 +10,7 @@ export interface TokenUsage {
10
10
  output: number;
11
11
  cacheRead: number;
12
12
  cacheCreation: number;
13
+ cacheCreation1h: number;
13
14
  total: number;
14
15
  }
15
16
  /** Per-model cost line for one session. */
@@ -33,7 +34,20 @@ export interface DispatchEvent {
33
34
  name: string;
34
35
  start: number;
35
36
  durationMs: number;
37
+ tokens?: TokenUsage;
38
+ costUSD?: number;
39
+ tools?: Array<{
40
+ name: string;
41
+ calls: number;
42
+ }>;
36
43
  }
44
+ /**
45
+ * Internal dispatch event used during cost enrichment — carries _toolUseId to join
46
+ * against parsed.subagents. Stripped before the event is stored in SessionCost.dispatches.
47
+ */
48
+ export type DispatchEventRaw = DispatchEvent & {
49
+ _toolUseId?: string;
50
+ };
37
51
  /** Max dispatch events kept per session — payload guard for very long runs. */
38
52
  export declare const MAX_DISPATCHES = 60;
39
53
  /** Cost result for a single session. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kFAAkF;AAClF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,sEAAsE;AACtE,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,+EAA+E;AAC/E,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0BH,iGAAiG;AACjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAUpC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,iGAAiG;AACjG,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAmBpC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC"}
@@ -20,11 +20,20 @@ export interface UsageRecord {
20
20
  usage: TokenUsage;
21
21
  }
22
22
  /**
23
- * Extract one {@link UsageRecord} per Claude assistant message (skipping `<synthetic>`).
23
+ * Extract one {@link UsageRecord} per Claude assistant message (skipping `<synthetic>`),
24
+ * across the main transcript AND every sub-agent transcript in `parsed.subagents`.
24
25
  * Claude Code replays prior turns into resumed/forked session files, so the SAME API
25
26
  * response (same message.id + requestId) appears in multiple logs — callers dedupe by `key`.
27
+ * Records are returned in chronological order when every record is timed; otherwise in
28
+ * concatenation order (main transcript first, then sub-agent files in discovery order).
26
29
  */
27
30
  export declare function extractClaudeUsageRecords(parsed: ParsedSession): UsageRecord[];
31
+ /**
32
+ * Extract ordered, deduped usage records from Kimi wire events for per-turn cost series.
33
+ * Kimi has no stable message/request id, so records cannot be cross-session deduped;
34
+ * each record is session-local and keyed by timestamp when available.
35
+ */
36
+ export declare function extractKimiUsageRecords(parsed: ParsedSession): UsageRecord[];
28
37
  /**
29
38
  * Returns per-model {@link TokenUsage}. An empty map means the agent is
30
39
  * unsupported or the session carried no usage data. (Session-local; does NOT
@@ -39,10 +48,10 @@ export declare function readUsageByModel(agentName: string, parsed: ParsedSessio
39
48
  */
40
49
  export declare function gatherUsageDeduped(agentName: string, parsed: ParsedSession, seen: Set<string>): UsageMap;
41
50
  /**
42
- * Ordered, deduped per-message Claude usage records (for a per-session time-series).
51
+ * Ordered, deduped per-message usage records (for a per-session time-series).
43
52
  * Mirrors {@link gatherUsageDeduped}'s dedup (skips keys already in `seen`, mutates `seen`)
44
- * but preserves message order instead of summing. Returns [] when there is no per-message
45
- * order to series-ize: an authoritative SDK `modelUsage` rollup, or a non-Claude agent.
53
+ * but preserves chronological record order instead of summing. Returns [] when there is no per-message
54
+ * order to series-ize: an authoritative SDK `modelUsage` rollup, or a non-supported agent.
46
55
  * MUST be called at most once per session against a shared `seen` set (it consumes keys).
47
56
  */
48
57
  export declare function gatherDedupedUsageRecords(agentName: string, parsed: ParsedSession, seen: Set<string>): UsageRecord[];
@@ -1 +1 @@
1
- {"version":3,"file":"usage-readers.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/usage-readers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,qBAAqB;AACrB,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AA8BxC,6FAA6F;AAC7F,MAAM,WAAW,WAAW;IAC1B,qGAAqG;IACrG,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CA4B9E;AA+FD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,QAAQ,CAYnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CAuBxG;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,EAAE,CAmBpH;AAED,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,QAAQ,CAMhE"}
1
+ {"version":3,"file":"usage-readers.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/usage-readers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uDAAuD,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,qBAAqB;AACrB,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAmDxC,6FAA6F;AAC7F,MAAM,WAAW,WAAW;IAC1B,qGAAqG;IACrG,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CAuC9E;AA0ID;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,EAAE,CAmB5E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,QAAQ,CAcnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,QAAQ,CA0BxG;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,EAAE,CAuBpH;AAED,yGAAyG;AACzG,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,QAAQ,CAMhE"}
@@ -19,36 +19,66 @@ function messagesOf(parsed) {
19
19
  return Array.isArray(parsed.messages) ? parsed.messages : [];
20
20
  }
21
21
  /**
22
- * Extract one {@link UsageRecord} per Claude assistant message (skipping `<synthetic>`).
22
+ * The session's message arrays: main transcript first, then each sub-agent transcript
23
+ * (transcripts of Task/Agent dispatches that the adapter parsed into `parsed.subagents`). Sub-agent token
24
+ * usage belongs to the owning session — readers that skip these undercount sessions
25
+ * that dispatch agents. Non-array `messages` entries are skipped with the same
26
+ * defensive posture as {@link messagesOf}.
27
+ */
28
+ function allMessageArrays(parsed) {
29
+ const arrays = [messagesOf(parsed)];
30
+ for (const sub of parsed.subagents ?? []) {
31
+ if (Array.isArray(sub.messages)) {
32
+ arrays.push(sub.messages);
33
+ }
34
+ }
35
+ return arrays;
36
+ }
37
+ /**
38
+ * Extract one {@link UsageRecord} per Claude assistant message (skipping `<synthetic>`),
39
+ * across the main transcript AND every sub-agent transcript in `parsed.subagents`.
23
40
  * Claude Code replays prior turns into resumed/forked session files, so the SAME API
24
41
  * response (same message.id + requestId) appears in multiple logs — callers dedupe by `key`.
42
+ * Records are returned in chronological order when every record is timed; otherwise in
43
+ * concatenation order (main transcript first, then sub-agent files in discovery order).
25
44
  */
26
45
  export function extractClaudeUsageRecords(parsed) {
27
46
  const records = [];
28
- for (const raw of messagesOf(parsed)) {
29
- const usage = raw.message?.usage;
30
- if (!usage) {
31
- continue;
32
- }
33
- const model = raw.message?.model ?? 'unknown';
34
- if (model === '<synthetic>') {
35
- continue; // synthetic system messages — not a billable model
47
+ for (const messages of allMessageArrays(parsed)) {
48
+ for (const raw of messages) {
49
+ const usage = raw.message?.usage;
50
+ if (!usage) {
51
+ continue;
52
+ }
53
+ const model = raw.message?.model ?? 'unknown';
54
+ if (model === '<synthetic>') {
55
+ continue; // synthetic system messages — not a billable model
56
+ }
57
+ const input = usage.input_tokens ?? 0;
58
+ const output = usage.output_tokens ?? 0;
59
+ const cacheRead = usage.cache_read_input_tokens ?? 0;
60
+ const cacheCreation = usage.cache_creation_input_tokens ?? 0;
61
+ const cacheCreation1h = usage.cache_creation?.ephemeral_1h_input_tokens ?? 0;
62
+ const id = raw.message?.id;
63
+ const reqId = raw.requestId;
64
+ const key = id || reqId ? `${id ?? ''}::${reqId ?? ''}` : null;
65
+ const parsedTs = raw.timestamp ? Date.parse(raw.timestamp) : NaN;
66
+ const ts = Number.isFinite(parsedTs) ? parsedTs : null;
67
+ records.push({
68
+ key,
69
+ ts,
70
+ model,
71
+ usage: { input, output, cacheRead, cacheCreation, cacheCreation1h, total: input + output + cacheRead + cacheCreation },
72
+ });
36
73
  }
37
- const input = usage.input_tokens ?? 0;
38
- const output = usage.output_tokens ?? 0;
39
- const cacheRead = usage.cache_read_input_tokens ?? 0;
40
- const cacheCreation = usage.cache_creation_input_tokens ?? 0;
41
- const id = raw.message?.id;
42
- const reqId = raw.requestId;
43
- const key = id || reqId ? `${id ?? ''}::${reqId ?? ''}` : null;
44
- const parsedTs = raw.timestamp ? Date.parse(raw.timestamp) : NaN;
45
- const ts = Number.isFinite(parsedTs) ? parsedTs : null;
46
- records.push({
47
- key,
48
- ts,
49
- model,
50
- usage: { input, output, cacheRead, cacheCreation, total: input + output + cacheRead + cacheCreation },
51
- });
74
+ }
75
+ // Main and sub-agent records interleave in real time. Sort chronologically when every
76
+ // record is timed — the same condition buildCostSeries uses for its real time axis — so
77
+ // the cumulative cost/token series stays monotonic in time. Single-file sessions are
78
+ // already in order (stable sort ⇒ no-op); any untimed record ⇒ keep concatenation order,
79
+ // matching the series' ordinal-axis fallback.
80
+ if (records.length > 1 && records.every((r) => r.ts !== null)) {
81
+ records.sort((a, b) => a.ts - b.ts);
52
82
  }
53
83
  return records;
54
84
  }
@@ -86,6 +116,9 @@ function readClaudeSdkResult(parsed) {
86
116
  output,
87
117
  cacheRead,
88
118
  cacheCreation,
119
+ // SDK modelUsage rollup carries no TTL breakdown, so any 1h-TTL writes here
120
+ // fall back to the 5m rate in costBreakdown (a conservative under-estimate).
121
+ cacheCreation1h: 0,
89
122
  total: input + output + cacheRead + cacheCreation,
90
123
  });
91
124
  }
@@ -112,11 +145,63 @@ function readGemini(parsed) {
112
145
  output,
113
146
  cacheRead,
114
147
  cacheCreation: 0,
148
+ cacheCreation1h: 0,
115
149
  total: t.total ?? input + output + cacheRead,
116
150
  });
117
151
  }
118
152
  return out;
119
153
  }
154
+ /**
155
+ * Read Kimi Code usage.record events.
156
+ * Kimi records one usage event per assistant step with inputOther/output/cache fields.
157
+ */
158
+ function readKimi(parsed) {
159
+ const out = new Map();
160
+ for (const raw of messagesOf(parsed)) {
161
+ if (raw.type !== 'usage.record' || !raw.usage) {
162
+ continue;
163
+ }
164
+ const model = raw.model ?? 'unknown';
165
+ const input = raw.usage.inputOther ?? 0;
166
+ const output = raw.usage.output ?? 0;
167
+ const cacheRead = raw.usage.inputCacheRead ?? 0;
168
+ const cacheCreation = raw.usage.inputCacheCreation ?? 0;
169
+ accumulate(out, model, {
170
+ input,
171
+ output,
172
+ cacheRead,
173
+ cacheCreation,
174
+ cacheCreation1h: 0,
175
+ total: input + output + cacheRead + cacheCreation,
176
+ });
177
+ }
178
+ return out;
179
+ }
180
+ /**
181
+ * Extract ordered, deduped usage records from Kimi wire events for per-turn cost series.
182
+ * Kimi has no stable message/request id, so records cannot be cross-session deduped;
183
+ * each record is session-local and keyed by timestamp when available.
184
+ */
185
+ export function extractKimiUsageRecords(parsed) {
186
+ const records = [];
187
+ for (const raw of messagesOf(parsed)) {
188
+ if (raw.type !== 'usage.record' || !raw.usage) {
189
+ continue;
190
+ }
191
+ const model = raw.model ?? 'unknown';
192
+ const input = raw.usage.inputOther ?? 0;
193
+ const output = raw.usage.output ?? 0;
194
+ const cacheRead = raw.usage.inputCacheRead ?? 0;
195
+ const cacheCreation = raw.usage.inputCacheCreation ?? 0;
196
+ records.push({
197
+ key: null,
198
+ ts: typeof raw.time === 'number' ? raw.time : null,
199
+ model,
200
+ usage: { input, output, cacheRead, cacheCreation, cacheCreation1h: 0, total: input + output + cacheRead + cacheCreation },
201
+ });
202
+ }
203
+ return records;
204
+ }
120
205
  /**
121
206
  * Returns per-model {@link TokenUsage}. An empty map means the agent is
122
207
  * unsupported or the session carried no usage data. (Session-local; does NOT
@@ -131,6 +216,8 @@ export function readUsageByModel(agentName, parsed) {
131
216
  return readClaudeDesktop(parsed);
132
217
  case 'gemini':
133
218
  return readGemini(parsed);
219
+ case 'kimi':
220
+ return readKimi(parsed);
134
221
  default:
135
222
  return new Map();
136
223
  }
@@ -146,6 +233,9 @@ export function gatherUsageDeduped(agentName, parsed, seen) {
146
233
  if (a === 'gemini') {
147
234
  return readGemini(parsed);
148
235
  }
236
+ if (a === 'kimi') {
237
+ return readKimi(parsed);
238
+ }
149
239
  if (a === 'claude' || a === 'claude-acp' || a === 'claude-desktop') {
150
240
  const rollup = readClaudeSdkResult(parsed);
151
241
  if (rollup) {
@@ -166,14 +256,18 @@ export function gatherUsageDeduped(agentName, parsed, seen) {
166
256
  return new Map(); // codex/opencode/etc — no usage reader yet
167
257
  }
168
258
  /**
169
- * Ordered, deduped per-message Claude usage records (for a per-session time-series).
259
+ * Ordered, deduped per-message usage records (for a per-session time-series).
170
260
  * Mirrors {@link gatherUsageDeduped}'s dedup (skips keys already in `seen`, mutates `seen`)
171
- * but preserves message order instead of summing. Returns [] when there is no per-message
172
- * order to series-ize: an authoritative SDK `modelUsage` rollup, or a non-Claude agent.
261
+ * but preserves chronological record order instead of summing. Returns [] when there is no per-message
262
+ * order to series-ize: an authoritative SDK `modelUsage` rollup, or a non-supported agent.
173
263
  * MUST be called at most once per session against a shared `seen` set (it consumes keys).
174
264
  */
175
265
  export function gatherDedupedUsageRecords(agentName, parsed, seen) {
176
266
  const a = agentName.toLowerCase();
267
+ if (a === 'kimi') {
268
+ // Kimi records are session-local (no cross-session dedup key), so pass through as-is.
269
+ return extractKimiUsageRecords(parsed);
270
+ }
177
271
  if (a !== 'claude' && a !== 'claude-acp' && a !== 'claude-desktop') {
178
272
  return []; // gemini/codex/etc — no per-turn series in v1
179
273
  }
@@ -1 +1 @@
1
- {"version":3,"file":"usage-readers.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/usage-readers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-readers.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/cost/usage-readers.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  * Handles various model name formats:
9
9
  * - AWS Bedrock Converse: converse/region.provider.model-v1:0 -> model
10
10
  * - AWS Bedrock Direct: region.provider.model-v1:0 -> model
11
+ * - Kimi Code: kimi-code/kimi-for-coding -> kimi-for-coding
11
12
  * - Standard Claude: claude-sonnet-4-5-20250929 (unchanged)
12
13
  * - OpenAI: gpt-4-turbo (unchanged)
13
14
  * - Google: gemini-1.5-pro (unchanged)
@@ -15,6 +16,7 @@
15
16
  * Examples:
16
17
  * converse/global.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
17
18
  * eu.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
19
+ * kimi-code/kimi-for-coding -> kimi-for-coding
18
20
  * claude-sonnet-4-5-20250929 -> claude-sonnet-4-5-20250929
19
21
  */
20
22
  export declare function normalizeModelName(modelName: string): string;