@codemieai/code 0.4.1 → 0.5.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 (167) 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 +4 -0
  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 +26 -6
  9. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  10. package/dist/agents/core/metrics/types.d.ts +4 -1
  11. package/dist/agents/core/metrics/types.d.ts.map +1 -1
  12. package/dist/agents/core/session/BaseProcessor.d.ts +2 -0
  13. package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -1
  14. package/dist/agents/core/session/BaseSessionAdapter.d.ts +10 -0
  15. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  16. package/dist/agents/core/types.d.ts +30 -0
  17. package/dist/agents/core/types.d.ts.map +1 -1
  18. package/dist/agents/plugins/claude/claude.plugin.js +3 -3
  19. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  20. package/dist/agents/plugins/claude/claude.session.js +29 -7
  21. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  22. package/dist/agents/plugins/claude/session/claude-named-invocations.d.ts +28 -0
  23. package/dist/agents/plugins/claude/session/claude-named-invocations.d.ts.map +1 -0
  24. package/dist/agents/plugins/claude/session/claude-named-invocations.js +78 -0
  25. package/dist/agents/plugins/claude/session/claude-named-invocations.js.map +1 -0
  26. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
  27. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +10 -1
  28. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
  29. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  30. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -1
  31. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +3 -0
  32. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -1
  33. package/dist/agents/plugins/kimi/extension/SKILL.md +6 -0
  34. package/dist/agents/plugins/kimi/extension/manifest.json +8 -0
  35. package/dist/agents/plugins/kimi/kimi-acp.plugin.d.ts +7 -0
  36. package/dist/agents/plugins/kimi/kimi-acp.plugin.d.ts.map +1 -0
  37. package/dist/agents/plugins/kimi/kimi-acp.plugin.js +28 -0
  38. package/dist/agents/plugins/kimi/kimi-acp.plugin.js.map +1 -0
  39. package/dist/agents/plugins/kimi/kimi.extension-installer.d.ts +56 -0
  40. package/dist/agents/plugins/kimi/kimi.extension-installer.d.ts.map +1 -0
  41. package/dist/agents/plugins/kimi/kimi.extension-installer.js +79 -0
  42. package/dist/agents/plugins/kimi/kimi.extension-installer.js.map +1 -0
  43. package/dist/agents/plugins/kimi/kimi.hook-config-injector.d.ts +34 -0
  44. package/dist/agents/plugins/kimi/kimi.hook-config-injector.d.ts.map +1 -0
  45. package/dist/agents/plugins/kimi/kimi.hook-config-injector.js +158 -0
  46. package/dist/agents/plugins/kimi/kimi.hook-config-injector.js.map +1 -0
  47. package/dist/agents/plugins/kimi/kimi.hook-transformer.d.ts +23 -0
  48. package/dist/agents/plugins/kimi/kimi.hook-transformer.d.ts.map +1 -0
  49. package/dist/agents/plugins/kimi/kimi.hook-transformer.js +46 -0
  50. package/dist/agents/plugins/kimi/kimi.hook-transformer.js.map +1 -0
  51. package/dist/agents/plugins/kimi/kimi.models.d.ts +8 -0
  52. package/dist/agents/plugins/kimi/kimi.models.d.ts.map +1 -0
  53. package/dist/agents/plugins/kimi/kimi.models.js +174 -0
  54. package/dist/agents/plugins/kimi/kimi.models.js.map +1 -0
  55. package/dist/agents/plugins/kimi/kimi.paths.d.ts +65 -0
  56. package/dist/agents/plugins/kimi/kimi.paths.d.ts.map +1 -0
  57. package/dist/agents/plugins/kimi/kimi.paths.js +95 -0
  58. package/dist/agents/plugins/kimi/kimi.paths.js.map +1 -0
  59. package/dist/agents/plugins/kimi/kimi.plugin.d.ts +37 -0
  60. package/dist/agents/plugins/kimi/kimi.plugin.d.ts.map +1 -0
  61. package/dist/agents/plugins/kimi/kimi.plugin.js +318 -0
  62. package/dist/agents/plugins/kimi/kimi.plugin.js.map +1 -0
  63. package/dist/agents/plugins/kimi/kimi.session.d.ts +40 -0
  64. package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -0
  65. package/dist/agents/plugins/kimi/kimi.session.js +191 -0
  66. package/dist/agents/plugins/kimi/kimi.session.js.map +1 -0
  67. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.d.ts +43 -0
  68. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.d.ts.map +1 -0
  69. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.js +421 -0
  70. package/dist/agents/plugins/kimi/session/processors/kimi.metrics-processor.js.map +1 -0
  71. package/dist/agents/plugins/kimi/session/types.d.ts +81 -0
  72. package/dist/agents/plugins/kimi/session/types.d.ts.map +1 -0
  73. package/dist/agents/plugins/kimi/session/types.js +5 -0
  74. package/dist/agents/plugins/kimi/session/types.js.map +1 -0
  75. package/dist/agents/registry.d.ts.map +1 -1
  76. package/dist/agents/registry.js +4 -0
  77. package/dist/agents/registry.js.map +1 -1
  78. package/dist/cli/commands/analytics/aggregator.d.ts +14 -0
  79. package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -1
  80. package/dist/cli/commands/analytics/aggregator.js +81 -1
  81. package/dist/cli/commands/analytics/aggregator.js.map +1 -1
  82. package/dist/cli/commands/analytics/cost/cost-calculator.d.ts +10 -0
  83. package/dist/cli/commands/analytics/cost/cost-calculator.d.ts.map +1 -1
  84. package/dist/cli/commands/analytics/cost/cost-calculator.js +9 -5
  85. package/dist/cli/commands/analytics/cost/cost-calculator.js.map +1 -1
  86. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +9 -1
  87. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
  88. package/dist/cli/commands/analytics/cost/cost-enricher.js +141 -7
  89. package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
  90. package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts +17 -0
  91. package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts.map +1 -0
  92. package/dist/cli/commands/analytics/cost/dispatch-extractor.js +78 -0
  93. package/dist/cli/commands/analytics/cost/dispatch-extractor.js.map +1 -0
  94. package/dist/cli/commands/analytics/cost/pricing.json +9 -2
  95. package/dist/cli/commands/analytics/cost/types.d.ts +33 -0
  96. package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
  97. package/dist/cli/commands/analytics/cost/types.js +4 -1
  98. package/dist/cli/commands/analytics/cost/types.js.map +1 -1
  99. package/dist/cli/commands/analytics/cost/usage-readers.d.ts +22 -1
  100. package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
  101. package/dist/cli/commands/analytics/cost/usage-readers.js +147 -21
  102. package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
  103. package/dist/cli/commands/analytics/model-normalizer.d.ts +2 -0
  104. package/dist/cli/commands/analytics/model-normalizer.d.ts.map +1 -1
  105. package/dist/cli/commands/analytics/model-normalizer.js +8 -0
  106. package/dist/cli/commands/analytics/model-normalizer.js.map +1 -1
  107. package/dist/cli/commands/analytics/native-loader.d.ts.map +1 -1
  108. package/dist/cli/commands/analytics/native-loader.js +35 -0
  109. package/dist/cli/commands/analytics/native-loader.js.map +1 -1
  110. package/dist/cli/commands/analytics/report/client/app.js +685 -53
  111. package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
  112. package/dist/cli/commands/analytics/report/payload-builder.js +13 -0
  113. package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
  114. package/dist/cli/commands/analytics/report/template.html +108 -8
  115. package/dist/cli/commands/analytics/report/types.d.ts +13 -2
  116. package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
  117. package/dist/cli/commands/analytics/types.d.ts +18 -0
  118. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  119. package/dist/cli/commands/hook.d.ts.map +1 -1
  120. package/dist/cli/commands/hook.js +24 -7
  121. package/dist/cli/commands/hook.js.map +1 -1
  122. package/dist/migrations/004-skills-assistants-top-level.migration.d.ts.map +1 -1
  123. package/dist/migrations/004-skills-assistants-top-level.migration.js +8 -5
  124. package/dist/migrations/004-skills-assistants-top-level.migration.js.map +1 -1
  125. package/dist/migrations/005-skill-slug-format.migration.d.ts.map +1 -1
  126. package/dist/migrations/005-skill-slug-format.migration.js +14 -11
  127. package/dist/migrations/005-skill-slug-format.migration.js.map +1 -1
  128. package/dist/providers/index.d.ts +2 -0
  129. package/dist/providers/index.d.ts.map +1 -1
  130. package/dist/providers/index.js +2 -0
  131. package/dist/providers/index.js.map +1 -1
  132. package/dist/providers/plugins/moonshot-subscription/index.d.ts +9 -0
  133. package/dist/providers/plugins/moonshot-subscription/index.d.ts.map +1 -0
  134. package/dist/providers/plugins/moonshot-subscription/index.js +9 -0
  135. package/dist/providers/plugins/moonshot-subscription/index.js.map +1 -0
  136. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.d.ts +8 -0
  137. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.d.ts.map +1 -0
  138. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.js +80 -0
  139. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.setup-steps.js.map +1 -0
  140. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.d.ts +11 -0
  141. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.d.ts.map +1 -0
  142. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.js +111 -0
  143. package/dist/providers/plugins/moonshot-subscription/moonshot-subscription.template.js.map +1 -0
  144. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +2 -1
  145. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  146. package/dist/providers/plugins/sso/proxy/plugins/index.js +3 -1
  147. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  148. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.d.ts +18 -0
  149. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.d.ts.map +1 -0
  150. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.js +56 -0
  151. package/dist/providers/plugins/sso/proxy/plugins/kimi-request-normalizer.plugin.js.map +1 -0
  152. package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts +1 -1
  153. package/dist/providers/plugins/sso/session/processors/conversations/constants.js +1 -1
  154. package/dist/providers/plugins/sso/sso.auth.d.ts +5 -0
  155. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  156. package/dist/providers/plugins/sso/sso.auth.js +23 -1
  157. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  158. package/dist/utils/config.d.ts +24 -0
  159. package/dist/utils/config.d.ts.map +1 -1
  160. package/dist/utils/config.js +83 -8
  161. package/dist/utils/config.js.map +1 -1
  162. package/dist/utils/native-installer.d.ts.map +1 -1
  163. package/dist/utils/native-installer.js +6 -3
  164. package/dist/utils/native-installer.js.map +1 -1
  165. package/package.json +5 -1
  166. package/scripts/copy-plugins.js +5 -0
  167. package/scripts/test-desktop-telemetry.js +1 -1
@@ -0,0 +1,95 @@
1
+ // src/agents/plugins/kimi/kimi.paths.ts
2
+ /**
3
+ * Kimi path utilities.
4
+ *
5
+ * Kimi stores session data and user state at:
6
+ * ${KIMI_CODE_HOME:-~/.kimi-code}/sessions/{workDirKey}/{sessionId}/agents/main/wire.jsonl
7
+ *
8
+ * Kimi does not use XDG conventions by default, but it supports KIMI_CODE_HOME
9
+ * for isolating local state.
10
+ *
11
+ * Work directory keys are deterministic: the slug is derived from the resolved
12
+ * directory basename (truncated and sanitized), and the suffix is the first 12
13
+ * characters of a SHA-256 hash of the resolved path. This keeps directory names
14
+ * readable while avoiding collisions between different paths that share the same
15
+ * basename.
16
+ */
17
+ import { createHash } from 'crypto';
18
+ import { homedir } from 'os';
19
+ import { basename, join, resolve } from 'path';
20
+ /**
21
+ * Returns the Kimi home directory.
22
+ *
23
+ * Defaults to ${userHome}/.kimi-code unless KIMI_CODE_HOME is set.
24
+ */
25
+ export function getKimiCodeHome() {
26
+ return process.env.KIMI_CODE_HOME || join(homedir(), '.kimi-code');
27
+ }
28
+ /**
29
+ * Returns the path to Kimi's global config file.
30
+ *
31
+ * ${KIMI_CODE_HOME}/config.toml
32
+ */
33
+ export function getKimiConfigPath() {
34
+ return join(getKimiCodeHome(), 'config.toml');
35
+ }
36
+ /**
37
+ * Returns the base directory for all Kimi sessions.
38
+ *
39
+ * ${KIMI_CODE_HOME}/sessions
40
+ */
41
+ export function getKimiSessionsDir() {
42
+ return join(getKimiCodeHome(), 'sessions');
43
+ }
44
+ /**
45
+ * Encodes a working directory path into a deterministic, filesystem-safe key.
46
+ *
47
+ * The key has the shape:
48
+ * wd_{slug}_{hash}
49
+ *
50
+ * - `slug` is the lowercase basename of the resolved cwd, with non-alphanumeric
51
+ * characters replaced by `-`, leading/trailing dashes stripped, and truncated
52
+ * to 40 characters. If the result is empty, `.`, or `..`, it is replaced with
53
+ * `workspace`.
54
+ * - `hash` is the first 12 characters of the SHA-256 digest of the resolved cwd.
55
+ */
56
+ export function encodeKimiWorkDirKey(cwd) {
57
+ const resolvedCwd = resolve(cwd);
58
+ let slug = basename(resolvedCwd).toLowerCase();
59
+ slug = slug.replace(/[^a-z0-9._-]/g, '-');
60
+ slug = slug.replace(/^-+|-+$/g, '');
61
+ slug = slug.slice(0, 40);
62
+ if (slug === '' || slug === '.' || slug === '..') {
63
+ slug = 'workspace';
64
+ }
65
+ const hash = createHash('sha256')
66
+ .update(resolvedCwd)
67
+ .digest('hex')
68
+ .slice(0, 12);
69
+ return `wd_${slug}_${hash}`;
70
+ }
71
+ /**
72
+ * Returns the session directory for a given cwd and session id.
73
+ *
74
+ * ${KIMI_CODE_HOME}/sessions/{workDirKey}/{sessionId}
75
+ */
76
+ export function getKimiSessionDir(cwd, sessionId) {
77
+ return join(getKimiSessionsDir(), encodeKimiWorkDirKey(cwd), sessionId);
78
+ }
79
+ /**
80
+ * Returns the main agent wire file path for a given cwd and session id.
81
+ *
82
+ * ${KIMI_CODE_HOME}/sessions/{workDirKey}/{sessionId}/agents/main/wire.jsonl
83
+ */
84
+ export function getKimiMainWirePath(cwd, sessionId) {
85
+ return join(getKimiSessionDir(cwd, sessionId), 'agents', 'main', 'wire.jsonl');
86
+ }
87
+ /**
88
+ * Returns the directory for user-defined Kimi skills.
89
+ *
90
+ * ${KIMI_CODE_HOME}/skills
91
+ */
92
+ export function getKimiUserSkillsDir() {
93
+ return join(getKimiCodeHome(), 'skills');
94
+ }
95
+ //# sourceMappingURL=kimi.paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.paths.js","sourceRoot":"","sources":["../../../../src/agents/plugins/kimi/kimi.paths.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAE/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC1C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzB,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACjD,IAAI,GAAG,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,OAAO,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,SAAiB;IAC9D,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,SAAiB;IAChE,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { AgentMetadata, HookTransformer } from '../../core/types.js';
2
+ import { BaseAgentAdapter } from '../../core/BaseAgentAdapter.js';
3
+ import type { SessionAdapter } from '../../core/session/BaseSessionAdapter.js';
4
+ import type { BaseExtensionInstaller } from '../../core/extension/BaseExtensionInstaller.js';
5
+ export declare const KimiPluginMetadata: AgentMetadata;
6
+ export declare class KimiPlugin extends BaseAgentAdapter {
7
+ private sessionAdapter?;
8
+ private extensionInstaller?;
9
+ private hookTransformer?;
10
+ constructor(metadata?: AgentMetadata);
11
+ getSessionAdapter(): SessionAdapter;
12
+ getExtensionInstaller(): BaseExtensionInstaller;
13
+ getHookTransformer(): HookTransformer;
14
+ isInstalled(): Promise<boolean>;
15
+ private installNative;
16
+ install(): Promise<void>;
17
+ /**
18
+ * Uninstall Kimi Code native binary and npm wrapper package.
19
+ *
20
+ * The native installer places the binary at ~/.kimi-code/bin/kimi, while the
21
+ * inherited base uninstall only removes the npm package wrapper. We remove
22
+ * both so that subsequent installs don't incorrectly report Kimi as already
23
+ * installed.
24
+ */
25
+ uninstall(): Promise<void>;
26
+ /**
27
+ * Get Kimi version by parsing 'kimi --version' output.
28
+ * Extracts the first semantic version found in the output.
29
+ *
30
+ * Checks the native installer full path first on Unix systems, then falls
31
+ * back to the command in PATH for other installation methods.
32
+ */
33
+ getVersion(): Promise<string | null>;
34
+ installVersion(version?: string): Promise<void>;
35
+ protected setupProxy(env: NodeJS.ProcessEnv): Promise<void>;
36
+ }
37
+ //# sourceMappingURL=kimi.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.plugin.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/kimi/kimi.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AA6B7F,eAAO,MAAM,kBAAkB,EAAE,aA8DhC,CAAC;AAEF,qBAAa,UAAW,SAAQ,gBAAgB;IAC9C,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,kBAAkB,CAAC,CAAyB;IACpD,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAE9B,QAAQ,GAAE,aAAkC;IAIxD,iBAAiB,IAAI,cAAc;IAOnC,qBAAqB,IAAI,sBAAsB;IAO/C,kBAAkB,IAAI,eAAe;IAOtB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAqChC,aAAa;IA8CZ,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;;;;;;OAOG;IACY,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAmDzC;;;;;;OAMG;IACY,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAwCpC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAuCrC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAW3E"}
@@ -0,0 +1,318 @@
1
+ import { BaseAgentAdapter } from '../../core/BaseAgentAdapter.js';
2
+ import { existsSync } from 'fs';
3
+ import { rm } from 'fs/promises';
4
+ import { KimiSessionAdapter } from './kimi.session.js';
5
+ import { KimiExtensionInstaller } from './kimi.extension-installer.js';
6
+ import { KimiHookTransformer } from './kimi.hook-transformer.js';
7
+ import { assertExplicitKimiModelAllowed, resolveKimiModel } from './kimi.models.js';
8
+ import { installNativeAgent } from '../../../utils/native-installer.js';
9
+ import { AgentInstallationError, createErrorContext, getErrorMessage, } from '../../../utils/errors.js';
10
+ import { isValidSemanticVersion } from '../../../utils/version-utils.js';
11
+ import { logger } from '../../../utils/logger.js';
12
+ import { sanitizeLogArgs } from '../../../utils/security.js';
13
+ import { commandExists, exec, getCommandPath } from '../../../utils/processes.js';
14
+ import { resolveHomeDir } from '../../../utils/paths.js';
15
+ const KIMI_SUPPORTED_VERSION = '0.16.0';
16
+ const KIMI_MINIMUM_SUPPORTED_VERSION = '0.15.0';
17
+ const KIMI_NATIVE_BINARY_PATH = '.kimi-code/bin/kimi';
18
+ const KIMI_INSTALLER_URLS = {
19
+ macOS: 'https://code.kimi.com/kimi-code/install.sh',
20
+ windows: 'https://code.kimi.com/kimi-code/install.ps1',
21
+ linux: 'https://code.kimi.com/kimi-code/install.sh',
22
+ };
23
+ export const KimiPluginMetadata = {
24
+ name: 'kimi',
25
+ displayName: 'Kimi Code',
26
+ description: 'Kimi Code CLI - Moonshot AI coding agent',
27
+ npmPackage: '@moonshot-ai/kimi-code',
28
+ cliCommand: 'kimi',
29
+ supportedVersion: KIMI_SUPPORTED_VERSION,
30
+ minimumSupportedVersion: KIMI_MINIMUM_SUPPORTED_VERSION,
31
+ installerUrls: KIMI_INSTALLER_URLS,
32
+ dataPaths: {
33
+ home: '.kimi-code',
34
+ binary: KIMI_NATIVE_BINARY_PATH,
35
+ },
36
+ envMapping: {
37
+ baseUrl: ['KIMI_MODEL_BASE_URL'],
38
+ apiKey: ['KIMI_MODEL_API_KEY'],
39
+ model: ['KIMI_MODEL_NAME'],
40
+ },
41
+ supportedProviders: ['moonshot-subscription', 'ai-run-sso'],
42
+ blockedModelPatterns: [],
43
+ recommendedModels: ['kimi-k2.6', 'kimi-for-coding', 'kimi-k2'],
44
+ ssoConfig: { enabled: true, clientType: 'codemie-kimi' },
45
+ flagMappings: {
46
+ '--task': { type: 'flag', target: '-p' },
47
+ '--model': { type: 'flag', target: '--model' },
48
+ },
49
+ lifecycle: {
50
+ enrichArgs(args, _config) {
51
+ const explicitModel = getExplicitModelArg(args);
52
+ if (!explicitModel) {
53
+ return args;
54
+ }
55
+ const availableModels = (process.env.CODEMIE_KIMI_AVAILABLE_MODELS || '')
56
+ .split(',')
57
+ .map(model => model.trim())
58
+ .filter(Boolean);
59
+ assertExplicitKimiModelAllowed(explicitModel, availableModels);
60
+ return args;
61
+ },
62
+ },
63
+ metricsConfig: {
64
+ excludeErrorsFromTools: ['Bash'],
65
+ },
66
+ extensionsConfig: {
67
+ project: '.kimi-code',
68
+ global: '~/.kimi-code',
69
+ skillsEntryFile: 'SKILL.md',
70
+ },
71
+ hookConfig: {
72
+ eventNameMapping: {
73
+ 'SessionStart': 'SessionStart',
74
+ 'SessionEnd': 'SessionEnd',
75
+ 'UserPromptSubmit': 'UserPromptSubmit',
76
+ 'Stop': 'Stop',
77
+ 'SubagentStop': 'SubagentStop',
78
+ 'PreCompact': 'PreCompact',
79
+ 'PermissionRequest': 'PermissionRequest',
80
+ 'PermissionResult': 'PermissionRequest',
81
+ },
82
+ },
83
+ };
84
+ export class KimiPlugin extends BaseAgentAdapter {
85
+ sessionAdapter;
86
+ extensionInstaller;
87
+ hookTransformer;
88
+ constructor(metadata = KimiPluginMetadata) {
89
+ super(metadata);
90
+ }
91
+ getSessionAdapter() {
92
+ if (!this.sessionAdapter) {
93
+ this.sessionAdapter = new KimiSessionAdapter(this.metadata);
94
+ }
95
+ return this.sessionAdapter;
96
+ }
97
+ getExtensionInstaller() {
98
+ if (!this.extensionInstaller) {
99
+ this.extensionInstaller = new KimiExtensionInstaller(this.metadata);
100
+ }
101
+ return this.extensionInstaller;
102
+ }
103
+ getHookTransformer() {
104
+ if (!this.hookTransformer) {
105
+ this.hookTransformer = new KimiHookTransformer();
106
+ }
107
+ return this.hookTransformer;
108
+ }
109
+ async isInstalled() {
110
+ if (!this.metadata.cliCommand) {
111
+ return true;
112
+ }
113
+ if (await commandExists(this.metadata.cliCommand)) {
114
+ return true;
115
+ }
116
+ if (process.platform !== 'win32') {
117
+ // Native installer location
118
+ const nativePath = resolveHomeDir(KIMI_NATIVE_BINARY_PATH);
119
+ try {
120
+ const result = await exec(nativePath, ['--version']);
121
+ if (result.code === 0) {
122
+ return true;
123
+ }
124
+ }
125
+ catch {
126
+ // Native path check failed, fall through
127
+ }
128
+ // Legacy / npm location
129
+ const fullPath = resolveHomeDir('.local/bin/kimi');
130
+ try {
131
+ const result = await exec(fullPath, ['--version']);
132
+ return result.code === 0;
133
+ }
134
+ catch {
135
+ // Full path check failed, fall through to PATH check already performed
136
+ }
137
+ }
138
+ logger.debug('[kimi-plugin] Kimi not installed. Install with:');
139
+ logger.debug('[kimi-plugin] codemie install kimi');
140
+ return false;
141
+ }
142
+ async installNative(version) {
143
+ if (!this.metadata.installerUrls) {
144
+ throw new AgentInstallationError(this.metadata.name, 'No installer URLs configured for native installation');
145
+ }
146
+ try {
147
+ const result = await installNativeAgent(this.metadata.name, this.metadata.installerUrls, version, {
148
+ timeout: 300000,
149
+ verifyCommand: this.metadata.cliCommand || undefined,
150
+ verifyPath: process.platform === 'win32' ? undefined : resolveHomeDir(KIMI_NATIVE_BINARY_PATH),
151
+ });
152
+ if (!result.success) {
153
+ throw new AgentInstallationError(this.metadata.name, `Installation failed. Output: ${result.output}`);
154
+ }
155
+ logger.success(`${this.metadata.displayName} installed successfully`);
156
+ }
157
+ catch (error) {
158
+ if (error instanceof AgentInstallationError) {
159
+ throw error;
160
+ }
161
+ const errorContext = createErrorContext(error, {
162
+ agent: this.metadata.name,
163
+ });
164
+ logger.error('Kimi installation failed', ...sanitizeLogArgs(errorContext));
165
+ throw new AgentInstallationError(this.metadata.name, `Failed to install ${this.metadata.displayName}: ${getErrorMessage(error)}`);
166
+ }
167
+ }
168
+ async install() {
169
+ return this.installVersion(undefined);
170
+ }
171
+ /**
172
+ * Uninstall Kimi Code native binary and npm wrapper package.
173
+ *
174
+ * The native installer places the binary at ~/.kimi-code/bin/kimi, while the
175
+ * inherited base uninstall only removes the npm package wrapper. We remove
176
+ * both so that subsequent installs don't incorrectly report Kimi as already
177
+ * installed.
178
+ */
179
+ async uninstall() {
180
+ const isWindows = process.platform === 'win32';
181
+ const binaryName = isWindows ? 'kimi.exe' : 'kimi';
182
+ const possibleBinaries = new Set();
183
+ // Known native install locations
184
+ possibleBinaries.add(resolveHomeDir(`.kimi-code/bin/${binaryName}`));
185
+ possibleBinaries.add(resolveHomeDir(`.local/bin/${binaryName}`));
186
+ // Also remove any binary found on PATH that belongs to the user
187
+ const pathBinary = await getCommandPath('kimi');
188
+ if (pathBinary) {
189
+ possibleBinaries.add(pathBinary);
190
+ }
191
+ for (const binaryPath of possibleBinaries) {
192
+ try {
193
+ if (existsSync(binaryPath)) {
194
+ await rm(binaryPath, { force: true });
195
+ logger.debug(`[kimi-plugin] Removed binary: ${binaryPath}`);
196
+ }
197
+ }
198
+ catch (error) {
199
+ logger.warn(`[kimi-plugin] Could not remove binary ${binaryPath}`, error instanceof Error ? error.message : String(error));
200
+ }
201
+ }
202
+ // Remove the native install directory if it is now empty
203
+ const installDir = resolveHomeDir('.kimi-code');
204
+ try {
205
+ if (existsSync(installDir)) {
206
+ const { readdir } = await import('fs/promises');
207
+ const entries = await readdir(installDir);
208
+ if (entries.length === 0) {
209
+ await rm(installDir, { recursive: true, force: true });
210
+ logger.debug(`[kimi-plugin] Removed empty install directory: ${installDir}`);
211
+ }
212
+ }
213
+ }
214
+ catch (error) {
215
+ logger.warn(`[kimi-plugin] Could not remove install directory ${installDir}`, error instanceof Error ? error.message : String(error));
216
+ }
217
+ // Remove npm wrapper package if present
218
+ await super.uninstall();
219
+ }
220
+ /**
221
+ * Get Kimi version by parsing 'kimi --version' output.
222
+ * Extracts the first semantic version found in the output.
223
+ *
224
+ * Checks the native installer full path first on Unix systems, then falls
225
+ * back to the command in PATH for other installation methods.
226
+ */
227
+ async getVersion() {
228
+ if (!this.metadata.cliCommand) {
229
+ return null;
230
+ }
231
+ const parseVersion = (output) => {
232
+ const match = output.match(/(\d+\.\d+\.\d+)/);
233
+ return match ? match[1] : output.trim() || null;
234
+ };
235
+ // Try native installer full path first on Unix systems
236
+ // (native installer places binary at ~/.kimi-code/bin/kimi)
237
+ if (process.platform !== 'win32') {
238
+ const nativePath = resolveHomeDir(KIMI_NATIVE_BINARY_PATH);
239
+ try {
240
+ const result = await exec(nativePath, ['--version']);
241
+ return parseVersion(result.stdout);
242
+ }
243
+ catch {
244
+ // Native path check failed, fall through to legacy path
245
+ }
246
+ // Legacy / npm location
247
+ const fullPath = resolveHomeDir('.local/bin/kimi');
248
+ try {
249
+ const result = await exec(fullPath, ['--version']);
250
+ return parseVersion(result.stdout);
251
+ }
252
+ catch {
253
+ // Full path check failed, fall through to PATH check
254
+ }
255
+ }
256
+ // Fall back to command in PATH
257
+ try {
258
+ const result = await exec(this.metadata.cliCommand, ['--version']);
259
+ return parseVersion(result.stdout);
260
+ }
261
+ catch {
262
+ return null;
263
+ }
264
+ }
265
+ async installVersion(version) {
266
+ // Resolve 'supported' to the version from metadata
267
+ let resolvedVersion = version;
268
+ if (version === 'supported') {
269
+ if (!this.metadata.supportedVersion) {
270
+ throw new AgentInstallationError(this.metadata.name, 'No supported version defined in metadata');
271
+ }
272
+ resolvedVersion = this.metadata.supportedVersion;
273
+ logger.debug('Resolved version', {
274
+ from: 'supported',
275
+ to: resolvedVersion,
276
+ });
277
+ }
278
+ else if (version === 'npm' || version === 'latest' || version === 'stable') {
279
+ // The 'npm', 'latest', and 'stable' channels request the latest build.
280
+ // Kimi uses the native installer, so passing undefined installs the
281
+ // latest version.
282
+ resolvedVersion = undefined;
283
+ }
284
+ // Reject unknown channels and invalid semantic versions.
285
+ if (version) {
286
+ const allowedChannels = ['latest', 'stable', 'supported', 'npm'];
287
+ const isAllowedChannel = allowedChannels.includes(version);
288
+ const isValidVersion = isValidSemanticVersion(version);
289
+ if (!isAllowedChannel && !isValidVersion) {
290
+ throw new AgentInstallationError(this.metadata.name, `Invalid version format: '${version}'. Expected semantic version (e.g., '1.0.0'), 'latest', 'stable', 'supported', or 'npm'.`);
291
+ }
292
+ }
293
+ await this.installNative(resolvedVersion);
294
+ }
295
+ async setupProxy(env) {
296
+ if (env.CODEMIE_PROVIDER === 'ai-run-sso' || env.CODEMIE_AUTH_METHOD === 'jwt') {
297
+ // Resolve before BaseAgentAdapter builds the proxy config because CODEMIE_MODEL
298
+ // is part of the proxy startup contract.
299
+ const resolution = await resolveKimiModel(env);
300
+ env.CODEMIE_MODEL = resolution.selectedModel;
301
+ env.CODEMIE_KIMI_AVAILABLE_MODELS = resolution.availableModels.join(',');
302
+ }
303
+ await super.setupProxy(env);
304
+ }
305
+ }
306
+ function getExplicitModelArg(args) {
307
+ for (let i = 0; i < args.length; i++) {
308
+ const arg = args[i];
309
+ if (arg === '-m' || arg === '--model') {
310
+ return args[i + 1];
311
+ }
312
+ if (arg.startsWith('--model=')) {
313
+ return arg.slice('--model='.length);
314
+ }
315
+ }
316
+ return undefined;
317
+ }
318
+ //# sourceMappingURL=kimi.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.plugin.js","sourceRoot":"","sources":["../../../../src/agents/plugins/kimi/kimi.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Kimi Session Adapter
3
+ *
4
+ * Parses Kimi Code `wire.jsonl` session transcripts into the unified
5
+ * ParsedSession format used by CodeMie processors.
6
+ *
7
+ * Wire file path:
8
+ * ${KIMI_CODE_HOME}/sessions/{workDirKey}/{sessionId}/agents/main/wire.jsonl
9
+ */
10
+ import type { SessionAdapter, ParsedSession, AggregatedResult, SessionDiscoveryOptions, SessionDescriptor } from '../../core/session/BaseSessionAdapter.js';
11
+ import type { SessionProcessor, ProcessingContext } from '../../core/session/BaseProcessor.js';
12
+ import type { AgentMetadata } from '../../core/types.js';
13
+ export declare class KimiSessionAdapter implements SessionAdapter {
14
+ private readonly metadata;
15
+ readonly agentName = "kimi";
16
+ private processors;
17
+ constructor(metadata: AgentMetadata);
18
+ private initializeProcessors;
19
+ registerProcessor(processor: SessionProcessor): void;
20
+ /**
21
+ * Discover native Kimi sessions (placeholder).
22
+ */
23
+ discoverSessions(_options?: SessionDiscoveryOptions): Promise<SessionDescriptor[]>;
24
+ /**
25
+ * Parse a Kimi `wire.jsonl` file into the unified ParsedSession format.
26
+ */
27
+ parseSessionFile(filePath: string, sessionId: string): Promise<ParsedSession>;
28
+ /**
29
+ * Process a Kimi session file with all registered processors.
30
+ *
31
+ * Parses the wire.jsonl file once, runs each registered processor in priority
32
+ * order, and returns an aggregated result. This is the entry point used by
33
+ * `codemie hook` during incremental sync.
34
+ */
35
+ processSession(filePath: string, sessionId: string, context: ProcessingContext): Promise<AggregatedResult>;
36
+ private createMinimalSession;
37
+ private extractModel;
38
+ private extractTimestamps;
39
+ }
40
+ //# sourceMappingURL=kimi.session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.session.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/kimi/kimi.session.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC/F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,qBAAa,kBAAmB,YAAW,cAAc;IAI3C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,QAAQ,CAAC,SAAS,UAAU;IAC5B,OAAO,CAAC,UAAU,CAA0B;gBAEf,QAAQ,EAAE,aAAa;IAMpD,OAAO,CAAC,oBAAoB;IAK5B,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAMpD;;OAEG;IACG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKxF;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoCnF;;;;;;OAMG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;IAmF5B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,iBAAiB;CA6B1B"}