@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
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lock Manager - File-Based Locking for Concurrency Control
|
|
3
|
-
*
|
|
4
|
-
* Implements file-based locking to ensure only one RemoteAnalyticsSubmitter
|
|
5
|
-
* runs at a time across multiple concurrent proxy instances.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Exclusive lock acquisition with retries
|
|
9
|
-
* - Stale lock detection and recovery
|
|
10
|
-
* - Process liveness checking
|
|
11
|
-
* - Heartbeat to prevent false stale detection
|
|
12
|
-
* - Graceful cleanup on exit signals
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Lock Manager
|
|
16
|
-
*/
|
|
17
|
-
export declare class LockManager {
|
|
18
|
-
private lockPath;
|
|
19
|
-
private lockInfo;
|
|
20
|
-
private heartbeatTimer;
|
|
21
|
-
constructor(analyticsDir?: string);
|
|
22
|
-
/**
|
|
23
|
-
* Ensure lock directory exists
|
|
24
|
-
*/
|
|
25
|
-
private ensureDir;
|
|
26
|
-
/**
|
|
27
|
-
* Check if a process is alive
|
|
28
|
-
*/
|
|
29
|
-
private isProcessAlive;
|
|
30
|
-
/**
|
|
31
|
-
* Read lock file
|
|
32
|
-
*/
|
|
33
|
-
private readLock;
|
|
34
|
-
/**
|
|
35
|
-
* Write lock file
|
|
36
|
-
*/
|
|
37
|
-
private writeLock;
|
|
38
|
-
/**
|
|
39
|
-
* Remove lock file
|
|
40
|
-
*/
|
|
41
|
-
private removeLock;
|
|
42
|
-
/**
|
|
43
|
-
* Check if lock is stale (old or process dead)
|
|
44
|
-
*/
|
|
45
|
-
private isLockStale;
|
|
46
|
-
/**
|
|
47
|
-
* Start heartbeat to refresh lock timestamp
|
|
48
|
-
*/
|
|
49
|
-
private startHeartbeat;
|
|
50
|
-
/**
|
|
51
|
-
* Stop heartbeat
|
|
52
|
-
*/
|
|
53
|
-
private stopHeartbeat;
|
|
54
|
-
/**
|
|
55
|
-
* Acquire lock with retry
|
|
56
|
-
*
|
|
57
|
-
* @param name Lock name (for logging)
|
|
58
|
-
* @param maxRetries Maximum number of retries
|
|
59
|
-
* @returns true if lock acquired, false if failed
|
|
60
|
-
*/
|
|
61
|
-
acquire(name: string, maxRetries?: number): Promise<boolean>;
|
|
62
|
-
/**
|
|
63
|
-
* Release lock
|
|
64
|
-
*/
|
|
65
|
-
release(): Promise<void>;
|
|
66
|
-
/**
|
|
67
|
-
* Setup exit handlers to release lock on process termination
|
|
68
|
-
*/
|
|
69
|
-
private setupExitHandlers;
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=lock-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lock-manager.d.ts","sourceRoot":"","sources":["../../../src/analytics/remote-submission/lock-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,cAAc,CAA+B;gBAEzC,YAAY,CAAC,EAAE,MAAM;IAKjC;;OAEG;YACW,SAAS;IAOvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;YACW,QAAQ;IActB;;OAEG;YACW,SAAS;IAMvB;;OAEG;YACW,UAAU;IAUxB;;OAEG;YACW,WAAW;IAezB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAyE7D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Lock Manager - File-Based Locking for Concurrency Control
|
|
3
|
-
*
|
|
4
|
-
* Implements file-based locking to ensure only one RemoteAnalyticsSubmitter
|
|
5
|
-
* runs at a time across multiple concurrent proxy instances.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Exclusive lock acquisition with retries
|
|
9
|
-
* - Stale lock detection and recovery
|
|
10
|
-
* - Process liveness checking
|
|
11
|
-
* - Heartbeat to prevent false stale detection
|
|
12
|
-
* - Graceful cleanup on exit signals
|
|
13
|
-
*/
|
|
14
|
-
import { readFile, writeFile, unlink, mkdir } from 'node:fs/promises';
|
|
15
|
-
import { existsSync } from 'node:fs';
|
|
16
|
-
import { join } from 'node:path';
|
|
17
|
-
import { homedir, hostname } from 'node:os';
|
|
18
|
-
import { logger } from '../../utils/logger.js';
|
|
19
|
-
const LOCK_TIMEOUT = 5 * 60 * 1000; // 5 minutes
|
|
20
|
-
const RETRY_DELAY = 2000; // 2 seconds
|
|
21
|
-
const HEARTBEAT_INTERVAL = 30 * 1000; // 30 seconds
|
|
22
|
-
/**
|
|
23
|
-
* Lock Manager
|
|
24
|
-
*/
|
|
25
|
-
export class LockManager {
|
|
26
|
-
lockPath;
|
|
27
|
-
lockInfo = null;
|
|
28
|
-
heartbeatTimer = null;
|
|
29
|
-
constructor(analyticsDir) {
|
|
30
|
-
const baseDir = analyticsDir || join(homedir(), '.codemie', 'analytics');
|
|
31
|
-
this.lockPath = join(baseDir, '.remote', '.lock');
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Ensure lock directory exists
|
|
35
|
-
*/
|
|
36
|
-
async ensureDir() {
|
|
37
|
-
const dir = join(this.lockPath, '..');
|
|
38
|
-
if (!existsSync(dir)) {
|
|
39
|
-
await mkdir(dir, { recursive: true });
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Check if a process is alive
|
|
44
|
-
*/
|
|
45
|
-
isProcessAlive(pid) {
|
|
46
|
-
try {
|
|
47
|
-
// kill(pid, 0) doesn't actually kill, just checks if process exists
|
|
48
|
-
process.kill(pid, 0);
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Read lock file
|
|
57
|
-
*/
|
|
58
|
-
async readLock() {
|
|
59
|
-
if (!existsSync(this.lockPath)) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
const content = await readFile(this.lockPath, 'utf-8');
|
|
64
|
-
return JSON.parse(content);
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
logger.debug(`Failed to read lock file: ${error}`);
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Write lock file
|
|
73
|
-
*/
|
|
74
|
-
async writeLock(lockInfo) {
|
|
75
|
-
await this.ensureDir();
|
|
76
|
-
const content = JSON.stringify(lockInfo, null, 2);
|
|
77
|
-
await writeFile(this.lockPath, content, 'utf-8');
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Remove lock file
|
|
81
|
-
*/
|
|
82
|
-
async removeLock() {
|
|
83
|
-
if (existsSync(this.lockPath)) {
|
|
84
|
-
try {
|
|
85
|
-
await unlink(this.lockPath);
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
logger.debug(`Failed to remove lock: ${error}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Check if lock is stale (old or process dead)
|
|
94
|
-
*/
|
|
95
|
-
async isLockStale(lockInfo) {
|
|
96
|
-
// Check age
|
|
97
|
-
const age = Date.now() - new Date(lockInfo.timestamp).getTime();
|
|
98
|
-
if (age > LOCK_TIMEOUT) {
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
// Check if process is alive
|
|
102
|
-
if (!this.isProcessAlive(lockInfo.pid)) {
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Start heartbeat to refresh lock timestamp
|
|
109
|
-
*/
|
|
110
|
-
startHeartbeat() {
|
|
111
|
-
this.heartbeatTimer = setInterval(async () => {
|
|
112
|
-
if (this.lockInfo) {
|
|
113
|
-
this.lockInfo.timestamp = new Date().toISOString();
|
|
114
|
-
try {
|
|
115
|
-
await this.writeLock(this.lockInfo);
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
logger.debug(`Heartbeat failed: ${error}`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}, HEARTBEAT_INTERVAL);
|
|
122
|
-
// Ensure heartbeat doesn't prevent process exit
|
|
123
|
-
this.heartbeatTimer.unref();
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Stop heartbeat
|
|
127
|
-
*/
|
|
128
|
-
stopHeartbeat() {
|
|
129
|
-
if (this.heartbeatTimer) {
|
|
130
|
-
clearInterval(this.heartbeatTimer);
|
|
131
|
-
this.heartbeatTimer = null;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Acquire lock with retry
|
|
136
|
-
*
|
|
137
|
-
* @param name Lock name (for logging)
|
|
138
|
-
* @param maxRetries Maximum number of retries
|
|
139
|
-
* @returns true if lock acquired, false if failed
|
|
140
|
-
*/
|
|
141
|
-
async acquire(name, maxRetries = 3) {
|
|
142
|
-
let attempts = 0;
|
|
143
|
-
while (attempts < maxRetries) {
|
|
144
|
-
attempts++;
|
|
145
|
-
// Check existing lock
|
|
146
|
-
const existingLock = await this.readLock();
|
|
147
|
-
if (existingLock) {
|
|
148
|
-
// Check if stale
|
|
149
|
-
if (await this.isLockStale(existingLock)) {
|
|
150
|
-
logger.debug(`Removing stale lock from ${existingLock.agent} (PID ${existingLock.pid})`);
|
|
151
|
-
await this.removeLock();
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
// Lock is valid, wait and retry
|
|
155
|
-
if (attempts < maxRetries) {
|
|
156
|
-
logger.debug(`Lock held by ${existingLock.agent} (PID ${existingLock.pid}), ` +
|
|
157
|
-
`waiting ${RETRY_DELAY}ms (attempt ${attempts}/${maxRetries})`);
|
|
158
|
-
await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
logger.debug(`Could not acquire lock after ${maxRetries} attempts`);
|
|
163
|
-
return false;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
// Try to acquire lock
|
|
168
|
-
this.lockInfo = {
|
|
169
|
-
pid: process.pid,
|
|
170
|
-
timestamp: new Date().toISOString(),
|
|
171
|
-
hostname: hostname(),
|
|
172
|
-
agent: name
|
|
173
|
-
};
|
|
174
|
-
try {
|
|
175
|
-
await this.writeLock(this.lockInfo);
|
|
176
|
-
// Verify we own the lock (race condition check)
|
|
177
|
-
const verifyLock = await this.readLock();
|
|
178
|
-
if (verifyLock?.pid === process.pid) {
|
|
179
|
-
logger.debug(`Lock acquired by ${name} (PID ${process.pid})`);
|
|
180
|
-
this.startHeartbeat();
|
|
181
|
-
this.setupExitHandlers();
|
|
182
|
-
return true;
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
// Someone else got the lock first
|
|
186
|
-
this.lockInfo = null;
|
|
187
|
-
if (attempts < maxRetries) {
|
|
188
|
-
await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
return false;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
logger.debug(`Failed to acquire lock: ${error}`);
|
|
198
|
-
this.lockInfo = null;
|
|
199
|
-
if (attempts < maxRetries) {
|
|
200
|
-
await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
|
|
201
|
-
continue;
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
return false;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Release lock
|
|
212
|
-
*/
|
|
213
|
-
async release() {
|
|
214
|
-
this.stopHeartbeat();
|
|
215
|
-
if (this.lockInfo) {
|
|
216
|
-
// Verify we still own the lock
|
|
217
|
-
const currentLock = await this.readLock();
|
|
218
|
-
if (currentLock?.pid === process.pid) {
|
|
219
|
-
await this.removeLock();
|
|
220
|
-
logger.debug(`Lock released by ${this.lockInfo.agent} (PID ${process.pid})`);
|
|
221
|
-
}
|
|
222
|
-
this.lockInfo = null;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Setup exit handlers to release lock on process termination
|
|
227
|
-
*/
|
|
228
|
-
setupExitHandlers() {
|
|
229
|
-
const cleanup = async () => {
|
|
230
|
-
await this.release();
|
|
231
|
-
};
|
|
232
|
-
// Handle various exit signals
|
|
233
|
-
process.once('SIGINT', cleanup);
|
|
234
|
-
process.once('SIGTERM', cleanup);
|
|
235
|
-
process.once('exit', cleanup);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
//# sourceMappingURL=lock-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lock-manager.js","sourceRoot":"","sources":["../../../src/analytics/remote-submission/lock-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metric Transformer - Backend-Aligned Pattern
|
|
3
|
-
*
|
|
4
|
-
* Transforms CodemieSession raw events into backend-aligned metric payloads
|
|
5
|
-
* following the approved 3+1 metric pattern:
|
|
6
|
-
* - codemie_tools_usage_total (success with ALL details)
|
|
7
|
-
* - codemie_tools_usage_tokens (optional, when available)
|
|
8
|
-
* - codemie_tools_usage_errors_total (failures with details)
|
|
9
|
-
* - codemie_coding_agent_usage (session aggregation)
|
|
10
|
-
*/
|
|
11
|
-
import type { CodemieSession, CodemieMessage, CodemieToolCall, CodemieFileModification } from '../aggregation/types.js';
|
|
12
|
-
import type { MetricPayload } from './types.js';
|
|
13
|
-
/**
|
|
14
|
-
* Transform CodemieSession raw events to backend-aligned metrics
|
|
15
|
-
*
|
|
16
|
-
* CRITICAL: CodemieSession contains AGGREGATED data. We extract individual
|
|
17
|
-
* tool call events from raw JSONL files for granular metrics.
|
|
18
|
-
*
|
|
19
|
-
* This function implements the APPROVED backend pattern with 3+1 metrics:
|
|
20
|
-
* - codemie_tools_usage_total (success with ALL details)
|
|
21
|
-
* - codemie_tools_usage_tokens (optional, if tokens available)
|
|
22
|
-
* - codemie_tools_usage_errors_total (failures with details)
|
|
23
|
-
* - codemie_coding_agent_usage (session aggregation)
|
|
24
|
-
*/
|
|
25
|
-
export declare function transformSessionToMetrics(session: CodemieSession, rawData: {
|
|
26
|
-
messages: CodemieMessage[];
|
|
27
|
-
toolCalls: CodemieToolCall[];
|
|
28
|
-
fileModifications: CodemieFileModification[];
|
|
29
|
-
}, config: {
|
|
30
|
-
userId: string;
|
|
31
|
-
userName: string;
|
|
32
|
-
}): MetricPayload[];
|
|
33
|
-
/**
|
|
34
|
-
* Create session aggregation metric
|
|
35
|
-
* Only called when session ends (explicit endTime or timeout)
|
|
36
|
-
*/
|
|
37
|
-
export declare function createSessionMetric(session: CodemieSession, rawData: {
|
|
38
|
-
messages: CodemieMessage[];
|
|
39
|
-
toolCalls: CodemieToolCall[];
|
|
40
|
-
fileModifications: CodemieFileModification[];
|
|
41
|
-
}, config: {
|
|
42
|
-
userId: string;
|
|
43
|
-
userName: string;
|
|
44
|
-
}, options: {
|
|
45
|
-
status: 'completed' | 'timeout' | 'resumed';
|
|
46
|
-
exitReason: string;
|
|
47
|
-
isFinal: boolean;
|
|
48
|
-
}): MetricPayload;
|
|
49
|
-
//# sourceMappingURL=metric-transformer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metric-transformer.d.ts","sourceRoot":"","sources":["../../../src/analytics/remote-submission/metric-transformer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,YAAY,CAAC;AAmBpB;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IACP,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;CAC9C,EACD,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,aAAa,EAAE,CAqGjB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IACP,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,iBAAiB,EAAE,uBAAuB,EAAE,CAAC;CAC9C,EACD,MAAM,EAAE;IACN,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,EACD,OAAO,EAAE;IACP,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB,GACA,aAAa,CAmDf"}
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metric Transformer - Backend-Aligned Pattern
|
|
3
|
-
*
|
|
4
|
-
* Transforms CodemieSession raw events into backend-aligned metric payloads
|
|
5
|
-
* following the approved 3+1 metric pattern:
|
|
6
|
-
* - codemie_tools_usage_total (success with ALL details)
|
|
7
|
-
* - codemie_tools_usage_tokens (optional, when available)
|
|
8
|
-
* - codemie_tools_usage_errors_total (failures with details)
|
|
9
|
-
* - codemie_coding_agent_usage (session aggregation)
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Helper: Estimate API requests from messages
|
|
13
|
-
* Heuristic: Usually 1-2 API calls per assistant message
|
|
14
|
-
*/
|
|
15
|
-
function estimateAPIRequests(session) {
|
|
16
|
-
return Math.ceil(session.assistantMessageCount * 1.5);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Helper: Calculate total execution time from tool calls
|
|
20
|
-
*/
|
|
21
|
-
function calculateTotalExecutionTime(toolCalls) {
|
|
22
|
-
return toolCalls.reduce((sum, tc) => sum + (tc.durationMs || 0), 0);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Transform CodemieSession raw events to backend-aligned metrics
|
|
26
|
-
*
|
|
27
|
-
* CRITICAL: CodemieSession contains AGGREGATED data. We extract individual
|
|
28
|
-
* tool call events from raw JSONL files for granular metrics.
|
|
29
|
-
*
|
|
30
|
-
* This function implements the APPROVED backend pattern with 3+1 metrics:
|
|
31
|
-
* - codemie_tools_usage_total (success with ALL details)
|
|
32
|
-
* - codemie_tools_usage_tokens (optional, if tokens available)
|
|
33
|
-
* - codemie_tools_usage_errors_total (failures with details)
|
|
34
|
-
* - codemie_coding_agent_usage (session aggregation)
|
|
35
|
-
*/
|
|
36
|
-
export function transformSessionToMetrics(session, rawData, config) {
|
|
37
|
-
const metrics = [];
|
|
38
|
-
// Base attributes (following backend pattern)
|
|
39
|
-
const baseAttributes = {
|
|
40
|
-
tool_type: 'cli',
|
|
41
|
-
agent: session.agent,
|
|
42
|
-
agent_version: session.agentVersion,
|
|
43
|
-
llm_model: session.model,
|
|
44
|
-
user_id: config.userId,
|
|
45
|
-
user_name: config.userName,
|
|
46
|
-
project: session.projectPath,
|
|
47
|
-
session_id: session.sessionId,
|
|
48
|
-
};
|
|
49
|
-
// ========================================================================
|
|
50
|
-
// 1. TOOL EXECUTION SUCCESS (with ALL details) - Backend Pattern
|
|
51
|
-
// ========================================================================
|
|
52
|
-
for (const toolCall of rawData.toolCalls) {
|
|
53
|
-
if (toolCall.status === 'success') {
|
|
54
|
-
// Find associated file modifications for this tool call
|
|
55
|
-
const fileChanges = rawData.fileModifications.filter(fm => fm.toolCallId === toolCall.toolCallId);
|
|
56
|
-
// Calculate aggregated file stats for this tool call
|
|
57
|
-
const linesAdded = fileChanges.reduce((sum, fm) => sum + fm.linesAdded, 0);
|
|
58
|
-
const linesRemoved = fileChanges.reduce((sum, fm) => sum + fm.linesRemoved, 0);
|
|
59
|
-
// Get first file's metadata (if multiple files, use primary file)
|
|
60
|
-
const primaryFile = fileChanges[0];
|
|
61
|
-
const successAttributes = {
|
|
62
|
-
...baseAttributes,
|
|
63
|
-
// Use tool call's model if available, fallback to session model
|
|
64
|
-
llm_model: toolCall.llm_model || session.model,
|
|
65
|
-
tool_name: toolCall.toolName,
|
|
66
|
-
duration_ms: toolCall.durationMs || 0,
|
|
67
|
-
count: 1,
|
|
68
|
-
};
|
|
69
|
-
// Add file modification details (optional - only if file was modified)
|
|
70
|
-
if (primaryFile) {
|
|
71
|
-
successAttributes.file_extension = primaryFile.fileExtension;
|
|
72
|
-
successAttributes.operation = primaryFile.operation;
|
|
73
|
-
successAttributes.lines_added = linesAdded;
|
|
74
|
-
successAttributes.lines_removed = linesRemoved;
|
|
75
|
-
successAttributes.was_new_file = primaryFile.wasNewFile;
|
|
76
|
-
}
|
|
77
|
-
metrics.push({
|
|
78
|
-
metric_name: 'codemie_tools_usage_total',
|
|
79
|
-
attributes: successAttributes,
|
|
80
|
-
time: toolCall.timestamp.toISOString(),
|
|
81
|
-
});
|
|
82
|
-
// 2. Token consumption (optional - only if available)
|
|
83
|
-
// Note: Tool-level tokens are in the message that contains the tool call
|
|
84
|
-
const message = rawData.messages.find(m => m.messageId === toolCall.messageId);
|
|
85
|
-
if (message?.tokens?.output && message.tokens.output > 0) {
|
|
86
|
-
const tokenAttributes = {
|
|
87
|
-
...baseAttributes,
|
|
88
|
-
// Use tool call's model if available, fallback to session model
|
|
89
|
-
llm_model: toolCall.llm_model || session.model,
|
|
90
|
-
tool_name: toolCall.toolName,
|
|
91
|
-
input_tokens: message.tokens.input ?? 0,
|
|
92
|
-
output_tokens: message.tokens.output,
|
|
93
|
-
cache_read_input_tokens: message.tokens.cacheRead ?? 0,
|
|
94
|
-
count: message.tokens.output,
|
|
95
|
-
};
|
|
96
|
-
metrics.push({
|
|
97
|
-
metric_name: 'codemie_tools_usage_tokens',
|
|
98
|
-
attributes: tokenAttributes,
|
|
99
|
-
time: toolCall.timestamp.toISOString(),
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
// ========================================================================
|
|
105
|
-
// 3. TOOL EXECUTION FAILURE - Backend Pattern
|
|
106
|
-
// ========================================================================
|
|
107
|
-
const errorAttributes = {
|
|
108
|
-
...baseAttributes,
|
|
109
|
-
// Use tool call's model if available, fallback to session model
|
|
110
|
-
llm_model: toolCall.llm_model || session.model,
|
|
111
|
-
tool_name: toolCall.toolName,
|
|
112
|
-
error: toolCall.error || 'Unknown error',
|
|
113
|
-
status: 'failure',
|
|
114
|
-
duration_ms: toolCall.durationMs || 0,
|
|
115
|
-
count: 1,
|
|
116
|
-
};
|
|
117
|
-
metrics.push({
|
|
118
|
-
metric_name: 'codemie_tools_usage_errors_total',
|
|
119
|
-
attributes: errorAttributes,
|
|
120
|
-
time: toolCall.timestamp.toISOString(),
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return metrics;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Create session aggregation metric
|
|
128
|
-
* Only called when session ends (explicit endTime or timeout)
|
|
129
|
-
*/
|
|
130
|
-
export function createSessionMetric(session, rawData, config, options) {
|
|
131
|
-
const sessionAttributes = {
|
|
132
|
-
// Base context (no tool_type for session metric)
|
|
133
|
-
user_id: config.userId,
|
|
134
|
-
user_name: config.userName,
|
|
135
|
-
agent: session.agent,
|
|
136
|
-
agent_version: session.agentVersion,
|
|
137
|
-
llm_model: session.model,
|
|
138
|
-
project: session.projectPath,
|
|
139
|
-
session_id: session.sessionId,
|
|
140
|
-
// Interaction tracking
|
|
141
|
-
total_user_prompts: session.userPromptCount,
|
|
142
|
-
total_ai_requests: estimateAPIRequests(session),
|
|
143
|
-
total_ai_responses: session.assistantMessageCount,
|
|
144
|
-
total_tool_calls: session.toolCallCount,
|
|
145
|
-
successful_tool_calls: session.successfulToolCalls,
|
|
146
|
-
failed_tool_calls: session.failedToolCalls,
|
|
147
|
-
// Token totals
|
|
148
|
-
total_input_tokens: session.tokens.input,
|
|
149
|
-
total_output_tokens: session.tokens.output,
|
|
150
|
-
total_cache_read_input_tokens: session.tokens.cacheRead,
|
|
151
|
-
total_money_spent: 0, // Cost calculation removed - handled by backend
|
|
152
|
-
total_cached_tokens_money_spent: 0, // Cost calculation removed - handled by backend
|
|
153
|
-
// Code totals
|
|
154
|
-
files_created: session.fileStats?.filesCreated || 0,
|
|
155
|
-
files_modified: session.fileStats?.filesModified || 0,
|
|
156
|
-
files_deleted: session.fileStats?.filesDeleted || 0,
|
|
157
|
-
total_lines_added: session.fileStats?.totalLinesAdded || 0,
|
|
158
|
-
total_lines_removed: session.fileStats?.totalLinesRemoved || 0,
|
|
159
|
-
// Performance
|
|
160
|
-
session_duration_ms: session.durationMs || 0,
|
|
161
|
-
total_execution_time: calculateTotalExecutionTime(rawData.toolCalls),
|
|
162
|
-
// Status
|
|
163
|
-
exit_reason: options.exitReason,
|
|
164
|
-
had_errors: session.hadErrors,
|
|
165
|
-
status: options.status,
|
|
166
|
-
is_final: options.isFinal,
|
|
167
|
-
count: 1,
|
|
168
|
-
};
|
|
169
|
-
return {
|
|
170
|
-
metric_name: 'codemie_coding_agent_usage',
|
|
171
|
-
attributes: sessionAttributes,
|
|
172
|
-
time: (session.endTime || new Date()).toISOString(),
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
//# sourceMappingURL=metric-transformer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metric-transformer.js","sourceRoot":"","sources":["../../../src/analytics/remote-submission/metric-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remote Analytics Submitter
|
|
3
|
-
*
|
|
4
|
-
* Orchestrates periodic submission of analytics metrics to /v1/metrics endpoint.
|
|
5
|
-
* Handles event-level tracking, concurrency control, and backend-aligned metrics.
|
|
6
|
-
*
|
|
7
|
-
* Key Features:
|
|
8
|
-
* - 5-minute submission interval
|
|
9
|
-
* - Event-level tracking (message IDs, tool call IDs)
|
|
10
|
-
* - Multi-terminal safety via file locking
|
|
11
|
-
* - Inactivity-based session end detection
|
|
12
|
-
* - Backend-aligned metric transformation (3+1 pattern)
|
|
13
|
-
*/
|
|
14
|
-
import type { RemoteSubmissionConfig } from './types.js';
|
|
15
|
-
/**
|
|
16
|
-
* Remote Analytics Submitter
|
|
17
|
-
*/
|
|
18
|
-
export declare class RemoteAnalyticsSubmitter {
|
|
19
|
-
private config;
|
|
20
|
-
private cursorManager;
|
|
21
|
-
private lockManager;
|
|
22
|
-
private intervalTimer;
|
|
23
|
-
private isRunning;
|
|
24
|
-
constructor(config: RemoteSubmissionConfig);
|
|
25
|
-
/**
|
|
26
|
-
* Start periodic submission
|
|
27
|
-
*/
|
|
28
|
-
start(): void;
|
|
29
|
-
/**
|
|
30
|
-
* Stop periodic submission
|
|
31
|
-
*/
|
|
32
|
-
stop(): void;
|
|
33
|
-
/**
|
|
34
|
-
* Main submission cycle
|
|
35
|
-
*/
|
|
36
|
-
private submitCycle;
|
|
37
|
-
/**
|
|
38
|
-
* Process all external agents
|
|
39
|
-
*/
|
|
40
|
-
private processExternalAgents;
|
|
41
|
-
/**
|
|
42
|
-
* Process single agent
|
|
43
|
-
*/
|
|
44
|
-
private processAgent;
|
|
45
|
-
/**
|
|
46
|
-
* Process single session
|
|
47
|
-
*/
|
|
48
|
-
private processSession;
|
|
49
|
-
/**
|
|
50
|
-
* Determine session status based on activity
|
|
51
|
-
*/
|
|
52
|
-
private determineSessionStatus;
|
|
53
|
-
/**
|
|
54
|
-
* Get last activity time from session
|
|
55
|
-
*/
|
|
56
|
-
private getLastActivityTime;
|
|
57
|
-
/**
|
|
58
|
-
* Maybe submit session metric based on status
|
|
59
|
-
*/
|
|
60
|
-
private maybeSubmitSessionMetric;
|
|
61
|
-
/**
|
|
62
|
-
* Submit batch of metrics - writes to local file and/or remote endpoint
|
|
63
|
-
*/
|
|
64
|
-
private submitBatch;
|
|
65
|
-
/**
|
|
66
|
-
* Write metrics to local JSONL file
|
|
67
|
-
*/
|
|
68
|
-
private writeMetricsToLocalFile;
|
|
69
|
-
/**
|
|
70
|
-
* Submit metrics to remote /v1/metrics endpoint
|
|
71
|
-
*/
|
|
72
|
-
private submitToRemote;
|
|
73
|
-
/**
|
|
74
|
-
* Create batches from metrics
|
|
75
|
-
*/
|
|
76
|
-
private createBatches;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=submitter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"submitter.d.ts","sourceRoot":"","sources":["../../../src/analytics/remote-submission/submitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,OAAO,KAAK,EACV,sBAAsB,EAIvB,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,sBAAsB;IAM1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAuBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;YACW,WAAW;IAsCzB;;OAEG;YACW,qBAAqB;IA4BnC;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,cAAc;IAwG5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;YACW,wBAAwB;IAkEtC;;OAEG;YACW,WAAW;IAYzB;;OAEG;YACW,uBAAuB;IAyBrC;;OAEG;YACW,cAAc;IA+B5B;;OAEG;IACH,OAAO,CAAC,aAAa;CAOtB"}
|