@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,220 @@
|
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { MigrationRegistry } from './registry.js';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
import { getCodemieHome } from '../utils/paths.js';
|
|
6
|
+
/**
|
|
7
|
+
* Migration 002: Consolidate session storage
|
|
8
|
+
*
|
|
9
|
+
* Migrates session files from old structure to new consolidated structure:
|
|
10
|
+
* - OLD: ~/.codemie/sessions/*.json + *.jsonl
|
|
11
|
+
* - OLD: ~/.codemie/conversations/sessions/*.jsonl
|
|
12
|
+
* - NEW: ~/.codemie/sessions/*.json + *.jsonl (all files)
|
|
13
|
+
*/
|
|
14
|
+
class ConsolidateSessionsMigration {
|
|
15
|
+
id = '002-consolidate-sessions';
|
|
16
|
+
description = 'Consolidate session storage under ~/.codemie/sessions/';
|
|
17
|
+
minVersion = '0.0.28';
|
|
18
|
+
CODEMIE_HOME = getCodemieHome();
|
|
19
|
+
OLD_METRICS_DIR = path.join(this.CODEMIE_HOME, 'metrics', 'sessions');
|
|
20
|
+
OLD_CONVERSATIONS_DIR = path.join(this.CODEMIE_HOME, 'conversations', 'sessions');
|
|
21
|
+
NEW_SESSIONS_DIR = path.join(this.CODEMIE_HOME, 'sessions');
|
|
22
|
+
async up() {
|
|
23
|
+
logger.info('[002-consolidate-sessions] consolidate: phase=start');
|
|
24
|
+
let metricsCount = 0;
|
|
25
|
+
let conversationsCount = 0;
|
|
26
|
+
// Migrate metrics sessions
|
|
27
|
+
const metricsResult = await this.migrateDirectory(this.OLD_METRICS_DIR, 'metrics');
|
|
28
|
+
metricsCount = metricsResult.count;
|
|
29
|
+
// Migrate conversation sessions
|
|
30
|
+
const conversationsResult = await this.migrateDirectory(this.OLD_CONVERSATIONS_DIR, 'conversations');
|
|
31
|
+
conversationsCount = conversationsResult.count;
|
|
32
|
+
const totalMigrated = metricsCount + conversationsCount;
|
|
33
|
+
// Clean up empty directories
|
|
34
|
+
if (totalMigrated > 0) {
|
|
35
|
+
await this.cleanupEmptyDirectories();
|
|
36
|
+
}
|
|
37
|
+
if (totalMigrated > 0) {
|
|
38
|
+
logger.info(`[002-consolidate-sessions] consolidate: phase=complete migrated=${totalMigrated} metrics=${metricsCount} conversations=${conversationsCount}`);
|
|
39
|
+
return {
|
|
40
|
+
success: true,
|
|
41
|
+
migrated: true,
|
|
42
|
+
details: {
|
|
43
|
+
metrics: metricsCount,
|
|
44
|
+
conversations: conversationsCount,
|
|
45
|
+
total: totalMigrated
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
logger.debug('[002-consolidate-sessions] consolidate: phase=complete reason=no_files');
|
|
50
|
+
return {
|
|
51
|
+
success: true,
|
|
52
|
+
migrated: false,
|
|
53
|
+
reason: 'no-old-sessions'
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Migrate all files from source directory to new sessions directory
|
|
58
|
+
*/
|
|
59
|
+
async migrateDirectory(sourceDir, type) {
|
|
60
|
+
logger.debug(`[002-consolidate-sessions] migrate_dir: type=${type} source=${sourceDir}`);
|
|
61
|
+
// Check if source directory exists
|
|
62
|
+
if (!await this.directoryExists(sourceDir)) {
|
|
63
|
+
logger.debug(`[002-consolidate-sessions] migrate_dir: type=${type} status=skip reason=not_found`);
|
|
64
|
+
return { count: 0 };
|
|
65
|
+
}
|
|
66
|
+
// Ensure destination directory exists
|
|
67
|
+
await fs.mkdir(this.NEW_SESSIONS_DIR, { recursive: true });
|
|
68
|
+
// List all files in source directory
|
|
69
|
+
const files = await fs.readdir(sourceDir);
|
|
70
|
+
logger.debug(`[002-consolidate-sessions] migrate_dir: type=${type} files_found=${files.length}`);
|
|
71
|
+
let migratedCount = 0;
|
|
72
|
+
for (const file of files) {
|
|
73
|
+
// Skip non-session files
|
|
74
|
+
if (!this.isSessionFile(file)) {
|
|
75
|
+
logger.debug(`[002-consolidate-sessions] skip: type=${type} file=${file} reason=not_session_file`);
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const sourcePath = path.join(sourceDir, file);
|
|
79
|
+
const destPath = path.join(this.NEW_SESSIONS_DIR, file);
|
|
80
|
+
// Check if destination file already exists
|
|
81
|
+
if (await this.fileExists(destPath)) {
|
|
82
|
+
// File already exists in new location - check if we should merge or skip
|
|
83
|
+
const shouldMigrate = await this.shouldMigrateFile(sourcePath, destPath);
|
|
84
|
+
if (!shouldMigrate) {
|
|
85
|
+
logger.debug(`[002-consolidate-sessions] skip: type=${type} file=${file} reason=already_exists`);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Move file to new location
|
|
90
|
+
try {
|
|
91
|
+
await fs.rename(sourcePath, destPath);
|
|
92
|
+
logger.debug(`[002-consolidate-sessions] move: type=${type} file=${file} status=success`);
|
|
93
|
+
migratedCount++;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
logger.error(`[002-consolidate-sessions] move: type=${type} file=${file} status=error`, error);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
logger.info(`[002-consolidate-sessions] migrate_dir: type=${type} status=complete migrated=${migratedCount}`);
|
|
100
|
+
return { count: migratedCount };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Clean up empty directories after migration
|
|
104
|
+
*/
|
|
105
|
+
async cleanupEmptyDirectories() {
|
|
106
|
+
logger.debug('[002-consolidate-sessions] cleanup: phase=start');
|
|
107
|
+
// Try to remove old directories if they're empty
|
|
108
|
+
for (const dir of [this.OLD_METRICS_DIR, this.OLD_CONVERSATIONS_DIR]) {
|
|
109
|
+
try {
|
|
110
|
+
const isEmpty = await this.isDirectoryEmpty(dir);
|
|
111
|
+
if (isEmpty) {
|
|
112
|
+
await fs.rmdir(dir);
|
|
113
|
+
logger.debug(`[002-consolidate-sessions] cleanup: removed_dir=${dir}`);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
logger.debug(`[002-consolidate-sessions] cleanup: skipped_dir=${dir} reason=not_empty`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Ignore errors - directory might not exist or have permissions issues
|
|
121
|
+
logger.debug(`[002-consolidate-sessions] cleanup: skipped_dir=${dir} reason=error`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Try to remove parent directories if they're empty
|
|
125
|
+
try {
|
|
126
|
+
const metricsParent = path.dirname(this.OLD_METRICS_DIR);
|
|
127
|
+
const isEmpty = await this.isDirectoryEmpty(metricsParent);
|
|
128
|
+
if (isEmpty) {
|
|
129
|
+
await fs.rmdir(metricsParent);
|
|
130
|
+
logger.debug(`[002-consolidate-sessions] cleanup: removed_dir=${metricsParent}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// Ignore
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const conversationsParent = path.dirname(this.OLD_CONVERSATIONS_DIR);
|
|
138
|
+
const isEmpty = await this.isDirectoryEmpty(conversationsParent);
|
|
139
|
+
if (isEmpty) {
|
|
140
|
+
await fs.rmdir(conversationsParent);
|
|
141
|
+
logger.debug(`[002-consolidate-sessions] cleanup: removed_dir=${conversationsParent}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// Ignore
|
|
146
|
+
}
|
|
147
|
+
logger.debug('[002-consolidate-sessions] cleanup: phase=complete');
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if directory is empty
|
|
151
|
+
*/
|
|
152
|
+
async isDirectoryEmpty(dirPath) {
|
|
153
|
+
try {
|
|
154
|
+
const files = await fs.readdir(dirPath);
|
|
155
|
+
return files.length === 0;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Check if file is a session file (*.json or *.jsonl)
|
|
163
|
+
*/
|
|
164
|
+
isSessionFile(filename) {
|
|
165
|
+
return filename.endsWith('.json') || filename.endsWith('.jsonl');
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Determine if we should migrate a file when destination already exists
|
|
169
|
+
* Strategy: Compare file sizes - migrate if source is newer/larger
|
|
170
|
+
*/
|
|
171
|
+
async shouldMigrateFile(sourcePath, destPath) {
|
|
172
|
+
try {
|
|
173
|
+
const [sourceStats, destStats] = await Promise.all([
|
|
174
|
+
fs.stat(sourcePath),
|
|
175
|
+
fs.stat(destPath)
|
|
176
|
+
]);
|
|
177
|
+
// If source is newer and larger, migrate it
|
|
178
|
+
if (sourceStats.mtime > destStats.mtime && sourceStats.size > destStats.size) {
|
|
179
|
+
logger.debug(`[002-consolidate-sessions] compare: source_newer=true source_larger=true decision=migrate`);
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
// Otherwise, keep destination file
|
|
183
|
+
logger.debug(`[002-consolidate-sessions] compare: source_newer=${sourceStats.mtime > destStats.mtime} source_larger=${sourceStats.size > destStats.size} decision=skip`);
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
logger.debug('[002-consolidate-sessions] compare: status=error decision=skip', error);
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check if directory exists
|
|
193
|
+
*/
|
|
194
|
+
async directoryExists(dirPath) {
|
|
195
|
+
try {
|
|
196
|
+
const stats = await fs.stat(dirPath);
|
|
197
|
+
return stats.isDirectory();
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Check if file exists
|
|
205
|
+
*/
|
|
206
|
+
async fileExists(filePath) {
|
|
207
|
+
try {
|
|
208
|
+
await fs.access(filePath);
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Auto-register the migration
|
|
217
|
+
MigrationRegistry.register(new ConsolidateSessionsMigration());
|
|
218
|
+
// Export for testing
|
|
219
|
+
export { ConsolidateSessionsMigration };
|
|
220
|
+
//# sourceMappingURL=002-consolidate-sessions.migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"002-consolidate-sessions.migration.js","sourceRoot":"","sources":["../../src/migrations/002-consolidate-sessions.migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,4 +19,5 @@ export { MigrationRegistry } from './registry.js';
|
|
|
19
19
|
export { MigrationTracker } from './tracker.js';
|
|
20
20
|
export type { Migration, MigrationResult, MigrationRecord, MigrationHistory } from './types.js';
|
|
21
21
|
import './001-config-rename.migration.js';
|
|
22
|
+
import './002-consolidate-sessions.migration.js';
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhG,OAAO,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGhG,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yCAAyC,CAAC"}
|
package/dist/migrations/index.js
CHANGED
|
@@ -20,7 +20,8 @@ export { MigrationRegistry } from './registry.js';
|
|
|
20
20
|
export { MigrationTracker } from './tracker.js';
|
|
21
21
|
// Import all migrations (auto-registers them)
|
|
22
22
|
import './001-config-rename.migration.js';
|
|
23
|
+
import './002-consolidate-sessions.migration.js';
|
|
23
24
|
// Future migrations will be imported here:
|
|
24
|
-
// import './
|
|
25
|
-
// import './
|
|
25
|
+
// import './003-add-analytics.migration.js';
|
|
26
|
+
// import './004-restructure-profiles.migration.js';
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,8CAA8C;AAC9C,OAAO,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,8CAA8C;AAC9C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,yCAAyC,CAAC;AAEjD,2CAA2C;AAC3C,6CAA6C;AAC7C,oDAAoD"}
|
|
@@ -70,7 +70,7 @@ export interface ProviderTemplate {
|
|
|
70
70
|
exportEnvVars?: (config: CodeMieConfigOptions) => Record<string, string>;
|
|
71
71
|
/**
|
|
72
72
|
* Provider-specific hooks for agents
|
|
73
|
-
* Key = agent name ('claude', '
|
|
73
|
+
* Key = agent name ('claude', 'gemini')
|
|
74
74
|
* Value = lifecycle hooks for that agent
|
|
75
75
|
*
|
|
76
76
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"ollama.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,cAAc,kBAsDzB,CAAC"}
|
|
@@ -25,15 +25,7 @@ export const OllamaTemplate = registerProvider({
|
|
|
25
25
|
supportsModelInstallation: true,
|
|
26
26
|
healthCheckEndpoint: '/api/version',
|
|
27
27
|
// Agent lifecycle hooks
|
|
28
|
-
agentHooks: {
|
|
29
|
-
// Codex-specific hook: Ollama uses "chat" API (not "responses")
|
|
30
|
-
'codex': {
|
|
31
|
-
beforeRun: async (env) => {
|
|
32
|
-
env.CODEMIE_CODEX_WIRE_API = 'chat';
|
|
33
|
-
return env;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
},
|
|
28
|
+
agentHooks: {},
|
|
37
29
|
setupInstructions: `
|
|
38
30
|
# Ollama Setup Instructions
|
|
39
31
|
|
|
@@ -52,7 +44,7 @@ Download from: https://ollama.com/download
|
|
|
52
44
|
|
|
53
45
|
## Recommended Coding Models (Tool Support Required)
|
|
54
46
|
|
|
55
|
-
**Important**:
|
|
47
|
+
**Important**: Some agents require models with function calling/tool support.
|
|
56
48
|
|
|
57
49
|
- **qwen2.5-coder**: Excellent for coding tasks with tool support (7B, ~5GB)
|
|
58
50
|
- **qwen3-vl:235b-cloud**: Latest Qwen with vision and tool support (235B)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,0BAA0B;KAC3B;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IAEnC,wBAAwB;IACxB,UAAU,EAAE
|
|
1
|
+
{"version":3,"file":"ollama.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/ollama/ollama.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAmB;IAC/D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,2EAA2E;IACxF,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,wBAAwB;IACxC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,iBAAiB,EAAE;QACjB,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,0BAA0B;KAC3B;IACD,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,CAAC;IACtE,yBAAyB,EAAE,IAAI;IAC/B,mBAAmB,EAAE,cAAc;IAEnC,wBAAwB;IACxB,UAAU,EAAE,EAAE;IAEd,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCpB;CACA,CAAC,CAAC"}
|
|
@@ -9,7 +9,7 @@ export { CodeMieSSO } from './sso.auth.js';
|
|
|
9
9
|
export { SSOModelProxy } from './sso.models.js';
|
|
10
10
|
export { SSOHealthCheck } from './sso.health.js';
|
|
11
11
|
export { SSOSetupSteps } from './sso.setup-steps.js';
|
|
12
|
-
export { MetricsSender } from './
|
|
12
|
+
export { MetricsSender } from './session/processors/metrics/metrics-api-client.js';
|
|
13
13
|
export { CodeMieProxy } from './proxy/sso.proxy.js';
|
|
14
14
|
export type { ProxyConfig } from './proxy/proxy-types.js';
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AAGnF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -10,7 +10,7 @@ export { SSOModelProxy } from './sso.models.js';
|
|
|
10
10
|
export { SSOHealthCheck } from './sso.health.js';
|
|
11
11
|
export { SSOSetupSteps } from './sso.setup-steps.js';
|
|
12
12
|
// SSO Capabilities (metrics transmission)
|
|
13
|
-
export { MetricsSender } from './
|
|
13
|
+
export { MetricsSender } from './session/processors/metrics/metrics-api-client.js';
|
|
14
14
|
// SSO Proxy (HTTP proxy with plugins)
|
|
15
15
|
export { CodeMieProxy } from './proxy/sso.proxy.js';
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,0CAA0C;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oDAAoD,CAAC;AAEnF,sCAAsC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -14,7 +14,7 @@ import { LoggingPlugin } from './logging.plugin.js';
|
|
|
14
14
|
*/
|
|
15
15
|
export declare function registerCorePlugins(): void;
|
|
16
16
|
export { EndpointBlockerPlugin, SSOAuthPlugin, HeaderInjectionPlugin, LoggingPlugin };
|
|
17
|
-
export {
|
|
17
|
+
export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
|
|
18
18
|
export { getPluginRegistry, resetPluginRegistry } from './registry.js';
|
|
19
19
|
export * from './types.js';
|
|
20
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAS1C;AAMD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAS1C;AAMD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
|
|
@@ -9,7 +9,7 @@ import { EndpointBlockerPlugin } from './endpoint-blocker.plugin.js';
|
|
|
9
9
|
import { SSOAuthPlugin } from './sso-auth.plugin.js';
|
|
10
10
|
import { HeaderInjectionPlugin } from './header-injection.plugin.js';
|
|
11
11
|
import { LoggingPlugin } from './logging.plugin.js';
|
|
12
|
-
import {
|
|
12
|
+
import { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
|
|
13
13
|
/**
|
|
14
14
|
* Register core plugins
|
|
15
15
|
* Called at app startup
|
|
@@ -21,13 +21,13 @@ export function registerCorePlugins() {
|
|
|
21
21
|
registry.register(new SSOAuthPlugin());
|
|
22
22
|
registry.register(new HeaderInjectionPlugin());
|
|
23
23
|
registry.register(new LoggingPlugin()); // Always enabled - logs to log files at INFO level
|
|
24
|
-
registry.register(new
|
|
24
|
+
registry.register(new SSOSessionSyncPlugin()); // Priority 100 - syncs sessions via multiple processors
|
|
25
25
|
}
|
|
26
26
|
// Auto-register on import
|
|
27
27
|
registerCorePlugins();
|
|
28
28
|
// Re-export for convenience
|
|
29
29
|
export { EndpointBlockerPlugin, SSOAuthPlugin, HeaderInjectionPlugin, LoggingPlugin };
|
|
30
|
-
export {
|
|
30
|
+
export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
|
|
31
31
|
export { getPluginRegistry, resetPluginRegistry } from './registry.js';
|
|
32
32
|
export * from './types.js';
|
|
33
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IAErC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,+CAA+C;IAC/F,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,mDAAmD;IAC3F,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC,CAAC,wDAAwD;AACzG,CAAC;AAED,0BAA0B;AAC1B,mBAAmB,EAAE,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSO Session Sync Plugin (Unified)
|
|
3
|
+
* Priority: 100 (replaces metrics and conversations sync plugins)
|
|
4
|
+
*
|
|
5
|
+
* Purpose: Unified orchestrator that syncs session data via multiple processors
|
|
6
|
+
* - Runs only in SSO mode (ai-run-sso provider)
|
|
7
|
+
* - Background timer (every 5 minutes)
|
|
8
|
+
* - Discovers session files once via adapter
|
|
9
|
+
* - Passes parsed sessions to all processors (metrics, conversations)
|
|
10
|
+
* - Tracks processed sessions in unified store
|
|
11
|
+
* - Final sync on proxy shutdown
|
|
12
|
+
*
|
|
13
|
+
* Architecture Benefits:
|
|
14
|
+
* - Zero duplication: Sessions read once, processed multiple times
|
|
15
|
+
* - Pluggable: Add processors without modifying plugin
|
|
16
|
+
* - Agent-agnostic: Supports Claude, Gemini via adapters
|
|
17
|
+
* - Reusable: Shared utilities for discovery and I/O
|
|
18
|
+
*
|
|
19
|
+
* SOLID: Single responsibility = orchestrate session sync across processors
|
|
20
|
+
* KISS: Simple timer-based sync with pluggable processors
|
|
21
|
+
*/
|
|
22
|
+
import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
|
|
23
|
+
export declare class SSOSessionSyncPlugin implements ProxyPlugin {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
version: string;
|
|
27
|
+
priority: number;
|
|
28
|
+
createInterceptor(context: PluginContext): Promise<ProxyInterceptor>;
|
|
29
|
+
/**
|
|
30
|
+
* Check if session sync is enabled
|
|
31
|
+
* Priority: ENV > Profile config > Default (true)
|
|
32
|
+
*/
|
|
33
|
+
private isSyncEnabled;
|
|
34
|
+
/**
|
|
35
|
+
* Check if dry-run mode is enabled
|
|
36
|
+
* Priority: ENV > Profile config > Default (false)
|
|
37
|
+
*/
|
|
38
|
+
private isDryRunEnabled;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=sso.session-sync.plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sso.session-sync.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1E,qBAAa,oBAAqB,YAAW,WAAW;IACtD,EAAE,SAA+B;IACjC,IAAI,SAAgC;IACpC,OAAO,SAAW;IAClB,QAAQ,SAAO;IAET,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuC1E;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAgBxB"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSO Session Sync Plugin (Unified)
|
|
3
|
+
* Priority: 100 (replaces metrics and conversations sync plugins)
|
|
4
|
+
*
|
|
5
|
+
* Purpose: Unified orchestrator that syncs session data via multiple processors
|
|
6
|
+
* - Runs only in SSO mode (ai-run-sso provider)
|
|
7
|
+
* - Background timer (every 5 minutes)
|
|
8
|
+
* - Discovers session files once via adapter
|
|
9
|
+
* - Passes parsed sessions to all processors (metrics, conversations)
|
|
10
|
+
* - Tracks processed sessions in unified store
|
|
11
|
+
* - Final sync on proxy shutdown
|
|
12
|
+
*
|
|
13
|
+
* Architecture Benefits:
|
|
14
|
+
* - Zero duplication: Sessions read once, processed multiple times
|
|
15
|
+
* - Pluggable: Add processors without modifying plugin
|
|
16
|
+
* - Agent-agnostic: Supports Claude, Gemini via adapters
|
|
17
|
+
* - Reusable: Shared utilities for discovery and I/O
|
|
18
|
+
*
|
|
19
|
+
* SOLID: Single responsibility = orchestrate session sync across processors
|
|
20
|
+
* KISS: Simple timer-based sync with pluggable processors
|
|
21
|
+
*/
|
|
22
|
+
import { logger } from '../../../../../utils/logger.js';
|
|
23
|
+
import { SessionSyncer } from '../../session/SessionSyncer.js';
|
|
24
|
+
export class SSOSessionSyncPlugin {
|
|
25
|
+
id = '@codemie/sso-session-sync';
|
|
26
|
+
name = 'SSO Session Sync (Unified)';
|
|
27
|
+
version = '1.0.0';
|
|
28
|
+
priority = 100; // Run after logging (priority 50)
|
|
29
|
+
async createInterceptor(context) {
|
|
30
|
+
// Only create interceptor if we have necessary context
|
|
31
|
+
if (!context.config.sessionId) {
|
|
32
|
+
logger.debug('[SSOSessionSyncPlugin] Skipping: Session ID not available');
|
|
33
|
+
throw new Error('Session ID not available (session sync disabled)');
|
|
34
|
+
}
|
|
35
|
+
if (!context.credentials) {
|
|
36
|
+
logger.debug('[SSOSessionSyncPlugin] Skipping: SSO credentials not available');
|
|
37
|
+
throw new Error('SSO credentials not available (session sync disabled)');
|
|
38
|
+
}
|
|
39
|
+
if (!context.config.clientType) {
|
|
40
|
+
logger.debug('[SSOSessionSyncPlugin] Skipping: Client type not available');
|
|
41
|
+
throw new Error('Client type not available (session sync disabled)');
|
|
42
|
+
}
|
|
43
|
+
// Check if sync is enabled (from config or env var)
|
|
44
|
+
const syncEnabled = this.isSyncEnabled(context);
|
|
45
|
+
if (!syncEnabled) {
|
|
46
|
+
logger.debug('[SSOSessionSyncPlugin] Skipping: Session sync disabled by configuration');
|
|
47
|
+
throw new Error('Session sync disabled by configuration');
|
|
48
|
+
}
|
|
49
|
+
logger.debug('[SSOSessionSyncPlugin] Initializing unified session sync');
|
|
50
|
+
// Check if dry-run mode is enabled
|
|
51
|
+
const dryRun = this.isDryRunEnabled(context);
|
|
52
|
+
return new SSOSessionSyncInterceptor(context.config.sessionId, context.config.targetApiUrl, context.credentials.cookies, context.config.clientType, context.config.version, dryRun);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if session sync is enabled
|
|
56
|
+
* Priority: ENV > Profile config > Default (true)
|
|
57
|
+
*/
|
|
58
|
+
isSyncEnabled(context) {
|
|
59
|
+
// Check environment variable first
|
|
60
|
+
const envEnabled = process.env.CODEMIE_SESSION_SYNC_ENABLED;
|
|
61
|
+
if (envEnabled !== undefined) {
|
|
62
|
+
return envEnabled === 'true' || envEnabled === '1';
|
|
63
|
+
}
|
|
64
|
+
// Check profile config (if available)
|
|
65
|
+
const profileConfig = context.profileConfig;
|
|
66
|
+
if (profileConfig?.session?.sync?.enabled !== undefined) {
|
|
67
|
+
return profileConfig.session.sync.enabled;
|
|
68
|
+
}
|
|
69
|
+
// Default to enabled for SSO mode
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if dry-run mode is enabled
|
|
74
|
+
* Priority: ENV > Profile config > Default (false)
|
|
75
|
+
*/
|
|
76
|
+
isDryRunEnabled(context) {
|
|
77
|
+
// Check environment variable first
|
|
78
|
+
const envDryRun = process.env.CODEMIE_SESSION_DRY_RUN;
|
|
79
|
+
if (envDryRun !== undefined) {
|
|
80
|
+
return envDryRun === 'true' || envDryRun === '1';
|
|
81
|
+
}
|
|
82
|
+
// Check profile config (if available)
|
|
83
|
+
const profileConfig = context.profileConfig;
|
|
84
|
+
if (profileConfig?.session?.sync?.dryRun !== undefined) {
|
|
85
|
+
return profileConfig.session.sync.dryRun;
|
|
86
|
+
}
|
|
87
|
+
// Default to disabled
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
class SSOSessionSyncInterceptor {
|
|
92
|
+
sessionId;
|
|
93
|
+
name = 'sso-session-sync';
|
|
94
|
+
syncTimer;
|
|
95
|
+
syncer;
|
|
96
|
+
context;
|
|
97
|
+
syncInterval;
|
|
98
|
+
isSyncing = false;
|
|
99
|
+
constructor(sessionId, baseUrl, cookies, clientType, version = '0.0.0', dryRun = false) {
|
|
100
|
+
this.sessionId = sessionId;
|
|
101
|
+
if (dryRun) {
|
|
102
|
+
logger.info('[sso-session-sync] Dry-run mode enabled - sessions will be logged but not sent');
|
|
103
|
+
}
|
|
104
|
+
// Check for localhost development override
|
|
105
|
+
const devApiUrl = process.env.CODEMIE_DEV_API_URL;
|
|
106
|
+
const devApiKey = process.env.CODEMIE_DEV_API_KEY;
|
|
107
|
+
// Use dev settings if both are provided
|
|
108
|
+
const isLocalDev = !!devApiUrl && !!devApiKey;
|
|
109
|
+
if (isLocalDev) {
|
|
110
|
+
logger.info(`[sso-session-sync] Local development mode: using ${devApiUrl} with user-id header`);
|
|
111
|
+
}
|
|
112
|
+
// Build cookie header (only if not in local dev mode)
|
|
113
|
+
const cookieHeader = isLocalDev ? '' : Object.entries(cookies)
|
|
114
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
115
|
+
.join('; ');
|
|
116
|
+
// Create processing context (shared by SessionSyncer)
|
|
117
|
+
this.context = {
|
|
118
|
+
apiBaseUrl: isLocalDev ? devApiUrl : baseUrl,
|
|
119
|
+
cookies: cookieHeader,
|
|
120
|
+
apiKey: isLocalDev ? devApiKey : undefined,
|
|
121
|
+
clientType,
|
|
122
|
+
version,
|
|
123
|
+
dryRun
|
|
124
|
+
};
|
|
125
|
+
// Initialize SessionSyncer
|
|
126
|
+
this.syncer = new SessionSyncer();
|
|
127
|
+
// Get sync interval from env or default to 2 minutes
|
|
128
|
+
this.syncInterval = Number.parseInt(process.env.CODEMIE_SESSION_SYNC_INTERVAL || '120000', 10);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Called when proxy starts - initialize background timer
|
|
132
|
+
*/
|
|
133
|
+
async onProxyStart() {
|
|
134
|
+
const intervalMinutes = Math.round(this.syncInterval / 60000);
|
|
135
|
+
logger.info(`[${this.name}] Session sync enabled - syncing every ${intervalMinutes} minute${intervalMinutes !== 1 ? 's' : ''}`);
|
|
136
|
+
// Start background timer
|
|
137
|
+
this.syncTimer = setInterval(() => {
|
|
138
|
+
this.syncSessions().catch(error => {
|
|
139
|
+
logger.error(`[${this.name}] Sync failed:`, error);
|
|
140
|
+
});
|
|
141
|
+
}, this.syncInterval);
|
|
142
|
+
logger.debug(`[${this.name}] Background timer started`);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Called when proxy stops - cleanup and final sync
|
|
146
|
+
*/
|
|
147
|
+
async onProxyStop() {
|
|
148
|
+
logger.debug(`[${this.name}] Stopping session sync`);
|
|
149
|
+
// Stop timer
|
|
150
|
+
if (this.syncTimer) {
|
|
151
|
+
clearInterval(this.syncTimer);
|
|
152
|
+
this.syncTimer = undefined;
|
|
153
|
+
}
|
|
154
|
+
// Final sync (ensure all sessions are processed)
|
|
155
|
+
// This syncs BOTH metrics and conversations
|
|
156
|
+
try {
|
|
157
|
+
logger.info(`[${this.name}] sync: phase=final session_id=${this.sessionId}`);
|
|
158
|
+
await this.syncSessions();
|
|
159
|
+
logger.info(`[${this.name}] sync: phase=final status=success session_id=${this.sessionId}`);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
logger.error(`[${this.name}] sync: phase=final status=error session_id=${this.sessionId}`, error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Sync sessions to API using SessionSyncer
|
|
167
|
+
*/
|
|
168
|
+
async syncSessions() {
|
|
169
|
+
// Skip if already syncing (prevent concurrent syncs)
|
|
170
|
+
if (this.isSyncing) {
|
|
171
|
+
logger.debug(`[${this.name}] Sync already in progress, skipping`);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
this.isSyncing = true;
|
|
175
|
+
try {
|
|
176
|
+
logger.debug(`[${this.name}] Starting sync for session ${this.sessionId}`);
|
|
177
|
+
// Use SessionSyncer service
|
|
178
|
+
const result = await this.syncer.sync(this.sessionId, this.context);
|
|
179
|
+
if (result.success) {
|
|
180
|
+
logger.info(`[${this.name}] ${result.message}`);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
logger.warn(`[${this.name}] Sync had failures: ${result.message}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
logger.error(`[${this.name}] Sync failed:`, error);
|
|
188
|
+
}
|
|
189
|
+
finally {
|
|
190
|
+
this.isSyncing = false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=sso.session-sync.plugin.js.map
|