@codemieai/code 0.0.2 → 0.0.4
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 +357 -719
- package/bin/codemie-claude.js +145 -0
- package/bin/codemie-code.js +128 -15
- package/bin/codemie-codex.js +137 -0
- package/bin/codemie.js +1 -1
- package/dist/agents/adapters/claude-code.d.ts +7 -2
- package/dist/agents/adapters/claude-code.d.ts.map +1 -1
- package/dist/agents/adapters/claude-code.js +94 -58
- package/dist/agents/adapters/claude-code.js.map +1 -1
- package/dist/agents/adapters/codemie-code.d.ts +11 -2
- package/dist/agents/adapters/codemie-code.d.ts.map +1 -1
- package/dist/agents/adapters/codemie-code.js +93 -25
- package/dist/agents/adapters/codemie-code.js.map +1 -1
- package/dist/agents/adapters/codex.d.ts +7 -2
- package/dist/agents/adapters/codex.d.ts.map +1 -1
- package/dist/agents/adapters/codex.js +104 -39
- package/dist/agents/adapters/codex.js.map +1 -1
- package/dist/agents/codemie-code/agent.d.ts +89 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -0
- package/dist/agents/codemie-code/agent.js +689 -0
- package/dist/agents/codemie-code/agent.js.map +1 -0
- package/dist/agents/codemie-code/config.d.ts +40 -0
- package/dist/agents/codemie-code/config.d.ts.map +1 -0
- package/dist/agents/codemie-code/config.js +278 -0
- package/dist/agents/codemie-code/config.js.map +1 -0
- package/dist/agents/codemie-code/filters.d.ts +91 -0
- package/dist/agents/codemie-code/filters.d.ts.map +1 -0
- package/dist/agents/codemie-code/filters.js +328 -0
- package/dist/agents/codemie-code/filters.js.map +1 -0
- package/dist/agents/codemie-code/index.d.ts +92 -0
- package/dist/agents/codemie-code/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/index.js +327 -0
- package/dist/agents/codemie-code/index.js.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +87 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js +957 -0
- package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts +116 -0
- package/dist/agents/codemie-code/modes/planMode.d.ts.map +1 -0
- package/dist/agents/codemie-code/modes/planMode.js +537 -0
- package/dist/agents/codemie-code/modes/planMode.js.map +1 -0
- package/dist/agents/codemie-code/prompts.d.ts +40 -0
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -0
- package/dist/agents/codemie-code/prompts.js +160 -0
- package/dist/agents/codemie-code/prompts.js.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts +78 -0
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -0
- package/dist/agents/codemie-code/storage/todoStorage.js +225 -0
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts +108 -0
- package/dist/agents/codemie-code/tokenUtils.d.ts.map +1 -0
- package/dist/agents/codemie-code/tokenUtils.js +220 -0
- package/dist/agents/codemie-code/tokenUtils.js.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts +15 -0
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -0
- package/dist/agents/codemie-code/toolMetadata.js +315 -0
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +45 -0
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/index.js +407 -0
- package/dist/agents/codemie-code/tools/index.js.map +1 -0
- package/dist/agents/codemie-code/tools/planning.d.ts +53 -0
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/planning.js +224 -0
- package/dist/agents/codemie-code/tools/planning.js.map +1 -0
- package/dist/agents/codemie-code/types.d.ts +418 -0
- package/dist/agents/codemie-code/types.d.ts.map +1 -0
- package/dist/agents/codemie-code/types.js +35 -0
- package/dist/agents/codemie-code/types.js.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts +125 -0
- package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/progressTracker.js +343 -0
- package/dist/agents/codemie-code/ui/progressTracker.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts +112 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.js +318 -0
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -0
- package/dist/agents/codemie-code/ui.d.ts +179 -0
- package/dist/agents/codemie-code/ui.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui.js +1408 -0
- package/dist/agents/codemie-code/ui.js.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +87 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js +293 -0
- package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts +41 -0
- package/dist/agents/codemie-code/utils/todoParser.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoParser.js +305 -0
- package/dist/agents/codemie-code/utils/todoParser.js.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts +65 -0
- package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/utils/todoValidator.js +249 -0
- package/dist/agents/codemie-code/utils/todoValidator.js.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts +94 -0
- package/dist/agents/codemie-code/validators/planValidator.d.ts.map +1 -0
- package/dist/agents/codemie-code/validators/planValidator.js +281 -0
- package/dist/agents/codemie-code/validators/planValidator.js.map +1 -0
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +11 -15
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +3 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +170 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +350 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +308 -71
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/env.d.ts +3 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +19 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +28 -33
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.js +18 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +297 -31
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +523 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/tools.d.ts +6 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +244 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/commands/uninstall.js +24 -30
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/version.d.ts.map +1 -1
- package/dist/cli/commands/version.js +11 -16
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +424 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +85 -35
- package/dist/cli/index.js.map +1 -1
- package/dist/clients/adapters/github.d.ts +17 -0
- package/dist/clients/adapters/github.d.ts.map +1 -0
- package/dist/clients/adapters/github.js +150 -0
- package/dist/clients/adapters/github.js.map +1 -0
- package/dist/clients/adapters/gitlab.d.ts +17 -0
- package/dist/clients/adapters/gitlab.d.ts.map +1 -0
- package/dist/clients/adapters/gitlab.js +147 -0
- package/dist/clients/adapters/gitlab.js.map +1 -0
- package/dist/clients/registry.d.ts +20 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +27 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/env/manager.js +9 -46
- package/dist/env/manager.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -43
- package/dist/index.js.map +1 -1
- package/dist/tools/detector.d.ts +33 -0
- package/dist/tools/detector.d.ts.map +1 -0
- package/dist/tools/detector.js +145 -0
- package/dist/tools/detector.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/manager.d.ts +21 -0
- package/dist/tools/manager.d.ts.map +1 -0
- package/dist/tools/manager.js +104 -0
- package/dist/tools/manager.js.map +1 -0
- package/dist/tools/registry.d.ts +8 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +36 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +41 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/types/sso.d.ts +42 -0
- package/dist/types/sso.d.ts.map +1 -0
- package/dist/types/sso.js +2 -0
- package/dist/types/sso.js.map +1 -0
- package/dist/utils/agent-compatibility.d.ts +32 -0
- package/dist/utils/agent-compatibility.d.ts.map +1 -0
- package/dist/utils/agent-compatibility.js +140 -0
- package/dist/utils/agent-compatibility.js.map +1 -0
- package/dist/utils/async-tips.d.ts.map +1 -1
- package/dist/utils/async-tips.js +16 -55
- package/dist/utils/async-tips.js.map +1 -1
- package/dist/utils/clipboard.d.ts +16 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +179 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/codemie-integration-validator.d.ts +17 -0
- package/dist/utils/codemie-integration-validator.d.ts.map +1 -0
- package/dist/utils/codemie-integration-validator.js +105 -0
- package/dist/utils/codemie-integration-validator.js.map +1 -0
- package/dist/utils/codemie-model-fetcher.d.ts +11 -0
- package/dist/utils/codemie-model-fetcher.d.ts.map +1 -0
- package/dist/utils/codemie-model-fetcher.js +242 -0
- package/dist/utils/codemie-model-fetcher.js.map +1 -0
- package/dist/utils/config-loader.d.ts +118 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +397 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/credential-store.d.ts +16 -0
- package/dist/utils/credential-store.d.ts.map +1 -0
- package/dist/utils/credential-store.js +109 -0
- package/dist/utils/credential-store.js.map +1 -0
- package/dist/utils/dirname.d.ts +7 -0
- package/dist/utils/dirname.d.ts.map +1 -0
- package/dist/utils/dirname.js +11 -0
- package/dist/utils/dirname.js.map +1 -0
- package/dist/utils/errors.js +7 -17
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exec.js +3 -6
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.d.ts +34 -0
- package/dist/utils/first-time.d.ts.map +1 -0
- package/dist/utils/first-time.js +226 -0
- package/dist/utils/first-time.js.map +1 -0
- package/dist/utils/health-checker.d.ts +20 -0
- package/dist/utils/health-checker.d.ts.map +1 -0
- package/dist/utils/health-checker.js +172 -0
- package/dist/utils/health-checker.js.map +1 -0
- package/dist/utils/logger.js +12 -18
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/model-fetcher.d.ts +21 -0
- package/dist/utils/model-fetcher.d.ts.map +1 -0
- package/dist/utils/model-fetcher.js +150 -0
- package/dist/utils/model-fetcher.js.map +1 -0
- package/dist/utils/sso-auth.d.ts +15 -0
- package/dist/utils/sso-auth.d.ts.map +1 -0
- package/dist/utils/sso-auth.js +207 -0
- package/dist/utils/sso-auth.js.map +1 -0
- package/dist/utils/sso-gateway.d.ts +47 -0
- package/dist/utils/sso-gateway.d.ts.map +1 -0
- package/dist/utils/sso-gateway.js +298 -0
- package/dist/utils/sso-gateway.js.map +1 -0
- package/dist/utils/tips.d.ts.map +1 -1
- package/dist/utils/tips.js +13 -52
- package/dist/utils/tips.js.map +1 -1
- package/dist/workflows/detector.d.ts +37 -0
- package/dist/workflows/detector.d.ts.map +1 -0
- package/dist/workflows/detector.js +160 -0
- package/dist/workflows/detector.js.map +1 -0
- package/dist/workflows/index.d.ts +8 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +8 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/installer.d.ts +24 -0
- package/dist/workflows/installer.d.ts.map +1 -0
- package/dist/workflows/installer.js +105 -0
- package/dist/workflows/installer.js.map +1 -0
- package/dist/workflows/registry.d.ts +29 -0
- package/dist/workflows/registry.d.ts.map +1 -0
- package/dist/workflows/registry.js +54 -0
- package/dist/workflows/registry.js.map +1 -0
- package/dist/workflows/templates/github/metadata.d.ts +6 -0
- package/dist/workflows/templates/github/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/github/metadata.js +111 -0
- package/dist/workflows/templates/github/metadata.js.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts +6 -0
- package/dist/workflows/templates/gitlab/metadata.d.ts.map +1 -0
- package/dist/workflows/templates/gitlab/metadata.js +14 -0
- package/dist/workflows/templates/gitlab/metadata.js.map +1 -0
- package/dist/workflows/types.d.ts +71 -0
- package/dist/workflows/types.d.ts.map +1 -0
- package/dist/workflows/types.js +5 -0
- package/dist/workflows/types.js.map +1 -0
- package/package.json +32 -25
- package/src/workflows/templates/github/code-ci.yml +529 -0
- package/src/workflows/templates/github/inline-fix.yml +665 -0
- package/src/workflows/templates/github/pr-review.yml +677 -0
- package/.claude/agents/README.md +0 -298
- package/.claude/agents/release-manager.md +0 -857
- package/.codemie/guides/git-workflow.md +0 -493
- package/CLAUDE.md +0 -855
- package/dist/agents/adapters/aider.d.ts +0 -12
- package/dist/agents/adapters/aider.d.ts.map +0 -1
- package/dist/agents/adapters/aider.js +0 -80
- package/dist/agents/adapters/aider.js.map +0 -1
- package/dist/cli/cli.d.ts +0 -4
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js +0 -107
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/commands/mcp.d.ts +0 -3
- package/dist/cli/commands/mcp.d.ts.map +0 -1
- package/dist/cli/commands/mcp.js +0 -459
- package/dist/cli/commands/mcp.js.map +0 -1
- package/dist/code/agent-events.d.ts +0 -39
- package/dist/code/agent-events.d.ts.map +0 -1
- package/dist/code/agent-events.js +0 -4
- package/dist/code/agent-events.js.map +0 -1
- package/dist/code/agent.d.ts +0 -19
- package/dist/code/agent.d.ts.map +0 -1
- package/dist/code/agent.js +0 -144
- package/dist/code/agent.js.map +0 -1
- package/dist/code/config.d.ts +0 -13
- package/dist/code/config.d.ts.map +0 -1
- package/dist/code/config.js +0 -41
- package/dist/code/config.js.map +0 -1
- package/dist/code/index.d.ts +0 -19
- package/dist/code/index.d.ts.map +0 -1
- package/dist/code/index.js +0 -400
- package/dist/code/index.js.map +0 -1
- package/dist/code/prompts.d.ts +0 -2
- package/dist/code/prompts.d.ts.map +0 -1
- package/dist/code/prompts.js +0 -45
- package/dist/code/prompts.js.map +0 -1
- package/dist/code/tools/command.d.ts +0 -8
- package/dist/code/tools/command.d.ts.map +0 -1
- package/dist/code/tools/command.js +0 -83
- package/dist/code/tools/command.js.map +0 -1
- package/dist/code/tools/diff-utils.d.ts +0 -2
- package/dist/code/tools/diff-utils.d.ts.map +0 -1
- package/dist/code/tools/diff-utils.js +0 -45
- package/dist/code/tools/diff-utils.js.map +0 -1
- package/dist/code/tools/filesystem.d.ts +0 -11
- package/dist/code/tools/filesystem.d.ts.map +0 -1
- package/dist/code/tools/filesystem.js +0 -442
- package/dist/code/tools/filesystem.js.map +0 -1
- package/dist/code/tools/git.d.ts +0 -7
- package/dist/code/tools/git.d.ts.map +0 -1
- package/dist/code/tools/git.js +0 -111
- package/dist/code/tools/git.js.map +0 -1
- package/dist/code/tools/mcp.d.ts +0 -13
- package/dist/code/tools/mcp.d.ts.map +0 -1
- package/dist/code/tools/mcp.js +0 -230
- package/dist/code/tools/mcp.js.map +0 -1
- package/dist/data/tips.json +0 -118
- package/dist/ui/terminal-ui.d.ts +0 -73
- package/dist/ui/terminal-ui.d.ts.map +0 -1
- package/dist/ui/terminal-ui.js +0 -900
- package/dist/ui/terminal-ui.js.map +0 -1
- package/dist/utils/env-mapper.d.ts +0 -40
- package/dist/utils/env-mapper.d.ts.map +0 -1
- package/dist/utils/env-mapper.js +0 -122
- package/dist/utils/env-mapper.js.map +0 -1
- package/docs/USER_GUIDE.md +0 -573
- package/eslint.config.mjs +0 -43
- package/tests/agent-direct.test.mjs +0 -45
- package/tests/agent-output.test.mjs +0 -64
- package/tests/codemie-code.test.mjs +0 -42
- package/tests/context7-only.test.mjs +0 -42
- package/tests/conversation-flow.test.mjs +0 -63
- package/tests/interactive-simulation.test.mjs +0 -60
- package/tests/live-output.test.mjs +0 -53
- package/tests/mcp-context7.test.mjs +0 -105
- package/tests/mcp-e2e.test.mjs +0 -109
- package/tests/mcp-time-server.test.mjs +0 -58
- package/tests/streaming.test.mjs +0 -57
- package/tests/test-helpers.mjs +0 -94
- package/tests/text-wrapping.test.mjs +0 -33
- package/tests/tool-count.test.mjs +0 -81
- package/tests/ui-format.test.mjs +0 -39
- package/tests/ui-state.test.mjs +0 -72
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import * as os from 'os';
|
|
4
|
+
import dotenv from 'dotenv';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
/**
|
|
7
|
+
* Unified configuration loader with priority system:
|
|
8
|
+
* CLI args > Env vars > Project config > Global config > Defaults
|
|
9
|
+
*/
|
|
10
|
+
export class ConfigLoader {
|
|
11
|
+
static GLOBAL_CONFIG_DIR = path.join(os.homedir(), '.codemie');
|
|
12
|
+
static GLOBAL_CONFIG = path.join(ConfigLoader.GLOBAL_CONFIG_DIR, 'config.json');
|
|
13
|
+
static LOCAL_CONFIG = '.codemie/config.json';
|
|
14
|
+
/**
|
|
15
|
+
* Load configuration with proper priority:
|
|
16
|
+
* CLI args > Env vars > Project config > Global config > Defaults
|
|
17
|
+
*/
|
|
18
|
+
static async load(workingDir = process.cwd(), cliOverrides) {
|
|
19
|
+
// 5. Built-in defaults (lowest priority)
|
|
20
|
+
const config = {
|
|
21
|
+
timeout: 300,
|
|
22
|
+
debug: false,
|
|
23
|
+
allowedDirs: [],
|
|
24
|
+
ignorePatterns: ['node_modules', '.git', 'dist', 'build']
|
|
25
|
+
};
|
|
26
|
+
// 4. Global config (~/.codemie/config.json)
|
|
27
|
+
const globalConfig = await this.loadJsonConfig(this.GLOBAL_CONFIG);
|
|
28
|
+
Object.assign(config, this.removeUndefined(globalConfig));
|
|
29
|
+
// 3. Project-local config (.codemie/config.json)
|
|
30
|
+
const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
|
|
31
|
+
const localConfig = await this.loadJsonConfig(localConfigPath);
|
|
32
|
+
Object.assign(config, this.removeUndefined(localConfig));
|
|
33
|
+
// 2. Environment variables (load .env first if in project)
|
|
34
|
+
const envPath = path.join(workingDir, '.env');
|
|
35
|
+
try {
|
|
36
|
+
await fs.access(envPath);
|
|
37
|
+
dotenv.config({ path: envPath });
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// No .env file, that's fine
|
|
41
|
+
}
|
|
42
|
+
const envConfig = this.loadFromEnv();
|
|
43
|
+
Object.assign(config, this.removeUndefined(envConfig));
|
|
44
|
+
// 1. CLI arguments (highest priority)
|
|
45
|
+
if (cliOverrides) {
|
|
46
|
+
Object.assign(config, this.removeUndefined(cliOverrides));
|
|
47
|
+
}
|
|
48
|
+
return config;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Load configuration with validation (throws if required fields missing)
|
|
52
|
+
*/
|
|
53
|
+
static async loadAndValidate(workingDir = process.cwd(), cliOverrides) {
|
|
54
|
+
const config = await this.load(workingDir, cliOverrides);
|
|
55
|
+
this.validate(config);
|
|
56
|
+
return config;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Load configuration from environment variables
|
|
60
|
+
*/
|
|
61
|
+
static loadFromEnv() {
|
|
62
|
+
const env = {};
|
|
63
|
+
if (process.env.CODEMIE_PROVIDER) {
|
|
64
|
+
env.provider = process.env.CODEMIE_PROVIDER;
|
|
65
|
+
}
|
|
66
|
+
if (process.env.CODEMIE_BASE_URL) {
|
|
67
|
+
env.baseUrl = process.env.CODEMIE_BASE_URL;
|
|
68
|
+
}
|
|
69
|
+
if (process.env.CODEMIE_API_KEY) {
|
|
70
|
+
env.apiKey = process.env.CODEMIE_API_KEY;
|
|
71
|
+
}
|
|
72
|
+
if (process.env.CODEMIE_MODEL) {
|
|
73
|
+
env.model = process.env.CODEMIE_MODEL;
|
|
74
|
+
}
|
|
75
|
+
if (process.env.CODEMIE_TIMEOUT) {
|
|
76
|
+
env.timeout = parseInt(process.env.CODEMIE_TIMEOUT, 10);
|
|
77
|
+
}
|
|
78
|
+
if (process.env.CODEMIE_DEBUG) {
|
|
79
|
+
env.debug = process.env.CODEMIE_DEBUG === 'true';
|
|
80
|
+
}
|
|
81
|
+
if (process.env.CODEMIE_ALLOWED_DIRS) {
|
|
82
|
+
env.allowedDirs = process.env.CODEMIE_ALLOWED_DIRS.split(',').map(s => s.trim());
|
|
83
|
+
}
|
|
84
|
+
if (process.env.CODEMIE_IGNORE_PATTERNS) {
|
|
85
|
+
env.ignorePatterns = process.env.CODEMIE_IGNORE_PATTERNS.split(',').map(s => s.trim());
|
|
86
|
+
}
|
|
87
|
+
// SSO-specific environment variables
|
|
88
|
+
if (process.env.CODEMIE_URL)
|
|
89
|
+
env.codeMieUrl = process.env.CODEMIE_URL;
|
|
90
|
+
if (process.env.CODEMIE_AUTH_METHOD)
|
|
91
|
+
env.authMethod = process.env.CODEMIE_AUTH_METHOD;
|
|
92
|
+
// Handle CodeMie integration from environment variables
|
|
93
|
+
if (process.env.CODEMIE_INTEGRATION_ID || process.env.CODEMIE_INTEGRATION_ALIAS) {
|
|
94
|
+
env.codeMieIntegration = {
|
|
95
|
+
id: process.env.CODEMIE_INTEGRATION_ID || '',
|
|
96
|
+
alias: process.env.CODEMIE_INTEGRATION_ALIAS || ''
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// Check for AWS Bedrock configuration
|
|
100
|
+
if (process.env.CLAUDE_CODE_USE_BEDROCK === '1') {
|
|
101
|
+
env.provider = 'bedrock';
|
|
102
|
+
env.baseUrl = 'bedrock';
|
|
103
|
+
env.apiKey = 'bedrock'; // Placeholder for AWS credentials
|
|
104
|
+
}
|
|
105
|
+
return env;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Load JSON config file
|
|
109
|
+
*/
|
|
110
|
+
static async loadJsonConfig(filePath) {
|
|
111
|
+
try {
|
|
112
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
113
|
+
return JSON.parse(content);
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return {};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Save configuration to global config file
|
|
121
|
+
*/
|
|
122
|
+
static async saveGlobalConfig(config) {
|
|
123
|
+
await fs.mkdir(this.GLOBAL_CONFIG_DIR, { recursive: true });
|
|
124
|
+
await fs.writeFile(this.GLOBAL_CONFIG, JSON.stringify(config, null, 2), 'utf-8');
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Save configuration to project config file
|
|
128
|
+
*/
|
|
129
|
+
static async saveProjectConfig(workingDir, config) {
|
|
130
|
+
const configDir = path.join(workingDir, '.codemie');
|
|
131
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
132
|
+
await fs.writeFile(path.join(configDir, 'config.json'), JSON.stringify(config, null, 2), 'utf-8');
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Delete global config file
|
|
136
|
+
*/
|
|
137
|
+
static async deleteGlobalConfig() {
|
|
138
|
+
try {
|
|
139
|
+
await fs.unlink(this.GLOBAL_CONFIG);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
// Ignore if file doesn't exist
|
|
143
|
+
if (error.code !== 'ENOENT') {
|
|
144
|
+
throw error;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Delete project config file
|
|
150
|
+
*/
|
|
151
|
+
static async deleteProjectConfig(workingDir) {
|
|
152
|
+
try {
|
|
153
|
+
const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
|
|
154
|
+
await fs.unlink(localConfigPath);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
// Ignore if file doesn't exist
|
|
158
|
+
if (error.code !== 'ENOENT') {
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Check if global config exists and is not empty
|
|
165
|
+
*/
|
|
166
|
+
static async hasGlobalConfig() {
|
|
167
|
+
try {
|
|
168
|
+
await fs.access(this.GLOBAL_CONFIG);
|
|
169
|
+
const config = await this.loadJsonConfig(this.GLOBAL_CONFIG);
|
|
170
|
+
// Check if config has any actual values (not just an empty object)
|
|
171
|
+
return Object.keys(config).length > 0;
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Check if project config exists
|
|
179
|
+
*/
|
|
180
|
+
static async hasProjectConfig(workingDir = process.cwd()) {
|
|
181
|
+
try {
|
|
182
|
+
const localConfigPath = path.join(workingDir, this.LOCAL_CONFIG);
|
|
183
|
+
await fs.access(localConfigPath);
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Remove undefined values from object
|
|
192
|
+
*/
|
|
193
|
+
static removeUndefined(obj) {
|
|
194
|
+
return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v !== undefined));
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Validate required configuration
|
|
198
|
+
*/
|
|
199
|
+
static validate(config) {
|
|
200
|
+
if (!config.baseUrl) {
|
|
201
|
+
throw new Error('CODEMIE_BASE_URL is required. Run: codemie setup');
|
|
202
|
+
}
|
|
203
|
+
if (!config.apiKey) {
|
|
204
|
+
throw new Error('CODEMIE_API_KEY is required. Run: codemie setup');
|
|
205
|
+
}
|
|
206
|
+
if (!config.model) {
|
|
207
|
+
throw new Error('CODEMIE_MODEL is required. Run: codemie setup');
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Load configuration with source tracking
|
|
212
|
+
*/
|
|
213
|
+
static async loadWithSources(workingDir = process.cwd()) {
|
|
214
|
+
const sources = {};
|
|
215
|
+
// Load all config layers
|
|
216
|
+
const configs = [
|
|
217
|
+
{
|
|
218
|
+
data: {
|
|
219
|
+
timeout: 300,
|
|
220
|
+
debug: false
|
|
221
|
+
},
|
|
222
|
+
source: 'default'
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
data: await this.loadJsonConfig(this.GLOBAL_CONFIG),
|
|
226
|
+
source: 'global'
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
data: await this.loadJsonConfig(path.join(workingDir, this.LOCAL_CONFIG)),
|
|
230
|
+
source: 'project'
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
data: this.loadFromEnv(),
|
|
234
|
+
source: 'env'
|
|
235
|
+
}
|
|
236
|
+
];
|
|
237
|
+
// Track where each value comes from (last one wins)
|
|
238
|
+
for (const { data, source } of configs) {
|
|
239
|
+
for (const [key, value] of Object.entries(data)) {
|
|
240
|
+
if (value !== undefined && value !== null) {
|
|
241
|
+
sources[key] = { value, source };
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return sources;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Show configuration with source attribution
|
|
249
|
+
*/
|
|
250
|
+
static async showWithSources(workingDir = process.cwd()) {
|
|
251
|
+
const sources = await this.loadWithSources(workingDir);
|
|
252
|
+
console.log(chalk.bold('\nConfiguration Sources:\n'));
|
|
253
|
+
const sortedKeys = Object.keys(sources).sort();
|
|
254
|
+
for (const key of sortedKeys) {
|
|
255
|
+
const { value, source } = sources[key];
|
|
256
|
+
const displayValue = this.maskSensitive(key, value);
|
|
257
|
+
const sourceColor = this.getSourceColor(source);
|
|
258
|
+
const sourceLabel = sourceColor(`(${source})`);
|
|
259
|
+
console.log(` ${chalk.cyan(key)}: ${displayValue} ${sourceLabel}`);
|
|
260
|
+
}
|
|
261
|
+
console.log(chalk.dim('\nPriority: cli > env > project > global > default\n'));
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Mask sensitive values
|
|
265
|
+
*/
|
|
266
|
+
static maskSensitive(key, value) {
|
|
267
|
+
const valueStr = String(value);
|
|
268
|
+
const keyLower = key.toLowerCase();
|
|
269
|
+
if (keyLower.includes('key') || keyLower.includes('token') || keyLower.includes('password')) {
|
|
270
|
+
if (valueStr.length <= 8) {
|
|
271
|
+
return '***';
|
|
272
|
+
}
|
|
273
|
+
const start = valueStr.substring(0, 8);
|
|
274
|
+
const end = valueStr.substring(valueStr.length - 4);
|
|
275
|
+
return `${start}***${end}`;
|
|
276
|
+
}
|
|
277
|
+
// Handle arrays
|
|
278
|
+
if (Array.isArray(value)) {
|
|
279
|
+
return value.join(', ');
|
|
280
|
+
}
|
|
281
|
+
return valueStr;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get color for source
|
|
285
|
+
*/
|
|
286
|
+
static getSourceColor(source) {
|
|
287
|
+
const colors = {
|
|
288
|
+
default: chalk.gray,
|
|
289
|
+
global: chalk.cyan,
|
|
290
|
+
project: chalk.yellow,
|
|
291
|
+
env: chalk.green,
|
|
292
|
+
cli: chalk.magenta
|
|
293
|
+
};
|
|
294
|
+
return colors[source] || chalk.white;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get environment variable overrides
|
|
298
|
+
*/
|
|
299
|
+
static getEnvOverrides() {
|
|
300
|
+
return this.removeUndefined(this.loadFromEnv());
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Export provider-specific environment variables
|
|
304
|
+
* (for passing to external agents like Claude Code, Codex)
|
|
305
|
+
*/
|
|
306
|
+
static exportProviderEnvVars(config) {
|
|
307
|
+
const env = {};
|
|
308
|
+
// Always set generic CODEMIE_* vars
|
|
309
|
+
if (config.provider)
|
|
310
|
+
env.CODEMIE_PROVIDER = config.provider;
|
|
311
|
+
if (config.baseUrl)
|
|
312
|
+
env.CODEMIE_BASE_URL = config.baseUrl;
|
|
313
|
+
if (config.apiKey)
|
|
314
|
+
env.CODEMIE_API_KEY = config.apiKey;
|
|
315
|
+
if (config.model)
|
|
316
|
+
env.CODEMIE_MODEL = config.model;
|
|
317
|
+
if (config.timeout)
|
|
318
|
+
env.CODEMIE_TIMEOUT = String(config.timeout);
|
|
319
|
+
if (config.debug)
|
|
320
|
+
env.CODEMIE_DEBUG = String(config.debug);
|
|
321
|
+
// Set provider-specific vars based on provider
|
|
322
|
+
const provider = (config.provider || 'openai').toUpperCase();
|
|
323
|
+
if (provider === 'OPENAI' || provider === 'CODEX') {
|
|
324
|
+
// OpenAI and Codex share the same configuration
|
|
325
|
+
// Note: OpenAI Codex was deprecated in March 2023
|
|
326
|
+
// Modern usage should use gpt-3.5-turbo or gpt-4 models instead
|
|
327
|
+
if (config.baseUrl)
|
|
328
|
+
env.OPENAI_BASE_URL = config.baseUrl;
|
|
329
|
+
if (config.apiKey)
|
|
330
|
+
env.OPENAI_API_KEY = config.apiKey;
|
|
331
|
+
if (config.model)
|
|
332
|
+
env.OPENAI_MODEL = config.model;
|
|
333
|
+
// Legacy Codex environment variables (for compatibility)
|
|
334
|
+
if (provider === 'CODEX') {
|
|
335
|
+
if (config.baseUrl)
|
|
336
|
+
env.CODEX_BASE_URL = config.baseUrl;
|
|
337
|
+
if (config.apiKey)
|
|
338
|
+
env.CODEX_API_KEY = config.apiKey;
|
|
339
|
+
if (config.model)
|
|
340
|
+
env.CODEX_MODEL = config.model;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
else if (provider === 'AZURE') {
|
|
344
|
+
if (config.baseUrl)
|
|
345
|
+
env.AZURE_OPENAI_ENDPOINT = config.baseUrl;
|
|
346
|
+
if (config.apiKey)
|
|
347
|
+
env.AZURE_OPENAI_API_KEY = config.apiKey;
|
|
348
|
+
if (config.model)
|
|
349
|
+
env.AZURE_OPENAI_DEPLOYMENT = config.model;
|
|
350
|
+
}
|
|
351
|
+
else if (provider === 'BEDROCK') {
|
|
352
|
+
// AWS Bedrock configuration
|
|
353
|
+
env.CLAUDE_CODE_USE_BEDROCK = '1';
|
|
354
|
+
// AWS credentials should be set via AWS CLI or environment variables
|
|
355
|
+
}
|
|
356
|
+
else if (provider === 'LITELLM') {
|
|
357
|
+
// Generic LiteLLM proxy gateway
|
|
358
|
+
// LiteLLM can proxy for any model, so set both OpenAI and Anthropic env vars
|
|
359
|
+
if (config.baseUrl) {
|
|
360
|
+
env.OPENAI_BASE_URL = config.baseUrl;
|
|
361
|
+
env.ANTHROPIC_BASE_URL = config.baseUrl;
|
|
362
|
+
}
|
|
363
|
+
if (config.apiKey) {
|
|
364
|
+
env.OPENAI_API_KEY = config.apiKey;
|
|
365
|
+
env.ANTHROPIC_AUTH_TOKEN = config.apiKey;
|
|
366
|
+
}
|
|
367
|
+
if (config.model) {
|
|
368
|
+
env.OPENAI_MODEL = config.model;
|
|
369
|
+
env.ANTHROPIC_MODEL = config.model;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
else if (provider === 'AI-RUN-SSO') {
|
|
373
|
+
// CodeMie SSO authentication - credentials handled via credential store
|
|
374
|
+
// Set both OpenAI and Anthropic env vars for compatibility
|
|
375
|
+
if (config.baseUrl) {
|
|
376
|
+
env.OPENAI_BASE_URL = config.baseUrl;
|
|
377
|
+
env.ANTHROPIC_BASE_URL = config.baseUrl;
|
|
378
|
+
}
|
|
379
|
+
if (config.apiKey) {
|
|
380
|
+
env.OPENAI_API_KEY = config.apiKey;
|
|
381
|
+
env.ANTHROPIC_AUTH_TOKEN = config.apiKey;
|
|
382
|
+
}
|
|
383
|
+
if (config.model) {
|
|
384
|
+
env.OPENAI_MODEL = config.model;
|
|
385
|
+
env.ANTHROPIC_MODEL = config.model;
|
|
386
|
+
}
|
|
387
|
+
if (config.codeMieUrl)
|
|
388
|
+
env.CODEMIE_URL = config.codeMieUrl;
|
|
389
|
+
if (config.authMethod)
|
|
390
|
+
env.CODEMIE_AUTH_METHOD = config.authMethod;
|
|
391
|
+
if (config.codeMieIntegration?.id)
|
|
392
|
+
env.CODEMIE_INTEGRATION_ID = config.codeMieIntegration.id;
|
|
393
|
+
}
|
|
394
|
+
return env;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SSOCredentials } from '../types/sso.js';
|
|
2
|
+
export declare class CredentialStore {
|
|
3
|
+
private static instance;
|
|
4
|
+
private encryptionKey;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): CredentialStore;
|
|
7
|
+
storeSSOCredentials(credentials: SSOCredentials): Promise<void>;
|
|
8
|
+
retrieveSSOCredentials(): Promise<SSOCredentials | null>;
|
|
9
|
+
clearSSOCredentials(): Promise<void>;
|
|
10
|
+
private encrypt;
|
|
11
|
+
private decrypt;
|
|
12
|
+
private getOrCreateEncryptionKey;
|
|
13
|
+
private storeToFile;
|
|
14
|
+
private retrieveFromFile;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=credential-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-store.d.ts","sourceRoot":"","sources":["../../src/utils/credential-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,eAAe;IAO/B,mBAAmB,CAAC,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/D,sBAAsB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA0BxD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1C,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,wBAAwB;YAMlB,WAAW;YAMX,gBAAgB;CAO/B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as keytar from 'keytar';
|
|
2
|
+
import * as crypto from 'crypto';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import * as os from 'os';
|
|
6
|
+
const SERVICE_NAME = 'codemie-code';
|
|
7
|
+
const ACCOUNT_NAME = 'sso-credentials';
|
|
8
|
+
const FALLBACK_FILE = path.join(os.homedir(), '.codemie', 'sso-credentials.enc');
|
|
9
|
+
export class CredentialStore {
|
|
10
|
+
static instance;
|
|
11
|
+
encryptionKey;
|
|
12
|
+
constructor() {
|
|
13
|
+
this.encryptionKey = this.getOrCreateEncryptionKey();
|
|
14
|
+
}
|
|
15
|
+
static getInstance() {
|
|
16
|
+
if (!CredentialStore.instance) {
|
|
17
|
+
CredentialStore.instance = new CredentialStore();
|
|
18
|
+
}
|
|
19
|
+
return CredentialStore.instance;
|
|
20
|
+
}
|
|
21
|
+
async storeSSOCredentials(credentials) {
|
|
22
|
+
const encrypted = this.encrypt(JSON.stringify(credentials));
|
|
23
|
+
try {
|
|
24
|
+
// Try secure keychain storage first
|
|
25
|
+
await keytar.setPassword(SERVICE_NAME, ACCOUNT_NAME, encrypted);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
console.warn('Keychain not available, using encrypted file storage');
|
|
29
|
+
await this.storeToFile(encrypted);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async retrieveSSOCredentials() {
|
|
33
|
+
try {
|
|
34
|
+
// Try keychain first
|
|
35
|
+
const encrypted = await keytar.getPassword(SERVICE_NAME, ACCOUNT_NAME);
|
|
36
|
+
if (encrypted) {
|
|
37
|
+
const decrypted = this.decrypt(encrypted);
|
|
38
|
+
return JSON.parse(decrypted);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Fall back to file storage
|
|
43
|
+
}
|
|
44
|
+
// Always try file storage as fallback
|
|
45
|
+
try {
|
|
46
|
+
const encrypted = await this.retrieveFromFile();
|
|
47
|
+
if (encrypted) {
|
|
48
|
+
const decrypted = this.decrypt(encrypted);
|
|
49
|
+
return JSON.parse(decrypted);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Unable to decrypt file storage
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
async clearSSOCredentials() {
|
|
58
|
+
try {
|
|
59
|
+
await keytar.deletePassword(SERVICE_NAME, ACCOUNT_NAME);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Also clear file storage
|
|
63
|
+
try {
|
|
64
|
+
await fs.unlink(FALLBACK_FILE);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Ignore file not found errors
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
encrypt(text) {
|
|
72
|
+
const iv = crypto.randomBytes(16);
|
|
73
|
+
// Use a proper 32-byte key by hashing the encryptionKey
|
|
74
|
+
const key = crypto.createHash('sha256').update(this.encryptionKey).digest();
|
|
75
|
+
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
|
|
76
|
+
let encrypted = cipher.update(text, 'utf8', 'hex');
|
|
77
|
+
encrypted += cipher.final('hex');
|
|
78
|
+
return iv.toString('hex') + ':' + encrypted;
|
|
79
|
+
}
|
|
80
|
+
decrypt(text) {
|
|
81
|
+
const [ivHex, encryptedHex] = text.split(':');
|
|
82
|
+
const iv = Buffer.from(ivHex, 'hex');
|
|
83
|
+
// Use a proper 32-byte key by hashing the encryptionKey
|
|
84
|
+
const key = crypto.createHash('sha256').update(this.encryptionKey).digest();
|
|
85
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
|
|
86
|
+
let decrypted = decipher.update(encryptedHex, 'hex', 'utf8');
|
|
87
|
+
decrypted += decipher.final('utf8');
|
|
88
|
+
return decrypted;
|
|
89
|
+
}
|
|
90
|
+
getOrCreateEncryptionKey() {
|
|
91
|
+
// Use machine-specific key based on hardware info
|
|
92
|
+
const machineId = os.hostname() + os.platform() + os.arch();
|
|
93
|
+
return crypto.createHash('sha256').update(machineId).digest('hex');
|
|
94
|
+
}
|
|
95
|
+
async storeToFile(encrypted) {
|
|
96
|
+
const dir = path.dirname(FALLBACK_FILE);
|
|
97
|
+
await fs.mkdir(dir, { recursive: true });
|
|
98
|
+
await fs.writeFile(FALLBACK_FILE, encrypted, 'utf8');
|
|
99
|
+
}
|
|
100
|
+
async retrieveFromFile() {
|
|
101
|
+
try {
|
|
102
|
+
return await fs.readFile(FALLBACK_FILE, 'utf8');
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=credential-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-store.js","sourceRoot":"","sources":["../../src/utils/credential-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the directory name of the current module (ESM equivalent of __dirname)
|
|
3
|
+
* @param importMetaUrl - Pass import.meta.url from the calling module
|
|
4
|
+
* @returns The directory path
|
|
5
|
+
*/
|
|
6
|
+
export declare function getDirname(importMetaUrl: string): string;
|
|
7
|
+
//# sourceMappingURL=dirname.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirname.d.ts","sourceRoot":"","sources":["../../src/utils/dirname.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAExD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Get the directory name of the current module (ESM equivalent of __dirname)
|
|
5
|
+
* @param importMetaUrl - Pass import.meta.url from the calling module
|
|
6
|
+
* @returns The directory path
|
|
7
|
+
*/
|
|
8
|
+
export function getDirname(importMetaUrl) {
|
|
9
|
+
return dirname(fileURLToPath(importMetaUrl));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=dirname.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirname.js","sourceRoot":"","sources":["../../src/utils/dirname.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,aAAqB;IAC9C,OAAO,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -1,55 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PathSecurityError = exports.ToolExecutionError = exports.AgentInstallationError = exports.AgentNotFoundError = exports.ConfigurationError = exports.CodeMieError = void 0;
|
|
4
|
-
exports.getErrorMessage = getErrorMessage;
|
|
5
|
-
class CodeMieError extends Error {
|
|
1
|
+
export class CodeMieError extends Error {
|
|
6
2
|
constructor(message) {
|
|
7
3
|
super(message);
|
|
8
4
|
this.name = 'CodeMieError';
|
|
9
5
|
}
|
|
10
6
|
}
|
|
11
|
-
|
|
12
|
-
class ConfigurationError extends CodeMieError {
|
|
7
|
+
export class ConfigurationError extends CodeMieError {
|
|
13
8
|
constructor(message) {
|
|
14
9
|
super(message);
|
|
15
10
|
this.name = 'ConfigurationError';
|
|
16
11
|
}
|
|
17
12
|
}
|
|
18
|
-
|
|
19
|
-
class AgentNotFoundError extends CodeMieError {
|
|
13
|
+
export class AgentNotFoundError extends CodeMieError {
|
|
20
14
|
constructor(agentName) {
|
|
21
15
|
super(`Agent not found: ${agentName}`);
|
|
22
16
|
this.name = 'AgentNotFoundError';
|
|
23
17
|
}
|
|
24
18
|
}
|
|
25
|
-
|
|
26
|
-
class AgentInstallationError extends CodeMieError {
|
|
19
|
+
export class AgentInstallationError extends CodeMieError {
|
|
27
20
|
constructor(agentName, reason) {
|
|
28
21
|
super(`Failed to install agent ${agentName}: ${reason}`);
|
|
29
22
|
this.name = 'AgentInstallationError';
|
|
30
23
|
}
|
|
31
24
|
}
|
|
32
|
-
|
|
33
|
-
class ToolExecutionError extends CodeMieError {
|
|
25
|
+
export class ToolExecutionError extends CodeMieError {
|
|
34
26
|
constructor(toolName, reason) {
|
|
35
27
|
super(`Tool ${toolName} failed: ${reason}`);
|
|
36
28
|
this.name = 'ToolExecutionError';
|
|
37
29
|
}
|
|
38
30
|
}
|
|
39
|
-
|
|
40
|
-
class PathSecurityError extends CodeMieError {
|
|
31
|
+
export class PathSecurityError extends CodeMieError {
|
|
41
32
|
constructor(path, reason) {
|
|
42
33
|
super(`Path security violation: ${path} - ${reason}`);
|
|
43
34
|
this.name = 'PathSecurityError';
|
|
44
35
|
}
|
|
45
36
|
}
|
|
46
|
-
exports.PathSecurityError = PathSecurityError;
|
|
47
37
|
/**
|
|
48
38
|
* Extracts error message from unknown error type
|
|
49
39
|
* @param error - The caught error (unknown type)
|
|
50
40
|
* @returns Error message as string
|
|
51
41
|
*/
|
|
52
|
-
function getErrorMessage(error) {
|
|
42
|
+
export function getErrorMessage(error) {
|
|
53
43
|
if (error instanceof Error) {
|
|
54
44
|
return error.message;
|
|
55
45
|
}
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,SAAiB;QAC3B,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IACtD,YAAY,SAAiB,EAAE,MAAc;QAC3C,KAAK,CAAC,2BAA2B,SAAS,KAAK,MAAM,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD,YAAY,QAAgB,EAAE,MAAc;QAC1C,KAAK,CAAC,QAAQ,QAAQ,YAAY,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YAAY,IAAY,EAAE,MAAc;QACtC,KAAK,CAAC,4BAA4B,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|