@codemieai/code 0.0.35 → 0.0.37
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 +33 -0
- package/dist/agents/codemie-code/agent.d.ts +1 -1
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +2 -2
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/index.js +1 -1
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/prompts.d.ts +1 -1
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.js +1 -1
- package/dist/agents/codemie-code/skills/core/SkillDiscovery.js.map +1 -0
- package/dist/agents/codemie-code/skills/core/SkillManager.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.js +1 -1
- package/dist/agents/codemie-code/skills/core/SkillManager.js.map +1 -0
- package/dist/agents/codemie-code/skills/core/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/core/types.js.map +1 -0
- package/dist/agents/codemie-code/skills/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/index.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/content-loader.d.ts.map +1 -0
- package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.js +1 -1
- package/dist/agents/codemie-code/skills/utils/content-loader.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/frontmatter.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/utils/frontmatter.js.map +1 -0
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.d.ts.map +1 -0
- package/dist/agents/codemie-code/skills/utils/pattern-matcher.js.map +1 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/assistant-invocation.js +2 -2
- package/dist/agents/codemie-code/tools/assistant-invocation.js.map +1 -1
- package/dist/agents/codemie-code/types.d.ts +1 -1
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.js +11 -4
- package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
- package/dist/agents/core/session/BaseProcessor.d.ts +22 -1
- package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +5 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-acp.plugin.js +12 -2
- package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +5 -1
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts +5 -0
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +101 -2
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +0 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +13 -19
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +29 -4
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/cli/commands/assistants/chat.js +9 -6
- package/dist/cli/commands/assistants/chat.js.map +1 -1
- package/dist/cli/commands/assistants/constants.d.ts +2 -6
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.js +2 -5
- package/dist/cli/commands/assistants/constants.js.map +1 -1
- package/dist/cli/commands/assistants/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/index.js +1 -11
- package/dist/cli/commands/assistants/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/configuration/actions.d.ts +30 -0
- package/dist/cli/commands/assistants/setup/configuration/actions.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/actions.js +63 -0
- package/dist/cli/commands/assistants/setup/configuration/actions.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.d.ts +49 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.js +56 -0
- package/dist/cli/commands/assistants/setup/configuration/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/index.d.ts +9 -0
- package/dist/cli/commands/assistants/setup/configuration/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/index.js +8 -0
- package/dist/cli/commands/assistants/setup/configuration/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.js +94 -0
- package/dist/cli/commands/assistants/setup/configuration/selection.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/types.d.ts +22 -0
- package/dist/cli/commands/assistants/setup/configuration/types.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/types.js +2 -0
- package/dist/cli/commands/assistants/setup/configuration/types.js.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.d.ts +9 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.js +86 -0
- package/dist/cli/commands/assistants/setup/configuration/ui.js.map +1 -0
- package/dist/cli/commands/assistants/setup/constants.d.ts +26 -0
- package/dist/cli/commands/assistants/setup/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/constants.js +21 -0
- package/dist/cli/commands/assistants/setup/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/data.d.ts +30 -0
- package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/data.js +125 -0
- package/dist/cli/commands/assistants/setup/data.js.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/{generators → setup/generators}/claude-agent-generator.js +6 -2
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js +94 -0
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js.map +1 -0
- package/dist/cli/commands/assistants/setup/helpers.d.ts +27 -0
- package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/helpers.js +94 -0
- package/dist/cli/commands/assistants/setup/helpers.js.map +1 -0
- package/dist/cli/commands/assistants/setup/index.d.ts +17 -0
- package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/index.js +193 -0
- package/dist/cli/commands/assistants/setup/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.d.ts +47 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.js +140 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/actions.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.d.ts +56 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.js +61 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.js +48 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.d.ts +6 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.js +90 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/interactive-prompt.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts +37 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.js +2 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.js.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.d.ts +6 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js +103 -0
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/actions.d.ts +31 -0
- package/dist/cli/commands/assistants/setup/selection/actions.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/actions.js +321 -0
- package/dist/cli/commands/assistants/setup/selection/actions.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/constants.d.ts +79 -0
- package/dist/cli/commands/assistants/setup/selection/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/constants.js +90 -0
- package/dist/cli/commands/assistants/setup/selection/constants.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/index.d.ts +25 -0
- package/dist/cli/commands/assistants/setup/selection/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/index.js +127 -0
- package/dist/cli/commands/assistants/setup/selection/index.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts +20 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js +328 -0
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/types.d.ts +27 -0
- package/dist/cli/commands/assistants/setup/selection/types.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/types.js +2 -0
- package/dist/cli/commands/assistants/setup/selection/types.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts +11 -0
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/ui.js +189 -0
- package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/utils.d.ts +36 -0
- package/dist/cli/commands/assistants/setup/selection/utils.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/selection/utils.js +55 -0
- package/dist/cli/commands/assistants/setup/selection/utils.js.map +1 -0
- package/dist/cli/commands/assistants/setup/summary/index.d.ts +16 -0
- package/dist/cli/commands/assistants/setup/summary/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/summary/index.js +48 -0
- package/dist/cli/commands/assistants/setup/summary/index.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +8 -0
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/log/cleaner.d.ts +33 -0
- package/dist/cli/commands/log/cleaner.d.ts.map +1 -0
- package/dist/cli/commands/log/cleaner.js +214 -0
- package/dist/cli/commands/log/cleaner.js.map +1 -0
- package/dist/cli/commands/log/filter.d.ts +55 -0
- package/dist/cli/commands/log/filter.d.ts.map +1 -0
- package/dist/cli/commands/log/filter.js +128 -0
- package/dist/cli/commands/log/filter.js.map +1 -0
- package/dist/cli/commands/log/follower.d.ts +36 -0
- package/dist/cli/commands/log/follower.d.ts.map +1 -0
- package/dist/cli/commands/log/follower.js +151 -0
- package/dist/cli/commands/log/follower.js.map +1 -0
- package/dist/cli/commands/log/formatter.d.ts +76 -0
- package/dist/cli/commands/log/formatter.d.ts.map +1 -0
- package/dist/cli/commands/log/formatter.js +261 -0
- package/dist/cli/commands/log/formatter.js.map +1 -0
- package/dist/cli/commands/log/index.d.ts +6 -0
- package/dist/cli/commands/log/index.d.ts.map +1 -0
- package/dist/cli/commands/log/index.js +398 -0
- package/dist/cli/commands/log/index.js.map +1 -0
- package/dist/cli/commands/log/parser.d.ts +20 -0
- package/dist/cli/commands/log/parser.d.ts.map +1 -0
- package/dist/cli/commands/log/parser.js +111 -0
- package/dist/cli/commands/log/parser.js.map +1 -0
- package/dist/cli/commands/log/reader.d.ts +61 -0
- package/dist/cli/commands/log/reader.d.ts.map +1 -0
- package/dist/cli/commands/log/reader.js +327 -0
- package/dist/cli/commands/log/reader.js.map +1 -0
- package/dist/cli/commands/log/types.d.ts +100 -0
- package/dist/cli/commands/log/types.d.ts.map +1 -0
- package/dist/cli/commands/log/types.js +5 -0
- package/dist/cli/commands/log/types.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +2 -0
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skill.js +1 -1
- package/dist/cli/commands/skill.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +8 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +1 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts +5 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.js +102 -3
- package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +0 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js +25 -48
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +8 -34
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
- package/dist/utils/native-installer.d.ts +1 -0
- package/dist/utils/native-installer.d.ts.map +1 -1
- package/dist/utils/native-installer.js +60 -9
- package/dist/utils/native-installer.js.map +1 -1
- package/dist/utils/windows-path.d.ts +54 -0
- package/dist/utils/windows-path.d.ts.map +1 -0
- package/dist/utils/windows-path.js +347 -0
- package/dist/utils/windows-path.js.map +1 -0
- package/package.json +2 -2
- package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts.map +0 -1
- package/dist/cli/commands/assistants/generators/claude-agent-generator.js.map +0 -1
- package/dist/cli/commands/assistants/list.d.ts +0 -11
- package/dist/cli/commands/assistants/list.d.ts.map +0 -1
- package/dist/cli/commands/assistants/list.js +0 -323
- package/dist/cli/commands/assistants/list.js.map +0 -1
- package/dist/skills/core/SkillDiscovery.d.ts.map +0 -1
- package/dist/skills/core/SkillDiscovery.js.map +0 -1
- package/dist/skills/core/SkillManager.d.ts.map +0 -1
- package/dist/skills/core/SkillManager.js.map +0 -1
- package/dist/skills/core/types.d.ts.map +0 -1
- package/dist/skills/core/types.js.map +0 -1
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/utils/content-loader.d.ts.map +0 -1
- package/dist/skills/utils/content-loader.js.map +0 -1
- package/dist/skills/utils/frontmatter.d.ts.map +0 -1
- package/dist/skills/utils/frontmatter.js.map +0 -1
- package/dist/skills/utils/pattern-matcher.d.ts.map +0 -1
- package/dist/skills/utils/pattern-matcher.js.map +0 -1
- /package/dist/{skills → agents/codemie-code/skills}/core/SkillDiscovery.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/SkillManager.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/types.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/core/types.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/index.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/index.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/content-loader.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/frontmatter.js +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/pattern-matcher.d.ts +0 -0
- /package/dist/{skills → agents/codemie-code/skills}/utils/pattern-matcher.js +0 -0
- /package/dist/cli/commands/assistants/{generators → setup/generators}/claude-agent-generator.d.ts +0 -0
|
@@ -7,6 +7,7 @@ import { AgentInstallationError } from './errors.js';
|
|
|
7
7
|
import { logger } from './logger.js';
|
|
8
8
|
import { sanitizeLogArgs, sanitizeValue } from './security.js';
|
|
9
9
|
import { isValidSemanticVersion } from './version-utils.js';
|
|
10
|
+
import { ensureCommandInPath } from './windows-path.js';
|
|
10
11
|
/**
|
|
11
12
|
* Detect current platform
|
|
12
13
|
* @returns Platform identifier: 'macOS' | 'windows' | 'linux'
|
|
@@ -79,7 +80,7 @@ function buildInstallerCommand(agentName, installerUrls, version, platform, inst
|
|
|
79
80
|
* Verify installation by running the verify command
|
|
80
81
|
* On Windows, retries with backoff to allow PATH updates to propagate
|
|
81
82
|
*
|
|
82
|
-
* @param verifyCommand - Command to verify (e.g., 'claude')
|
|
83
|
+
* @param verifyCommand - Command to verify (e.g., 'claude' or '/path/to/claude')
|
|
83
84
|
* @param retries - Number of retry attempts (default: 3 on Windows, 1 on Unix)
|
|
84
85
|
* @returns Installed version string or null if verification failed
|
|
85
86
|
*/
|
|
@@ -92,8 +93,11 @@ async function verifyInstallation(verifyCommand, retries) {
|
|
|
92
93
|
try {
|
|
93
94
|
logger.debug(`Verifying installation (attempt ${attempt}/${maxRetries})`, { command: verifyCommand });
|
|
94
95
|
// Run version check command (e.g., 'claude --version')
|
|
96
|
+
// If verifyCommand is a path, use shell to resolve ~ and execute
|
|
97
|
+
const useShell = verifyCommand.includes('/') || verifyCommand.includes('\\');
|
|
95
98
|
const result = await exec(verifyCommand, ['--version'], {
|
|
96
99
|
timeout: 5000, // 5 second timeout for version check
|
|
100
|
+
shell: useShell, // Use shell for path-based commands to resolve ~
|
|
97
101
|
});
|
|
98
102
|
if (result.code === 0 && result.stdout) {
|
|
99
103
|
// Parse version from output (usually first line, may have 'v' prefix)
|
|
@@ -114,7 +118,8 @@ async function verifyInstallation(verifyCommand, retries) {
|
|
|
114
118
|
// Gives Windows time to update PATH without excessive wait
|
|
115
119
|
if (attempt < maxRetries) {
|
|
116
120
|
const delayMs = Math.min(Math.pow(2, attempt - 1) * 1000, 4000);
|
|
117
|
-
|
|
121
|
+
// USER FEEDBACK: Show progress during wait
|
|
122
|
+
logger.info(`Waiting for PATH update to propagate (${delayMs / 1000}s)...`);
|
|
118
123
|
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
119
124
|
}
|
|
120
125
|
}
|
|
@@ -176,23 +181,64 @@ export async function installNativeAgent(agentName, installerUrls, version, opti
|
|
|
176
181
|
agentName,
|
|
177
182
|
platform,
|
|
178
183
|
});
|
|
184
|
+
// WINDOWS-SPECIFIC: Auto-fix PATH before verification
|
|
185
|
+
// Use ensureCommandInPath to automatically add command to PATH if missing
|
|
186
|
+
if (platform === 'windows' && options?.verifyCommand) {
|
|
187
|
+
logger.debug('Ensuring command is in Windows PATH', {
|
|
188
|
+
command: options.verifyCommand,
|
|
189
|
+
});
|
|
190
|
+
try {
|
|
191
|
+
const pathResult = await ensureCommandInPath(options.verifyCommand);
|
|
192
|
+
if (pathResult.success) {
|
|
193
|
+
if (pathResult.alreadyInPath) {
|
|
194
|
+
logger.debug('Command directory already in PATH', {
|
|
195
|
+
directory: pathResult.pathAdded,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
else if (pathResult.pathAdded) {
|
|
199
|
+
logger.success(`Automatically added ${options.verifyCommand} to PATH: ${pathResult.pathAdded}`);
|
|
200
|
+
logger.info('PATH updated. Please restart your terminal for changes to take effect.');
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else if (pathResult.error) {
|
|
204
|
+
// PATH fix failed, but installation succeeded
|
|
205
|
+
// Log warning but don't fail installation
|
|
206
|
+
logger.warn('Could not automatically update PATH', {
|
|
207
|
+
error: pathResult.error,
|
|
208
|
+
});
|
|
209
|
+
logger.info(`You may need to manually add ${options.verifyCommand} to your PATH.`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
// PATH utilities failed, but don't fail installation
|
|
214
|
+
logger.debug('ensureCommandInPath failed', {
|
|
215
|
+
error: error instanceof Error ? error.message : String(error),
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
179
219
|
// Verify installation if verify command provided
|
|
180
220
|
let installedVersion = null;
|
|
181
|
-
if (options?.verifyCommand) {
|
|
221
|
+
if (options?.verifyCommand || options?.verifyPath) {
|
|
222
|
+
// Prefer verifyPath (full path) over verifyCommand (PATH-based)
|
|
223
|
+
// This avoids PATH refresh issues on macOS/Linux
|
|
224
|
+
const commandToVerify = options?.verifyPath || options.verifyCommand;
|
|
182
225
|
logger.debug('Verifying installation', {
|
|
183
226
|
agentName,
|
|
184
|
-
verifyCommand:
|
|
227
|
+
verifyCommand: commandToVerify,
|
|
228
|
+
usingFullPath: !!options?.verifyPath,
|
|
185
229
|
});
|
|
186
|
-
installedVersion = await verifyInstallation(
|
|
230
|
+
installedVersion = await verifyInstallation(commandToVerify);
|
|
187
231
|
if (!installedVersion) {
|
|
188
232
|
// Add platform-specific context for troubleshooting
|
|
189
233
|
const isWindows = platform === 'windows';
|
|
190
234
|
const troubleshootingHint = isWindows
|
|
191
|
-
? '
|
|
192
|
-
:
|
|
235
|
+
? 'Restart your terminal to refresh PATH. The installation directory was automatically added to your PATH.'
|
|
236
|
+
: options?.verifyPath
|
|
237
|
+
? `Binary exists at ${options.verifyPath} but failed to execute. Check permissions: chmod +x ${options.verifyPath}`
|
|
238
|
+
: 'Verify that the command is in your PATH.';
|
|
193
239
|
logger.warn('Installation verification failed', {
|
|
194
240
|
agentName,
|
|
195
|
-
verifyCommand:
|
|
241
|
+
verifyCommand: commandToVerify,
|
|
196
242
|
platform,
|
|
197
243
|
hint: troubleshootingHint,
|
|
198
244
|
});
|
|
@@ -207,8 +253,13 @@ export async function installNativeAgent(agentName, installerUrls, version, opti
|
|
|
207
253
|
// SECURITY: Sanitize output before returning
|
|
208
254
|
// Prevents exposure of sensitive data in logs or UI
|
|
209
255
|
const sanitizedOutput = sanitizeValue(result.stdout || result.stderr || '');
|
|
256
|
+
// If verification was enabled and failed, mark installation as unsuccessful
|
|
257
|
+
// This ensures that failed verifications are properly reported to the user
|
|
258
|
+
const verificationEnabled = !!options?.verifyCommand;
|
|
259
|
+
const verificationPassed = !!installedVersion;
|
|
260
|
+
const installSuccess = verificationEnabled ? verificationPassed : true;
|
|
210
261
|
return {
|
|
211
|
-
success:
|
|
262
|
+
success: installSuccess,
|
|
212
263
|
installedVersion,
|
|
213
264
|
output: sanitizedOutput,
|
|
214
265
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-installer.js","sourceRoot":"","sources":["../../src/utils/native-installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"native-installer.js","sourceRoot":"","sources":["../../src/utils/native-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windows PATH management utilities
|
|
3
|
+
* Handles adding CLI tools to Windows PATH environment variable
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Result of PATH update operation
|
|
7
|
+
*/
|
|
8
|
+
export interface PathUpdateResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
pathAdded?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
requiresRestart: boolean;
|
|
13
|
+
alreadyInPath?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Find the installation directory of a command on Windows
|
|
17
|
+
* First tries `where` command, then falls back to checking common locations
|
|
18
|
+
*
|
|
19
|
+
* @param command - Command name (e.g., 'claude')
|
|
20
|
+
* @returns Full path to the executable directory or null if not found
|
|
21
|
+
*/
|
|
22
|
+
export declare function findCommandDirectory(command: string): Promise<string | null>;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a directory is in the user's PATH environment variable
|
|
25
|
+
* Queries Windows registry for current PATH value
|
|
26
|
+
*
|
|
27
|
+
* @param directory - Directory path to check
|
|
28
|
+
* @returns true if directory is in PATH
|
|
29
|
+
*/
|
|
30
|
+
export declare function isInUserPath(directory: string): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Add a directory to the user's PATH environment variable on Windows
|
|
33
|
+
* Uses `setx` command to update the registry
|
|
34
|
+
*
|
|
35
|
+
* IMPORTANT: Changes take effect in NEW sessions only. Current session is unaffected.
|
|
36
|
+
*
|
|
37
|
+
* @param directory - Directory path to add to PATH
|
|
38
|
+
* @returns Result with success status and whether restart is required
|
|
39
|
+
*/
|
|
40
|
+
export declare function addToUserPath(directory: string): Promise<PathUpdateResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Attempt to fix PATH for a command that was installed but is not in PATH
|
|
43
|
+
*
|
|
44
|
+
* Workflow:
|
|
45
|
+
* 1. Find where the command was installed (using `where` on the installer's session)
|
|
46
|
+
* 2. Check if that directory is already in user PATH
|
|
47
|
+
* 3. If not, add it using `setx`
|
|
48
|
+
* 4. Return result with instructions for user
|
|
49
|
+
*
|
|
50
|
+
* @param command - Command name (e.g., 'claude')
|
|
51
|
+
* @returns Result with success status and whether restart is required
|
|
52
|
+
*/
|
|
53
|
+
export declare function ensureCommandInPath(command: string): Promise<PathUpdateResult>;
|
|
54
|
+
//# sourceMappingURL=windows-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windows-path.d.ts","sourceRoot":"","sources":["../../src/utils/windows-path.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AA4FD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgClF;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2CtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqHhF;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuDpF"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windows PATH management utilities
|
|
3
|
+
* Handles adding CLI tools to Windows PATH environment variable
|
|
4
|
+
*/
|
|
5
|
+
import { win32 as pathWin32 } from 'path';
|
|
6
|
+
import { existsSync } from 'fs';
|
|
7
|
+
import { exec } from './exec.js';
|
|
8
|
+
import { logger } from './logger.js';
|
|
9
|
+
import { sanitizeLogArgs } from './security.js';
|
|
10
|
+
/**
|
|
11
|
+
* Get Windows System32 directory path
|
|
12
|
+
* Defaults to C:\Windows\System32 if SystemRoot env var not set
|
|
13
|
+
*/
|
|
14
|
+
const getWindowsSystem32 = () => {
|
|
15
|
+
return process.env.SystemRoot
|
|
16
|
+
? `${process.env.SystemRoot}\\System32`
|
|
17
|
+
: 'C:\\Windows\\System32';
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Validate directory path for security
|
|
21
|
+
* Ensures path is absolute and doesn't contain shell metacharacters
|
|
22
|
+
*
|
|
23
|
+
* @param directory - Directory path to validate
|
|
24
|
+
* @returns Normalized path if valid, null if invalid
|
|
25
|
+
*/
|
|
26
|
+
function validateDirectoryPath(directory) {
|
|
27
|
+
try {
|
|
28
|
+
// Normalize path (resolve .., ., etc.)
|
|
29
|
+
const normalizedPath = pathWin32.normalize(directory);
|
|
30
|
+
// Must be absolute path
|
|
31
|
+
if (!pathWin32.isAbsolute(normalizedPath)) {
|
|
32
|
+
logger.debug('Directory path is not absolute', { directory });
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
// SECURITY: Check for shell metacharacters that could enable command injection
|
|
36
|
+
// Windows shell special chars: & | < > ^ ( ) " ; , \n \r
|
|
37
|
+
const dangerousChars = /[&|<>^();,\n\r"]/;
|
|
38
|
+
if (dangerousChars.test(normalizedPath)) {
|
|
39
|
+
logger.warn('Directory path contains dangerous shell metacharacters', {
|
|
40
|
+
directory: normalizedPath
|
|
41
|
+
});
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return normalizedPath;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
logger.debug('Failed to validate directory path', ...sanitizeLogArgs({ directory, error }));
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check common installation directories for a command
|
|
53
|
+
* Checks standard Windows installation locations without relying on PATH
|
|
54
|
+
*
|
|
55
|
+
* @param command - Command name (e.g., 'claude')
|
|
56
|
+
* @returns Full path to the executable directory or null if not found
|
|
57
|
+
*/
|
|
58
|
+
function checkCommonInstallLocations(command) {
|
|
59
|
+
const userProfile = process.env.USERPROFILE || '';
|
|
60
|
+
const programFiles = process.env.ProgramFiles || 'C:\\Program Files';
|
|
61
|
+
const programFilesX86 = process.env['ProgramFiles(x86)'] || 'C:\\Program Files (x86)';
|
|
62
|
+
const localAppData = process.env.LOCALAPPDATA || `${userProfile}\\AppData\\Local`;
|
|
63
|
+
// Common installation locations for CLI tools on Windows
|
|
64
|
+
const commonLocations = [
|
|
65
|
+
// XDG-style user installation (Claude's preferred location)
|
|
66
|
+
`${userProfile}\\.local\\bin`,
|
|
67
|
+
// AppData Local
|
|
68
|
+
`${localAppData}\\Programs\\${command}`,
|
|
69
|
+
`${localAppData}\\${command}`,
|
|
70
|
+
`${localAppData}\\bin`,
|
|
71
|
+
// Program Files
|
|
72
|
+
`${programFiles}\\${command}`,
|
|
73
|
+
`${programFilesX86}\\${command}`,
|
|
74
|
+
// User-specific npm global
|
|
75
|
+
`${process.env.APPDATA || userProfile}\\npm`,
|
|
76
|
+
];
|
|
77
|
+
const exeName = `${command}.exe`;
|
|
78
|
+
for (const dir of commonLocations) {
|
|
79
|
+
try {
|
|
80
|
+
const exePath = `${dir}\\${exeName}`;
|
|
81
|
+
if (existsSync(exePath)) {
|
|
82
|
+
logger.debug('Found command in common location', { command, directory: dir });
|
|
83
|
+
return dir;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Continue checking other locations
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Find the installation directory of a command on Windows
|
|
94
|
+
* First tries `where` command, then falls back to checking common locations
|
|
95
|
+
*
|
|
96
|
+
* @param command - Command name (e.g., 'claude')
|
|
97
|
+
* @returns Full path to the executable directory or null if not found
|
|
98
|
+
*/
|
|
99
|
+
export async function findCommandDirectory(command) {
|
|
100
|
+
if (process.platform !== 'win32') {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
// SECURITY: Use full path to where.exe to avoid PATH hijacking
|
|
105
|
+
const wherePath = `${getWindowsSystem32()}\\where.exe`;
|
|
106
|
+
const result = await exec(wherePath, [command], { timeout: 5000 });
|
|
107
|
+
if (result.code === 0 && result.stdout) {
|
|
108
|
+
// Parse first line (where command may return multiple results)
|
|
109
|
+
const executablePath = result.stdout.trim().split('\n')[0].trim();
|
|
110
|
+
// Extract directory from full path
|
|
111
|
+
// Example: C:\Users\Username\AppData\Local\Programs\Claude\claude.exe
|
|
112
|
+
// -> C:\Users\Username\AppData\Local\Programs\Claude
|
|
113
|
+
const lastSlashIndex = executablePath.lastIndexOf('\\');
|
|
114
|
+
if (lastSlashIndex !== -1) {
|
|
115
|
+
const directory = executablePath.substring(0, lastSlashIndex);
|
|
116
|
+
logger.debug('Found command via where.exe', { command, directory });
|
|
117
|
+
return directory;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger.debug('where.exe failed, trying common locations', ...sanitizeLogArgs({ command, error }));
|
|
123
|
+
}
|
|
124
|
+
// Fallback: Check common installation directories
|
|
125
|
+
// This is crucial for newly installed commands that aren't in PATH yet
|
|
126
|
+
logger.debug('Checking common installation locations', { command });
|
|
127
|
+
return checkCommonInstallLocations(command);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Check if a directory is in the user's PATH environment variable
|
|
131
|
+
* Queries Windows registry for current PATH value
|
|
132
|
+
*
|
|
133
|
+
* @param directory - Directory path to check
|
|
134
|
+
* @returns true if directory is in PATH
|
|
135
|
+
*/
|
|
136
|
+
export async function isInUserPath(directory) {
|
|
137
|
+
if (process.platform !== 'win32') {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
// SECURITY: Validate and normalize directory path
|
|
141
|
+
const normalizedDirectory = validateDirectoryPath(directory);
|
|
142
|
+
if (!normalizedDirectory) {
|
|
143
|
+
logger.debug('Invalid directory path for PATH check', { directory });
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
// SECURITY: Use full path to reg.exe to avoid PATH hijacking
|
|
148
|
+
const regPath = `${getWindowsSystem32()}\\reg.exe`;
|
|
149
|
+
const result = await exec(regPath, [
|
|
150
|
+
'query',
|
|
151
|
+
'HKCU\\Environment',
|
|
152
|
+
'/v',
|
|
153
|
+
'PATH'
|
|
154
|
+
], { timeout: 5000 });
|
|
155
|
+
if (result.code === 0 && result.stdout) {
|
|
156
|
+
// Parse registry output
|
|
157
|
+
// Format: PATH REG_EXPAND_SZ C:\path1;C:\path2;...
|
|
158
|
+
const pathMatch = result.stdout.match(/PATH\s+REG_(?:EXPAND_)?SZ\s+(.+)/i);
|
|
159
|
+
if (pathMatch) {
|
|
160
|
+
const pathValue = pathMatch[1].trim();
|
|
161
|
+
// Normalize paths for comparison (case-insensitive, handle trailing slashes)
|
|
162
|
+
const dirForComparison = normalizedDirectory.toLowerCase().replace(/\\+$/, '');
|
|
163
|
+
const pathEntries = pathValue.split(';').map(p => pathWin32.normalize(p.trim()).toLowerCase().replace(/\\+$/, ''));
|
|
164
|
+
return pathEntries.includes(dirForComparison);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
logger.debug('Failed to check user PATH', ...sanitizeLogArgs({ directory, error }));
|
|
170
|
+
}
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Add a directory to the user's PATH environment variable on Windows
|
|
175
|
+
* Uses `setx` command to update the registry
|
|
176
|
+
*
|
|
177
|
+
* IMPORTANT: Changes take effect in NEW sessions only. Current session is unaffected.
|
|
178
|
+
*
|
|
179
|
+
* @param directory - Directory path to add to PATH
|
|
180
|
+
* @returns Result with success status and whether restart is required
|
|
181
|
+
*/
|
|
182
|
+
export async function addToUserPath(directory) {
|
|
183
|
+
if (process.platform !== 'win32') {
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
error: 'Not Windows platform',
|
|
187
|
+
requiresRestart: false,
|
|
188
|
+
alreadyInPath: false
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
// SECURITY: Validate and normalize directory path
|
|
192
|
+
const normalizedDirectory = validateDirectoryPath(directory);
|
|
193
|
+
if (!normalizedDirectory) {
|
|
194
|
+
return {
|
|
195
|
+
success: false,
|
|
196
|
+
error: 'Invalid directory path: must be absolute and contain no shell metacharacters',
|
|
197
|
+
requiresRestart: false,
|
|
198
|
+
alreadyInPath: false
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
logger.debug('Adding directory to user PATH', { directory: normalizedDirectory });
|
|
203
|
+
// Get current user PATH
|
|
204
|
+
// SECURITY: Use full path to reg.exe to avoid PATH hijacking
|
|
205
|
+
const regPath = `${getWindowsSystem32()}\\reg.exe`;
|
|
206
|
+
const queryResult = await exec(regPath, [
|
|
207
|
+
'query',
|
|
208
|
+
'HKCU\\Environment',
|
|
209
|
+
'/v',
|
|
210
|
+
'PATH'
|
|
211
|
+
], { timeout: 5000 });
|
|
212
|
+
let currentPath = '';
|
|
213
|
+
if (queryResult.code === 0 && queryResult.stdout) {
|
|
214
|
+
const pathMatch = queryResult.stdout.match(/PATH\s+REG_(?:EXPAND_)?SZ\s+(.+)/i);
|
|
215
|
+
if (pathMatch) {
|
|
216
|
+
currentPath = pathMatch[1].trim();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Check for duplicates before adding
|
|
220
|
+
const dirForComparison = normalizedDirectory.toLowerCase().replace(/\\+$/, '');
|
|
221
|
+
const pathEntries = currentPath.split(';').map(p => pathWin32.normalize(p.trim()).toLowerCase().replace(/\\+$/, ''));
|
|
222
|
+
if (pathEntries.includes(dirForComparison)) {
|
|
223
|
+
logger.debug('Directory already in PATH, skipping', { directory: normalizedDirectory });
|
|
224
|
+
return {
|
|
225
|
+
success: true,
|
|
226
|
+
pathAdded: normalizedDirectory,
|
|
227
|
+
requiresRestart: true,
|
|
228
|
+
alreadyInPath: true
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
// Append new directory
|
|
232
|
+
const newPath = currentPath ? `${currentPath};${normalizedDirectory}` : normalizedDirectory;
|
|
233
|
+
// SECURITY: Check setx 1024 character limit
|
|
234
|
+
if (newPath.length > 1024) {
|
|
235
|
+
logger.warn('PATH exceeds setx 1024 character limit', {
|
|
236
|
+
currentLength: newPath.length,
|
|
237
|
+
limit: 1024
|
|
238
|
+
});
|
|
239
|
+
return {
|
|
240
|
+
success: false,
|
|
241
|
+
error: `PATH too long (${newPath.length} chars, limit 1024). Must update PATH manually via Registry Editor or System Properties.`,
|
|
242
|
+
requiresRestart: false,
|
|
243
|
+
alreadyInPath: false
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
// Update PATH using setx
|
|
247
|
+
// SECURITY: Use full path to setx.exe to avoid PATH hijacking
|
|
248
|
+
const setxPath = `${getWindowsSystem32()}\\setx.exe`;
|
|
249
|
+
const setxResult = await exec(setxPath, ['PATH', newPath], { timeout: 10000 });
|
|
250
|
+
if (setxResult.code === 0) {
|
|
251
|
+
logger.debug('Successfully added to PATH', { directory: normalizedDirectory });
|
|
252
|
+
return {
|
|
253
|
+
success: true,
|
|
254
|
+
pathAdded: normalizedDirectory,
|
|
255
|
+
requiresRestart: true,
|
|
256
|
+
alreadyInPath: false
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
const errorMsg = setxResult.stderr || setxResult.stdout || 'Unknown error';
|
|
261
|
+
logger.warn('Failed to update PATH with setx', {
|
|
262
|
+
directory: normalizedDirectory,
|
|
263
|
+
error: errorMsg
|
|
264
|
+
});
|
|
265
|
+
return {
|
|
266
|
+
success: false,
|
|
267
|
+
error: `setx failed: ${errorMsg}`,
|
|
268
|
+
requiresRestart: false,
|
|
269
|
+
alreadyInPath: false
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
275
|
+
logger.error('Failed to add to user PATH', ...sanitizeLogArgs({
|
|
276
|
+
directory: normalizedDirectory,
|
|
277
|
+
error: errorMsg
|
|
278
|
+
}));
|
|
279
|
+
return {
|
|
280
|
+
success: false,
|
|
281
|
+
error: errorMsg,
|
|
282
|
+
requiresRestart: false,
|
|
283
|
+
alreadyInPath: false
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Attempt to fix PATH for a command that was installed but is not in PATH
|
|
289
|
+
*
|
|
290
|
+
* Workflow:
|
|
291
|
+
* 1. Find where the command was installed (using `where` on the installer's session)
|
|
292
|
+
* 2. Check if that directory is already in user PATH
|
|
293
|
+
* 3. If not, add it using `setx`
|
|
294
|
+
* 4. Return result with instructions for user
|
|
295
|
+
*
|
|
296
|
+
* @param command - Command name (e.g., 'claude')
|
|
297
|
+
* @returns Result with success status and whether restart is required
|
|
298
|
+
*/
|
|
299
|
+
export async function ensureCommandInPath(command) {
|
|
300
|
+
if (process.platform !== 'win32') {
|
|
301
|
+
return {
|
|
302
|
+
success: false,
|
|
303
|
+
error: 'Not Windows platform',
|
|
304
|
+
requiresRestart: false,
|
|
305
|
+
alreadyInPath: false
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
logger.debug('Ensuring command is in PATH', { command });
|
|
309
|
+
// Step 1: Try to find where the command was installed
|
|
310
|
+
// This works if the installer added it to the SYSTEM path or current session
|
|
311
|
+
const installDir = await findCommandDirectory(command);
|
|
312
|
+
if (!installDir) {
|
|
313
|
+
// Command not found anywhere, installation may have failed
|
|
314
|
+
logger.warn('Command not found in any PATH', { command });
|
|
315
|
+
return {
|
|
316
|
+
success: false,
|
|
317
|
+
error: `Could not locate ${command} installation directory`,
|
|
318
|
+
requiresRestart: false,
|
|
319
|
+
alreadyInPath: false
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
logger.debug('Found command installation directory', {
|
|
323
|
+
command,
|
|
324
|
+
directory: installDir
|
|
325
|
+
});
|
|
326
|
+
// Step 2: Check if already in user PATH
|
|
327
|
+
const alreadyInPath = await isInUserPath(installDir);
|
|
328
|
+
if (alreadyInPath) {
|
|
329
|
+
logger.debug('Command directory already in user PATH', {
|
|
330
|
+
command,
|
|
331
|
+
directory: installDir
|
|
332
|
+
});
|
|
333
|
+
return {
|
|
334
|
+
success: true,
|
|
335
|
+
pathAdded: installDir,
|
|
336
|
+
requiresRestart: true, // Still need restart even if already in registry
|
|
337
|
+
alreadyInPath: true
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
// Step 3: Add to PATH
|
|
341
|
+
logger.info('Adding command to user PATH', {
|
|
342
|
+
command,
|
|
343
|
+
directory: installDir
|
|
344
|
+
});
|
|
345
|
+
return await addToUserPath(installDir);
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=windows-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windows-path.js","sourceRoot":"","sources":["../../src/utils/windows-path.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codemieai/code",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.37",
|
|
4
4
|
"description": "Unified AI coding assistant CLI - Manage Claude Code, Gemini & custom agents. Multi-provider support (OpenAI, Azure, LiteLLM, SSO). Built-in LangGraph agent with file operations & git integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"@langchain/openai": "^1.1.0",
|
|
113
113
|
"chalk": "^5.3.0",
|
|
114
114
|
"cli-table3": "^0.6.5",
|
|
115
|
-
"codemie-sdk": "^0.1.
|
|
115
|
+
"codemie-sdk": "^0.1.330",
|
|
116
116
|
"commander": "^11.1.0",
|
|
117
117
|
"cors": "^2.8.5",
|
|
118
118
|
"dedent": "^1.7.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-agent-generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/assistants/generators/claude-agent-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAWzE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAmCxE;AAWD;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhF;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-agent-generator.js","sourceRoot":"","sources":["../../../../../src/cli/commands/assistants/generators/claude-agent-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,SAAoB;IAC/D,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,iBAAiB,SAAS,CAAC,IAAI,EAAE,CAAC;IAE/E,OAAO,MAAM,CAAC;;YAEJ,SAAS,CAAC,IAAI;mBACP,WAAW;;;;GAI3B,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAAoB;IAC9D,MAAM,QAAQ,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,IAAI,iBAAiB,SAAS,CAAC,IAAI,EAAE,CAAC;IAE/E,OAAO,MAAM,CAAC;MACV,QAAQ;;QAEN,SAAS,CAAC,IAAI;;MAEhB,WAAW;;;;;;;;;kCASiB,SAAS,CAAC,EAAE;;;;+GAIiE,SAAS,CAAC,IAAI;;;;;;;;+BAQ9F,SAAS,CAAC,EAAE;;;;GAIxC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAoB;IAC/D,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAK,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEnD,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;QAC1C,WAAW,EAAE,SAAS,CAAC,EAAE;QACzB,aAAa,EAAE,SAAS,CAAC,IAAI;QAC7B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,YAAY;KACb,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAErD,iCAAiC;IACjC,MAAM,OAAO,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEnD,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;QACzC,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAY;IACzD,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YAC3C,IAAI;YACJ,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE;YAC7D,IAAI;YACJ,KAAK;SACN,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* List Assistants Command
|
|
3
|
-
*
|
|
4
|
-
* Unified command to view, register, and unregister CodeMie assistants
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from 'commander';
|
|
7
|
-
/**
|
|
8
|
-
* Create assistants list command
|
|
9
|
-
*/
|
|
10
|
-
export declare function createAssistantsListCommand(): Command;
|
|
11
|
-
//# sourceMappingURL=list.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/assistants/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAsBrD"}
|