oh-my-codex 0.21.25 → 0.21.26
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/Cargo.lock +6 -6
- package/Cargo.toml +1 -1
- package/dist/compat/__tests__/rust-runtime-compat.test.js +2 -0
- package/dist/compat/__tests__/rust-runtime-compat.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +89 -47
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/runtime/__tests__/bridge.test.js +64 -0
- package/dist/runtime/__tests__/bridge.test.js.map +1 -1
- package/dist/runtime/bridge.d.ts +1 -0
- package/dist/runtime/bridge.d.ts.map +1 -1
- package/dist/runtime/bridge.js +9 -3
- package/dist/runtime/bridge.js.map +1 -1
- package/dist/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.js +3 -0
- package/dist/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.js.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.d.ts.map +1 -1
- package/dist/scripts/notify-hook/team-dispatch.js +24 -111
- package/dist/scripts/notify-hook/team-dispatch.js.map +1 -1
- package/dist/team/__tests__/delivery-e2e-smoke.test.js +2 -0
- package/dist/team/__tests__/delivery-e2e-smoke.test.js.map +1 -1
- package/dist/team/__tests__/state.test.js +392 -3
- package/dist/team/__tests__/state.test.js.map +1 -1
- package/dist/team/state/dispatch-recovery.d.ts +2 -0
- package/dist/team/state/dispatch-recovery.d.ts.map +1 -1
- package/dist/team/state/dispatch-recovery.js +5 -0
- package/dist/team/state/dispatch-recovery.js.map +1 -1
- package/dist/team/state/dispatch.d.ts +1 -0
- package/dist/team/state/dispatch.d.ts.map +1 -1
- package/dist/team/state/dispatch.js +26 -13
- package/dist/team/state/dispatch.js.map +1 -1
- package/dist/team/state/types.d.ts +1 -0
- package/dist/team/state/types.d.ts.map +1 -1
- package/dist/team/state/types.js.map +1 -1
- package/dist/team/state.d.ts +3 -0
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +85 -80
- package/dist/team/state.js.map +1 -1
- package/package.json +1 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/src/scripts/__tests__/issue-3679-team-dispatch-non-directory.test.ts +3 -0
- package/src/scripts/notify-hook/team-dispatch.ts +24 -110
package/Cargo.lock
CHANGED
|
@@ -32,7 +32,7 @@ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
|
|
|
32
32
|
|
|
33
33
|
[[package]]
|
|
34
34
|
name = "omx-api"
|
|
35
|
-
version = "0.21.
|
|
35
|
+
version = "0.21.26"
|
|
36
36
|
dependencies = [
|
|
37
37
|
"serde",
|
|
38
38
|
"serde_json",
|
|
@@ -40,14 +40,14 @@ dependencies = [
|
|
|
40
40
|
|
|
41
41
|
[[package]]
|
|
42
42
|
name = "omx-explore-harness"
|
|
43
|
-
version = "0.21.
|
|
43
|
+
version = "0.21.26"
|
|
44
44
|
dependencies = [
|
|
45
45
|
"libc",
|
|
46
46
|
]
|
|
47
47
|
|
|
48
48
|
[[package]]
|
|
49
49
|
name = "omx-mux"
|
|
50
|
-
version = "0.21.
|
|
50
|
+
version = "0.21.26"
|
|
51
51
|
dependencies = [
|
|
52
52
|
"serde",
|
|
53
53
|
"serde_json",
|
|
@@ -55,7 +55,7 @@ dependencies = [
|
|
|
55
55
|
|
|
56
56
|
[[package]]
|
|
57
57
|
name = "omx-runtime"
|
|
58
|
-
version = "0.21.
|
|
58
|
+
version = "0.21.26"
|
|
59
59
|
dependencies = [
|
|
60
60
|
"fs2",
|
|
61
61
|
"libc",
|
|
@@ -67,7 +67,7 @@ dependencies = [
|
|
|
67
67
|
|
|
68
68
|
[[package]]
|
|
69
69
|
name = "omx-runtime-core"
|
|
70
|
-
version = "0.21.
|
|
70
|
+
version = "0.21.26"
|
|
71
71
|
dependencies = [
|
|
72
72
|
"fs2",
|
|
73
73
|
"serde",
|
|
@@ -76,7 +76,7 @@ dependencies = [
|
|
|
76
76
|
|
|
77
77
|
[[package]]
|
|
78
78
|
name = "omx-sparkshell"
|
|
79
|
-
version = "0.21.
|
|
79
|
+
version = "0.21.26"
|
|
80
80
|
dependencies = [
|
|
81
81
|
"omx-mux",
|
|
82
82
|
]
|
package/Cargo.toml
CHANGED
|
@@ -69,6 +69,8 @@ const mailbox = readJson(mailboxPath, { records: [] });
|
|
|
69
69
|
const timestamp = nowIso();
|
|
70
70
|
switch (command.command) {
|
|
71
71
|
case 'QueueDispatch':
|
|
72
|
+
writeJson(path.join(dir, 'events.json'), [...readJson(path.join(dir, 'events.json'), []), { event: 'DispatchQueued', request_id: command.request_id, metadata: command.metadata }]);
|
|
73
|
+
writeJson(path.join(dir, 'dispatch-seen.json'), { schema_version: 2, ledger_epoch: 1, request_ids: [...readJson(path.join(dir, 'dispatch-seen.json'), { request_ids: [] }).request_ids, command.request_id] });
|
|
72
74
|
dispatch.records.push({ request_id: command.request_id, target: command.target, status: 'pending', created_at: timestamp, notified_at: null, delivered_at: null, failed_at: null, reason: null, metadata: command.metadata ?? null });
|
|
73
75
|
writeJson(dispatchPath, dispatch);
|
|
74
76
|
process.stdout.write(JSON.stringify({ event: 'DispatchQueued', request_id: command.request_id, target: command.target }) + '\\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rust-runtime-compat.test.js","sourceRoot":"","sources":["../../../src/compat/__tests__/rust-runtime-compat.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,IAAc,EACd,YAAY,GAA2B,EAAE;IAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;QAC5D,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE;KACzC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3H,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAY;IACjD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,aAAqB,EACrB,EAAoB;IAEpB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,aAAa,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;;YAClE,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,YAAY,CAAC;IACtD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,WAAmB;IAC1D,MAAM,SAAS,CACb,WAAW,EACX
|
|
1
|
+
{"version":3,"file":"rust-runtime-compat.test.js","sourceRoot":"","sources":["../../../src/compat/__tests__/rust-runtime-compat.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,SAAS,QAAQ;IACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,MAAM,CACb,GAAW,EACX,IAAc,EACd,YAAY,GAA2B,EAAE;IAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;QAC5D,GAAG;QACH,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE;KACzC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;AAC3H,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAY;IACjD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,aAAqB,EACrB,EAAoB;IAEpB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,aAAa,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;;YAClE,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,YAAY,CAAC;IACtD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,WAAmB;IAC1D,MAAM,SAAS,CACb,WAAW,EACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDH,CACE,CAAC;IACF,MAAM,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACxD,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,qBAAqB,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,aAAa,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEjF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;gBAChE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAA4B,CAAC;gBAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAA4B,CAAC;gBAE9F,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAC;gBACjC,MAAM,CAAC,YAAY,GAAG,kCAAkC,CAAC;gBACzD,QAAQ,CAAC,cAAc,GAAG,UAAU,CAAC;gBACrC,QAAQ,CAAC,YAAY,GAAG,2BAA2B,CAAC;gBAEpD,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpE,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAExE,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,EAAE,mBAAmB,EAAE,aAAa,EAAE,CAAC,CAAC;gBACpH,IAAI,6BAA6B,CAAC,MAAM,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAExD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAKvC,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBACjD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;gBACpD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,qBAAqB,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,aAAa,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEnF,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBAClE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAChD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAA4B,CAAC;gBAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAA4B,CAAC;gBAE9F,MAAM,CAAC,YAAY,GAAG,oCAAoC,CAAC;gBAC3D,QAAQ,CAAC,YAAY,GAAG,6BAA6B,CAAC;gBAEtD,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpE,MAAM,SAAS,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAExE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChC,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACvC,MAAM,SAAS,CACb,QAAQ,EACR,yGAAyG,CAC1G,CAAC;gBACF,MAAM,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAE7B,MAAM,MAAM,GAAG,MAAM,CACnB,EAAE,EACF,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACpB,EAAE,IAAI,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,mBAAmB,EAAE,aAAa,EAAE,CACrF,CAAC;gBACF,IAAI,6BAA6B,CAAC,MAAM,CAAC,KAAK,CAAC;oBAAE,OAAO;gBAExD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC/D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC;gBAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;gBACxD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,iBAAiB,CAAC;YACpC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/D,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAElD,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrG,MAAM,SAAS,CACb,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAClC,IAAI,CAAC,SAAS,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,aAAa,EAAE,eAAe;gBAC9B,SAAS,EAAE,aAAa;gBACxB,WAAW,EAAE,CAAC;aACf,EAAE,IAAI,EAAE,CAAC,CAAC,CACZ,CAAC;YACF,MAAM,SAAS,CACb,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC;gBACb,MAAM,EAAE,IAAI;gBACZ,aAAa,EAAE,WAAW;gBAC1B,SAAS,EAAE,cAAc;gBACzB,WAAW,EAAE,CAAC;aACf,EAAE,IAAI,EAAE,CAAC,CAAC,CACZ,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;QACpE,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,qBAAqB,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;gBACpD,MAAM,aAAa,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnF,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChC,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBACjD,MAAM,yBAAyB,CAAC,WAAW,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,WAAW,CAAC;gBAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBAClE,MAAM,SAAS,CACb,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,EAC1C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,EAAE,UAAU,EAAE,0BAA0B,EAAE,UAAU,EAAE,0BAA0B,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAC5S,CAAC;gBACF,MAAM,SAAS,CACb,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,EACzC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,0BAA0B,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACvM,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CACzC,oBAAoB,EACpB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,EACvG,EAAE,CACH,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,oBAAoB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;gBACzG,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;gBACtE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,oBAAoB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;gBAEhF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC7F,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,aAAa,CAAC,EAAE,KAAK,EAAE,+DAA+D,CAAC,CAAC;gBACnJ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;gBACrF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,YAAY,CAAC,EAAE,KAAK,EAAE,8DAA8D,CAAC,CAAC;YAClJ,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,qBAAqB,KAAK,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;;gBACjG,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;YAC3C,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -301,6 +301,40 @@ describe('notify-hook team dispatch consumer', () => {
|
|
|
301
301
|
process.env.OMX_TEAM_STATE_ROOT = originalTeamStateRoot;
|
|
302
302
|
}
|
|
303
303
|
});
|
|
304
|
+
it('reads and finalizes requests in the explicitly selected state directory', async () => {
|
|
305
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-hook-selected-root-'));
|
|
306
|
+
const previousBridge = process.env.OMX_RUNTIME_BRIDGE;
|
|
307
|
+
try {
|
|
308
|
+
process.env.OMX_RUNTIME_BRIDGE = '0';
|
|
309
|
+
const stateDir = join(cwd, 'selected-state');
|
|
310
|
+
const selected = join(stateDir, 'team/alpha/dispatch/requests.json');
|
|
311
|
+
const decoy = join(cwd, '.omx/state/team/alpha/dispatch/requests.json');
|
|
312
|
+
const request = { kind: 'inbox', team_name: 'alpha', to_worker: 'worker-1', trigger_message: 'ping', status: 'pending' };
|
|
313
|
+
for (const root of [stateDir, join(cwd, '.omx/state')])
|
|
314
|
+
await mkdir(join(root, 'team/alpha/dispatch'), { recursive: true });
|
|
315
|
+
await writeFile(selected, JSON.stringify([{ ...request, request_id: 'selected' }]));
|
|
316
|
+
await writeFile(decoy, JSON.stringify([{ ...request, request_id: 'decoy' }]));
|
|
317
|
+
const before = await readFile(decoy, 'utf8');
|
|
318
|
+
const injected = [];
|
|
319
|
+
const { drainPendingTeamDispatch } = await import('../../scripts/notify-hook/team-dispatch.js');
|
|
320
|
+
const drain = () => drainPendingTeamDispatch({ cwd, stateDir, injector: async (request) => {
|
|
321
|
+
injected.push(request.request_id);
|
|
322
|
+
return { ok: true, reason: 'selected-root-test' };
|
|
323
|
+
} });
|
|
324
|
+
assert.equal((await drain()).processed, 1);
|
|
325
|
+
assert.deepEqual(injected, ['selected']);
|
|
326
|
+
assert.equal(JSON.parse(await readFile(selected, 'utf8'))[0].status, 'notified');
|
|
327
|
+
assert.equal((await drain()).processed, 0);
|
|
328
|
+
assert.equal(await readFile(decoy, 'utf8'), before);
|
|
329
|
+
}
|
|
330
|
+
finally {
|
|
331
|
+
if (previousBridge === undefined)
|
|
332
|
+
delete process.env.OMX_RUNTIME_BRIDGE;
|
|
333
|
+
else
|
|
334
|
+
process.env.OMX_RUNTIME_BRIDGE = previousBridge;
|
|
335
|
+
await rm(cwd, { recursive: true, force: true });
|
|
336
|
+
}
|
|
337
|
+
});
|
|
304
338
|
it('keeps repeated idle drains read-only and discovers event-only queued work', async () => {
|
|
305
339
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-hook-idle-refresh-'));
|
|
306
340
|
try {
|
|
@@ -923,53 +957,61 @@ exit 1
|
|
|
923
957
|
await rm(cwd, { recursive: true, force: true });
|
|
924
958
|
}
|
|
925
959
|
});
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
960
|
+
for (const corruption of ['invalid-json', 'null-row', 'invalid-row', 'mixed-rows']) {
|
|
961
|
+
it(`persists an injected request when runtime compatibility changes after preflight (${corruption})`, async () => {
|
|
962
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-hook-runtime-swap-'));
|
|
963
|
+
const previousBinary = process.env.OMX_RUNTIME_BINARY;
|
|
964
|
+
const previousBridge = process.env.OMX_RUNTIME_BRIDGE;
|
|
965
|
+
try {
|
|
966
|
+
const runtimePath = join(cwd, 'omx-runtime');
|
|
967
|
+
await writeCompatRuntimeFixture(runtimePath);
|
|
968
|
+
process.env.OMX_RUNTIME_BINARY = runtimePath;
|
|
969
|
+
process.env.OMX_RUNTIME_BRIDGE = '1';
|
|
970
|
+
await initTeamState('alpha', 'task', 'executor', 1, cwd);
|
|
971
|
+
const queued = await enqueueDispatchRequest('alpha', {
|
|
972
|
+
kind: 'inbox', to_worker: 'worker-1', worker_index: 1, trigger_message: 'investigate ABC-123',
|
|
973
|
+
}, cwd);
|
|
974
|
+
const supported = await readFile(runtimePath, 'utf8');
|
|
975
|
+
const projectionPath = join(cwd, '.omx/state/dispatch.json');
|
|
976
|
+
const pendingProjection = await readFile(projectionPath, 'utf8');
|
|
977
|
+
let injections = 0;
|
|
978
|
+
const mod = await import('../../scripts/notify-hook/team-dispatch.js');
|
|
979
|
+
const drain = () => mod.drainPendingTeamDispatch({ cwd, maxPerTick: 5,
|
|
980
|
+
injector: async () => {
|
|
981
|
+
injections += 1;
|
|
982
|
+
await writeFile(runtimePath, supported.replace("capabilities: ['team-mailbox-scope-v1']", 'capabilities: []'));
|
|
983
|
+
const records = JSON.parse(pendingProjection).records;
|
|
984
|
+
const damagedProjection = corruption === 'invalid-json' ? '{"records":'
|
|
985
|
+
: JSON.stringify({ records: corruption === 'null-row' ? [null]
|
|
986
|
+
: corruption === 'invalid-row' ? [{}] : [...records, null] });
|
|
987
|
+
await writeFile(projectionPath, damagedProjection);
|
|
988
|
+
return { ok: true, reason: 'injected_for_test' };
|
|
989
|
+
} });
|
|
990
|
+
assert.equal((await drain()).processed, 1);
|
|
991
|
+
assert.equal(await readDispatchRequest('alpha', queued.request.request_id, cwd), null, 'an unavailable projection must not expose runtime-owned shadows');
|
|
992
|
+
const shadows = JSON.parse(await readFile(join(cwd, '.omx/state/team/alpha/dispatch/requests.json'), 'utf8'));
|
|
993
|
+
assert.equal(shadows.find((request) => request.request_id === queued.request.request_id)?.status, 'notified');
|
|
994
|
+
assert.equal(injections, 1);
|
|
995
|
+
assert.equal(JSON.parse((await readFile(join(cwd, '.omx/state/team/alpha/dispatch/runtime-finalizations.jsonl'), 'utf8')).trim()).command, 'MarkNotified');
|
|
996
|
+
await assert.rejects(drain, /team-mailbox-scope-v1/);
|
|
997
|
+
await writeFile(runtimePath, supported);
|
|
998
|
+
await writeFile(projectionPath, pendingProjection);
|
|
999
|
+
assert.equal((await drain()).processed, 0);
|
|
1000
|
+
assert.equal(injections, 1, 'post-injection schema drift must not leave the request eligible for replay');
|
|
1001
|
+
}
|
|
1002
|
+
finally {
|
|
1003
|
+
if (previousBinary === undefined)
|
|
1004
|
+
delete process.env.OMX_RUNTIME_BINARY;
|
|
1005
|
+
else
|
|
1006
|
+
process.env.OMX_RUNTIME_BINARY = previousBinary;
|
|
1007
|
+
if (previousBridge === undefined)
|
|
1008
|
+
delete process.env.OMX_RUNTIME_BRIDGE;
|
|
1009
|
+
else
|
|
1010
|
+
process.env.OMX_RUNTIME_BRIDGE = previousBridge;
|
|
1011
|
+
await rm(cwd, { recursive: true, force: true });
|
|
1012
|
+
}
|
|
1013
|
+
});
|
|
1014
|
+
}
|
|
973
1015
|
it('journals an injected request when the runtime disappears after preflight', async () => {
|
|
974
1016
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-hook-runtime-unavailable-'));
|
|
975
1017
|
const previousBinary = process.env.OMX_RUNTIME_BINARY;
|