@codemieai/code 0.0.57 → 0.1.0
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 +165 -19
- package/bin/proxy-daemon.js +10 -0
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +3 -0
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/session/SessionStore.d.ts +4 -0
- package/dist/agents/core/session/SessionStore.d.ts.map +1 -1
- package/dist/agents/core/session/SessionStore.js +40 -1
- package/dist/agents/core/session/SessionStore.js.map +1 -1
- package/dist/agents/core/session/types.d.ts +7 -0
- package/dist/agents/core/session/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +18 -0
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/plugin/commands/README.md +2 -31
- package/dist/agents/plugins/claude/plugin/commands/codemie-catchup.md +5 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +42 -43
- package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +5 -0
- package/dist/agents/plugins/claude/plugin/commands/handoff.md +56 -0
- package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +5 -0
- package/dist/agents/plugins/claude/plugin/hooks/hooks.json +1 -1
- package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-rewrite.sh +101 -0
- package/dist/agents/plugins/claude/plugin/skills/msgraph/README.md +4 -1
- package/dist/agents/plugins/claude/plugin/skills/msgraph/SKILL.md +27 -8
- package/dist/agents/plugins/claude/plugin/skills/msgraph/scripts/msgraph.js +63 -3
- package/dist/agents/plugins/claude/plugin/skills/report-issue/SKILL.md +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +32 -20
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts +2 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +24 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/assets/demo.gif +0 -0
- package/dist/assets/skills-sh-egress-guard.cjs +166 -0
- package/dist/bin/proxy-daemon.d.ts +2 -0
- package/dist/bin/proxy-daemon.d.ts.map +1 -0
- package/dist/bin/proxy-daemon.js +138 -0
- package/dist/bin/proxy-daemon.js.map +1 -0
- package/dist/cli/commands/assistants/setup/constants.d.ts +1 -25
- package/dist/cli/commands/assistants/setup/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/constants.js +1 -20
- package/dist/cli/commands/assistants/setup/constants.js.map +1 -1
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.d.ts +4 -4
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js +11 -10
- package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js.map +1 -1
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts +4 -4
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js +11 -9
- package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.d.ts +4 -18
- package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.js +10 -60
- package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
- package/dist/cli/commands/assistants/setup/index.d.ts +0 -8
- package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/index.js +20 -164
- package/dist/cli/commands/assistants/setup/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/actions.d.ts +1 -30
- package/dist/cli/commands/assistants/setup/selection/actions.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/actions.js +1 -320
- package/dist/cli/commands/assistants/setup/selection/actions.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/constants.d.ts +3 -65
- package/dist/cli/commands/assistants/setup/selection/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/constants.js +4 -81
- package/dist/cli/commands/assistants/setup/selection/constants.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/index.d.ts +1 -9
- package/dist/cli/commands/assistants/setup/selection/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/index.js +14 -34
- package/dist/cli/commands/assistants/setup/selection/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts +1 -19
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js +1 -338
- package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/types.d.ts +7 -23
- package/dist/cli/commands/assistants/setup/selection/types.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts +0 -8
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/ui.js +7 -123
- package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -1
- package/dist/cli/commands/doctor/index.d.ts.map +1 -1
- package/dist/cli/commands/doctor/index.js +10 -1
- package/dist/cli/commands/doctor/index.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop-managed-mcp-servers.json +50 -0
- package/dist/cli/commands/proxy/connectors/desktop.d.ts +65 -0
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/desktop.js +218 -0
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -0
- package/dist/cli/commands/proxy/daemon-manager.d.ts +35 -0
- package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -0
- package/dist/cli/commands/proxy/daemon-manager.js +107 -0
- package/dist/cli/commands/proxy/daemon-manager.js.map +1 -0
- package/dist/cli/commands/proxy/index.d.ts +3 -0
- package/dist/cli/commands/proxy/index.d.ts.map +1 -0
- package/dist/cli/commands/proxy/index.js +258 -0
- package/dist/cli/commands/proxy/index.js.map +1 -0
- package/dist/cli/commands/proxy/inspect-desktop.d.ts +28 -0
- package/dist/cli/commands/proxy/inspect-desktop.d.ts.map +1 -0
- package/dist/cli/commands/proxy/inspect-desktop.js +134 -0
- package/dist/cli/commands/proxy/inspect-desktop.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +2 -0
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shared/constants.d.ts +15 -0
- package/dist/cli/commands/shared/constants.d.ts.map +1 -0
- package/dist/cli/commands/shared/constants.js +10 -0
- package/dist/cli/commands/shared/constants.js.map +1 -0
- package/dist/cli/commands/shared/helpers.d.ts +12 -0
- package/dist/cli/commands/shared/helpers.d.ts.map +1 -0
- package/dist/cli/commands/shared/helpers.js +54 -0
- package/dist/cli/commands/shared/helpers.js.map +1 -0
- package/dist/cli/commands/shared/prompts/storage-scope.d.ts +6 -0
- package/dist/cli/commands/shared/prompts/storage-scope.d.ts.map +1 -0
- package/dist/cli/commands/shared/prompts/storage-scope.js +84 -0
- package/dist/cli/commands/shared/prompts/storage-scope.js.map +1 -0
- package/dist/cli/commands/shared/selection/actions.d.ts +40 -0
- package/dist/cli/commands/shared/selection/actions.d.ts.map +1 -0
- package/dist/cli/commands/shared/selection/actions.js +264 -0
- package/dist/cli/commands/shared/selection/actions.js.map +1 -0
- package/dist/cli/commands/shared/selection/constants.d.ts +68 -0
- package/dist/cli/commands/shared/selection/constants.d.ts.map +1 -0
- package/dist/cli/commands/shared/selection/constants.js +70 -0
- package/dist/cli/commands/shared/selection/constants.js.map +1 -0
- package/dist/cli/commands/shared/selection/interactive-prompt.d.ts +16 -0
- package/dist/cli/commands/shared/selection/interactive-prompt.d.ts.map +1 -0
- package/dist/cli/commands/shared/selection/interactive-prompt.js +276 -0
- package/dist/cli/commands/shared/selection/interactive-prompt.js.map +1 -0
- package/dist/cli/commands/shared/selection/types.d.ts +31 -0
- package/dist/cli/commands/shared/selection/types.d.ts.map +1 -0
- package/dist/cli/commands/shared/selection/types.js +2 -0
- package/dist/cli/commands/shared/selection/types.js.map +1 -0
- package/dist/cli/commands/shared/selection/ui.d.ts +9 -0
- package/dist/cli/commands/shared/selection/ui.d.ts.map +1 -0
- package/dist/cli/commands/shared/selection/ui.js +92 -0
- package/dist/cli/commands/shared/selection/ui.js.map +1 -0
- package/dist/cli/commands/skills/add.d.ts +9 -0
- package/dist/cli/commands/skills/add.d.ts.map +1 -0
- package/dist/cli/commands/skills/add.js +187 -0
- package/dist/cli/commands/skills/add.js.map +1 -0
- package/dist/cli/commands/skills/find.d.ts +17 -0
- package/dist/cli/commands/skills/find.d.ts.map +1 -0
- package/dist/cli/commands/skills/find.js +94 -0
- package/dist/cli/commands/skills/find.js.map +1 -0
- package/dist/cli/commands/skills/index.d.ts +10 -0
- package/dist/cli/commands/skills/index.d.ts.map +1 -0
- package/dist/cli/commands/skills/index.js +23 -0
- package/dist/cli/commands/skills/index.js.map +1 -0
- package/dist/cli/commands/skills/lib/agent-detection.d.ts +27 -0
- package/dist/cli/commands/skills/lib/agent-detection.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/agent-detection.js +50 -0
- package/dist/cli/commands/skills/lib/agent-detection.js.map +1 -0
- package/dist/cli/commands/skills/lib/error-classify.d.ts +14 -0
- package/dist/cli/commands/skills/lib/error-classify.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/error-classify.js +64 -0
- package/dist/cli/commands/skills/lib/error-classify.js.map +1 -0
- package/dist/cli/commands/skills/lib/require-auth.d.ts +17 -0
- package/dist/cli/commands/skills/lib/require-auth.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/require-auth.js +44 -0
- package/dist/cli/commands/skills/lib/require-auth.js.map +1 -0
- package/dist/cli/commands/skills/lib/result-render.d.ts +26 -0
- package/dist/cli/commands/skills/lib/result-render.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/result-render.js +77 -0
- package/dist/cli/commands/skills/lib/result-render.js.map +1 -0
- package/dist/cli/commands/skills/lib/run-skills-cli.d.ts +46 -0
- package/dist/cli/commands/skills/lib/run-skills-cli.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/run-skills-cli.js +217 -0
- package/dist/cli/commands/skills/lib/run-skills-cli.js.map +1 -0
- package/dist/cli/commands/skills/lib/sanitize.d.ts +17 -0
- package/dist/cli/commands/skills/lib/sanitize.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/sanitize.js +73 -0
- package/dist/cli/commands/skills/lib/sanitize.js.map +1 -0
- package/dist/cli/commands/skills/lib/skills-metrics.d.ts +74 -0
- package/dist/cli/commands/skills/lib/skills-metrics.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/skills-metrics.js +268 -0
- package/dist/cli/commands/skills/lib/skills-metrics.js.map +1 -0
- package/dist/cli/commands/skills/lib/skills-search-client.d.ts +36 -0
- package/dist/cli/commands/skills/lib/skills-search-client.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/skills-search-client.js +147 -0
- package/dist/cli/commands/skills/lib/skills-search-client.js.map +1 -0
- package/dist/cli/commands/skills/lib/skills-sh-telemetry.d.ts +10 -0
- package/dist/cli/commands/skills/lib/skills-sh-telemetry.d.ts.map +1 -0
- package/dist/cli/commands/skills/lib/skills-sh-telemetry.js +33 -0
- package/dist/cli/commands/skills/lib/skills-sh-telemetry.js.map +1 -0
- package/dist/cli/commands/skills/list.d.ts +13 -0
- package/dist/cli/commands/skills/list.d.ts.map +1 -0
- package/dist/cli/commands/skills/list.js +55 -0
- package/dist/cli/commands/skills/list.js.map +1 -0
- package/dist/cli/commands/skills/remove.d.ts +11 -0
- package/dist/cli/commands/skills/remove.d.ts.map +1 -0
- package/dist/cli/commands/skills/remove.js +93 -0
- package/dist/cli/commands/skills/remove.js.map +1 -0
- package/dist/cli/commands/skills/setup/constants.d.ts +2 -0
- package/dist/cli/commands/skills/setup/constants.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/constants.js +2 -0
- package/dist/cli/commands/skills/setup/constants.js.map +1 -0
- package/dist/cli/commands/skills/setup/data.d.ts +28 -0
- package/dist/cli/commands/skills/setup/data.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/data.js +79 -0
- package/dist/cli/commands/skills/setup/data.js.map +1 -0
- package/dist/cli/commands/skills/setup/generators/claude-skill-generator.d.ts +12 -0
- package/dist/cli/commands/skills/setup/generators/claude-skill-generator.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/generators/claude-skill-generator.js +94 -0
- package/dist/cli/commands/skills/setup/generators/claude-skill-generator.js.map +1 -0
- package/dist/cli/commands/skills/setup/helpers.d.ts +12 -0
- package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/helpers.js +31 -0
- package/dist/cli/commands/skills/setup/helpers.js.map +1 -0
- package/dist/cli/commands/skills/setup/index.d.ts +5 -0
- package/dist/cli/commands/skills/setup/index.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/index.js +137 -0
- package/dist/cli/commands/skills/setup/index.js.map +1 -0
- package/dist/cli/commands/skills/setup/selection/actions.d.ts +2 -0
- package/dist/cli/commands/skills/setup/selection/actions.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/selection/actions.js +2 -0
- package/dist/cli/commands/skills/setup/selection/actions.js.map +1 -0
- package/dist/cli/commands/skills/setup/selection/constants.d.ts +11 -0
- package/dist/cli/commands/skills/setup/selection/constants.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/selection/constants.js +11 -0
- package/dist/cli/commands/skills/setup/selection/constants.js.map +1 -0
- package/dist/cli/commands/skills/setup/selection/index.d.ts +13 -0
- package/dist/cli/commands/skills/setup/selection/index.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/selection/index.js +113 -0
- package/dist/cli/commands/skills/setup/selection/index.js.map +1 -0
- package/dist/cli/commands/skills/setup/selection/interactive-prompt.d.ts +2 -0
- package/dist/cli/commands/skills/setup/selection/interactive-prompt.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/selection/interactive-prompt.js +2 -0
- package/dist/cli/commands/skills/setup/selection/interactive-prompt.js.map +1 -0
- package/dist/cli/commands/skills/setup/selection/types.d.ts +13 -0
- package/dist/cli/commands/skills/setup/selection/types.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/selection/types.js +2 -0
- package/dist/cli/commands/skills/setup/selection/types.js.map +1 -0
- package/dist/cli/commands/skills/setup/selection/ui.d.ts +3 -0
- package/dist/cli/commands/skills/setup/selection/ui.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/selection/ui.js +68 -0
- package/dist/cli/commands/skills/setup/selection/ui.js.map +1 -0
- package/dist/cli/commands/skills/setup/sync.d.ts +13 -0
- package/dist/cli/commands/skills/setup/sync.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/sync.js +46 -0
- package/dist/cli/commands/skills/setup/sync.js.map +1 -0
- package/dist/cli/commands/skills/update.d.ts +7 -0
- package/dist/cli/commands/skills/update.d.ts.map +1 -0
- package/dist/cli/commands/skills/update.js +71 -0
- package/dist/cli/commands/skills/update.js.map +1 -0
- package/dist/cli/first-time.d.ts.map +1 -1
- package/dist/cli/first-time.js +4 -0
- package/dist/cli/first-time.js.map +1 -1
- package/dist/cli/index.js +14 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +14 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/providers/core/types.d.ts +1 -1
- package/dist/providers/core/types.d.ts.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.d.ts.map +1 -1
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js +26 -2
- package/dist/providers/plugins/anthropic-subscription/anthropic-subscription.template.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts +31 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +148 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts +9 -0
- package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js +36 -0
- package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +12 -12
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +15 -15
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +4 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.js +4 -3
- package/dist/providers/plugins/sso/proxy/sso.proxy.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 +3 -3
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.models.js +2 -2
- package/dist/providers/plugins/sso/sso.models.js.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.js +6 -10
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts +15 -0
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.d.ts.map +1 -0
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js +117 -0
- package/dist/telemetry/clients/claude-desktop/ClaudeDesktopTelemetryAdapter.js.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +3 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +138 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.d.ts +4 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.d.ts.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.js +53 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.metrics.js.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts +4 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +60 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts +4 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +19 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +23 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +243 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -0
- package/dist/telemetry/runtime/checkpoints.d.ts +10 -0
- package/dist/telemetry/runtime/checkpoints.d.ts.map +1 -0
- package/dist/telemetry/runtime/checkpoints.js +8 -0
- package/dist/telemetry/runtime/checkpoints.js.map +1 -0
- package/dist/telemetry/runtime/types.d.ts +32 -0
- package/dist/telemetry/runtime/types.d.ts.map +1 -0
- package/dist/telemetry/runtime/types.js +2 -0
- package/dist/telemetry/runtime/types.js.map +1 -0
- package/dist/utils/config.d.ts +14 -3
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +95 -5
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/processes.d.ts +6 -0
- package/dist/utils/processes.d.ts.map +1 -1
- package/dist/utils/processes.js +13 -3
- package/dist/utils/processes.js.map +1 -1
- package/package.json +25 -11
- package/scripts/README.md +15 -1
- package/scripts/copy-plugins.js +5 -0
- package/scripts/prepare-install-artifacts.mjs +66 -0
- package/scripts/sonar/package.json +3 -0
- package/scripts/sonar/run-local-sonar.js +405 -0
- package/scripts/test-desktop-telemetry.js +229 -0
- package/scripts/test-proxy-endpoint.js +173 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-commit.md +0 -31
- package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-auto-wrapper.sh +0 -81
- package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.d.ts +0 -30
- package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.d.ts.map +0 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.js +0 -111
- package/dist/providers/plugins/sso/proxy/plugins/claude-thinking-transformer.plugin.js.map +0 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface DaemonState {
|
|
2
|
+
pid: number;
|
|
3
|
+
port: number;
|
|
4
|
+
url: string;
|
|
5
|
+
profile: string;
|
|
6
|
+
gatewayKey: string;
|
|
7
|
+
telemetryMode?: 'none' | 'claude-desktop';
|
|
8
|
+
targetUrl?: string;
|
|
9
|
+
provider?: string;
|
|
10
|
+
clientType?: string;
|
|
11
|
+
syncApiUrl?: string;
|
|
12
|
+
syncCodeMieUrl?: string;
|
|
13
|
+
startedAt: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function readState(stateFile?: string): Promise<DaemonState | null>;
|
|
16
|
+
export declare function writeState(state: DaemonState, stateFile?: string): Promise<void>;
|
|
17
|
+
export declare function clearState(stateFile?: string): Promise<void>;
|
|
18
|
+
export declare function isProcessAlive(pid: number): boolean;
|
|
19
|
+
export declare function checkStatus(stateFile?: string): Promise<{
|
|
20
|
+
running: boolean;
|
|
21
|
+
state: DaemonState | null;
|
|
22
|
+
}>;
|
|
23
|
+
export interface SpawnOptions {
|
|
24
|
+
targetUrl: string;
|
|
25
|
+
provider: string;
|
|
26
|
+
profile: string;
|
|
27
|
+
port?: number;
|
|
28
|
+
gatewayKey?: string;
|
|
29
|
+
telemetryMode?: 'none' | 'claude-desktop';
|
|
30
|
+
syncApiUrl?: string;
|
|
31
|
+
syncCodeMieUrl?: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function spawnDaemon(opts: SpawnOptions): Promise<DaemonState>;
|
|
34
|
+
export declare function stopDaemon(): Promise<void>;
|
|
35
|
+
//# sourceMappingURL=daemon-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-manager.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/daemon-manager.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAsB,SAAS,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOnG;AAED,wBAAsB,UAAU,CAC9B,KAAK,EAAE,WAAW,EAClB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,UAAU,CAAC,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAMtF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAED,wBAAsB,WAAW,CAC/B,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC,CAU1D;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiD1E;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAsBhD"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { writeFile, readFile, unlink, rename } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { getCodemieHome, getDirname } from '../../../utils/paths.js';
|
|
4
|
+
import { logger } from '../../../utils/logger.js';
|
|
5
|
+
import { sanitizeLogArgs } from '../../../utils/security.js';
|
|
6
|
+
import { ToolExecutionError } from '../../../utils/errors.js';
|
|
7
|
+
import { spawnDetached } from '../../../utils/processes.js';
|
|
8
|
+
const DEFAULT_STATE_FILE = join(getCodemieHome(), 'proxy-daemon.json');
|
|
9
|
+
export async function readState(stateFile = DEFAULT_STATE_FILE) {
|
|
10
|
+
try {
|
|
11
|
+
const raw = await readFile(stateFile, 'utf-8');
|
|
12
|
+
return JSON.parse(raw);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function writeState(state, stateFile = DEFAULT_STATE_FILE) {
|
|
19
|
+
const tmp = stateFile + '.tmp';
|
|
20
|
+
await writeFile(tmp, JSON.stringify(state, null, 2), 'utf-8');
|
|
21
|
+
await rename(tmp, stateFile);
|
|
22
|
+
}
|
|
23
|
+
export async function clearState(stateFile = DEFAULT_STATE_FILE) {
|
|
24
|
+
try {
|
|
25
|
+
await unlink(stateFile);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Already gone — no-op
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function isProcessAlive(pid) {
|
|
32
|
+
try {
|
|
33
|
+
process.kill(pid, 0);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function checkStatus(stateFile = DEFAULT_STATE_FILE) {
|
|
41
|
+
const state = await readState(stateFile);
|
|
42
|
+
if (!state)
|
|
43
|
+
return { running: false, state: null };
|
|
44
|
+
if (!isProcessAlive(state.pid)) {
|
|
45
|
+
await clearState(stateFile);
|
|
46
|
+
return { running: false, state: null };
|
|
47
|
+
}
|
|
48
|
+
return { running: true, state };
|
|
49
|
+
}
|
|
50
|
+
export async function spawnDaemon(opts) {
|
|
51
|
+
const stateFile = DEFAULT_STATE_FILE;
|
|
52
|
+
const gatewayKey = opts.gatewayKey ?? 'codemie-proxy';
|
|
53
|
+
// Locate the daemon binary relative to this compiled file:
|
|
54
|
+
// dist/cli/commands/proxy/daemon-manager.js → ../../../../bin/proxy-daemon.js
|
|
55
|
+
const daemonBin = join(getDirname(import.meta.url), '../../../../bin/proxy-daemon.js');
|
|
56
|
+
const args = [
|
|
57
|
+
daemonBin,
|
|
58
|
+
'--target-url', opts.targetUrl,
|
|
59
|
+
'--provider', opts.provider,
|
|
60
|
+
'--profile', opts.profile,
|
|
61
|
+
'--gateway-key', gatewayKey,
|
|
62
|
+
'--state-file', stateFile,
|
|
63
|
+
...(opts.port ? ['--port', String(opts.port)] : []),
|
|
64
|
+
...(opts.telemetryMode ? ['--telemetry-mode', opts.telemetryMode] : []),
|
|
65
|
+
...(opts.syncApiUrl ? ['--sync-api-url', opts.syncApiUrl] : []),
|
|
66
|
+
...(opts.syncCodeMieUrl ? ['--sync-codemie-url', opts.syncCodeMieUrl] : []),
|
|
67
|
+
];
|
|
68
|
+
logger.debug('[daemon-manager] Spawning daemon', ...sanitizeLogArgs({
|
|
69
|
+
daemonBin,
|
|
70
|
+
targetUrl: opts.targetUrl,
|
|
71
|
+
provider: opts.provider,
|
|
72
|
+
profile: opts.profile,
|
|
73
|
+
port: opts.port,
|
|
74
|
+
gatewayKey,
|
|
75
|
+
telemetryMode: opts.telemetryMode,
|
|
76
|
+
syncApiUrl: opts.syncApiUrl,
|
|
77
|
+
syncCodeMieUrl: opts.syncCodeMieUrl
|
|
78
|
+
}));
|
|
79
|
+
spawnDetached(process.execPath, args);
|
|
80
|
+
// Poll up to 5 s for daemon readiness
|
|
81
|
+
for (let i = 0; i < 50; i++) {
|
|
82
|
+
await new Promise(r => setTimeout(r, 100));
|
|
83
|
+
const state = await readState(stateFile);
|
|
84
|
+
if (state && isProcessAlive(state.pid))
|
|
85
|
+
return state;
|
|
86
|
+
}
|
|
87
|
+
throw new ToolExecutionError('proxy-daemon', 'Daemon failed to start within 5 seconds. Check logs: ~/.codemie/logs/');
|
|
88
|
+
}
|
|
89
|
+
export async function stopDaemon() {
|
|
90
|
+
const stateFile = DEFAULT_STATE_FILE;
|
|
91
|
+
const state = await readState(stateFile);
|
|
92
|
+
if (!state)
|
|
93
|
+
return;
|
|
94
|
+
if (isProcessAlive(state.pid)) {
|
|
95
|
+
process.kill(state.pid, 'SIGTERM');
|
|
96
|
+
for (let i = 0; i < 50; i++) {
|
|
97
|
+
await new Promise(r => setTimeout(r, 100));
|
|
98
|
+
if (!isProcessAlive(state.pid)) {
|
|
99
|
+
await clearState(stateFile);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
throw new ToolExecutionError('proxy-daemon', `Daemon pid ${state.pid} did not stop within 5 seconds`);
|
|
104
|
+
}
|
|
105
|
+
await clearState(stateFile);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=daemon-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-manager.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/daemon-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiIpC,wBAAgB,kBAAkB,IAAI,OAAO,CAyL5C"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ConfigLoader } from '../../../utils/config.js';
|
|
4
|
+
import { ProviderRegistry } from '../../../providers/index.js';
|
|
5
|
+
import { ConfigurationError, createErrorContext, formatErrorForUser, } from '../../../utils/errors.js';
|
|
6
|
+
import { logger } from '../../../utils/logger.js';
|
|
7
|
+
import { checkStatus, readState, spawnDaemon, stopDaemon, } from './daemon-manager.js';
|
|
8
|
+
import { writeDesktopConfig } from './connectors/desktop.js';
|
|
9
|
+
import { printDesktopInspection } from './inspect-desktop.js';
|
|
10
|
+
const DEFAULT_DAEMON_PORT = 4001;
|
|
11
|
+
const DEFAULT_DESKTOP_INSPECT_LIMIT = 5;
|
|
12
|
+
function parsePortOption(value, fallback) {
|
|
13
|
+
if (!value) {
|
|
14
|
+
return fallback;
|
|
15
|
+
}
|
|
16
|
+
const parsed = Number.parseInt(value, 10);
|
|
17
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
18
|
+
throw new ConfigurationError(`Invalid port value: ${value}`);
|
|
19
|
+
}
|
|
20
|
+
return parsed;
|
|
21
|
+
}
|
|
22
|
+
async function resolveDesktopProxyConfig(profileName) {
|
|
23
|
+
const listCodeMieProfiles = async () => {
|
|
24
|
+
const profiles = await ConfigLoader.listProfiles(process.cwd());
|
|
25
|
+
return profiles
|
|
26
|
+
.filter(({ profile }) => {
|
|
27
|
+
const provider = ProviderRegistry.getProvider(profile.provider ?? '');
|
|
28
|
+
return provider?.authType === 'sso';
|
|
29
|
+
})
|
|
30
|
+
.map(({ name }) => name);
|
|
31
|
+
};
|
|
32
|
+
if (profileName) {
|
|
33
|
+
const explicitConfig = await ConfigLoader.load(process.cwd(), { name: profileName });
|
|
34
|
+
const explicitProvider = ProviderRegistry.getProvider(explicitConfig.provider ?? '');
|
|
35
|
+
if (explicitProvider?.authType !== 'sso') {
|
|
36
|
+
const available = await listCodeMieProfiles();
|
|
37
|
+
const details = available.length > 0
|
|
38
|
+
? `Profiles to try:\n- ${available.join('\n- ')}`
|
|
39
|
+
: 'No SSO-backed CodeMie profiles were found. Run: codemie setup';
|
|
40
|
+
throw new ConfigurationError(`Profile "${profileName}" cannot be used for Claude Desktop proxy because it is not SSO-backed.\n\n` +
|
|
41
|
+
`Next step:\n` +
|
|
42
|
+
` codemie proxy connect desktop --profile <name>\n\n` +
|
|
43
|
+
`${details}`);
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
config: explicitConfig,
|
|
47
|
+
profileSource: 'explicit'
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const activeConfig = await ConfigLoader.load(process.cwd());
|
|
51
|
+
const activeProvider = ProviderRegistry.getProvider(activeConfig.provider ?? '');
|
|
52
|
+
if (activeProvider?.authType === 'sso') {
|
|
53
|
+
return { config: activeConfig, profileSource: 'active' };
|
|
54
|
+
}
|
|
55
|
+
const activeProfileName = await ConfigLoader.getActiveProfileName(process.cwd());
|
|
56
|
+
const available = await listCodeMieProfiles();
|
|
57
|
+
const providerName = activeConfig.provider ?? 'unknown';
|
|
58
|
+
const details = available.length > 0
|
|
59
|
+
? `Next step:\n` +
|
|
60
|
+
` codemie profile switch <codemie-profile>\n` +
|
|
61
|
+
` codemie proxy connect desktop\n\n` +
|
|
62
|
+
`Or run once with a specific profile:\n` +
|
|
63
|
+
` codemie proxy connect desktop --profile <codemie-profile>\n\n` +
|
|
64
|
+
`Profiles to try:\n- ${available.join('\n- ')}`
|
|
65
|
+
: `No SSO-backed CodeMie profiles were found.\n\n` +
|
|
66
|
+
`Next step:\n` +
|
|
67
|
+
` codemie setup`;
|
|
68
|
+
throw new ConfigurationError(`Claude Desktop proxy needs an SSO-backed CodeMie profile.\n` +
|
|
69
|
+
`Current active profile: "${activeProfileName ?? 'unknown'}" (provider: ${providerName})\n\n` +
|
|
70
|
+
`${details}`);
|
|
71
|
+
}
|
|
72
|
+
async function verifySsoCredentials(baseUrl, profileName) {
|
|
73
|
+
try {
|
|
74
|
+
const { CodeMieSSO } = await import('../../../providers/plugins/sso/sso.auth.js');
|
|
75
|
+
const sso = new CodeMieSSO();
|
|
76
|
+
const creds = await sso.getStoredCredentials(baseUrl);
|
|
77
|
+
if (!creds) {
|
|
78
|
+
console.error(chalk.red(`✗ No SSO credentials found for profile '${profileName}'.`));
|
|
79
|
+
console.error(` Run: codemie profile login --url ${baseUrl}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
console.error(chalk.red(`✗ Failed to verify credentials: ${err.message}`));
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function printProxyError(error, label) {
|
|
89
|
+
const context = createErrorContext(error);
|
|
90
|
+
logger.error(label, error);
|
|
91
|
+
if (error instanceof ConfigurationError) {
|
|
92
|
+
console.error(chalk.red(`✗ ${error.message}`));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
console.error(formatErrorForUser(context, { showSystem: false }));
|
|
96
|
+
}
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
export function createProxyCommand() {
|
|
100
|
+
const proxy = new Command('proxy');
|
|
101
|
+
proxy.description('Manage the CodeMie local gateway proxy daemon');
|
|
102
|
+
// ── proxy start ─────────────────────────────────────────────────────────────
|
|
103
|
+
proxy
|
|
104
|
+
.command('start')
|
|
105
|
+
.description('Start the background proxy daemon')
|
|
106
|
+
.option('--port <port>', `Fixed port to listen on (default: ${DEFAULT_DAEMON_PORT})`)
|
|
107
|
+
.option('--profile <name>', 'Profile whose credentials to use')
|
|
108
|
+
.action(async (opts) => {
|
|
109
|
+
const { running, state } = await checkStatus();
|
|
110
|
+
if (running && state) {
|
|
111
|
+
console.log(chalk.green(`✓ Proxy already running at ${state.url} (profile: ${state.profile})`));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const config = await ConfigLoader.load(process.cwd(), opts.profile ? { name: opts.profile } : undefined);
|
|
115
|
+
if (!config.baseUrl) {
|
|
116
|
+
console.error(chalk.red('✗ No API URL configured for this profile.'));
|
|
117
|
+
console.error(' Run: codemie setup');
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
await verifySsoCredentials(config.baseUrl, config.name ?? 'default');
|
|
121
|
+
console.log('Starting proxy daemon...');
|
|
122
|
+
const daemonState = await spawnDaemon({
|
|
123
|
+
targetUrl: config.baseUrl,
|
|
124
|
+
provider: config.provider ?? 'ai-run-sso',
|
|
125
|
+
profile: config.name ?? 'default',
|
|
126
|
+
port: parsePortOption(opts.port, DEFAULT_DAEMON_PORT),
|
|
127
|
+
syncApiUrl: config.ssoConfig?.apiUrl,
|
|
128
|
+
syncCodeMieUrl: config.codeMieUrl,
|
|
129
|
+
});
|
|
130
|
+
console.log(chalk.green(`✓ Proxy running at ${daemonState.url} (profile: ${daemonState.profile})`));
|
|
131
|
+
});
|
|
132
|
+
// ── proxy stop ──────────────────────────────────────────────────────────────
|
|
133
|
+
proxy
|
|
134
|
+
.command('stop')
|
|
135
|
+
.description('Stop the background proxy daemon')
|
|
136
|
+
.action(async () => {
|
|
137
|
+
const { running } = await checkStatus();
|
|
138
|
+
if (!running) {
|
|
139
|
+
console.log('Proxy is not running.');
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
await stopDaemon();
|
|
143
|
+
console.log(chalk.green('✓ Proxy stopped'));
|
|
144
|
+
});
|
|
145
|
+
// ── proxy status ─────────────────────────────────────────────────────────────
|
|
146
|
+
proxy
|
|
147
|
+
.command('status')
|
|
148
|
+
.description('Show proxy daemon status')
|
|
149
|
+
.action(async () => {
|
|
150
|
+
const { running, state } = await checkStatus();
|
|
151
|
+
if (!running || !state) {
|
|
152
|
+
console.log('Status: stopped');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const uptimeSec = Math.floor((Date.now() - new Date(state.startedAt).getTime()) / 1000);
|
|
156
|
+
const uptime = uptimeSec < 60
|
|
157
|
+
? `${uptimeSec}s`
|
|
158
|
+
: uptimeSec < 3600
|
|
159
|
+
? `${Math.floor(uptimeSec / 60)}m ${uptimeSec % 60}s`
|
|
160
|
+
: `${Math.floor(uptimeSec / 3600)}h ${Math.floor((uptimeSec % 3600) / 60)}m`;
|
|
161
|
+
console.log(`Status: ${chalk.green('running')}`);
|
|
162
|
+
console.log(` URL: ${state.url}`);
|
|
163
|
+
console.log(` Port: ${state.port}`);
|
|
164
|
+
console.log(` Profile: ${state.profile}`);
|
|
165
|
+
console.log(` Uptime: ${uptime}`);
|
|
166
|
+
});
|
|
167
|
+
// ── proxy connect ────────────────────────────────────────────────────────────
|
|
168
|
+
const connect = new Command('connect');
|
|
169
|
+
connect.description('Configure a client to use the local proxy');
|
|
170
|
+
connect
|
|
171
|
+
.command('desktop')
|
|
172
|
+
.description('Configure Claude Desktop (3P) to use the local proxy')
|
|
173
|
+
.option('--profile <name>', 'Profile whose credentials to use for Claude Desktop proxy')
|
|
174
|
+
.option('--verbose', 'Show detailed connection info (URLs, config paths) for debugging')
|
|
175
|
+
.action(async (opts) => {
|
|
176
|
+
const verbose = Boolean(opts.verbose);
|
|
177
|
+
try {
|
|
178
|
+
let { running, state } = await checkStatus();
|
|
179
|
+
if (running && state?.telemetryMode !== 'claude-desktop') {
|
|
180
|
+
console.log('Restarting proxy in Claude Desktop mode...');
|
|
181
|
+
await stopDaemon();
|
|
182
|
+
running = false;
|
|
183
|
+
state = null;
|
|
184
|
+
}
|
|
185
|
+
if (!running) {
|
|
186
|
+
console.log('Starting proxy...');
|
|
187
|
+
const { config, profileSource } = await resolveDesktopProxyConfig(opts.profile);
|
|
188
|
+
if (!config.baseUrl) {
|
|
189
|
+
throw new ConfigurationError('No API URL configured. Run: codemie setup');
|
|
190
|
+
}
|
|
191
|
+
const provider = ProviderRegistry.getProvider(config.provider ?? '');
|
|
192
|
+
if (provider?.authType !== 'sso') {
|
|
193
|
+
throw new ConfigurationError(`Claude Desktop proxy needs an SSO-backed profile.\n` +
|
|
194
|
+
`Selected provider: ${config.provider ?? 'unknown'}\n\n` +
|
|
195
|
+
`Next step:\n` +
|
|
196
|
+
` codemie proxy connect desktop --profile <your-ai-run-sso-profile>`);
|
|
197
|
+
}
|
|
198
|
+
if (!config.codeMieUrl) {
|
|
199
|
+
throw new ConfigurationError('Selected profile is missing CodeMie URL.\n' +
|
|
200
|
+
'Run: codemie setup or codemie profile login');
|
|
201
|
+
}
|
|
202
|
+
const profileLabel = config.name ?? 'default';
|
|
203
|
+
if (verbose) {
|
|
204
|
+
console.log(chalk.cyan(`Using profile: ${profileLabel} ` +
|
|
205
|
+
`(source: ${profileSource === 'explicit' ? '--profile' : 'active profile'})`));
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log(chalk.cyan(`Using profile: ${profileLabel}`));
|
|
209
|
+
}
|
|
210
|
+
await verifySsoCredentials(config.baseUrl, config.name ?? 'default');
|
|
211
|
+
state = await spawnDaemon({
|
|
212
|
+
targetUrl: config.baseUrl,
|
|
213
|
+
provider: config.provider ?? 'ai-run-sso',
|
|
214
|
+
profile: config.name ?? 'default',
|
|
215
|
+
port: DEFAULT_DAEMON_PORT,
|
|
216
|
+
telemetryMode: 'claude-desktop',
|
|
217
|
+
syncApiUrl: config.ssoConfig?.apiUrl,
|
|
218
|
+
syncCodeMieUrl: config.codeMieUrl,
|
|
219
|
+
});
|
|
220
|
+
if (verbose) {
|
|
221
|
+
console.log(chalk.green(`✓ Proxy started at ${state.url}`));
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
console.log(chalk.green('✓ Proxy started'));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const configPath = await writeDesktopConfig(state.url, state.gatewayKey);
|
|
228
|
+
console.log(chalk.green('✓ Claude Desktop configured'));
|
|
229
|
+
if (verbose) {
|
|
230
|
+
console.log(` Config: ${configPath}`);
|
|
231
|
+
console.log(` Gateway: ${state.url}`);
|
|
232
|
+
console.log(chalk.dim(' Telemetry: metrics and conversations will sync as claude-desktop.'));
|
|
233
|
+
}
|
|
234
|
+
console.log(chalk.yellow(' Restart Claude Desktop to apply changes.'));
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
printProxyError(error, 'Failed to connect Claude Desktop proxy');
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
const inspect = new Command('inspect');
|
|
241
|
+
inspect.description('Inspect proxy integrations and telemetry state');
|
|
242
|
+
inspect
|
|
243
|
+
.command('desktop')
|
|
244
|
+
.description('Inspect Claude Desktop proxy telemetry readiness')
|
|
245
|
+
.option('--limit <count>', 'Maximum number of recent sessions to inspect', String(DEFAULT_DESKTOP_INSPECT_LIMIT))
|
|
246
|
+
.action(async (opts) => {
|
|
247
|
+
const { running, state } = await checkStatus();
|
|
248
|
+
const persistedState = state ?? await readState();
|
|
249
|
+
const limit = Number.parseInt(opts.limit, 10);
|
|
250
|
+
await printDesktopInspection(running, persistedState, {
|
|
251
|
+
limit: Number.isFinite(limit) && limit > 0 ? limit : undefined
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
proxy.addCommand(connect);
|
|
255
|
+
proxy.addCommand(inspect);
|
|
256
|
+
return proxy;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { LocalTelemetryDiscoveredSession } from '../../../telemetry/runtime/types.js';
|
|
2
|
+
import type { DaemonState } from './daemon-manager.js';
|
|
3
|
+
interface DesktopInspectionResult {
|
|
4
|
+
daemonRunning: boolean;
|
|
5
|
+
daemonState: DaemonState | null;
|
|
6
|
+
desktopBaseDir: string;
|
|
7
|
+
localSessionsRoot: string;
|
|
8
|
+
codeSessionsRoot: string;
|
|
9
|
+
credentialsUrl?: string;
|
|
10
|
+
hasCredentials: boolean;
|
|
11
|
+
sessions: DesktopSessionInspection[];
|
|
12
|
+
}
|
|
13
|
+
interface DesktopSessionInspection {
|
|
14
|
+
discovered: LocalTelemetryDiscoveredSession;
|
|
15
|
+
codemieSessionId?: string;
|
|
16
|
+
sessionStatus: string;
|
|
17
|
+
metricsFileExists: boolean;
|
|
18
|
+
conversationFileExists: boolean;
|
|
19
|
+
reasons: string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function inspectDesktopProxy(daemonRunning: boolean, daemonState: DaemonState | null, options?: {
|
|
22
|
+
limit?: number;
|
|
23
|
+
}): Promise<DesktopInspectionResult>;
|
|
24
|
+
export declare function printDesktopInspection(daemonRunning: boolean, daemonState: DaemonState | null, options?: {
|
|
25
|
+
limit?: number;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=inspect-desktop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-desktop.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/inspect-desktop.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,UAAU,uBAAuB;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,wBAAwB,EAAE,CAAC;CACtC;AAED,UAAU,wBAAwB;IAChC,UAAU,EAAE,+BAA+B,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA+ED,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,uBAAuB,CAAC,CAuBlC;AAED,wBAAsB,sBAAsB,CAC1C,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { SessionStore } from '../../../agents/core/session/SessionStore.js';
|
|
5
|
+
import { getSessionConversationPath, getSessionMetricsPath } from '../../../agents/core/session/session-config.js';
|
|
6
|
+
import { CodeMieSSO } from '../../../providers/plugins/sso/sso.auth.js';
|
|
7
|
+
import { discoverClaudeDesktopSessions } from '../../../telemetry/clients/claude-desktop/claude-desktop.discovery.js';
|
|
8
|
+
import { getClaudeDesktopBaseDir, getClaudeDesktopCodeSessionsRoot, getClaudeDesktopLocalSessionsRoot } from '../../../telemetry/clients/claude-desktop/claude-desktop.paths.js';
|
|
9
|
+
const DEFAULT_MAX_SESSIONS = 5;
|
|
10
|
+
function formatDate(timestamp) {
|
|
11
|
+
if (!timestamp) {
|
|
12
|
+
return 'n/a';
|
|
13
|
+
}
|
|
14
|
+
const value = typeof timestamp === 'string' ? new Date(timestamp).getTime() : timestamp;
|
|
15
|
+
return new Date(value).toISOString();
|
|
16
|
+
}
|
|
17
|
+
function formatBoolean(value) {
|
|
18
|
+
return value ? chalk.green('yes') : chalk.red('no');
|
|
19
|
+
}
|
|
20
|
+
function formatSessionStatus(session) {
|
|
21
|
+
if (session.codemieSessionId && session.metricsFileExists && session.conversationFileExists) {
|
|
22
|
+
return chalk.green('ingested');
|
|
23
|
+
}
|
|
24
|
+
if (session.codemieSessionId) {
|
|
25
|
+
return chalk.yellow('session-only');
|
|
26
|
+
}
|
|
27
|
+
return chalk.red('not-ingested');
|
|
28
|
+
}
|
|
29
|
+
async function countJsonlLines(path) {
|
|
30
|
+
if (!existsSync(path)) {
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
const content = await readFile(path, 'utf-8');
|
|
34
|
+
return content.split('\n').filter(Boolean).length;
|
|
35
|
+
}
|
|
36
|
+
async function inspectSessions(sessions, daemonState) {
|
|
37
|
+
const sessionStore = new SessionStore();
|
|
38
|
+
const daemonStartedAt = daemonState?.startedAt ? new Date(daemonState.startedAt).getTime() : undefined;
|
|
39
|
+
const inspections = [];
|
|
40
|
+
for (const discovered of sessions) {
|
|
41
|
+
const persisted = await sessionStore.findSessionByExternalId('claude-desktop', discovered.externalSessionId);
|
|
42
|
+
const reasons = [];
|
|
43
|
+
if (!daemonState) {
|
|
44
|
+
reasons.push('daemon-not-running');
|
|
45
|
+
}
|
|
46
|
+
else if (daemonState.telemetryMode !== 'claude-desktop') {
|
|
47
|
+
reasons.push('daemon-not-in-desktop-mode');
|
|
48
|
+
}
|
|
49
|
+
if (daemonStartedAt && discovered.createdAt < daemonStartedAt && !persisted) {
|
|
50
|
+
reasons.push('session-created-before-daemon-start');
|
|
51
|
+
}
|
|
52
|
+
if (discovered.isArchived) {
|
|
53
|
+
reasons.push('session-archived');
|
|
54
|
+
}
|
|
55
|
+
const codemieSessionId = persisted?.sessionId;
|
|
56
|
+
const metricsPath = codemieSessionId ? getSessionMetricsPath(codemieSessionId) : '';
|
|
57
|
+
const conversationPath = codemieSessionId ? getSessionConversationPath(codemieSessionId) : '';
|
|
58
|
+
inspections.push({
|
|
59
|
+
discovered,
|
|
60
|
+
codemieSessionId,
|
|
61
|
+
sessionStatus: persisted?.status ?? 'none',
|
|
62
|
+
metricsFileExists: Boolean(codemieSessionId && existsSync(metricsPath)),
|
|
63
|
+
conversationFileExists: Boolean(codemieSessionId && existsSync(conversationPath)),
|
|
64
|
+
reasons
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return inspections;
|
|
68
|
+
}
|
|
69
|
+
export async function inspectDesktopProxy(daemonRunning, daemonState, options = {}) {
|
|
70
|
+
const localSessionsRoot = getClaudeDesktopLocalSessionsRoot();
|
|
71
|
+
const codeSessionsRoot = getClaudeDesktopCodeSessionsRoot();
|
|
72
|
+
const desktopBaseDir = getClaudeDesktopBaseDir();
|
|
73
|
+
const credentialsUrl = daemonState?.syncCodeMieUrl || daemonState?.targetUrl;
|
|
74
|
+
const credentials = credentialsUrl
|
|
75
|
+
? await new CodeMieSSO().getStoredCredentials(credentialsUrl).catch(() => null)
|
|
76
|
+
: null;
|
|
77
|
+
const discovered = await discoverClaudeDesktopSessions(0);
|
|
78
|
+
const sortedSessions = discovered
|
|
79
|
+
.sort((a, b) => b.updatedAt - a.updatedAt)
|
|
80
|
+
.slice(0, options.limit ?? DEFAULT_MAX_SESSIONS);
|
|
81
|
+
return {
|
|
82
|
+
daemonRunning,
|
|
83
|
+
daemonState,
|
|
84
|
+
desktopBaseDir,
|
|
85
|
+
localSessionsRoot,
|
|
86
|
+
codeSessionsRoot,
|
|
87
|
+
credentialsUrl,
|
|
88
|
+
hasCredentials: Boolean(credentials?.cookies),
|
|
89
|
+
sessions: await inspectSessions(sortedSessions, daemonState)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export async function printDesktopInspection(daemonRunning, daemonState, options = {}) {
|
|
93
|
+
const result = await inspectDesktopProxy(daemonRunning, daemonState, options);
|
|
94
|
+
console.log(chalk.bold('Claude Desktop Proxy Inspection'));
|
|
95
|
+
console.log(`Daemon running: ${daemonRunning ? chalk.green('yes') : chalk.red('no')}`);
|
|
96
|
+
console.log(`Telemetry mode: ${daemonState?.telemetryMode ?? chalk.red('none')}`);
|
|
97
|
+
console.log(`Daemon clientType: ${daemonState?.clientType ?? 'n/a'}`);
|
|
98
|
+
console.log(`Target URL: ${daemonState?.targetUrl ?? 'n/a'}`);
|
|
99
|
+
console.log(`Sync API URL: ${daemonState?.syncApiUrl ?? 'n/a'}`);
|
|
100
|
+
console.log(`CodeMie URL: ${daemonState?.syncCodeMieUrl ?? 'n/a'}`);
|
|
101
|
+
console.log(`Started at: ${formatDate(daemonState?.startedAt)}`);
|
|
102
|
+
console.log(`Desktop base dir: ${result.desktopBaseDir} (${formatBoolean(existsSync(result.desktopBaseDir))})`);
|
|
103
|
+
console.log(`Local sessions root: ${result.localSessionsRoot} (${formatBoolean(existsSync(result.localSessionsRoot))})`);
|
|
104
|
+
console.log(`Code sessions root: ${result.codeSessionsRoot} (${formatBoolean(existsSync(result.codeSessionsRoot))})`);
|
|
105
|
+
console.log(`SSO credentials: ${formatBoolean(result.hasCredentials)}${result.credentialsUrl ? ` (${result.credentialsUrl})` : ''}`);
|
|
106
|
+
console.log('');
|
|
107
|
+
if (result.sessions.length === 0) {
|
|
108
|
+
console.log(chalk.yellow('No Claude Desktop local-agent sessions found.'));
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
console.log(chalk.bold(`Recent sessions (${result.sessions.length})`));
|
|
112
|
+
for (const session of result.sessions) {
|
|
113
|
+
const metricsPath = session.codemieSessionId ? getSessionMetricsPath(session.codemieSessionId) : undefined;
|
|
114
|
+
const conversationPath = session.codemieSessionId ? getSessionConversationPath(session.codemieSessionId) : undefined;
|
|
115
|
+
const [metricsLines, conversationLines] = await Promise.all([
|
|
116
|
+
metricsPath ? countJsonlLines(metricsPath) : Promise.resolve(0),
|
|
117
|
+
conversationPath ? countJsonlLines(conversationPath) : Promise.resolve(0)
|
|
118
|
+
]);
|
|
119
|
+
console.log(`- ${session.discovered.externalSessionId}`);
|
|
120
|
+
console.log(` Updated: ${formatDate(session.discovered.updatedAt)}`);
|
|
121
|
+
console.log(` Created: ${formatDate(session.discovered.createdAt)}`);
|
|
122
|
+
console.log(` CLI session id: ${session.discovered.agentSessionId}`);
|
|
123
|
+
console.log(` Model: ${session.discovered.model ?? 'n/a'}`);
|
|
124
|
+
console.log(` Working dir: ${session.discovered.workingDirectory}`);
|
|
125
|
+
console.log(` Transcript: ${session.discovered.transcriptPath}`);
|
|
126
|
+
console.log(` CodeMie session: ${session.codemieSessionId ?? 'none'}`);
|
|
127
|
+
console.log(` Status: ${formatSessionStatus(session)} (${session.sessionStatus})`);
|
|
128
|
+
console.log(` Metrics JSONL: ${session.metricsFileExists ? chalk.green(`yes (${metricsLines} lines)`) : chalk.red('no')}`);
|
|
129
|
+
console.log(` Conversation JSONL: ${session.conversationFileExists ? chalk.green(`yes (${conversationLines} lines)`) : chalk.red('no')}`);
|
|
130
|
+
console.log(` Reasons: ${session.reasons.length > 0 ? session.reasons.join(', ') : 'eligible'}`);
|
|
131
|
+
console.log('');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=inspect-desktop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect-desktop.js","sourceRoot":"","sources":["../../../../src/cli/commands/proxy/inspect-desktop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,kBAAkB,IAAI,OAAO,CA8B5C"}
|