@codemieai/code 0.0.15 → 0.0.17
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 +86 -14
- package/bin/agent-executor.js +7 -28
- package/bin/codemie-claude.js +18 -0
- package/bin/codemie-codex.js +18 -0
- package/bin/codemie-deepagents.js +18 -0
- package/bin/codemie-gemini.js +18 -0
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +5 -34
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +12 -4
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +30 -63
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts +10 -6
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +108 -36
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/BaseMetricsAdapter.d.ts +64 -0
- package/dist/agents/core/BaseMetricsAdapter.d.ts.map +1 -0
- package/dist/agents/core/BaseMetricsAdapter.js +74 -0
- package/dist/agents/core/BaseMetricsAdapter.js.map +1 -0
- package/dist/agents/core/types.d.ts +1 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude.metrics.d.ts +112 -0
- package/dist/agents/plugins/claude.metrics.d.ts.map +1 -0
- package/dist/agents/plugins/claude.metrics.js +700 -0
- package/dist/agents/plugins/claude.metrics.js.map +1 -0
- package/dist/agents/plugins/claude.plugin.d.ts +9 -0
- package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.js +52 -10
- package/dist/agents/plugins/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +46 -14
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex.plugin.js +2 -4
- package/dist/agents/plugins/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/deepagents.plugin.js +1 -1
- package/dist/agents/plugins/deepagents.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini.plugin.js +1 -8
- package/dist/agents/plugins/gemini.plugin.js.map +1 -1
- package/dist/agents/plugins/history-parser.d.ts +52 -0
- package/dist/agents/plugins/history-parser.d.ts.map +1 -0
- package/dist/agents/plugins/history-parser.js +155 -0
- package/dist/agents/plugins/history-parser.js.map +1 -0
- package/dist/cli/commands/analytics/aggregator.d.ts +58 -0
- package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -0
- package/dist/cli/commands/analytics/aggregator.js +702 -0
- package/dist/cli/commands/analytics/aggregator.js.map +1 -0
- package/dist/cli/commands/analytics/data-loader.d.ts +84 -0
- package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -0
- package/dist/cli/commands/analytics/data-loader.js +211 -0
- package/dist/cli/commands/analytics/data-loader.js.map +1 -0
- package/dist/cli/commands/analytics/exporter.d.ts +20 -0
- package/dist/cli/commands/analytics/exporter.d.ts.map +1 -0
- package/dist/cli/commands/analytics/exporter.js +103 -0
- package/dist/cli/commands/analytics/exporter.js.map +1 -0
- package/dist/cli/commands/analytics/formatter.d.ts +49 -0
- package/dist/cli/commands/analytics/formatter.d.ts.map +1 -0
- package/dist/cli/commands/analytics/formatter.js +309 -0
- package/dist/cli/commands/analytics/formatter.js.map +1 -0
- package/dist/cli/commands/analytics/index.d.ts +6 -0
- package/dist/cli/commands/analytics/index.d.ts.map +1 -0
- package/dist/cli/commands/analytics/index.js +157 -0
- package/dist/cli/commands/analytics/index.js.map +1 -0
- package/dist/cli/commands/analytics/model-normalizer.d.ts +21 -0
- package/dist/cli/commands/analytics/model-normalizer.d.ts.map +1 -0
- package/dist/cli/commands/analytics/model-normalizer.js +44 -0
- package/dist/cli/commands/analytics/model-normalizer.js.map +1 -0
- package/dist/cli/commands/analytics/types.d.ts +188 -0
- package/dist/cli/commands/analytics/types.d.ts.map +1 -0
- package/dist/cli/commands/analytics/types.js +6 -0
- package/dist/cli/commands/analytics/types.js.map +1 -0
- package/dist/cli/commands/auth.d.ts.map +1 -1
- package/dist/cli/commands/auth.js +10 -5
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/doctor/checks/AIConfigCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js +12 -5
- package/dist/cli/commands/doctor/checks/AIConfigCheck.js.map +1 -1
- package/dist/cli/commands/doctor/checks/AwsCliCheck.d.ts +9 -0
- package/dist/cli/commands/doctor/checks/AwsCliCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/AwsCliCheck.js +28 -0
- package/dist/cli/commands/doctor/checks/AwsCliCheck.js.map +1 -0
- package/dist/cli/commands/doctor/checks/PythonCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/PythonCheck.js +10 -0
- package/dist/cli/commands/doctor/checks/PythonCheck.js.map +1 -1
- package/dist/cli/commands/doctor/checks/WorkflowsCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/WorkflowsCheck.js +2 -1
- package/dist/cli/commands/doctor/checks/WorkflowsCheck.js.map +1 -1
- package/dist/cli/commands/doctor/checks/index.d.ts +1 -0
- package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/index.js +1 -0
- package/dist/cli/commands/doctor/checks/index.js.map +1 -1
- package/dist/cli/commands/doctor/formatter.d.ts +1 -1
- package/dist/cli/commands/doctor/formatter.d.ts.map +1 -1
- package/dist/cli/commands/doctor/formatter.js +1 -6
- package/dist/cli/commands/doctor/formatter.js.map +1 -1
- package/dist/cli/commands/doctor/index.d.ts.map +1 -1
- package/dist/cli/commands/doctor/index.js +107 -10
- package/dist/cli/commands/doctor/index.js.map +1 -1
- package/dist/cli/commands/doctor/type-adapters.d.ts +18 -0
- package/dist/cli/commands/doctor/type-adapters.d.ts.map +1 -0
- package/dist/cli/commands/doctor/type-adapters.js +75 -0
- package/dist/cli/commands/doctor/type-adapters.js.map +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +1 -6
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +0 -5
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/profile.d.ts.map +1 -1
- package/dist/cli/commands/profile.js +130 -92
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +147 -668
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +14 -2
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/metrics/MetricsOrchestrator.d.ts +67 -0
- package/dist/metrics/MetricsOrchestrator.d.ts.map +1 -0
- package/dist/metrics/MetricsOrchestrator.js +287 -0
- package/dist/metrics/MetricsOrchestrator.js.map +1 -0
- package/dist/metrics/config.d.ts +38 -0
- package/dist/metrics/config.d.ts.map +1 -0
- package/dist/metrics/config.js +80 -0
- package/dist/metrics/config.js.map +1 -0
- package/dist/metrics/core/DeltaWriter.d.ts +49 -0
- package/dist/metrics/core/DeltaWriter.d.ts.map +1 -0
- package/dist/metrics/core/DeltaWriter.js +146 -0
- package/dist/metrics/core/DeltaWriter.js.map +1 -0
- package/dist/metrics/core/FileSnapshotter.d.ts +22 -0
- package/dist/metrics/core/FileSnapshotter.d.ts.map +1 -0
- package/dist/metrics/core/FileSnapshotter.js +74 -0
- package/dist/metrics/core/FileSnapshotter.js.map +1 -0
- package/dist/metrics/core/SessionCorrelator.d.ts +34 -0
- package/dist/metrics/core/SessionCorrelator.d.ts.map +1 -0
- package/dist/metrics/core/SessionCorrelator.js +115 -0
- package/dist/metrics/core/SessionCorrelator.js.map +1 -0
- package/dist/metrics/core/SyncStateManager.d.ts +69 -0
- package/dist/metrics/core/SyncStateManager.d.ts.map +1 -0
- package/dist/metrics/core/SyncStateManager.js +284 -0
- package/dist/metrics/core/SyncStateManager.js.map +1 -0
- package/dist/metrics/index.d.ts +9 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +11 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/session/SessionStore.d.ts +43 -0
- package/dist/metrics/session/SessionStore.d.ts.map +1 -0
- package/dist/metrics/session/SessionStore.js +142 -0
- package/dist/metrics/session/SessionStore.js.map +1 -0
- package/dist/metrics/sync/MetricsApiClient.d.ts +32 -0
- package/dist/metrics/sync/MetricsApiClient.d.ts.map +1 -0
- package/dist/metrics/sync/MetricsApiClient.js +155 -0
- package/dist/metrics/sync/MetricsApiClient.js.map +1 -0
- package/dist/metrics/sync/aggregator.d.ts +13 -0
- package/dist/metrics/sync/aggregator.d.ts.map +1 -0
- package/dist/metrics/sync/aggregator.js +196 -0
- package/dist/metrics/sync/aggregator.js.map +1 -0
- package/dist/metrics/sync/index.d.ts +10 -0
- package/dist/metrics/sync/index.d.ts.map +1 -0
- package/dist/metrics/sync/index.js +10 -0
- package/dist/metrics/sync/index.js.map +1 -0
- package/dist/metrics/sync/jsonl-writer.d.ts +28 -0
- package/dist/metrics/sync/jsonl-writer.d.ts.map +1 -0
- package/dist/metrics/sync/jsonl-writer.js +72 -0
- package/dist/metrics/sync/jsonl-writer.js.map +1 -0
- package/dist/metrics/sync/types.d.ts +72 -0
- package/dist/metrics/sync/types.d.ts.map +1 -0
- package/dist/metrics/sync/types.js +7 -0
- package/dist/metrics/sync/types.js.map +1 -0
- package/dist/metrics/types.d.ts +308 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +8 -0
- package/dist/metrics/types.js.map +1 -0
- package/dist/providers/core/base/BaseHealthCheck.d.ts +57 -0
- package/dist/providers/core/base/BaseHealthCheck.d.ts.map +1 -0
- package/dist/providers/core/base/BaseHealthCheck.js +121 -0
- package/dist/providers/core/base/BaseHealthCheck.js.map +1 -0
- package/dist/providers/core/base/BaseModelProxy.d.ts +45 -0
- package/dist/providers/core/base/BaseModelProxy.d.ts.map +1 -0
- package/dist/providers/core/base/BaseModelProxy.js +43 -0
- package/dist/providers/core/base/BaseModelProxy.js.map +1 -0
- package/dist/providers/core/base/http-client.d.ts +57 -0
- package/dist/providers/core/base/http-client.d.ts.map +1 -0
- package/dist/providers/core/base/http-client.js +240 -0
- package/dist/providers/core/base/http-client.js.map +1 -0
- package/dist/providers/core/decorators.d.ts +13 -0
- package/dist/providers/core/decorators.d.ts.map +1 -0
- package/dist/providers/core/decorators.js +15 -0
- package/dist/providers/core/decorators.js.map +1 -0
- package/dist/providers/core/index.d.ts +13 -0
- package/dist/providers/core/index.d.ts.map +1 -0
- package/dist/providers/core/index.js +14 -0
- package/dist/providers/core/index.js.map +1 -0
- package/dist/providers/core/registry.d.ts +66 -0
- package/dist/providers/core/registry.d.ts.map +1 -0
- package/dist/providers/core/registry.js +105 -0
- package/dist/providers/core/registry.js.map +1 -0
- package/dist/providers/core/types.d.ts +285 -0
- package/dist/providers/core/types.d.ts.map +1 -0
- package/dist/providers/core/types.js +7 -0
- package/dist/providers/core/types.js.map +1 -0
- package/dist/providers/index.d.ts +22 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +24 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/integration/setup-ui.d.ts +76 -0
- package/dist/providers/integration/setup-ui.d.ts.map +1 -0
- package/dist/providers/integration/setup-ui.js +186 -0
- package/dist/providers/integration/setup-ui.js.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.health.d.ts +53 -0
- package/dist/providers/plugins/bedrock/bedrock.health.d.ts.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.health.js +115 -0
- package/dist/providers/plugins/bedrock/bedrock.health.js.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.models.d.ts +26 -0
- package/dist/providers/plugins/bedrock/bedrock.models.d.ts.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.models.js +89 -0
- package/dist/providers/plugins/bedrock/bedrock.models.js.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.setup-steps.d.ts +12 -0
- package/dist/providers/plugins/bedrock/bedrock.setup-steps.d.ts.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.setup-steps.js +308 -0
- package/dist/providers/plugins/bedrock/bedrock.setup-steps.js.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.template.d.ts +11 -0
- package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -0
- package/dist/providers/plugins/bedrock/bedrock.template.js +85 -0
- package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -0
- package/dist/providers/plugins/bedrock/index.d.ts +11 -0
- package/dist/providers/plugins/bedrock/index.d.ts.map +1 -0
- package/dist/providers/plugins/bedrock/index.js +11 -0
- package/dist/providers/plugins/bedrock/index.js.map +1 -0
- package/dist/providers/plugins/litellm/index.d.ts +8 -0
- package/dist/providers/plugins/litellm/index.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/index.js +12 -0
- package/dist/providers/plugins/litellm/index.js.map +1 -0
- package/dist/providers/plugins/litellm/litellm.models.d.ts +27 -0
- package/dist/providers/plugins/litellm/litellm.models.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/litellm.models.js +48 -0
- package/dist/providers/plugins/litellm/litellm.models.js.map +1 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts +8 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.js +52 -0
- package/dist/providers/plugins/litellm/litellm.setup-steps.js.map +1 -0
- package/dist/providers/plugins/litellm/litellm.template.d.ts +11 -0
- package/dist/providers/plugins/litellm/litellm.template.d.ts.map +1 -0
- package/dist/providers/plugins/litellm/litellm.template.js +59 -0
- package/dist/providers/plugins/litellm/litellm.template.js.map +1 -0
- package/dist/providers/plugins/ollama/index.d.ts +11 -0
- package/dist/providers/plugins/ollama/index.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/index.js +11 -0
- package/dist/providers/plugins/ollama/index.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.health.d.ts +48 -0
- package/dist/providers/plugins/ollama/ollama.health.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.health.js +87 -0
- package/dist/providers/plugins/ollama/ollama.health.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.models.d.ts +47 -0
- package/dist/providers/plugins/ollama/ollama.models.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.models.js +252 -0
- package/dist/providers/plugins/ollama/ollama.models.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts +16 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.js +164 -0
- package/dist/providers/plugins/ollama/ollama.setup-steps.js.map +1 -0
- package/dist/providers/plugins/ollama/ollama.template.d.ts +11 -0
- package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -0
- package/dist/providers/plugins/ollama/ollama.template.js +89 -0
- package/dist/providers/plugins/ollama/ollama.template.js.map +1 -0
- package/dist/providers/plugins/sso/index.d.ts +12 -0
- package/dist/providers/plugins/sso/index.d.ts.map +1 -0
- package/dist/providers/plugins/sso/index.js +12 -0
- package/dist/providers/plugins/sso/index.js.map +1 -0
- package/dist/providers/plugins/sso/sso.auth.d.ts +50 -0
- package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -0
- package/dist/{utils/sso-auth.js → providers/plugins/sso/sso.auth.js} +37 -2
- package/dist/providers/plugins/sso/sso.auth.js.map +1 -0
- package/dist/providers/plugins/sso/sso.health.d.ts +44 -0
- package/dist/providers/plugins/sso/sso.health.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.health.js +178 -0
- package/dist/providers/plugins/sso/sso.health.js.map +1 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts +24 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.http-client.js +193 -0
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -0
- package/dist/providers/plugins/sso/sso.models.d.ts +48 -0
- package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.models.js +139 -0
- package/dist/providers/plugins/sso/sso.models.js.map +1 -0
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts +16 -0
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.setup-steps.js +145 -0
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -0
- package/dist/providers/plugins/sso/sso.template.d.ts +11 -0
- package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -0
- package/dist/providers/plugins/sso/sso.template.js +35 -0
- package/dist/providers/plugins/sso/sso.template.js.map +1 -0
- package/dist/proxy/errors.d.ts.map +1 -0
- package/dist/proxy/errors.js.map +1 -0
- package/dist/proxy/http-client.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/http-client.js +50 -15
- package/dist/proxy/http-client.js.map +1 -0
- package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts +19 -0
- package/dist/proxy/plugins/endpoint-blocker.plugin.d.ts.map +1 -0
- package/dist/proxy/plugins/endpoint-blocker.plugin.js +61 -0
- package/dist/proxy/plugins/endpoint-blocker.plugin.js.map +1 -0
- package/dist/proxy/plugins/header-injection.plugin.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.js +10 -3
- package/dist/proxy/plugins/header-injection.plugin.js.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/index.d.ts +4 -2
- package/dist/proxy/plugins/index.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/index.js +7 -5
- package/dist/proxy/plugins/index.js.map +1 -0
- package/dist/proxy/plugins/logging.plugin.d.ts +22 -0
- package/dist/proxy/plugins/logging.plugin.d.ts.map +1 -0
- package/dist/proxy/plugins/logging.plugin.js +156 -0
- package/dist/proxy/plugins/logging.plugin.js.map +1 -0
- package/dist/proxy/plugins/metrics-sync.plugin.d.ts +33 -0
- package/dist/proxy/plugins/metrics-sync.plugin.d.ts.map +1 -0
- package/dist/proxy/plugins/metrics-sync.plugin.js +310 -0
- package/dist/proxy/plugins/metrics-sync.plugin.js.map +1 -0
- package/dist/proxy/plugins/registry.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/registry.js +9 -2
- package/dist/proxy/plugins/registry.js.map +1 -0
- package/dist/proxy/plugins/sso-auth.plugin.d.ts.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.js +1 -1
- package/dist/proxy/plugins/sso-auth.plugin.js.map +1 -0
- package/dist/{utils/proxy → proxy}/plugins/types.d.ts +8 -4
- package/dist/proxy/plugins/types.d.ts.map +1 -0
- package/dist/proxy/plugins/types.js.map +1 -0
- package/dist/{utils/proxy → proxy}/types.d.ts +7 -0
- package/dist/proxy/types.d.ts.map +1 -0
- package/dist/proxy/types.js.map +1 -0
- package/dist/utils/ascii-logo.d.ts +21 -0
- package/dist/utils/ascii-logo.d.ts.map +1 -0
- package/dist/utils/ascii-logo.js +75 -0
- package/dist/utils/ascii-logo.js.map +1 -0
- package/dist/utils/codemie-proxy.d.ts +2 -7
- package/dist/utils/codemie-proxy.d.ts.map +1 -1
- package/dist/utils/codemie-proxy.js +56 -61
- package/dist/utils/codemie-proxy.js.map +1 -1
- package/dist/utils/config-loader.d.ts +1 -6
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +49 -93
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/credential-store.d.ts +1 -1
- package/dist/utils/credential-store.d.ts.map +1 -1
- package/dist/utils/exec.d.ts +11 -0
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +17 -1
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/goodbye-messages.d.ts +13 -0
- package/dist/utils/goodbye-messages.d.ts.map +1 -0
- package/dist/utils/goodbye-messages.js +245 -0
- package/dist/utils/goodbye-messages.js.map +1 -0
- package/dist/utils/json-parser.d.ts +52 -0
- package/dist/utils/json-parser.d.ts.map +1 -0
- package/dist/utils/json-parser.js +126 -0
- package/dist/utils/json-parser.js.map +1 -0
- package/dist/utils/logger.d.ts +37 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +92 -22
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/sanitize.d.ts.map +1 -1
- package/dist/utils/sanitize.js +0 -1
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/which.d.ts +20 -0
- package/dist/utils/which.d.ts.map +1 -0
- package/dist/utils/which.js +47 -0
- package/dist/utils/which.js.map +1 -0
- package/package.json +10 -5
- package/dist/analytics/aggregation/adapters/claude.adapter.d.ts +0 -37
- package/dist/analytics/aggregation/adapters/claude.adapter.d.ts.map +0 -1
- package/dist/analytics/aggregation/adapters/claude.adapter.js +0 -531
- package/dist/analytics/aggregation/adapters/claude.adapter.js.map +0 -1
- package/dist/analytics/aggregation/adapters/codex.adapter.d.ts +0 -25
- package/dist/analytics/aggregation/adapters/codex.adapter.d.ts.map +0 -1
- package/dist/analytics/aggregation/adapters/codex.adapter.js +0 -396
- package/dist/analytics/aggregation/adapters/codex.adapter.js.map +0 -1
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts +0 -36
- package/dist/analytics/aggregation/adapters/gemini.adapter.d.ts.map +0 -1
- package/dist/analytics/aggregation/adapters/gemini.adapter.js +0 -365
- package/dist/analytics/aggregation/adapters/gemini.adapter.js.map +0 -1
- package/dist/analytics/aggregation/adapters/index.d.ts +0 -7
- package/dist/analytics/aggregation/adapters/index.d.ts.map +0 -1
- package/dist/analytics/aggregation/adapters/index.js +0 -7
- package/dist/analytics/aggregation/adapters/index.js.map +0 -1
- package/dist/analytics/aggregation/aggregator.d.ts +0 -49
- package/dist/analytics/aggregation/aggregator.d.ts.map +0 -1
- package/dist/analytics/aggregation/aggregator.js +0 -239
- package/dist/analytics/aggregation/aggregator.js.map +0 -1
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts +0 -99
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js +0 -110
- package/dist/analytics/aggregation/core/BaseAnalyticsAdapter.js.map +0 -1
- package/dist/analytics/aggregation/core/adapter.interface.d.ts +0 -76
- package/dist/analytics/aggregation/core/adapter.interface.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/adapter.interface.js +0 -9
- package/dist/analytics/aggregation/core/adapter.interface.js.map +0 -1
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts +0 -86
- package/dist/analytics/aggregation/core/aggregation-utils.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/aggregation-utils.js +0 -126
- package/dist/analytics/aggregation/core/aggregation-utils.js.map +0 -1
- package/dist/analytics/aggregation/core/discovery.d.ts +0 -40
- package/dist/analytics/aggregation/core/discovery.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/discovery.js +0 -132
- package/dist/analytics/aggregation/core/discovery.js.map +0 -1
- package/dist/analytics/aggregation/core/file-utils.d.ts +0 -24
- package/dist/analytics/aggregation/core/file-utils.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/file-utils.js +0 -143
- package/dist/analytics/aggregation/core/file-utils.js.map +0 -1
- package/dist/analytics/aggregation/core/index.d.ts +0 -14
- package/dist/analytics/aggregation/core/index.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/index.js +0 -14
- package/dist/analytics/aggregation/core/index.js.map +0 -1
- package/dist/analytics/aggregation/core/project-mapping.d.ts +0 -50
- package/dist/analytics/aggregation/core/project-mapping.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/project-mapping.js +0 -102
- package/dist/analytics/aggregation/core/project-mapping.js.map +0 -1
- package/dist/analytics/aggregation/core/streaming.d.ts +0 -26
- package/dist/analytics/aggregation/core/streaming.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/streaming.js +0 -58
- package/dist/analytics/aggregation/core/streaming.js.map +0 -1
- package/dist/analytics/aggregation/core/user-prompt-source.d.ts +0 -81
- package/dist/analytics/aggregation/core/user-prompt-source.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/user-prompt-source.js +0 -69
- package/dist/analytics/aggregation/core/user-prompt-source.js.map +0 -1
- package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts +0 -49
- package/dist/analytics/aggregation/core/user-prompt-sources/json.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/user-prompt-sources/json.js +0 -66
- package/dist/analytics/aggregation/core/user-prompt-sources/json.js.map +0 -1
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts +0 -43
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.d.ts.map +0 -1
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js +0 -56
- package/dist/analytics/aggregation/core/user-prompt-sources/jsonl.js.map +0 -1
- package/dist/analytics/aggregation/index.d.ts +0 -8
- package/dist/analytics/aggregation/index.d.ts.map +0 -1
- package/dist/analytics/aggregation/index.js +0 -8
- package/dist/analytics/aggregation/index.js.map +0 -1
- package/dist/analytics/aggregation/types.d.ts +0 -278
- package/dist/analytics/aggregation/types.d.ts.map +0 -1
- package/dist/analytics/aggregation/types.js +0 -8
- package/dist/analytics/aggregation/types.js.map +0 -1
- package/dist/analytics/collector.d.ts +0 -46
- package/dist/analytics/collector.d.ts.map +0 -1
- package/dist/analytics/collector.js +0 -83
- package/dist/analytics/collector.js.map +0 -1
- package/dist/analytics/config.d.ts +0 -15
- package/dist/analytics/config.d.ts.map +0 -1
- package/dist/analytics/config.js +0 -65
- package/dist/analytics/config.js.map +0 -1
- package/dist/analytics/index.d.ts +0 -99
- package/dist/analytics/index.d.ts.map +0 -1
- package/dist/analytics/index.js +0 -288
- package/dist/analytics/index.js.map +0 -1
- package/dist/analytics/plugins/api-metrics.plugin.d.ts +0 -26
- package/dist/analytics/plugins/api-metrics.plugin.d.ts.map +0 -1
- package/dist/analytics/plugins/api-metrics.plugin.js +0 -97
- package/dist/analytics/plugins/api-metrics.plugin.js.map +0 -1
- package/dist/analytics/plugins/index.d.ts +0 -15
- package/dist/analytics/plugins/index.d.ts.map +0 -1
- package/dist/analytics/plugins/index.js +0 -15
- package/dist/analytics/plugins/index.js.map +0 -1
- package/dist/analytics/plugins/model-metrics.plugin.d.ts +0 -39
- package/dist/analytics/plugins/model-metrics.plugin.d.ts.map +0 -1
- package/dist/analytics/plugins/model-metrics.plugin.js +0 -105
- package/dist/analytics/plugins/model-metrics.plugin.js.map +0 -1
- package/dist/analytics/plugins/provider-metrics.plugin.d.ts +0 -41
- package/dist/analytics/plugins/provider-metrics.plugin.d.ts.map +0 -1
- package/dist/analytics/plugins/provider-metrics.plugin.js +0 -123
- package/dist/analytics/plugins/provider-metrics.plugin.js.map +0 -1
- package/dist/analytics/plugins/types.d.ts +0 -61
- package/dist/analytics/plugins/types.d.ts.map +0 -1
- package/dist/analytics/plugins/types.js +0 -54
- package/dist/analytics/plugins/types.js.map +0 -1
- package/dist/analytics/privacy.d.ts +0 -10
- package/dist/analytics/privacy.d.ts.map +0 -1
- package/dist/analytics/privacy.js +0 -20
- package/dist/analytics/privacy.js.map +0 -1
- package/dist/analytics/remote-submission/cursor-manager.d.ts +0 -71
- package/dist/analytics/remote-submission/cursor-manager.d.ts.map +0 -1
- package/dist/analytics/remote-submission/cursor-manager.js +0 -204
- package/dist/analytics/remote-submission/cursor-manager.js.map +0 -1
- package/dist/analytics/remote-submission/index.d.ts +0 -12
- package/dist/analytics/remote-submission/index.d.ts.map +0 -1
- package/dist/analytics/remote-submission/index.js +0 -11
- package/dist/analytics/remote-submission/index.js.map +0 -1
- package/dist/analytics/remote-submission/lock-manager.d.ts +0 -71
- package/dist/analytics/remote-submission/lock-manager.d.ts.map +0 -1
- package/dist/analytics/remote-submission/lock-manager.js +0 -238
- package/dist/analytics/remote-submission/lock-manager.js.map +0 -1
- package/dist/analytics/remote-submission/metric-transformer.d.ts +0 -49
- package/dist/analytics/remote-submission/metric-transformer.d.ts.map +0 -1
- package/dist/analytics/remote-submission/metric-transformer.js +0 -175
- package/dist/analytics/remote-submission/metric-transformer.js.map +0 -1
- package/dist/analytics/remote-submission/submitter.d.ts +0 -78
- package/dist/analytics/remote-submission/submitter.d.ts.map +0 -1
- package/dist/analytics/remote-submission/submitter.js +0 -381
- package/dist/analytics/remote-submission/submitter.js.map +0 -1
- package/dist/analytics/remote-submission/types.d.ts +0 -169
- package/dist/analytics/remote-submission/types.d.ts.map +0 -1
- package/dist/analytics/remote-submission/types.js +0 -13
- package/dist/analytics/remote-submission/types.js.map +0 -1
- package/dist/analytics/session.d.ts +0 -56
- package/dist/analytics/session.d.ts.map +0 -1
- package/dist/analytics/session.js +0 -95
- package/dist/analytics/session.js.map +0 -1
- package/dist/analytics/types.d.ts +0 -104
- package/dist/analytics/types.d.ts.map +0 -1
- package/dist/analytics/types.js +0 -15
- package/dist/analytics/types.js.map +0 -1
- package/dist/analytics/writer.d.ts +0 -18
- package/dist/analytics/writer.d.ts.map +0 -1
- package/dist/analytics/writer.js +0 -44
- package/dist/analytics/writer.js.map +0 -1
- package/dist/cli/commands/analytics.d.ts +0 -3
- package/dist/cli/commands/analytics.d.ts.map +0 -1
- package/dist/cli/commands/analytics.js +0 -748
- package/dist/cli/commands/analytics.js.map +0 -1
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts +0 -11
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js +0 -264
- package/dist/cli/commands/doctor/providers/AIRunSSOProviderCheck.js.map +0 -1
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts +0 -12
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.js +0 -12
- package/dist/cli/commands/doctor/providers/BaseProviderCheck.js.map +0 -1
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts +0 -11
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.js +0 -97
- package/dist/cli/commands/doctor/providers/StandardProviderCheck.js.map +0 -1
- package/dist/cli/commands/doctor/providers/index.d.ts +0 -30
- package/dist/cli/commands/doctor/providers/index.d.ts.map +0 -1
- package/dist/cli/commands/doctor/providers/index.js +0 -66
- package/dist/cli/commands/doctor/providers/index.js.map +0 -1
- package/dist/types/sso.d.ts +0 -42
- package/dist/types/sso.d.ts.map +0 -1
- package/dist/types/sso.js +0 -2
- package/dist/types/sso.js.map +0 -1
- package/dist/utils/analytics-reader.d.ts +0 -117
- package/dist/utils/analytics-reader.d.ts.map +0 -1
- package/dist/utils/analytics-reader.js +0 -421
- package/dist/utils/analytics-reader.js.map +0 -1
- package/dist/utils/async-tips.d.ts +0 -64
- package/dist/utils/async-tips.d.ts.map +0 -1
- package/dist/utils/async-tips.js +0 -203
- package/dist/utils/async-tips.js.map +0 -1
- package/dist/utils/codemie-integration-validator.d.ts +0 -18
- package/dist/utils/codemie-integration-validator.d.ts.map +0 -1
- package/dist/utils/codemie-integration-validator.js +0 -119
- package/dist/utils/codemie-integration-validator.js.map +0 -1
- package/dist/utils/codemie-model-fetcher.d.ts +0 -11
- package/dist/utils/codemie-model-fetcher.d.ts.map +0 -1
- package/dist/utils/codemie-model-fetcher.js +0 -317
- package/dist/utils/codemie-model-fetcher.js.map +0 -1
- package/dist/utils/date-formatter.d.ts +0 -88
- package/dist/utils/date-formatter.d.ts.map +0 -1
- package/dist/utils/date-formatter.js +0 -133
- package/dist/utils/date-formatter.js.map +0 -1
- package/dist/utils/health-checker.d.ts +0 -20
- package/dist/utils/health-checker.d.ts.map +0 -1
- package/dist/utils/health-checker.js +0 -172
- package/dist/utils/health-checker.js.map +0 -1
- package/dist/utils/model-fetcher.d.ts +0 -21
- package/dist/utils/model-fetcher.d.ts.map +0 -1
- package/dist/utils/model-fetcher.js +0 -148
- package/dist/utils/model-fetcher.js.map +0 -1
- package/dist/utils/proxy/errors.d.ts.map +0 -1
- package/dist/utils/proxy/errors.js.map +0 -1
- package/dist/utils/proxy/http-client.d.ts.map +0 -1
- package/dist/utils/proxy/http-client.js.map +0 -1
- package/dist/utils/proxy/plugins/analytics.plugin.d.ts +0 -19
- package/dist/utils/proxy/plugins/analytics.plugin.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/analytics.plugin.js +0 -84
- package/dist/utils/proxy/plugins/analytics.plugin.js.map +0 -1
- package/dist/utils/proxy/plugins/header-injection.plugin.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/header-injection.plugin.js.map +0 -1
- package/dist/utils/proxy/plugins/index.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/index.js.map +0 -1
- package/dist/utils/proxy/plugins/registry.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/registry.js.map +0 -1
- package/dist/utils/proxy/plugins/sso-auth.plugin.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/sso-auth.plugin.js.map +0 -1
- package/dist/utils/proxy/plugins/types.d.ts.map +0 -1
- package/dist/utils/proxy/plugins/types.js.map +0 -1
- package/dist/utils/proxy/types.d.ts.map +0 -1
- package/dist/utils/proxy/types.js.map +0 -1
- package/dist/utils/sso-auth.d.ts +0 -15
- package/dist/utils/sso-auth.d.ts.map +0 -1
- package/dist/utils/sso-auth.js.map +0 -1
- package/dist/utils/tips.d.ts +0 -35
- package/dist/utils/tips.d.ts.map +0 -1
- package/dist/utils/tips.js +0 -93
- package/dist/utils/tips.js.map +0 -1
- /package/dist/{utils/proxy → proxy}/errors.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/errors.js +0 -0
- /package/dist/{utils/proxy → proxy}/http-client.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/header-injection.plugin.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/registry.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/sso-auth.plugin.d.ts +0 -0
- /package/dist/{utils/proxy → proxy}/plugins/types.js +0 -0
- /package/dist/{utils/proxy → proxy}/types.js +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics API Client
|
|
3
|
+
*
|
|
4
|
+
* HTTP client for sending metrics to CodeMie API.
|
|
5
|
+
* Features:
|
|
6
|
+
* - Exponential backoff retry
|
|
7
|
+
* - SSO cookie authentication
|
|
8
|
+
* - JSON batch sending
|
|
9
|
+
* - Error classification (retryable vs non-retryable)
|
|
10
|
+
*/
|
|
11
|
+
import { logger } from '../../utils/logger.js';
|
|
12
|
+
import { CODEMIE_ENDPOINTS } from '../../providers/plugins/sso/sso.http-client.js';
|
|
13
|
+
export class MetricsApiClient {
|
|
14
|
+
config;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
this.config = {
|
|
17
|
+
baseUrl: config.baseUrl,
|
|
18
|
+
cookies: config.cookies || '',
|
|
19
|
+
timeout: config.timeout || 30000,
|
|
20
|
+
retryAttempts: config.retryAttempts || 3,
|
|
21
|
+
retryDelays: config.retryDelays || [1000, 2000, 5000],
|
|
22
|
+
version: config.version || process.env.CODEMIE_CLI_VERSION || 'unknown',
|
|
23
|
+
clientType: config.clientType || 'codemie-cli'
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Send single aggregated metric to API (JSON format)
|
|
28
|
+
*/
|
|
29
|
+
async sendMetric(metric) {
|
|
30
|
+
let lastError;
|
|
31
|
+
// Retry with exponential backoff
|
|
32
|
+
for (let attempt = 0; attempt <= this.config.retryAttempts; attempt++) {
|
|
33
|
+
try {
|
|
34
|
+
if (attempt > 0) {
|
|
35
|
+
const delay = this.config.retryDelays[attempt - 1] || 5000;
|
|
36
|
+
logger.debug(`[MetricsApiClient] Retry attempt ${attempt} after ${delay}ms`);
|
|
37
|
+
await this.sleep(delay);
|
|
38
|
+
}
|
|
39
|
+
return await this.sendRequest(metric);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
lastError = error;
|
|
43
|
+
// Check if error is retryable
|
|
44
|
+
if (!this.isRetryable(error)) {
|
|
45
|
+
logger.error('[MetricsApiClient] Non-retryable error:', error);
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
logger.warn(`[MetricsApiClient] Attempt ${attempt + 1} failed:`, error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// All retries exhausted
|
|
52
|
+
throw new Error(`Failed after ${this.config.retryAttempts} retries: ${lastError?.message}`);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Send HTTP request to API
|
|
56
|
+
*/
|
|
57
|
+
async sendRequest(metric) {
|
|
58
|
+
const url = `${this.config.baseUrl}${CODEMIE_ENDPOINTS.METRICS}`;
|
|
59
|
+
// Convert to JSON
|
|
60
|
+
const body = JSON.stringify(metric);
|
|
61
|
+
logger.debug(`[MetricsApiClient] Sending metric to ${url}. Body ${body}`);
|
|
62
|
+
// Create headers (match SSO endpoint headers)
|
|
63
|
+
const headers = {
|
|
64
|
+
'Content-Type': 'application/json',
|
|
65
|
+
'User-Agent': `codemie-cli/${this.config.version}`,
|
|
66
|
+
'X-CodeMie-CLI': `codemie-cli/${this.config.version}`,
|
|
67
|
+
'X-CodeMie-Client': this.config.clientType
|
|
68
|
+
};
|
|
69
|
+
// Add cookies if present (SSO authentication)
|
|
70
|
+
if (this.config.cookies) {
|
|
71
|
+
headers['Cookie'] = this.config.cookies;
|
|
72
|
+
}
|
|
73
|
+
// Send request with timeout
|
|
74
|
+
const controller = new AbortController();
|
|
75
|
+
const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
|
|
76
|
+
try {
|
|
77
|
+
const response = await fetch(url, {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers,
|
|
80
|
+
body,
|
|
81
|
+
signal: controller.signal
|
|
82
|
+
});
|
|
83
|
+
clearTimeout(timeoutId);
|
|
84
|
+
// Parse response - could be success response or error response
|
|
85
|
+
const data = await response.json();
|
|
86
|
+
// Check response status first
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
// Handle FastAPI ExtendedHTTPException format
|
|
89
|
+
if ('code' in data && 'details' in data) {
|
|
90
|
+
const errorData = data;
|
|
91
|
+
let errorMessage = `API returned ${response.status}: ${errorData.message}`;
|
|
92
|
+
if (errorData.details) {
|
|
93
|
+
errorMessage += `\nDetails: ${errorData.details}`;
|
|
94
|
+
}
|
|
95
|
+
if (errorData.help) {
|
|
96
|
+
errorMessage += `\nHelp: ${errorData.help}`;
|
|
97
|
+
}
|
|
98
|
+
const error = new Error(errorMessage);
|
|
99
|
+
error.statusCode = response.status;
|
|
100
|
+
error.response = data;
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
// Fallback for non-extended error format
|
|
104
|
+
const errorMessage = 'message' in data ? data.message : response.statusText;
|
|
105
|
+
const error = new Error(`API returned ${response.status}: ${errorMessage}`);
|
|
106
|
+
error.statusCode = response.status;
|
|
107
|
+
error.response = data;
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
// Successfully got 200 response, check if metric was processed
|
|
111
|
+
const successData = data;
|
|
112
|
+
logger.debug(`[MetricsApiClient] Response from ${url}: success=${successData.success}, message="${successData.message}"`);
|
|
113
|
+
// Check if the API reported failure in the response body (success=false with 200 status)
|
|
114
|
+
if (!successData.success) {
|
|
115
|
+
const error = new Error(`API reported failure: ${successData.message}`);
|
|
116
|
+
error.response = data;
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
logger.info(`[MetricsApiClient] Successfully sent metric: ${successData.message}`);
|
|
120
|
+
return successData;
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
clearTimeout(timeoutId);
|
|
124
|
+
if (error.name === 'AbortError') {
|
|
125
|
+
throw new Error(`Request timeout after ${this.config.timeout}ms`);
|
|
126
|
+
}
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check if error is retryable
|
|
132
|
+
*/
|
|
133
|
+
isRetryable(error) {
|
|
134
|
+
const statusCode = error.statusCode;
|
|
135
|
+
// Retryable errors
|
|
136
|
+
if (!statusCode) {
|
|
137
|
+
// Network errors (ECONNREFUSED, ETIMEDOUT, etc.)
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
// Retry on 5xx and 429 (rate limit)
|
|
141
|
+
if (statusCode >= 500 || statusCode === 429) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
// Non-retryable errors (4xx except 429)
|
|
145
|
+
// 401 Unauthorized, 403 Forbidden, 400 Bad Request
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Sleep for specified milliseconds
|
|
150
|
+
*/
|
|
151
|
+
sleep(ms) {
|
|
152
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=MetricsApiClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsApiClient.js","sourceRoot":"","sources":["../../../src/metrics/sync/MetricsApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics Aggregator
|
|
3
|
+
*
|
|
4
|
+
* Aggregates metric deltas into a single session metric.
|
|
5
|
+
* Reuses patterns from analytics system.
|
|
6
|
+
*/
|
|
7
|
+
import type { MetricDelta, MetricsSession } from '../types.js';
|
|
8
|
+
import type { SessionMetric } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Aggregate pending deltas into a single session metric
|
|
11
|
+
*/
|
|
12
|
+
export declare function aggregateDeltas(deltas: MetricDelta[], session: MetricsSession, version: string): SessionMetric;
|
|
13
|
+
//# sourceMappingURL=aggregator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../../../src/metrics/sync/aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAoB,aAAa,EAAC,MAAM,YAAY,CAAC;AAGjE;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,GACd,aAAa,CAWf"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics Aggregator
|
|
3
|
+
*
|
|
4
|
+
* Aggregates metric deltas into a single session metric.
|
|
5
|
+
* Reuses patterns from analytics system.
|
|
6
|
+
*/
|
|
7
|
+
import { logger } from '../../utils/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Aggregate pending deltas into a single session metric
|
|
10
|
+
*/
|
|
11
|
+
export function aggregateDeltas(deltas, session, version) {
|
|
12
|
+
logger.debug(`[aggregator] Aggregating ${deltas.length} deltas for session ${session.sessionId}`);
|
|
13
|
+
// Build attributes from deltas
|
|
14
|
+
const attributes = buildSessionAttributes(deltas, session, version);
|
|
15
|
+
// Create session metric
|
|
16
|
+
return {
|
|
17
|
+
name: 'codemie_cli_usage_total',
|
|
18
|
+
attributes
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Build session attributes from deltas
|
|
23
|
+
*/
|
|
24
|
+
function buildSessionAttributes(deltas, session, version) {
|
|
25
|
+
// Token aggregation
|
|
26
|
+
let totalInput = 0;
|
|
27
|
+
let totalOutput = 0;
|
|
28
|
+
let totalCacheRead = 0;
|
|
29
|
+
let totalCacheCreation = 0;
|
|
30
|
+
// Tool tracking
|
|
31
|
+
const toolCounts = {};
|
|
32
|
+
const toolSuccess = {};
|
|
33
|
+
const toolFailures = {};
|
|
34
|
+
// File operations
|
|
35
|
+
let filesCreated = 0;
|
|
36
|
+
let filesModified = 0;
|
|
37
|
+
let filesDeleted = 0;
|
|
38
|
+
let linesAdded = 0;
|
|
39
|
+
let linesRemoved = 0;
|
|
40
|
+
// Model tracking (count occurrences)
|
|
41
|
+
const modelCounts = {};
|
|
42
|
+
// User prompts
|
|
43
|
+
let userPromptCount = 0;
|
|
44
|
+
// Error tracking
|
|
45
|
+
let hadErrors = false;
|
|
46
|
+
const errorsByTool = {};
|
|
47
|
+
// Aggregate all deltas
|
|
48
|
+
for (const delta of deltas) {
|
|
49
|
+
// Tokens
|
|
50
|
+
totalInput += delta.tokens.input || 0;
|
|
51
|
+
totalOutput += delta.tokens.output || 0;
|
|
52
|
+
totalCacheRead += delta.tokens.cacheRead || 0;
|
|
53
|
+
totalCacheCreation += delta.tokens.cacheCreation || 0;
|
|
54
|
+
// Tools
|
|
55
|
+
for (const [toolName, count] of Object.entries(delta.tools)) {
|
|
56
|
+
toolCounts[toolName] = (toolCounts[toolName] || 0) + count;
|
|
57
|
+
}
|
|
58
|
+
// Tool status
|
|
59
|
+
if (delta.toolStatus) {
|
|
60
|
+
for (const [toolName, status] of Object.entries(delta.toolStatus)) {
|
|
61
|
+
toolSuccess[toolName] = (toolSuccess[toolName] || 0) + status.success;
|
|
62
|
+
toolFailures[toolName] = (toolFailures[toolName] || 0) + status.failure;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// File operations
|
|
66
|
+
if (delta.fileOperations) {
|
|
67
|
+
for (const op of delta.fileOperations) {
|
|
68
|
+
if (op.type === 'write')
|
|
69
|
+
filesCreated++;
|
|
70
|
+
if (op.type === 'edit')
|
|
71
|
+
filesModified++;
|
|
72
|
+
if (op.type === 'delete')
|
|
73
|
+
filesDeleted++;
|
|
74
|
+
linesAdded += op.linesAdded || 0;
|
|
75
|
+
linesRemoved += op.linesRemoved || 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Models
|
|
79
|
+
if (delta.models) {
|
|
80
|
+
for (const model of delta.models) {
|
|
81
|
+
modelCounts[model] = (modelCounts[model] || 0) + 1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// User prompts
|
|
85
|
+
if (delta.userPrompts) {
|
|
86
|
+
userPromptCount += delta.userPrompts.length;
|
|
87
|
+
}
|
|
88
|
+
// Errors - collect all tool-specific error messages (tools can have multiple errors)
|
|
89
|
+
if (delta.apiErrorMessage) {
|
|
90
|
+
hadErrors = true;
|
|
91
|
+
// Try to extract tool name from delta
|
|
92
|
+
// If we have toolStatus with failures, associate error with that tool
|
|
93
|
+
if (delta.toolStatus) {
|
|
94
|
+
for (const [toolName, status] of Object.entries(delta.toolStatus)) {
|
|
95
|
+
if (status.failure > 0) {
|
|
96
|
+
// Initialize array if not exists
|
|
97
|
+
if (!errorsByTool[toolName]) {
|
|
98
|
+
errorsByTool[toolName] = [];
|
|
99
|
+
}
|
|
100
|
+
// Add error to the tool's error list
|
|
101
|
+
errorsByTool[toolName].push(delta.apiErrorMessage);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// If no tool status with failures, it's a general error
|
|
106
|
+
if (Object.keys(errorsByTool).length === 0) {
|
|
107
|
+
if (!errorsByTool['general']) {
|
|
108
|
+
errorsByTool['general'] = [];
|
|
109
|
+
}
|
|
110
|
+
errorsByTool['general'].push(delta.apiErrorMessage);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Determine most-used model
|
|
115
|
+
const primaryModel = getMostUsedModel(modelCounts);
|
|
116
|
+
// Calculate total tool calls
|
|
117
|
+
const totalToolCalls = Object.values(toolCounts).reduce((sum, count) => sum + count, 0);
|
|
118
|
+
const successfulToolCalls = Object.values(toolSuccess).reduce((sum, count) => sum + count, 0);
|
|
119
|
+
const failedToolCalls = Object.values(toolFailures).reduce((sum, count) => sum + count, 0);
|
|
120
|
+
// Calculate session duration from deltas (incremental batch duration)
|
|
121
|
+
const sessionDuration = calculateDurationFromDeltas(deltas, session);
|
|
122
|
+
// Build attributes
|
|
123
|
+
const attributes = {
|
|
124
|
+
// Identity
|
|
125
|
+
agent: session.agentName,
|
|
126
|
+
agent_version: version,
|
|
127
|
+
llm_model: primaryModel || 'unknown',
|
|
128
|
+
project: session.workingDirectory,
|
|
129
|
+
session_id: session.sessionId,
|
|
130
|
+
// Interaction Metrics
|
|
131
|
+
total_user_prompts: userPromptCount,
|
|
132
|
+
// Token Metrics
|
|
133
|
+
total_input_tokens: totalInput,
|
|
134
|
+
total_output_tokens: totalOutput,
|
|
135
|
+
total_cache_read_input_tokens: totalCacheRead,
|
|
136
|
+
total_cache_creation_tokens: totalCacheCreation,
|
|
137
|
+
// Tool Metrics
|
|
138
|
+
total_tool_calls: totalToolCalls,
|
|
139
|
+
successful_tool_calls: successfulToolCalls,
|
|
140
|
+
failed_tool_calls: failedToolCalls,
|
|
141
|
+
// File Operation Metrics
|
|
142
|
+
files_created: filesCreated,
|
|
143
|
+
files_modified: filesModified,
|
|
144
|
+
files_deleted: filesDeleted,
|
|
145
|
+
total_lines_added: linesAdded,
|
|
146
|
+
total_lines_removed: linesRemoved,
|
|
147
|
+
// Session Metadata
|
|
148
|
+
session_duration_ms: sessionDuration,
|
|
149
|
+
had_errors: hadErrors,
|
|
150
|
+
count: 1 // Prometheus compatibility
|
|
151
|
+
};
|
|
152
|
+
// Add errors map only if there are errors
|
|
153
|
+
if (hadErrors && Object.keys(errorsByTool).length > 0) {
|
|
154
|
+
attributes.errors = errorsByTool;
|
|
155
|
+
}
|
|
156
|
+
return attributes;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get most-used model from counts
|
|
160
|
+
*/
|
|
161
|
+
function getMostUsedModel(modelCounts) {
|
|
162
|
+
const entries = Object.entries(modelCounts);
|
|
163
|
+
if (entries.length === 0) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
// Sort by count descending
|
|
167
|
+
entries.sort((a, b) => b[1] - a[1]);
|
|
168
|
+
return entries[0][0];
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Calculate session duration from deltas (incremental batch duration)
|
|
172
|
+
* This calculates the time span covered by this batch of metrics,
|
|
173
|
+
* not the total session duration.
|
|
174
|
+
*/
|
|
175
|
+
function calculateDurationFromDeltas(deltas, session) {
|
|
176
|
+
if (deltas.length === 0) {
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
179
|
+
// Convert timestamps to numbers (handle both Unix ms and ISO strings)
|
|
180
|
+
const timestamps = deltas.map((delta) => {
|
|
181
|
+
const ts = delta.timestamp;
|
|
182
|
+
return typeof ts === 'string' ? new Date(ts).getTime() : ts;
|
|
183
|
+
});
|
|
184
|
+
// Calculate duration from earliest to latest delta in this batch
|
|
185
|
+
const minTimestamp = Math.min(...timestamps);
|
|
186
|
+
const maxTimestamp = Math.max(...timestamps);
|
|
187
|
+
// Duration covered by this batch of deltas
|
|
188
|
+
const batchDuration = maxTimestamp - minTimestamp;
|
|
189
|
+
// If this is the first batch (only one delta or all same timestamp),
|
|
190
|
+
// use time since session start
|
|
191
|
+
if (batchDuration === 0) {
|
|
192
|
+
return maxTimestamp - session.startTime;
|
|
193
|
+
}
|
|
194
|
+
return batchDuration;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=aggregator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../../src/metrics/sync/aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics Sync Module
|
|
3
|
+
*
|
|
4
|
+
* Exports all sync-related functionality
|
|
5
|
+
*/
|
|
6
|
+
export { MetricsApiClient } from './MetricsApiClient.js';
|
|
7
|
+
export { aggregateDeltas } from './aggregator.js';
|
|
8
|
+
export { readJSONL, writeJSONLAtomic } from './jsonl-writer.js';
|
|
9
|
+
export * from './types.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metrics/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics Sync Module
|
|
3
|
+
*
|
|
4
|
+
* Exports all sync-related functionality
|
|
5
|
+
*/
|
|
6
|
+
export { MetricsApiClient } from './MetricsApiClient.js';
|
|
7
|
+
export { aggregateDeltas } from './aggregator.js';
|
|
8
|
+
export { readJSONL, writeJSONLAtomic } from './jsonl-writer.js';
|
|
9
|
+
export * from './types.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChE,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONL Atomic Write Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides safe JSONL file operations with atomic writes.
|
|
5
|
+
* Used by MetricsSyncPlugin to mark deltas as synced.
|
|
6
|
+
*
|
|
7
|
+
* Safety guarantees:
|
|
8
|
+
* - Atomic rename ensures no partial writes
|
|
9
|
+
* - Fsync ensures durability before rename
|
|
10
|
+
* - Temp file cleanup on error
|
|
11
|
+
* - No data loss on crash/power failure
|
|
12
|
+
*/
|
|
13
|
+
import type { MetricDelta } from '../types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Read all deltas from JSONL file
|
|
16
|
+
*/
|
|
17
|
+
export declare function readJSONL(filePath: string): Promise<MetricDelta[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Atomically write deltas to JSONL file
|
|
20
|
+
*
|
|
21
|
+
* Process:
|
|
22
|
+
* 1. Write to temporary file
|
|
23
|
+
* 2. Fsync to ensure data is on disk
|
|
24
|
+
* 3. Atomic rename to target file
|
|
25
|
+
* 4. Cleanup temp file on error
|
|
26
|
+
*/
|
|
27
|
+
export declare function writeJSONLAtomic(filePath: string, deltas: MetricDelta[]): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=jsonl-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-writer.d.ts","sourceRoot":"","sources":["../../../src/metrics/sync/jsonl-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAiBxE;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSONL Atomic Write Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides safe JSONL file operations with atomic writes.
|
|
5
|
+
* Used by MetricsSyncPlugin to mark deltas as synced.
|
|
6
|
+
*
|
|
7
|
+
* Safety guarantees:
|
|
8
|
+
* - Atomic rename ensures no partial writes
|
|
9
|
+
* - Fsync ensures durability before rename
|
|
10
|
+
* - Temp file cleanup on error
|
|
11
|
+
* - No data loss on crash/power failure
|
|
12
|
+
*/
|
|
13
|
+
import { writeFile, rename, unlink, readFile, open } from 'fs/promises';
|
|
14
|
+
import { existsSync } from 'fs';
|
|
15
|
+
import { logger } from '../../utils/logger.js';
|
|
16
|
+
/**
|
|
17
|
+
* Read all deltas from JSONL file
|
|
18
|
+
*/
|
|
19
|
+
export async function readJSONL(filePath) {
|
|
20
|
+
try {
|
|
21
|
+
if (!existsSync(filePath)) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
const content = await readFile(filePath, 'utf8');
|
|
25
|
+
return content
|
|
26
|
+
.split('\n')
|
|
27
|
+
.filter(line => line.trim())
|
|
28
|
+
.map(line => JSON.parse(line));
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
logger.error('[jsonl-writer] Failed to read JSONL:', error);
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Atomically write deltas to JSONL file
|
|
37
|
+
*
|
|
38
|
+
* Process:
|
|
39
|
+
* 1. Write to temporary file
|
|
40
|
+
* 2. Fsync to ensure data is on disk
|
|
41
|
+
* 3. Atomic rename to target file
|
|
42
|
+
* 4. Cleanup temp file on error
|
|
43
|
+
*/
|
|
44
|
+
export async function writeJSONLAtomic(filePath, deltas) {
|
|
45
|
+
const tempPath = `${filePath}.tmp`;
|
|
46
|
+
try {
|
|
47
|
+
// 1. Write to temporary file
|
|
48
|
+
const lines = deltas.map(d => JSON.stringify(d)).join('\n') + '\n';
|
|
49
|
+
await writeFile(tempPath, lines, 'utf8');
|
|
50
|
+
// 2. Fsync to ensure data is on disk
|
|
51
|
+
const fd = await open(tempPath, 'r+');
|
|
52
|
+
await fd.sync();
|
|
53
|
+
await fd.close();
|
|
54
|
+
// 3. Atomic rename (overwrites target)
|
|
55
|
+
await rename(tempPath, filePath);
|
|
56
|
+
logger.debug(`[jsonl-writer] Atomically wrote ${deltas.length} deltas to ${filePath}`);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
// Cleanup temp file on error
|
|
60
|
+
try {
|
|
61
|
+
if (existsSync(tempPath)) {
|
|
62
|
+
await unlink(tempPath);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Ignore cleanup errors
|
|
67
|
+
}
|
|
68
|
+
logger.error('[jsonl-writer] Failed to write JSONL:', error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=jsonl-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-writer.js","sourceRoot":"","sources":["../../../src/metrics/sync/jsonl-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEjD,OAAO,OAAO;aACX,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC,CAAC;IAElD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,MAAqB;IAErB,MAAM,QAAQ,GAAG,GAAG,QAAQ,MAAM,CAAC;IAEnC,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnE,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEzC,qCAAqC;QACrC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QAEjB,uCAAuC;QACvC,MAAM,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEjC,MAAM,CAAC,KAAK,CAAC,mCAAmC,MAAM,CAAC,MAAM,cAAc,QAAQ,EAAE,CAAC,CAAC;IAEzF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6BAA6B;QAC7B,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics Sync Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for metrics sync API integration
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Session metric sent to CodeMie API
|
|
8
|
+
* Format matches Prometheus-style metrics with attributes
|
|
9
|
+
*/
|
|
10
|
+
export interface SessionMetric {
|
|
11
|
+
/** Metric name (always 'codemie_coding_agent_usage') */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Metric attributes */
|
|
14
|
+
attributes: SessionAttributes;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Session attributes for metrics
|
|
18
|
+
*/
|
|
19
|
+
export interface SessionAttributes {
|
|
20
|
+
agent: string;
|
|
21
|
+
agent_version: string;
|
|
22
|
+
llm_model: string;
|
|
23
|
+
project: string;
|
|
24
|
+
session_id: string;
|
|
25
|
+
total_user_prompts: number;
|
|
26
|
+
total_input_tokens: number;
|
|
27
|
+
total_output_tokens: number;
|
|
28
|
+
total_cache_read_input_tokens: number;
|
|
29
|
+
total_cache_creation_tokens: number;
|
|
30
|
+
total_tool_calls: number;
|
|
31
|
+
successful_tool_calls: number;
|
|
32
|
+
failed_tool_calls: number;
|
|
33
|
+
files_created: number;
|
|
34
|
+
files_modified: number;
|
|
35
|
+
files_deleted: number;
|
|
36
|
+
total_lines_added: number;
|
|
37
|
+
total_lines_removed: number;
|
|
38
|
+
session_duration_ms: number;
|
|
39
|
+
had_errors: boolean;
|
|
40
|
+
errors?: Record<string, string[]>;
|
|
41
|
+
count: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* API response for successful metrics submission
|
|
45
|
+
* Matches FastAPI MetricsResponse pydantic model
|
|
46
|
+
*/
|
|
47
|
+
export interface MetricsSyncResponse {
|
|
48
|
+
success: boolean;
|
|
49
|
+
message: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* API error response from FastAPI ExtendedHTTPException
|
|
53
|
+
*/
|
|
54
|
+
export interface MetricsApiError {
|
|
55
|
+
code: number;
|
|
56
|
+
message: string;
|
|
57
|
+
details?: string;
|
|
58
|
+
help?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Metrics API client configuration
|
|
62
|
+
*/
|
|
63
|
+
export interface MetricsApiConfig {
|
|
64
|
+
baseUrl: string;
|
|
65
|
+
cookies?: string;
|
|
66
|
+
timeout?: number;
|
|
67
|
+
retryAttempts?: number;
|
|
68
|
+
retryDelays?: number[];
|
|
69
|
+
version?: string;
|
|
70
|
+
clientType?: string;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/metrics/sync/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAEhC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IAGnB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6BAA6B,EAAE,MAAM,CAAC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IAGpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/metrics/sync/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|