@codemieai/code 0.0.28 → 0.0.30
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 +8 -10
- package/bin/agent-executor.js +1 -1
- package/dist/agents/codemie-code/config.d.ts.map +1 -1
- package/dist/agents/codemie-code/config.js +0 -1
- package/dist/agents/codemie-code/config.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +4 -8
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts +17 -9
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +75 -67
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +258 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.js +522 -0
- package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -0
- package/dist/agents/core/lifecycle-helpers.d.ts.map +1 -1
- package/dist/agents/core/lifecycle-helpers.js +16 -2
- package/dist/agents/core/lifecycle-helpers.js.map +1 -1
- package/dist/agents/core/metrics/index.d.ts +0 -2
- package/dist/agents/core/metrics/index.d.ts.map +1 -1
- package/dist/agents/core/metrics/index.js +0 -3
- package/dist/agents/core/metrics/index.js.map +1 -1
- package/dist/agents/core/metrics/types.d.ts +4 -232
- package/dist/agents/core/metrics/types.d.ts.map +1 -1
- package/dist/agents/core/metrics/types.js +2 -2
- package/dist/agents/core/session/BaseProcessor.d.ts +72 -0
- package/dist/agents/core/session/BaseProcessor.d.ts.map +1 -0
- package/dist/agents/core/session/BaseProcessor.js +9 -0
- package/dist/agents/core/session/BaseProcessor.js.map +1 -0
- package/dist/agents/core/session/BaseSessionAdapter.d.ts +99 -0
- package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -0
- package/dist/agents/core/session/BaseSessionAdapter.js +9 -0
- package/dist/agents/core/session/BaseSessionAdapter.js.map +1 -0
- package/dist/agents/core/session/SessionStore.d.ts +23 -0
- package/dist/agents/core/session/SessionStore.d.ts.map +1 -0
- package/dist/agents/core/session/SessionStore.js +75 -0
- package/dist/agents/core/session/SessionStore.js.map +1 -0
- package/dist/agents/core/session/session-config.d.ts +27 -0
- package/dist/agents/core/session/session-config.d.ts.map +1 -0
- package/dist/agents/core/session/session-config.js +61 -0
- package/dist/agents/core/session/session-config.js.map +1 -0
- package/dist/agents/core/session/types.d.ts +87 -0
- package/dist/agents/core/session/types.d.ts.map +1 -0
- package/dist/agents/core/session/types.js +8 -0
- package/dist/agents/core/session/types.js.map +1 -0
- package/dist/agents/core/session/utils/jsonl-reader.d.ts +15 -0
- package/dist/agents/core/session/utils/jsonl-reader.d.ts.map +1 -0
- package/dist/agents/core/session/utils/jsonl-reader.js +33 -0
- package/dist/agents/core/session/utils/jsonl-reader.js.map +1 -0
- package/dist/agents/core/session/utils/jsonl-writer.d.ts +26 -0
- package/dist/agents/core/session/utils/jsonl-writer.d.ts.map +1 -0
- package/dist/agents/core/session/utils/jsonl-writer.js +56 -0
- package/dist/agents/core/session/utils/jsonl-writer.js.map +1 -0
- package/dist/agents/core/types.d.ts +78 -11
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-message-types.d.ts +74 -0
- package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude-message-types.js +8 -0
- package/dist/agents/plugins/claude/claude-message-types.js.map +1 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.d.ts +53 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.js +63 -0
- package/dist/agents/plugins/claude/claude.plugin-installer.js.map +1 -0
- package/dist/agents/plugins/claude/claude.plugin.d.ts +26 -0
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/{claude.plugin.js → claude/claude.plugin.js} +20 -11
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -0
- package/dist/agents/plugins/claude/claude.session.d.ts +60 -0
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude.session.js +339 -0
- package/dist/agents/plugins/claude/claude.session.js.map +1 -0
- package/dist/agents/plugins/claude/plugin/.claude-plugin/local-install.json +15 -0
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +9 -0
- package/dist/agents/plugins/claude/plugin/README.md +299 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/README.md +539 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +511 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +205 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +74 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +207 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +143 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +127 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +168 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +210 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/integration/external-integrations.md.template +160 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +170 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +150 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/git-workflow.md.template +177 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +143 -0
- package/dist/agents/plugins/claude/plugin/commands/README.md +0 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-catchup.md +10 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +731 -0
- package/dist/agents/plugins/claude/plugin/commands/memory-add.md +44 -0
- package/dist/agents/plugins/claude/plugin/commands/memory-init.md +18 -0
- package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +54 -0
- package/dist/agents/plugins/claude/plugin/hooks/hooks.json +71 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts +51 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +840 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts +37 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +275 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -0
- package/dist/agents/plugins/gemini/extension/README.md +88 -0
- package/dist/agents/plugins/gemini/extension/gemini-extension.json +11 -0
- package/dist/agents/plugins/gemini/extension/hooks/hooks.json +65 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.d.ts +49 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.js +63 -0
- package/dist/agents/plugins/gemini/gemini.extension-installer.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.d.ts +43 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.js +57 -0
- package/dist/agents/plugins/gemini/gemini.hook-transformer.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.plugin.d.ts +32 -0
- package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.plugin.js +136 -0
- package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts +68 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.js +268 -0
- package/dist/agents/plugins/gemini/gemini.session-adapter.js.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts +36 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +186 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts +32 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +193 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts +26 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.js +38 -0
- package/dist/agents/plugins/gemini/session/utils/token-aggregator.js.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.d.ts +33 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.js +58 -0
- package/dist/agents/plugins/gemini/session/utils/tool-aggregator.js.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts +70 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.d.ts.map +1 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.js +86 -0
- package/dist/agents/plugins/gemini/session/utils/turn-detector.js.map +1 -0
- package/dist/agents/registry.d.ts +7 -2
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +17 -8
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/analytics/data-loader.d.ts +1 -1
- package/dist/cli/commands/analytics/data-loader.js +1 -1
- package/dist/cli/commands/analytics/index.js +1 -1
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/doctor/checks/PythonCheck.d.ts +13 -0
- package/dist/cli/commands/doctor/checks/PythonCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/PythonCheck.js +90 -31
- package/dist/cli/commands/doctor/checks/PythonCheck.js.map +1 -1
- package/dist/cli/commands/hook.d.ts +7 -0
- package/dist/cli/commands/hook.d.ts.map +1 -0
- package/dist/cli/commands/hook.js +792 -0
- package/dist/cli/commands/hook.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +3 -4
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +2 -1
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/first-time.d.ts +4 -0
- package/dist/cli/first-time.d.ts.map +1 -1
- package/dist/cli/first-time.js +26 -13
- package/dist/cli/first-time.js.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/frameworks/core/types.d.ts +1 -1
- package/dist/frameworks/plugins/speckit.plugin.d.ts.map +1 -1
- package/dist/frameworks/plugins/speckit.plugin.js +1 -2
- package/dist/frameworks/plugins/speckit.plugin.js.map +1 -1
- package/dist/migrations/002-consolidate-sessions.migration.d.ts +50 -0
- package/dist/migrations/002-consolidate-sessions.migration.d.ts.map +1 -0
- package/dist/migrations/002-consolidate-sessions.migration.js +220 -0
- package/dist/migrations/002-consolidate-sessions.migration.js.map +1 -0
- package/dist/migrations/index.d.ts +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +3 -2
- package/dist/migrations/index.js.map +1 -1
- package/dist/providers/core/types.d.ts +1 -1
- package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.js +2 -10
- package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
- package/dist/providers/plugins/sso/index.d.ts +1 -1
- package/dist/providers/plugins/sso/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/index.js +1 -1
- package/dist/providers/plugins/sso/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +3 -3
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts +40 -0
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +194 -0
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts +1 -0
- package/dist/providers/plugins/sso/proxy/proxy-http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/proxy-http-client.js +40 -6
- package/dist/providers/plugins/sso/proxy/proxy-http-client.js.map +1 -1
- package/dist/providers/plugins/sso/session/BaseProcessor.d.ts +72 -0
- package/dist/providers/plugins/sso/session/BaseProcessor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/BaseProcessor.js +9 -0
- package/dist/providers/plugins/sso/session/BaseProcessor.js.map +1 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.d.ts +99 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.js +9 -0
- package/dist/providers/plugins/sso/session/BaseSessionAdapter.js.map +1 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts +36 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.js +140 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts +26 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js +146 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +23 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js +171 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts +69 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js +7 -0
- package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.d.ts +30 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.js +79 -0
- package/dist/providers/plugins/sso/session/processors/metrics/MetricsWriter.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-aggregator.d.ts → session/processors/metrics/metrics-aggregator.d.ts} +6 -5
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-aggregator.js → session/processors/metrics/metrics-aggregator.js} +20 -12
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sender.d.ts → session/processors/metrics/metrics-api-client.d.ts} +18 -11
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sender.js → session/processors/metrics/metrics-api-client.js} +143 -15
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-post-processor.d.ts → session/processors/metrics/metrics-post-processor.d.ts} +3 -3
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-post-processor.js → session/processors/metrics/metrics-post-processor.js} +3 -3
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js.map +1 -0
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts +24 -0
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-sync.plugin.js → session/processors/metrics/metrics-sync-processor.js} +94 -165
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-types.d.ts → session/processors/metrics/metrics-types.d.ts} +2 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.metrics-types.js → session/processors/metrics/metrics-types.js} +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.js.map +1 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.d.ts +15 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.d.ts.map +1 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.js +33 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-reader.js.map +1 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-writer.d.ts +26 -0
- package/dist/providers/plugins/sso/session/utils/jsonl-writer.d.ts.map +1 -0
- package/dist/providers/plugins/sso/{metrics/sync/sso.jsonl-writer.js → session/utils/jsonl-writer.js} +11 -27
- package/dist/providers/plugins/sso/session/utils/jsonl-writer.js.map +1 -0
- package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.template.js +71 -44
- package/dist/providers/plugins/sso/sso.template.js.map +1 -1
- package/dist/utils/file-operations.d.ts +20 -0
- package/dist/utils/file-operations.d.ts.map +1 -0
- package/dist/utils/file-operations.js +48 -0
- package/dist/utils/file-operations.js.map +1 -0
- package/dist/utils/logger.d.ts +2 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +12 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/paths.d.ts +20 -5
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +23 -5
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/processes.d.ts +2 -0
- package/dist/utils/processes.d.ts.map +1 -1
- package/dist/utils/processes.js +6 -1
- package/dist/utils/processes.js.map +1 -1
- package/package.json +9 -9
- package/scripts/copy-plugins.js +57 -0
- package/scripts/license-check.js +23 -0
- package/bin/codemie-codex.js +0 -18
- package/bin/codemie-deepagents.js +0 -18
- package/dist/agents/core/BaseMetricsAdapter.d.ts +0 -165
- package/dist/agents/core/BaseMetricsAdapter.d.ts.map +0 -1
- package/dist/agents/core/BaseMetricsAdapter.js +0 -308
- package/dist/agents/core/BaseMetricsAdapter.js.map +0 -1
- package/dist/agents/core/metrics/MetricsOrchestrator.d.ts +0 -81
- package/dist/agents/core/metrics/MetricsOrchestrator.d.ts.map +0 -1
- package/dist/agents/core/metrics/MetricsOrchestrator.js +0 -417
- package/dist/agents/core/metrics/MetricsOrchestrator.js.map +0 -1
- package/dist/agents/core/metrics/core/DeltaWriter.d.ts +0 -49
- package/dist/agents/core/metrics/core/DeltaWriter.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/DeltaWriter.js +0 -152
- package/dist/agents/core/metrics/core/DeltaWriter.js.map +0 -1
- package/dist/agents/core/metrics/core/FileSnapshotter.d.ts +0 -22
- package/dist/agents/core/metrics/core/FileSnapshotter.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/FileSnapshotter.js +0 -74
- package/dist/agents/core/metrics/core/FileSnapshotter.js.map +0 -1
- package/dist/agents/core/metrics/core/SessionCorrelator.d.ts +0 -34
- package/dist/agents/core/metrics/core/SessionCorrelator.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/SessionCorrelator.js +0 -157
- package/dist/agents/core/metrics/core/SessionCorrelator.js.map +0 -1
- package/dist/agents/core/metrics/core/SyncStateManager.d.ts +0 -69
- package/dist/agents/core/metrics/core/SyncStateManager.d.ts.map +0 -1
- package/dist/agents/core/metrics/core/SyncStateManager.js +0 -283
- package/dist/agents/core/metrics/core/SyncStateManager.js.map +0 -1
- package/dist/agents/core/metrics/session/SessionStore.d.ts +0 -43
- package/dist/agents/core/metrics/session/SessionStore.d.ts.map +0 -1
- package/dist/agents/core/metrics/session/SessionStore.js +0 -146
- package/dist/agents/core/metrics/session/SessionStore.js.map +0 -1
- package/dist/agents/core/metrics-config.d.ts +0 -38
- package/dist/agents/core/metrics-config.d.ts.map +0 -1
- package/dist/agents/core/metrics-config.js +0 -96
- package/dist/agents/core/metrics-config.js.map +0 -1
- package/dist/agents/plugins/claude.metrics.d.ts +0 -102
- package/dist/agents/plugins/claude.metrics.d.ts.map +0 -1
- package/dist/agents/plugins/claude.metrics.js +0 -656
- package/dist/agents/plugins/claude.metrics.js.map +0 -1
- package/dist/agents/plugins/claude.plugin.d.ts +0 -19
- package/dist/agents/plugins/claude.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/claude.plugin.js.map +0 -1
- package/dist/agents/plugins/codex.metrics.d.ts +0 -69
- package/dist/agents/plugins/codex.metrics.d.ts.map +0 -1
- package/dist/agents/plugins/codex.metrics.js +0 -483
- package/dist/agents/plugins/codex.metrics.js.map +0 -1
- package/dist/agents/plugins/codex.plugin.d.ts +0 -21
- package/dist/agents/plugins/codex.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/codex.plugin.js +0 -222
- package/dist/agents/plugins/codex.plugin.js.map +0 -1
- package/dist/agents/plugins/deepagents.plugin.d.ts +0 -21
- package/dist/agents/plugins/deepagents.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/deepagents.plugin.js +0 -104
- package/dist/agents/plugins/deepagents.plugin.js.map +0 -1
- package/dist/agents/plugins/gemini.metrics.d.ts +0 -99
- package/dist/agents/plugins/gemini.metrics.d.ts.map +0 -1
- package/dist/agents/plugins/gemini.metrics.js +0 -475
- package/dist/agents/plugins/gemini.metrics.js.map +0 -1
- package/dist/agents/plugins/gemini.plugin.d.ts +0 -16
- package/dist/agents/plugins/gemini.plugin.d.ts.map +0 -1
- package/dist/agents/plugins/gemini.plugin.js +0 -80
- package/dist/agents/plugins/gemini.plugin.js.map +0 -1
- package/dist/agents/plugins/history-parser.d.ts +0 -52
- package/dist/agents/plugins/history-parser.d.ts.map +0 -1
- package/dist/agents/plugins/history-parser.js +0 -155
- package/dist/agents/plugins/history-parser.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts +0 -28
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.jsonl-writer.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts +0 -62
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js +0 -157
- package/dist/providers/plugins/sso/metrics/sync/sso.lifecycle-handler.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-aggregator.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts +0 -32
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js +0 -159
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-api-client.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-post-processor.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sender.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts +0 -36
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-sync.plugin.js.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.d.ts.map +0 -1
- package/dist/providers/plugins/sso/metrics/sync/sso.metrics-types.js.map +0 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Cross-platform script to copy plugin assets from src/ to dist/
|
|
5
|
+
* Works on Windows, macOS, and Linux
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { dirname, join } from 'path';
|
|
10
|
+
import { rmSync, mkdirSync, cpSync, existsSync } from 'fs';
|
|
11
|
+
|
|
12
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
+
const __dirname = dirname(__filename);
|
|
14
|
+
const rootDir = join(__dirname, '..');
|
|
15
|
+
|
|
16
|
+
const copyConfigs = [
|
|
17
|
+
{
|
|
18
|
+
name: 'Claude plugin',
|
|
19
|
+
src: join(rootDir, 'src/agents/plugins/claude/plugin'),
|
|
20
|
+
dest: join(rootDir, 'dist/agents/plugins/claude/plugin')
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'Gemini extension',
|
|
24
|
+
src: join(rootDir, 'src/agents/plugins/gemini/extension'),
|
|
25
|
+
dest: join(rootDir, 'dist/agents/plugins/gemini/extension')
|
|
26
|
+
}
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
console.log('Copying plugin assets...\n');
|
|
30
|
+
|
|
31
|
+
for (const config of copyConfigs) {
|
|
32
|
+
console.log(`Processing ${config.name}:`);
|
|
33
|
+
|
|
34
|
+
// Remove destination if it exists
|
|
35
|
+
if (existsSync(config.dest)) {
|
|
36
|
+
console.log(` - Removing old ${config.dest}`);
|
|
37
|
+
rmSync(config.dest, { recursive: true, force: true });
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Check if source exists
|
|
41
|
+
if (!existsSync(config.src)) {
|
|
42
|
+
console.log(` - Warning: Source ${config.src} does not exist, skipping...`);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Create parent directories
|
|
47
|
+
console.log(` - Creating ${config.dest}`);
|
|
48
|
+
mkdirSync(config.dest, { recursive: true });
|
|
49
|
+
|
|
50
|
+
// Copy recursively
|
|
51
|
+
console.log(` - Copying from ${config.src}`);
|
|
52
|
+
cpSync(config.src, config.dest, { recursive: true });
|
|
53
|
+
|
|
54
|
+
console.log(` ✓ ${config.name} copied successfully\n`);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
console.log('Plugin assets copied successfully!');
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Wrapper script for license-checker that ignores file arguments from lint-staged
|
|
5
|
+
* lint-staged passes matched files as arguments, but license-checker doesn't need them
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { spawnSync } from 'child_process';
|
|
9
|
+
import { platform } from 'os';
|
|
10
|
+
|
|
11
|
+
// Run license-checker without any file arguments
|
|
12
|
+
const allowedLicenses = 'MIT;Apache-2.0;ISC;BSD-2-Clause;BSD-3-Clause;0BSD;CC0-1.0;Unlicense;BlueOak-1.0.0;Python-2.0;CC-BY-4.0;Apache*;(MIT OR CC0-1.0);(MIT OR WTFPL);(BSD-2-Clause OR MIT OR Apache-2.0)';
|
|
13
|
+
|
|
14
|
+
// On Windows, we need shell: true for npx to work
|
|
15
|
+
// On Unix/Linux, we should NOT use shell: true to avoid semicolon interpretation
|
|
16
|
+
const isWindows = platform() === 'win32';
|
|
17
|
+
|
|
18
|
+
const result = spawnSync('npx', ['license-checker', '--summary', '--onlyAllow', allowedLicenses], {
|
|
19
|
+
stdio: 'inherit',
|
|
20
|
+
shell: isWindows
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
process.exit(result.status || 0);
|
package/bin/codemie-codex.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Codex Agent Entry Point
|
|
5
|
-
* Direct entry point for codemie-codex command
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { AgentCLI } from '../dist/agents/core/AgentCLI.js';
|
|
9
|
-
import { AgentRegistry } from '../dist/agents/registry.js';
|
|
10
|
-
|
|
11
|
-
const agent = AgentRegistry.getAgent('codex');
|
|
12
|
-
if (!agent) {
|
|
13
|
-
console.error('✗ Codex agent not found in registry');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const cli = new AgentCLI(agent);
|
|
18
|
-
await cli.run(process.argv);
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Deep Agents Entry Point
|
|
5
|
-
* Direct entry point for codemie-deepagents command
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { AgentCLI } from '../dist/agents/core/AgentCLI.js';
|
|
9
|
-
import { AgentRegistry } from '../dist/agents/registry.js';
|
|
10
|
-
|
|
11
|
-
const agent = AgentRegistry.getAgent('deepagents');
|
|
12
|
-
if (!agent) {
|
|
13
|
-
console.error('✗ Deep Agents not found in registry');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const cli = new AgentCLI(agent);
|
|
18
|
-
await cli.run(process.argv);
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base Metrics Adapter
|
|
3
|
-
*
|
|
4
|
-
* Generic implementation of AgentMetricsSupport interface.
|
|
5
|
-
* Provides default implementations that work for most agents.
|
|
6
|
-
* Agent plugins override only what's specific to them.
|
|
7
|
-
*/
|
|
8
|
-
import type { AgentMetricsSupport, MetricSnapshot, MetricDelta, UserPrompt, ToolCallMetric, ToolUsageSummary } from './metrics/types.js';
|
|
9
|
-
import type { AgentMetadata } from './types.js';
|
|
10
|
-
export declare abstract class BaseMetricsAdapter implements AgentMetricsSupport {
|
|
11
|
-
protected agentName: string;
|
|
12
|
-
protected metadata?: AgentMetadata | undefined;
|
|
13
|
-
constructor(agentName: string, metadata?: AgentMetadata | undefined);
|
|
14
|
-
/**
|
|
15
|
-
* Get agent home directory (e.g., ~/.claude, ~/.codex, ~/.gemini)
|
|
16
|
-
* @returns Absolute path to agent home directory
|
|
17
|
-
*/
|
|
18
|
-
protected getHomeDir(): string;
|
|
19
|
-
/**
|
|
20
|
-
* Get sessions directory path
|
|
21
|
-
* @returns Absolute path to sessions directory
|
|
22
|
-
*/
|
|
23
|
-
protected getSessionsDir(): string;
|
|
24
|
-
/**
|
|
25
|
-
* Get user prompts file path
|
|
26
|
-
* @returns Absolute path to user prompts history file
|
|
27
|
-
*/
|
|
28
|
-
protected getUserPromptsPath(): string;
|
|
29
|
-
/**
|
|
30
|
-
* Get settings file path
|
|
31
|
-
* @returns Absolute path to settings file
|
|
32
|
-
*/
|
|
33
|
-
protected getSettingsPath(): string;
|
|
34
|
-
/**
|
|
35
|
-
* Get data paths - can be overridden or uses metadata.dataPaths
|
|
36
|
-
*/
|
|
37
|
-
getDataPaths(): {
|
|
38
|
-
sessionsDir: string;
|
|
39
|
-
settingsDir?: string;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Check if file matches session pattern - MUST be overridden
|
|
43
|
-
*/
|
|
44
|
-
abstract matchesSessionPattern(path: string): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Extract session ID from path - MUST be overridden
|
|
47
|
-
*/
|
|
48
|
-
abstract extractSessionId(path: string): string;
|
|
49
|
-
/**
|
|
50
|
-
* Parse session file - MUST be overridden
|
|
51
|
-
*/
|
|
52
|
-
abstract parseSessionFile(path: string): Promise<MetricSnapshot>;
|
|
53
|
-
/**
|
|
54
|
-
* Parse incremental metrics from session file
|
|
55
|
-
* Returns only new deltas, skipping already-processed record IDs
|
|
56
|
-
* MUST be overridden if delta-based metrics are used
|
|
57
|
-
*/
|
|
58
|
-
parseIncrementalMetrics(_path: string, _processedRecordIds: Set<string>, _attachedUserPromptTexts?: Set<string>): Promise<{
|
|
59
|
-
deltas: MetricDelta[];
|
|
60
|
-
lastLine: number;
|
|
61
|
-
newlyAttachedPrompts?: string[];
|
|
62
|
-
}>;
|
|
63
|
-
/**
|
|
64
|
-
* Get user prompts for a specific session
|
|
65
|
-
* Each agent implements this to parse their specific history format
|
|
66
|
-
* MUST be overridden by each agent adapter
|
|
67
|
-
*/
|
|
68
|
-
getUserPrompts(_sessionId: string, _fromTimestamp?: number, _toTimestamp?: number): Promise<UserPrompt[]>;
|
|
69
|
-
/**
|
|
70
|
-
* Get watermark strategy - default: hash
|
|
71
|
-
* Override if agent uses different strategy
|
|
72
|
-
*/
|
|
73
|
-
getWatermarkStrategy(): 'hash' | 'line' | 'object';
|
|
74
|
-
/**
|
|
75
|
-
* Get initialization delay - default: 1000ms
|
|
76
|
-
* Override if agent needs different delay
|
|
77
|
-
*/
|
|
78
|
-
getInitDelay(): number;
|
|
79
|
-
/**
|
|
80
|
-
* Extract file format/extension from path
|
|
81
|
-
* @param path - File path
|
|
82
|
-
* @returns File extension without dot (e.g., 'ts', 'py') or undefined
|
|
83
|
-
*/
|
|
84
|
-
protected extractFormat(path: string): string | undefined;
|
|
85
|
-
/**
|
|
86
|
-
* Detect programming language from file extension
|
|
87
|
-
* @param path - File path
|
|
88
|
-
* @returns Language name (e.g., 'typescript', 'python') or undefined
|
|
89
|
-
*/
|
|
90
|
-
protected detectLanguage(path: string): string | undefined;
|
|
91
|
-
/**
|
|
92
|
-
* Build aggregated tool usage summary from detailed tool calls
|
|
93
|
-
* Aggregates: count, success/error counts, file operation type counts
|
|
94
|
-
* @param toolCalls - Array of detailed tool call metrics
|
|
95
|
-
* @returns Array of aggregated summaries per tool
|
|
96
|
-
*/
|
|
97
|
-
protected buildToolUsageSummary(toolCalls: ToolCallMetric[]): ToolUsageSummary[];
|
|
98
|
-
/**
|
|
99
|
-
* Parse sessions path template into segments
|
|
100
|
-
* Handles both static segments and dynamic placeholders
|
|
101
|
-
*
|
|
102
|
-
* @returns Array of path segments
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* // Claude: 'projects' → ['projects']
|
|
106
|
-
* parseSessionsTemplate()
|
|
107
|
-
*
|
|
108
|
-
* @example
|
|
109
|
-
* // Gemini: 'tmp/{projectHash}/chats' → ['tmp', '{projectHash}', 'chats']
|
|
110
|
-
* parseSessionsTemplate()
|
|
111
|
-
*/
|
|
112
|
-
protected parseSessionsTemplate(): string[];
|
|
113
|
-
/**
|
|
114
|
-
* Check if a segment is a dynamic placeholder
|
|
115
|
-
* Placeholders are enclosed in curly braces: {placeholderName}
|
|
116
|
-
*
|
|
117
|
-
* @param segment - Path segment to check
|
|
118
|
-
* @returns true if segment is a dynamic placeholder
|
|
119
|
-
*
|
|
120
|
-
* @example
|
|
121
|
-
* isDynamicSegment('{projectHash}') // Returns: true
|
|
122
|
-
* isDynamicSegment('tmp') // Returns: false
|
|
123
|
-
*/
|
|
124
|
-
protected isDynamicSegment(segment: string): boolean;
|
|
125
|
-
/**
|
|
126
|
-
* Validate that a path matches the sessions template structure
|
|
127
|
-
* Handles both static segments (must match exactly) and dynamic placeholders (any value)
|
|
128
|
-
*
|
|
129
|
-
* Cross-platform: uses splitPath() which normalizes separators
|
|
130
|
-
*
|
|
131
|
-
* @param path - File path to validate
|
|
132
|
-
* @returns true if path matches template structure
|
|
133
|
-
*
|
|
134
|
-
* @example
|
|
135
|
-
* // Gemini with sessions: 'tmp/{projectHash}/chats'
|
|
136
|
-
* matchesSessionsStructure('~/.gemini/tmp/abc123/chats/session.json')
|
|
137
|
-
* // Returns: true (tmp=static, abc123=dynamic, chats=static)
|
|
138
|
-
*
|
|
139
|
-
* @example
|
|
140
|
-
* // Claude with sessions: 'projects'
|
|
141
|
-
* matchesSessionsStructure('~/.claude/projects/hash/file.jsonl')
|
|
142
|
-
* // Returns: true (projects=static)
|
|
143
|
-
*/
|
|
144
|
-
protected matchesSessionsStructure(path: string): boolean;
|
|
145
|
-
/**
|
|
146
|
-
* Extract value of a dynamic placeholder from path
|
|
147
|
-
* Finds placeholder in sessions template and extracts corresponding value from path
|
|
148
|
-
*
|
|
149
|
-
* @param path - File path containing placeholder value
|
|
150
|
-
* @param placeholderName - Name of placeholder (without braces)
|
|
151
|
-
* @returns Extracted value or null if placeholder not found
|
|
152
|
-
*
|
|
153
|
-
* @example
|
|
154
|
-
* // Gemini with sessions: 'tmp/{projectHash}/chats'
|
|
155
|
-
* extractPlaceholder('~/.gemini/tmp/abc123/chats/file.json', 'projectHash')
|
|
156
|
-
* // Returns: 'abc123'
|
|
157
|
-
*
|
|
158
|
-
* @example
|
|
159
|
-
* // Claude has no placeholders
|
|
160
|
-
* extractPlaceholder('~/.claude/projects/hash/file.jsonl', 'hash')
|
|
161
|
-
* // Returns: null (no {hash} placeholder in template)
|
|
162
|
-
*/
|
|
163
|
-
protected extractPlaceholder(path: string, placeholderName: string): string | null;
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=BaseMetricsAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMetricsAdapter.d.ts","sourceRoot":"","sources":["../../../src/agents/core/BaseMetricsAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,8BAAsB,kBAAmB,YAAW,mBAAmB;IAEnE,SAAS,CAAC,SAAS,EAAE,MAAM;IAC3B,SAAS,CAAC,QAAQ,CAAC,EAAE,aAAa;gBADxB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,aAAa,YAAA;IAGpC;;;OAGG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM;IAO9B;;;OAGG;IACH,SAAS,CAAC,cAAc,IAAI,MAAM;IAMlC;;;OAGG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM;IAQtC;;;OAGG;IACH,SAAS,CAAC,eAAe,IAAI,MAAM;IAQnC;;OAEG;IACH,YAAY,IAAI;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;IAYD;;OAEG;IACH,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAErD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAE/C;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAEhE;;;;OAIG;IACG,uBAAuB,CAC3B,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,EAChC,wBAAwB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACrC,OAAO,CAAC;QACT,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC;IAKF;;;;OAIG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,UAAU,EAAE,CAAC;IAKxB;;;OAGG;IACH,oBAAoB,IAAI,MAAM,GAAG,MAAM,GAAG,QAAQ;IAIlD;;;OAGG;IACH,YAAY,IAAI,MAAM;IAQtB;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKzD;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAyB1D;;;;;OAKG;IACH,SAAS,CAAC,qBAAqB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,gBAAgB,EAAE;IAqChF;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAO3C;;;;;;;;;;OAUG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpD;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IA2CzD;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CA6BnF"}
|
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base Metrics Adapter
|
|
3
|
-
*
|
|
4
|
-
* Generic implementation of AgentMetricsSupport interface.
|
|
5
|
-
* Provides default implementations that work for most agents.
|
|
6
|
-
* Agent plugins override only what's specific to them.
|
|
7
|
-
*/
|
|
8
|
-
import { join, extname } from 'path';
|
|
9
|
-
import { resolveHomeDir, splitPath } from '../../utils/paths.js';
|
|
10
|
-
export class BaseMetricsAdapter {
|
|
11
|
-
agentName;
|
|
12
|
-
metadata;
|
|
13
|
-
constructor(agentName, metadata) {
|
|
14
|
-
this.agentName = agentName;
|
|
15
|
-
this.metadata = metadata;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Get agent home directory (e.g., ~/.claude, ~/.codex, ~/.gemini)
|
|
19
|
-
* @returns Absolute path to agent home directory
|
|
20
|
-
*/
|
|
21
|
-
getHomeDir() {
|
|
22
|
-
if (!this.metadata?.dataPaths?.home) {
|
|
23
|
-
throw new Error(`${this.agentName}: metadata.dataPaths.home is not defined`);
|
|
24
|
-
}
|
|
25
|
-
return resolveHomeDir(this.metadata.dataPaths.home);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get sessions directory path
|
|
29
|
-
* @returns Absolute path to sessions directory
|
|
30
|
-
*/
|
|
31
|
-
getSessionsDir() {
|
|
32
|
-
const home = this.getHomeDir();
|
|
33
|
-
const sessions = this.metadata?.dataPaths?.sessions || '';
|
|
34
|
-
return join(home, sessions);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Get user prompts file path
|
|
38
|
-
* @returns Absolute path to user prompts history file
|
|
39
|
-
*/
|
|
40
|
-
getUserPromptsPath() {
|
|
41
|
-
if (!this.metadata?.dataPaths?.user_prompts) {
|
|
42
|
-
throw new Error(`${this.agentName}: metadata.dataPaths.user_prompts is not defined`);
|
|
43
|
-
}
|
|
44
|
-
const home = this.getHomeDir();
|
|
45
|
-
return join(home, this.metadata.dataPaths.user_prompts);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get settings file path
|
|
49
|
-
* @returns Absolute path to settings file
|
|
50
|
-
*/
|
|
51
|
-
getSettingsPath() {
|
|
52
|
-
if (!this.metadata?.dataPaths?.settings) {
|
|
53
|
-
throw new Error(`${this.agentName}: metadata.dataPaths.settings is not defined`);
|
|
54
|
-
}
|
|
55
|
-
const home = this.getHomeDir();
|
|
56
|
-
return join(home, this.metadata.dataPaths.settings);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Get data paths - can be overridden or uses metadata.dataPaths
|
|
60
|
-
*/
|
|
61
|
-
getDataPaths() {
|
|
62
|
-
if (this.metadata?.dataPaths) {
|
|
63
|
-
return {
|
|
64
|
-
sessionsDir: this.getSessionsDir(),
|
|
65
|
-
settingsDir: this.getHomeDir()
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
// Fallback: must be overridden
|
|
69
|
-
throw new Error(`${this.agentName}: getDataPaths() must be implemented or metadata.dataPaths must be provided`);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Parse incremental metrics from session file
|
|
73
|
-
* Returns only new deltas, skipping already-processed record IDs
|
|
74
|
-
* MUST be overridden if delta-based metrics are used
|
|
75
|
-
*/
|
|
76
|
-
async parseIncrementalMetrics(_path, _processedRecordIds, _attachedUserPromptTexts) {
|
|
77
|
-
// Default implementation: not supported
|
|
78
|
-
throw new Error(`${this.agentName}: parseIncrementalMetrics() not implemented`);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get user prompts for a specific session
|
|
82
|
-
* Each agent implements this to parse their specific history format
|
|
83
|
-
* MUST be overridden by each agent adapter
|
|
84
|
-
*/
|
|
85
|
-
async getUserPrompts(_sessionId, _fromTimestamp, _toTimestamp) {
|
|
86
|
-
// Default implementation: not supported
|
|
87
|
-
throw new Error(`${this.agentName}: getUserPrompts() not implemented`);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Get watermark strategy - default: hash
|
|
91
|
-
* Override if agent uses different strategy
|
|
92
|
-
*/
|
|
93
|
-
getWatermarkStrategy() {
|
|
94
|
-
return 'hash'; // Default: full-file hash
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get initialization delay - default: 1000ms
|
|
98
|
-
* Override if agent needs different delay
|
|
99
|
-
*/
|
|
100
|
-
getInitDelay() {
|
|
101
|
-
return 1000; // Default: 1000ms
|
|
102
|
-
}
|
|
103
|
-
// ==========================================
|
|
104
|
-
// Shared Utility Methods
|
|
105
|
-
// ==========================================
|
|
106
|
-
/**
|
|
107
|
-
* Extract file format/extension from path
|
|
108
|
-
* @param path - File path
|
|
109
|
-
* @returns File extension without dot (e.g., 'ts', 'py') or undefined
|
|
110
|
-
*/
|
|
111
|
-
extractFormat(path) {
|
|
112
|
-
const ext = extname(path);
|
|
113
|
-
return ext ? ext.slice(1) : undefined;
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Detect programming language from file extension
|
|
117
|
-
* @param path - File path
|
|
118
|
-
* @returns Language name (e.g., 'typescript', 'python') or undefined
|
|
119
|
-
*/
|
|
120
|
-
detectLanguage(path) {
|
|
121
|
-
const ext = extname(path).toLowerCase();
|
|
122
|
-
const langMap = {
|
|
123
|
-
'.ts': 'typescript',
|
|
124
|
-
'.tsx': 'typescript',
|
|
125
|
-
'.js': 'javascript',
|
|
126
|
-
'.jsx': 'javascript',
|
|
127
|
-
'.py': 'python',
|
|
128
|
-
'.java': 'java',
|
|
129
|
-
'.go': 'go',
|
|
130
|
-
'.rs': 'rust',
|
|
131
|
-
'.cpp': 'cpp',
|
|
132
|
-
'.c': 'c',
|
|
133
|
-
'.rb': 'ruby',
|
|
134
|
-
'.php': 'php',
|
|
135
|
-
'.swift': 'swift',
|
|
136
|
-
'.kt': 'kotlin',
|
|
137
|
-
'.md': 'markdown',
|
|
138
|
-
'.json': 'json',
|
|
139
|
-
'.yaml': 'yaml',
|
|
140
|
-
'.yml': 'yaml'
|
|
141
|
-
};
|
|
142
|
-
return langMap[ext];
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Build aggregated tool usage summary from detailed tool calls
|
|
146
|
-
* Aggregates: count, success/error counts, file operation type counts
|
|
147
|
-
* @param toolCalls - Array of detailed tool call metrics
|
|
148
|
-
* @returns Array of aggregated summaries per tool
|
|
149
|
-
*/
|
|
150
|
-
buildToolUsageSummary(toolCalls) {
|
|
151
|
-
const summaryMap = new Map();
|
|
152
|
-
for (const call of toolCalls) {
|
|
153
|
-
let summary = summaryMap.get(call.name);
|
|
154
|
-
if (!summary) {
|
|
155
|
-
summary = {
|
|
156
|
-
name: call.name,
|
|
157
|
-
count: 0,
|
|
158
|
-
successCount: 0,
|
|
159
|
-
errorCount: 0,
|
|
160
|
-
fileOperations: {}
|
|
161
|
-
};
|
|
162
|
-
summaryMap.set(call.name, summary);
|
|
163
|
-
}
|
|
164
|
-
summary.count++;
|
|
165
|
-
if (call.status === 'success') {
|
|
166
|
-
summary.successCount++;
|
|
167
|
-
}
|
|
168
|
-
else if (call.status === 'error') {
|
|
169
|
-
summary.errorCount++;
|
|
170
|
-
}
|
|
171
|
-
// Aggregate file operations by type
|
|
172
|
-
if (call.fileOperation) {
|
|
173
|
-
const opType = call.fileOperation.type;
|
|
174
|
-
summary.fileOperations[opType] = (summary.fileOperations[opType] || 0) + 1;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
return Array.from(summaryMap.values());
|
|
178
|
-
}
|
|
179
|
-
// ==========================================
|
|
180
|
-
// Template-Based Path Matching
|
|
181
|
-
// ==========================================
|
|
182
|
-
/**
|
|
183
|
-
* Parse sessions path template into segments
|
|
184
|
-
* Handles both static segments and dynamic placeholders
|
|
185
|
-
*
|
|
186
|
-
* @returns Array of path segments
|
|
187
|
-
*
|
|
188
|
-
* @example
|
|
189
|
-
* // Claude: 'projects' → ['projects']
|
|
190
|
-
* parseSessionsTemplate()
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* // Gemini: 'tmp/{projectHash}/chats' → ['tmp', '{projectHash}', 'chats']
|
|
194
|
-
* parseSessionsTemplate()
|
|
195
|
-
*/
|
|
196
|
-
parseSessionsTemplate() {
|
|
197
|
-
if (!this.metadata?.dataPaths?.sessions) {
|
|
198
|
-
return [];
|
|
199
|
-
}
|
|
200
|
-
return this.metadata.dataPaths.sessions.split('/').filter(Boolean);
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Check if a segment is a dynamic placeholder
|
|
204
|
-
* Placeholders are enclosed in curly braces: {placeholderName}
|
|
205
|
-
*
|
|
206
|
-
* @param segment - Path segment to check
|
|
207
|
-
* @returns true if segment is a dynamic placeholder
|
|
208
|
-
*
|
|
209
|
-
* @example
|
|
210
|
-
* isDynamicSegment('{projectHash}') // Returns: true
|
|
211
|
-
* isDynamicSegment('tmp') // Returns: false
|
|
212
|
-
*/
|
|
213
|
-
isDynamicSegment(segment) {
|
|
214
|
-
return segment.startsWith('{') && segment.endsWith('}');
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Validate that a path matches the sessions template structure
|
|
218
|
-
* Handles both static segments (must match exactly) and dynamic placeholders (any value)
|
|
219
|
-
*
|
|
220
|
-
* Cross-platform: uses splitPath() which normalizes separators
|
|
221
|
-
*
|
|
222
|
-
* @param path - File path to validate
|
|
223
|
-
* @returns true if path matches template structure
|
|
224
|
-
*
|
|
225
|
-
* @example
|
|
226
|
-
* // Gemini with sessions: 'tmp/{projectHash}/chats'
|
|
227
|
-
* matchesSessionsStructure('~/.gemini/tmp/abc123/chats/session.json')
|
|
228
|
-
* // Returns: true (tmp=static, abc123=dynamic, chats=static)
|
|
229
|
-
*
|
|
230
|
-
* @example
|
|
231
|
-
* // Claude with sessions: 'projects'
|
|
232
|
-
* matchesSessionsStructure('~/.claude/projects/hash/file.jsonl')
|
|
233
|
-
* // Returns: true (projects=static)
|
|
234
|
-
*/
|
|
235
|
-
matchesSessionsStructure(path) {
|
|
236
|
-
if (!this.metadata?.dataPaths?.home) {
|
|
237
|
-
return false;
|
|
238
|
-
}
|
|
239
|
-
const baseDir = this.metadata.dataPaths.home;
|
|
240
|
-
const sessionsParts = this.parseSessionsTemplate();
|
|
241
|
-
if (sessionsParts.length === 0) {
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
|
-
// Split path using cross-platform utility
|
|
245
|
-
const parts = splitPath(path);
|
|
246
|
-
const baseIndex = parts.findIndex(p => p === baseDir);
|
|
247
|
-
if (baseIndex === -1) {
|
|
248
|
-
return false;
|
|
249
|
-
}
|
|
250
|
-
// Validate each segment in template
|
|
251
|
-
for (let i = 0; i < sessionsParts.length; i++) {
|
|
252
|
-
const expectedSegment = sessionsParts[i];
|
|
253
|
-
const actualSegment = parts[baseIndex + 1 + i];
|
|
254
|
-
if (!actualSegment) {
|
|
255
|
-
return false; // Missing segment
|
|
256
|
-
}
|
|
257
|
-
// Skip validation for dynamic placeholders (any value accepted)
|
|
258
|
-
if (this.isDynamicSegment(expectedSegment)) {
|
|
259
|
-
continue;
|
|
260
|
-
}
|
|
261
|
-
// Validate static segments (must match exactly)
|
|
262
|
-
if (actualSegment !== expectedSegment) {
|
|
263
|
-
return false;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
return true;
|
|
267
|
-
}
|
|
268
|
-
/**
|
|
269
|
-
* Extract value of a dynamic placeholder from path
|
|
270
|
-
* Finds placeholder in sessions template and extracts corresponding value from path
|
|
271
|
-
*
|
|
272
|
-
* @param path - File path containing placeholder value
|
|
273
|
-
* @param placeholderName - Name of placeholder (without braces)
|
|
274
|
-
* @returns Extracted value or null if placeholder not found
|
|
275
|
-
*
|
|
276
|
-
* @example
|
|
277
|
-
* // Gemini with sessions: 'tmp/{projectHash}/chats'
|
|
278
|
-
* extractPlaceholder('~/.gemini/tmp/abc123/chats/file.json', 'projectHash')
|
|
279
|
-
* // Returns: 'abc123'
|
|
280
|
-
*
|
|
281
|
-
* @example
|
|
282
|
-
* // Claude has no placeholders
|
|
283
|
-
* extractPlaceholder('~/.claude/projects/hash/file.jsonl', 'hash')
|
|
284
|
-
* // Returns: null (no {hash} placeholder in template)
|
|
285
|
-
*/
|
|
286
|
-
extractPlaceholder(path, placeholderName) {
|
|
287
|
-
const sessionsParts = this.parseSessionsTemplate();
|
|
288
|
-
const baseDir = this.metadata?.dataPaths?.home;
|
|
289
|
-
if (!baseDir) {
|
|
290
|
-
return null;
|
|
291
|
-
}
|
|
292
|
-
// Find placeholder index in template
|
|
293
|
-
// Example: ['tmp', '{projectHash}', 'chats'] → index 1 for 'projectHash'
|
|
294
|
-
const placeholderIndex = sessionsParts.findIndex(part => part === `{${placeholderName}}`);
|
|
295
|
-
if (placeholderIndex === -1) {
|
|
296
|
-
return null; // Placeholder not in template
|
|
297
|
-
}
|
|
298
|
-
// Extract value at that position in path
|
|
299
|
-
const parts = splitPath(path);
|
|
300
|
-
const baseIndex = parts.findIndex(p => p === baseDir);
|
|
301
|
-
if (baseIndex === -1) {
|
|
302
|
-
return null;
|
|
303
|
-
}
|
|
304
|
-
const valueIndex = baseIndex + 1 + placeholderIndex;
|
|
305
|
-
return parts[valueIndex] || null;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
//# sourceMappingURL=BaseMetricsAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseMetricsAdapter.js","sourceRoot":"","sources":["../../../src/agents/core/BaseMetricsAdapter.ts"],"names":[],"mappings":"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"}
|