@codemieai/code 0.1.0 → 0.2.1
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 +30 -6
- package/bin/codebase-memory-ui-daemon.js +10 -0
- package/bin/codemie-codex.js +18 -0
- package/dist/agents/core/AgentCLI.d.ts +1 -0
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +29 -4
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/session/sync-state-utils.d.ts +11 -0
- package/dist/agents/core/session/sync-state-utils.d.ts.map +1 -0
- package/dist/agents/core/session/sync-state-utils.js +99 -0
- package/dist/agents/core/session/sync-state-utils.js.map +1 -0
- package/dist/agents/core/session/types.d.ts +8 -0
- package/dist/agents/core/session/types.d.ts.map +1 -1
- package/dist/agents/core/session/utils/jsonl-reader.d.ts +8 -0
- package/dist/agents/core/session/utils/jsonl-reader.d.ts.map +1 -1
- package/dist/agents/core/session/utils/jsonl-reader.js +37 -0
- package/dist/agents/core/session/utils/jsonl-reader.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/plugin/hooks/hooks.json +0 -15
- package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/SKILL.md +641 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/references/leaderboard-dashboard-report.md +225 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/references/people-spending-dashboard-report.md +746 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/references/people-spending-dashboard-template.html +3270 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/scripts/analytics-cli.js +893 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-analytics/scripts/inspect-schema.js +211 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/README.md +39 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/SKILL.md +117 -26
- package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/scripts/inject-css.js +40 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/scripts/inject-data.js +68 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-html-report/style-guide/css/bundle.css +1 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/SKILL.md +240 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/assistants.md +256 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/categories.md +101 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/datasources.md +401 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/integrations.md +242 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/skills.md +191 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/users.md +38 -0
- package/dist/agents/plugins/claude/plugin/skills/codemie-sdk/examples/workflows.md +151 -0
- 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 +2 -0
- package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/codex/codex-message-types.d.ts +80 -0
- package/dist/agents/plugins/codex/codex-message-types.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex-message-types.js +36 -0
- package/dist/agents/plugins/codex/codex-message-types.js.map +1 -0
- package/dist/agents/plugins/codex/codex-models.d.ts +9 -0
- package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex-models.js +227 -0
- package/dist/agents/plugins/codex/codex-models.js.map +1 -0
- package/dist/agents/plugins/codex/codex.incremental-sync.d.ts +39 -0
- package/dist/agents/plugins/codex/codex.incremental-sync.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.incremental-sync.js +147 -0
- package/dist/agents/plugins/codex/codex.incremental-sync.js.map +1 -0
- package/dist/agents/plugins/codex/codex.paths.d.ts +29 -0
- package/dist/agents/plugins/codex/codex.paths.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.paths.js +43 -0
- package/dist/agents/plugins/codex/codex.paths.js.map +1 -0
- package/dist/agents/plugins/codex/codex.plugin.d.ts +80 -0
- package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.plugin.js +474 -0
- package/dist/agents/plugins/codex/codex.plugin.js.map +1 -0
- package/dist/agents/plugins/codex/codex.reconciliation.d.ts +43 -0
- package/dist/agents/plugins/codex/codex.reconciliation.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.reconciliation.js +141 -0
- package/dist/agents/plugins/codex/codex.reconciliation.js.map +1 -0
- package/dist/agents/plugins/codex/codex.session.d.ts +58 -0
- package/dist/agents/plugins/codex/codex.session.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.session.js +326 -0
- package/dist/agents/plugins/codex/codex.session.js.map +1 -0
- package/dist/agents/plugins/codex/codex.storage-utils.d.ts +15 -0
- package/dist/agents/plugins/codex/codex.storage-utils.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.storage-utils.js +19 -0
- package/dist/agents/plugins/codex/codex.storage-utils.js.map +1 -0
- package/dist/agents/plugins/codex/index.d.ts +7 -0
- package/dist/agents/plugins/codex/index.d.ts.map +1 -0
- package/dist/agents/plugins/codex/index.js +9 -0
- package/dist/agents/plugins/codex/index.js.map +1 -0
- package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.d.ts +24 -0
- package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js +613 -0
- package/dist/agents/plugins/codex/session/processors/codex.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.d.ts +21 -0
- package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.js +124 -0
- package/dist/agents/plugins/codex/session/processors/codex.metrics-processor.js.map +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +1 -0
- package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode.storage-utils.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/opencode.storage-utils.js +2 -29
- package/dist/agents/plugins/opencode/opencode.storage-utils.js.map +1 -1
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/session/processors/opencode.conversations-processor.js.map +1 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +2 -0
- package/dist/agents/registry.js.map +1 -1
- package/dist/bin/codebase-memory-ui-daemon.d.ts +2 -0
- package/dist/bin/codebase-memory-ui-daemon.d.ts.map +1 -0
- package/dist/bin/codebase-memory-ui-daemon.js +141 -0
- package/dist/bin/codebase-memory-ui-daemon.js.map +1 -0
- package/dist/bin/proxy-daemon.js +4 -0
- package/dist/bin/proxy-daemon.js.map +1 -1
- package/dist/cli/commands/assistants/constants.js +2 -2
- package/dist/cli/commands/assistants/constants.js.map +1 -1
- package/dist/cli/commands/assistants/setup/configuration/constants.js +4 -4
- package/dist/cli/commands/assistants/setup/configuration/constants.js.map +1 -1
- package/dist/cli/commands/assistants/setup/configuration/ui.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/configuration/ui.js +10 -13
- package/dist/cli/commands/assistants/setup/configuration/ui.js.map +1 -1
- package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.d.ts +4 -0
- package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.js +76 -0
- package/dist/cli/commands/assistants/setup/generators/codex-skill-generator.js.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.d.ts +4 -0
- package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.d.ts.map +1 -0
- package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.js +68 -0
- package/dist/cli/commands/assistants/setup/generators/gemini-skill-generator.js.map +1 -0
- package/dist/cli/commands/assistants/setup/helpers.d.ts +3 -2
- package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.js +43 -8
- package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
- package/dist/cli/commands/assistants/setup/index.d.ts +3 -1
- package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/index.js +15 -12
- package/dist/cli/commands/assistants/setup/index.js.map +1 -1
- package/dist/cli/commands/assistants/setup/manualConfiguration/types.d.ts +2 -2
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js +2 -2
- package/dist/cli/commands/assistants/setup/manualConfiguration/ui.js.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/selection/ui.js +8 -13
- package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -1
- package/dist/cli/commands/assistants/setup/summary/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/summary/index.js +14 -8
- package/dist/cli/commands/assistants/setup/summary/index.js.map +1 -1
- package/dist/cli/commands/codebase/daemon-manager.d.ts +24 -0
- package/dist/cli/commands/codebase/daemon-manager.d.ts.map +1 -0
- package/dist/cli/commands/codebase/daemon-manager.js +112 -0
- package/dist/cli/commands/codebase/daemon-manager.js.map +1 -0
- package/dist/cli/commands/codebase/index.d.ts +3 -0
- package/dist/cli/commands/codebase/index.d.ts.map +1 -0
- package/dist/cli/commands/codebase/index.js +130 -0
- package/dist/cli/commands/codebase/index.js.map +1 -0
- package/dist/cli/commands/hook.d.ts.map +1 -1
- package/dist/cli/commands/hook.js +15 -2
- package/dist/cli/commands/hook.js.map +1 -1
- package/dist/cli/commands/install.js +2 -2
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/profile/display.d.ts.map +1 -1
- package/dist/cli/commands/profile/display.js +1 -0
- package/dist/cli/commands/profile/display.js.map +1 -1
- package/dist/cli/commands/profile/index.d.ts +14 -0
- package/dist/cli/commands/profile/index.d.ts.map +1 -1
- package/dist/cli/commands/profile/index.js +110 -27
- package/dist/cli/commands/profile/index.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop-managed-mcp-servers.json +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.d.ts +4 -6
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.js +112 -25
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
- package/dist/cli/commands/proxy/daemon-manager.d.ts +1 -0
- package/dist/cli/commands/proxy/daemon-manager.d.ts.map +1 -1
- package/dist/cli/commands/proxy/daemon-manager.js +2 -0
- package/dist/cli/commands/proxy/daemon-manager.js.map +1 -1
- package/dist/cli/commands/proxy/index.d.ts.map +1 -1
- package/dist/cli/commands/proxy/index.js +42 -0
- package/dist/cli/commands/proxy/index.js.map +1 -1
- package/dist/cli/commands/sdk/assistants.d.ts +3 -0
- package/dist/cli/commands/sdk/assistants.d.ts.map +1 -0
- package/dist/cli/commands/sdk/assistants.js +211 -0
- package/dist/cli/commands/sdk/assistants.js.map +1 -0
- package/dist/cli/commands/sdk/categories.d.ts +3 -0
- package/dist/cli/commands/sdk/categories.d.ts.map +1 -0
- package/dist/cli/commands/sdk/categories.js +186 -0
- package/dist/cli/commands/sdk/categories.js.map +1 -0
- package/dist/cli/commands/sdk/datasources.d.ts +3 -0
- package/dist/cli/commands/sdk/datasources.d.ts.map +1 -0
- package/dist/cli/commands/sdk/datasources.js +276 -0
- package/dist/cli/commands/sdk/datasources.js.map +1 -0
- package/dist/cli/commands/sdk/index.d.ts +3 -0
- package/dist/cli/commands/sdk/index.d.ts.map +1 -0
- package/dist/cli/commands/sdk/index.js +23 -0
- package/dist/cli/commands/sdk/index.js.map +1 -0
- package/dist/cli/commands/sdk/integrations.d.ts +3 -0
- package/dist/cli/commands/sdk/integrations.d.ts.map +1 -0
- package/dist/cli/commands/sdk/integrations.js +220 -0
- package/dist/cli/commands/sdk/integrations.js.map +1 -0
- package/dist/cli/commands/sdk/llm.d.ts +3 -0
- package/dist/cli/commands/sdk/llm.d.ts.map +1 -0
- package/dist/cli/commands/sdk/llm.js +48 -0
- package/dist/cli/commands/sdk/llm.js.map +1 -0
- package/dist/cli/commands/sdk/services/assistants.d.ts +13 -0
- package/dist/cli/commands/sdk/services/assistants.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/assistants.js +60 -0
- package/dist/cli/commands/sdk/services/assistants.js.map +1 -0
- package/dist/cli/commands/sdk/services/categories.d.ts +8 -0
- package/dist/cli/commands/sdk/services/categories.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/categories.js +19 -0
- package/dist/cli/commands/sdk/services/categories.js.map +1 -0
- package/dist/cli/commands/sdk/services/datasources.d.ts +33 -0
- package/dist/cli/commands/sdk/services/datasources.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/datasources.js +268 -0
- package/dist/cli/commands/sdk/services/datasources.js.map +1 -0
- package/dist/cli/commands/sdk/services/index.d.ts +6 -0
- package/dist/cli/commands/sdk/services/index.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/index.js +6 -0
- package/dist/cli/commands/sdk/services/index.js.map +1 -0
- package/dist/cli/commands/sdk/services/integrations.d.ts +27 -0
- package/dist/cli/commands/sdk/services/integrations.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/integrations.js +59 -0
- package/dist/cli/commands/sdk/services/integrations.js.map +1 -0
- package/dist/cli/commands/sdk/services/llm.d.ts +4 -0
- package/dist/cli/commands/sdk/services/llm.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/llm.js +7 -0
- package/dist/cli/commands/sdk/services/llm.js.map +1 -0
- package/dist/cli/commands/sdk/services/skills.d.ts +23 -0
- package/dist/cli/commands/sdk/services/skills.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/skills.js +69 -0
- package/dist/cli/commands/sdk/services/skills.js.map +1 -0
- package/dist/cli/commands/sdk/services/users.d.ts +4 -0
- package/dist/cli/commands/sdk/services/users.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/users.js +7 -0
- package/dist/cli/commands/sdk/services/users.js.map +1 -0
- package/dist/cli/commands/sdk/services/workflows.d.ts +7 -0
- package/dist/cli/commands/sdk/services/workflows.d.ts.map +1 -0
- package/dist/cli/commands/sdk/services/workflows.js +34 -0
- package/dist/cli/commands/sdk/services/workflows.js.map +1 -0
- package/dist/cli/commands/sdk/skills.d.ts +3 -0
- package/dist/cli/commands/sdk/skills.d.ts.map +1 -0
- package/dist/cli/commands/sdk/skills.js +492 -0
- package/dist/cli/commands/sdk/skills.js.map +1 -0
- package/dist/cli/commands/sdk/users.d.ts +3 -0
- package/dist/cli/commands/sdk/users.d.ts.map +1 -0
- package/dist/cli/commands/sdk/users.js +81 -0
- package/dist/cli/commands/sdk/users.js.map +1 -0
- package/dist/cli/commands/sdk/utils/cli-utils.d.ts +35 -0
- package/dist/cli/commands/sdk/utils/cli-utils.d.ts.map +1 -0
- package/dist/cli/commands/sdk/utils/cli-utils.js +110 -0
- package/dist/cli/commands/sdk/utils/cli-utils.js.map +1 -0
- package/dist/cli/commands/sdk/utils/datasource-types.d.ts +9 -0
- package/dist/cli/commands/sdk/utils/datasource-types.d.ts.map +1 -0
- package/dist/cli/commands/sdk/utils/datasource-types.js +61 -0
- package/dist/cli/commands/sdk/utils/datasource-types.js.map +1 -0
- package/dist/cli/commands/sdk/utils/file-utils.d.ts +8 -0
- package/dist/cli/commands/sdk/utils/file-utils.d.ts.map +1 -0
- package/dist/cli/commands/sdk/utils/file-utils.js +21 -0
- package/dist/cli/commands/sdk/utils/file-utils.js.map +1 -0
- package/dist/cli/commands/sdk/utils/render.d.ts +82 -0
- package/dist/cli/commands/sdk/utils/render.d.ts.map +1 -0
- package/dist/cli/commands/sdk/utils/render.js +149 -0
- package/dist/cli/commands/sdk/utils/render.js.map +1 -0
- package/dist/cli/commands/sdk/workflows.d.ts +3 -0
- package/dist/cli/commands/sdk/workflows.d.ts.map +1 -0
- package/dist/cli/commands/sdk/workflows.js +170 -0
- package/dist/cli/commands/sdk/workflows.js.map +1 -0
- package/dist/cli/commands/setup.js +1 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shared/agent-targets.d.ts +10 -0
- package/dist/cli/commands/shared/agent-targets.d.ts.map +1 -0
- package/dist/cli/commands/shared/agent-targets.js +220 -0
- package/dist/cli/commands/shared/agent-targets.js.map +1 -0
- package/dist/cli/commands/shared/prompts/storage-scope.d.ts.map +1 -1
- package/dist/cli/commands/shared/prompts/storage-scope.js +9 -2
- package/dist/cli/commands/shared/prompts/storage-scope.js.map +1 -1
- package/dist/cli/commands/shared/selection/ui.d.ts +22 -0
- package/dist/cli/commands/shared/selection/ui.d.ts.map +1 -1
- package/dist/cli/commands/shared/selection/ui.js +34 -0
- package/dist/cli/commands/shared/selection/ui.js.map +1 -1
- package/dist/cli/commands/skills/lib/skills-metrics.d.ts.map +1 -1
- package/dist/cli/commands/skills/lib/skills-metrics.js +47 -11
- package/dist/cli/commands/skills/lib/skills-metrics.js.map +1 -1
- package/dist/cli/commands/skills/setup/generators/codex-skill-generator.d.ts +4 -0
- package/dist/cli/commands/skills/setup/generators/codex-skill-generator.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/generators/codex-skill-generator.js +51 -0
- package/dist/cli/commands/skills/setup/generators/codex-skill-generator.js.map +1 -0
- package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.d.ts +4 -0
- package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.d.ts.map +1 -0
- package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.js +51 -0
- package/dist/cli/commands/skills/setup/generators/gemini-skill-generator.js.map +1 -0
- package/dist/cli/commands/skills/setup/helpers.d.ts +3 -2
- package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/helpers.js +31 -6
- package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
- package/dist/cli/commands/skills/setup/index.d.ts +2 -1
- package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/index.js +14 -11
- package/dist/cli/commands/skills/setup/index.js.map +1 -1
- package/dist/cli/commands/skills/setup/selection/ui.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/selection/ui.js +8 -13
- package/dist/cli/commands/skills/setup/selection/ui.js.map +1 -1
- package/dist/cli/commands/test-metrics.js +3 -4
- package/dist/cli/commands/test-metrics.js.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/env/types.d.ts +2 -0
- package/dist/env/types.d.ts.map +1 -1
- package/dist/env/types.js.map +1 -1
- package/dist/frameworks/plugins/bmad.plugin.d.ts +10 -1
- package/dist/frameworks/plugins/bmad.plugin.d.ts.map +1 -1
- package/dist/frameworks/plugins/bmad.plugin.js +108 -9
- package/dist/frameworks/plugins/bmad.plugin.js.map +1 -1
- package/dist/frameworks/plugins/codebase-memory.plugin.d.ts +18 -0
- package/dist/frameworks/plugins/codebase-memory.plugin.d.ts.map +1 -0
- package/dist/frameworks/plugins/codebase-memory.plugin.js +131 -0
- package/dist/frameworks/plugins/codebase-memory.plugin.js.map +1 -0
- package/dist/frameworks/plugins/index.d.ts +1 -0
- package/dist/frameworks/plugins/index.d.ts.map +1 -1
- package/dist/frameworks/plugins/index.js +3 -0
- package/dist/frameworks/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +4 -4
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts +20 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js +104 -0
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js +24 -3
- package/dist/providers/plugins/sso/proxy/plugins/gateway-key.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +5 -0
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js +10 -3
- package/dist/providers/plugins/sso/proxy/plugins/logging.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js +26 -8
- package/dist/providers/plugins/sso/proxy/plugins/sso.session-sync.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.js +21 -4
- package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.js +5 -72
- package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js +95 -4
- package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts +2 -2
- package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/constants.js +2 -2
- package/dist/providers/plugins/sso/session/processors/conversations/constants.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js +85 -21
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts +10 -2
- package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +80 -46
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts +1 -9
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +94 -30
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts +4 -6
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js +24 -25
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +140 -99
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts +11 -3
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.auth.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.auth.js +22 -4
- package/dist/providers/plugins/sso/sso.auth.js.map +1 -1
- package/dist/providers/plugins/sso/sso.setup-steps.js +2 -2
- package/dist/providers/plugins/sso/sso.setup-steps.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +4 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -1
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +1 -3
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
- package/dist/utils/browser.d.ts +7 -0
- package/dist/utils/browser.d.ts.map +1 -0
- package/dist/utils/browser.js +10 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +7 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/paths.d.ts +8 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +15 -0
- package/dist/utils/paths.js.map +1 -1
- package/package.json +2 -1
- package/scripts/compare-codex-conversations.mjs +894 -0
- package/scripts/validate-secrets.js +7 -3
- package/dist/agents/plugins/claude/plugin/claude-templates/README.md +0 -539
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/CLAUDE.md.template +0 -252
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/code-review-agent-template.md.template +0 -433
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/refactor-cleaner-agent.md.template +0 -337
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/solution-architect-agent.md.template +0 -197
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/agents/unit-tester-agent.md.template +0 -258
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/api/api-patterns.md.template +0 -179
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/architecture/architecture.md.template +0 -197
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/data/database-patterns.md.template +0 -248
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/development/development-practices.md.template +0 -298
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/integration/external-integrations.md.template +0 -160
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/security/security-practices.md.template +0 -295
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/code-quality.md.template +0 -186
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/standards/git-workflow.md.template +0 -177
- package/dist/agents/plugins/claude/plugin/claude-templates/templates/guides/testing/testing-patterns.md.template +0 -315
- package/dist/agents/plugins/claude/plugin/commands/codemie-init.md +0 -522
- package/dist/agents/plugins/claude/plugin/commands/handoff.md +0 -56
- package/dist/agents/plugins/claude/plugin/commands/memory-refresh.md +0 -549
- package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-baseline.sh +0 -39
- package/dist/agents/plugins/claude/plugin/scripts/bash/rtk-rewrite.sh +0 -101
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/SKILL.md +0 -206
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-agent.md +0 -45
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-claude-md-snippet.md +0 -40
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-command.md +0 -30
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-hooks.json +0 -23
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-skill.md +0 -48
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-agent.md +0 -145
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-claude-md-snippet.md +0 -126
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-command.md +0 -170
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-hooks.json +0 -46
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-skill.md +0 -144
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/sample-report.md +0 -223
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/best-practices.md +0 -510
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/component-checklists.md +0 -413
- package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/scripts/scan-repo.sh +0 -162
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// src/agents/plugins/codex/codex.reconciliation.ts
|
|
2
|
+
/**
|
|
3
|
+
* Codex Stale-Session Reconciliation
|
|
4
|
+
*
|
|
5
|
+
* Codex sessions that are killed hard (kill -9, OS shutdown, parent process
|
|
6
|
+
* termination) never run `onSessionEnd`. Their session JSON in
|
|
7
|
+
* `~/.codemie/sessions/{id}.json` stays `status: "active"` forever and no
|
|
8
|
+
* terminal `codemie_cli_session_total` lifecycle metric is emitted, so
|
|
9
|
+
* server-side analytics see them as never-finishing.
|
|
10
|
+
*
|
|
11
|
+
* On every codex `onSessionStart`, we scan for such stranded sessions and
|
|
12
|
+
* synthesise a SessionEnd with `reason: "interrupted"` to finalise them.
|
|
13
|
+
*
|
|
14
|
+
* Inactivity threshold defaults to 30 minutes; the lookback window is capped
|
|
15
|
+
* to 24 hours so a first deploy does not emit a burst of synthetic events for
|
|
16
|
+
* ancient stranded rollouts.
|
|
17
|
+
*/
|
|
18
|
+
import { readdir, readFile } from 'fs/promises';
|
|
19
|
+
import { existsSync } from 'fs';
|
|
20
|
+
import { basename, join } from 'path';
|
|
21
|
+
import { getCodemiePath } from '../../../utils/paths.js';
|
|
22
|
+
import { logger } from '../../../utils/logger.js';
|
|
23
|
+
const DEFAULT_INACTIVITY_THRESHOLD_MS = 30 * 60 * 1000;
|
|
24
|
+
const DEFAULT_MAX_LOOKBACK_MS = 24 * 60 * 60 * 1000;
|
|
25
|
+
/**
|
|
26
|
+
* Find codex sessions in `~/.codemie/sessions/` that look stranded.
|
|
27
|
+
*/
|
|
28
|
+
export async function findStaleCodexSessions(opts = {}) {
|
|
29
|
+
const now = opts.now ?? Date.now();
|
|
30
|
+
const inactivityThresholdMs = opts.inactivityThresholdMs ?? DEFAULT_INACTIVITY_THRESHOLD_MS;
|
|
31
|
+
const maxLookbackMs = opts.maxLookbackMs ?? DEFAULT_MAX_LOOKBACK_MS;
|
|
32
|
+
const sessionsDir = getCodemiePath('sessions');
|
|
33
|
+
if (!existsSync(sessionsDir)) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
let entries;
|
|
37
|
+
try {
|
|
38
|
+
entries = await readdir(sessionsDir);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
logger.debug('[codex-reconciliation] Failed to read sessions dir', error);
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const stale = [];
|
|
45
|
+
const cutoffActivity = now - inactivityThresholdMs;
|
|
46
|
+
const cutoffStart = now - maxLookbackMs;
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
if (!entry.endsWith('.json'))
|
|
49
|
+
continue;
|
|
50
|
+
if (entry.startsWith('completed_'))
|
|
51
|
+
continue;
|
|
52
|
+
if (entry.includes('_metrics') || entry.includes('_conversation'))
|
|
53
|
+
continue;
|
|
54
|
+
const filePath = join(sessionsDir, entry);
|
|
55
|
+
let session;
|
|
56
|
+
try {
|
|
57
|
+
const content = await readFile(filePath, 'utf-8');
|
|
58
|
+
session = JSON.parse(content);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
logger.debug(`[codex-reconciliation] Skipping unreadable file ${basename(filePath)}`, error);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (session.agentName !== 'codex')
|
|
65
|
+
continue;
|
|
66
|
+
if (session.status !== 'active')
|
|
67
|
+
continue;
|
|
68
|
+
if (typeof session.startTime !== 'number')
|
|
69
|
+
continue;
|
|
70
|
+
if (session.startTime < cutoffStart)
|
|
71
|
+
continue;
|
|
72
|
+
const lastActivity = computeLastActivity(session);
|
|
73
|
+
if (lastActivity > cutoffActivity)
|
|
74
|
+
continue;
|
|
75
|
+
stale.push({
|
|
76
|
+
sessionId: session.sessionId,
|
|
77
|
+
startTime: session.startTime,
|
|
78
|
+
lastActivityMs: lastActivity,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return stale;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Synthesise a SessionEnd for each stale codex session.
|
|
85
|
+
*
|
|
86
|
+
* `processEvent` is injected so tests can drive this without touching the
|
|
87
|
+
* hook module's network and SSO-credential code paths.
|
|
88
|
+
*/
|
|
89
|
+
export async function reconcileStaleCodexSessions(env, buildHookConfig, opts = {}) {
|
|
90
|
+
const stale = await findStaleCodexSessions(opts);
|
|
91
|
+
if (stale.length === 0) {
|
|
92
|
+
return { reconciled: 0, failed: 0 };
|
|
93
|
+
}
|
|
94
|
+
logger.info(`[codex-reconciliation] Found ${stale.length} stranded codex session(s); reconciling`);
|
|
95
|
+
const processEvent = opts.processEvent ?? (await loadDefaultProcessEvent());
|
|
96
|
+
let reconciled = 0;
|
|
97
|
+
let failed = 0;
|
|
98
|
+
for (const entry of stale) {
|
|
99
|
+
try {
|
|
100
|
+
const event = {
|
|
101
|
+
hook_event_name: 'SessionEnd',
|
|
102
|
+
session_id: entry.sessionId,
|
|
103
|
+
transcript_path: '',
|
|
104
|
+
permission_mode: 'default',
|
|
105
|
+
cwd: process.cwd(),
|
|
106
|
+
reason: 'interrupted',
|
|
107
|
+
};
|
|
108
|
+
await processEvent(event, buildHookConfig(env, entry.sessionId));
|
|
109
|
+
reconciled++;
|
|
110
|
+
logger.info(`[codex-reconciliation] Reconciled stranded session ${entry.sessionId}`);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
failed++;
|
|
114
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
115
|
+
logger.warn(`[codex-reconciliation] Failed to reconcile ${entry.sessionId}: ${msg}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return { reconciled, failed };
|
|
119
|
+
}
|
|
120
|
+
function computeLastActivity(session) {
|
|
121
|
+
const candidates = [];
|
|
122
|
+
if (typeof session.startTime === 'number')
|
|
123
|
+
candidates.push(session.startTime);
|
|
124
|
+
const metrics = session.sync?.metrics;
|
|
125
|
+
if (metrics) {
|
|
126
|
+
if (typeof metrics.lastSyncAt === 'number')
|
|
127
|
+
candidates.push(metrics.lastSyncAt);
|
|
128
|
+
if (typeof metrics.lastProcessedTimestamp === 'number')
|
|
129
|
+
candidates.push(metrics.lastProcessedTimestamp);
|
|
130
|
+
}
|
|
131
|
+
const conversations = session.sync?.conversations;
|
|
132
|
+
if (conversations && typeof conversations.lastSyncAt === 'number') {
|
|
133
|
+
candidates.push(conversations.lastSyncAt);
|
|
134
|
+
}
|
|
135
|
+
return candidates.length === 0 ? 0 : Math.max(...candidates);
|
|
136
|
+
}
|
|
137
|
+
async function loadDefaultProcessEvent() {
|
|
138
|
+
const mod = await import('../../../cli/commands/hook.js');
|
|
139
|
+
return mod.processEvent;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=codex.reconciliation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.reconciliation.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.reconciliation.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,MAAM,+BAA+B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAiCpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAA8B,EAAE;IAEhC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,+BAA+B,CAAC;IAC5F,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAC;IAEpE,MAAM,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,KAAK,CAAC,CAAC;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,GAAG,GAAG,qBAAqB,CAAC;IACnD,MAAM,WAAW,GAAG,GAAG,GAAG,aAAa,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACvC,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,SAAS;QAC7C,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,SAAS;QAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC1C,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,mDAAmD,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC7F,SAAS;QACX,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO;YAAE,SAAS;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QAC1C,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;YAAE,SAAS;QACpD,IAAI,OAAO,CAAC,SAAS,GAAG,WAAW;YAAE,SAAS;QAE9C,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,YAAY,GAAG,cAAc;YAAE,SAAS;QAE5C,KAAK,CAAC,IAAI,CAAC;YACT,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,cAAc,EAAE,YAAY;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAsB,EACtB,eAAoF,EACpF,OAAyB,EAAE;IAE3B,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,gCAAgC,KAAK,CAAC,MAAM,yCAAyC,CAAC,CAAC;IAEnG,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,uBAAuB,EAAE,CAAC,CAAC;IAE5E,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,KAAK,GAAwB;gBACjC,eAAe,EAAE,YAAY;gBAC7B,UAAU,EAAE,KAAK,CAAC,SAAS;gBAC3B,eAAe,EAAE,EAAE;gBACnB,eAAe,EAAE,SAAS;gBAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,MAAM,EAAE,aAAa;aACtB,CAAC;YACF,MAAM,YAAY,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YACjE,UAAU,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,sDAAsD,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,CAAC;YACT,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,8CAA8C,KAAK,CAAC,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgB;IAC3C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChF,IAAI,OAAO,OAAO,CAAC,sBAAsB,KAAK,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC;IAClD,IAAI,aAAa,IAAI,OAAO,aAAa,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,uBAAuB;IACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAC1D,OAAO,GAAG,CAAC,YAAyC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Session Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements SessionAdapter for Codex CLI rollout files.
|
|
5
|
+
*
|
|
6
|
+
* Rollout files are stored at:
|
|
7
|
+
* ~/.codex/sessions/YYYY/MM/DD/rollout-{ISO8601}-{uuid}.jsonl
|
|
8
|
+
*
|
|
9
|
+
* Discovery uses mtime-based age filtering (D-3): file modification time is
|
|
10
|
+
* cheaper than parsing filename timestamps and equally accurate for recency filtering.
|
|
11
|
+
*
|
|
12
|
+
* Parsing reads JSONL tolerantly (skip malformed lines) and extracts:
|
|
13
|
+
* - session_meta: session identity, cwd, git info, cli version
|
|
14
|
+
* - turn_context: actual model used (last one wins in multi-turn sessions)
|
|
15
|
+
* - response_item: function_call / function_call_output for tool pairing
|
|
16
|
+
* - event_msg: user messages
|
|
17
|
+
*
|
|
18
|
+
* References:
|
|
19
|
+
* - https://github.com/openai/codex/blob/main/codex-rs/docs/cli-reference.md
|
|
20
|
+
*/
|
|
21
|
+
import type { SessionAdapter, ParsedSession, AggregatedResult, SessionDiscoveryOptions, SessionDescriptor } from '../../core/session/BaseSessionAdapter.js';
|
|
22
|
+
import type { SessionProcessor, ProcessingContext } from '../../core/session/BaseProcessor.js';
|
|
23
|
+
import type { AgentMetadata } from '../../core/types.js';
|
|
24
|
+
export declare class CodexSessionAdapter implements SessionAdapter {
|
|
25
|
+
private readonly metadata;
|
|
26
|
+
readonly agentName = "codex";
|
|
27
|
+
private processors;
|
|
28
|
+
constructor(metadata: AgentMetadata);
|
|
29
|
+
private initializeProcessors;
|
|
30
|
+
registerProcessor(processor: SessionProcessor): void;
|
|
31
|
+
private applySyncUpdates;
|
|
32
|
+
/**
|
|
33
|
+
* Discover Codex rollout files within maxAgeDays.
|
|
34
|
+
*
|
|
35
|
+
* Algorithm:
|
|
36
|
+
* 1. Resolve base path via getCodexSessionsPath()
|
|
37
|
+
* 2. Return [] if path does not exist
|
|
38
|
+
* 3. Enumerate YYYY/MM/DD directories (3-level traversal)
|
|
39
|
+
* 4. For each .jsonl file: extract UUID, stat mtime, apply age filter
|
|
40
|
+
* 5. Return sorted by mtime descending (newest first)
|
|
41
|
+
*/
|
|
42
|
+
discoverSessions(options?: SessionDiscoveryOptions): Promise<SessionDescriptor[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Parse a Codex rollout JSONL file into ParsedSession format.
|
|
45
|
+
*
|
|
46
|
+
* Reads all records tolerantly, separates by type, extracts:
|
|
47
|
+
* - session_meta (once) → identity, cwd, git
|
|
48
|
+
* - turn_context (last one wins) → actual model
|
|
49
|
+
* - response_item (function_call / function_call_output) → preserved in messages
|
|
50
|
+
* - event_msg (user_message) → preserved in messages
|
|
51
|
+
*/
|
|
52
|
+
parseSessionFile(filePath: string, sessionId: string): Promise<ParsedSession>;
|
|
53
|
+
/**
|
|
54
|
+
* Process a Codex session file with all registered processors.
|
|
55
|
+
*/
|
|
56
|
+
processSession(filePath: string, sessionId: string, context: ProcessingContext): Promise<AggregatedResult>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=codex.session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.session.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.session.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAoB,MAAM,qCAAqC,CAAC;AACjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiBzD,qBAAa,mBAAoB,YAAW,cAAc;IAI5C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAHrC,QAAQ,CAAC,SAAS,WAAW;IAC7B,OAAO,CAAC,UAAU,CAA0B;gBAEf,QAAQ,EAAE,aAAa;IAOpD,OAAO,CAAC,oBAAoB;IAM5B,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;YAMtC,gBAAgB;IA2B9B;;;;;;;;;OASG;IACG,gBAAgB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwHvF;;;;;;;;OAQG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAsEnF;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;CAiE7B"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
// src/agents/plugins/codex/codex.session.ts
|
|
2
|
+
/**
|
|
3
|
+
* Codex Session Adapter
|
|
4
|
+
*
|
|
5
|
+
* Implements SessionAdapter for Codex CLI rollout files.
|
|
6
|
+
*
|
|
7
|
+
* Rollout files are stored at:
|
|
8
|
+
* ~/.codex/sessions/YYYY/MM/DD/rollout-{ISO8601}-{uuid}.jsonl
|
|
9
|
+
*
|
|
10
|
+
* Discovery uses mtime-based age filtering (D-3): file modification time is
|
|
11
|
+
* cheaper than parsing filename timestamps and equally accurate for recency filtering.
|
|
12
|
+
*
|
|
13
|
+
* Parsing reads JSONL tolerantly (skip malformed lines) and extracts:
|
|
14
|
+
* - session_meta: session identity, cwd, git info, cli version
|
|
15
|
+
* - turn_context: actual model used (last one wins in multi-turn sessions)
|
|
16
|
+
* - response_item: function_call / function_call_output for tool pairing
|
|
17
|
+
* - event_msg: user messages
|
|
18
|
+
*
|
|
19
|
+
* References:
|
|
20
|
+
* - https://github.com/openai/codex/blob/main/codex-rs/docs/cli-reference.md
|
|
21
|
+
*/
|
|
22
|
+
import { readdir, stat } from 'fs/promises';
|
|
23
|
+
import { existsSync } from 'fs';
|
|
24
|
+
import { join } from 'path';
|
|
25
|
+
import { getCodexSessionsPath } from './codex.paths.js';
|
|
26
|
+
import { readCodexJsonlTolerant } from './codex.storage-utils.js';
|
|
27
|
+
import { logger } from '../../../utils/logger.js';
|
|
28
|
+
import { ConfigurationError } from '../../../utils/errors.js';
|
|
29
|
+
import { sanitizeLogArgs } from '../../../utils/security.js';
|
|
30
|
+
import { CodexMetricsProcessor } from './session/processors/codex.metrics-processor.js';
|
|
31
|
+
import { CodexConversationsProcessor } from './session/processors/codex.conversations-processor.js';
|
|
32
|
+
/** Regex to extract UUID from rollout filename: rollout-{ISO8601}-{uuid}.jsonl */
|
|
33
|
+
const ROLLOUT_UUID_REGEX = /rollout-.*-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/;
|
|
34
|
+
export class CodexSessionAdapter {
|
|
35
|
+
metadata;
|
|
36
|
+
agentName = 'codex';
|
|
37
|
+
processors = [];
|
|
38
|
+
constructor(metadata) {
|
|
39
|
+
this.metadata = metadata;
|
|
40
|
+
if (!metadata.dataPaths?.home) {
|
|
41
|
+
throw new ConfigurationError('Agent metadata must provide dataPaths.home');
|
|
42
|
+
}
|
|
43
|
+
this.initializeProcessors();
|
|
44
|
+
}
|
|
45
|
+
initializeProcessors() {
|
|
46
|
+
this.registerProcessor(new CodexMetricsProcessor());
|
|
47
|
+
this.registerProcessor(new CodexConversationsProcessor());
|
|
48
|
+
logger.debug(`[codex-adapter] Initialized ${this.processors.length} processors`);
|
|
49
|
+
}
|
|
50
|
+
registerProcessor(processor) {
|
|
51
|
+
this.processors.push(processor);
|
|
52
|
+
this.processors.sort((a, b) => a.priority - b.priority);
|
|
53
|
+
logger.debug(`[codex-adapter] Registered processor: ${processor.name} (priority: ${processor.priority})`);
|
|
54
|
+
}
|
|
55
|
+
async applySyncUpdates(sessionId, results) {
|
|
56
|
+
try {
|
|
57
|
+
const { SessionStore } = await import('../../core/session/SessionStore.js');
|
|
58
|
+
const { applyProcessingSyncUpdates } = await import('../../core/session/sync-state-utils.js');
|
|
59
|
+
const sessionStore = new SessionStore();
|
|
60
|
+
const session = await sessionStore.loadSession(sessionId);
|
|
61
|
+
if (!session) {
|
|
62
|
+
logger.warn(`[codex-adapter] Session not found for sync updates: ${sessionId}`);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const hasChanges = applyProcessingSyncUpdates(session, results);
|
|
66
|
+
if (!hasChanges) {
|
|
67
|
+
logger.debug('[codex-adapter] No processor sync updates to persist');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
await sessionStore.saveSession(session);
|
|
71
|
+
logger.debug('[codex-adapter] Session persisted after processor sync updates');
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
logger.error('[codex-adapter] Failed to apply sync updates:', error);
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Discover Codex rollout files within maxAgeDays.
|
|
80
|
+
*
|
|
81
|
+
* Algorithm:
|
|
82
|
+
* 1. Resolve base path via getCodexSessionsPath()
|
|
83
|
+
* 2. Return [] if path does not exist
|
|
84
|
+
* 3. Enumerate YYYY/MM/DD directories (3-level traversal)
|
|
85
|
+
* 4. For each .jsonl file: extract UUID, stat mtime, apply age filter
|
|
86
|
+
* 5. Return sorted by mtime descending (newest first)
|
|
87
|
+
*/
|
|
88
|
+
async discoverSessions(options) {
|
|
89
|
+
const sessionsPath = getCodexSessionsPath();
|
|
90
|
+
if (!sessionsPath) {
|
|
91
|
+
logger.debug('[codex-discovery] ~/.codex/sessions not found (Codex not run yet)');
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
const maxAgeDays = options?.maxAgeDays ?? 30;
|
|
95
|
+
const maxAgeMs = maxAgeDays * 24 * 60 * 60 * 1000;
|
|
96
|
+
const cutoffMs = Date.now() - maxAgeMs;
|
|
97
|
+
const results = [];
|
|
98
|
+
try {
|
|
99
|
+
// Level 1: year directories
|
|
100
|
+
const yearDirs = await readdir(sessionsPath);
|
|
101
|
+
const yearPaths = (await Promise.all(yearDirs.map(async (yearDir) => {
|
|
102
|
+
const yearPath = join(sessionsPath, yearDir);
|
|
103
|
+
return (await isDirectory(yearPath)) ? yearPath : null;
|
|
104
|
+
}))).filter((p) => p !== null);
|
|
105
|
+
await Promise.all(yearPaths.map(async (yearPath) => {
|
|
106
|
+
// Level 2: month directories
|
|
107
|
+
let monthDirs;
|
|
108
|
+
try {
|
|
109
|
+
monthDirs = await readdir(yearPath);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const monthPaths = (await Promise.all(monthDirs.map(async (monthDir) => {
|
|
115
|
+
const monthPath = join(yearPath, monthDir);
|
|
116
|
+
return (await isDirectory(monthPath)) ? monthPath : null;
|
|
117
|
+
}))).filter((p) => p !== null);
|
|
118
|
+
await Promise.all(monthPaths.map(async (monthPath) => {
|
|
119
|
+
// Level 3: day directories
|
|
120
|
+
let dayDirs;
|
|
121
|
+
try {
|
|
122
|
+
dayDirs = await readdir(monthPath);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const dayPaths = (await Promise.all(dayDirs.map(async (dayDir) => {
|
|
128
|
+
const dayPath = join(monthPath, dayDir);
|
|
129
|
+
return (await isDirectory(dayPath)) ? dayPath : null;
|
|
130
|
+
}))).filter((p) => p !== null);
|
|
131
|
+
await Promise.all(dayPaths.map(async (dayPath) => {
|
|
132
|
+
// Level 4: rollout files
|
|
133
|
+
let files;
|
|
134
|
+
try {
|
|
135
|
+
files = await readdir(dayPath);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
await Promise.all(files.map(async (file) => {
|
|
141
|
+
if (!file.endsWith('.jsonl'))
|
|
142
|
+
return;
|
|
143
|
+
const match = ROLLOUT_UUID_REGEX.exec(file);
|
|
144
|
+
if (!match) {
|
|
145
|
+
logger.debug(`[codex-discovery] Skipping file without UUID in name: ${file}`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const sessionUuid = match[1];
|
|
149
|
+
const filePath = join(dayPath, file);
|
|
150
|
+
try {
|
|
151
|
+
const fileStat = await stat(filePath);
|
|
152
|
+
const mtime = fileStat.mtime.getTime();
|
|
153
|
+
// Age filter based on mtime (D-3)
|
|
154
|
+
if (mtime < cutoffMs) {
|
|
155
|
+
logger.debug(`[codex-discovery] Skipping old rollout: ${file}`);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
results.push({
|
|
159
|
+
sessionId: sessionUuid,
|
|
160
|
+
filePath,
|
|
161
|
+
createdAt: mtime,
|
|
162
|
+
agentName: 'codex',
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
logger.debug(`[codex-discovery] Could not stat file: ${filePath}`);
|
|
167
|
+
}
|
|
168
|
+
}));
|
|
169
|
+
}));
|
|
170
|
+
}));
|
|
171
|
+
}));
|
|
172
|
+
// Sort by mtime descending (newest first)
|
|
173
|
+
results.sort((a, b) => b.createdAt - a.createdAt);
|
|
174
|
+
// Apply limit
|
|
175
|
+
if (options?.limit && options.limit > 0) {
|
|
176
|
+
const limited = results.slice(0, options.limit);
|
|
177
|
+
logger.debug(`[codex-discovery] Found ${results.length} rollout files, returning ${limited.length} (limit: ${options.limit})`);
|
|
178
|
+
return limited;
|
|
179
|
+
}
|
|
180
|
+
logger.debug(`[codex-discovery] Found ${results.length} rollout files`);
|
|
181
|
+
return results;
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
logger.error('[codex-discovery] Failed to scan sessions directory:', error);
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Parse a Codex rollout JSONL file into ParsedSession format.
|
|
190
|
+
*
|
|
191
|
+
* Reads all records tolerantly, separates by type, extracts:
|
|
192
|
+
* - session_meta (once) → identity, cwd, git
|
|
193
|
+
* - turn_context (last one wins) → actual model
|
|
194
|
+
* - response_item (function_call / function_call_output) → preserved in messages
|
|
195
|
+
* - event_msg (user_message) → preserved in messages
|
|
196
|
+
*/
|
|
197
|
+
async parseSessionFile(filePath, sessionId) {
|
|
198
|
+
try {
|
|
199
|
+
const records = await readCodexJsonlTolerant(filePath);
|
|
200
|
+
if (records.length === 0) {
|
|
201
|
+
throw new ConfigurationError(`Rollout file is empty or unreadable: ${filePath}`);
|
|
202
|
+
}
|
|
203
|
+
// Separate records by type
|
|
204
|
+
let sessionMeta;
|
|
205
|
+
let lastTurnContext;
|
|
206
|
+
for (const record of records) {
|
|
207
|
+
if (record.type === 'session_meta') {
|
|
208
|
+
sessionMeta = record.payload;
|
|
209
|
+
}
|
|
210
|
+
else if (record.type === 'turn_context') {
|
|
211
|
+
// Last turn_context wins (D-2)
|
|
212
|
+
lastTurnContext = record.payload;
|
|
213
|
+
}
|
|
214
|
+
// response_item and event_msg records are preserved in messages as-is
|
|
215
|
+
}
|
|
216
|
+
if (!sessionMeta) {
|
|
217
|
+
throw new ConfigurationError(`No session_meta record found in rollout file: ${filePath}`);
|
|
218
|
+
}
|
|
219
|
+
// Validate session_meta.id (D-6: recordId uses this UUID)
|
|
220
|
+
if (!sessionMeta.id || typeof sessionMeta.id !== 'string') {
|
|
221
|
+
throw new ConfigurationError(`session_meta.id is missing or invalid in rollout file: ${filePath}`);
|
|
222
|
+
}
|
|
223
|
+
// Sanitize cwd before logging (security requirement)
|
|
224
|
+
logger.debug('[codex-adapter] Parsing rollout file', ...sanitizeLogArgs({
|
|
225
|
+
sessionMetaId: sessionMeta.id,
|
|
226
|
+
recordCount: records.length,
|
|
227
|
+
}));
|
|
228
|
+
// Resolve model: turn_context.model (primary) → session_meta.model_provider (fallback) (D-2)
|
|
229
|
+
const resolvedModel = lastTurnContext?.model?.trim() || sessionMeta.model_provider?.trim() || undefined;
|
|
230
|
+
// Build ParsedSession
|
|
231
|
+
const metadata = {
|
|
232
|
+
projectPath: sessionMeta.cwd,
|
|
233
|
+
createdAt: sessionMeta.timestamp,
|
|
234
|
+
repository: sessionMeta.git?.repository_url,
|
|
235
|
+
branch: sessionMeta.git?.branch,
|
|
236
|
+
codexSessionId: sessionMeta.id,
|
|
237
|
+
model: resolvedModel,
|
|
238
|
+
cliVersion: sessionMeta.cli_version,
|
|
239
|
+
};
|
|
240
|
+
return {
|
|
241
|
+
sessionId,
|
|
242
|
+
agentName: 'Codex CLI',
|
|
243
|
+
agentVersion: sessionMeta.cli_version,
|
|
244
|
+
metadata,
|
|
245
|
+
messages: records, // Preserved in full for processors
|
|
246
|
+
metrics: {
|
|
247
|
+
tools: {},
|
|
248
|
+
toolStatus: {},
|
|
249
|
+
fileOperations: [],
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
logger.error(`[codex-adapter] Failed to parse rollout file ${filePath}:`, error);
|
|
255
|
+
throw error;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Process a Codex session file with all registered processors.
|
|
260
|
+
*/
|
|
261
|
+
async processSession(filePath, sessionId, context) {
|
|
262
|
+
try {
|
|
263
|
+
logger.debug(`[codex-adapter] Processing session ${sessionId} with ${this.processors.length} processors`);
|
|
264
|
+
const parsedSession = await this.parseSessionFile(filePath, sessionId);
|
|
265
|
+
const processorResults = {};
|
|
266
|
+
const failedProcessors = [];
|
|
267
|
+
const allResults = [];
|
|
268
|
+
let totalRecords = 0;
|
|
269
|
+
for (const processor of this.processors) {
|
|
270
|
+
try {
|
|
271
|
+
if (!processor.shouldProcess(parsedSession)) {
|
|
272
|
+
logger.debug(`[codex-adapter] Processor ${processor.name} skipped`);
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
logger.debug(`[codex-adapter] Running processor: ${processor.name}`);
|
|
276
|
+
const result = await processor.process(parsedSession, context);
|
|
277
|
+
allResults.push(result);
|
|
278
|
+
processorResults[processor.name] = {
|
|
279
|
+
success: result.success,
|
|
280
|
+
message: result.message,
|
|
281
|
+
recordsProcessed: result.metadata?.recordsProcessed,
|
|
282
|
+
};
|
|
283
|
+
if (!result.success) {
|
|
284
|
+
failedProcessors.push(processor.name);
|
|
285
|
+
logger.warn(`[codex-adapter] Processor ${processor.name} failed: ${result.message}`);
|
|
286
|
+
}
|
|
287
|
+
const recordsProcessed = result.metadata?.recordsProcessed;
|
|
288
|
+
if (typeof recordsProcessed === 'number') {
|
|
289
|
+
totalRecords += recordsProcessed;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
294
|
+
logger.error(`[codex-adapter] Processor ${processor.name} threw:`, error);
|
|
295
|
+
const failedResult = { success: false, message: errorMessage };
|
|
296
|
+
processorResults[processor.name] = failedResult;
|
|
297
|
+
allResults.push(failedResult);
|
|
298
|
+
failedProcessors.push(processor.name);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
await this.applySyncUpdates(sessionId, allResults);
|
|
302
|
+
return {
|
|
303
|
+
success: failedProcessors.length === 0,
|
|
304
|
+
processors: processorResults,
|
|
305
|
+
totalRecords,
|
|
306
|
+
failedProcessors,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
logger.error('[codex-adapter] Session processing failed:', error);
|
|
311
|
+
throw error;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/** Helper: return true if path is a directory */
|
|
316
|
+
async function isDirectory(p) {
|
|
317
|
+
if (!existsSync(p))
|
|
318
|
+
return false;
|
|
319
|
+
try {
|
|
320
|
+
return (await stat(p)).isDirectory();
|
|
321
|
+
}
|
|
322
|
+
catch {
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=codex.session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.session.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Storage Utilities
|
|
3
|
+
*
|
|
4
|
+
* Tolerant JSONL reader for Codex rollout files.
|
|
5
|
+
* Delegates to the shared readJSONLTolerant utility (Critical #3 fix).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Tolerant JSONL reader for Codex rollout files.
|
|
9
|
+
* Skips corrupted lines instead of failing; logs count of skipped lines at warn level.
|
|
10
|
+
*
|
|
11
|
+
* @param filePath Absolute path to .jsonl rollout file
|
|
12
|
+
* @returns Array of parsed records (corrupted lines are skipped)
|
|
13
|
+
*/
|
|
14
|
+
export declare function readCodexJsonlTolerant<T>(filePath: string): Promise<T[]>;
|
|
15
|
+
//# sourceMappingURL=codex.storage-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.storage-utils.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.storage-utils.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAIH;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAE9E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// src/agents/plugins/codex/codex.storage-utils.ts
|
|
2
|
+
/**
|
|
3
|
+
* Codex Storage Utilities
|
|
4
|
+
*
|
|
5
|
+
* Tolerant JSONL reader for Codex rollout files.
|
|
6
|
+
* Delegates to the shared readJSONLTolerant utility (Critical #3 fix).
|
|
7
|
+
*/
|
|
8
|
+
import { readJSONLTolerant } from '../../core/session/utils/jsonl-reader.js';
|
|
9
|
+
/**
|
|
10
|
+
* Tolerant JSONL reader for Codex rollout files.
|
|
11
|
+
* Skips corrupted lines instead of failing; logs count of skipped lines at warn level.
|
|
12
|
+
*
|
|
13
|
+
* @param filePath Absolute path to .jsonl rollout file
|
|
14
|
+
* @returns Array of parsed records (corrupted lines are skipped)
|
|
15
|
+
*/
|
|
16
|
+
export async function readCodexJsonlTolerant(filePath) {
|
|
17
|
+
return readJSONLTolerant(filePath, '[codex-storage]');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=codex.storage-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.storage-utils.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/codex.storage-utils.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAI,QAAgB;IAC9D,OAAO,iBAAiB,CAAI,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CodexPlugin, CodexPluginMetadata } from './codex.plugin.js';
|
|
2
|
+
export { CodexSessionAdapter } from './codex.session.js';
|
|
3
|
+
export { getCodexHomePath, getCodexSessionsPath, getCodexSessionDayPath, } from './codex.paths.js';
|
|
4
|
+
export type { CodexRolloutRecord, CodexSessionMeta, CodexTurnContext, CodexResponseItem, CodexEventMsg, CodexSessionMetadata, } from './codex-message-types.js';
|
|
5
|
+
export { validateCodexMetadata, hasCodexMetadata, } from './codex-message-types.js';
|
|
6
|
+
export type { SessionDiscoveryOptions, SessionDescriptor, } from '../../core/session/discovery-types.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// src/agents/plugins/codex/index.ts
|
|
2
|
+
// Phase 1 exports (Core Plugin)
|
|
3
|
+
export { CodexPlugin, CodexPluginMetadata } from './codex.plugin.js';
|
|
4
|
+
// Phase 2 exports (Session Analytics)
|
|
5
|
+
export { CodexSessionAdapter } from './codex.session.js';
|
|
6
|
+
export { getCodexHomePath, getCodexSessionsPath, getCodexSessionDayPath, } from './codex.paths.js';
|
|
7
|
+
// Type guards
|
|
8
|
+
export { validateCodexMetadata, hasCodexMetadata, } from './codex-message-types.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agents/plugins/codex/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,gCAAgC;AAChC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAErE,sCAAsC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAY1B,cAAc;AACd,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Conversations Processor
|
|
3
|
+
*
|
|
4
|
+
* Transforms raw Codex rollout records into incremental CodeMie conversation
|
|
5
|
+
* payloads while preserving much more of the original interaction shape:
|
|
6
|
+
* - user prompts
|
|
7
|
+
* - assistant commentary / progress updates
|
|
8
|
+
* - reasoning records
|
|
9
|
+
* - tool calls + outputs
|
|
10
|
+
* - sub-agent style tool activity
|
|
11
|
+
*
|
|
12
|
+
* The processor intentionally treats assistant commentary as thoughts rather
|
|
13
|
+
* than user-facing assistant replies. Only final answers become the visible
|
|
14
|
+
* Assistant history entry.
|
|
15
|
+
*/
|
|
16
|
+
import type { SessionProcessor, ProcessingContext, ProcessingResult } from '../../../../core/session/BaseProcessor.js';
|
|
17
|
+
import type { ParsedSession } from '../../../../core/session/BaseSessionAdapter.js';
|
|
18
|
+
export declare class CodexConversationsProcessor implements SessionProcessor {
|
|
19
|
+
readonly name = "codex-conversations";
|
|
20
|
+
readonly priority = 2;
|
|
21
|
+
shouldProcess(session: ParsedSession): boolean;
|
|
22
|
+
process(session: ParsedSession, context: ProcessingContext): Promise<ProcessingResult>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=codex.conversations-processor.d.ts.map
|