@codemieai/code 0.0.27 → 0.0.29
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 +9 -11
- package/bin/agent-executor.js +1 -1
- package/dist/agents/codemie-code/agent.js +1 -1
- package/dist/agents/codemie-code/config.d.ts +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +3 -4
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/index.js +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +1 -1
- package/dist/agents/codemie-code/storage/todoStorage.js +2 -2
- package/dist/agents/codemie-code/storage/todoStorage.js.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +1 -1
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +6 -10
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts +17 -9
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +80 -72
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +258 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.js +522 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -0
- package/dist/agents/core/lifecycle-helpers.d.ts.map +1 -1
- package/dist/agents/core/lifecycle-helpers.js +16 -2
- package/dist/agents/core/lifecycle-helpers.js.map +1 -1
- package/dist/agents/core/metrics/index.d.ts +0 -2
- package/dist/agents/core/metrics/index.d.ts.map +1 -1
- package/dist/agents/core/metrics/index.js +0 -3
- package/dist/agents/core/metrics/index.js.map +1 -1
- package/dist/agents/core/metrics/types.d.ts +4 -232
- package/dist/agents/core/metrics/types.d.ts.map +1 -1
- package/dist/agents/core/metrics/types.js +2 -2
- package/dist/agents/core/session/BaseProcessor.d.ts +72 -0
- package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -0
- package/dist/agents/core/session/BaseProcessor.js +9 -0
- package/dist/agents/core/session/BaseProcessor.js.map +1 -0
- package/dist/agents/core/session/BaseSessionAdapter.d.ts +99 -0
- package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -0
- package/dist/agents/core/session/BaseSessionAdapter.js +9 -0
- package/dist/agents/core/session/BaseSessionAdapter.js.map +1 -0
- package/dist/agents/core/session/SessionStore.d.ts +23 -0
- package/dist/agents/core/session/SessionStore.d.ts.map +1 -0
- package/dist/agents/core/session/SessionStore.js +75 -0
- package/dist/agents/core/session/SessionStore.js.map +1 -0
- package/dist/agents/core/session/session-config.d.ts +27 -0
- package/dist/agents/core/session/session-config.d.ts.map +1 -0
- package/dist/agents/core/session/session-config.js +61 -0
- package/dist/agents/core/session/session-config.js.map +1 -0
- package/dist/agents/core/session/types.d.ts +87 -0
- package/dist/agents/core/session/types.d.ts.map +1 -0
- package/dist/agents/core/session/types.js +8 -0
- package/dist/agents/core/session/types.js.map +1 -0
- package/dist/agents/core/session/utils/jsonl-reader.d.ts +15 -0
- package/dist/agents/core/session/utils/jsonl-reader.d.ts.map +1 -0
- package/dist/agents/core/session/utils/jsonl-reader.js +33 -0
- package/dist/agents/core/session/utils/jsonl-reader.js.map +1 -0
- package/dist/agents/core/session/utils/jsonl-writer.d.ts +26 -0
- package/dist/agents/core/session/utils/jsonl-writer.d.ts.map +1 -0
- package/dist/agents/core/session/utils/jsonl-writer.js +56 -0
- package/dist/agents/core/session/utils/jsonl-writer.js.map +1 -0
- package/dist/agents/core/types.d.ts +78 -11
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-message-types.d.ts +74 -0
- package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude-message-types.js +8 -0
- package/dist/agents/plugins/claude/claude-message-types.js.map +1 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.d.ts +53 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.js +63 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.js.map +1 -0
- package/dist/agents/plugins/claude/claude.plugin.d.ts +26 -0
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/{claude.plugin.js → claude/claude.plugin.js} +20 -11
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -0
- package/dist/agents/plugins/claude/claude.session.d.ts +60 -0
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude.session.js +339 -0
- package/dist/agents/plugins/claude/claude.session.js.map +1 -0
- package/dist/agents/plugins/claude/plugin/.claude-plugin/local-install.json +15 -0
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +9 -0
- package/dist/agents/plugins/claude/plugin/README.md +299 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/README.md +539 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +511 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +205 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +74 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +207 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +143 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +127 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +168 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +210 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/integration/external-integrations.md.template +160 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +170 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +150 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/git-workflow.md.template +177 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +143 -0
- package/dist/agents/plugins/claude/plugin/commands/README.md +0 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-catchup.md +10 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +731 -0
- package/dist/agents/plugins/claude/plugin/commands/memory-add.md +44 -0
- package/dist/agents/plugins/claude/plugin/commands/memory-init.md +18 -0
- package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +54 -0
- package/dist/agents/plugins/claude/plugin/hooks/hooks.json +71 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +51 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +840 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts +37 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +275 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -0
- package/dist/agents/plugins/codemie-code.plugin.js +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini/extension/README.md +88 -0
- package/dist/agents/plugins/gemini/extension/gemini-extension.json +11 -0
- package/dist/agents/plugins/gemini/extension/hooks/hooks.json +65 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.d.ts +49 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.js +63 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.d.ts +43 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.js +57 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.plugin.d.ts +32 -0
- package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.plugin.js +136 -0
- package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts +68 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.js +268 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.js.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts +36 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +186 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts +32 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +193 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts +26 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.js +38 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.js.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.d.ts +33 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.js +58 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.js.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts +70 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.js +86 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.js.map +1 -0
- package/dist/agents/registry.d.ts +7 -2
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +17 -8
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/analytics/data-loader.d.ts +1 -1
- package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/data-loader.js +3 -3
- package/dist/cli/commands/analytics/data-loader.js.map +1 -1
- package/dist/cli/commands/analytics/index.js +1 -1
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js +1 -1
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js.map +1 -1
- package/dist/cli/commands/doctor/checks/AwsCliCheck.js +1 -1
- package/dist/cli/commands/doctor/checks/AwsCliCheck.js.map +1 -1
- package/dist/cli/commands/doctor/checks/NpmCheck.js +1 -1
- package/dist/cli/commands/doctor/checks/NpmCheck.js.map +1 -1
- package/dist/cli/commands/doctor/checks/PythonCheck.d.ts +13 -0
- package/dist/cli/commands/doctor/checks/PythonCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/PythonCheck.js +91 -32
- package/dist/cli/commands/doctor/checks/PythonCheck.js.map +1 -1
- package/dist/cli/commands/doctor/checks/UvCheck.js +1 -1
- package/dist/cli/commands/doctor/checks/UvCheck.js.map +1 -1
- package/dist/cli/commands/doctor/types.d.ts +1 -1
- package/dist/cli/commands/doctor/types.d.ts.map +1 -1
- package/dist/cli/commands/hook.d.ts +7 -0
- package/dist/cli/commands/hook.d.ts.map +1 -0
- package/dist/cli/commands/hook.js +788 -0
- package/dist/cli/commands/hook.js.map +1 -0
- package/dist/cli/commands/profile/auth.js +1 -1
- package/dist/cli/commands/profile/auth.js.map +1 -1
- package/dist/{utils/profile-display.d.ts → cli/commands/profile/display.d.ts} +3 -3
- package/dist/cli/commands/profile/display.d.ts.map +1 -0
- package/dist/{utils/profile-display.js → cli/commands/profile/display.js} +2 -2
- package/dist/cli/commands/profile/display.js.map +1 -0
- package/dist/cli/commands/profile/index.js +2 -2
- package/dist/cli/commands/profile/index.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +4 -5
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/update.d.ts +3 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +291 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/version.js +1 -1
- package/dist/cli/commands/version.js.map +1 -1
- package/dist/{utils → cli}/first-time.d.ts +4 -0
- package/dist/cli/first-time.d.ts.map +1 -0
- package/dist/{utils → cli}/first-time.js +27 -14
- package/dist/cli/first-time.js.map +1 -0
- package/dist/cli/index.js +6 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/env/manager.d.ts.map +1 -1
- package/dist/env/manager.js +3 -4
- package/dist/env/manager.js.map +1 -1
- package/dist/frameworks/core/BaseFrameworkAdapter.js +1 -1
- package/dist/frameworks/core/BaseFrameworkAdapter.js.map +1 -1
- package/dist/frameworks/core/types.d.ts +1 -1
- package/dist/frameworks/plugins/bmad.plugin.js +2 -2
- package/dist/frameworks/plugins/bmad.plugin.js.map +1 -1
- package/dist/frameworks/plugins/speckit.plugin.d.ts.map +1 -1
- package/dist/frameworks/plugins/speckit.plugin.js +2 -3
- package/dist/frameworks/plugins/speckit.plugin.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/001-config-rename.migration.d.ts.map +1 -1
- package/dist/migrations/001-config-rename.migration.js +2 -2
- package/dist/migrations/001-config-rename.migration.js.map +1 -1
- package/dist/migrations/002-consolidate-sessions.migration.d.ts +50 -0
- package/dist/migrations/002-consolidate-sessions.migration.d.ts.map +1 -0
- package/dist/migrations/002-consolidate-sessions.migration.js +220 -0
- package/dist/migrations/002-consolidate-sessions.migration.js.map +1 -0
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +3 -2
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/tracker.d.ts.map +1 -1
- package/dist/migrations/tracker.js +2 -2
- package/dist/migrations/tracker.js.map +1 -1
- package/dist/providers/core/base/http-client.js +1 -1
- package/dist/providers/core/types.d.ts +1 -1
- package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.js +3 -1
- package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
- package/dist/providers/plugins/sso/index.d.ts +1 -1
- package/dist/providers/plugins/sso/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/index.js +1 -1
- package/dist/providers/plugins/sso/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +3 -3
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts +40 -0
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +194 -0
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts +1 -0
- package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-http-client.js +40 -6
- package/dist/providers/plugins/sso/proxy/proxy-http-client.js.map +1 -1
- package/dist/providers/plugins/sso/session/BaseProcessor.d.ts +72 -0
- package/dist/providers/plugins/sso/session/BaseProcessor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/BaseProcessor.js +9 -0
- package/dist/providers/plugins/sso/session/BaseProcessor.js.map +1 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.d.ts +99 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.js +9 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.js.map +1 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts +36 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.js +140 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts +26 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js +146 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +23 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js +171 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts +69 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js +7 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.d.ts +30 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.js +79 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-aggregator.d.ts → session/processors/metrics/metrics-aggregator.d.ts} +6 -5
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-aggregator.js → session/processors/metrics/metrics-aggregator.js} +20 -12
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sender.d.ts → session/processors/metrics/metrics-api-client.d.ts} +18 -11
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sender.js → session/processors/metrics/metrics-api-client.js} +143 -15
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-post-processor.d.ts → session/processors/metrics/metrics-post-processor.d.ts} +3 -3
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-post-processor.js → session/processors/metrics/metrics-post-processor.js} +3 -3
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts +24 -0
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sync.plugin.js → session/processors/metrics/metrics-sync-processor.js} +94 -165
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-types.d.ts → session/processors/metrics/metrics-types.d.ts} +2 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-types.js → session/processors/metrics/metrics-types.js} +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.js.map +1 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.d.ts +15 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.js +33 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.js.map +1 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-writer.d.ts +26 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-writer.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.jsonl-writer.js → session/utils/jsonl-writer.js} +11 -27
- package/dist/providers/plugins/sso/session/utils/jsonl-writer.js.map +1 -0
- package/dist/providers/plugins/sso/sso.auth.js +1 -1
- package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.d.ts +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.template.js +71 -43
- package/dist/providers/plugins/sso/sso.template.js.map +1 -1
- package/dist/utils/{config-loader.d.ts → config.d.ts} +6 -1
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/{config-loader.js → config.js} +30 -4
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/errors.d.ts +89 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +340 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/exec.d.ts +6 -0
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +6 -0
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/file-operations.d.ts +20 -0
- package/dist/utils/file-operations.d.ts.map +1 -0
- package/dist/utils/file-operations.js +48 -0
- package/dist/utils/file-operations.js.map +1 -0
- package/dist/utils/logger.d.ts +2 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +15 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/{json-parser.d.ts → parsers.d.ts} +1 -1
- package/dist/utils/parsers.d.ts.map +1 -0
- package/dist/utils/{json-parser.js → parsers.js} +1 -1
- package/dist/utils/parsers.js.map +1 -0
- package/dist/utils/{path-utils.d.ts → paths.d.ts} +77 -12
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/{path-utils.js → paths.js} +103 -12
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/{npm.d.ts → processes.d.ts} +44 -7
- package/dist/utils/processes.d.ts.map +1 -0
- package/dist/utils/{npm.js → processes.js} +129 -10
- package/dist/utils/processes.js.map +1 -0
- package/dist/utils/profile.d.ts +1 -16
- package/dist/utils/profile.d.ts.map +1 -1
- package/dist/utils/profile.js +1 -27
- package/dist/utils/profile.js.map +1 -1
- package/dist/utils/security.d.ts +62 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +396 -0
- package/dist/utils/security.js.map +1 -0
- package/package.json +11 -11
- package/scripts/copy-plugins.js +57 -0
- package/scripts/license-check.js +23 -0
- package/bin/codemie-codex.js +0 -18
- package/bin/codemie-deepagents.js +0 -18
- package/dist/agents/core/BaseMetricsAdapter.d.ts +0 -165
- package/dist/agents/core/BaseMetricsAdapter.d.ts.map +0 -1
- package/dist/agents/core/BaseMetricsAdapter.js +0 -308
- package/dist/agents/core/BaseMetricsAdapter.js.map +0 -1
- package/dist/agents/core/metrics/MetricsOrchestrator.d.ts +0 -81
- package/dist/agents/core/metrics/MetricsOrchestrator.d.ts.map +0 -1
- package/dist/agents/core/metrics/MetricsOrchestrator.js +0 -417
- package/dist/agents/core/metrics/MetricsOrchestrator.js.map +0 -1
- package/dist/agents/core/metrics/core/DeltaWriter.d.ts +0 -49
- package/dist/agents/core/metrics/core/DeltaWriter.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/DeltaWriter.js +0 -152
- package/dist/agents/core/metrics/core/DeltaWriter.js.map +0 -1
- package/dist/agents/core/metrics/core/FileSnapshotter.d.ts +0 -22
- package/dist/agents/core/metrics/core/FileSnapshotter.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/FileSnapshotter.js +0 -74
- package/dist/agents/core/metrics/core/FileSnapshotter.js.map +0 -1
- package/dist/agents/core/metrics/core/SessionCorrelator.d.ts +0 -34
- package/dist/agents/core/metrics/core/SessionCorrelator.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/SessionCorrelator.js +0 -157
- package/dist/agents/core/metrics/core/SessionCorrelator.js.map +0 -1
- package/dist/agents/core/metrics/core/SyncStateManager.d.ts +0 -69
- package/dist/agents/core/metrics/core/SyncStateManager.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/SyncStateManager.js +0 -283
- package/dist/agents/core/metrics/core/SyncStateManager.js.map +0 -1
- package/dist/agents/core/metrics/session/SessionStore.d.ts +0 -43
- package/dist/agents/core/metrics/session/SessionStore.d.ts.map +0 -1
- package/dist/agents/core/metrics/session/SessionStore.js +0 -146
- package/dist/agents/core/metrics/session/SessionStore.js.map +0 -1
- package/dist/agents/core/metrics-config.d.ts +0 -38
- package/dist/agents/core/metrics-config.d.ts.map +0 -1
- package/dist/agents/core/metrics-config.js +0 -95
- package/dist/agents/core/metrics-config.js.map +0 -1
- package/dist/agents/plugins/claude.metrics.d.ts +0 -102
- package/dist/agents/plugins/claude.metrics.d.ts.map +0 -1
- package/dist/agents/plugins/claude.metrics.js +0 -656
- package/dist/agents/plugins/claude.metrics.js.map +0 -1
- package/dist/agents/plugins/claude.plugin.d.ts +0 -19
- package/dist/agents/plugins/claude.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/claude.plugin.js.map +0 -1
- package/dist/agents/plugins/codex.plugin.d.ts +0 -17
- package/dist/agents/plugins/codex.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/codex.plugin.js +0 -386
- package/dist/agents/plugins/codex.plugin.js.map +0 -1
- package/dist/agents/plugins/deepagents.plugin.d.ts +0 -21
- package/dist/agents/plugins/deepagents.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/deepagents.plugin.js +0 -104
- package/dist/agents/plugins/deepagents.plugin.js.map +0 -1
- package/dist/agents/plugins/gemini.metrics.d.ts +0 -99
- package/dist/agents/plugins/gemini.metrics.d.ts.map +0 -1
- package/dist/agents/plugins/gemini.metrics.js +0 -475
- package/dist/agents/plugins/gemini.metrics.js.map +0 -1
- package/dist/agents/plugins/gemini.plugin.d.ts +0 -16
- package/dist/agents/plugins/gemini.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/gemini.plugin.js +0 -80
- package/dist/agents/plugins/gemini.plugin.js.map +0 -1
- package/dist/agents/plugins/history-parser.d.ts +0 -52
- package/dist/agents/plugins/history-parser.d.ts.map +0 -1
- package/dist/agents/plugins/history-parser.js +0 -155
- package/dist/agents/plugins/history-parser.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts +0 -28
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts +0 -62
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js +0 -157
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts +0 -32
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js +0 -159
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts +0 -36
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.js.map +0 -1
- package/dist/utils/config-loader.d.ts.map +0 -1
- package/dist/utils/config-loader.js.map +0 -1
- package/dist/utils/credential-store.d.ts +0 -22
- package/dist/utils/credential-store.d.ts.map +0 -1
- package/dist/utils/credential-store.js +0 -165
- package/dist/utils/credential-store.js.map +0 -1
- package/dist/utils/dirname.d.ts +0 -7
- package/dist/utils/dirname.d.ts.map +0 -1
- package/dist/utils/dirname.js +0 -11
- package/dist/utils/dirname.js.map +0 -1
- package/dist/utils/error-context.d.ts +0 -90
- package/dist/utils/error-context.d.ts.map +0 -1
- package/dist/utils/error-context.js +0 -338
- package/dist/utils/error-context.js.map +0 -1
- package/dist/utils/first-time.d.ts.map +0 -1
- package/dist/utils/first-time.js.map +0 -1
- package/dist/utils/git.d.ts +0 -13
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js +0 -37
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/installation-id.d.ts +0 -10
- package/dist/utils/installation-id.d.ts.map +0 -1
- package/dist/utils/installation-id.js +0 -30
- package/dist/utils/installation-id.js.map +0 -1
- package/dist/utils/json-parser.d.ts.map +0 -1
- package/dist/utils/json-parser.js.map +0 -1
- package/dist/utils/npm.d.ts.map +0 -1
- package/dist/utils/npm.js.map +0 -1
- package/dist/utils/path-utils.d.ts.map +0 -1
- package/dist/utils/path-utils.js.map +0 -1
- package/dist/utils/profile-display.d.ts.map +0 -1
- package/dist/utils/profile-display.js.map +0 -1
- package/dist/utils/sanitize.d.ts +0 -28
- package/dist/utils/sanitize.d.ts.map +0 -1
- package/dist/utils/sanitize.js +0 -212
- package/dist/utils/sanitize.js.map +0 -1
- package/dist/utils/which.d.ts +0 -20
- package/dist/utils/which.d.ts.map +0 -1
- package/dist/utils/which.js +0 -54
- package/dist/utils/which.js.map +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Utilities
|
|
3
|
+
*
|
|
4
|
+
* Consolidated security operations including:
|
|
5
|
+
* - Data sanitization and redaction for logs
|
|
6
|
+
* - Encrypted credential storage
|
|
7
|
+
* - Sensitive data detection
|
|
8
|
+
*/
|
|
9
|
+
import { SSOCredentials } from '../providers/core/types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Sanitize a value for logging
|
|
12
|
+
*/
|
|
13
|
+
export declare function sanitizeValue(value: unknown, key?: string): unknown;
|
|
14
|
+
/**
|
|
15
|
+
* Sanitize an object for logging
|
|
16
|
+
*/
|
|
17
|
+
export declare function sanitizeObject(obj: Record<string, unknown>): Record<string, unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Sanitize cookie object - only show cookie names and count
|
|
20
|
+
*/
|
|
21
|
+
export declare function sanitizeCookies(cookies: Record<string, string> | undefined): string;
|
|
22
|
+
/**
|
|
23
|
+
* Sanitize authentication token - only show type and prefix
|
|
24
|
+
*/
|
|
25
|
+
export declare function sanitizeAuthToken(token: string | undefined): string;
|
|
26
|
+
/**
|
|
27
|
+
* Sanitize HTTP headers - special handling for cookie and set-cookie headers
|
|
28
|
+
*/
|
|
29
|
+
export declare function sanitizeHeaders(headers: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* Sanitize log arguments before writing to console or file
|
|
32
|
+
*/
|
|
33
|
+
export declare function sanitizeLogArgs(...args: unknown[]): unknown[];
|
|
34
|
+
/**
|
|
35
|
+
* Secure credential storage with encryption
|
|
36
|
+
*
|
|
37
|
+
* Stores SSO credentials using:
|
|
38
|
+
* - System keychain (macOS Keychain, Windows Credential Vault) when available
|
|
39
|
+
* - Encrypted file storage as fallback
|
|
40
|
+
* - Machine-specific AES-256-CBC encryption
|
|
41
|
+
*/
|
|
42
|
+
export declare class CredentialStore {
|
|
43
|
+
private static instance;
|
|
44
|
+
private encryptionKey;
|
|
45
|
+
private constructor();
|
|
46
|
+
static getInstance(): CredentialStore;
|
|
47
|
+
/**
|
|
48
|
+
* Generate a storage key for a given base URL
|
|
49
|
+
* @param baseUrl - The base URL to hash
|
|
50
|
+
* @returns Storage key (e.g., "sso-abc123...")
|
|
51
|
+
*/
|
|
52
|
+
private getUrlStorageKey;
|
|
53
|
+
storeSSOCredentials(credentials: SSOCredentials, baseUrl?: string): Promise<void>;
|
|
54
|
+
retrieveSSOCredentials(baseUrl?: string): Promise<SSOCredentials | null>;
|
|
55
|
+
clearSSOCredentials(baseUrl?: string): Promise<void>;
|
|
56
|
+
private encrypt;
|
|
57
|
+
private decrypt;
|
|
58
|
+
private getOrCreateEncryptionKey;
|
|
59
|
+
private storeToFile;
|
|
60
|
+
private retrieveFromFile;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AA4D5D;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAqCnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQpF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,CAWnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAenE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6DrG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAgB7D;AA8BD;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO;IAIP,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMlB,mBAAmB,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBjF,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAmCxE,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB1D,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,wBAAwB;YAMlB,WAAW;YAMX,gBAAgB;CAO/B"}
|
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Utilities
|
|
3
|
+
*
|
|
4
|
+
* Consolidated security operations including:
|
|
5
|
+
* - Data sanitization and redaction for logs
|
|
6
|
+
* - Encrypted credential storage
|
|
7
|
+
* - Sensitive data detection
|
|
8
|
+
*/
|
|
9
|
+
import * as crypto from 'crypto';
|
|
10
|
+
import * as fs from 'fs/promises';
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
import * as os from 'os';
|
|
13
|
+
import { getCodemiePath } from './paths.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Data Sanitization and Redaction
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Patterns to identify sensitive keys in objects
|
|
19
|
+
*/
|
|
20
|
+
const SENSITIVE_KEY_PATTERNS = [
|
|
21
|
+
/api[_-]?key/i,
|
|
22
|
+
/auth[_-]?token/i,
|
|
23
|
+
/access[_-]?token/i,
|
|
24
|
+
/refresh[_-]?token/i,
|
|
25
|
+
/bearer[_-]?token/i,
|
|
26
|
+
/password/i,
|
|
27
|
+
/secret/i,
|
|
28
|
+
/credential/i,
|
|
29
|
+
/private[_-]?key/i,
|
|
30
|
+
/cookie/i,
|
|
31
|
+
/authorization/i
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Patterns to identify sensitive values (even if key name is not sensitive)
|
|
35
|
+
*/
|
|
36
|
+
const SENSITIVE_VALUE_PATTERNS = [
|
|
37
|
+
/^sk-[a-zA-Z0-9]{20,}$/, // OpenAI API keys
|
|
38
|
+
/^sk-ant-[a-zA-Z0-9-_]{95,}$/, // Anthropic API keys
|
|
39
|
+
/^ya29\.[a-zA-Z0-9-_]{100,}$/, // Google OAuth tokens
|
|
40
|
+
/^[A-Za-z0-9-_]{20,}\.[A-Za-z0-9-_]{20,}\.[A-Za-z0-9-_]{20,}$/, // JWT tokens
|
|
41
|
+
/^Bearer\s+[A-Za-z0-9-_.+/=]{20,}$/i, // Bearer tokens
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Check if a key name indicates sensitive data
|
|
45
|
+
*/
|
|
46
|
+
function isSensitiveKey(key) {
|
|
47
|
+
return SENSITIVE_KEY_PATTERNS.some(pattern => pattern.test(key));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if a value looks like sensitive data
|
|
51
|
+
*/
|
|
52
|
+
function isSensitiveValue(value) {
|
|
53
|
+
if (value.length < 20)
|
|
54
|
+
return false; // Short strings unlikely to be secrets
|
|
55
|
+
return SENSITIVE_VALUE_PATTERNS.some(pattern => pattern.test(value));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Mask a sensitive string, showing only first and last few characters
|
|
59
|
+
*/
|
|
60
|
+
function maskString(value, showChars = 4) {
|
|
61
|
+
if (value.length <= showChars * 2) {
|
|
62
|
+
return '[REDACTED]';
|
|
63
|
+
}
|
|
64
|
+
return `${value.slice(0, showChars)}...${value.slice(-showChars)} [REDACTED]`;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Sanitize a value for logging
|
|
68
|
+
*/
|
|
69
|
+
export function sanitizeValue(value, key) {
|
|
70
|
+
// Handle null/undefined
|
|
71
|
+
if (value === null || value === undefined) {
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
// Check if key name is sensitive
|
|
75
|
+
if (key && isSensitiveKey(key)) {
|
|
76
|
+
if (typeof value === 'string') {
|
|
77
|
+
return maskString(value);
|
|
78
|
+
}
|
|
79
|
+
if (typeof value === 'object') {
|
|
80
|
+
return '[REDACTED OBJECT]';
|
|
81
|
+
}
|
|
82
|
+
return '[REDACTED]';
|
|
83
|
+
}
|
|
84
|
+
// Handle strings
|
|
85
|
+
if (typeof value === 'string') {
|
|
86
|
+
if (isSensitiveValue(value)) {
|
|
87
|
+
return maskString(value);
|
|
88
|
+
}
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
// Handle arrays
|
|
92
|
+
if (Array.isArray(value)) {
|
|
93
|
+
return value.map(item => sanitizeValue(item));
|
|
94
|
+
}
|
|
95
|
+
// Handle objects
|
|
96
|
+
if (typeof value === 'object') {
|
|
97
|
+
return sanitizeObject(value);
|
|
98
|
+
}
|
|
99
|
+
// Handle primitives (numbers, booleans, etc.)
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Sanitize an object for logging
|
|
104
|
+
*/
|
|
105
|
+
export function sanitizeObject(obj) {
|
|
106
|
+
const sanitized = {};
|
|
107
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
108
|
+
sanitized[key] = sanitizeValue(value, key);
|
|
109
|
+
}
|
|
110
|
+
return sanitized;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Sanitize cookie object - only show cookie names and count
|
|
114
|
+
*/
|
|
115
|
+
export function sanitizeCookies(cookies) {
|
|
116
|
+
if (!cookies || typeof cookies !== 'object') {
|
|
117
|
+
return 'none';
|
|
118
|
+
}
|
|
119
|
+
const names = Object.keys(cookies);
|
|
120
|
+
if (names.length === 0) {
|
|
121
|
+
return 'none';
|
|
122
|
+
}
|
|
123
|
+
return `${names.length} cookie(s): ${names.join(', ')} [values redacted]`;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Sanitize authentication token - only show type and prefix
|
|
127
|
+
*/
|
|
128
|
+
export function sanitizeAuthToken(token) {
|
|
129
|
+
if (!token) {
|
|
130
|
+
return 'none';
|
|
131
|
+
}
|
|
132
|
+
if (token === 'sso-authenticated') {
|
|
133
|
+
return 'sso-authenticated (placeholder)';
|
|
134
|
+
}
|
|
135
|
+
// Show only prefix for real tokens
|
|
136
|
+
if (token.length > 8) {
|
|
137
|
+
return `${token.slice(0, 8)}... [${token.length} chars, redacted]`;
|
|
138
|
+
}
|
|
139
|
+
return '[REDACTED]';
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Sanitize HTTP headers - special handling for cookie and set-cookie headers
|
|
143
|
+
*/
|
|
144
|
+
export function sanitizeHeaders(headers) {
|
|
145
|
+
if (!headers || typeof headers !== 'object') {
|
|
146
|
+
return {};
|
|
147
|
+
}
|
|
148
|
+
const sanitized = {};
|
|
149
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
150
|
+
const lowerKey = key.toLowerCase();
|
|
151
|
+
// Special handling for cookie headers
|
|
152
|
+
if (lowerKey === 'cookie') {
|
|
153
|
+
if (typeof value === 'string') {
|
|
154
|
+
// Parse cookie string and show names only
|
|
155
|
+
const cookieNames = value.split(';')
|
|
156
|
+
.map(c => c.trim().split('=')[0])
|
|
157
|
+
.filter(Boolean);
|
|
158
|
+
sanitized[key] = `${cookieNames.length} cookie(s): ${cookieNames.join(', ')} [values redacted]`;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
sanitized[key] = '[REDACTED]';
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Special handling for set-cookie headers (array of strings)
|
|
165
|
+
else if (lowerKey === 'set-cookie') {
|
|
166
|
+
if (Array.isArray(value)) {
|
|
167
|
+
const cookieNames = value.map(cookie => {
|
|
168
|
+
const name = cookie.split('=')[0].trim();
|
|
169
|
+
return name;
|
|
170
|
+
});
|
|
171
|
+
sanitized[key] = `Setting ${cookieNames.length} cookie(s): ${cookieNames.join(', ')} [values redacted]`;
|
|
172
|
+
}
|
|
173
|
+
else if (typeof value === 'string') {
|
|
174
|
+
const name = value.split('=')[0].trim();
|
|
175
|
+
sanitized[key] = `Setting cookie: ${name} [value redacted]`;
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
sanitized[key] = '[REDACTED]';
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Special handling for authorization header
|
|
182
|
+
else if (lowerKey === 'authorization') {
|
|
183
|
+
if (typeof value === 'string') {
|
|
184
|
+
const parts = value.split(' ');
|
|
185
|
+
if (parts.length === 2) {
|
|
186
|
+
sanitized[key] = `${parts[0]} [token redacted]`;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
sanitized[key] = '[REDACTED]';
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
sanitized[key] = '[REDACTED]';
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Other sensitive headers
|
|
197
|
+
else if (isSensitiveKey(key)) {
|
|
198
|
+
sanitized[key] = '[REDACTED]';
|
|
199
|
+
}
|
|
200
|
+
// Non-sensitive headers pass through
|
|
201
|
+
else {
|
|
202
|
+
sanitized[key] = value;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return sanitized;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Sanitize log arguments before writing to console or file
|
|
209
|
+
*/
|
|
210
|
+
export function sanitizeLogArgs(...args) {
|
|
211
|
+
return args.map(arg => {
|
|
212
|
+
if (typeof arg === 'string') {
|
|
213
|
+
// Check if string looks like sensitive data
|
|
214
|
+
if (isSensitiveValue(arg)) {
|
|
215
|
+
return maskString(arg);
|
|
216
|
+
}
|
|
217
|
+
return arg;
|
|
218
|
+
}
|
|
219
|
+
if (typeof arg === 'object' && arg !== null) {
|
|
220
|
+
return sanitizeValue(arg);
|
|
221
|
+
}
|
|
222
|
+
return arg;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
// ============================================================================
|
|
226
|
+
// Credential Storage
|
|
227
|
+
// ============================================================================
|
|
228
|
+
const SERVICE_NAME = 'codemie-code';
|
|
229
|
+
const ACCOUNT_NAME = 'sso-credentials';
|
|
230
|
+
const FALLBACK_FILE = getCodemiePath('sso-credentials.enc');
|
|
231
|
+
const CREDENTIALS_DIR = getCodemiePath('credentials');
|
|
232
|
+
/**
|
|
233
|
+
* Lazy load keytar to avoid requiring system dependencies during test imports
|
|
234
|
+
* Falls back gracefully if keytar is not available (e.g., in CI environments)
|
|
235
|
+
*/
|
|
236
|
+
let keytar = undefined;
|
|
237
|
+
async function getKeytar() {
|
|
238
|
+
if (keytar !== undefined) {
|
|
239
|
+
return keytar;
|
|
240
|
+
}
|
|
241
|
+
try {
|
|
242
|
+
keytar = await import('keytar');
|
|
243
|
+
return keytar;
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// Keytar not available (missing system dependencies)
|
|
247
|
+
keytar = null;
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Secure credential storage with encryption
|
|
253
|
+
*
|
|
254
|
+
* Stores SSO credentials using:
|
|
255
|
+
* - System keychain (macOS Keychain, Windows Credential Vault) when available
|
|
256
|
+
* - Encrypted file storage as fallback
|
|
257
|
+
* - Machine-specific AES-256-CBC encryption
|
|
258
|
+
*/
|
|
259
|
+
export class CredentialStore {
|
|
260
|
+
static instance;
|
|
261
|
+
encryptionKey;
|
|
262
|
+
constructor() {
|
|
263
|
+
this.encryptionKey = this.getOrCreateEncryptionKey();
|
|
264
|
+
}
|
|
265
|
+
static getInstance() {
|
|
266
|
+
if (!CredentialStore.instance) {
|
|
267
|
+
CredentialStore.instance = new CredentialStore();
|
|
268
|
+
}
|
|
269
|
+
return CredentialStore.instance;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Generate a storage key for a given base URL
|
|
273
|
+
* @param baseUrl - The base URL to hash
|
|
274
|
+
* @returns Storage key (e.g., "sso-abc123...")
|
|
275
|
+
*/
|
|
276
|
+
getUrlStorageKey(baseUrl) {
|
|
277
|
+
const normalized = baseUrl.replace(/\/$/, '').toLowerCase();
|
|
278
|
+
const hash = crypto.createHash('sha256').update(normalized).digest('hex');
|
|
279
|
+
return `sso-${hash}`;
|
|
280
|
+
}
|
|
281
|
+
async storeSSOCredentials(credentials, baseUrl) {
|
|
282
|
+
const encrypted = this.encrypt(JSON.stringify(credentials));
|
|
283
|
+
// Determine storage key based on whether baseUrl is provided
|
|
284
|
+
const accountName = baseUrl ? this.getUrlStorageKey(baseUrl) : ACCOUNT_NAME;
|
|
285
|
+
const filePath = baseUrl
|
|
286
|
+
? path.join(CREDENTIALS_DIR, `${this.getUrlStorageKey(baseUrl)}.enc`)
|
|
287
|
+
: FALLBACK_FILE;
|
|
288
|
+
// Store to keychain if available (best effort, don't fail if it errors)
|
|
289
|
+
const keytarModule = await getKeytar();
|
|
290
|
+
if (keytarModule) {
|
|
291
|
+
try {
|
|
292
|
+
await keytarModule.setPassword(SERVICE_NAME, accountName, encrypted);
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
// Continue to file storage even if keychain fails
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
// Always store to file as well for consistency
|
|
299
|
+
await this.storeToFile(encrypted, filePath);
|
|
300
|
+
}
|
|
301
|
+
async retrieveSSOCredentials(baseUrl) {
|
|
302
|
+
// Determine storage key based on whether baseUrl is provided
|
|
303
|
+
const accountName = baseUrl ? this.getUrlStorageKey(baseUrl) : ACCOUNT_NAME;
|
|
304
|
+
const filePath = baseUrl
|
|
305
|
+
? path.join(CREDENTIALS_DIR, `${this.getUrlStorageKey(baseUrl)}.enc`)
|
|
306
|
+
: FALLBACK_FILE;
|
|
307
|
+
// Try keychain first if available
|
|
308
|
+
const keytarModule = await getKeytar();
|
|
309
|
+
if (keytarModule) {
|
|
310
|
+
try {
|
|
311
|
+
const encrypted = await keytarModule.getPassword(SERVICE_NAME, accountName);
|
|
312
|
+
if (encrypted) {
|
|
313
|
+
const decrypted = this.decrypt(encrypted);
|
|
314
|
+
return JSON.parse(decrypted);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
// Fall through to file storage
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// Always try file storage as fallback
|
|
322
|
+
try {
|
|
323
|
+
const encrypted = await this.retrieveFromFile(filePath);
|
|
324
|
+
if (encrypted) {
|
|
325
|
+
const decrypted = this.decrypt(encrypted);
|
|
326
|
+
return JSON.parse(decrypted);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch {
|
|
330
|
+
// Unable to decrypt file storage
|
|
331
|
+
}
|
|
332
|
+
return null;
|
|
333
|
+
}
|
|
334
|
+
async clearSSOCredentials(baseUrl) {
|
|
335
|
+
// Determine storage key based on whether baseUrl is provided
|
|
336
|
+
const accountName = baseUrl ? this.getUrlStorageKey(baseUrl) : ACCOUNT_NAME;
|
|
337
|
+
const filePath = baseUrl
|
|
338
|
+
? path.join(CREDENTIALS_DIR, `${this.getUrlStorageKey(baseUrl)}.enc`)
|
|
339
|
+
: FALLBACK_FILE;
|
|
340
|
+
// Clear keychain if available
|
|
341
|
+
const keytarModule = await getKeytar();
|
|
342
|
+
if (keytarModule) {
|
|
343
|
+
try {
|
|
344
|
+
await keytarModule.deletePassword(SERVICE_NAME, accountName);
|
|
345
|
+
}
|
|
346
|
+
catch {
|
|
347
|
+
// Ignore errors, will try file storage next
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// Also clear file storage
|
|
351
|
+
try {
|
|
352
|
+
await fs.unlink(filePath);
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// Ignore file not found errors
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
encrypt(text) {
|
|
359
|
+
const iv = crypto.randomBytes(16);
|
|
360
|
+
// Use a proper 32-byte key by hashing the encryptionKey
|
|
361
|
+
const key = crypto.createHash('sha256').update(this.encryptionKey).digest();
|
|
362
|
+
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
|
|
363
|
+
let encrypted = cipher.update(text, 'utf8', 'hex');
|
|
364
|
+
encrypted += cipher.final('hex');
|
|
365
|
+
return iv.toString('hex') + ':' + encrypted;
|
|
366
|
+
}
|
|
367
|
+
decrypt(text) {
|
|
368
|
+
const [ivHex, encryptedHex] = text.split(':');
|
|
369
|
+
const iv = Buffer.from(ivHex, 'hex');
|
|
370
|
+
// Use a proper 32-byte key by hashing the encryptionKey
|
|
371
|
+
const key = crypto.createHash('sha256').update(this.encryptionKey).digest();
|
|
372
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
|
|
373
|
+
let decrypted = decipher.update(encryptedHex, 'hex', 'utf8');
|
|
374
|
+
decrypted += decipher.final('utf8');
|
|
375
|
+
return decrypted;
|
|
376
|
+
}
|
|
377
|
+
getOrCreateEncryptionKey() {
|
|
378
|
+
// Use machine-specific key based on hardware info
|
|
379
|
+
const machineId = os.hostname() + os.platform() + os.arch();
|
|
380
|
+
return crypto.createHash('sha256').update(machineId).digest('hex');
|
|
381
|
+
}
|
|
382
|
+
async storeToFile(encrypted, filePath) {
|
|
383
|
+
const dir = path.dirname(filePath);
|
|
384
|
+
await fs.mkdir(dir, { recursive: true });
|
|
385
|
+
await fs.writeFile(filePath, encrypted, 'utf8');
|
|
386
|
+
}
|
|
387
|
+
async retrieveFromFile(filePath) {
|
|
388
|
+
try {
|
|
389
|
+
return await fs.readFile(filePath, 'utf8');
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
return null;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codemieai/code",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "Unified AI coding assistant CLI - Manage Claude Code,
|
|
3
|
+
"version": "0.0.29",
|
|
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",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -9,9 +9,7 @@
|
|
|
9
9
|
"codemie": "./bin/codemie.js",
|
|
10
10
|
"codemie-code": "./bin/agent-executor.js",
|
|
11
11
|
"codemie-claude": "./bin/codemie-claude.js",
|
|
12
|
-
"codemie-
|
|
13
|
-
"codemie-gemini": "./bin/codemie-gemini.js",
|
|
14
|
-
"codemie-deepagents": "./bin/codemie-deepagents.js"
|
|
12
|
+
"codemie-gemini": "./bin/codemie-gemini.js"
|
|
15
13
|
},
|
|
16
14
|
"files": [
|
|
17
15
|
"dist",
|
|
@@ -22,7 +20,8 @@
|
|
|
22
20
|
"LICENSE"
|
|
23
21
|
],
|
|
24
22
|
"scripts": {
|
|
25
|
-
"build": "tsc",
|
|
23
|
+
"build": "tsc && npm run copy-plugin",
|
|
24
|
+
"copy-plugin": "node scripts/copy-plugins.js",
|
|
26
25
|
"dev": "tsc --watch",
|
|
27
26
|
"test": "vitest",
|
|
28
27
|
"test:unit": "vitest run src",
|
|
@@ -31,12 +30,12 @@
|
|
|
31
30
|
"test:watch": "vitest --watch",
|
|
32
31
|
"test:ui": "vitest --ui",
|
|
33
32
|
"test:run": "vitest run",
|
|
34
|
-
"lint": "eslint 'src/**/*.ts' --max-warnings=0",
|
|
35
|
-
"lint:fix": "eslint 'src/**/*.ts' --fix",
|
|
33
|
+
"lint": "eslint '{src,tests}/**/*.ts' --max-warnings=0",
|
|
34
|
+
"lint:fix": "eslint '{src,tests}/**/*.ts' --fix",
|
|
36
35
|
"commitlint": "commitlint --edit",
|
|
37
36
|
"commitlint:last": "commitlint --from HEAD~1 --to HEAD --verbose",
|
|
38
37
|
"validate:secrets": "node scripts/validate-secrets.js",
|
|
39
|
-
"license-check": "
|
|
38
|
+
"license-check": "node scripts/license-check.js",
|
|
40
39
|
"ci": "npm run license-check && npm run lint && npm run build && npm run test:unit && npm run test:integration",
|
|
41
40
|
"ci:full": "npm run commitlint:last && npm run ci",
|
|
42
41
|
"prepare": "husky",
|
|
@@ -62,7 +61,6 @@
|
|
|
62
61
|
"claude",
|
|
63
62
|
"claude-code",
|
|
64
63
|
"openai",
|
|
65
|
-
"codex",
|
|
66
64
|
"gemini",
|
|
67
65
|
"anthropic",
|
|
68
66
|
"gpt",
|
|
@@ -116,6 +114,8 @@
|
|
|
116
114
|
"cors": "^2.8.5",
|
|
117
115
|
"dotenv": "^16.3.1",
|
|
118
116
|
"express": "^5.1.0",
|
|
117
|
+
"http-proxy-agent": "^7.0.2",
|
|
118
|
+
"https-proxy-agent": "^7.0.5",
|
|
119
119
|
"inquirer": "^9.2.12",
|
|
120
120
|
"keytar": "^7.9.0",
|
|
121
121
|
"minimatch": "^10.1.1",
|
|
@@ -142,6 +142,6 @@
|
|
|
142
142
|
"vitest": "^4.0.10"
|
|
143
143
|
},
|
|
144
144
|
"engines": {
|
|
145
|
-
"node": ">=
|
|
145
|
+
"node": ">=20.0.0"
|
|
146
146
|
}
|
|
147
147
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Cross-platform script to copy plugin assets from src/ to dist/
|
|
5
|
+
* Works on Windows, macOS, and Linux
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { dirname, join } from 'path';
|
|
10
|
+
import { rmSync, mkdirSync, cpSync, existsSync } from 'fs';
|
|
11
|
+
|
|
12
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const __dirname = dirname(__filename);
|
|
14
|
+
const rootDir = join(__dirname, '..');
|
|
15
|
+
|
|
16
|
+
const copyConfigs = [
|
|
17
|
+
{
|
|
18
|
+
name: 'Claude plugin',
|
|
19
|
+
src: join(rootDir, 'src/agents/plugins/claude/plugin'),
|
|
20
|
+
dest: join(rootDir, 'dist/agents/plugins/claude/plugin')
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'Gemini extension',
|
|
24
|
+
src: join(rootDir, 'src/agents/plugins/gemini/extension'),
|
|
25
|
+
dest: join(rootDir, 'dist/agents/plugins/gemini/extension')
|
|
26
|
+
}
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
console.log('Copying plugin assets...\n');
|
|
30
|
+
|
|
31
|
+
for (const config of copyConfigs) {
|
|
32
|
+
console.log(`Processing ${config.name}:`);
|
|
33
|
+
|
|
34
|
+
// Remove destination if it exists
|
|
35
|
+
if (existsSync(config.dest)) {
|
|
36
|
+
console.log(` - Removing old ${config.dest}`);
|
|
37
|
+
rmSync(config.dest, { recursive: true, force: true });
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Check if source exists
|
|
41
|
+
if (!existsSync(config.src)) {
|
|
42
|
+
console.log(` - Warning: Source ${config.src} does not exist, skipping...`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Create parent directories
|
|
47
|
+
console.log(` - Creating ${config.dest}`);
|
|
48
|
+
mkdirSync(config.dest, { recursive: true });
|
|
49
|
+
|
|
50
|
+
// Copy recursively
|
|
51
|
+
console.log(` - Copying from ${config.src}`);
|
|
52
|
+
cpSync(config.src, config.dest, { recursive: true });
|
|
53
|
+
|
|
54
|
+
console.log(` ✓ ${config.name} copied successfully\n`);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
console.log('Plugin assets copied successfully!');
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper script for license-checker that ignores file arguments from lint-staged
|
|
5
|
+
* lint-staged passes matched files as arguments, but license-checker doesn't need them
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { spawnSync } from 'child_process';
|
|
9
|
+
import { platform } from 'os';
|
|
10
|
+
|
|
11
|
+
// Run license-checker without any file arguments
|
|
12
|
+
const allowedLicenses = 'MIT;Apache-2.0;ISC;BSD-2-Clause;BSD-3-Clause;0BSD;CC0-1.0;Unlicense;BlueOak-1.0.0;Python-2.0;CC-BY-4.0;Apache*;(MIT OR CC0-1.0);(MIT OR WTFPL);(BSD-2-Clause OR MIT OR Apache-2.0)';
|
|
13
|
+
|
|
14
|
+
// On Windows, we need shell: true for npx to work
|
|
15
|
+
// On Unix/Linux, we should NOT use shell: true to avoid semicolon interpretation
|
|
16
|
+
const isWindows = platform() === 'win32';
|
|
17
|
+
|
|
18
|
+
const result = spawnSync('npx', ['license-checker', '--summary', '--onlyAllow', allowedLicenses], {
|
|
19
|
+
stdio: 'inherit',
|
|
20
|
+
shell: isWindows
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
process.exit(result.status || 0);
|
package/bin/codemie-codex.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Codex Agent Entry Point
|
|
5
|
-
* Direct entry point for codemie-codex command
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { AgentCLI } from '../dist/agents/core/AgentCLI.js';
|
|
9
|
-
import { AgentRegistry } from '../dist/agents/registry.js';
|
|
10
|
-
|
|
11
|
-
const agent = AgentRegistry.getAgent('codex');
|
|
12
|
-
if (!agent) {
|
|
13
|
-
console.error('✗ Codex agent not found in registry');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const cli = new AgentCLI(agent);
|
|
18
|
-
await cli.run(process.argv);
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Deep Agents Entry Point
|
|
5
|
-
* Direct entry point for codemie-deepagents command
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { AgentCLI } from '../dist/agents/core/AgentCLI.js';
|
|
9
|
-
import { AgentRegistry } from '../dist/agents/registry.js';
|
|
10
|
-
|
|
11
|
-
const agent = AgentRegistry.getAgent('deepagents');
|
|
12
|
-
if (!agent) {
|
|
13
|
-
console.error('✗ Deep Agents not found in registry');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const cli = new AgentCLI(agent);
|
|
18
|
-
await cli.run(process.argv);
|