@codemieai/code 0.0.40 → 0.0.41

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 (75) hide show
  1. package/README.md +2 -3
  2. package/bin/codemie-opencode.js +8 -1
  3. package/dist/agents/codemie-code/skills/index.d.ts +4 -0
  4. package/dist/agents/codemie-code/skills/index.d.ts.map +1 -1
  5. package/dist/agents/codemie-code/skills/index.js +4 -0
  6. package/dist/agents/codemie-code/skills/index.js.map +1 -1
  7. package/dist/agents/codemie-code/skills/sync/SkillSync.d.ts +52 -0
  8. package/dist/agents/codemie-code/skills/sync/SkillSync.d.ts.map +1 -0
  9. package/dist/agents/codemie-code/skills/sync/SkillSync.js +165 -0
  10. package/dist/agents/codemie-code/skills/sync/SkillSync.js.map +1 -0
  11. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  12. package/dist/agents/core/AgentCLI.js +17 -14
  13. package/dist/agents/core/AgentCLI.js.map +1 -1
  14. package/dist/agents/core/BaseAgentAdapter.d.ts +10 -1
  15. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  16. package/dist/agents/core/BaseAgentAdapter.js +126 -3
  17. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  18. package/dist/agents/core/types.d.ts +10 -0
  19. package/dist/agents/core/types.d.ts.map +1 -1
  20. package/dist/agents/plugins/claude/claude.plugin.d.ts +1 -8
  21. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  22. package/dist/agents/plugins/claude/claude.plugin.js +95 -100
  23. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  24. package/dist/agents/plugins/claude/plugin/codemie-statusline.mjs +42 -0
  25. package/dist/agents/plugins/codemie-code-binary.d.ts +17 -0
  26. package/dist/agents/plugins/codemie-code-binary.d.ts.map +1 -0
  27. package/dist/agents/plugins/codemie-code-binary.js +94 -0
  28. package/dist/agents/plugins/codemie-code-binary.js.map +1 -0
  29. package/dist/agents/plugins/codemie-code.plugin.d.ts +53 -12
  30. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  31. package/dist/agents/plugins/codemie-code.plugin.js +359 -147
  32. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  33. package/dist/agents/plugins/gemini/gemini.plugin.d.ts +8 -0
  34. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
  35. package/dist/agents/plugins/gemini/gemini.plugin.js +44 -0
  36. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  37. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts +12 -2
  38. package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -1
  39. package/dist/agents/plugins/opencode/opencode-model-configs.js +240 -24
  40. package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -1
  41. package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -1
  42. package/dist/agents/plugins/opencode/opencode.plugin.js +62 -24
  43. package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -1
  44. package/dist/agents/registry.d.ts.map +1 -1
  45. package/dist/agents/registry.js +8 -7
  46. package/dist/agents/registry.js.map +1 -1
  47. package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
  48. package/dist/cli/commands/doctor/checks/AgentsCheck.js +5 -2
  49. package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
  50. package/dist/cli/commands/doctor/checks/FrameworksCheck.d.ts.map +1 -1
  51. package/dist/cli/commands/doctor/checks/FrameworksCheck.js +5 -2
  52. package/dist/cli/commands/doctor/checks/FrameworksCheck.js.map +1 -1
  53. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  54. package/dist/cli/commands/doctor/index.js +87 -91
  55. package/dist/cli/commands/doctor/index.js.map +1 -1
  56. package/dist/cli/commands/hook.d.ts.map +1 -1
  57. package/dist/cli/commands/hook.js +23 -0
  58. package/dist/cli/commands/hook.js.map +1 -1
  59. package/dist/cli/commands/skill.d.ts.map +1 -1
  60. package/dist/cli/commands/skill.js +80 -1
  61. package/dist/cli/commands/skill.js.map +1 -1
  62. package/dist/cli/index.js +7 -13
  63. package/dist/cli/index.js.map +1 -1
  64. package/dist/providers/plugins/sso/sso.auth.d.ts +3 -1
  65. package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
  66. package/dist/providers/plugins/sso/sso.auth.js +70 -12
  67. package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
  68. package/dist/utils/logger.d.ts +1 -0
  69. package/dist/utils/logger.d.ts.map +1 -1
  70. package/dist/utils/logger.js +16 -1
  71. package/dist/utils/logger.js.map +1 -1
  72. package/dist/utils/native-installer.d.ts.map +1 -1
  73. package/dist/utils/native-installer.js +35 -0
  74. package/dist/utils/native-installer.js.map +1 -1
  75. package/package.json +2 -1
@@ -1,182 +1,394 @@
1
- import { logger } from '../../utils/logger.js';
2
- import { CodeMieCode } from '../codemie-code/index.js';
3
- import { loadCodeMieConfig } from '../codemie-code/config.js';
1
+ import { tmpdir } from 'os';
4
2
  import { join } from 'path';
5
- import { readFileSync } from 'fs';
6
- import { getDirname } from '../../utils/paths.js';
7
- import { getRandomWelcomeMessage, getRandomGoodbyeMessage } from '../../utils/goodbye-messages.js';
8
- import { renderProfileInfo } from '../../utils/profile.js';
9
- import chalk from 'chalk';
3
+ import { existsSync, writeFileSync, unlinkSync } from 'fs';
4
+ import { logger } from '../../utils/logger.js';
5
+ import { getModelConfig, getAllOpenCodeModelConfigs } from './opencode/opencode-model-configs.js';
6
+ import { BaseAgentAdapter } from '../core/BaseAgentAdapter.js';
7
+ import { installGlobal, uninstallGlobal } from '../../utils/processes.js';
8
+ import { OpenCodeSessionAdapter } from './opencode/opencode.session.js';
9
+ import { resolveCodemieOpenCodeBinary, getPlatformPackage } from './codemie-code-binary.js';
10
10
  /**
11
11
  * Built-in agent name constant - single source of truth
12
12
  */
13
13
  export const BUILTIN_AGENT_NAME = 'codemie-code';
14
+ const OPENCODE_SUBCOMMANDS = ['run', 'chat', 'config', 'init', 'help', 'version'];
15
+ /**
16
+ * Convert a short model ID to Bedrock inference profile format.
17
+ * Bedrock requires region-prefixed ARN-style model IDs.
18
+ *
19
+ * Examples:
20
+ * claude-sonnet-4-5-20250929 → us.anthropic.claude-sonnet-4-5-20250929-v1:0
21
+ * claude-opus-4-6 → us.anthropic.claude-opus-4-6-v1:0
22
+ *
23
+ * If the model ID already contains 'anthropic.', it's returned as-is.
24
+ */
25
+ function toBedrockModelId(modelId, region) {
26
+ if (modelId.includes('anthropic.'))
27
+ return modelId;
28
+ const regionPrefix = region?.startsWith('eu') ? 'eu'
29
+ : region?.startsWith('ap') ? 'ap'
30
+ : 'us';
31
+ return `${regionPrefix}.anthropic.${modelId}-v1:0`;
32
+ }
33
+ // Environment variable size limit (conservative - varies by platform)
34
+ // Linux: ~128KB per var, Windows: ~32KB total env block
35
+ const MAX_ENV_SIZE = 32 * 1024;
36
+ // Track temp config files for cleanup on process exit
37
+ const tempConfigFiles = [];
38
+ let cleanupRegistered = false;
39
+ /**
40
+ * Register process exit handler for temp file cleanup (best effort)
41
+ * Only registers once, even if beforeRun is called multiple times
42
+ */
43
+ function registerCleanupHandler() {
44
+ if (cleanupRegistered)
45
+ return;
46
+ cleanupRegistered = true;
47
+ process.on('exit', () => {
48
+ for (const file of tempConfigFiles) {
49
+ try {
50
+ unlinkSync(file);
51
+ logger.debug(`[codemie-code] Cleaned up temp config: ${file}`);
52
+ }
53
+ catch {
54
+ // Ignore cleanup errors - file may already be deleted
55
+ }
56
+ }
57
+ });
58
+ }
59
+ /**
60
+ * Write config to temp file as fallback when env var size exceeded
61
+ * Returns the temp file path
62
+ */
63
+ function writeConfigToTempFile(configJson) {
64
+ const configPath = join(tmpdir(), `codemie-code-config-${process.pid}-${Date.now()}.json`);
65
+ writeFileSync(configPath, configJson, 'utf-8');
66
+ tempConfigFiles.push(configPath);
67
+ registerCleanupHandler();
68
+ return configPath;
69
+ }
70
+ /**
71
+ * Ensure session metadata file exists for SessionSyncer
72
+ * Creates or updates the session file in ~/.codemie/sessions/
73
+ */
74
+ async function ensureSessionFile(sessionId, env) {
75
+ try {
76
+ const { SessionStore } = await import('../core/session/SessionStore.js');
77
+ const sessionStore = new SessionStore();
78
+ const existing = await sessionStore.loadSession(sessionId);
79
+ if (existing) {
80
+ logger.debug('[codemie-code] Session file already exists');
81
+ return;
82
+ }
83
+ const agentName = env.CODEMIE_AGENT || 'codemie-code';
84
+ const provider = env.CODEMIE_PROVIDER || 'unknown';
85
+ const project = env.CODEMIE_PROJECT;
86
+ const workingDirectory = process.cwd();
87
+ let gitBranch;
88
+ try {
89
+ const { detectGitBranch } = await import('../../utils/processes.js');
90
+ gitBranch = await detectGitBranch(workingDirectory);
91
+ }
92
+ catch {
93
+ // Git detection optional
94
+ }
95
+ const estimatedStartTime = Date.now() - 2000;
96
+ const session = {
97
+ sessionId,
98
+ agentName,
99
+ provider,
100
+ ...(project && { project }),
101
+ startTime: estimatedStartTime,
102
+ workingDirectory,
103
+ ...(gitBranch && { gitBranch }),
104
+ status: 'completed',
105
+ activeDurationMs: 0,
106
+ correlation: {
107
+ status: 'matched',
108
+ agentSessionId: 'unknown',
109
+ retryCount: 0
110
+ }
111
+ };
112
+ await sessionStore.saveSession(session);
113
+ logger.debug('[codemie-code] Created session metadata file');
114
+ }
115
+ catch (error) {
116
+ logger.warn('[codemie-code] Failed to create session file:', error);
117
+ }
118
+ }
119
+ /**
120
+ * Map user-facing provider name to OpenCode's internal provider identifier.
121
+ */
122
+ function determineActiveProvider(provider) {
123
+ if (provider === 'ollama')
124
+ return 'ollama';
125
+ if (provider === 'bedrock')
126
+ return 'amazon-bedrock';
127
+ return 'codemie-proxy';
128
+ }
129
+ /**
130
+ * Normalize the Ollama base URL to include /v1 suffix.
131
+ * Non-ollama providers get the default localhost URL.
132
+ */
133
+ function resolveOllamaBaseUrl(baseUrl, provider) {
134
+ if (provider !== 'ollama')
135
+ return 'http://localhost:11434/v1';
136
+ if (baseUrl.endsWith('/v1') || baseUrl.includes('/v1/'))
137
+ return baseUrl;
138
+ return `${baseUrl.replace(/\/$/, '')}/v1`;
139
+ }
140
+ /**
141
+ * Build the OpenCode config object that gets passed to the whitelabel binary.
142
+ */
143
+ function buildOpenCodeConfig(params) {
144
+ return {
145
+ enabled_providers: ['codemie-proxy', 'ollama', 'amazon-bedrock'],
146
+ share: 'disabled',
147
+ provider: {
148
+ ...(params.proxyBaseUrl && {
149
+ 'codemie-proxy': {
150
+ npm: '@ai-sdk/openai-compatible',
151
+ name: 'CodeMie SSO',
152
+ options: {
153
+ baseURL: `${params.proxyBaseUrl}/`,
154
+ apiKey: 'proxy-handled',
155
+ timeout: params.timeout,
156
+ ...(params.providerOptions?.headers && { headers: params.providerOptions.headers })
157
+ },
158
+ models: params.allModels
159
+ }
160
+ }),
161
+ ollama: {
162
+ npm: '@ai-sdk/openai-compatible',
163
+ name: 'Ollama',
164
+ options: {
165
+ baseURL: `${params.ollamaBaseUrl}/`,
166
+ apiKey: 'ollama',
167
+ timeout: params.timeout,
168
+ }
169
+ }
170
+ },
171
+ model: `${params.activeProvider}/${params.modelId}`
172
+ };
173
+ }
174
+ // Resolve binary at load time, fallback to 'codemie'
175
+ const resolvedBinary = resolveCodemieOpenCodeBinary();
14
176
  /**
15
- * CodeMie-Code Plugin Metadata
177
+ * Environment variable contract between the umbrella CLI and whitelabel binary.
178
+ *
179
+ * The umbrella CLI orchestrates everything (proxy, auth, metrics, session sync)
180
+ * and spawns the whitelabel binary as a child process. The whitelabel knows
181
+ * nothing about SSO, cookies, or metrics — it just sees an OpenAI-compatible
182
+ * endpoint at localhost.
183
+ *
184
+ * Flow: BaseAgentAdapter.run() → setupProxy() → beforeRun hook → spawn(binary)
185
+ *
186
+ * | Env Var | Set By | Consumed By | Purpose |
187
+ * |--------------------------|----------------------|----------------------|------------------------------------------------|
188
+ * | OPENCODE_CONFIG_CONTENT | beforeRun hook | Whitelabel config.ts | Full provider config JSON (proxy URL, models) |
189
+ * | OPENCODE_CONFIG | beforeRun (fallback) | Whitelabel config.ts | Temp file path when JSON exceeds env var limit |
190
+ * | OPENCODE_DISABLE_SHARE | beforeRun hook | Whitelabel | Disables share functionality |
191
+ * | CODEMIE_SESSION_ID | BaseAgentAdapter | onSessionEnd hook | Session ID for metrics correlation |
192
+ * | CODEMIE_AGENT | BaseAgentAdapter | Lifecycle helpers | Agent name ('codemie-code') |
193
+ * | CODEMIE_PROVIDER | Config loader | setupProxy() | Provider name (e.g., 'ai-run-sso') |
194
+ * | CODEMIE_BASE_URL | setupProxy() | beforeRun hook | Proxy URL (http://localhost:{port}) |
195
+ * | CODEMIE_MODEL | Config/CLI | beforeRun hook | Selected model ID |
196
+ * | CODEMIE_PROJECT | SSO exportEnvVars | Session metadata | CodeMie project name |
16
197
  */
17
198
  export const CodeMieCodePluginMetadata = {
18
199
  name: BUILTIN_AGENT_NAME,
19
- displayName: 'CodeMie Native',
20
- description: 'Built-in LangGraph-based coding assistant',
21
- npmPackage: null, // Built-in
22
- cliCommand: null, // No external CLI
23
- envMapping: {},
24
- supportedProviders: ['ollama', 'litellm', 'ai-run-sso'],
25
- blockedModelPatterns: [],
26
- // Built-in agent doesn't use proxy (handles auth internally)
27
- ssoConfig: undefined,
28
- customOptions: [
29
- { flags: '--task <task>', description: 'Execute a single task and exit' },
30
- { flags: '--debug', description: 'Enable debug logging' },
31
- { flags: '--plan', description: 'Enable planning mode' },
32
- { flags: '--plan-only', description: 'Plan without execution' }
33
- ],
34
- isBuiltIn: true,
35
- // Custom handler for built-in agent
36
- customRunHandler: async (args, options) => {
37
- try {
38
- // Check if we have a valid configuration first
39
- const workingDir = process.cwd();
40
- let config;
41
- try {
42
- config = await loadCodeMieConfig(workingDir);
200
+ displayName: 'CodeMie Code',
201
+ description: 'CodeMie Code - AI coding assistant',
202
+ npmPackage: '@codemieai/codemie-opencode',
203
+ cliCommand: resolvedBinary || 'codemie',
204
+ dataPaths: {
205
+ home: '.opencode'
206
+ },
207
+ envMapping: {
208
+ baseUrl: [],
209
+ apiKey: [],
210
+ model: []
211
+ },
212
+ supportedProviders: ['litellm', 'ai-run-sso', 'ollama', 'bedrock'],
213
+ ssoConfig: { enabled: true, clientType: 'codemie-code' },
214
+ lifecycle: {
215
+ async beforeRun(env, config) {
216
+ const sessionId = env.CODEMIE_SESSION_ID;
217
+ if (sessionId) {
218
+ // ensureSessionFile handles its own errors internally
219
+ await ensureSessionFile(sessionId, env);
43
220
  }
44
- catch (error) {
45
- const errorMessage = error instanceof Error ? error.message : String(error);
46
- logger.error('Configuration loading failed:', errorMessage);
47
- throw new Error(`CodeMie configuration required: ${errorMessage}. Please run: codemie setup`);
221
+ const provider = env.CODEMIE_PROVIDER;
222
+ const baseUrl = env.CODEMIE_BASE_URL;
223
+ if (!baseUrl) {
224
+ return env;
225
+ }
226
+ if (!baseUrl.startsWith('http://') && !baseUrl.startsWith('https://')) {
227
+ logger.warn(`Invalid CODEMIE_BASE_URL format: ${baseUrl}`, { agent: 'codemie-code' });
228
+ return env;
229
+ }
230
+ const selectedModel = env.CODEMIE_MODEL || config?.model || 'gpt-5-2-2025-12-11';
231
+ const modelConfig = getModelConfig(selectedModel);
232
+ const { providerOptions } = modelConfig;
233
+ const allModels = getAllOpenCodeModelConfigs();
234
+ const isBedrock = provider === 'bedrock';
235
+ const proxyBaseUrl = provider !== 'ollama' && !isBedrock ? baseUrl : undefined;
236
+ const ollamaBaseUrl = resolveOllamaBaseUrl(baseUrl, provider);
237
+ const activeProvider = determineActiveProvider(provider);
238
+ const timeout = providerOptions?.timeout ?? parseInt(env.CODEMIE_TIMEOUT || '600') * 1000;
239
+ const modelId = isBedrock
240
+ ? toBedrockModelId(modelConfig.id, env.AWS_REGION || env.CODEMIE_AWS_REGION)
241
+ : modelConfig.id;
242
+ const openCodeConfig = buildOpenCodeConfig({
243
+ proxyBaseUrl, ollamaBaseUrl, activeProvider, modelId, timeout, providerOptions, allModels
244
+ });
245
+ env.OPENCODE_DISABLE_SHARE = 'true';
246
+ const configJson = JSON.stringify(openCodeConfig);
247
+ if (configJson.length > MAX_ENV_SIZE) {
248
+ logger.warn(`Config size (${configJson.length} bytes) exceeds env var limit (${MAX_ENV_SIZE}), using temp file fallback`, {
249
+ agent: 'codemie-code'
250
+ });
251
+ const configPath = writeConfigToTempFile(configJson);
252
+ logger.debug(`[codemie-code] Wrote config to temp file: ${configPath}`);
253
+ env.OPENCODE_CONFIG = configPath;
254
+ return env;
255
+ }
256
+ env.OPENCODE_CONFIG_CONTENT = configJson;
257
+ return env;
258
+ },
259
+ enrichArgs: (args, _config) => {
260
+ if (args.length > 0 && OPENCODE_SUBCOMMANDS.includes(args[0])) {
261
+ return args;
262
+ }
263
+ const taskIndex = args.indexOf('--task');
264
+ if (taskIndex !== -1 && taskIndex < args.length - 1) {
265
+ const taskValue = args[taskIndex + 1];
266
+ const otherArgs = args.filter((arg, i, arr) => {
267
+ if (i === taskIndex || i === taskIndex + 1)
268
+ return false;
269
+ if (arg === '-m' || arg === '--message')
270
+ return false;
271
+ if (i > 0 && (arr[i - 1] === '-m' || arr[i - 1] === '--message'))
272
+ return false;
273
+ return true;
274
+ });
275
+ return ['run', ...otherArgs, taskValue];
276
+ }
277
+ return args;
278
+ },
279
+ async onSessionEnd(exitCode, env) {
280
+ const sessionId = env.CODEMIE_SESSION_ID;
281
+ if (!sessionId) {
282
+ logger.debug('[codemie-code] No CODEMIE_SESSION_ID in environment, skipping metrics processing');
283
+ return;
48
284
  }
49
- // Show welcome message with session info
50
- // Read from environment variables (same as BaseAgentAdapter)
51
- const profileName = process.env.CODEMIE_PROFILE_NAME || config.name || 'default';
52
- const provider = process.env.CODEMIE_PROVIDER || config.displayProvider || config.provider;
53
- const model = process.env.CODEMIE_MODEL || config.model;
54
- const codeMieUrl = process.env.CODEMIE_URL || config.codeMieUrl;
55
- const sessionId = process.env.CODEMIE_SESSION_ID || 'n/a';
56
- const cliVersion = process.env.CODEMIE_CLI_VERSION || 'unknown';
57
- console.log(renderProfileInfo({
58
- profile: profileName,
59
- provider,
60
- model,
61
- codeMieUrl,
62
- agent: BUILTIN_AGENT_NAME,
63
- cliVersion,
64
- sessionId
65
- }));
66
- // Show random welcome message
67
- console.log(chalk.cyan.bold(getRandomWelcomeMessage()));
68
- console.log(''); // Empty line for spacing
69
- const codeMie = new CodeMieCode(workingDir);
70
- await codeMie.initialize({ debug: options.debug });
71
285
  try {
72
- if (options.task) {
73
- await codeMie.executeTaskWithUI(options.task, {
74
- planMode: (options.plan || options.planOnly),
75
- planOnly: options.planOnly
76
- });
286
+ logger.info(`[codemie-code] Processing session metrics before SessionSyncer (code=${exitCode})`);
287
+ const adapter = new OpenCodeSessionAdapter(CodeMieCodePluginMetadata);
288
+ const sessions = await adapter.discoverSessions({ maxAgeDays: 1 });
289
+ if (sessions.length === 0) {
290
+ logger.warn('[codemie-code] No recent OpenCode sessions found for processing');
291
+ return;
77
292
  }
78
- else if (args.length > 0) {
79
- await codeMie.executeTaskWithUI(args.join(' '));
80
- if (!options.planOnly) {
81
- await codeMie.startInteractive();
82
- }
293
+ const latestSession = sessions[0];
294
+ logger.debug(`[codemie-code] Processing latest session: ${latestSession.sessionId}`);
295
+ logger.debug(`[codemie-code] OpenCode session ID: ${latestSession.sessionId}`);
296
+ logger.debug(`[codemie-code] CodeMie session ID: ${sessionId}`);
297
+ const context = {
298
+ sessionId,
299
+ apiBaseUrl: env.CODEMIE_BASE_URL || '',
300
+ cookies: '',
301
+ clientType: 'codemie-code',
302
+ version: env.CODEMIE_CLI_VERSION || '1.0.0',
303
+ dryRun: false
304
+ };
305
+ const result = await adapter.processSession(latestSession.filePath, sessionId, context);
306
+ if (result.success) {
307
+ logger.info(`[codemie-code] Metrics processing complete: ${result.totalRecords} records processed`);
308
+ logger.info('[codemie-code] Metrics written to JSONL - SessionSyncer will sync to v1/metrics next');
83
309
  }
84
310
  else {
85
- await codeMie.startInteractive();
311
+ logger.warn(`[codemie-code] Metrics processing had failures: ${result.failedProcessors.join(', ')}`);
86
312
  }
87
313
  }
88
- finally {
89
- // Show goodbye message
90
- console.log(''); // Empty line for spacing
91
- console.log(chalk.cyan.bold(getRandomGoodbyeMessage()));
92
- console.log(''); // Spacing before powered by
93
- console.log(chalk.cyan('Powered by AI/Run CodeMie CLI'));
94
- console.log(''); // Empty line for spacing
314
+ catch (error) {
315
+ const errorMessage = error instanceof Error ? error.message : String(error);
316
+ logger.error(`[codemie-code] Failed to process session metrics automatically: ${errorMessage}`);
95
317
  }
96
318
  }
97
- catch (error) {
98
- const errorMessage = error instanceof Error ? error.message : String(error);
99
- throw new Error(`Failed to run CodeMie Native: ${errorMessage}`);
100
- }
101
- },
102
- customHealthCheck: async () => {
103
- const result = await CodeMieCode.testConnection(process.cwd());
104
- if (result.success) {
105
- logger.success('CodeMie Native is healthy');
106
- console.log(`Provider: ${result.provider || 'unknown'}`);
107
- console.log(`Model: ${result.model || 'unknown'}`);
108
- return true;
109
- }
110
- else {
111
- logger.error('Health check failed:', result.error);
112
- return false;
113
- }
114
319
  }
115
320
  };
116
321
  /**
117
- * CodeMie-Code Adapter
118
- * Custom implementation for built-in agent
322
+ * CodeMie Code Plugin
323
+ * Wraps the @codemieai/codemie-opencode binary as the built-in agent
119
324
  */
120
- export class CodeMieCodePlugin {
121
- name = BUILTIN_AGENT_NAME;
122
- displayName = 'CodeMie Native';
123
- description = 'CodeMie Native Agent - Built-in LangGraph-based coding assistant';
124
- async install() {
125
- logger.info('CodeMie Native is built-in and already available');
126
- }
127
- async uninstall() {
128
- logger.info('CodeMie Native is built-in and cannot be uninstalled');
325
+ export class CodeMieCodePlugin extends BaseAgentAdapter {
326
+ sessionAdapter;
327
+ constructor() {
328
+ super(CodeMieCodePluginMetadata);
329
+ this.sessionAdapter = new OpenCodeSessionAdapter(CodeMieCodePluginMetadata);
129
330
  }
331
+ /**
332
+ * Check if the whitelabel binary is available.
333
+ * Uses existsSync on the resolved binary path instead of PATH lookup.
334
+ */
130
335
  async isInstalled() {
131
- return true;
132
- }
133
- async run(args, envOverrides) {
134
- // Set environment variables if provided
135
- if (envOverrides) {
136
- Object.assign(process.env, envOverrides);
336
+ const binaryPath = resolveCodemieOpenCodeBinary();
337
+ if (!binaryPath) {
338
+ logger.debug('[codemie-code] Whitelabel binary not found in node_modules');
339
+ logger.debug('[codemie-code] Install with: npm i -g @codemieai/codemie-opencode');
340
+ return false;
137
341
  }
138
- // Parse options from args
139
- const options = {};
140
- const filteredArgs = [];
141
- for (let i = 0; i < args.length; i++) {
142
- const arg = args[i];
143
- if (arg === '--task' && args[i + 1]) {
144
- options.task = args[i + 1];
145
- i++; // Skip next arg
146
- }
147
- else if (arg === '--debug') {
148
- options.debug = true;
149
- }
150
- else if (arg === '--plan') {
151
- options.plan = true;
152
- }
153
- else if (arg === '--plan-only') {
154
- options.planOnly = true;
342
+ const installed = existsSync(binaryPath);
343
+ if (!installed) {
344
+ logger.debug('[codemie-code] Binary path resolved but file not found');
345
+ logger.debug('[codemie-code] Install with: codemie install codemie-code');
346
+ }
347
+ return installed;
348
+ }
349
+ /**
350
+ * Install the whitelabel package globally.
351
+ */
352
+ async install() {
353
+ await installGlobal('@codemieai/codemie-opencode');
354
+ }
355
+ /**
356
+ * Uninstall the whitelabel package and its platform-specific binary.
357
+ *
358
+ * npm hoists the platform-specific binary package (e.g.
359
+ * @codemieai/codemie-opencode-darwin-arm64) to the top-level global
360
+ * node_modules. `npm uninstall -g @codemieai/codemie-opencode` only removes
361
+ * the wrapper, leaving the binary as an orphan. We explicitly remove both.
362
+ */
363
+ async uninstall() {
364
+ await uninstallGlobal('@codemieai/codemie-opencode');
365
+ const platformPkg = getPlatformPackage();
366
+ if (platformPkg) {
367
+ try {
368
+ await uninstallGlobal(platformPkg);
155
369
  }
156
- else {
157
- filteredArgs.push(arg);
370
+ catch {
371
+ // Platform package may not be hoisted separately — ignore
372
+ logger.debug(`[codemie-code] Platform package ${platformPkg} was not installed separately`);
158
373
  }
159
374
  }
160
- if (!options.debug && logger.isDebugMode()) {
161
- options.debug = true;
162
- }
163
- if (CodeMieCodePluginMetadata.customRunHandler) {
164
- await CodeMieCodePluginMetadata.customRunHandler(filteredArgs, options, {});
375
+ // Verify the binary is actually gone
376
+ const remaining = resolveCodemieOpenCodeBinary();
377
+ if (remaining) {
378
+ logger.warn(`[codemie-code] Binary still found after uninstall: ${remaining}`);
379
+ logger.warn('[codemie-code] You may need to manually remove it');
165
380
  }
166
381
  }
167
- async getVersion() {
168
- try {
169
- const packageJsonPath = join(getDirname(import.meta.url), '../../../package.json');
170
- const packageJsonContent = readFileSync(packageJsonPath, 'utf-8');
171
- const packageJson = JSON.parse(packageJsonContent);
172
- return `v${packageJson.version} (built-in)`;
173
- }
174
- catch {
175
- return 'unknown (built-in)';
176
- }
382
+ /**
383
+ * Return session adapter for analytics.
384
+ */
385
+ getSessionAdapter() {
386
+ return this.sessionAdapter;
177
387
  }
178
- getMetricsConfig() {
179
- // Built-in agent doesn't have specific metrics config
388
+ /**
389
+ * No extension installer needed.
390
+ */
391
+ getExtensionInstaller() {
180
392
  return undefined;
181
393
  }
182
394
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codemie-code.plugin.js","sourceRoot":"","sources":["../../../src/agents/plugins/codemie-code.plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codemie-code.plugin.js","sourceRoot":"","sources":["../../../src/agents/plugins/codemie-code.plugin.ts"],"names":[],"mappings":"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"}
@@ -28,5 +28,13 @@ export declare class GeminiPlugin extends BaseAgentAdapter {
28
28
  * Returns installer to handle extension installation
29
29
  */
30
30
  getExtensionInstaller(): BaseExtensionInstaller;
31
+ /**
32
+ * Get Gemini CLI version (override from BaseAgentAdapter)
33
+ * Parses version from 'gemini --version' output
34
+ * Extracts just the semver number in case output contains extra text
35
+ *
36
+ * @returns Version string or null if not installed
37
+ */
38
+ getVersion(): Promise<string | null>;
31
39
  }
32
40
  //# sourceMappingURL=gemini.plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.plugin.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/gemini/gemini.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAoF7F;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAwClC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,kBAAkB,CAAyB;;IAYnD;;;OAGG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;;OAGG;IACH,qBAAqB,IAAI,sBAAsB;CAGhD"}
1
+ {"version":3,"file":"gemini.plugin.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/gemini/gemini.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AA0G7F;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAwClC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,kBAAkB,CAAyB;;IAYnD;;;OAGG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;;OAGG;IACH,qBAAqB,IAAI,sBAAsB;IAI/C;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAqB3C"}