mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-06-14 04:01:30 +08:00
feat: add codex-worktree session adapter
Adds the third session adapter (after dmux-tmux and claude-history), normalizing Codex rollout sessions into the harness-neutral ecc.session.v1 snapshot. Reads ~/.codex/sessions rollout JSONL, derives objective (skipping the AGENTS.md preamble + leading message UUID), model, originator, worktree cwd, and best-effort git branch. This is step 1 of ECC-2.0-SESSION-ADAPTER-DISCOVERY (move the abstraction beyond tmux + Claude-history) and supports the wrap/adapt control-pane strategy: ECC reads sessions from any harness rather than owning one UX. - scripts/lib/session-adapters/codex-worktree.js: adapter + rollout parser - canonical-session.js: normalizeCodexWorktreeSession - registry.js: register adapter, codex/codex-worktree target types - tests/lib/session-adapters-codex.test.js: 4 tests (unit + registry routing)
This commit is contained in:
@@ -2,13 +2,16 @@
|
||||
|
||||
const { createClaudeHistoryAdapter } = require('./claude-history');
|
||||
const { createDmuxTmuxAdapter } = require('./dmux-tmux');
|
||||
const { createCodexWorktreeAdapter } = require('./codex-worktree');
|
||||
|
||||
const TARGET_TYPE_TO_ADAPTER_ID = Object.freeze({
|
||||
plan: 'dmux-tmux',
|
||||
session: 'dmux-tmux',
|
||||
'claude-history': 'claude-history',
|
||||
'claude-alias': 'claude-history',
|
||||
'session-file': 'claude-history'
|
||||
'session-file': 'claude-history',
|
||||
'codex-worktree': 'codex-worktree',
|
||||
codex: 'codex-worktree'
|
||||
});
|
||||
|
||||
function buildDefaultAdapterOptions(options, adapterId) {
|
||||
@@ -30,7 +33,8 @@ function buildDefaultAdapterOptions(options, adapterId) {
|
||||
function createDefaultAdapters(options = {}) {
|
||||
return [
|
||||
createClaudeHistoryAdapter(buildDefaultAdapterOptions(options, 'claude-history')),
|
||||
createDmuxTmuxAdapter(buildDefaultAdapterOptions(options, 'dmux-tmux'))
|
||||
createDmuxTmuxAdapter(buildDefaultAdapterOptions(options, 'dmux-tmux')),
|
||||
createCodexWorktreeAdapter(buildDefaultAdapterOptions(options, 'codex-worktree'))
|
||||
];
|
||||
}
|
||||
|
||||
@@ -69,6 +73,13 @@ function normalizeStructuredTarget(target, context = {}) {
|
||||
};
|
||||
}
|
||||
|
||||
if (type === 'codex-worktree' || type === 'codex') {
|
||||
return {
|
||||
target: `codex:${value}`,
|
||||
context: nextContext
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
target: value,
|
||||
context: nextContext
|
||||
|
||||
Reference in New Issue
Block a user