oh-my-codex 0.8.0 → 0.8.2
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/README.de.md +7 -2
- package/README.es.md +7 -2
- package/README.fr.md +7 -2
- package/README.it.md +7 -2
- package/README.ja.md +7 -2
- package/README.ko.md +7 -2
- package/README.md +61 -11
- package/README.pt.md +7 -2
- package/README.ru.md +7 -2
- package/README.tr.md +7 -2
- package/README.vi.md +7 -2
- package/README.zh-TW.md +366 -0
- package/README.zh.md +7 -2
- package/dist/cli/__tests__/index.test.js +70 -4
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/setup-skills-overwrite.test.js +100 -1
- package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +219 -1
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/catalog-contract.d.ts.map +1 -1
- package/dist/cli/catalog-contract.js +8 -2
- package/dist/cli/catalog-contract.js.map +1 -1
- package/dist/cli/index.d.ts +7 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +58 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +50 -17
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +257 -0
- package/dist/cli/team.js.map +1 -1
- package/dist/config/__tests__/models.test.js +11 -11
- package/dist/config/__tests__/models.test.js.map +1 -1
- package/dist/config/models.d.ts +4 -3
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +6 -5
- package/dist/config/models.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +46 -3
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +23 -7
- package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +176 -1
- package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +61 -1
- package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +17 -7
- package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
- package/dist/hooks/__tests__/openclaw-setup-contract.test.js +26 -16
- package/dist/hooks/__tests__/openclaw-setup-contract.test.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts +2 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +41 -4
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hooks/keyword-registry.d.ts.map +1 -1
- package/dist/hooks/keyword-registry.js +5 -0
- package/dist/hooks/keyword-registry.js.map +1 -1
- package/dist/mcp/__tests__/path-traversal.test.js +9 -227
- package/dist/mcp/__tests__/path-traversal.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server-schema.test.js +16 -20
- package/dist/mcp/__tests__/state-server-schema.test.js.map +1 -1
- package/dist/mcp/__tests__/state-server-team-tools.test.js +30 -487
- package/dist/mcp/__tests__/state-server-team-tools.test.js.map +1 -1
- package/dist/mcp/state-server.d.ts +179 -0
- package/dist/mcp/state-server.d.ts.map +1 -1
- package/dist/mcp/state-server.js +217 -1111
- package/dist/mcp/state-server.js.map +1 -1
- package/dist/mcp/team-server.d.ts.map +1 -1
- package/dist/mcp/team-server.js +28 -7
- package/dist/mcp/team-server.js.map +1 -1
- package/dist/notifications/__tests__/dispatch-cooldown.test.d.ts +5 -0
- package/dist/notifications/__tests__/dispatch-cooldown.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/dispatch-cooldown.test.js +100 -0
- package/dist/notifications/__tests__/dispatch-cooldown.test.js.map +1 -0
- package/dist/notifications/__tests__/temp-mode.test.d.ts +2 -0
- package/dist/notifications/__tests__/temp-mode.test.d.ts.map +1 -0
- package/dist/notifications/__tests__/temp-mode.test.js +172 -0
- package/dist/notifications/__tests__/temp-mode.test.js.map +1 -0
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +59 -6
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/dispatch-cooldown.d.ts +36 -0
- package/dist/notifications/dispatch-cooldown.d.ts.map +1 -0
- package/dist/notifications/dispatch-cooldown.js +109 -0
- package/dist/notifications/dispatch-cooldown.js.map +1 -0
- package/dist/notifications/index.d.ts +5 -0
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +39 -8
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/temp-contract.d.ts +22 -0
- package/dist/notifications/temp-contract.d.ts.map +1 -0
- package/dist/notifications/temp-contract.js +147 -0
- package/dist/notifications/temp-contract.js.map +1 -0
- package/dist/notifications/types.d.ts +18 -0
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/openclaw/__tests__/config.test.js +81 -0
- package/dist/openclaw/__tests__/config.test.js.map +1 -1
- package/dist/openclaw/__tests__/dispatcher.test.js +50 -7
- package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
- package/dist/openclaw/config.d.ts +4 -0
- package/dist/openclaw/config.d.ts.map +1 -1
- package/dist/openclaw/config.js +110 -16
- package/dist/openclaw/config.js.map +1 -1
- package/dist/openclaw/dispatcher.d.ts +10 -4
- package/dist/openclaw/dispatcher.d.ts.map +1 -1
- package/dist/openclaw/dispatcher.js +40 -10
- package/dist/openclaw/dispatcher.js.map +1 -1
- package/dist/openclaw/types.d.ts +5 -1
- package/dist/openclaw/types.d.ts.map +1 -1
- package/dist/team/__tests__/api-interop.test.d.ts +2 -0
- package/dist/team/__tests__/api-interop.test.d.ts.map +1 -0
- package/dist/team/__tests__/api-interop.test.js +1052 -0
- package/dist/team/__tests__/api-interop.test.js.map +1 -0
- package/dist/team/__tests__/mcp-comm.test.js +30 -0
- package/dist/team/__tests__/mcp-comm.test.js.map +1 -1
- package/dist/team/__tests__/runtime-cli.test.js +6 -0
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +52 -22
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-claude-workers-demo.test.d.ts +2 -0
- package/dist/team/__tests__/tmux-claude-workers-demo.test.d.ts.map +1 -0
- package/dist/team/__tests__/tmux-claude-workers-demo.test.js +190 -0
- package/dist/team/__tests__/tmux-claude-workers-demo.test.js.map +1 -0
- package/dist/team/__tests__/tmux-session.test.js +45 -2
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +20 -12
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/api-interop.d.ts +19 -0
- package/dist/team/api-interop.d.ts.map +1 -0
- package/dist/team/api-interop.js +578 -0
- package/dist/team/api-interop.js.map +1 -0
- package/dist/team/mcp-comm.d.ts.map +1 -1
- package/dist/team/mcp-comm.js +26 -0
- package/dist/team/mcp-comm.js.map +1 -1
- package/dist/team/runtime-cli.d.ts +3 -0
- package/dist/team/runtime-cli.d.ts.map +1 -1
- package/dist/team/runtime-cli.js +24 -2
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +67 -11
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/state/types.d.ts +1 -1
- package/dist/team/state/types.d.ts.map +1 -1
- package/dist/team/state.d.ts +1 -1
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/tmux-session.d.ts +1 -1
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +17 -5
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +48 -19
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/package.json +1 -1
- package/scripts/demo-claude-workers.sh +241 -0
- package/scripts/demo-team-e2e.sh +179 -0
- package/scripts/notify-hook/team-dispatch.js +186 -12
- package/scripts/notify-hook/team-leader-nudge.js +42 -2
- package/scripts/notify-hook/team-worker.js +63 -4
- package/skills/configure-notifications/SKILL.md +193 -185
- package/skills/omx-setup/SKILL.md +1 -1
- package/skills/team/SKILL.md +47 -5
- package/skills/worker/SKILL.md +40 -10
- package/templates/AGENTS.md +7 -3
- package/templates/catalog-manifest.json +26 -3
- package/skills/configure-discord/SKILL.md +0 -256
- package/skills/configure-openclaw/SKILL.md +0 -264
- package/skills/configure-slack/SKILL.md +0 -226
- package/skills/configure-telegram/SKILL.md +0 -232
|
@@ -1,492 +1,35 @@
|
|
|
1
1
|
import { describe, it } from 'node:test';
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
team_name: 'alpha-team',
|
|
34
|
-
worker: 'leader-fixed',
|
|
35
|
-
include_delivered: false,
|
|
36
|
-
workingDirectory: wd,
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
const listJson = JSON.parse(listResp.content[0]?.text || '{}');
|
|
41
|
-
assert.equal(listJson.ok, true);
|
|
42
|
-
assert.equal(listJson.count, 1);
|
|
43
|
-
const msgId = listJson.messages?.[0]?.message_id;
|
|
44
|
-
assert.ok(msgId);
|
|
45
|
-
const notifyResp = await handleStateToolCall({
|
|
46
|
-
params: {
|
|
47
|
-
name: 'team_mailbox_mark_notified',
|
|
48
|
-
arguments: {
|
|
49
|
-
team_name: 'alpha-team',
|
|
50
|
-
worker: 'leader-fixed',
|
|
51
|
-
message_id: msgId,
|
|
52
|
-
workingDirectory: wd,
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
const notifyJson = JSON.parse(notifyResp.content[0]?.text || '{}');
|
|
57
|
-
assert.equal(notifyJson.ok, true);
|
|
58
|
-
assert.equal(notifyJson.notified, true);
|
|
59
|
-
const markResp = await handleStateToolCall({
|
|
60
|
-
params: {
|
|
61
|
-
name: 'team_mailbox_mark_delivered',
|
|
62
|
-
arguments: {
|
|
63
|
-
team_name: 'alpha-team',
|
|
64
|
-
worker: 'leader-fixed',
|
|
65
|
-
message_id: msgId,
|
|
66
|
-
workingDirectory: wd,
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
const markJson = JSON.parse(markResp.content[0]?.text || '{}');
|
|
71
|
-
assert.equal(markJson.ok, true);
|
|
72
|
-
assert.equal(markJson.updated, true);
|
|
73
|
-
const listAfterResp = await handleStateToolCall({
|
|
74
|
-
params: {
|
|
75
|
-
name: 'team_mailbox_list',
|
|
76
|
-
arguments: {
|
|
77
|
-
team_name: 'alpha-team',
|
|
78
|
-
worker: 'leader-fixed',
|
|
79
|
-
include_delivered: false,
|
|
80
|
-
workingDirectory: wd,
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
});
|
|
84
|
-
const listAfterJson = JSON.parse(listAfterResp.content[0]?.text || '{}');
|
|
85
|
-
assert.equal(listAfterJson.ok, true);
|
|
86
|
-
assert.equal(listAfterJson.count, 0);
|
|
87
|
-
}
|
|
88
|
-
finally {
|
|
89
|
-
await rm(wd, { recursive: true, force: true });
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
it('team_broadcast sends to all workers except sender', async () => {
|
|
93
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
94
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
95
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
96
|
-
try {
|
|
97
|
-
await initTeamState('beta-team', 'broadcast test', 'executor', 3, wd);
|
|
98
|
-
const resp = await handleStateToolCall({
|
|
99
|
-
params: {
|
|
100
|
-
name: 'team_broadcast',
|
|
101
|
-
arguments: {
|
|
102
|
-
team_name: 'beta-team',
|
|
103
|
-
from_worker: 'worker-1',
|
|
104
|
-
body: 'hello team',
|
|
105
|
-
workingDirectory: wd,
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
const json = JSON.parse(resp.content[0]?.text || '{}');
|
|
110
|
-
assert.equal(json.ok, true);
|
|
111
|
-
assert.equal(json.count, 2);
|
|
112
|
-
const w2 = await handleStateToolCall({
|
|
113
|
-
params: {
|
|
114
|
-
name: 'team_mailbox_list',
|
|
115
|
-
arguments: {
|
|
116
|
-
team_name: 'beta-team',
|
|
117
|
-
worker: 'worker-2',
|
|
118
|
-
workingDirectory: wd,
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
});
|
|
122
|
-
const w3 = await handleStateToolCall({
|
|
123
|
-
params: {
|
|
124
|
-
name: 'team_mailbox_list',
|
|
125
|
-
arguments: {
|
|
126
|
-
team_name: 'beta-team',
|
|
127
|
-
worker: 'worker-3',
|
|
128
|
-
workingDirectory: wd,
|
|
129
|
-
},
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
const w2Json = JSON.parse(w2.content[0]?.text || '{}');
|
|
133
|
-
const w3Json = JSON.parse(w3.content[0]?.text || '{}');
|
|
134
|
-
assert.equal(w2Json.count, 1);
|
|
135
|
-
assert.equal(w3Json.count, 1);
|
|
136
|
-
}
|
|
137
|
-
finally {
|
|
138
|
-
await rm(wd, { recursive: true, force: true });
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
it('team_read_task/team_list_tasks resolve team root from nested workingDirectory', async () => {
|
|
142
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
143
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
144
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
145
|
-
const nestedWd = join(wd, 'nested', 'deep');
|
|
146
|
-
try {
|
|
147
|
-
await mkdir(nestedWd, { recursive: true });
|
|
148
|
-
await initTeamState('gamma-team', 'nested cwd test', 'executor', 1, wd);
|
|
149
|
-
const createResp = await handleStateToolCall({
|
|
150
|
-
params: {
|
|
151
|
-
name: 'team_create_task',
|
|
152
|
-
arguments: {
|
|
153
|
-
team_name: 'gamma-team',
|
|
154
|
-
subject: 'Task from root',
|
|
155
|
-
description: 'Created from root wd',
|
|
156
|
-
workingDirectory: wd,
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
});
|
|
160
|
-
const createJson = JSON.parse(createResp.content[0]?.text || '{}');
|
|
161
|
-
assert.equal(createJson.ok, true);
|
|
162
|
-
assert.equal(createJson.task?.id, '1');
|
|
163
|
-
const listResp = await handleStateToolCall({
|
|
164
|
-
params: {
|
|
165
|
-
name: 'team_list_tasks',
|
|
166
|
-
arguments: {
|
|
167
|
-
team_name: 'gamma-team',
|
|
168
|
-
workingDirectory: nestedWd,
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
});
|
|
172
|
-
const listJson = JSON.parse(listResp.content[0]?.text || '{}');
|
|
173
|
-
assert.equal(listJson.ok, true);
|
|
174
|
-
assert.equal(listJson.count, 1);
|
|
175
|
-
const readResp = await handleStateToolCall({
|
|
176
|
-
params: {
|
|
177
|
-
name: 'team_read_task',
|
|
178
|
-
arguments: {
|
|
179
|
-
team_name: 'gamma-team',
|
|
180
|
-
task_id: '1',
|
|
181
|
-
workingDirectory: nestedWd,
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
});
|
|
185
|
-
const readJson = JSON.parse(readResp.content[0]?.text || '{}');
|
|
186
|
-
assert.equal(readJson.ok, true);
|
|
187
|
-
assert.equal(readJson.task?.id, '1');
|
|
188
|
-
}
|
|
189
|
-
finally {
|
|
190
|
-
await rm(wd, { recursive: true, force: true });
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
it('team_write_worker_identity persists workspace metadata fields', async () => {
|
|
194
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
195
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
196
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
197
|
-
try {
|
|
198
|
-
await initTeamState('identity-team', 'identity test', 'executor', 1, wd);
|
|
199
|
-
const identityResp = await handleStateToolCall({
|
|
200
|
-
params: {
|
|
201
|
-
name: 'team_write_worker_identity',
|
|
202
|
-
arguments: {
|
|
203
|
-
team_name: 'identity-team',
|
|
204
|
-
worker: 'worker-1',
|
|
205
|
-
index: 1,
|
|
206
|
-
role: 'executor',
|
|
207
|
-
assigned_tasks: ['1'],
|
|
208
|
-
working_dir: '/tmp/worktree/worker-1',
|
|
209
|
-
worktree_path: '/tmp/worktree/worker-1',
|
|
210
|
-
worktree_branch: 'feature/worker-1',
|
|
211
|
-
worktree_detached: false,
|
|
212
|
-
team_state_root: '/tmp/leader/.omx/state',
|
|
213
|
-
workingDirectory: wd,
|
|
214
|
-
},
|
|
215
|
-
},
|
|
216
|
-
});
|
|
217
|
-
const identityJson = JSON.parse(identityResp.content[0]?.text || '{}');
|
|
218
|
-
assert.equal(identityJson.ok, true);
|
|
219
|
-
const identityPath = join(wd, '.omx', 'state', 'team', 'identity-team', 'workers', 'worker-1', 'identity.json');
|
|
220
|
-
const persisted = JSON.parse(await readFile(identityPath, 'utf8'));
|
|
221
|
-
assert.equal(persisted.working_dir, '/tmp/worktree/worker-1');
|
|
222
|
-
assert.equal(persisted.worktree_path, '/tmp/worktree/worker-1');
|
|
223
|
-
assert.equal(persisted.worktree_branch, 'feature/worker-1');
|
|
224
|
-
assert.equal(persisted.worktree_detached, false);
|
|
225
|
-
assert.equal(persisted.team_state_root, '/tmp/leader/.omx/state');
|
|
226
|
-
}
|
|
227
|
-
finally {
|
|
228
|
-
await rm(wd, { recursive: true, force: true });
|
|
229
|
-
}
|
|
230
|
-
});
|
|
231
|
-
it('team tool resolution prefers OMX_TEAM_STATE_ROOT when workingDirectory is omitted', async () => {
|
|
232
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
233
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
234
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
235
|
-
const prevRoot = process.env.OMX_TEAM_STATE_ROOT;
|
|
236
|
-
try {
|
|
237
|
-
await initTeamState('env-root-team', 'env root test', 'executor', 1, wd);
|
|
238
|
-
process.env.OMX_TEAM_STATE_ROOT = join(wd, '.omx', 'state');
|
|
239
|
-
const createResp = await handleStateToolCall({
|
|
240
|
-
params: {
|
|
241
|
-
name: 'team_create_task',
|
|
242
|
-
arguments: {
|
|
243
|
-
team_name: 'env-root-team',
|
|
244
|
-
subject: 'Created via env root',
|
|
245
|
-
description: 'should resolve without workingDirectory',
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
});
|
|
249
|
-
const createJson = JSON.parse(createResp.content[0]?.text || '{}');
|
|
250
|
-
assert.equal(createJson.ok, true);
|
|
251
|
-
assert.equal(createJson.task?.id, '1');
|
|
252
|
-
}
|
|
253
|
-
finally {
|
|
254
|
-
if (typeof prevRoot === 'string')
|
|
255
|
-
process.env.OMX_TEAM_STATE_ROOT = prevRoot;
|
|
256
|
-
else
|
|
257
|
-
delete process.env.OMX_TEAM_STATE_ROOT;
|
|
258
|
-
await rm(wd, { recursive: true, force: true });
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
it('team_transition_task_status rejects non-terminal transition attempts', async () => {
|
|
262
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
263
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
264
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
265
|
-
try {
|
|
266
|
-
await initTeamState('transition-guard-team', 'transition guard test', 'executor', 1, wd);
|
|
267
|
-
const createResp = await handleStateToolCall({
|
|
268
|
-
params: {
|
|
269
|
-
name: 'team_create_task',
|
|
270
|
-
arguments: {
|
|
271
|
-
team_name: 'transition-guard-team',
|
|
272
|
-
subject: 'Task for transition guard',
|
|
273
|
-
description: 'Should only allow terminal transition',
|
|
274
|
-
workingDirectory: wd,
|
|
275
|
-
},
|
|
276
|
-
},
|
|
277
|
-
});
|
|
278
|
-
const created = JSON.parse(createResp.content[0]?.text || '{}');
|
|
279
|
-
assert.equal(created.ok, true);
|
|
280
|
-
const taskId = created.task?.id;
|
|
281
|
-
assert.ok(taskId);
|
|
282
|
-
const claimResp = await handleStateToolCall({
|
|
283
|
-
params: {
|
|
284
|
-
name: 'team_claim_task',
|
|
285
|
-
arguments: {
|
|
286
|
-
team_name: 'transition-guard-team',
|
|
287
|
-
task_id: taskId,
|
|
288
|
-
worker: 'worker-1',
|
|
289
|
-
expected_version: 1,
|
|
290
|
-
workingDirectory: wd,
|
|
291
|
-
},
|
|
292
|
-
},
|
|
293
|
-
});
|
|
294
|
-
const claim = JSON.parse(claimResp.content[0]?.text || '{}');
|
|
295
|
-
assert.equal(claim.ok, true);
|
|
296
|
-
assert.equal(typeof claim.claimToken, 'string');
|
|
297
|
-
const transitionResp = await handleStateToolCall({
|
|
298
|
-
params: {
|
|
299
|
-
name: 'team_transition_task_status',
|
|
300
|
-
arguments: {
|
|
301
|
-
team_name: 'transition-guard-team',
|
|
302
|
-
task_id: taskId,
|
|
303
|
-
from: 'in_progress',
|
|
304
|
-
to: 'pending',
|
|
305
|
-
claim_token: claim.claimToken,
|
|
306
|
-
workingDirectory: wd,
|
|
307
|
-
},
|
|
308
|
-
},
|
|
309
|
-
});
|
|
310
|
-
const transition = JSON.parse(transitionResp.content[0]?.text || '{}');
|
|
311
|
-
assert.equal(transition.ok, false);
|
|
312
|
-
assert.equal(transition.error, 'invalid_transition');
|
|
313
|
-
}
|
|
314
|
-
finally {
|
|
315
|
-
await rm(wd, { recursive: true, force: true });
|
|
316
|
-
}
|
|
317
|
-
});
|
|
318
|
-
it('team_update_task rejects unsupported fields and invalid blocked_by entries', async () => {
|
|
319
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
320
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
321
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
322
|
-
try {
|
|
323
|
-
await initTeamState('update-guard-team', 'update guard test', 'executor', 1, wd);
|
|
324
|
-
const createResp = await handleStateToolCall({
|
|
325
|
-
params: {
|
|
326
|
-
name: 'team_create_task',
|
|
327
|
-
arguments: {
|
|
328
|
-
team_name: 'update-guard-team',
|
|
329
|
-
subject: 'task',
|
|
330
|
-
description: 'task desc',
|
|
331
|
-
workingDirectory: wd,
|
|
332
|
-
},
|
|
333
|
-
},
|
|
334
|
-
});
|
|
335
|
-
const createJson = JSON.parse(createResp.content[0]?.text || '{}');
|
|
336
|
-
const taskId = createJson.task?.id ?? '1';
|
|
337
|
-
const unsupportedResp = await handleStateToolCall({
|
|
338
|
-
params: {
|
|
339
|
-
name: 'team_update_task',
|
|
340
|
-
arguments: {
|
|
341
|
-
team_name: 'update-guard-team',
|
|
342
|
-
task_id: taskId,
|
|
343
|
-
claim: { owner: 'worker-1' },
|
|
344
|
-
workingDirectory: wd,
|
|
345
|
-
},
|
|
346
|
-
},
|
|
347
|
-
});
|
|
348
|
-
assert.equal(unsupportedResp.isError, true);
|
|
349
|
-
const unsupportedJson = JSON.parse(unsupportedResp.content[0]?.text || '{}');
|
|
350
|
-
assert.match(unsupportedJson.error ?? '', /unsupported fields/i);
|
|
351
|
-
const invalidDepsResp = await handleStateToolCall({
|
|
352
|
-
params: {
|
|
353
|
-
name: 'team_update_task',
|
|
354
|
-
arguments: {
|
|
355
|
-
team_name: 'update-guard-team',
|
|
356
|
-
task_id: taskId,
|
|
357
|
-
blocked_by: ['../oops'],
|
|
358
|
-
workingDirectory: wd,
|
|
359
|
-
},
|
|
360
|
-
},
|
|
361
|
-
});
|
|
362
|
-
assert.equal(invalidDepsResp.isError, true);
|
|
363
|
-
const invalidDepsJson = JSON.parse(invalidDepsResp.content[0]?.text || '{}');
|
|
364
|
-
assert.match(invalidDepsJson.error ?? '', /blocked_by contains invalid task ID/i);
|
|
365
|
-
}
|
|
366
|
-
finally {
|
|
367
|
-
await rm(wd, { recursive: true, force: true });
|
|
368
|
-
}
|
|
369
|
-
});
|
|
370
|
-
it('team_claim_task validates expected_version as a positive integer', async () => {
|
|
371
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
372
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
373
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
374
|
-
try {
|
|
375
|
-
await initTeamState('claim-guard-team', 'claim guard test', 'executor', 1, wd);
|
|
376
|
-
await handleStateToolCall({
|
|
377
|
-
params: {
|
|
378
|
-
name: 'team_create_task',
|
|
379
|
-
arguments: {
|
|
380
|
-
team_name: 'claim-guard-team',
|
|
381
|
-
subject: 'task',
|
|
382
|
-
description: 'task desc',
|
|
383
|
-
workingDirectory: wd,
|
|
384
|
-
},
|
|
385
|
-
},
|
|
386
|
-
});
|
|
387
|
-
const badTypeResp = await handleStateToolCall({
|
|
388
|
-
params: {
|
|
389
|
-
name: 'team_claim_task',
|
|
390
|
-
arguments: {
|
|
391
|
-
team_name: 'claim-guard-team',
|
|
392
|
-
task_id: '1',
|
|
393
|
-
worker: 'worker-1',
|
|
394
|
-
expected_version: '1',
|
|
395
|
-
workingDirectory: wd,
|
|
396
|
-
},
|
|
397
|
-
},
|
|
398
|
-
});
|
|
399
|
-
assert.equal(badTypeResp.isError, true);
|
|
400
|
-
const badTypeJson = JSON.parse(badTypeResp.content[0]?.text || '{}');
|
|
401
|
-
assert.match(badTypeJson.error ?? '', /expected_version must be a positive integer/i);
|
|
402
|
-
const badValueResp = await handleStateToolCall({
|
|
403
|
-
params: {
|
|
404
|
-
name: 'team_claim_task',
|
|
405
|
-
arguments: {
|
|
406
|
-
team_name: 'claim-guard-team',
|
|
407
|
-
task_id: '1',
|
|
408
|
-
worker: 'worker-1',
|
|
409
|
-
expected_version: 0,
|
|
410
|
-
workingDirectory: wd,
|
|
411
|
-
},
|
|
412
|
-
},
|
|
413
|
-
});
|
|
414
|
-
assert.equal(badValueResp.isError, true);
|
|
415
|
-
const badValueJson = JSON.parse(badValueResp.content[0]?.text || '{}');
|
|
416
|
-
assert.match(badValueJson.error ?? '', /expected_version must be a positive integer/i);
|
|
417
|
-
}
|
|
418
|
-
finally {
|
|
419
|
-
await rm(wd, { recursive: true, force: true });
|
|
420
|
-
}
|
|
421
|
-
});
|
|
422
|
-
it('team_append_event rejects unknown event types', async () => {
|
|
423
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
424
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
425
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
426
|
-
try {
|
|
427
|
-
await initTeamState('event-guard-team', 'event guard test', 'executor', 1, wd);
|
|
428
|
-
const resp = await handleStateToolCall({
|
|
429
|
-
params: {
|
|
430
|
-
name: 'team_append_event',
|
|
431
|
-
arguments: {
|
|
432
|
-
team_name: 'event-guard-team',
|
|
433
|
-
type: 'not-a-real-event',
|
|
434
|
-
worker: 'worker-1',
|
|
435
|
-
workingDirectory: wd,
|
|
436
|
-
},
|
|
437
|
-
},
|
|
438
|
-
});
|
|
439
|
-
assert.equal(resp.isError, true);
|
|
440
|
-
const json = JSON.parse(resp.content[0]?.text || '{}');
|
|
441
|
-
assert.match(json.error ?? '', /type must be one of/i);
|
|
442
|
-
}
|
|
443
|
-
finally {
|
|
444
|
-
await rm(wd, { recursive: true, force: true });
|
|
445
|
-
}
|
|
446
|
-
});
|
|
447
|
-
it('team_write_task_approval validates status enum and required type', async () => {
|
|
448
|
-
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
449
|
-
const { handleStateToolCall } = await import('../state-server.js');
|
|
450
|
-
const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
|
|
451
|
-
try {
|
|
452
|
-
await initTeamState('approval-guard-team', 'approval guard test', 'executor', 1, wd);
|
|
453
|
-
const badStatusResp = await handleStateToolCall({
|
|
454
|
-
params: {
|
|
455
|
-
name: 'team_write_task_approval',
|
|
456
|
-
arguments: {
|
|
457
|
-
team_name: 'approval-guard-team',
|
|
458
|
-
task_id: '1',
|
|
459
|
-
status: 'accepted',
|
|
460
|
-
reviewer: 'reviewer-1',
|
|
461
|
-
decision_reason: 'bad status test',
|
|
462
|
-
workingDirectory: wd,
|
|
463
|
-
},
|
|
464
|
-
},
|
|
465
|
-
});
|
|
466
|
-
assert.equal(badStatusResp.isError, true);
|
|
467
|
-
const badStatusJson = JSON.parse(badStatusResp.content[0]?.text || '{}');
|
|
468
|
-
assert.match(badStatusJson.error ?? '', /status must be one of/i);
|
|
469
|
-
const badRequiredResp = await handleStateToolCall({
|
|
470
|
-
params: {
|
|
471
|
-
name: 'team_write_task_approval',
|
|
472
|
-
arguments: {
|
|
473
|
-
team_name: 'approval-guard-team',
|
|
474
|
-
task_id: '1',
|
|
475
|
-
status: 'approved',
|
|
476
|
-
reviewer: 'reviewer-1',
|
|
477
|
-
decision_reason: 'bad required type test',
|
|
478
|
-
required: 'true',
|
|
479
|
-
workingDirectory: wd,
|
|
480
|
-
},
|
|
481
|
-
},
|
|
482
|
-
});
|
|
483
|
-
assert.equal(badRequiredResp.isError, true);
|
|
484
|
-
const badRequiredJson = JSON.parse(badRequiredResp.content[0]?.text || '{}');
|
|
485
|
-
assert.match(badRequiredJson.error ?? '', /required must be a boolean/i);
|
|
486
|
-
}
|
|
487
|
-
finally {
|
|
488
|
-
await rm(wd, { recursive: true, force: true });
|
|
489
|
-
}
|
|
3
|
+
describe('state-server team_* MCP deprecation', () => {
|
|
4
|
+
it('does not expose team_* tools from ListTools output', async () => {
|
|
5
|
+
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
6
|
+
const { buildStateServerTools } = await import('../state-server.js');
|
|
7
|
+
const tools = buildStateServerTools();
|
|
8
|
+
const teamTools = tools.filter((tool) => tool.name.startsWith('team_'));
|
|
9
|
+
assert.equal(teamTools.length, 0);
|
|
10
|
+
const stateTools = tools.filter((tool) => tool.name.startsWith('state_'));
|
|
11
|
+
assert.ok(stateTools.length > 0);
|
|
12
|
+
});
|
|
13
|
+
it('returns hard-deprecation error + CLI hint when team_* tool is called', async () => {
|
|
14
|
+
process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
|
|
15
|
+
const { handleStateToolCall } = await import('../state-server.js');
|
|
16
|
+
const resp = await handleStateToolCall({
|
|
17
|
+
params: {
|
|
18
|
+
name: 'team_send_message',
|
|
19
|
+
arguments: {
|
|
20
|
+
team_name: 'alpha-team',
|
|
21
|
+
from_worker: 'worker-1',
|
|
22
|
+
to_worker: 'leader-fixed',
|
|
23
|
+
body: 'ack',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
assert.equal(resp.isError, true);
|
|
28
|
+
const body = JSON.parse(resp.content[0]?.text ?? '{}');
|
|
29
|
+
assert.equal(body.code, 'deprecated_cli_only');
|
|
30
|
+
assert.match(body.error ?? '', /hard-deprecated/i);
|
|
31
|
+
assert.match(body.hint ?? '', /omx team api send-message/);
|
|
32
|
+
assert.match(body.hint ?? '', /--json/);
|
|
490
33
|
});
|
|
491
34
|
});
|
|
492
35
|
//# sourceMappingURL=state-server-team-tools.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-server-team-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/__tests__/state-server-team-tools.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state-server-team-tools.test.js","sourceRoot":"","sources":["../../../src/mcp/__tests__/state-server-team-tools.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,GAAG,CAAC;QACtD,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAErE,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,GAAG,CAAC;QACtD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAEnE,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;YACrC,MAAM,EAAE;gBACN,IAAI,EAAE,mBAAmB;gBACzB,SAAS,EAAE;oBACT,SAAS,EAAE,YAAY;oBACvB,WAAW,EAAE,UAAU;oBACvB,SAAS,EAAE,cAAc;oBACzB,IAAI,EAAE,KAAK;iBACZ;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAqD,CAAC;QAC3G,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,2BAA2B,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|