@codemieai/code 0.0.33 → 0.0.35
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 +78 -7
- package/bin/codemie-claude-acp.js +21 -0
- package/bin/codemie-opencode.js +11 -0
- package/bin/codemie.js +13 -0
- package/dist/agents/codemie-code/agent.d.ts +38 -4
- package/dist/agents/codemie-code/agent.d.ts.map +1 -1
- package/dist/agents/codemie-code/agent.js +333 -178
- package/dist/agents/codemie-code/agent.js.map +1 -1
- package/dist/agents/codemie-code/index.d.ts +2 -1
- package/dist/agents/codemie-code/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/index.js +36 -7
- package/dist/agents/codemie-code/index.js.map +1 -1
- package/dist/agents/codemie-code/prompts.d.ts +12 -5
- package/dist/agents/codemie-code/prompts.d.ts.map +1 -1
- package/dist/agents/codemie-code/prompts.js +53 -6
- package/dist/agents/codemie-code/prompts.js.map +1 -1
- package/dist/agents/codemie-code/toolMetadata.d.ts.map +1 -1
- package/dist/agents/codemie-code/toolMetadata.js +9 -8
- package/dist/agents/codemie-code/toolMetadata.js.map +1 -1
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts +47 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +1 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.js +129 -0
- package/dist/agents/codemie-code/tools/assistant-invocation.js.map +1 -0
- package/dist/agents/codemie-code/tools/index.d.ts +70 -4
- package/dist/agents/codemie-code/tools/index.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/index.js +57 -44
- package/dist/agents/codemie-code/tools/index.js.map +1 -1
- package/dist/agents/codemie-code/tools/planning.d.ts +6 -5
- package/dist/agents/codemie-code/tools/planning.d.ts.map +1 -1
- package/dist/agents/codemie-code/tools/planning.js +12 -10
- package/dist/agents/codemie-code/tools/planning.js.map +1 -1
- package/dist/agents/codemie-code/types.d.ts +27 -3
- package/dist/agents/codemie-code/types.d.ts.map +1 -1
- package/dist/agents/codemie-code/types.js +24 -0
- package/dist/agents/codemie-code/types.js.map +1 -1
- package/dist/agents/codemie-code/ui/autocomplete.d.ts +98 -0
- package/dist/agents/codemie-code/ui/autocomplete.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/autocomplete.js +145 -0
- package/dist/agents/codemie-code/ui/autocomplete.js.map +1 -0
- package/dist/agents/codemie-code/ui/keyHandlers.d.ts +112 -0
- package/dist/agents/codemie-code/ui/keyHandlers.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/keyHandlers.js +415 -0
- package/dist/agents/codemie-code/ui/keyHandlers.js.map +1 -0
- package/dist/agents/codemie-code/ui/mentions.d.ts +86 -0
- package/dist/agents/codemie-code/ui/mentions.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/mentions.js +122 -0
- package/dist/agents/codemie-code/ui/mentions.js.map +1 -0
- package/dist/agents/codemie-code/ui/terminalCodes.d.ts +38 -0
- package/dist/agents/codemie-code/ui/terminalCodes.d.ts.map +1 -0
- package/dist/agents/codemie-code/ui/terminalCodes.js +42 -0
- package/dist/agents/codemie-code/ui/terminalCodes.js.map +1 -0
- package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui/todoPanel.js +3 -4
- package/dist/agents/codemie-code/ui/todoPanel.js.map +1 -1
- package/dist/agents/codemie-code/ui.d.ts +8 -7
- package/dist/agents/codemie-code/ui.d.ts.map +1 -1
- package/dist/agents/codemie-code/ui.js +87 -145
- package/dist/agents/codemie-code/ui.js.map +1 -1
- package/dist/agents/core/AgentCLI.d.ts +5 -0
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +25 -1
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +90 -27
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts +7 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.d.ts.map +1 -1
- package/dist/agents/core/extension/BaseExtensionInstaller.js +58 -15
- package/dist/agents/core/extension/BaseExtensionInstaller.js.map +1 -1
- package/dist/agents/core/session/BaseSessionAdapter.d.ts +25 -0
- package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
- package/dist/agents/core/session/discovery-types.d.ts +53 -0
- package/dist/agents/core/session/discovery-types.d.ts.map +1 -0
- package/dist/agents/core/session/discovery-types.js +8 -0
- package/dist/agents/core/session/discovery-types.js.map +1 -0
- package/dist/agents/core/types.d.ts +62 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts +27 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.js +63 -0
- package/dist/agents/plugins/claude/claude-acp.plugin.js.map +1 -0
- package/dist/agents/plugins/claude/claude-message-types.d.ts +1 -0
- package/dist/agents/plugins/claude/claude-message-types.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts +44 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +263 -12
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +14 -7
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/plugin/README.md +40 -2
- package/dist/agents/plugins/claude/plugin/claude-templates/README.md +5 -5
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +177 -436
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +49 -82
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +337 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +129 -419
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +146 -693
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +110 -138
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +197 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +171 -91
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +219 -131
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +223 -98
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +131 -95
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +247 -75
- package/dist/agents/plugins/claude/plugin/commands/README.md +133 -0
- package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +336 -544
- package/dist/agents/plugins/claude/plugin/commands/codemie-subagents.md +233 -504
- package/dist/agents/plugins/claude/plugin/commands/memory-add.md +311 -30
- package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +218 -39
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +43 -8
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +68 -40
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/gemini.plugin.js +0 -3
- package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
- package/dist/agents/plugins/opencode/index.d.ts +8 -0
- package/dist/agents/plugins/opencode/index.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/index.js +12 -0
- package/dist/agents/plugins/opencode/index.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode-message-types.d.ts +207 -0
- package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode-message-types.js +59 -0
- package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.d.ts +65 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.js +184 -0
- package/dist/agents/plugins/opencode/opencode-model-configs.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.paths.d.ts +62 -0
- package/dist/agents/plugins/opencode/opencode.paths.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.paths.js +148 -0
- package/dist/agents/plugins/opencode/opencode.paths.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.plugin.d.ts +35 -0
- package/dist/agents/plugins/opencode/opencode.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.plugin.js +338 -0
- package/dist/agents/plugins/opencode/opencode.plugin.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.session.d.ts +77 -0
- package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.session.js +424 -0
- package/dist/agents/plugins/opencode/opencode.session.js.map +1 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts +25 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.js +96 -0
- package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts +30 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js +116 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +102 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +584 -0
- package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -0
- package/dist/agents/registry.d.ts +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +5 -1
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/assistants/chat.d.ts +11 -0
- package/dist/cli/commands/assistants/chat.d.ts.map +1 -0
- package/dist/cli/commands/assistants/chat.js +201 -0
- package/dist/cli/commands/assistants/chat.js.map +1 -0
- package/dist/cli/commands/assistants/constants.d.ts +81 -0
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -0
- package/dist/cli/commands/assistants/constants.js +75 -0
- package/dist/cli/commands/assistants/constants.js.map +1 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts +26 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.js +115 -0
- package/dist/cli/commands/assistants/generators/claude-agent-generator.js.map +1 -0
- package/dist/cli/commands/assistants/index.d.ts +11 -0
- package/dist/cli/commands/assistants/index.d.ts.map +1 -0
- package/dist/cli/commands/assistants/index.js +28 -0
- package/dist/cli/commands/assistants/index.js.map +1 -0
- package/dist/cli/commands/assistants/list.d.ts +11 -0
- package/dist/cli/commands/assistants/list.d.ts.map +1 -0
- package/dist/cli/commands/assistants/list.js +323 -0
- package/dist/cli/commands/assistants/list.js.map +1 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts +5 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/AgentsCheck.js +29 -0
- package/dist/cli/commands/doctor/checks/AgentsCheck.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +104 -13
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/opencode-metrics.d.ts +13 -0
- package/dist/cli/commands/opencode-metrics.d.ts.map +1 -0
- package/dist/cli/commands/opencode-metrics.js +200 -0
- package/dist/cli/commands/opencode-metrics.js.map +1 -0
- package/dist/cli/commands/self-update.d.ts +3 -0
- package/dist/cli/commands/self-update.d.ts.map +1 -0
- package/dist/cli/commands/self-update.js +55 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +113 -0
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skill.d.ts +6 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +196 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +34 -6
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +12 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +13 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/migrations/003-remove-hooks-node.migration.d.ts +22 -0
- package/dist/migrations/003-remove-hooks-node.migration.d.ts.map +1 -0
- package/dist/migrations/003-remove-hooks-node.migration.js +103 -0
- package/dist/migrations/003-remove-hooks-node.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 +1 -1
- package/dist/migrations/index.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +2 -2
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.js +14 -10
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
- package/dist/skills/core/SkillDiscovery.d.ts +83 -0
- package/dist/skills/core/SkillDiscovery.d.ts.map +1 -0
- package/dist/skills/core/SkillDiscovery.js +237 -0
- package/dist/skills/core/SkillDiscovery.js.map +1 -0
- package/dist/skills/core/SkillManager.d.ts +86 -0
- package/dist/skills/core/SkillManager.d.ts.map +1 -0
- package/dist/skills/core/SkillManager.js +155 -0
- package/dist/skills/core/SkillManager.js.map +1 -0
- package/dist/skills/core/types.d.ts +120 -0
- package/dist/skills/core/types.d.ts.map +1 -0
- package/dist/skills/core/types.js +20 -0
- package/dist/skills/core/types.js.map +1 -0
- package/dist/skills/index.d.ts +12 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +12 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/utils/content-loader.d.ts +25 -0
- package/dist/skills/utils/content-loader.d.ts.map +1 -0
- package/dist/skills/utils/content-loader.js +161 -0
- package/dist/skills/utils/content-loader.js.map +1 -0
- package/dist/skills/utils/frontmatter.d.ts +60 -0
- package/dist/skills/utils/frontmatter.d.ts.map +1 -0
- package/dist/skills/utils/frontmatter.js +114 -0
- package/dist/skills/utils/frontmatter.js.map +1 -0
- package/dist/skills/utils/pattern-matcher.d.ts +60 -0
- package/dist/skills/utils/pattern-matcher.d.ts.map +1 -0
- package/dist/skills/utils/pattern-matcher.js +97 -0
- package/dist/skills/utils/pattern-matcher.js.map +1 -0
- package/dist/utils/auth.d.ts +22 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +50 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/cli-updater.d.ts +70 -0
- package/dist/utils/cli-updater.d.ts.map +1 -0
- package/dist/utils/cli-updater.js +339 -0
- package/dist/utils/cli-updater.js.map +1 -0
- package/dist/utils/config.d.ts +6 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +13 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/installation-detector.d.ts +22 -0
- package/dist/utils/installation-detector.d.ts.map +1 -0
- package/dist/utils/installation-detector.js +49 -0
- package/dist/utils/installation-detector.js.map +1 -0
- package/dist/utils/native-installer.d.ts +49 -0
- package/dist/utils/native-installer.d.ts.map +1 -0
- package/dist/utils/native-installer.js +225 -0
- package/dist/utils/native-installer.js.map +1 -0
- package/dist/utils/processes.js +1 -1
- package/dist/utils/profile.d.ts +2 -0
- package/dist/utils/profile.d.ts.map +1 -1
- package/dist/utils/profile.js +5 -0
- package/dist/utils/profile.js.map +1 -1
- package/dist/utils/sdk-client.d.ts +15 -0
- package/dist/utils/sdk-client.d.ts.map +1 -0
- package/dist/utils/sdk-client.js +92 -0
- package/dist/utils/sdk-client.js.map +1 -0
- package/dist/utils/version-utils.d.ts +50 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +92 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +11 -3
- package/scripts/copy-mr-skill-to-global.ts +252 -0
- package/scripts/demo-hooks.sh +125 -0
- package/scripts/test-hooks.sh +196 -0
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/INDEX.md +0 -205
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/TEMPLATE_SIZES.md +0 -74
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/layered-architecture.md.template +0 -143
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/project-structure.md.template +0 -127
- package/dist/agents/plugins/claude/plugin/commands/codemie-pr.md +0 -25
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
// src/agents/plugins/opencode/session/processors/opencode.metrics-processor.ts
|
|
2
|
+
/**
|
|
3
|
+
* OpenCode Metrics Processor
|
|
4
|
+
*
|
|
5
|
+
* Transforms OpenCode session messages into MetricDelta records and writes
|
|
6
|
+
* them to JSONL for eventual sync to CodeMie API.
|
|
7
|
+
*
|
|
8
|
+
* Per tech spec "Fix OpenCode Metrics Sync":
|
|
9
|
+
* - Loads parts from storage/part/{messageID}/
|
|
10
|
+
* - Extracts tool usage, file operations, user prompts
|
|
11
|
+
* - Creates MetricDelta records per assistant message (ADR-16)
|
|
12
|
+
* - Writes to JSONL via MetricsWriter with status: 'pending'
|
|
13
|
+
* - Implements deduplication to prevent duplicate deltas
|
|
14
|
+
*/
|
|
15
|
+
import { isToolPart, isStepFinishPart } from '../../opencode-message-types.js';
|
|
16
|
+
import { readJsonWithRetry, readJsonlTolerant } from '../../opencode.storage-utils.js';
|
|
17
|
+
import { logger } from '../../../../../utils/logger.js';
|
|
18
|
+
import { getCodemiePath } from '../../../../../utils/paths.js';
|
|
19
|
+
import { readdir, readFile, writeFile } from 'fs/promises';
|
|
20
|
+
import { existsSync } from 'fs';
|
|
21
|
+
import { join } from 'path';
|
|
22
|
+
// Cooldown to prevent concurrent processing of same session (ADR-18)
|
|
23
|
+
const REPROCESS_COOLDOWN_MS = 60_000; // 60 seconds
|
|
24
|
+
/**
|
|
25
|
+
* OpenCode Metrics Processor
|
|
26
|
+
*
|
|
27
|
+
* Aggregates token usage, extracts tool/file metrics from parts,
|
|
28
|
+
* and writes MetricDelta records to JSONL.
|
|
29
|
+
*/
|
|
30
|
+
export class OpenCodeMetricsProcessor {
|
|
31
|
+
name = 'opencode-metrics';
|
|
32
|
+
priority = 1; // Run first (before conversations)
|
|
33
|
+
cacheDir;
|
|
34
|
+
constructor() {
|
|
35
|
+
this.cacheDir = getCodemiePath('cache', 'opencode');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if session has data to process
|
|
39
|
+
*/
|
|
40
|
+
shouldProcess(session) {
|
|
41
|
+
return session.messages.length > 0;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Process session to aggregate metrics and write JSONL deltas
|
|
45
|
+
*
|
|
46
|
+
* Per tech spec ADR-1/G2: Validate metadata at START before any processing
|
|
47
|
+
*/
|
|
48
|
+
async process(session, _context) {
|
|
49
|
+
try {
|
|
50
|
+
// MANDATORY: Validate metadata has required fields (ADR-1, Review 13 G2)
|
|
51
|
+
const metadata = session.metadata;
|
|
52
|
+
if (!metadata.storagePath || typeof metadata.storagePath !== 'string') {
|
|
53
|
+
return {
|
|
54
|
+
success: false,
|
|
55
|
+
message: 'Missing storagePath in session.metadata (adapter not updated)',
|
|
56
|
+
metadata: { failureReason: 'NO_STORAGE_PATH' }
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (!metadata.openCodeSessionId || typeof metadata.openCodeSessionId !== 'string') {
|
|
60
|
+
logger.warn('[opencode-metrics] Missing openCodeSessionId, using fallback');
|
|
61
|
+
}
|
|
62
|
+
const storagePath = metadata.storagePath;
|
|
63
|
+
const openCodeSessionId = metadata.openCodeSessionId || 'unknown';
|
|
64
|
+
// Check concurrent processing prevention (ADR-18)
|
|
65
|
+
if (!await this.shouldProcessSession(session.sessionId)) {
|
|
66
|
+
return {
|
|
67
|
+
success: true,
|
|
68
|
+
message: 'Session recently processed, skipping',
|
|
69
|
+
metadata: { skippedReason: 'RECENTLY_PROCESSED' }
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const messages = session.messages;
|
|
73
|
+
// Transform messages to deltas
|
|
74
|
+
// Cast metadata to OpenCodeMetadata (validated above)
|
|
75
|
+
const openCodeMetadata = {
|
|
76
|
+
projectPath: metadata.projectPath,
|
|
77
|
+
createdAt: metadata.createdAt,
|
|
78
|
+
updatedAt: metadata.updatedAt,
|
|
79
|
+
storagePath,
|
|
80
|
+
openCodeSessionId,
|
|
81
|
+
openCodeVersion: metadata.openCodeVersion
|
|
82
|
+
};
|
|
83
|
+
const { deltas, stats } = await this.transformMessagesToDeltas(messages, session.sessionId, openCodeSessionId, storagePath, openCodeMetadata);
|
|
84
|
+
if (deltas.length === 0) {
|
|
85
|
+
logger.debug(`[opencode-metrics] No new deltas to write for session ${session.sessionId}`);
|
|
86
|
+
// Still update session.metrics for backward compat
|
|
87
|
+
this.updateSessionMetrics(session, messages);
|
|
88
|
+
return {
|
|
89
|
+
success: true,
|
|
90
|
+
message: `No new deltas (${stats.skippedDueToDedup} already processed)`,
|
|
91
|
+
metadata: {
|
|
92
|
+
recordsProcessed: messages.length,
|
|
93
|
+
deltasWritten: 0,
|
|
94
|
+
deltasSkipped: stats.skippedDueToDedup,
|
|
95
|
+
...stats
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
// Write deltas to JSONL
|
|
100
|
+
const { MetricsWriter } = await import('../../../../../providers/plugins/sso/session/processors/metrics/MetricsWriter.js');
|
|
101
|
+
const writer = new MetricsWriter(session.sessionId);
|
|
102
|
+
logger.debug(`[opencode-metrics] Writing to: ${writer.getFilePath()}`);
|
|
103
|
+
for (const delta of deltas) {
|
|
104
|
+
// Log delta details for debugging
|
|
105
|
+
logger.debug(`[opencode-metrics] Delta ${delta.recordId}:`, {
|
|
106
|
+
tokens: delta.tokens,
|
|
107
|
+
tools: Object.keys(delta.tools || {}),
|
|
108
|
+
toolStatus: delta.toolStatus ? Object.keys(delta.toolStatus) : [],
|
|
109
|
+
fileOps: (delta.fileOperations || []).length,
|
|
110
|
+
models: delta.models,
|
|
111
|
+
userPrompts: delta.userPrompts?.length || 0
|
|
112
|
+
});
|
|
113
|
+
await writer.appendDelta(delta);
|
|
114
|
+
}
|
|
115
|
+
// Mark session as processed (ADR-18)
|
|
116
|
+
await this.markSessionProcessed(session.sessionId);
|
|
117
|
+
// Update session.metrics for backward compat
|
|
118
|
+
this.updateSessionMetrics(session, messages);
|
|
119
|
+
logger.info(`[opencode-metrics] Wrote ${deltas.length} deltas for session ${session.sessionId}`);
|
|
120
|
+
logger.info(`[opencode-metrics] Metrics file: ${writer.getFilePath()}`);
|
|
121
|
+
return {
|
|
122
|
+
success: true,
|
|
123
|
+
message: `Generated ${deltas.length} deltas`,
|
|
124
|
+
metadata: {
|
|
125
|
+
recordsProcessed: messages.length,
|
|
126
|
+
deltasWritten: deltas.length,
|
|
127
|
+
deltasSkipped: stats.skippedDueToDedup,
|
|
128
|
+
...stats
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
134
|
+
logger.error(`[opencode-metrics] Processing failed:`, error);
|
|
135
|
+
return {
|
|
136
|
+
success: false,
|
|
137
|
+
message: `Metrics processing failed: ${errorMessage}`,
|
|
138
|
+
metadata: { failureReason: 'PROCESSING_ERROR' }
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check if session should be processed (cooldown check per ADR-18)
|
|
144
|
+
*/
|
|
145
|
+
async shouldProcessSession(sessionId) {
|
|
146
|
+
try {
|
|
147
|
+
const lastProcessedPath = join(this.cacheDir, `${sessionId}_last_processed`);
|
|
148
|
+
if (existsSync(lastProcessedPath)) {
|
|
149
|
+
const lastProcessed = parseInt(await readFile(lastProcessedPath, 'utf-8'), 10);
|
|
150
|
+
if (Date.now() - lastProcessed < REPROCESS_COOLDOWN_MS) {
|
|
151
|
+
logger.debug(`[opencode-metrics] Session ${sessionId} processed recently, skipping`);
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// File corrupt or missing, proceed with processing
|
|
158
|
+
}
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Mark session as processed (ADR-18)
|
|
163
|
+
*/
|
|
164
|
+
async markSessionProcessed(sessionId) {
|
|
165
|
+
try {
|
|
166
|
+
const { mkdir } = await import('fs/promises');
|
|
167
|
+
if (!existsSync(this.cacheDir)) {
|
|
168
|
+
await mkdir(this.cacheDir, { recursive: true });
|
|
169
|
+
}
|
|
170
|
+
const lastProcessedPath = join(this.cacheDir, `${sessionId}_last_processed`);
|
|
171
|
+
await writeFile(lastProcessedPath, Date.now().toString());
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
logger.debug(`[opencode-metrics] Failed to mark session processed: ${error}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Transform messages to MetricDelta records
|
|
179
|
+
*
|
|
180
|
+
* Per ADR-16: One delta per assistant message with tokens
|
|
181
|
+
*/
|
|
182
|
+
async transformMessagesToDeltas(messages, codemieSessionId, openCodeSessionId, storagePath, sessionMetadata) {
|
|
183
|
+
const deltas = [];
|
|
184
|
+
const stats = {
|
|
185
|
+
messagesWithTokens: 0,
|
|
186
|
+
messagesWithoutTokens: 0,
|
|
187
|
+
tokensFromMessage: 0,
|
|
188
|
+
tokensFromStepFinish: 0,
|
|
189
|
+
skippedDueToDedup: 0,
|
|
190
|
+
tokenCoverageRate: 0
|
|
191
|
+
};
|
|
192
|
+
// Get existing record IDs for deduplication (ADR-5)
|
|
193
|
+
const existingRecordIds = await this.getExistingRecordIds(codemieSessionId);
|
|
194
|
+
const existingDeltas = await this.readExistingDeltas(codemieSessionId);
|
|
195
|
+
// Track already-attached user prompts (ADR-21)
|
|
196
|
+
const alreadyAttachedPrompts = new Set();
|
|
197
|
+
for (const delta of existingDeltas) {
|
|
198
|
+
if (delta.userPrompts) {
|
|
199
|
+
for (const prompt of delta.userPrompts) {
|
|
200
|
+
if (prompt.text)
|
|
201
|
+
alreadyAttachedPrompts.add(prompt.text);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// Extract all user prompts
|
|
206
|
+
const allUserPrompts = await this.extractUserPrompts(messages, storagePath, openCodeSessionId);
|
|
207
|
+
// Filter to only NEW prompts
|
|
208
|
+
const newPrompts = allUserPrompts.filter(p => !alreadyAttachedPrompts.has(p.text));
|
|
209
|
+
let promptsAttached = false;
|
|
210
|
+
let totalAssistantMessages = 0;
|
|
211
|
+
for (const msg of messages) {
|
|
212
|
+
if (msg.role !== 'assistant')
|
|
213
|
+
continue;
|
|
214
|
+
totalAssistantMessages++;
|
|
215
|
+
const assistantMsg = msg;
|
|
216
|
+
// Check deduplication (ADR-5, ADR-15)
|
|
217
|
+
if (existingRecordIds.has(assistantMsg.id)) {
|
|
218
|
+
stats.skippedDueToDedup++;
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
// Load parts for this message
|
|
222
|
+
const parts = await this.loadPartsForMessage(storagePath, assistantMsg.id, openCodeSessionId);
|
|
223
|
+
// Resolve token source (ADR-13)
|
|
224
|
+
const tokenSource = await this.resolveTokenSource(assistantMsg, parts);
|
|
225
|
+
if (tokenSource.source === 'none') {
|
|
226
|
+
stats.messagesWithoutTokens++;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
if (tokenSource.source === 'message') {
|
|
230
|
+
stats.tokensFromMessage++;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
stats.tokensFromStepFinish++;
|
|
234
|
+
}
|
|
235
|
+
stats.messagesWithTokens++;
|
|
236
|
+
// Extract tool metrics
|
|
237
|
+
const { tools, toolStatus, fileOperations } = this.extractToolMetrics(parts);
|
|
238
|
+
// Build delta (ADR-15: recordId is message.id)
|
|
239
|
+
const delta = {
|
|
240
|
+
recordId: assistantMsg.id,
|
|
241
|
+
sessionId: codemieSessionId,
|
|
242
|
+
agentSessionId: openCodeSessionId,
|
|
243
|
+
timestamp: this.resolveTimestamp(assistantMsg, sessionMetadata),
|
|
244
|
+
tokens: {
|
|
245
|
+
input: tokenSource.tokens.input,
|
|
246
|
+
output: tokenSource.tokens.output,
|
|
247
|
+
...(tokenSource.tokens.cache?.write && { cacheCreation: tokenSource.tokens.cache.write }),
|
|
248
|
+
...(tokenSource.tokens.cache?.read && { cacheRead: tokenSource.tokens.cache.read })
|
|
249
|
+
},
|
|
250
|
+
tools,
|
|
251
|
+
...(Object.keys(toolStatus).length > 0 && { toolStatus }),
|
|
252
|
+
...(fileOperations.length > 0 && { fileOperations })
|
|
253
|
+
};
|
|
254
|
+
// Add model if present (ADR-6)
|
|
255
|
+
const modelString = this.getValidModelString(assistantMsg.providerID, assistantMsg.modelID);
|
|
256
|
+
if (modelString) {
|
|
257
|
+
delta.models = [modelString];
|
|
258
|
+
}
|
|
259
|
+
// Attach user prompts to first NEW delta only (ADR-21)
|
|
260
|
+
if (!promptsAttached && newPrompts.length > 0) {
|
|
261
|
+
delta.userPrompts = newPrompts;
|
|
262
|
+
promptsAttached = true;
|
|
263
|
+
}
|
|
264
|
+
deltas.push(delta);
|
|
265
|
+
}
|
|
266
|
+
// Calculate coverage rate
|
|
267
|
+
stats.tokenCoverageRate = totalAssistantMessages > 0
|
|
268
|
+
? stats.messagesWithTokens / totalAssistantMessages
|
|
269
|
+
: 0;
|
|
270
|
+
return { deltas, stats };
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Resolve token source with fallback (ADR-13)
|
|
274
|
+
*/
|
|
275
|
+
async resolveTokenSource(assistantMsg, parts) {
|
|
276
|
+
// Primary: message.tokens (both input AND output must be valid numbers)
|
|
277
|
+
if (typeof assistantMsg.tokens?.input === 'number' && !isNaN(assistantMsg.tokens.input) &&
|
|
278
|
+
typeof assistantMsg.tokens?.output === 'number' && !isNaN(assistantMsg.tokens.output)) {
|
|
279
|
+
return { source: 'message', tokens: assistantMsg.tokens };
|
|
280
|
+
}
|
|
281
|
+
// Fallback: step-finish parts (sorted for deterministic selection per ADR-13 G6)
|
|
282
|
+
const stepFinishParts = parts
|
|
283
|
+
.filter(isStepFinishPart)
|
|
284
|
+
.sort((a, b) => a.id.localeCompare(b.id));
|
|
285
|
+
for (const part of stepFinishParts) {
|
|
286
|
+
const tokens = part.tokens;
|
|
287
|
+
if (typeof tokens?.input === 'number' && !isNaN(tokens.input) &&
|
|
288
|
+
typeof tokens?.output === 'number' && !isNaN(tokens.output)) {
|
|
289
|
+
logger.debug(`[opencode-metrics] Using step-finish tokens for message ${assistantMsg.id}`);
|
|
290
|
+
return { source: 'step-finish', tokens };
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// Neither available
|
|
294
|
+
logger.warn(`[opencode-metrics] No valid tokens found for message ${assistantMsg.id}`);
|
|
295
|
+
return { source: 'none' };
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Resolve timestamp with fallback chain (ADR-13 G4)
|
|
299
|
+
*/
|
|
300
|
+
resolveTimestamp(msg, sessionMetadata) {
|
|
301
|
+
// Primary: message timestamp
|
|
302
|
+
if (msg.time?.created && typeof msg.time.created === 'number') {
|
|
303
|
+
return msg.time.created;
|
|
304
|
+
}
|
|
305
|
+
// Fallback: session updated time
|
|
306
|
+
if (sessionMetadata.updatedAt) {
|
|
307
|
+
const parsed = new Date(sessionMetadata.updatedAt).getTime();
|
|
308
|
+
if (!isNaN(parsed)) {
|
|
309
|
+
logger.debug(`[opencode-metrics] Using session updatedAt for message ${msg.id}`);
|
|
310
|
+
return parsed;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// Last resort: current time
|
|
314
|
+
logger.warn(`[opencode-metrics] Missing timestamp for message ${msg.id}, using Date.now()`);
|
|
315
|
+
return Date.now();
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Load parts for a message (ADR-11 - part-message validation)
|
|
319
|
+
*/
|
|
320
|
+
async loadPartsForMessage(storagePath, messageId, expectedSessionId) {
|
|
321
|
+
const partsDir = join(storagePath, 'part', messageId);
|
|
322
|
+
if (!existsSync(partsDir)) {
|
|
323
|
+
return [];
|
|
324
|
+
}
|
|
325
|
+
const parts = [];
|
|
326
|
+
try {
|
|
327
|
+
const files = await readdir(partsDir);
|
|
328
|
+
for (const file of files) {
|
|
329
|
+
if (!file.endsWith('.json'))
|
|
330
|
+
continue;
|
|
331
|
+
const part = await readJsonWithRetry(join(partsDir, file));
|
|
332
|
+
if (!part)
|
|
333
|
+
continue;
|
|
334
|
+
// Validate part belongs to this message (ADR-11)
|
|
335
|
+
if (part.messageID !== messageId) {
|
|
336
|
+
logger.debug(`[opencode-metrics] Skipping orphaned part ${part.id}: messageID mismatch`);
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
// Optionally validate session correlation
|
|
340
|
+
if (expectedSessionId && part.sessionID !== expectedSessionId) {
|
|
341
|
+
logger.debug(`[opencode-metrics] Skipping part ${part.id}: sessionID mismatch`);
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
parts.push(part);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
logger.debug(`[opencode-metrics] Error loading parts from ${partsDir}:`, error);
|
|
349
|
+
}
|
|
350
|
+
return parts.sort((a, b) => a.id.localeCompare(b.id));
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Extract tool metrics from parts (ADR-8, ADR-14)
|
|
354
|
+
*/
|
|
355
|
+
extractToolMetrics(parts) {
|
|
356
|
+
const tools = {};
|
|
357
|
+
const toolStatus = {};
|
|
358
|
+
const fileOperations = [];
|
|
359
|
+
const toolParts = parts.filter(isToolPart);
|
|
360
|
+
for (const part of toolParts) {
|
|
361
|
+
const toolName = part.tool.toLowerCase();
|
|
362
|
+
tools[toolName] = (tools[toolName] || 0) + 1;
|
|
363
|
+
const statusResult = this.mapToolStatus(part.state.status);
|
|
364
|
+
if (statusResult !== 'skip') {
|
|
365
|
+
if (!toolStatus[toolName]) {
|
|
366
|
+
toolStatus[toolName] = { success: 0, failure: 0 };
|
|
367
|
+
}
|
|
368
|
+
toolStatus[toolName][statusResult]++;
|
|
369
|
+
// Extract file operations only for completed tools (ADR-8)
|
|
370
|
+
if (statusResult === 'success') {
|
|
371
|
+
const ops = this.extractFileOperation(part.tool, part.state.input, part.state.metadata);
|
|
372
|
+
fileOperations.push(...ops);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return { tools, toolStatus, fileOperations };
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Map tool status to success/failure/skip (ADR-14)
|
|
380
|
+
*/
|
|
381
|
+
mapToolStatus(status) {
|
|
382
|
+
switch (status.toLowerCase()) {
|
|
383
|
+
case 'completed':
|
|
384
|
+
return 'success';
|
|
385
|
+
case 'error':
|
|
386
|
+
return 'failure';
|
|
387
|
+
case 'pending':
|
|
388
|
+
case 'running':
|
|
389
|
+
return 'skip'; // Don't count incomplete tools
|
|
390
|
+
default:
|
|
391
|
+
logger.debug(`[opencode-metrics] Unknown tool status: ${status}`);
|
|
392
|
+
return 'skip';
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Extract file operation from tool call (ADR-8, ADR-17)
|
|
397
|
+
* Only emits allowed file operation types.
|
|
398
|
+
*/
|
|
399
|
+
extractFileOperation(toolName, input, metadata) {
|
|
400
|
+
const toolLower = toolName.toLowerCase();
|
|
401
|
+
const operations = [];
|
|
402
|
+
// Map tools to allowed types (ADR-8)
|
|
403
|
+
const typeMapping = {
|
|
404
|
+
'read': 'read',
|
|
405
|
+
'write': 'write',
|
|
406
|
+
'edit': 'edit',
|
|
407
|
+
'glob': 'glob',
|
|
408
|
+
'grep': 'grep',
|
|
409
|
+
'apply_patch': 'edit', // Map to edit, not patch
|
|
410
|
+
'multiedit': 'edit', // Map to edit, not multiedit
|
|
411
|
+
};
|
|
412
|
+
const mappedType = typeMapping[toolLower];
|
|
413
|
+
if (!mappedType)
|
|
414
|
+
return [];
|
|
415
|
+
// Handle apply_patch - extract from state.metadata.files (ADR-17)
|
|
416
|
+
if (toolLower === 'apply_patch') {
|
|
417
|
+
const files = metadata?.files;
|
|
418
|
+
if (Array.isArray(files)) {
|
|
419
|
+
for (const file of files) {
|
|
420
|
+
const path = file.filePath || file.relativePath;
|
|
421
|
+
if (typeof path === 'string') {
|
|
422
|
+
const op = { type: 'edit', path };
|
|
423
|
+
// Add line metrics from apply_patch (ADR-8)
|
|
424
|
+
if (typeof file.additions === 'number') {
|
|
425
|
+
op.linesAdded = file.additions;
|
|
426
|
+
}
|
|
427
|
+
if (typeof file.deletions === 'number') {
|
|
428
|
+
op.linesRemoved = file.deletions;
|
|
429
|
+
}
|
|
430
|
+
operations.push(op);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
return operations;
|
|
435
|
+
}
|
|
436
|
+
// Handle multiedit (ADR-17)
|
|
437
|
+
if (toolLower === 'multiedit') {
|
|
438
|
+
const edits = input?.edits;
|
|
439
|
+
if (Array.isArray(edits)) {
|
|
440
|
+
for (const edit of edits) {
|
|
441
|
+
if (typeof edit.filePath === 'string') {
|
|
442
|
+
operations.push({ type: 'edit', path: edit.filePath });
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
return operations;
|
|
447
|
+
}
|
|
448
|
+
// Standard file operations
|
|
449
|
+
const fileOp = { type: mappedType };
|
|
450
|
+
// Per ADR-17: field names are camelCase (filePath, not file_path)
|
|
451
|
+
const filePath = input?.filePath || input?.path;
|
|
452
|
+
if (typeof filePath === 'string') {
|
|
453
|
+
fileOp.path = filePath;
|
|
454
|
+
}
|
|
455
|
+
if (typeof input?.pattern === 'string') {
|
|
456
|
+
fileOp.pattern = input.pattern;
|
|
457
|
+
}
|
|
458
|
+
operations.push(fileOp);
|
|
459
|
+
return operations;
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Extract user prompts from messages (ADR-10, ADR-20)
|
|
463
|
+
*/
|
|
464
|
+
async extractUserPrompts(messages, storagePath, sessionId) {
|
|
465
|
+
const prompts = [];
|
|
466
|
+
for (const msg of messages) {
|
|
467
|
+
if (msg.role !== 'user')
|
|
468
|
+
continue;
|
|
469
|
+
const text = await this.extractUserPromptText(msg, storagePath, sessionId);
|
|
470
|
+
if (text) {
|
|
471
|
+
prompts.push({ count: 1, text });
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return prompts;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Extract user prompt text from message (ADR-10, ADR-20)
|
|
478
|
+
*/
|
|
479
|
+
async extractUserPromptText(msg, storagePath, sessionId) {
|
|
480
|
+
// Try parts first (ADR-20)
|
|
481
|
+
const partsDir = join(storagePath, 'part', msg.id);
|
|
482
|
+
if (existsSync(partsDir)) {
|
|
483
|
+
const parts = await this.loadPartsForMessage(storagePath, msg.id, sessionId);
|
|
484
|
+
// Filter: exclude ignored and synthetic parts (ADR-10)
|
|
485
|
+
const textParts = parts.filter(p => p.type === 'text' &&
|
|
486
|
+
'text' in p &&
|
|
487
|
+
!p.ignored &&
|
|
488
|
+
!p.synthetic);
|
|
489
|
+
if (textParts.length > 0) {
|
|
490
|
+
const combinedText = textParts
|
|
491
|
+
.map(p => p.text)
|
|
492
|
+
.filter(t => t?.trim())
|
|
493
|
+
.join('\n');
|
|
494
|
+
if (combinedText) {
|
|
495
|
+
return combinedText;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
// Fallback: check message.summary.title (ADR-20)
|
|
500
|
+
if (msg.summary?.title) {
|
|
501
|
+
return msg.summary.title;
|
|
502
|
+
}
|
|
503
|
+
// No text found
|
|
504
|
+
return undefined;
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Get existing record IDs for deduplication (ADR-5)
|
|
508
|
+
* Uses tolerant JSONL reading to handle corrupted lines.
|
|
509
|
+
*/
|
|
510
|
+
async getExistingRecordIds(sessionId) {
|
|
511
|
+
try {
|
|
512
|
+
const existingDeltas = await this.readExistingDeltas(sessionId);
|
|
513
|
+
return new Set(existingDeltas.map(d => d.recordId));
|
|
514
|
+
}
|
|
515
|
+
catch (error) {
|
|
516
|
+
logger.warn('[opencode-metrics] Could not read existing deltas:', error);
|
|
517
|
+
return new Set();
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Read existing deltas from JSONL file (ADR-5, ADR-21)
|
|
522
|
+
*/
|
|
523
|
+
async readExistingDeltas(sessionId) {
|
|
524
|
+
try {
|
|
525
|
+
const { MetricsWriter } = await import('../../../../../providers/plugins/sso/session/processors/metrics/MetricsWriter.js');
|
|
526
|
+
const writer = new MetricsWriter(sessionId);
|
|
527
|
+
if (!writer.exists()) {
|
|
528
|
+
return [];
|
|
529
|
+
}
|
|
530
|
+
// Use tolerant read that skips corrupted lines
|
|
531
|
+
return await readJsonlTolerant(writer.getFilePath());
|
|
532
|
+
}
|
|
533
|
+
catch (error) {
|
|
534
|
+
logger.debug('[opencode-metrics] Could not read existing deltas:', error);
|
|
535
|
+
return [];
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Get valid model string (ADR-6)
|
|
540
|
+
*/
|
|
541
|
+
getValidModelString(providerID, modelID) {
|
|
542
|
+
const model = modelID?.trim();
|
|
543
|
+
if (!model)
|
|
544
|
+
return undefined;
|
|
545
|
+
const provider = providerID?.toLowerCase().trim();
|
|
546
|
+
return provider ? `${provider}/${model}` : model;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Update session.metrics for backward compatibility
|
|
550
|
+
*/
|
|
551
|
+
updateSessionMetrics(session, messages) {
|
|
552
|
+
let totalInput = 0;
|
|
553
|
+
let totalOutput = 0;
|
|
554
|
+
let cacheRead = 0;
|
|
555
|
+
let cacheWrite = 0;
|
|
556
|
+
for (const msg of messages) {
|
|
557
|
+
if (msg.role === 'assistant') {
|
|
558
|
+
const assistantMsg = msg;
|
|
559
|
+
if (assistantMsg.tokens) {
|
|
560
|
+
totalInput += assistantMsg.tokens.input || 0;
|
|
561
|
+
totalOutput += assistantMsg.tokens.output || 0;
|
|
562
|
+
cacheRead += assistantMsg.tokens.cache?.read || 0;
|
|
563
|
+
cacheWrite += assistantMsg.tokens.cache?.write || 0;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
// Ensure session.metrics exists before mutating
|
|
568
|
+
if (!session.metrics) {
|
|
569
|
+
session.metrics = {
|
|
570
|
+
tokens: { input: 0, output: 0 },
|
|
571
|
+
tools: {},
|
|
572
|
+
toolStatus: {},
|
|
573
|
+
fileOperations: []
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
session.metrics.tokens = {
|
|
577
|
+
input: totalInput,
|
|
578
|
+
output: totalOutput,
|
|
579
|
+
cacheRead,
|
|
580
|
+
cacheWrite
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
//# sourceMappingURL=opencode.metrics-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.metrics-processor.js","sourceRoot":"","sources":["../../../../../../src/agents/plugins/opencode/session/processors/opencode.metrics-processor.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E;;;;;;;;;;;;GAYG;AAaH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,qEAAqE;AACrE,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,aAAa;AAenD;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IAC1B,IAAI,GAAG,kBAAkB,CAAC;IAC1B,QAAQ,GAAG,CAAC,CAAC,CAAE,mCAAmC;IAE1C,QAAQ,CAAS;IAElC;QACE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAsB;QAClC,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,OAAsB,EAAE,QAA2B;QAC/D,IAAI,CAAC;YACH,yEAAyE;YACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAmC,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACtE,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,+DAA+D;oBACxE,QAAQ,EAAE,EAAE,aAAa,EAAE,iBAAiB,EAAE;iBAC/C,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,QAAQ,CAAC,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAClF,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACzC,MAAM,iBAAiB,GAAI,QAAQ,CAAC,iBAA4B,IAAI,SAAS,CAAC;YAE9E,kDAAkD;YAClD,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,sCAAsC;oBAC/C,QAAQ,EAAE,EAAE,aAAa,EAAE,oBAAoB,EAAE;iBAClD,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA6B,CAAC;YAEvD,+BAA+B;YAC/B,sDAAsD;YACtD,MAAM,gBAAgB,GAAqB;gBACzC,WAAW,EAAE,QAAQ,CAAC,WAAiC;gBACvD,SAAS,EAAE,QAAQ,CAAC,SAA+B;gBACnD,SAAS,EAAE,QAAQ,CAAC,SAA+B;gBACnD,WAAW;gBACX,iBAAiB;gBACjB,eAAe,EAAE,QAAQ,CAAC,eAAqC;aAChE,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAC5D,QAAQ,EACR,OAAO,CAAC,SAAS,EACjB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,CACjB,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,yDAAyD,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;gBAE3F,mDAAmD;gBACnD,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAE7C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,kBAAkB,KAAK,CAAC,iBAAiB,qBAAqB;oBACvE,QAAQ,EAAE;wBACR,gBAAgB,EAAE,QAAQ,CAAC,MAAM;wBACjC,aAAa,EAAE,CAAC;wBAChB,aAAa,EAAE,KAAK,CAAC,iBAAiB;wBACtC,GAAG,KAAK;qBACT;iBACF,CAAC;YACJ,CAAC;YAED,wBAAwB;YACxB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kFAAkF,CAAC,CAAC;YAC3H,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEpD,MAAM,CAAC,KAAK,CAAC,kCAAkC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEvE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,kCAAkC;gBAClC,MAAM,CAAC,KAAK,CAAC,4BAA4B,KAAK,CAAC,QAAQ,GAAG,EAAE;oBAC1D,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;oBACrC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;oBACjE,OAAO,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM;oBAC5C,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAG,KAAa,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;iBACrD,CAAC,CAAC;gBAEH,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAED,qCAAqC;YACrC,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEnD,6CAA6C;YAC7C,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAE7C,MAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,MAAM,uBAAuB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YACjG,MAAM,CAAC,IAAI,CAAC,oCAAoC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAExE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,aAAa,MAAM,CAAC,MAAM,SAAS;gBAC5C,QAAQ,EAAE;oBACR,gBAAgB,EAAE,QAAQ,CAAC,MAAM;oBACjC,aAAa,EAAE,MAAM,CAAC,MAAM;oBAC5B,aAAa,EAAE,KAAK,CAAC,iBAAiB;oBACtC,GAAG,KAAK;iBACT;aACF,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,8BAA8B,YAAY,EAAE;gBACrD,QAAQ,EAAE,EAAE,aAAa,EAAE,kBAAkB,EAAE;aAChD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAClD,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,iBAAiB,CAAC,CAAC;YAE7E,IAAI,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/E,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,GAAG,qBAAqB,EAAE,CAAC;oBACvD,MAAM,CAAC,KAAK,CAAC,8BAA8B,SAAS,+BAA+B,CAAC,CAAC;oBACrF,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAClD,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,iBAAiB,CAAC,CAAC;YAC7E,MAAM,SAAS,CAAC,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,wDAAwD,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,yBAAyB,CACrC,QAA2B,EAC3B,gBAAwB,EACxB,iBAAyB,EACzB,WAAmB,EACnB,eAAiC;QAYjC,MAAM,MAAM,GAA4D,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG;YACZ,kBAAkB,EAAE,CAAC;YACrB,qBAAqB,EAAE,CAAC;YACxB,iBAAiB,EAAE,CAAC;YACpB,oBAAoB,EAAE,CAAC;YACvB,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;SACrB,CAAC;QAEF,oDAAoD;QACpD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QAEvE,+CAA+C;QAC/C,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAU,CAAC;QACjD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACvC,IAAI,MAAM,CAAC,IAAI;wBAAE,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAE/F,6BAA6B;QAC7B,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnF,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,IAAI,sBAAsB,GAAG,CAAC,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;gBAAE,SAAS;YACvC,sBAAsB,EAAE,CAAC;YAEzB,MAAM,YAAY,GAAG,GAA+B,CAAC;YAErD,sCAAsC;YACtC,IAAI,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3C,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,8BAA8B;YAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAE9F,gCAAgC;YAChC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAEvE,IAAI,WAAW,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAClC,KAAK,CAAC,qBAAqB,EAAE,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACrC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC/B,CAAC;YACD,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAE3B,uBAAuB;YACvB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAE7E,+CAA+C;YAC/C,MAAM,KAAK,GAAqD;gBAC9D,QAAQ,EAAE,YAAY,CAAC,EAAE;gBACzB,SAAS,EAAE,gBAAgB;gBAC3B,cAAc,EAAE,iBAAiB;gBACjC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,eAAe,CAAC;gBAC/D,MAAM,EAAE;oBACN,KAAK,EAAE,WAAW,CAAC,MAAO,CAAC,KAAK;oBAChC,MAAM,EAAE,WAAW,CAAC,MAAO,CAAC,MAAM;oBAClC,GAAG,CAAC,WAAW,CAAC,MAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,aAAa,EAAE,WAAW,CAAC,MAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBAC3F,GAAG,CAAC,WAAW,CAAC,MAAO,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,MAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;iBACtF;gBACD,KAAK;gBACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;gBACzD,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;aACrD,CAAC;YAEF,+BAA+B;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5F,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC;YAC/B,CAAC;YAED,uDAAuD;YACvD,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,KAAa,CAAC,WAAW,GAAG,UAAU,CAAC;gBACxC,eAAe,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,0BAA0B;QAC1B,KAAK,CAAC,iBAAiB,GAAG,sBAAsB,GAAG,CAAC;YAClD,CAAC,CAAC,KAAK,CAAC,kBAAkB,GAAG,sBAAsB;YACnD,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,YAAsC,EACtC,KAAqB;QAErB,wEAAwE;QACxE,IACE,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;YACnF,OAAO,YAAY,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EACrF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;QAC5D,CAAC;QAED,iFAAiF;QACjF,MAAM,eAAe,GAAG,KAAK;aAC1B,MAAM,CAAC,gBAAgB,CAAC;aACxB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAA6B,CAAC;QAExE,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,IACE,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;gBACzD,OAAO,MAAM,EAAE,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAC3D,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,2DAA2D,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3F,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,CAAC,IAAI,CAAC,wDAAwD,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,GAA6B,EAC7B,eAAiC;QAEjC,6BAA6B;QAC7B,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9D,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,iCAAiC;QACjC,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,0DAA0D,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjF,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,CAAC,IAAI,CAAC,oDAAoD,GAAG,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC/B,WAAmB,EACnB,SAAiB,EACjB,iBAA0B;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAmB,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAEtC,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAe,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAEpB,iDAAiD;gBACjD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;oBACzF,SAAS;gBACX,CAAC;gBAED,0CAA0C;gBAC1C,IAAI,iBAAiB,IAAI,IAAI,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;oBAC9D,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;oBAChF,SAAS;gBACX,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,+CAA+C,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,KAAqB;QAW9C,MAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,MAAM,UAAU,GAAyD,EAAE,CAAC;QAC5E,MAAM,cAAc,GAMf,EAAE,CAAC;QAER,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAuB,CAAC;QAEjE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAE7C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;gBAC5B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACpD,CAAC;gBACD,UAAU,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC;gBAErC,2DAA2D;gBAC3D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CACnC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CAAC,QAAQ,CACpB,CAAC;oBACF,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAc;QAClC,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YAC7B,KAAK,WAAW;gBACd,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS,CAAC;YACf,KAAK,SAAS;gBACZ,OAAO,MAAM,CAAC,CAAE,+BAA+B;YACjD;gBACE,MAAM,CAAC,KAAK,CAAC,2CAA2C,MAAM,EAAE,CAAC,CAAC;gBAClE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAC1B,QAAgB,EAChB,KAA0C,EAC1C,QAAkC;QAQlC,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,UAAU,GAMX,EAAE,CAAC;QAER,qCAAqC;QACrC,MAAM,WAAW,GAAsC;YACrD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,aAAa,EAAE,MAAM,EAAG,yBAAyB;YACjD,WAAW,EAAE,MAAM,EAAK,6BAA6B;SACtD,CAAC;QAEF,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE3B,kEAAkE;QAClE,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,QAAQ,EAAE,KAMV,CAAC;YAEf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;oBAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,MAAM,EAAE,GAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;wBAEvC,4CAA4C;wBAC5C,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;4BACvC,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;wBACjC,CAAC;wBACD,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;4BACvC,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;wBACnC,CAAC;wBAED,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,4BAA4B;QAC5B,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,KAAK,EAAE,KAAgD,CAAC;YACtE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBACtC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAEzC,kEAAkE;QAClE,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,IAAI,CAAC;QAChD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,QAA2B,EAC3B,WAAmB,EACnB,SAAkB;QAElB,MAAM,OAAO,GAA2C,EAAE,CAAC;QAE3D,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAElC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAC3E,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CACjC,GAAoB,EACpB,WAAmB,EACnB,SAAkB;QAElB,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC7E,uDAAuD;YACvD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjC,CAAC,CAAC,IAAI,KAAK,MAAM;gBACjB,MAAM,IAAI,CAAC;gBACX,CAAE,CAAS,CAAC,OAAO;gBACnB,CAAE,CAAS,CAAC,SAAS,CACtB,CAAC;YAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,YAAY,GAAG,SAAS;qBAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAoC,CAAC,IAAI,CAAC;qBACpD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;qBACtB,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,YAAY,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAK,GAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAChC,OAAQ,GAAW,CAAC,OAAO,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,gBAAgB;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAClD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAChE,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;YACzE,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAChD,IAAI,CAAC;YACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,kFAAkF,CAAC,CAAC;YAC3H,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,+CAA+C;YAC/C,OAAO,MAAM,iBAAiB,CAAc,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAmB,EAAE,OAAgB;QAC/D,MAAM,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,QAAQ,GAAG,UAAU,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,OAAsB,EAAE,QAA2B;QAC9E,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,MAAM,YAAY,GAAG,GAA+B,CAAC;gBACrD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;oBACxB,UAAU,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;oBAC7C,WAAW,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC/C,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;oBAClD,UAAU,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,OAAiD,CAAC,OAAO,GAAG;gBAC3D,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC/B,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,EAAE;gBACd,cAAc,EAAE,EAAE;aACnB,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,OAAQ,CAAC,MAAM,GAAG;YACxB,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,WAAW;YACnB,SAAS;YACT,UAAU;SACX,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -10,7 +10,7 @@ export declare class AgentRegistry {
|
|
|
10
10
|
private static readonly analyticsAdapters;
|
|
11
11
|
private static initialized;
|
|
12
12
|
/**
|
|
13
|
-
* Lazy initialization - registers all plugins on first access
|
|
13
|
+
* Lazy initialization - registers all built-in plugins on first access
|
|
14
14
|
*/
|
|
15
15
|
private static initialize;
|
|
16
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAiD;IAC1F,OAAO,CAAC,MAAM,CAAC,WAAW,CAAS;IAEnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAczB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAKvD,MAAM,CAAC,YAAY,IAAI,YAAY,EAAE;IAKrC,MAAM,CAAC,aAAa,IAAI,MAAM,EAAE;WAKnB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAW1D;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAKhF;;OAEG;IACH,MAAM,CAAC,uBAAuB,IAAI,qBAAqB,EAAE;CAI1D"}
|
package/dist/agents/registry.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ClaudePlugin } from './plugins/claude/claude.plugin.js';
|
|
2
|
+
import { ClaudeAcpPlugin } from './plugins/claude/claude-acp.plugin.js';
|
|
2
3
|
import { CodeMieCodePlugin } from './plugins/codemie-code.plugin.js';
|
|
3
4
|
import { GeminiPlugin } from './plugins/gemini/gemini.plugin.js';
|
|
5
|
+
import { OpenCodePlugin } from './plugins/opencode/index.js';
|
|
4
6
|
export { BUILTIN_AGENT_NAME } from './plugins/codemie-code.plugin.js';
|
|
5
7
|
/**
|
|
6
8
|
* Central registry for all agents
|
|
@@ -11,7 +13,7 @@ export class AgentRegistry {
|
|
|
11
13
|
static analyticsAdapters = new Map();
|
|
12
14
|
static initialized = false;
|
|
13
15
|
/**
|
|
14
|
-
* Lazy initialization - registers all plugins on first access
|
|
16
|
+
* Lazy initialization - registers all built-in plugins on first access
|
|
15
17
|
*/
|
|
16
18
|
static initialize() {
|
|
17
19
|
if (AgentRegistry.initialized) {
|
|
@@ -19,7 +21,9 @@ export class AgentRegistry {
|
|
|
19
21
|
}
|
|
20
22
|
AgentRegistry.registerPlugin(new CodeMieCodePlugin());
|
|
21
23
|
AgentRegistry.registerPlugin(new ClaudePlugin());
|
|
24
|
+
AgentRegistry.registerPlugin(new ClaudeAcpPlugin());
|
|
22
25
|
AgentRegistry.registerPlugin(new GeminiPlugin());
|
|
26
|
+
AgentRegistry.registerPlugin(new OpenCodePlugin());
|
|
23
27
|
AgentRegistry.initialized = true;
|
|
24
28
|
}
|
|
25
29
|
/**
|