odai-dsh-agent 0.2.21 → 0.2.23
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/LICENSE +21 -21
- package/README.md +155 -157
- package/build/bin/odai-dsh-agent.mjs +18 -36
- package/build/bin/odai-dsh-agent.mjs.map +1 -1
- package/build/src/installer.d.mts +1 -6
- package/build/src/installer.d.mts.map +1 -1
- package/build/src/installer.mjs +3 -83
- package/build/src/installer.mjs.map +1 -1
- package/client/client.js +36 -58
- package/control-center.cordis.patch.yml +3 -3
- package/package.json +90 -90
- package/preset/odai/agent.cordis.yml +260 -260
- package/preset/odai/preset.yml +3 -3
- package/preset/odai/runtime/control-center-runtime.d.mts +1 -0
- package/preset/odai/runtime/control-center-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/control-center-runtime.mjs +20 -0
- package/preset/odai/runtime/control-center-runtime.mjs.map +1 -1
- package/preset/odai/runtime/index.d.mts.map +1 -1
- package/preset/odai/runtime/index.mjs +9 -7
- package/preset/odai/runtime/index.mjs.map +1 -1
- package/preset/odai/runtime/{session-compat.d.mts → legacy-session-repair.d.mts} +7 -7
- package/preset/odai/runtime/legacy-session-repair.d.mts.map +1 -0
- package/preset/odai/runtime/{session-compat.mjs → legacy-session-repair.mjs} +1 -1
- package/preset/odai/runtime/legacy-session-repair.mjs.map +1 -0
- package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/lifecycle-runtime.mjs +10 -2
- package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -1
- package/preset/odai/runtime/responsibility-gap.d.mts +19 -1
- package/preset/odai/runtime/responsibility-gap.d.mts.map +1 -1
- package/preset/odai/runtime/responsibility-gap.mjs +180 -16
- package/preset/odai/runtime/responsibility-gap.mjs.map +1 -1
- package/preset/odai/runtime/role-overlays.mjs +9 -9
- package/preset/odai/runtime/role-overlays.mjs.map +1 -1
- package/preset/odai/runtime/router.d.mts +1 -0
- package/preset/odai/runtime/router.d.mts.map +1 -1
- package/preset/odai/runtime/router.mjs +5 -1
- package/preset/odai/runtime/router.mjs.map +1 -1
- package/preset/odai/runtime/routing-context.d.mts +9 -2
- package/preset/odai/runtime/routing-context.d.mts.map +1 -1
- package/preset/odai/runtime/routing-context.mjs +30 -9
- package/preset/odai/runtime/routing-context.mjs.map +1 -1
- package/preset/odai/runtime/runtime-support.d.mts +0 -1
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-support.mjs.map +1 -1
- package/preset/odai/runtime/runtime-types.d.mts +1 -3
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-types.mjs +1 -5
- package/preset/odai/runtime/runtime-types.mjs.map +1 -1
- package/preset/odai/runtime/session-evidence.d.mts.map +1 -1
- package/preset/odai/runtime/session-evidence.mjs +1 -3
- package/preset/odai/runtime/session-evidence.mjs.map +1 -1
- package/preset/odai/runtime/tool-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/tool-runtime.mjs +23 -3
- package/preset/odai/runtime/tool-runtime.mjs.map +1 -1
- package/preset/odai/skills/odai/SKILL.md +68 -68
- package/preset/odai/skills/odai/agents/openai.yaml +4 -4
- package/preset/odai/skills/odai/assets/claude-agents/agent.md +11 -11
- package/preset/odai/skills/odai/assets/codex-agents/config.toml +11 -11
- package/preset/odai/skills/odai/assets/codex-agents/role.toml +5 -5
- package/preset/odai/skills/odai/assets/copilot-agents/agent.md +13 -13
- package/preset/odai/skills/odai/assets/hooks-policy.example.json +24 -24
- package/preset/odai/skills/odai/assets/routing-roles/controller.md +15 -15
- package/preset/odai/skills/odai/assets/routing-roles/frontend.md +7 -7
- package/preset/odai/skills/odai/assets/routing-roles/planner.md +28 -28
- package/preset/odai/skills/odai/assets/routing-roles/researcher.md +6 -6
- package/preset/odai/skills/odai/assets/routing-roles/reviewer.md +11 -11
- package/preset/odai/skills/odai/assets/task-state.md +14 -14
- package/preset/odai/skills/odai/manifest.json +52 -52
- package/preset/odai/skills/odai/references/craft.md +54 -54
- package/preset/odai/skills/odai/references/dao.md +31 -31
- package/preset/odai/skills/odai/references/leverage.md +50 -50
- package/preset/odai/skills/odai/references/planning.md +83 -83
- package/preset/odai/skills/odai/references/support.md +30 -30
- package/preset/odai/skills/odai/references/verification.md +24 -24
- package/preset/odai/skills/odai/scripts/build-hooks.mjs +273 -273
- package/preset/odai/skills/odai/scripts/build-routing.mjs +315 -315
- package/preset/odai/skills/odai/scripts/install-routing.mjs +393 -393
- package/preset/odai/skills/odai/scripts/odai-hook.mjs +457 -457
- package/preset/odai/skills/odai/scripts/run-role.mjs +285 -285
- package/preset/odai/skills/odai/scripts/verify-routing.mjs +103 -103
- package/preset/odai/runtime/session-compat.d.mts.map +0 -1
- package/preset/odai/runtime/session-compat.mjs.map +0 -1
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
4
|
-
import { homedir } from "node:os";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
import process from "node:process";
|
|
7
|
-
import { createHash } from "node:crypto";
|
|
8
|
-
import { fileURLToPath } from "node:url";
|
|
9
|
-
|
|
10
|
-
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
-
const args = parseArgs(process.argv.slice(2));
|
|
12
|
-
const mappings = new Map([["odai_researcher", "researcher"], ["odai_planner", "planner"], ["odai_reviewer", "reviewer"], ["odai_frontend", "frontend"]]);
|
|
13
|
-
|
|
14
|
-
if (args.help) {
|
|
15
|
-
console.log(`Usage:
|
|
16
|
-
node odai-verify-routing.mjs --host codex --project <directory> \\
|
|
17
|
-
--role <odai_researcher|odai_planner|odai_reviewer|odai_frontend> --after <ISO timestamp> \\
|
|
18
|
-
[--agent-path </root/task>] [--sessions <directory>]
|
|
19
|
-
|
|
20
|
-
只读取近期 Codex rollout metadata,把实际角色、模型与推理档和 odai 托管清单对账。`);
|
|
21
|
-
process.exit(0);
|
|
22
|
-
}
|
|
23
|
-
if (args.host !== "codex") fail(`不支持的 host:${args.host || "(missing)"}`);
|
|
24
|
-
if (!mappings.has(args.role)) fail("--role 必须是 odai_researcher、odai_planner、odai_reviewer 或 odai_frontend");
|
|
25
|
-
if (!args.project || !args.after) fail("缺少 --project 或 --after");
|
|
26
|
-
const after = Date.parse(args.after);
|
|
27
|
-
if (!Number.isFinite(after)) fail(`无效的 --after:${args.after}`);
|
|
28
|
-
|
|
29
|
-
const project = path.resolve(args.project);
|
|
30
|
-
const manifestFile = path.join(scriptDir, "odai-routing.json");
|
|
31
|
-
if (!existsSync(manifestFile)) fail(`缺少路由清单:${manifestFile}`);
|
|
32
|
-
const manifest = JSON.parse(readFileSync(manifestFile, "utf8"));
|
|
33
|
-
if (manifest.id !== "odai-routing-installation" || manifest.host !== "codex") fail("路由清单无效");
|
|
34
|
-
for (const [relative, expected] of Object.entries(manifest.files || {})) {
|
|
35
|
-
const target = path.join(scriptDir, relative);
|
|
36
|
-
if (!existsSync(target) || sha256(readFileSync(target)) !== expected) fail(`路由托管文件缺失或已变化:${relative}`);
|
|
37
|
-
}
|
|
38
|
-
const expected = manifest.mapping?.[mappings.get(args.role)];
|
|
39
|
-
if (!expected?.model) fail("路由清单缺少角色模型映射");
|
|
40
|
-
|
|
41
|
-
const sessions = path.resolve(args.sessions || path.join(process.env.CODEX_HOME || path.join(homedir(), ".codex"), "sessions"));
|
|
42
|
-
if (!existsSync(sessions)) fail(`Codex sessions 不存在:${sessions}`);
|
|
43
|
-
const candidates = [];
|
|
44
|
-
for (const file of recentJsonl(sessions, after - 5000)) {
|
|
45
|
-
const metadata = readMetadata(file);
|
|
46
|
-
const session = metadata.session;
|
|
47
|
-
const source = session?.source?.subagent?.thread_spawn;
|
|
48
|
-
if (!source || session.agent_role !== args.role || path.resolve(session.cwd || "") !== project) continue;
|
|
49
|
-
const started = Date.parse(session.timestamp || "");
|
|
50
|
-
if (!Number.isFinite(started) || started < after) continue;
|
|
51
|
-
if (args.agentPath && source.agent_path !== args.agentPath) continue;
|
|
52
|
-
if (metadata.context) candidates.push({ session, context: metadata.context, source });
|
|
53
|
-
}
|
|
54
|
-
if (candidates.length !== 1) fail(candidates.length ? `找到 ${candidates.length} 个候选子会话;请用 --agent-path 消除歧义` : "未找到满足边界的子会话运行时记录");
|
|
55
|
-
const match = candidates[0];
|
|
56
|
-
const actualModel = match.context.model;
|
|
57
|
-
const actualEffort = match.context.effort || match.context.collaboration_mode?.settings?.reasoning_effort || null;
|
|
58
|
-
if (actualModel !== expected.model) fail(`模型不匹配:期望 ${expected.model},实际 ${actualModel || "(missing)"}`);
|
|
59
|
-
if (expected.reasoning_effort && actualEffort !== expected.reasoning_effort) fail(`推理档不匹配:期望 ${expected.reasoning_effort},实际 ${actualEffort || "(missing)"}`);
|
|
60
|
-
|
|
61
|
-
process.stdout.write(`${JSON.stringify({
|
|
62
|
-
verified: true, role: match.session.agent_role, model: actualModel, reasoning_effort: actualEffort,
|
|
63
|
-
agent_path: match.source.agent_path || null, child_thread_id: match.session.id,
|
|
64
|
-
parent_thread_id: match.session.parent_thread_id || null, project,
|
|
65
|
-
}, null, 2)}\n`);
|
|
66
|
-
|
|
67
|
-
function recentJsonl(root, threshold) {
|
|
68
|
-
const files = [];
|
|
69
|
-
const pending = [root];
|
|
70
|
-
while (pending.length) {
|
|
71
|
-
const directory = pending.pop();
|
|
72
|
-
for (const entry of readdirSync(directory, { withFileTypes: true })) {
|
|
73
|
-
const full = path.join(directory, entry.name);
|
|
74
|
-
if (entry.isDirectory()) pending.push(full);
|
|
75
|
-
else if (entry.isFile() && entry.name.endsWith(".jsonl") && statSync(full).mtimeMs >= threshold) files.push(full);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return files;
|
|
79
|
-
}
|
|
80
|
-
function readMetadata(file) {
|
|
81
|
-
let session = null; let context = null;
|
|
82
|
-
for (const line of readFileSync(file, "utf8").split("\n")) {
|
|
83
|
-
if (!line) continue;
|
|
84
|
-
let event; try { event = JSON.parse(line); } catch { continue; }
|
|
85
|
-
if (event.type === "session_meta") session = event.payload;
|
|
86
|
-
if (event.type === "turn_context") context = event.payload;
|
|
87
|
-
if (session && context) break;
|
|
88
|
-
}
|
|
89
|
-
return { session, context };
|
|
90
|
-
}
|
|
91
|
-
function parseArgs(values) {
|
|
92
|
-
const result = { host: "", project: "", role: "", after: "", agentPath: "", sessions: "", help: false };
|
|
93
|
-
const fields = new Map([["--host", "host"], ["--project", "project"], ["--role", "role"], ["--after", "after"], ["--agent-path", "agentPath"], ["--sessions", "sessions"]]);
|
|
94
|
-
for (let index = 0; index < values.length; index += 1) {
|
|
95
|
-
const value = values[index];
|
|
96
|
-
if (value === "--help" || value === "-h") result.help = true;
|
|
97
|
-
else if (fields.has(value)) { const next = values[++index] || ""; if (!next || next.startsWith("--")) fail(`${value} 需要一个值`); result[fields.get(value)] = next; }
|
|
98
|
-
else fail(`未知参数:${value}`);
|
|
99
|
-
}
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
102
|
-
function sha256(value) { return createHash("sha256").update(value).digest("hex"); }
|
|
103
|
-
function fail(message) { console.error(message); process.exit(1); }
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
4
|
+
import { homedir } from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import process from "node:process";
|
|
7
|
+
import { createHash } from "node:crypto";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
|
|
10
|
+
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const args = parseArgs(process.argv.slice(2));
|
|
12
|
+
const mappings = new Map([["odai_researcher", "researcher"], ["odai_planner", "planner"], ["odai_reviewer", "reviewer"], ["odai_frontend", "frontend"]]);
|
|
13
|
+
|
|
14
|
+
if (args.help) {
|
|
15
|
+
console.log(`Usage:
|
|
16
|
+
node odai-verify-routing.mjs --host codex --project <directory> \\
|
|
17
|
+
--role <odai_researcher|odai_planner|odai_reviewer|odai_frontend> --after <ISO timestamp> \\
|
|
18
|
+
[--agent-path </root/task>] [--sessions <directory>]
|
|
19
|
+
|
|
20
|
+
只读取近期 Codex rollout metadata,把实际角色、模型与推理档和 odai 托管清单对账。`);
|
|
21
|
+
process.exit(0);
|
|
22
|
+
}
|
|
23
|
+
if (args.host !== "codex") fail(`不支持的 host:${args.host || "(missing)"}`);
|
|
24
|
+
if (!mappings.has(args.role)) fail("--role 必须是 odai_researcher、odai_planner、odai_reviewer 或 odai_frontend");
|
|
25
|
+
if (!args.project || !args.after) fail("缺少 --project 或 --after");
|
|
26
|
+
const after = Date.parse(args.after);
|
|
27
|
+
if (!Number.isFinite(after)) fail(`无效的 --after:${args.after}`);
|
|
28
|
+
|
|
29
|
+
const project = path.resolve(args.project);
|
|
30
|
+
const manifestFile = path.join(scriptDir, "odai-routing.json");
|
|
31
|
+
if (!existsSync(manifestFile)) fail(`缺少路由清单:${manifestFile}`);
|
|
32
|
+
const manifest = JSON.parse(readFileSync(manifestFile, "utf8"));
|
|
33
|
+
if (manifest.id !== "odai-routing-installation" || manifest.host !== "codex") fail("路由清单无效");
|
|
34
|
+
for (const [relative, expected] of Object.entries(manifest.files || {})) {
|
|
35
|
+
const target = path.join(scriptDir, relative);
|
|
36
|
+
if (!existsSync(target) || sha256(readFileSync(target)) !== expected) fail(`路由托管文件缺失或已变化:${relative}`);
|
|
37
|
+
}
|
|
38
|
+
const expected = manifest.mapping?.[mappings.get(args.role)];
|
|
39
|
+
if (!expected?.model) fail("路由清单缺少角色模型映射");
|
|
40
|
+
|
|
41
|
+
const sessions = path.resolve(args.sessions || path.join(process.env.CODEX_HOME || path.join(homedir(), ".codex"), "sessions"));
|
|
42
|
+
if (!existsSync(sessions)) fail(`Codex sessions 不存在:${sessions}`);
|
|
43
|
+
const candidates = [];
|
|
44
|
+
for (const file of recentJsonl(sessions, after - 5000)) {
|
|
45
|
+
const metadata = readMetadata(file);
|
|
46
|
+
const session = metadata.session;
|
|
47
|
+
const source = session?.source?.subagent?.thread_spawn;
|
|
48
|
+
if (!source || session.agent_role !== args.role || path.resolve(session.cwd || "") !== project) continue;
|
|
49
|
+
const started = Date.parse(session.timestamp || "");
|
|
50
|
+
if (!Number.isFinite(started) || started < after) continue;
|
|
51
|
+
if (args.agentPath && source.agent_path !== args.agentPath) continue;
|
|
52
|
+
if (metadata.context) candidates.push({ session, context: metadata.context, source });
|
|
53
|
+
}
|
|
54
|
+
if (candidates.length !== 1) fail(candidates.length ? `找到 ${candidates.length} 个候选子会话;请用 --agent-path 消除歧义` : "未找到满足边界的子会话运行时记录");
|
|
55
|
+
const match = candidates[0];
|
|
56
|
+
const actualModel = match.context.model;
|
|
57
|
+
const actualEffort = match.context.effort || match.context.collaboration_mode?.settings?.reasoning_effort || null;
|
|
58
|
+
if (actualModel !== expected.model) fail(`模型不匹配:期望 ${expected.model},实际 ${actualModel || "(missing)"}`);
|
|
59
|
+
if (expected.reasoning_effort && actualEffort !== expected.reasoning_effort) fail(`推理档不匹配:期望 ${expected.reasoning_effort},实际 ${actualEffort || "(missing)"}`);
|
|
60
|
+
|
|
61
|
+
process.stdout.write(`${JSON.stringify({
|
|
62
|
+
verified: true, role: match.session.agent_role, model: actualModel, reasoning_effort: actualEffort,
|
|
63
|
+
agent_path: match.source.agent_path || null, child_thread_id: match.session.id,
|
|
64
|
+
parent_thread_id: match.session.parent_thread_id || null, project,
|
|
65
|
+
}, null, 2)}\n`);
|
|
66
|
+
|
|
67
|
+
function recentJsonl(root, threshold) {
|
|
68
|
+
const files = [];
|
|
69
|
+
const pending = [root];
|
|
70
|
+
while (pending.length) {
|
|
71
|
+
const directory = pending.pop();
|
|
72
|
+
for (const entry of readdirSync(directory, { withFileTypes: true })) {
|
|
73
|
+
const full = path.join(directory, entry.name);
|
|
74
|
+
if (entry.isDirectory()) pending.push(full);
|
|
75
|
+
else if (entry.isFile() && entry.name.endsWith(".jsonl") && statSync(full).mtimeMs >= threshold) files.push(full);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return files;
|
|
79
|
+
}
|
|
80
|
+
function readMetadata(file) {
|
|
81
|
+
let session = null; let context = null;
|
|
82
|
+
for (const line of readFileSync(file, "utf8").split("\n")) {
|
|
83
|
+
if (!line) continue;
|
|
84
|
+
let event; try { event = JSON.parse(line); } catch { continue; }
|
|
85
|
+
if (event.type === "session_meta") session = event.payload;
|
|
86
|
+
if (event.type === "turn_context") context = event.payload;
|
|
87
|
+
if (session && context) break;
|
|
88
|
+
}
|
|
89
|
+
return { session, context };
|
|
90
|
+
}
|
|
91
|
+
function parseArgs(values) {
|
|
92
|
+
const result = { host: "", project: "", role: "", after: "", agentPath: "", sessions: "", help: false };
|
|
93
|
+
const fields = new Map([["--host", "host"], ["--project", "project"], ["--role", "role"], ["--after", "after"], ["--agent-path", "agentPath"], ["--sessions", "sessions"]]);
|
|
94
|
+
for (let index = 0; index < values.length; index += 1) {
|
|
95
|
+
const value = values[index];
|
|
96
|
+
if (value === "--help" || value === "-h") result.help = true;
|
|
97
|
+
else if (fields.has(value)) { const next = values[++index] || ""; if (!next || next.startsWith("--")) fail(`${value} 需要一个值`); result[fields.get(value)] = next; }
|
|
98
|
+
else fail(`未知参数:${value}`);
|
|
99
|
+
}
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
function sha256(value) { return createHash("sha256").update(value).digest("hex"); }
|
|
103
|
+
function fail(message) { console.error(message); process.exit(1); }
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-compat.d.mts","sourceRoot":"","sources":["../src/session-compat.mts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAMD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,SAAS,gBAAgB,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAOD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,OAAO,EACnB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAOR;AAkCD,wBAAgB,sBAAsB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,SAAS,gBAAgB,EAAE,CAMhH;AAmPD,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAEhG;AAED,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAI/F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-compat.mjs","sourceRoot":"","sources":["../src/session-compat.mts"],"names":[],"mappings":"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"}
|