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.
Files changed (169) hide show
  1. package/README.de.md +7 -2
  2. package/README.es.md +7 -2
  3. package/README.fr.md +7 -2
  4. package/README.it.md +7 -2
  5. package/README.ja.md +7 -2
  6. package/README.ko.md +7 -2
  7. package/README.md +61 -11
  8. package/README.pt.md +7 -2
  9. package/README.ru.md +7 -2
  10. package/README.tr.md +7 -2
  11. package/README.vi.md +7 -2
  12. package/README.zh-TW.md +366 -0
  13. package/README.zh.md +7 -2
  14. package/dist/cli/__tests__/index.test.js +70 -4
  15. package/dist/cli/__tests__/index.test.js.map +1 -1
  16. package/dist/cli/__tests__/setup-skills-overwrite.test.js +100 -1
  17. package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
  18. package/dist/cli/__tests__/team.test.js +219 -1
  19. package/dist/cli/__tests__/team.test.js.map +1 -1
  20. package/dist/cli/catalog-contract.d.ts.map +1 -1
  21. package/dist/cli/catalog-contract.js +8 -2
  22. package/dist/cli/catalog-contract.js.map +1 -1
  23. package/dist/cli/index.d.ts +7 -1
  24. package/dist/cli/index.d.ts.map +1 -1
  25. package/dist/cli/index.js +58 -12
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/setup.d.ts.map +1 -1
  28. package/dist/cli/setup.js +50 -17
  29. package/dist/cli/setup.js.map +1 -1
  30. package/dist/cli/team.d.ts.map +1 -1
  31. package/dist/cli/team.js +257 -0
  32. package/dist/cli/team.js.map +1 -1
  33. package/dist/config/__tests__/models.test.js +11 -11
  34. package/dist/config/__tests__/models.test.js.map +1 -1
  35. package/dist/config/models.d.ts +4 -3
  36. package/dist/config/models.d.ts.map +1 -1
  37. package/dist/config/models.js +6 -5
  38. package/dist/config/models.js.map +1 -1
  39. package/dist/hooks/__tests__/keyword-detector.test.js +46 -3
  40. package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
  41. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js +23 -7
  42. package/dist/hooks/__tests__/notify-hook-all-workers-idle.test.js.map +1 -1
  43. package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js +176 -1
  44. package/dist/hooks/__tests__/notify-hook-team-dispatch.test.js.map +1 -1
  45. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js +61 -1
  46. package/dist/hooks/__tests__/notify-hook-team-leader-nudge.test.js.map +1 -1
  47. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +17 -7
  48. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -1
  49. package/dist/hooks/__tests__/openclaw-setup-contract.test.js +26 -16
  50. package/dist/hooks/__tests__/openclaw-setup-contract.test.js.map +1 -1
  51. package/dist/hooks/keyword-detector.d.ts +2 -1
  52. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  53. package/dist/hooks/keyword-detector.js +41 -4
  54. package/dist/hooks/keyword-detector.js.map +1 -1
  55. package/dist/hooks/keyword-registry.d.ts.map +1 -1
  56. package/dist/hooks/keyword-registry.js +5 -0
  57. package/dist/hooks/keyword-registry.js.map +1 -1
  58. package/dist/mcp/__tests__/path-traversal.test.js +9 -227
  59. package/dist/mcp/__tests__/path-traversal.test.js.map +1 -1
  60. package/dist/mcp/__tests__/state-server-schema.test.js +16 -20
  61. package/dist/mcp/__tests__/state-server-schema.test.js.map +1 -1
  62. package/dist/mcp/__tests__/state-server-team-tools.test.js +30 -487
  63. package/dist/mcp/__tests__/state-server-team-tools.test.js.map +1 -1
  64. package/dist/mcp/state-server.d.ts +179 -0
  65. package/dist/mcp/state-server.d.ts.map +1 -1
  66. package/dist/mcp/state-server.js +217 -1111
  67. package/dist/mcp/state-server.js.map +1 -1
  68. package/dist/mcp/team-server.d.ts.map +1 -1
  69. package/dist/mcp/team-server.js +28 -7
  70. package/dist/mcp/team-server.js.map +1 -1
  71. package/dist/notifications/__tests__/dispatch-cooldown.test.d.ts +5 -0
  72. package/dist/notifications/__tests__/dispatch-cooldown.test.d.ts.map +1 -0
  73. package/dist/notifications/__tests__/dispatch-cooldown.test.js +100 -0
  74. package/dist/notifications/__tests__/dispatch-cooldown.test.js.map +1 -0
  75. package/dist/notifications/__tests__/temp-mode.test.d.ts +2 -0
  76. package/dist/notifications/__tests__/temp-mode.test.d.ts.map +1 -0
  77. package/dist/notifications/__tests__/temp-mode.test.js +172 -0
  78. package/dist/notifications/__tests__/temp-mode.test.js.map +1 -0
  79. package/dist/notifications/config.d.ts.map +1 -1
  80. package/dist/notifications/config.js +59 -6
  81. package/dist/notifications/config.js.map +1 -1
  82. package/dist/notifications/dispatch-cooldown.d.ts +36 -0
  83. package/dist/notifications/dispatch-cooldown.d.ts.map +1 -0
  84. package/dist/notifications/dispatch-cooldown.js +109 -0
  85. package/dist/notifications/dispatch-cooldown.js.map +1 -0
  86. package/dist/notifications/index.d.ts +5 -0
  87. package/dist/notifications/index.d.ts.map +1 -1
  88. package/dist/notifications/index.js +39 -8
  89. package/dist/notifications/index.js.map +1 -1
  90. package/dist/notifications/temp-contract.d.ts +22 -0
  91. package/dist/notifications/temp-contract.d.ts.map +1 -0
  92. package/dist/notifications/temp-contract.js +147 -0
  93. package/dist/notifications/temp-contract.js.map +1 -0
  94. package/dist/notifications/types.d.ts +18 -0
  95. package/dist/notifications/types.d.ts.map +1 -1
  96. package/dist/openclaw/__tests__/config.test.js +81 -0
  97. package/dist/openclaw/__tests__/config.test.js.map +1 -1
  98. package/dist/openclaw/__tests__/dispatcher.test.js +50 -7
  99. package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
  100. package/dist/openclaw/config.d.ts +4 -0
  101. package/dist/openclaw/config.d.ts.map +1 -1
  102. package/dist/openclaw/config.js +110 -16
  103. package/dist/openclaw/config.js.map +1 -1
  104. package/dist/openclaw/dispatcher.d.ts +10 -4
  105. package/dist/openclaw/dispatcher.d.ts.map +1 -1
  106. package/dist/openclaw/dispatcher.js +40 -10
  107. package/dist/openclaw/dispatcher.js.map +1 -1
  108. package/dist/openclaw/types.d.ts +5 -1
  109. package/dist/openclaw/types.d.ts.map +1 -1
  110. package/dist/team/__tests__/api-interop.test.d.ts +2 -0
  111. package/dist/team/__tests__/api-interop.test.d.ts.map +1 -0
  112. package/dist/team/__tests__/api-interop.test.js +1052 -0
  113. package/dist/team/__tests__/api-interop.test.js.map +1 -0
  114. package/dist/team/__tests__/mcp-comm.test.js +30 -0
  115. package/dist/team/__tests__/mcp-comm.test.js.map +1 -1
  116. package/dist/team/__tests__/runtime-cli.test.js +6 -0
  117. package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
  118. package/dist/team/__tests__/runtime.test.js +52 -22
  119. package/dist/team/__tests__/runtime.test.js.map +1 -1
  120. package/dist/team/__tests__/tmux-claude-workers-demo.test.d.ts +2 -0
  121. package/dist/team/__tests__/tmux-claude-workers-demo.test.d.ts.map +1 -0
  122. package/dist/team/__tests__/tmux-claude-workers-demo.test.js +190 -0
  123. package/dist/team/__tests__/tmux-claude-workers-demo.test.js.map +1 -0
  124. package/dist/team/__tests__/tmux-session.test.js +45 -2
  125. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  126. package/dist/team/__tests__/worker-bootstrap.test.js +20 -12
  127. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  128. package/dist/team/api-interop.d.ts +19 -0
  129. package/dist/team/api-interop.d.ts.map +1 -0
  130. package/dist/team/api-interop.js +578 -0
  131. package/dist/team/api-interop.js.map +1 -0
  132. package/dist/team/mcp-comm.d.ts.map +1 -1
  133. package/dist/team/mcp-comm.js +26 -0
  134. package/dist/team/mcp-comm.js.map +1 -1
  135. package/dist/team/runtime-cli.d.ts +3 -0
  136. package/dist/team/runtime-cli.d.ts.map +1 -1
  137. package/dist/team/runtime-cli.js +24 -2
  138. package/dist/team/runtime-cli.js.map +1 -1
  139. package/dist/team/runtime.d.ts.map +1 -1
  140. package/dist/team/runtime.js +67 -11
  141. package/dist/team/runtime.js.map +1 -1
  142. package/dist/team/scaling.js.map +1 -1
  143. package/dist/team/state/types.d.ts +1 -1
  144. package/dist/team/state/types.d.ts.map +1 -1
  145. package/dist/team/state.d.ts +1 -1
  146. package/dist/team/state.d.ts.map +1 -1
  147. package/dist/team/tmux-session.d.ts +1 -1
  148. package/dist/team/tmux-session.d.ts.map +1 -1
  149. package/dist/team/tmux-session.js +17 -5
  150. package/dist/team/tmux-session.js.map +1 -1
  151. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  152. package/dist/team/worker-bootstrap.js +48 -19
  153. package/dist/team/worker-bootstrap.js.map +1 -1
  154. package/package.json +1 -1
  155. package/scripts/demo-claude-workers.sh +241 -0
  156. package/scripts/demo-team-e2e.sh +179 -0
  157. package/scripts/notify-hook/team-dispatch.js +186 -12
  158. package/scripts/notify-hook/team-leader-nudge.js +42 -2
  159. package/scripts/notify-hook/team-worker.js +63 -4
  160. package/skills/configure-notifications/SKILL.md +193 -185
  161. package/skills/omx-setup/SKILL.md +1 -1
  162. package/skills/team/SKILL.md +47 -5
  163. package/skills/worker/SKILL.md +40 -10
  164. package/templates/AGENTS.md +7 -3
  165. package/templates/catalog-manifest.json +26 -3
  166. package/skills/configure-discord/SKILL.md +0 -256
  167. package/skills/configure-openclaw/SKILL.md +0 -264
  168. package/skills/configure-slack/SKILL.md +0 -226
  169. 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
- import { mkdir, mkdtemp, readFile, rm } from 'fs/promises';
4
- import { join } from 'path';
5
- import { tmpdir } from 'os';
6
- import { initTeamState } from '../../team/state.js';
7
- describe('state-server team comm tools', () => {
8
- it('team_send_message + team_mailbox_list + team_mailbox_mark_delivered', async () => {
9
- process.env.OMX_STATE_SERVER_DISABLE_AUTO_START = '1';
10
- const { handleStateToolCall } = await import('../state-server.js');
11
- const wd = await mkdtemp(join(tmpdir(), 'omx-state-team-tools-'));
12
- try {
13
- await initTeamState('alpha-team', 'msg test', 'executor', 2, wd);
14
- const sendResp = await handleStateToolCall({
15
- params: {
16
- name: 'team_send_message',
17
- arguments: {
18
- team_name: 'alpha-team',
19
- from_worker: 'worker-1',
20
- to_worker: 'leader-fixed',
21
- body: 'ack from worker-1',
22
- workingDirectory: wd,
23
- },
24
- },
25
- });
26
- const sendJson = JSON.parse(sendResp.content[0]?.text || '{}');
27
- assert.equal(sendJson.ok, true);
28
- assert.equal(typeof sendJson.message?.message_id, 'string');
29
- const listResp = await handleStateToolCall({
30
- params: {
31
- name: 'team_mailbox_list',
32
- arguments: {
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"}