oh-my-codex 0.12.6 → 0.13.0

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 (248) hide show
  1. package/Cargo.lock +5 -5
  2. package/Cargo.toml +1 -1
  3. package/README.md +1 -0
  4. package/crates/omx-explore/src/main.rs +300 -3
  5. package/dist/adapt/__tests__/foundation.test.d.ts +2 -0
  6. package/dist/adapt/__tests__/foundation.test.d.ts.map +1 -0
  7. package/dist/adapt/__tests__/foundation.test.js +171 -0
  8. package/dist/adapt/__tests__/foundation.test.js.map +1 -0
  9. package/dist/adapt/__tests__/hermes.test.d.ts +2 -0
  10. package/dist/adapt/__tests__/hermes.test.d.ts.map +1 -0
  11. package/dist/adapt/__tests__/hermes.test.js +137 -0
  12. package/dist/adapt/__tests__/hermes.test.js.map +1 -0
  13. package/dist/adapt/contracts.d.ts +157 -0
  14. package/dist/adapt/contracts.d.ts.map +1 -0
  15. package/dist/adapt/contracts.js +10 -0
  16. package/dist/adapt/contracts.js.map +1 -0
  17. package/dist/adapt/hermes.d.ts +83 -0
  18. package/dist/adapt/hermes.d.ts.map +1 -0
  19. package/dist/adapt/hermes.js +371 -0
  20. package/dist/adapt/hermes.js.map +1 -0
  21. package/dist/adapt/index.d.ts +14 -0
  22. package/dist/adapt/index.d.ts.map +1 -0
  23. package/dist/adapt/index.js +293 -0
  24. package/dist/adapt/index.js.map +1 -0
  25. package/dist/adapt/openclaw.d.ts +7 -0
  26. package/dist/adapt/openclaw.d.ts.map +1 -0
  27. package/dist/adapt/openclaw.js +299 -0
  28. package/dist/adapt/openclaw.js.map +1 -0
  29. package/dist/adapt/paths.d.ts +3 -0
  30. package/dist/adapt/paths.d.ts.map +1 -0
  31. package/dist/adapt/paths.js +15 -0
  32. package/dist/adapt/paths.js.map +1 -0
  33. package/dist/adapt/registry.d.ts +4 -0
  34. package/dist/adapt/registry.d.ts.map +1 -0
  35. package/dist/adapt/registry.js +48 -0
  36. package/dist/adapt/registry.js.map +1 -0
  37. package/dist/cli/__tests__/adapt-help.test.d.ts +2 -0
  38. package/dist/cli/__tests__/adapt-help.test.d.ts.map +1 -0
  39. package/dist/cli/__tests__/adapt-help.test.js +39 -0
  40. package/dist/cli/__tests__/adapt-help.test.js.map +1 -0
  41. package/dist/cli/__tests__/adapt.test.d.ts +2 -0
  42. package/dist/cli/__tests__/adapt.test.d.ts.map +1 -0
  43. package/dist/cli/__tests__/adapt.test.js +62 -0
  44. package/dist/cli/__tests__/adapt.test.js.map +1 -0
  45. package/dist/cli/__tests__/cleanup.test.js +61 -2
  46. package/dist/cli/__tests__/cleanup.test.js.map +1 -1
  47. package/dist/cli/__tests__/doctor-warning-copy.test.js +85 -0
  48. package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
  49. package/dist/cli/__tests__/explore-windows-diagnostics.test.d.ts +2 -0
  50. package/dist/cli/__tests__/explore-windows-diagnostics.test.d.ts.map +1 -0
  51. package/dist/cli/__tests__/explore-windows-diagnostics.test.js +17 -0
  52. package/dist/cli/__tests__/explore-windows-diagnostics.test.js.map +1 -0
  53. package/dist/cli/__tests__/explore.test.js +69 -0
  54. package/dist/cli/__tests__/explore.test.js.map +1 -1
  55. package/dist/cli/__tests__/index.test.js +170 -8
  56. package/dist/cli/__tests__/index.test.js.map +1 -1
  57. package/dist/cli/__tests__/nested-help-routing.test.js +1 -0
  58. package/dist/cli/__tests__/nested-help-routing.test.js.map +1 -1
  59. package/dist/cli/__tests__/ralph-prd-deep-interview.test.js +5 -0
  60. package/dist/cli/__tests__/ralph-prd-deep-interview.test.js.map +1 -1
  61. package/dist/cli/__tests__/ralph-prd-smoke.test.d.ts +2 -0
  62. package/dist/cli/__tests__/ralph-prd-smoke.test.d.ts.map +1 -0
  63. package/dist/cli/__tests__/ralph-prd-smoke.test.js +167 -0
  64. package/dist/cli/__tests__/ralph-prd-smoke.test.js.map +1 -0
  65. package/dist/cli/__tests__/ralph.test.js +103 -1
  66. package/dist/cli/__tests__/ralph.test.js.map +1 -1
  67. package/dist/cli/__tests__/setup-skills-overwrite.test.js +60 -0
  68. package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
  69. package/dist/cli/adapt.d.ts +6 -0
  70. package/dist/cli/adapt.d.ts.map +1 -0
  71. package/dist/cli/adapt.js +135 -0
  72. package/dist/cli/adapt.js.map +1 -0
  73. package/dist/cli/cleanup.d.ts +3 -1
  74. package/dist/cli/cleanup.d.ts.map +1 -1
  75. package/dist/cli/cleanup.js +57 -6
  76. package/dist/cli/cleanup.js.map +1 -1
  77. package/dist/cli/doctor.d.ts +6 -0
  78. package/dist/cli/doctor.d.ts.map +1 -1
  79. package/dist/cli/doctor.js +72 -3
  80. package/dist/cli/doctor.js.map +1 -1
  81. package/dist/cli/explore.d.ts +2 -0
  82. package/dist/cli/explore.d.ts.map +1 -1
  83. package/dist/cli/explore.js +14 -0
  84. package/dist/cli/explore.js.map +1 -1
  85. package/dist/cli/index.d.ts +4 -1
  86. package/dist/cli/index.d.ts.map +1 -1
  87. package/dist/cli/index.js +50 -18
  88. package/dist/cli/index.js.map +1 -1
  89. package/dist/cli/ralph.d.ts +3 -1
  90. package/dist/cli/ralph.d.ts.map +1 -1
  91. package/dist/cli/ralph.js +83 -0
  92. package/dist/cli/ralph.js.map +1 -1
  93. package/dist/cli/setup.d.ts.map +1 -1
  94. package/dist/cli/setup.js +4 -2
  95. package/dist/cli/setup.js.map +1 -1
  96. package/dist/cli/tmux-hook.d.ts.map +1 -1
  97. package/dist/cli/tmux-hook.js +2 -1
  98. package/dist/cli/tmux-hook.js.map +1 -1
  99. package/dist/config/__tests__/codex-hooks.test.js +26 -2
  100. package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
  101. package/dist/config/codex-hooks.d.ts +2 -1
  102. package/dist/config/codex-hooks.d.ts.map +1 -1
  103. package/dist/config/codex-hooks.js +23 -2
  104. package/dist/config/codex-hooks.js.map +1 -1
  105. package/dist/hooks/__tests__/keyword-detector.test.js +32 -0
  106. package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
  107. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +2 -1
  108. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
  109. package/dist/hooks/__tests__/notify-hook-modules.test.js +6 -0
  110. package/dist/hooks/__tests__/notify-hook-modules.test.js.map +1 -1
  111. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js +124 -0
  112. package/dist/hooks/__tests__/notify-hook-tmux-heal.test.js.map +1 -1
  113. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +2 -1
  114. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
  115. package/dist/hooks/__tests__/prompt-guidance-contract.test.js +10 -1
  116. package/dist/hooks/__tests__/prompt-guidance-contract.test.js.map +1 -1
  117. package/dist/hooks/extensibility/sdk/tmux.d.ts.map +1 -1
  118. package/dist/hooks/extensibility/sdk/tmux.js +2 -1
  119. package/dist/hooks/extensibility/sdk/tmux.js.map +1 -1
  120. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  121. package/dist/hooks/keyword-detector.js +12 -3
  122. package/dist/hooks/keyword-detector.js.map +1 -1
  123. package/dist/hooks/prompt-guidance-contract.d.ts.map +1 -1
  124. package/dist/hooks/prompt-guidance-contract.js +2 -0
  125. package/dist/hooks/prompt-guidance-contract.js.map +1 -1
  126. package/dist/hud/__tests__/hud-tmux-injection.test.js +5 -0
  127. package/dist/hud/__tests__/hud-tmux-injection.test.js.map +1 -1
  128. package/dist/hud/__tests__/state.test.js +116 -0
  129. package/dist/hud/__tests__/state.test.js.map +1 -1
  130. package/dist/hud/index.d.ts +1 -1
  131. package/dist/hud/index.d.ts.map +1 -1
  132. package/dist/hud/index.js +5 -3
  133. package/dist/hud/index.js.map +1 -1
  134. package/dist/hud/reconcile.js +1 -1
  135. package/dist/hud/reconcile.js.map +1 -1
  136. package/dist/hud/state.d.ts.map +1 -1
  137. package/dist/hud/state.js +6 -5
  138. package/dist/hud/state.js.map +1 -1
  139. package/dist/hud/tmux.d.ts +1 -1
  140. package/dist/hud/tmux.d.ts.map +1 -1
  141. package/dist/hud/tmux.js +9 -3
  142. package/dist/hud/tmux.js.map +1 -1
  143. package/dist/mcp/__tests__/bootstrap.test.js +1 -1
  144. package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
  145. package/dist/mcp/__tests__/state-paths.test.js +23 -1
  146. package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
  147. package/dist/mcp/bootstrap.d.ts +1 -1
  148. package/dist/mcp/bootstrap.d.ts.map +1 -1
  149. package/dist/mcp/bootstrap.js +3 -11
  150. package/dist/mcp/bootstrap.js.map +1 -1
  151. package/dist/mcp/state-paths.d.ts.map +1 -1
  152. package/dist/mcp/state-paths.js +18 -0
  153. package/dist/mcp/state-paths.js.map +1 -1
  154. package/dist/modes/__tests__/base-tmux-pane.test.js +1 -1
  155. package/dist/modes/__tests__/base-tmux-pane.test.js.map +1 -1
  156. package/dist/notifications/__tests__/config.test.js +38 -1
  157. package/dist/notifications/__tests__/config.test.js.map +1 -1
  158. package/dist/notifications/__tests__/tmux-detector.test.js +1 -1
  159. package/dist/notifications/__tests__/tmux-detector.test.js.map +1 -1
  160. package/dist/notifications/tmux-detector.d.ts +1 -0
  161. package/dist/notifications/tmux-detector.d.ts.map +1 -1
  162. package/dist/notifications/tmux-detector.js +6 -3
  163. package/dist/notifications/tmux-detector.js.map +1 -1
  164. package/dist/notifications/tmux.d.ts.map +1 -1
  165. package/dist/notifications/tmux.js +20 -38
  166. package/dist/notifications/tmux.js.map +1 -1
  167. package/dist/openclaw/__tests__/config.test.js +97 -10
  168. package/dist/openclaw/__tests__/config.test.js.map +1 -1
  169. package/dist/openclaw/config.d.ts +19 -1
  170. package/dist/openclaw/config.d.ts.map +1 -1
  171. package/dist/openclaw/config.js +220 -20
  172. package/dist/openclaw/config.js.map +1 -1
  173. package/dist/planning/artifacts.d.ts +7 -0
  174. package/dist/planning/artifacts.d.ts.map +1 -1
  175. package/dist/planning/artifacts.js +18 -4
  176. package/dist/planning/artifacts.js.map +1 -1
  177. package/dist/scripts/__tests__/codex-native-hook.test.js +748 -11
  178. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  179. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  180. package/dist/scripts/codex-native-hook.js +71 -31
  181. package/dist/scripts/codex-native-hook.js.map +1 -1
  182. package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
  183. package/dist/scripts/codex-native-pre-post.js +336 -0
  184. package/dist/scripts/codex-native-pre-post.js.map +1 -1
  185. package/dist/scripts/notify-hook/auto-nudge.d.ts +1 -0
  186. package/dist/scripts/notify-hook/auto-nudge.d.ts.map +1 -1
  187. package/dist/scripts/notify-hook/auto-nudge.js +10 -2
  188. package/dist/scripts/notify-hook/auto-nudge.js.map +1 -1
  189. package/dist/scripts/notify-hook/team-worker.js +1 -1
  190. package/dist/scripts/notify-hook/team-worker.js.map +1 -1
  191. package/dist/scripts/notify-hook/tmux-injection.d.ts.map +1 -1
  192. package/dist/scripts/notify-hook/tmux-injection.js +78 -4
  193. package/dist/scripts/notify-hook/tmux-injection.js.map +1 -1
  194. package/dist/scripts/tmux-hook-engine.d.ts.map +1 -1
  195. package/dist/scripts/tmux-hook-engine.js +9 -7
  196. package/dist/scripts/tmux-hook-engine.js.map +1 -1
  197. package/dist/state/__tests__/operations.test.js +38 -0
  198. package/dist/state/__tests__/operations.test.js.map +1 -1
  199. package/dist/state/__tests__/workflow-transition.test.js +2 -0
  200. package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
  201. package/dist/state/skill-active.d.ts +1 -1
  202. package/dist/state/skill-active.d.ts.map +1 -1
  203. package/dist/state/skill-active.js +8 -4
  204. package/dist/state/skill-active.js.map +1 -1
  205. package/dist/state/workflow-transition-reconcile.js +1 -1
  206. package/dist/state/workflow-transition-reconcile.js.map +1 -1
  207. package/dist/state/workflow-transition.js +3 -3
  208. package/dist/state/workflow-transition.js.map +1 -1
  209. package/dist/team/__tests__/leader-activity.test.js +28 -0
  210. package/dist/team/__tests__/leader-activity.test.js.map +1 -1
  211. package/dist/team/__tests__/tmux-session.test.js +42 -0
  212. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  213. package/dist/team/__tests__/worktree.test.js +29 -0
  214. package/dist/team/__tests__/worktree.test.js.map +1 -1
  215. package/dist/team/leader-activity.d.ts.map +1 -1
  216. package/dist/team/leader-activity.js +23 -1
  217. package/dist/team/leader-activity.js.map +1 -1
  218. package/dist/team/worktree.d.ts.map +1 -1
  219. package/dist/team/worktree.js +17 -1
  220. package/dist/team/worktree.js.map +1 -1
  221. package/dist/utils/__tests__/paths.test.js +6 -1
  222. package/dist/utils/__tests__/paths.test.js.map +1 -1
  223. package/dist/utils/__tests__/platform-command.test.js +19 -1
  224. package/dist/utils/__tests__/platform-command.test.js.map +1 -1
  225. package/dist/utils/paths.d.ts +2 -0
  226. package/dist/utils/paths.d.ts.map +1 -1
  227. package/dist/utils/paths.js +4 -0
  228. package/dist/utils/paths.js.map +1 -1
  229. package/dist/utils/platform-command.d.ts +1 -0
  230. package/dist/utils/platform-command.d.ts.map +1 -1
  231. package/dist/utils/platform-command.js +40 -23
  232. package/dist/utils/platform-command.js.map +1 -1
  233. package/dist/verification/__tests__/explore-harness-release-workflow.test.js +1 -1
  234. package/dist/verification/__tests__/pr-check-workflow.test.d.ts +2 -0
  235. package/dist/verification/__tests__/pr-check-workflow.test.d.ts.map +1 -0
  236. package/dist/verification/__tests__/pr-check-workflow.test.js +27 -0
  237. package/dist/verification/__tests__/pr-check-workflow.test.js.map +1 -0
  238. package/package.json +1 -1
  239. package/skills/ralph/SKILL.md +7 -0
  240. package/skills/ralph-init/SKILL.md +2 -1
  241. package/src/scripts/__tests__/codex-native-hook.test.ts +970 -94
  242. package/src/scripts/codex-native-hook.ts +109 -26
  243. package/src/scripts/codex-native-pre-post.ts +376 -0
  244. package/src/scripts/notify-hook/auto-nudge.ts +12 -2
  245. package/src/scripts/notify-hook/team-worker.ts +1 -1
  246. package/src/scripts/notify-hook/tmux-injection.ts +93 -3
  247. package/src/scripts/tmux-hook-engine.ts +9 -7
  248. package/templates/AGENTS.md +3 -1
@@ -0,0 +1,137 @@
1
+ import { afterEach, beforeEach, describe, it } from "node:test";
2
+ import assert from "node:assert/strict";
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
+ import { mkdtemp, rm } from "node:fs/promises";
5
+ import { tmpdir } from "node:os";
6
+ import { join } from "node:path";
7
+ import { buildAdaptDoctorReportForTarget, buildAdaptEnvelopeForTarget, buildAdaptProbeReportForTarget, buildAdaptStatusReportForTarget, initAdaptFoundationForTarget, } from "../index.js";
8
+ let tempDir;
9
+ let hermesRoot;
10
+ let hermesHome;
11
+ let processCwdFixtureBase;
12
+ let processCwdFixtureRoot;
13
+ let suppliedCwd;
14
+ let originalCwd;
15
+ const originalEnv = {
16
+ root: process.env.OMX_ADAPT_HERMES_ROOT,
17
+ home: process.env.HERMES_HOME,
18
+ };
19
+ function writeHermesFixture(options = {}) {
20
+ const { withRoot = true, withGatewayRuntime = false, withStateDb = false, } = options;
21
+ if (withRoot) {
22
+ mkdirSync(join(hermesRoot, "acp_adapter"), { recursive: true });
23
+ mkdirSync(join(hermesRoot, "gateway"), { recursive: true });
24
+ mkdirSync(join(hermesRoot, "docs"), { recursive: true });
25
+ mkdirSync(join(hermesRoot, "acp_registry"), { recursive: true });
26
+ writeFileSync(join(hermesRoot, "acp_adapter", "server.py"), "# acp server\n");
27
+ writeFileSync(join(hermesRoot, "acp_adapter", "session.py"), "# acp session\n");
28
+ writeFileSync(join(hermesRoot, "acp_adapter", "events.py"), "# acp events\n");
29
+ writeFileSync(join(hermesRoot, "acp_adapter", "entry.py"), "# acp entry\n");
30
+ writeFileSync(join(hermesRoot, "gateway", "status.py"), "# gateway status\n");
31
+ writeFileSync(join(hermesRoot, "gateway", "hooks.py"), "# gateway hooks\n");
32
+ writeFileSync(join(hermesRoot, "docs", "acp-setup.md"), "# acp setup\n");
33
+ writeFileSync(join(hermesRoot, "hermes_state.py"), "# hermes state store\n");
34
+ }
35
+ if (withGatewayRuntime) {
36
+ mkdirSync(hermesHome, { recursive: true });
37
+ writeFileSync(join(hermesHome, "gateway.pid"), JSON.stringify({ pid: 1234, kind: "hermes-gateway", argv: ["hermes", "gateway"] }));
38
+ writeFileSync(join(hermesHome, "gateway_state.json"), JSON.stringify({
39
+ gateway_state: "running",
40
+ active_agents: 2,
41
+ updated_at: "2026-04-14T14:00:00.000Z",
42
+ platforms: {
43
+ telegram: { state: "connected", updated_at: "2026-04-14T14:00:00.000Z" },
44
+ },
45
+ }));
46
+ }
47
+ if (withStateDb) {
48
+ mkdirSync(hermesHome, { recursive: true });
49
+ writeFileSync(join(hermesHome, "state.db"), "SQLite format 3\u0000 sessions messages");
50
+ }
51
+ }
52
+ beforeEach(async () => {
53
+ tempDir = await mkdtemp(join(tmpdir(), "omx-adapt-hermes-"));
54
+ suppliedCwd = join(tempDir, "sandbox", "worktree");
55
+ hermesRoot = join(tempDir, "hermes-runtime");
56
+ hermesHome = join(tempDir, "hermes-home");
57
+ originalCwd = process.cwd();
58
+ processCwdFixtureBase = await mkdtemp(join(tmpdir(), "omx-adapt-hermes-process-cwd-"));
59
+ processCwdFixtureRoot = join(processCwdFixtureBase, "hermes-codex-skill-omx-aware-prd", "external", "hermes-agent");
60
+ process.env.OMX_ADAPT_HERMES_ROOT = hermesRoot;
61
+ process.env.HERMES_HOME = hermesHome;
62
+ });
63
+ afterEach(async () => {
64
+ if (originalEnv.root === undefined) {
65
+ delete process.env.OMX_ADAPT_HERMES_ROOT;
66
+ }
67
+ else {
68
+ process.env.OMX_ADAPT_HERMES_ROOT = originalEnv.root;
69
+ }
70
+ if (originalEnv.home === undefined) {
71
+ delete process.env.HERMES_HOME;
72
+ }
73
+ else {
74
+ process.env.HERMES_HOME = originalEnv.home;
75
+ }
76
+ process.chdir(originalCwd);
77
+ if (processCwdFixtureBase && existsSync(processCwdFixtureBase)) {
78
+ await rm(processCwdFixtureBase, { recursive: true, force: true });
79
+ }
80
+ if (tempDir && existsSync(tempDir)) {
81
+ await rm(tempDir, { recursive: true, force: true });
82
+ }
83
+ });
84
+ describe("hermes adapter integration", () => {
85
+ it("degrades gracefully when Hermes runtime evidence is absent", async () => {
86
+ const probe = await buildAdaptProbeReportForTarget(tempDir, "hermes", new Date("2026-04-14T00:00:00.000Z"));
87
+ const status = await buildAdaptStatusReportForTarget(tempDir, "hermes", new Date("2026-04-14T00:00:00.000Z"));
88
+ const doctor = await buildAdaptDoctorReportForTarget(tempDir, "hermes", new Date("2026-04-14T00:00:00.000Z"));
89
+ assert.equal(probe.targetRuntime.state, "unavailable");
90
+ assert.equal(status.targetRuntime.state, "unavailable");
91
+ assert.match(doctor.issues.map((issue) => issue.code).join(","), /hermes_runtime_missing/);
92
+ });
93
+ it("anchors sibling-default Hermes discovery to the supplied cwd for programmatic probes", async () => {
94
+ delete process.env.OMX_ADAPT_HERMES_ROOT;
95
+ delete process.env.HERMES_HOME;
96
+ mkdirSync(join(processCwdFixtureRoot, "acp_adapter"), { recursive: true });
97
+ writeFileSync(join(processCwdFixtureRoot, "acp_adapter", "server.py"), "# unrelated sibling runtime\n");
98
+ const unrelatedProcessCwd = join(processCwdFixtureBase, "workspace");
99
+ mkdirSync(unrelatedProcessCwd, { recursive: true });
100
+ process.chdir(unrelatedProcessCwd);
101
+ const tempSiblingRoot = join(suppliedCwd, "..", "hermes-codex-skill-omx-aware-prd", "external", "hermes-agent");
102
+ const probe = await buildAdaptProbeReportForTarget(suppliedCwd, "hermes", new Date("2026-04-14T00:00:00.000Z"));
103
+ assert.equal(probe.targetRuntime.state, "unavailable");
104
+ assert.equal(probe.targetRuntime.evidence?.hermesRoot, tempSiblingRoot);
105
+ assert.notEqual(probe.targetRuntime.evidence?.hermesRoot, processCwdFixtureRoot);
106
+ assert.match(probe.targetRuntime.detail, new RegExp(tempSiblingRoot.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")));
107
+ });
108
+ it("reports Hermes capability evidence asymmetrically in the envelope", async () => {
109
+ writeHermesFixture({ withRoot: true, withStateDb: true });
110
+ const envelope = await buildAdaptEnvelopeForTarget(tempDir, "hermes", new Date("2026-04-14T00:00:00.000Z"));
111
+ assert.equal(envelope.targetRuntime?.state, "degraded");
112
+ assert.ok(envelope.bootstrap);
113
+ assert.match(envelope.bootstrap?.summary ?? "", /bootstrap metadata/i);
114
+ assert.deepEqual([...new Set(envelope.capabilities.map((capability) => capability.ownership))].sort(), ["omx-owned", "shared-contract", "target-observed"]);
115
+ assert.equal(envelope.capabilities.find((capability) => capability.id === "persistent-session-observation")?.status, "ready");
116
+ assert.equal(envelope.capabilities.find((capability) => capability.id === "acp-envelope-bridge")?.status, "ready");
117
+ });
118
+ it("synthesizes running status from Hermes gateway and session-store evidence", async () => {
119
+ writeHermesFixture({ withRoot: true, withGatewayRuntime: true, withStateDb: true });
120
+ const status = await buildAdaptStatusReportForTarget(tempDir, "hermes", new Date("2026-04-14T00:00:00.000Z"));
121
+ assert.equal(status.targetRuntime.state, "running");
122
+ assert.match(status.targetRuntime.detail, /connected platforms: telegram/i);
123
+ });
124
+ it("keeps Hermes init writes inside OMX-owned adapter paths", async () => {
125
+ writeHermesFixture({ withRoot: true, withGatewayRuntime: true, withStateDb: true });
126
+ const result = await initAdaptFoundationForTarget(tempDir, "hermes", true, new Date("2026-04-14T00:00:00.000Z"));
127
+ assert.equal(result.write, true);
128
+ assert.equal(result.wrotePaths.length, 2);
129
+ assert.equal(existsSync(join(tempDir, ".omx", "state")), false);
130
+ assert.equal(existsSync(join(hermesHome, "gateway_state.json")), true);
131
+ assert.equal(existsSync(join(hermesHome, "state.db")), true);
132
+ const persistedEnvelope = JSON.parse(readFileSync(result.envelope.adapterPaths.envelopePath, "utf-8"));
133
+ assert.equal(persistedEnvelope.targetRuntime?.state, "running");
134
+ assert.ok((persistedEnvelope.bootstrap?.commands ?? []).includes("hermes acp"));
135
+ });
136
+ });
137
+ //# sourceMappingURL=hermes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes.test.js","sourceRoot":"","sources":["../../../src/adapt/__tests__/hermes.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ export declare const ADAPT_SCHEMA_VERSION = "1.0";
2
+ export declare const ADAPT_TARGETS: readonly ["openclaw", "hermes"];
3
+ export type AdaptTarget = (typeof ADAPT_TARGETS)[number];
4
+ export declare const ADAPT_SUBCOMMANDS: readonly ["probe", "status", "init", "envelope", "doctor"];
5
+ export type AdaptSubcommand = (typeof ADAPT_SUBCOMMANDS)[number];
6
+ export type AdaptCapabilityOwnership = "omx-owned" | "shared-contract" | "target-observed";
7
+ export type AdaptCapabilityStatus = "ready" | "stub" | "unsupported";
8
+ export interface AdaptCapabilityReport {
9
+ id: string;
10
+ label: string;
11
+ ownership: AdaptCapabilityOwnership;
12
+ status: AdaptCapabilityStatus;
13
+ summary: string;
14
+ }
15
+ export interface AdaptTargetDescriptor {
16
+ target: AdaptTarget;
17
+ displayName: string;
18
+ summary: string;
19
+ followupHint: string;
20
+ capabilities: AdaptCapabilityReport[];
21
+ }
22
+ export interface AdaptPathSet {
23
+ adapterRoot: string;
24
+ configPath: string;
25
+ envelopePath: string;
26
+ reportsDir: string;
27
+ probeReportPath: string;
28
+ statusReportPath: string;
29
+ }
30
+ export interface AdaptPlanningLink {
31
+ prdPath: string | null;
32
+ testSpecPaths: string[];
33
+ deepInterviewSpecPaths: string[];
34
+ summary: string;
35
+ }
36
+ export interface AdaptOpenClawGatewayObservation {
37
+ name: string;
38
+ type: "http" | "command";
39
+ configured: boolean;
40
+ commandGateRequired: boolean;
41
+ commandGateEnabled: boolean;
42
+ timeoutMs: number | null;
43
+ }
44
+ export interface AdaptOpenClawHookObservation {
45
+ event: string;
46
+ gateway: string | null;
47
+ gatewayType: "http" | "command" | null;
48
+ status: "wired" | "blocked" | "unmapped";
49
+ detail: string;
50
+ }
51
+ export interface AdaptOpenClawMetadata {
52
+ observedState: "configured" | "degraded" | "disabled" | "missing-config" | "invalid-config" | "not-configured";
53
+ observedDetail: string;
54
+ config: {
55
+ activationGateEnabled: boolean;
56
+ commandGateEnabled: boolean;
57
+ configPath: string;
58
+ configExists: boolean;
59
+ source: string | null;
60
+ explicitConfigPresent: boolean;
61
+ aliasConfigPresent: boolean;
62
+ aliasSources: Array<"custom_cli_command" | "custom_webhook_command">;
63
+ explicitOverridesAliases: boolean;
64
+ warnings: string[];
65
+ };
66
+ gateways: AdaptOpenClawGatewayObservation[];
67
+ hooks: AdaptOpenClawHookObservation[];
68
+ lifecycleBridge: Array<{
69
+ omxEvent: string;
70
+ openclawEvent: string;
71
+ }>;
72
+ bootstrap?: {
73
+ adapterConfigPath: string;
74
+ envelopePath: string;
75
+ reportPaths: string[];
76
+ planningArtifactPaths: string[];
77
+ };
78
+ }
79
+ export interface AdaptEnvelope {
80
+ schemaVersion: string;
81
+ generatedAt: string;
82
+ target: AdaptTarget;
83
+ displayName: string;
84
+ summary: string;
85
+ adapterPaths: AdaptPathSet;
86
+ planning: AdaptPlanningLink;
87
+ capabilities: AdaptCapabilityReport[];
88
+ constraints: string[];
89
+ targetRuntime?: AdaptRuntimeObservation;
90
+ bootstrap?: AdaptBootstrapMetadata;
91
+ openclaw?: AdaptOpenClawMetadata;
92
+ }
93
+ export interface AdaptRuntimeObservation {
94
+ state: string;
95
+ detail: string;
96
+ evidence?: Record<string, unknown>;
97
+ }
98
+ export interface AdaptBootstrapMetadata {
99
+ summary: string;
100
+ eventBridge: string[];
101
+ commands: string[];
102
+ nextSteps: string[];
103
+ }
104
+ export interface AdaptProbeReport {
105
+ schemaVersion: string;
106
+ timestamp: string;
107
+ target: AdaptTarget;
108
+ phase: "foundation";
109
+ summary: string;
110
+ adapterPaths: AdaptPathSet;
111
+ planning: AdaptPlanningLink;
112
+ capabilities: AdaptCapabilityReport[];
113
+ targetRuntime: AdaptRuntimeObservation;
114
+ openclaw?: AdaptOpenClawMetadata;
115
+ nextSteps: string[];
116
+ }
117
+ export interface AdaptStatusReport {
118
+ schemaVersion: string;
119
+ timestamp: string;
120
+ target: AdaptTarget;
121
+ phase: "foundation";
122
+ summary: string;
123
+ adapter: {
124
+ state: "initialized" | "not-initialized";
125
+ detail: string;
126
+ configPath: string;
127
+ envelopePath: string;
128
+ };
129
+ targetRuntime: AdaptRuntimeObservation;
130
+ planning: AdaptPlanningLink;
131
+ capabilities: AdaptCapabilityReport[];
132
+ openclaw?: AdaptOpenClawMetadata;
133
+ }
134
+ export interface AdaptDoctorIssue {
135
+ code: string;
136
+ message: string;
137
+ }
138
+ export interface AdaptDoctorReport {
139
+ schemaVersion: string;
140
+ timestamp: string;
141
+ target: AdaptTarget;
142
+ phase: "foundation";
143
+ summary: string;
144
+ issues: AdaptDoctorIssue[];
145
+ nextSteps: string[];
146
+ }
147
+ export interface AdaptInitResult {
148
+ schemaVersion: string;
149
+ timestamp: string;
150
+ target: AdaptTarget;
151
+ write: boolean;
152
+ summary: string;
153
+ previewPaths: string[];
154
+ wrotePaths: string[];
155
+ envelope: AdaptEnvelope;
156
+ }
157
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/adapt/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export const ADAPT_SCHEMA_VERSION = "1.0";
2
+ export const ADAPT_TARGETS = ["openclaw", "hermes"];
3
+ export const ADAPT_SUBCOMMANDS = [
4
+ "probe",
5
+ "status",
6
+ "init",
7
+ "envelope",
8
+ "doctor",
9
+ ];
10
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/adapt/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAC;AAG7D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAChC,OAAO;IACP,QAAQ;IACR,MAAM;IACN,UAAU;IACV,QAAQ;CACC,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { type AdaptBootstrapMetadata, type AdaptCapabilityReport, type AdaptEnvelope, type AdaptProbeReport, type AdaptRuntimeObservation, type AdaptStatusReport } from "./contracts.js";
2
+ interface HermesGatewayRuntimeFile {
3
+ gateway_state?: string;
4
+ exit_reason?: string | null;
5
+ restart_requested?: boolean;
6
+ active_agents?: number;
7
+ updated_at?: string;
8
+ platforms?: Record<string, {
9
+ state?: string;
10
+ error_code?: string | null;
11
+ error_message?: string | null;
12
+ updated_at?: string;
13
+ }>;
14
+ [key: string]: unknown;
15
+ }
16
+ interface HermesPidRecord {
17
+ pid?: number;
18
+ kind?: string;
19
+ argv?: string[];
20
+ start_time?: number;
21
+ [key: string]: unknown;
22
+ }
23
+ interface HermesEvidence {
24
+ hermesRoot: string;
25
+ hermesHome: string;
26
+ sources: {
27
+ root: "override" | "sibling-default";
28
+ home: "env" | "default";
29
+ };
30
+ sourceRuntime: {
31
+ present: boolean;
32
+ acp: {
33
+ present: boolean;
34
+ files: string[];
35
+ missing: string[];
36
+ };
37
+ gateway: {
38
+ present: boolean;
39
+ files: string[];
40
+ missing: string[];
41
+ };
42
+ docs: {
43
+ present: boolean;
44
+ files: string[];
45
+ missing: string[];
46
+ };
47
+ stateStore: {
48
+ present: boolean;
49
+ path: string;
50
+ };
51
+ acpRegistry: {
52
+ present: boolean;
53
+ path: string;
54
+ };
55
+ };
56
+ installed: boolean;
57
+ runtimeFiles: {
58
+ gatewayPidPath: string;
59
+ gatewayStatePath: string;
60
+ stateDbPath: string;
61
+ gatewayPidReadable: boolean;
62
+ gatewayStateReadable: boolean;
63
+ stateDbReadable: boolean;
64
+ stateDbExists: boolean;
65
+ };
66
+ gateway: {
67
+ pidRecord: HermesPidRecord | null;
68
+ runtimeRecord: HermesGatewayRuntimeFile | null;
69
+ live: boolean;
70
+ connectedPlatforms: string[];
71
+ stale: boolean;
72
+ };
73
+ resumable: boolean;
74
+ }
75
+ export declare function collectHermesEvidence(cwd?: string): Promise<HermesEvidence>;
76
+ export declare function buildHermesCapabilityOverrides(capabilities: AdaptCapabilityReport[], evidence: HermesEvidence): AdaptCapabilityReport[];
77
+ export declare function buildHermesBootstrapMetadata(evidence: HermesEvidence): AdaptBootstrapMetadata;
78
+ export declare function buildHermesRuntimeObservation(evidence: HermesEvidence): AdaptRuntimeObservation;
79
+ export declare function applyHermesEnvelope(envelope: AdaptEnvelope, evidence: HermesEvidence): AdaptEnvelope;
80
+ export declare function applyHermesProbe(report: AdaptProbeReport, evidence: HermesEvidence): AdaptProbeReport;
81
+ export declare function applyHermesStatus(report: AdaptStatusReport, evidence: HermesEvidence): AdaptStatusReport;
82
+ export {};
83
+ //# sourceMappingURL=hermes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/adapt/hermes.ts"],"names":[],"mappings":"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"}