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.
Files changed (82) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +155 -157
  3. package/build/bin/odai-dsh-agent.mjs +18 -36
  4. package/build/bin/odai-dsh-agent.mjs.map +1 -1
  5. package/build/src/installer.d.mts +1 -6
  6. package/build/src/installer.d.mts.map +1 -1
  7. package/build/src/installer.mjs +3 -83
  8. package/build/src/installer.mjs.map +1 -1
  9. package/client/client.js +36 -58
  10. package/control-center.cordis.patch.yml +3 -3
  11. package/package.json +90 -90
  12. package/preset/odai/agent.cordis.yml +260 -260
  13. package/preset/odai/preset.yml +3 -3
  14. package/preset/odai/runtime/control-center-runtime.d.mts +1 -0
  15. package/preset/odai/runtime/control-center-runtime.d.mts.map +1 -1
  16. package/preset/odai/runtime/control-center-runtime.mjs +20 -0
  17. package/preset/odai/runtime/control-center-runtime.mjs.map +1 -1
  18. package/preset/odai/runtime/index.d.mts.map +1 -1
  19. package/preset/odai/runtime/index.mjs +9 -7
  20. package/preset/odai/runtime/index.mjs.map +1 -1
  21. package/preset/odai/runtime/{session-compat.d.mts → legacy-session-repair.d.mts} +7 -7
  22. package/preset/odai/runtime/legacy-session-repair.d.mts.map +1 -0
  23. package/preset/odai/runtime/{session-compat.mjs → legacy-session-repair.mjs} +1 -1
  24. package/preset/odai/runtime/legacy-session-repair.mjs.map +1 -0
  25. package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -1
  26. package/preset/odai/runtime/lifecycle-runtime.mjs +10 -2
  27. package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -1
  28. package/preset/odai/runtime/responsibility-gap.d.mts +19 -1
  29. package/preset/odai/runtime/responsibility-gap.d.mts.map +1 -1
  30. package/preset/odai/runtime/responsibility-gap.mjs +180 -16
  31. package/preset/odai/runtime/responsibility-gap.mjs.map +1 -1
  32. package/preset/odai/runtime/role-overlays.mjs +9 -9
  33. package/preset/odai/runtime/role-overlays.mjs.map +1 -1
  34. package/preset/odai/runtime/router.d.mts +1 -0
  35. package/preset/odai/runtime/router.d.mts.map +1 -1
  36. package/preset/odai/runtime/router.mjs +5 -1
  37. package/preset/odai/runtime/router.mjs.map +1 -1
  38. package/preset/odai/runtime/routing-context.d.mts +9 -2
  39. package/preset/odai/runtime/routing-context.d.mts.map +1 -1
  40. package/preset/odai/runtime/routing-context.mjs +30 -9
  41. package/preset/odai/runtime/routing-context.mjs.map +1 -1
  42. package/preset/odai/runtime/runtime-support.d.mts +0 -1
  43. package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
  44. package/preset/odai/runtime/runtime-support.mjs.map +1 -1
  45. package/preset/odai/runtime/runtime-types.d.mts +1 -3
  46. package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
  47. package/preset/odai/runtime/runtime-types.mjs +1 -5
  48. package/preset/odai/runtime/runtime-types.mjs.map +1 -1
  49. package/preset/odai/runtime/session-evidence.d.mts.map +1 -1
  50. package/preset/odai/runtime/session-evidence.mjs +1 -3
  51. package/preset/odai/runtime/session-evidence.mjs.map +1 -1
  52. package/preset/odai/runtime/tool-runtime.d.mts.map +1 -1
  53. package/preset/odai/runtime/tool-runtime.mjs +23 -3
  54. package/preset/odai/runtime/tool-runtime.mjs.map +1 -1
  55. package/preset/odai/skills/odai/SKILL.md +68 -68
  56. package/preset/odai/skills/odai/agents/openai.yaml +4 -4
  57. package/preset/odai/skills/odai/assets/claude-agents/agent.md +11 -11
  58. package/preset/odai/skills/odai/assets/codex-agents/config.toml +11 -11
  59. package/preset/odai/skills/odai/assets/codex-agents/role.toml +5 -5
  60. package/preset/odai/skills/odai/assets/copilot-agents/agent.md +13 -13
  61. package/preset/odai/skills/odai/assets/hooks-policy.example.json +24 -24
  62. package/preset/odai/skills/odai/assets/routing-roles/controller.md +15 -15
  63. package/preset/odai/skills/odai/assets/routing-roles/frontend.md +7 -7
  64. package/preset/odai/skills/odai/assets/routing-roles/planner.md +28 -28
  65. package/preset/odai/skills/odai/assets/routing-roles/researcher.md +6 -6
  66. package/preset/odai/skills/odai/assets/routing-roles/reviewer.md +11 -11
  67. package/preset/odai/skills/odai/assets/task-state.md +14 -14
  68. package/preset/odai/skills/odai/manifest.json +52 -52
  69. package/preset/odai/skills/odai/references/craft.md +54 -54
  70. package/preset/odai/skills/odai/references/dao.md +31 -31
  71. package/preset/odai/skills/odai/references/leverage.md +50 -50
  72. package/preset/odai/skills/odai/references/planning.md +83 -83
  73. package/preset/odai/skills/odai/references/support.md +30 -30
  74. package/preset/odai/skills/odai/references/verification.md +24 -24
  75. package/preset/odai/skills/odai/scripts/build-hooks.mjs +273 -273
  76. package/preset/odai/skills/odai/scripts/build-routing.mjs +315 -315
  77. package/preset/odai/skills/odai/scripts/install-routing.mjs +393 -393
  78. package/preset/odai/skills/odai/scripts/odai-hook.mjs +457 -457
  79. package/preset/odai/skills/odai/scripts/run-role.mjs +285 -285
  80. package/preset/odai/skills/odai/scripts/verify-routing.mjs +103 -103
  81. package/preset/odai/runtime/session-compat.d.mts.map +0 -1
  82. 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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"}