@codemieai/code 0.0.33 → 0.0.34
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.
- package/README.md +73 -7
- package/bin/codemie-opencode.js +11 -0
- package/dist/agents/codemie-code/agent.d.ts +17 -1
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +62 -3
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts +1 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +28 -2
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/prompts.d.ts +12 -3
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/prompts.js +25 -5
- package/dist/agents/codemie-code/prompts.js.map +1 -1
- package/dist/agents/codemie-code/types.d.ts +3 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +3 -1
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +33 -0
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/session/BaseSessionAdapter.d.ts +25 -0
- package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
- package/dist/agents/core/session/discovery-types.d.ts +53 -0
- package/dist/agents/core/session/discovery-types.d.ts.map +1 -0
- package/dist/agents/core/session/discovery-types.js +8 -0
- package/dist/agents/core/session/discovery-types.js.map +1 -0
- package/dist/agents/core/types.d.ts +45 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts +44 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +214 -0
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/README.md +40 -2
- package/dist/agents/plugins/claude/plugin/claude-templates/README.md +5 -5
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +177 -436
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +49 -82
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +337 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +129 -419
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +146 -693
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +110 -138
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +197 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +171 -91
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +219 -131
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +223 -98
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +131 -95
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +247 -75
- package/dist/agents/plugins/claude/plugin/commands/README.md +133 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +336 -544
- package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +232 -503
- package/dist/agents/plugins/claude/plugin/commands/memory-add.md +311 -30
- package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +218 -39
- package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/gemini.plugin.js +0 -3
- package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
- package/dist/agents/plugins/opencode/index.d.ts +8 -0
- package/dist/agents/plugins/opencode/index.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/index.js +12 -0
- package/dist/agents/plugins/opencode/index.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode-message-types.d.ts +207 -0
- package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode-message-types.js +59 -0
- package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.d.ts +65 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.js +184 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.paths.d.ts +62 -0
- package/dist/agents/plugins/opencode/opencode.paths.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.paths.js +148 -0
- package/dist/agents/plugins/opencode/opencode.paths.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.plugin.d.ts +35 -0
- package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.plugin.js +338 -0
- package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.session.d.ts +77 -0
- package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.session.js +424 -0
- package/dist/agents/plugins/opencode/opencode.session.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts +25 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.js +96 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts +30 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js +116 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +102 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +584 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +2 -0
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts +5 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/AgentsCheck.js +29 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +86 -7
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/opencode-metrics.d.ts +13 -0
- package/dist/cli/commands/opencode-metrics.d.ts.map +1 -0
- package/dist/cli/commands/opencode-metrics.js +200 -0
- package/dist/cli/commands/opencode-metrics.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +113 -0
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skill.d.ts +6 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +196 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +34 -6
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/migrations/003-remove-hooks-node.migration.d.ts +22 -0
- package/dist/migrations/003-remove-hooks-node.migration.d.ts.map +1 -0
- package/dist/migrations/003-remove-hooks-node.migration.js +103 -0
- package/dist/migrations/003-remove-hooks-node.migration.js.map +1 -0
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +1 -1
- package/dist/migrations/index.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +2 -2
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.js +14 -10
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
- package/dist/skills/core/SkillDiscovery.d.ts +83 -0
- package/dist/skills/core/SkillDiscovery.d.ts.map +1 -0
- package/dist/skills/core/SkillDiscovery.js +237 -0
- package/dist/skills/core/SkillDiscovery.js.map +1 -0
- package/dist/skills/core/SkillManager.d.ts +86 -0
- package/dist/skills/core/SkillManager.d.ts.map +1 -0
- package/dist/skills/core/SkillManager.js +155 -0
- package/dist/skills/core/SkillManager.js.map +1 -0
- package/dist/skills/core/types.d.ts +120 -0
- package/dist/skills/core/types.d.ts.map +1 -0
- package/dist/skills/core/types.js +20 -0
- package/dist/skills/core/types.js.map +1 -0
- package/dist/skills/index.d.ts +12 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +12 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/utils/content-loader.d.ts +25 -0
- package/dist/skills/utils/content-loader.d.ts.map +1 -0
- package/dist/skills/utils/content-loader.js +161 -0
- package/dist/skills/utils/content-loader.js.map +1 -0
- package/dist/skills/utils/frontmatter.d.ts +60 -0
- package/dist/skills/utils/frontmatter.d.ts.map +1 -0
- package/dist/skills/utils/frontmatter.js +114 -0
- package/dist/skills/utils/frontmatter.js.map +1 -0
- package/dist/skills/utils/pattern-matcher.d.ts +60 -0
- package/dist/skills/utils/pattern-matcher.d.ts.map +1 -0
- package/dist/skills/utils/pattern-matcher.js +97 -0
- package/dist/skills/utils/pattern-matcher.js.map +1 -0
- package/dist/utils/installation-detector.d.ts +22 -0
- package/dist/utils/installation-detector.d.ts.map +1 -0
- package/dist/utils/installation-detector.js +49 -0
- package/dist/utils/installation-detector.js.map +1 -0
- package/dist/utils/native-installer.d.ts +49 -0
- package/dist/utils/native-installer.d.ts.map +1 -0
- package/dist/utils/native-installer.js +194 -0
- package/dist/utils/native-installer.js.map +1 -0
- package/dist/utils/version-utils.d.ts +50 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +92 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +5 -2
- package/scripts/copy-mr-skill-to-global.ts +252 -0
- package/scripts/demo-hooks.sh +125 -0
- package/scripts/test-hooks.sh +196 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +0 -205
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +0 -74
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +0 -143
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +0 -127
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { AgentMetadata } from '../../core/types.js';
|
|
1
|
+
import { AgentMetadata, VersionCompatibilityResult } from '../../core/types.js';
|
|
2
2
|
import { BaseAgentAdapter } from '../../core/BaseAgentAdapter.js';
|
|
3
3
|
import type { SessionAdapter } from '../../core/session/BaseSessionAdapter.js';
|
|
4
4
|
import type { BaseExtensionInstaller } from '../../core/extension/BaseExtensionInstaller.js';
|
|
5
|
+
import { type InstallationMethod } from '../../../utils/installation-detector.js';
|
|
5
6
|
/**
|
|
6
7
|
* Claude Code Plugin Metadata
|
|
7
8
|
*/
|
|
@@ -22,5 +23,47 @@ export declare class ClaudePlugin extends BaseAgentAdapter {
|
|
|
22
23
|
* Returns installer to handle plugin installation
|
|
23
24
|
*/
|
|
24
25
|
getExtensionInstaller(): BaseExtensionInstaller;
|
|
26
|
+
/**
|
|
27
|
+
* Get Claude version (override from BaseAgentAdapter)
|
|
28
|
+
* Parses version from 'claude --version' output
|
|
29
|
+
* Claude outputs: "2.1.23 (Claude Code)" - we need just "2.1.23"
|
|
30
|
+
*
|
|
31
|
+
* @returns Version string or null if not installed
|
|
32
|
+
*/
|
|
33
|
+
getVersion(): Promise<string | null>;
|
|
34
|
+
/**
|
|
35
|
+
* Detect how Claude was installed (npm vs native)
|
|
36
|
+
* Returns installation method for informational purposes
|
|
37
|
+
*
|
|
38
|
+
* @returns Installation method: 'npm', 'native', or 'unknown'
|
|
39
|
+
*/
|
|
40
|
+
getInstallationMethod(): Promise<InstallationMethod>;
|
|
41
|
+
/**
|
|
42
|
+
* Install Claude Code using native installer (override from BaseAgentAdapter)
|
|
43
|
+
* Installs latest available version from native installer
|
|
44
|
+
* For version-specific installs, use installVersion() method
|
|
45
|
+
*
|
|
46
|
+
* @throws {AgentInstallationError} If installation fails
|
|
47
|
+
*/
|
|
48
|
+
install(): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Install specific version of Claude Code
|
|
51
|
+
* Uses native installer with version parameter
|
|
52
|
+
* Special handling for version parameter:
|
|
53
|
+
* - undefined/'latest': Install latest available version
|
|
54
|
+
* - 'supported': Install version from metadata.supportedVersion
|
|
55
|
+
* - Semantic version string (e.g., '2.0.30'): Install specific version
|
|
56
|
+
*
|
|
57
|
+
* @param version - Version string (e.g., '2.0.30', 'latest', 'supported')
|
|
58
|
+
* @throws {AgentInstallationError} If installation fails
|
|
59
|
+
*/
|
|
60
|
+
installVersion(version?: string): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Check if installed version is compatible with CodeMie
|
|
63
|
+
* Compares against metadata.supportedVersion
|
|
64
|
+
*
|
|
65
|
+
* @returns Version compatibility result with status and version info
|
|
66
|
+
*/
|
|
67
|
+
checkVersionCompatibility(): Promise<VersionCompatibilityResult>;
|
|
25
68
|
}
|
|
26
69
|
//# sourceMappingURL=claude.plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.plugin.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/claude/claude.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.plugin.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/claude/claude.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAK7F,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE5G;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aA+FlC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,kBAAkB,CAAyB;;IAUnD;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;;OAGG;IACH,qBAAqB,IAAI,sBAAsB;IAI/C;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsB1C;;;;;OAKG;IACG,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAQ1D;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;;;;;;;;;OAUG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ErD;;;;;OAKG;IACG,yBAAyB,IAAI,OAAO,CAAC,0BAA0B,CAAC;CA2FvE"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { BaseAgentAdapter } from '../../core/BaseAgentAdapter.js';
|
|
2
2
|
import { ClaudeSessionAdapter } from './claude.session.js';
|
|
3
3
|
import { ClaudePluginInstaller } from './claude.plugin-installer.js';
|
|
4
|
+
import { installNativeAgent } from '../../../utils/native-installer.js';
|
|
5
|
+
import { compareVersions, isValidSemanticVersion } from '../../../utils/version-utils.js';
|
|
6
|
+
import { AgentInstallationError, createErrorContext } from '../../../utils/errors.js';
|
|
7
|
+
import { logger } from '../../../utils/logger.js';
|
|
8
|
+
import { detectInstallationMethod } from '../../../utils/installation-detector.js';
|
|
4
9
|
/**
|
|
5
10
|
* Claude Code Plugin Metadata
|
|
6
11
|
*/
|
|
@@ -10,6 +15,14 @@ export const ClaudePluginMetadata = {
|
|
|
10
15
|
description: 'Claude Code - official Anthropic CLI tool',
|
|
11
16
|
npmPackage: '@anthropic-ai/claude-code',
|
|
12
17
|
cliCommand: 'claude',
|
|
18
|
+
// Version management configuration
|
|
19
|
+
supportedVersion: '2.1.22', // Latest version tested with CodeMie backend
|
|
20
|
+
// Native installer URLs (used by installNativeAgent utility)
|
|
21
|
+
installerUrls: {
|
|
22
|
+
macOS: 'https://claude.ai/install.sh',
|
|
23
|
+
windows: 'https://claude.ai/install.cmd',
|
|
24
|
+
linux: 'https://claude.ai/install.sh'
|
|
25
|
+
},
|
|
13
26
|
// Data paths (used by lifecycle hooks and analytics)
|
|
14
27
|
dataPaths: {
|
|
15
28
|
home: '.claude'
|
|
@@ -67,6 +80,13 @@ export const ClaudePluginMetadata = {
|
|
|
67
80
|
if (!env.CLAUDE_CODE_ENABLE_TELEMETRY) {
|
|
68
81
|
env.CLAUDE_CODE_ENABLE_TELEMETRY = '0';
|
|
69
82
|
}
|
|
83
|
+
// CRITICAL: Disable Claude Code auto-updater to maintain version control
|
|
84
|
+
// CodeMie manages Claude versions explicitly via installVersion() for compatibility
|
|
85
|
+
// Auto-updates could break version compatibility with CodeMie backend
|
|
86
|
+
// https://code.claude.com/docs/en/settings
|
|
87
|
+
if (!env.DISABLE_AUTOUPDATER) {
|
|
88
|
+
env.DISABLE_AUTOUPDATER = '1';
|
|
89
|
+
}
|
|
70
90
|
return env;
|
|
71
91
|
}
|
|
72
92
|
}
|
|
@@ -97,5 +117,199 @@ export class ClaudePlugin extends BaseAgentAdapter {
|
|
|
97
117
|
getExtensionInstaller() {
|
|
98
118
|
return this.extensionInstaller;
|
|
99
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Get Claude version (override from BaseAgentAdapter)
|
|
122
|
+
* Parses version from 'claude --version' output
|
|
123
|
+
* Claude outputs: "2.1.23 (Claude Code)" - we need just "2.1.23"
|
|
124
|
+
*
|
|
125
|
+
* @returns Version string or null if not installed
|
|
126
|
+
*/
|
|
127
|
+
async getVersion() {
|
|
128
|
+
if (!this.metadata.cliCommand) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
try {
|
|
132
|
+
const { exec } = await import('../../../utils/processes.js');
|
|
133
|
+
const result = await exec(this.metadata.cliCommand, ['--version']);
|
|
134
|
+
// Parse version from output like "2.1.23 (Claude Code)"
|
|
135
|
+
// Extract just the version number
|
|
136
|
+
const versionMatch = result.stdout.trim().match(/^(\d+\.\d+\.\d+)/);
|
|
137
|
+
if (versionMatch) {
|
|
138
|
+
return versionMatch[1];
|
|
139
|
+
}
|
|
140
|
+
return result.stdout.trim();
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Detect how Claude was installed (npm vs native)
|
|
148
|
+
* Returns installation method for informational purposes
|
|
149
|
+
*
|
|
150
|
+
* @returns Installation method: 'npm', 'native', or 'unknown'
|
|
151
|
+
*/
|
|
152
|
+
async getInstallationMethod() {
|
|
153
|
+
if (!this.metadata.cliCommand) {
|
|
154
|
+
return 'unknown';
|
|
155
|
+
}
|
|
156
|
+
return await detectInstallationMethod(this.metadata.cliCommand);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Install Claude Code using native installer (override from BaseAgentAdapter)
|
|
160
|
+
* Installs latest available version from native installer
|
|
161
|
+
* For version-specific installs, use installVersion() method
|
|
162
|
+
*
|
|
163
|
+
* @throws {AgentInstallationError} If installation fails
|
|
164
|
+
*/
|
|
165
|
+
async install() {
|
|
166
|
+
// Install latest available version (no version specified)
|
|
167
|
+
await this.installVersion(undefined);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Install specific version of Claude Code
|
|
171
|
+
* Uses native installer with version parameter
|
|
172
|
+
* Special handling for version parameter:
|
|
173
|
+
* - undefined/'latest': Install latest available version
|
|
174
|
+
* - 'supported': Install version from metadata.supportedVersion
|
|
175
|
+
* - Semantic version string (e.g., '2.0.30'): Install specific version
|
|
176
|
+
*
|
|
177
|
+
* @param version - Version string (e.g., '2.0.30', 'latest', 'supported')
|
|
178
|
+
* @throws {AgentInstallationError} If installation fails
|
|
179
|
+
*/
|
|
180
|
+
async installVersion(version) {
|
|
181
|
+
const metadata = this.metadata;
|
|
182
|
+
// Resolve 'supported' to actual version from metadata
|
|
183
|
+
let resolvedVersion = version;
|
|
184
|
+
if (version === 'supported') {
|
|
185
|
+
if (!metadata.supportedVersion) {
|
|
186
|
+
throw new AgentInstallationError(metadata.name, 'No supported version defined in metadata');
|
|
187
|
+
}
|
|
188
|
+
resolvedVersion = metadata.supportedVersion;
|
|
189
|
+
logger.debug('Resolved version', {
|
|
190
|
+
from: 'supported',
|
|
191
|
+
to: resolvedVersion,
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// SECURITY: Validate version format to prevent command injection
|
|
195
|
+
// Only allow semantic versions (e.g., "2.0.30") or special channels
|
|
196
|
+
if (resolvedVersion) {
|
|
197
|
+
const allowedChannels = ['latest', 'stable'];
|
|
198
|
+
const isValidChannel = allowedChannels.includes(resolvedVersion.toLowerCase());
|
|
199
|
+
const isValidVersion = isValidSemanticVersion(resolvedVersion);
|
|
200
|
+
if (!isValidChannel && !isValidVersion) {
|
|
201
|
+
throw new AgentInstallationError(metadata.name, `Invalid version format: "${resolvedVersion}". Expected semantic version (e.g., "2.0.30"), "latest", or "stable".`);
|
|
202
|
+
}
|
|
203
|
+
logger.debug('Version validation passed', {
|
|
204
|
+
version: resolvedVersion,
|
|
205
|
+
isValidChannel,
|
|
206
|
+
isValidVersion,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
// Validate installer URLs are configured
|
|
210
|
+
if (!metadata.installerUrls) {
|
|
211
|
+
throw new AgentInstallationError(metadata.name, 'No installer URLs configured for native installation');
|
|
212
|
+
}
|
|
213
|
+
logger.info(`Installing ${metadata.displayName} ${resolvedVersion || 'latest'}...`);
|
|
214
|
+
// Execute native installer
|
|
215
|
+
const result = await installNativeAgent(metadata.name, metadata.installerUrls, resolvedVersion, {
|
|
216
|
+
timeout: 120000, // 2 minute timeout
|
|
217
|
+
verifyCommand: metadata.cliCommand || undefined,
|
|
218
|
+
installFlags: ['--force'], // Force installation to overwrite existing version
|
|
219
|
+
});
|
|
220
|
+
if (!result.success) {
|
|
221
|
+
throw new AgentInstallationError(metadata.name, `Installation failed. Output: ${result.output}`);
|
|
222
|
+
}
|
|
223
|
+
logger.success(`${metadata.displayName} ${result.installedVersion || resolvedVersion || 'latest'} installed successfully`);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Check if installed version is compatible with CodeMie
|
|
227
|
+
* Compares against metadata.supportedVersion
|
|
228
|
+
*
|
|
229
|
+
* @returns Version compatibility result with status and version info
|
|
230
|
+
*/
|
|
231
|
+
async checkVersionCompatibility() {
|
|
232
|
+
const metadata = this.metadata;
|
|
233
|
+
const supportedVersion = metadata.supportedVersion || 'latest';
|
|
234
|
+
// Get installed version
|
|
235
|
+
const installedVersion = await this.getVersion();
|
|
236
|
+
logger.debug('Checking version compatibility', {
|
|
237
|
+
installedVersion,
|
|
238
|
+
supportedVersion,
|
|
239
|
+
});
|
|
240
|
+
// If not installed, return incompatible
|
|
241
|
+
if (!installedVersion) {
|
|
242
|
+
return {
|
|
243
|
+
compatible: false,
|
|
244
|
+
installedVersion: null,
|
|
245
|
+
supportedVersion,
|
|
246
|
+
isNewer: false,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
// If no supported version configured, consider compatible
|
|
250
|
+
if (!metadata.supportedVersion) {
|
|
251
|
+
return {
|
|
252
|
+
compatible: true,
|
|
253
|
+
installedVersion,
|
|
254
|
+
supportedVersion: 'latest',
|
|
255
|
+
isNewer: false,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
// Compare versions
|
|
259
|
+
try {
|
|
260
|
+
const comparison = compareVersions(installedVersion, supportedVersion);
|
|
261
|
+
logger.debug('Version comparison result', {
|
|
262
|
+
comparison,
|
|
263
|
+
installedVersion,
|
|
264
|
+
supportedVersion,
|
|
265
|
+
compatible: comparison <= 0,
|
|
266
|
+
isNewer: comparison > 0,
|
|
267
|
+
});
|
|
268
|
+
return {
|
|
269
|
+
compatible: comparison <= 0, // Compatible if installed <= supported
|
|
270
|
+
installedVersion,
|
|
271
|
+
supportedVersion,
|
|
272
|
+
isNewer: comparison > 0, // Newer if installed > supported (warning case)
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
// If version comparison fails, provide comprehensive error context for debugging
|
|
277
|
+
const errorContext = createErrorContext(error, {
|
|
278
|
+
agent: metadata.name,
|
|
279
|
+
});
|
|
280
|
+
// Differentiate between parse errors (non-standard format) and unexpected errors
|
|
281
|
+
const isParseError = error instanceof Error && error.message.includes('Invalid semantic version');
|
|
282
|
+
if (isParseError) {
|
|
283
|
+
// Parse error: version format not recognized (e.g., "2.1.22 (Claude Code)" or custom format)
|
|
284
|
+
logger.warn('Non-standard version format detected, treating as incompatible', {
|
|
285
|
+
...errorContext,
|
|
286
|
+
operation: 'checkVersionCompatibility',
|
|
287
|
+
phase: 'version_comparison',
|
|
288
|
+
installedVersion,
|
|
289
|
+
supportedVersion,
|
|
290
|
+
reason: 'parse_error',
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
// Unexpected error: something went wrong during comparison
|
|
295
|
+
logger.error('Version compatibility check failed unexpectedly', {
|
|
296
|
+
...errorContext,
|
|
297
|
+
operation: 'checkVersionCompatibility',
|
|
298
|
+
phase: 'version_comparison',
|
|
299
|
+
installedVersion,
|
|
300
|
+
supportedVersion,
|
|
301
|
+
reason: 'unexpected_error',
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
// Return incompatible (safer default) - users should be aware of version issues
|
|
305
|
+
// Don't throw - this would break user experience during setup/execution
|
|
306
|
+
return {
|
|
307
|
+
compatible: false,
|
|
308
|
+
installedVersion,
|
|
309
|
+
supportedVersion,
|
|
310
|
+
isNewer: false,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
100
314
|
}
|
|
101
315
|
//# sourceMappingURL=claude.plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.plugin.js","sourceRoot":"","sources":["../../../../src/agents/plugins/claude/claude.plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.plugin.js","sourceRoot":"","sources":["../../../../src/agents/plugins/claude/claude.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,9 +84,45 @@ Once loaded, the plugin automatically:
|
|
|
84
84
|
|
|
85
85
|
### Available Commands
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
The plugin provides several built-in commands for project documentation and memory management.
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
#### Documentation Generation
|
|
90
|
+
|
|
91
|
+
**`/codemie-init`** - Generate AI-optimized project documentation
|
|
92
|
+
```bash
|
|
93
|
+
# Analyze codebase and create CLAUDE.md + guides
|
|
94
|
+
/codemie-init
|
|
95
|
+
|
|
96
|
+
# With additional context
|
|
97
|
+
/codemie-init "focus on API patterns"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**`/codemie-subagents`** - Generate project-specific subagents
|
|
101
|
+
```bash
|
|
102
|
+
# Create tailored subagent files in .claude/agents/
|
|
103
|
+
/codemie-subagents
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
#### Memory Management
|
|
107
|
+
|
|
108
|
+
**`/memory-add`** - Capture important learnings
|
|
109
|
+
```bash
|
|
110
|
+
# Add knowledge to project documentation
|
|
111
|
+
/memory-add
|
|
112
|
+
|
|
113
|
+
# With specific context
|
|
114
|
+
/memory-add "auth flow requires initialization"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**`/memory-refresh`** - Audit and update documentation
|
|
118
|
+
```bash
|
|
119
|
+
# Verify docs match current implementation
|
|
120
|
+
/memory-refresh
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Status
|
|
124
|
+
|
|
125
|
+
**`/codemie-status`** - Display session tracking status:
|
|
90
126
|
|
|
91
127
|
```
|
|
92
128
|
CodeMie Session Status
|
|
@@ -98,6 +134,8 @@ Sync: ✓ Connected (last: 30s ago)
|
|
|
98
134
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
99
135
|
```
|
|
100
136
|
|
|
137
|
+
**See [commands/README.md](./commands/README.md) for detailed usage and examples.**
|
|
138
|
+
|
|
101
139
|
## Hook Events
|
|
102
140
|
|
|
103
141
|
The plugin registers the following hooks:
|
|
@@ -38,7 +38,7 @@ claude-templates/
|
|
|
38
38
|
├── api/
|
|
39
39
|
│ └── api-patterns.md.template
|
|
40
40
|
├── architecture/
|
|
41
|
-
│ └──
|
|
41
|
+
│ └── architecture.md.template
|
|
42
42
|
├── data/
|
|
43
43
|
│ └── database-patterns.md.template
|
|
44
44
|
├── development/
|
|
@@ -160,7 +160,7 @@ claude-templates/
|
|
|
160
160
|
- **development/security-patterns.md.template**: Authentication, validation, encryption
|
|
161
161
|
- **development/setup-guide.md.template**: Installation and setup
|
|
162
162
|
- **api/api-patterns.md.template**: REST/GraphQL endpoint patterns
|
|
163
|
-
- **architecture/
|
|
163
|
+
- **architecture/architecture.md.template**: Directory structure, layered architecture, and organizational patterns
|
|
164
164
|
- **data/database-patterns.md.template**: ORM, queries, transactions, migrations
|
|
165
165
|
- **testing/testing-patterns.md.template**: Unit/integration tests, fixtures, mocking
|
|
166
166
|
- **standards/code-quality.md.template**: Linting, formatting, type safety
|
|
@@ -410,7 +410,7 @@ The process includes 5 decision gates where Claude Code checks:
|
|
|
410
410
|
|
|
411
411
|
**Generated guides**:
|
|
412
412
|
- api/api-patterns.md (FastAPI endpoints)
|
|
413
|
-
- architecture/
|
|
413
|
+
- architecture/architecture.md (router→service→repository layers and project structure)
|
|
414
414
|
- data/database-patterns.md (SQLAlchemy models, queries)
|
|
415
415
|
- development/error-handling.md (FastAPI exception handlers)
|
|
416
416
|
- development/logging-patterns.md (Python logging)
|
|
@@ -435,7 +435,7 @@ The process includes 5 decision gates where Claude Code checks:
|
|
|
435
435
|
|
|
436
436
|
**Generated guides**:
|
|
437
437
|
- api/api-patterns.md (Express routes)
|
|
438
|
-
- architecture/
|
|
438
|
+
- architecture/architecture.md (routes→services→repositories layers and project structure)
|
|
439
439
|
- data/database-patterns.md (Mongoose schemas, queries)
|
|
440
440
|
- development/error-handling.md (Express error middleware)
|
|
441
441
|
- development/logging-patterns.md (Winston/Morgan)
|
|
@@ -460,7 +460,7 @@ The process includes 5 decision gates where Claude Code checks:
|
|
|
460
460
|
|
|
461
461
|
**Generated guides**:
|
|
462
462
|
- api/api-patterns.md (REST controllers)
|
|
463
|
-
- architecture/
|
|
463
|
+
- architecture/architecture.md (controller→service→repository layers and project structure)
|
|
464
464
|
- data/database-patterns.md (JPA entities, repositories)
|
|
465
465
|
- development/error-handling.md (Exception handlers)
|
|
466
466
|
- development/logging-patterns.md (SLF4J/Logback)
|