@hivemindai/mcp-server 0.5.1 → 0.6.1

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 (83) hide show
  1. package/dist/__tests__/config.test.js +1 -1
  2. package/dist/__tests__/config.test.js.map +1 -1
  3. package/dist/__tests__/credentials.test.js +5 -5
  4. package/dist/__tests__/credentials.test.js.map +1 -1
  5. package/dist/__tests__/helpers/mock-server.d.ts +79 -0
  6. package/dist/__tests__/helpers/mock-server.d.ts.map +1 -0
  7. package/dist/__tests__/helpers/mock-server.js +107 -0
  8. package/dist/__tests__/helpers/mock-server.js.map +1 -0
  9. package/dist/__tests__/remember.test.d.ts +2 -0
  10. package/dist/__tests__/remember.test.d.ts.map +1 -0
  11. package/dist/__tests__/remember.test.js +152 -0
  12. package/dist/__tests__/remember.test.js.map +1 -0
  13. package/dist/__tests__/tools-approvals.test.d.ts +2 -0
  14. package/dist/__tests__/tools-approvals.test.d.ts.map +1 -0
  15. package/dist/__tests__/tools-approvals.test.js +219 -0
  16. package/dist/__tests__/tools-approvals.test.js.map +1 -0
  17. package/dist/__tests__/tools-context.test.d.ts +2 -0
  18. package/dist/__tests__/tools-context.test.d.ts.map +1 -0
  19. package/dist/__tests__/tools-context.test.js +107 -0
  20. package/dist/__tests__/tools-context.test.js.map +1 -0
  21. package/dist/__tests__/tools-handoffs.test.d.ts +2 -0
  22. package/dist/__tests__/tools-handoffs.test.d.ts.map +1 -0
  23. package/dist/__tests__/tools-handoffs.test.js +153 -0
  24. package/dist/__tests__/tools-handoffs.test.js.map +1 -0
  25. package/dist/__tests__/tools-knowledge.test.d.ts +2 -0
  26. package/dist/__tests__/tools-knowledge.test.d.ts.map +1 -0
  27. package/dist/__tests__/tools-knowledge.test.js +169 -0
  28. package/dist/__tests__/tools-knowledge.test.js.map +1 -0
  29. package/dist/__tests__/tools-plans.test.d.ts +2 -0
  30. package/dist/__tests__/tools-plans.test.d.ts.map +1 -0
  31. package/dist/__tests__/tools-plans.test.js +307 -0
  32. package/dist/__tests__/tools-plans.test.js.map +1 -0
  33. package/dist/__tests__/tools-schedules.test.d.ts +2 -0
  34. package/dist/__tests__/tools-schedules.test.d.ts.map +1 -0
  35. package/dist/__tests__/tools-schedules.test.js +153 -0
  36. package/dist/__tests__/tools-schedules.test.js.map +1 -0
  37. package/dist/__tests__/tools-skills.test.d.ts +2 -0
  38. package/dist/__tests__/tools-skills.test.d.ts.map +1 -0
  39. package/dist/__tests__/tools-skills.test.js +187 -0
  40. package/dist/__tests__/tools-skills.test.js.map +1 -0
  41. package/dist/__tests__/tools-tasks.test.d.ts +2 -0
  42. package/dist/__tests__/tools-tasks.test.d.ts.map +1 -0
  43. package/dist/__tests__/tools-tasks.test.js +83 -0
  44. package/dist/__tests__/tools-tasks.test.js.map +1 -0
  45. package/dist/__tests__/tools-triggers.test.d.ts +2 -0
  46. package/dist/__tests__/tools-triggers.test.d.ts.map +1 -0
  47. package/dist/__tests__/tools-triggers.test.js +119 -0
  48. package/dist/__tests__/tools-triggers.test.js.map +1 -0
  49. package/dist/__tests__/tools-workflows.test.d.ts +2 -0
  50. package/dist/__tests__/tools-workflows.test.d.ts.map +1 -0
  51. package/dist/__tests__/tools-workflows.test.js +203 -0
  52. package/dist/__tests__/tools-workflows.test.js.map +1 -0
  53. package/dist/__tests__/tools.test.js +2 -2
  54. package/dist/__tests__/tools.test.js.map +1 -1
  55. package/dist/cli/commands/git-hook.d 2.ts +2 -0
  56. package/dist/cli/commands/login.d 2.ts +2 -0
  57. package/dist/cli/commands/login.d.ts 2.map +1 -0
  58. package/dist/cli/commands/login.js +1 -1
  59. package/dist/cli/commands/login.js.map +1 -1
  60. package/dist/cli/commands/logout.js 2.map +1 -0
  61. package/dist/cli/commands/release.d 2.ts +2 -0
  62. package/dist/cli/commands/skill-inject.d.ts.map +1 -1
  63. package/dist/cli/commands/skill-inject.js +23 -4
  64. package/dist/cli/commands/skill-inject.js.map +1 -1
  65. package/dist/cli/credentials.js +1 -1
  66. package/dist/cli/credentials.js.map +1 -1
  67. package/dist/cli/index 2.d.ts +2 -0
  68. package/dist/cli/index 2.d.ts.map +1 -0
  69. package/dist/cli/index 2.js +63 -0
  70. package/dist/cli/index 2.js.map +1 -0
  71. package/dist/config.js +1 -1
  72. package/dist/config.js.map +1 -1
  73. package/dist/index.js +2 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/tools/knowledge.d.ts.map +1 -1
  76. package/dist/tools/knowledge.js +26 -3
  77. package/dist/tools/knowledge.js 2.map +1 -0
  78. package/dist/tools/knowledge.js.map +1 -1
  79. package/dist/tools/plans.d.ts +5 -0
  80. package/dist/tools/plans.d.ts.map +1 -0
  81. package/dist/tools/plans.js +359 -0
  82. package/dist/tools/plans.js.map +1 -0
  83. package/package.json +11 -11
@@ -0,0 +1,169 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { mockConfig, createMockServer, createMockClient } from "./helpers/mock-server.js";
3
+ import { registerKnowledgeTool } from "../tools/knowledge.js";
4
+ let server;
5
+ let client;
6
+ beforeEach(() => {
7
+ vi.clearAllMocks();
8
+ server = createMockServer();
9
+ client = createMockClient();
10
+ });
11
+ describe("registerKnowledgeTool", () => {
12
+ it("returns cloud-only message when no client", async () => {
13
+ registerKnowledgeTool(server, mockConfig, undefined);
14
+ const handler = server.getHandler("hivemind_knowledge");
15
+ const result = await handler({ action: "search", query: "test" });
16
+ expect(result.content[0].text).toContain("only available in cloud mode");
17
+ });
18
+ // --- search ---
19
+ it("search: calls client.searchKnowledge", async () => {
20
+ client.searchKnowledge.mockResolvedValueOnce({
21
+ docs: [
22
+ {
23
+ id: "d1",
24
+ title: "Auth",
25
+ content: "JWT",
26
+ tags: ["auth"],
27
+ score: 0.9,
28
+ created_at: "2024-01-01T00:00:00Z",
29
+ updated_at: "2024-01-01T00:00:00Z",
30
+ },
31
+ ],
32
+ total: 1,
33
+ });
34
+ registerKnowledgeTool(server, mockConfig, client);
35
+ const handler = server.getHandler("hivemind_knowledge");
36
+ const result = await handler({ action: "search", query: "auth" });
37
+ expect(result.content[0].text).toContain("Knowledge Search Results");
38
+ expect(result.content[0].text).toContain("Auth");
39
+ });
40
+ it("search: empty results", async () => {
41
+ client.searchKnowledge.mockResolvedValueOnce({ docs: [], total: 0 });
42
+ registerKnowledgeTool(server, mockConfig, client);
43
+ const handler = server.getHandler("hivemind_knowledge");
44
+ const result = await handler({ action: "search", query: "nonexistent" });
45
+ expect(result.content[0].text).toContain("No matching documents");
46
+ });
47
+ // --- get ---
48
+ it("get: calls client.getKnowledgeDoc", async () => {
49
+ client.getKnowledgeDoc.mockResolvedValueOnce({
50
+ doc: {
51
+ id: "d1",
52
+ title: "Auth",
53
+ content: "JWT tokens",
54
+ tags: ["auth"],
55
+ created_at: "2024-01-01T00:00:00Z",
56
+ updated_at: "2024-01-01T00:00:00Z",
57
+ },
58
+ });
59
+ registerKnowledgeTool(server, mockConfig, client);
60
+ const handler = server.getHandler("hivemind_knowledge");
61
+ const result = await handler({ action: "get", doc_id: "d1" });
62
+ expect(result.content[0].text).toContain("Auth");
63
+ expect(result.content[0].text).toContain("JWT tokens");
64
+ });
65
+ it("get: not found", async () => {
66
+ client.getKnowledgeDoc.mockRejectedValueOnce(new Error("Not found"));
67
+ registerKnowledgeTool(server, mockConfig, client);
68
+ const handler = server.getHandler("hivemind_knowledge");
69
+ const result = await handler({ action: "get", doc_id: "d_missing" });
70
+ expect(result.content[0].text).toContain("not found");
71
+ });
72
+ // --- add ---
73
+ it("add: calls client.addKnowledgeDoc", async () => {
74
+ client.addKnowledgeDoc.mockResolvedValueOnce({
75
+ id: "d_new",
76
+ created_at: "2024-01-01T00:00:00Z",
77
+ });
78
+ registerKnowledgeTool(server, mockConfig, client);
79
+ const handler = server.getHandler("hivemind_knowledge");
80
+ const result = await handler({ action: "add", title: "DB Guide", content: "Use Prisma" });
81
+ expect(result.content[0].text).toContain("Document created");
82
+ expect(result.content[0].text).toContain("d_new");
83
+ });
84
+ // --- update ---
85
+ it("update: calls client.updateKnowledgeDoc", async () => {
86
+ client.updateKnowledgeDoc.mockResolvedValueOnce({ id: "d1", updated: true });
87
+ registerKnowledgeTool(server, mockConfig, client);
88
+ const handler = server.getHandler("hivemind_knowledge");
89
+ const result = await handler({ action: "update", doc_id: "d1", content: "Updated" });
90
+ expect(result.content[0].text).toContain("updated");
91
+ });
92
+ it("update: not found", async () => {
93
+ client.updateKnowledgeDoc.mockResolvedValueOnce({ updated: false });
94
+ registerKnowledgeTool(server, mockConfig, client);
95
+ const handler = server.getHandler("hivemind_knowledge");
96
+ const result = await handler({ action: "update", doc_id: "d_missing", content: "Updated" });
97
+ expect(result.content[0].text).toContain("not found");
98
+ });
99
+ // --- delete ---
100
+ it("delete: calls client.deleteKnowledgeDoc", async () => {
101
+ client.deleteKnowledgeDoc.mockResolvedValueOnce({ deleted: true });
102
+ registerKnowledgeTool(server, mockConfig, client);
103
+ const handler = server.getHandler("hivemind_knowledge");
104
+ const result = await handler({ action: "delete", doc_id: "d1" });
105
+ expect(result.content[0].text).toContain("deleted");
106
+ });
107
+ it("delete: not found", async () => {
108
+ client.deleteKnowledgeDoc.mockResolvedValueOnce({ deleted: false });
109
+ registerKnowledgeTool(server, mockConfig, client);
110
+ const handler = server.getHandler("hivemind_knowledge");
111
+ const result = await handler({ action: "delete", doc_id: "d_missing" });
112
+ expect(result.content[0].text).toContain("not found");
113
+ });
114
+ // --- list ---
115
+ it("list: calls client.listKnowledgeDocs", async () => {
116
+ client.listKnowledgeDocs.mockResolvedValueOnce({
117
+ docs: [
118
+ {
119
+ id: "d1",
120
+ title: "Auth",
121
+ content: "JWT",
122
+ tags: [],
123
+ created_at: "2024-01-01T00:00:00Z",
124
+ updated_at: "2024-01-01T00:00:00Z",
125
+ },
126
+ ],
127
+ total: 1,
128
+ has_more: false,
129
+ });
130
+ registerKnowledgeTool(server, mockConfig, client);
131
+ const handler = server.getHandler("hivemind_knowledge");
132
+ const result = await handler({ action: "list" });
133
+ expect(result.content[0].text).toContain("Knowledge Base");
134
+ });
135
+ it("list: empty", async () => {
136
+ client.listKnowledgeDocs.mockResolvedValueOnce({ docs: [], total: 0, has_more: false });
137
+ registerKnowledgeTool(server, mockConfig, client);
138
+ const handler = server.getHandler("hivemind_knowledge");
139
+ const result = await handler({ action: "list" });
140
+ expect(result.content[0].text).toContain("No knowledge documents");
141
+ });
142
+ // --- list-stale ---
143
+ it("list-stale: calls client.listStaleKnowledge", async () => {
144
+ client.listStaleKnowledge.mockResolvedValueOnce({
145
+ docs: [
146
+ {
147
+ id: "d1",
148
+ title: "Old Doc",
149
+ stale_reason: "age",
150
+ updated_at: "2024-01-01T00:00:00Z",
151
+ age_days: 45,
152
+ },
153
+ ],
154
+ total: 1,
155
+ });
156
+ registerKnowledgeTool(server, mockConfig, client);
157
+ const handler = server.getHandler("hivemind_knowledge");
158
+ const result = await handler({ action: "list-stale" });
159
+ expect(result.content[0].text).toContain("Stale");
160
+ });
161
+ it("list-stale: none stale", async () => {
162
+ client.listStaleKnowledge.mockResolvedValueOnce({ docs: [], total: 0 });
163
+ registerKnowledgeTool(server, mockConfig, client);
164
+ const handler = server.getHandler("hivemind_knowledge");
165
+ const result = await handler({ action: "list-stale" });
166
+ expect(result.content[0].text).toContain("No stale");
167
+ });
168
+ });
169
+ //# sourceMappingURL=tools-knowledge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-knowledge.test.js","sourceRoot":"","sources":["../../src/__tests__/tools-knowledge.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tools-plans.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-plans.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tools-plans.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,307 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { mockConfig, createMockServer, createMockClient, } from "./helpers/mock-server.js";
3
+ import { registerPlanTool } from "../tools/plans.js";
4
+ let server;
5
+ let client;
6
+ beforeEach(() => {
7
+ vi.clearAllMocks();
8
+ server = createMockServer();
9
+ client = createMockClient();
10
+ });
11
+ describe("registerPlanTool", () => {
12
+ it("returns cloud-only message when no client", async () => {
13
+ registerPlanTool(server, mockConfig, undefined);
14
+ const handler = server.getHandler("hivemind_plan");
15
+ const result = await handler({ action: "list" });
16
+ expect(result.content[0].text).toContain("only available in cloud mode");
17
+ });
18
+ // --- create ---
19
+ it("create: calls client.createPlan", async () => {
20
+ client.createPlan.mockResolvedValueOnce({ planId: "plan_ABC123" });
21
+ registerPlanTool(server, mockConfig, client);
22
+ const handler = server.getHandler("hivemind_plan");
23
+ const result = await handler({
24
+ action: "create",
25
+ name: "v2-migration",
26
+ goal: "Migrate to v2 API",
27
+ phases: [
28
+ {
29
+ name: "Plan",
30
+ steps: [{ description: "Analyze endpoints" }],
31
+ },
32
+ ],
33
+ });
34
+ expect(result.content[0].text).toContain("Plan created");
35
+ expect(result.content[0].text).toContain("plan_ABC123");
36
+ });
37
+ it("create: error when missing fields", async () => {
38
+ registerPlanTool(server, mockConfig, client);
39
+ const handler = server.getHandler("hivemind_plan");
40
+ const result = await handler({ action: "create", name: "test" });
41
+ expect(result.content[0].text).toContain("required");
42
+ });
43
+ // --- list ---
44
+ it("list: returns plans", async () => {
45
+ client.listPlans.mockResolvedValueOnce({
46
+ plans: [
47
+ {
48
+ id: "plan_1",
49
+ name: "migration",
50
+ goal: "Migrate DB",
51
+ status: "executing",
52
+ current_phase: 1,
53
+ phase_count: 3,
54
+ created_at: "2024-01-01T00:00:00Z",
55
+ updated_at: "2024-01-01T00:00:00Z",
56
+ },
57
+ ],
58
+ total: 1,
59
+ });
60
+ registerPlanTool(server, mockConfig, client);
61
+ const handler = server.getHandler("hivemind_plan");
62
+ const result = await handler({ action: "list" });
63
+ expect(result.content[0].text).toContain("Plans");
64
+ expect(result.content[0].text).toContain("migration");
65
+ });
66
+ it("list: empty", async () => {
67
+ client.listPlans.mockResolvedValueOnce({ plans: [], total: 0 });
68
+ registerPlanTool(server, mockConfig, client);
69
+ const handler = server.getHandler("hivemind_plan");
70
+ const result = await handler({ action: "list" });
71
+ expect(result.content[0].text).toContain("No plans found");
72
+ });
73
+ // --- get ---
74
+ it("get: returns plan details", async () => {
75
+ client.getPlan.mockResolvedValueOnce({
76
+ plan: {
77
+ planId: "plan_1",
78
+ name: "migration",
79
+ goal: "Migrate DB",
80
+ status: "executing",
81
+ current_phase: 0,
82
+ phases: [
83
+ {
84
+ name: "Plan",
85
+ status: "active",
86
+ gate: "auto",
87
+ steps: [
88
+ {
89
+ id: "s1",
90
+ description: "Analyze",
91
+ status: "completed",
92
+ dependencies: [],
93
+ files: [],
94
+ agent: null,
95
+ wave: 0,
96
+ result: null,
97
+ },
98
+ ],
99
+ },
100
+ ],
101
+ decisions: [],
102
+ created_at: "2024-01-01T00:00:00Z",
103
+ updated_at: "2024-01-01T00:00:00Z",
104
+ },
105
+ });
106
+ registerPlanTool(server, mockConfig, client);
107
+ const handler = server.getHandler("hivemind_plan");
108
+ const result = await handler({ action: "get", plan_id: "plan_1" });
109
+ expect(result.content[0].text).toContain("migration");
110
+ expect(result.content[0].text).toContain("Migrate DB");
111
+ });
112
+ it("get: error when missing plan_id", async () => {
113
+ registerPlanTool(server, mockConfig, client);
114
+ const handler = server.getHandler("hivemind_plan");
115
+ const result = await handler({ action: "get" });
116
+ expect(result.content[0].text).toContain("required");
117
+ });
118
+ // --- status ---
119
+ it("status: returns progress", async () => {
120
+ client.getPlanStatus.mockResolvedValueOnce({
121
+ planId: "plan_1",
122
+ name: "migration",
123
+ status: "executing",
124
+ current_phase: 0,
125
+ overall: { total: 4, completed: 2, completion_pct: 50 },
126
+ phases: [
127
+ {
128
+ name: "Execute",
129
+ status: "active",
130
+ gate: "auto",
131
+ total: 4,
132
+ completed: 2,
133
+ failed: 0,
134
+ active: 1,
135
+ completion_pct: 50,
136
+ },
137
+ ],
138
+ decisions: [],
139
+ });
140
+ registerPlanTool(server, mockConfig, client);
141
+ const handler = server.getHandler("hivemind_plan");
142
+ const result = await handler({ action: "status", plan_id: "plan_1" });
143
+ expect(result.content[0].text).toContain("50%");
144
+ expect(result.content[0].text).toContain("Progress");
145
+ });
146
+ // --- advance ---
147
+ it("advance: calls client.advancePlan", async () => {
148
+ client.advancePlan.mockResolvedValueOnce({
149
+ advanced: true,
150
+ phase: "Execute",
151
+ });
152
+ registerPlanTool(server, mockConfig, client);
153
+ const handler = server.getHandler("hivemind_plan");
154
+ const result = await handler({ action: "advance", plan_id: "plan_1" });
155
+ expect(result.content[0].text).toContain("advanced");
156
+ expect(result.content[0].text).toContain("Execute");
157
+ });
158
+ it("advance: plan completed", async () => {
159
+ client.advancePlan.mockResolvedValueOnce({
160
+ advanced: true,
161
+ phase: null,
162
+ });
163
+ registerPlanTool(server, mockConfig, client);
164
+ const handler = server.getHandler("hivemind_plan");
165
+ const result = await handler({ action: "advance", plan_id: "plan_1" });
166
+ expect(result.content[0].text).toContain("completed");
167
+ });
168
+ it("advance: error", async () => {
169
+ client.advancePlan.mockResolvedValueOnce({
170
+ advanced: false,
171
+ error: "Plan not found",
172
+ });
173
+ registerPlanTool(server, mockConfig, client);
174
+ const handler = server.getHandler("hivemind_plan");
175
+ const result = await handler({ action: "advance", plan_id: "plan_x" });
176
+ expect(result.content[0].text).toContain("Could not advance");
177
+ });
178
+ // --- update-step ---
179
+ it("update-step: marks step completed", async () => {
180
+ client.updatePlanStep.mockResolvedValueOnce({ updated: true });
181
+ registerPlanTool(server, mockConfig, client);
182
+ const handler = server.getHandler("hivemind_plan");
183
+ const result = await handler({
184
+ action: "update-step",
185
+ plan_id: "plan_1",
186
+ step_id: "s1",
187
+ step_status: "completed",
188
+ });
189
+ expect(result.content[0].text).toContain("completed");
190
+ });
191
+ it("update-step: step not found", async () => {
192
+ client.updatePlanStep.mockResolvedValueOnce({ updated: false });
193
+ registerPlanTool(server, mockConfig, client);
194
+ const handler = server.getHandler("hivemind_plan");
195
+ const result = await handler({
196
+ action: "update-step",
197
+ plan_id: "plan_1",
198
+ step_id: "s_missing",
199
+ step_status: "completed",
200
+ });
201
+ expect(result.content[0].text).toContain("not found");
202
+ });
203
+ it("update-step: error when missing fields", async () => {
204
+ registerPlanTool(server, mockConfig, client);
205
+ const handler = server.getHandler("hivemind_plan");
206
+ const result = await handler({
207
+ action: "update-step",
208
+ plan_id: "plan_1",
209
+ });
210
+ expect(result.content[0].text).toContain("required");
211
+ });
212
+ // --- waves ---
213
+ it("waves: returns wave-ordered steps", async () => {
214
+ client.getPlanWaves.mockResolvedValueOnce({
215
+ planId: "plan_1",
216
+ phase: "Execute",
217
+ waves: [
218
+ {
219
+ wave: 0,
220
+ steps: [
221
+ {
222
+ id: "s1",
223
+ description: "Setup DB",
224
+ status: "pending",
225
+ dependencies: [],
226
+ files: [],
227
+ agent: null,
228
+ wave: 0,
229
+ result: null,
230
+ },
231
+ ],
232
+ },
233
+ {
234
+ wave: 1,
235
+ steps: [
236
+ {
237
+ id: "s2",
238
+ description: "Build API",
239
+ status: "pending",
240
+ dependencies: ["s1"],
241
+ files: [],
242
+ agent: null,
243
+ wave: 1,
244
+ result: null,
245
+ },
246
+ ],
247
+ },
248
+ ],
249
+ });
250
+ registerPlanTool(server, mockConfig, client);
251
+ const handler = server.getHandler("hivemind_plan");
252
+ const result = await handler({ action: "waves", plan_id: "plan_1" });
253
+ expect(result.content[0].text).toContain("Wave 0");
254
+ expect(result.content[0].text).toContain("Wave 1");
255
+ expect(result.content[0].text).toContain("parallel");
256
+ });
257
+ // --- decide ---
258
+ it("decide: records decision", async () => {
259
+ client.recordPlanDecision.mockResolvedValueOnce({ recorded: true });
260
+ registerPlanTool(server, mockConfig, client);
261
+ const handler = server.getHandler("hivemind_plan");
262
+ const result = await handler({
263
+ action: "decide",
264
+ plan_id: "plan_1",
265
+ question: "Which ORM?",
266
+ answer: "Drizzle — lighter weight",
267
+ });
268
+ expect(result.content[0].text).toContain("Decision recorded");
269
+ expect(result.content[0].text).toContain("Which ORM?");
270
+ });
271
+ it("decide: error when missing fields", async () => {
272
+ registerPlanTool(server, mockConfig, client);
273
+ const handler = server.getHandler("hivemind_plan");
274
+ const result = await handler({
275
+ action: "decide",
276
+ plan_id: "plan_1",
277
+ question: "Which ORM?",
278
+ });
279
+ expect(result.content[0].text).toContain("required");
280
+ });
281
+ // --- delete ---
282
+ it("delete: calls client.deletePlan", async () => {
283
+ client.deletePlan.mockResolvedValueOnce({ deleted: true });
284
+ registerPlanTool(server, mockConfig, client);
285
+ const handler = server.getHandler("hivemind_plan");
286
+ const result = await handler({ action: "delete", plan_id: "plan_1" });
287
+ expect(result.content[0].text).toContain("deleted");
288
+ });
289
+ it("delete: not found", async () => {
290
+ client.deletePlan.mockResolvedValueOnce({ deleted: false });
291
+ registerPlanTool(server, mockConfig, client);
292
+ const handler = server.getHandler("hivemind_plan");
293
+ const result = await handler({
294
+ action: "delete",
295
+ plan_id: "plan_missing",
296
+ });
297
+ expect(result.content[0].text).toContain("not found");
298
+ });
299
+ // --- unknown action ---
300
+ it("unknown action: returns error", async () => {
301
+ registerPlanTool(server, mockConfig, client);
302
+ const handler = server.getHandler("hivemind_plan");
303
+ const result = await handler({ action: "unknown-action" });
304
+ expect(result.content[0].text).toContain("Unknown action");
305
+ });
306
+ });
307
+ //# sourceMappingURL=tools-plans.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-plans.test.js","sourceRoot":"","sources":["../../src/__tests__/tools-plans.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GAGjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,IAAI,MAAkB,CAAC;AACvB,IAAI,MAAkB,CAAC;AAEvB,UAAU,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACnB,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAC5B,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,SAAgB,CAAC,CAAC;QAE9D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,iBAAiB;IAEjB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACnE,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,mBAAmB;YACzB,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;iBAC9C;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,eAAe;IAEf,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC;YACrC,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,QAAQ;oBACZ,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,WAAW;oBACnB,aAAa,EAAE,CAAC;oBAChB,WAAW,EAAE,CAAC;oBACd,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,sBAAsB;iBACnC;aACF;YACD,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,cAAc;IAEd,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;YACnC,IAAI,EAAE;gBACJ,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,WAAW;gBACnB,aAAa,EAAE,CAAC;gBAChB,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,MAAM;wBACZ,MAAM,EAAE,QAAQ;wBAChB,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE;4BACL;gCACE,EAAE,EAAE,IAAI;gCACR,WAAW,EAAE,SAAS;gCACtB,MAAM,EAAE,WAAW;gCACnB,YAAY,EAAE,EAAE;gCAChB,KAAK,EAAE,EAAE;gCACT,KAAK,EAAE,IAAI;gCACX,IAAI,EAAE,CAAC;gCACP,MAAM,EAAE,IAAI;6BACb;yBACF;qBACF;iBACF;gBACD,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,sBAAsB;gBAClC,UAAU,EAAE,sBAAsB;aACnC;SACF,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,iBAAiB;IAEjB,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC;YACzC,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,WAAW;YACnB,aAAa,EAAE,CAAC;YAChB,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;YACvD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,CAAC;oBACR,SAAS,EAAE,CAAC;oBACZ,MAAM,EAAE,CAAC;oBACT,MAAM,EAAE,CAAC;oBACT,cAAc,EAAE,EAAE;iBACnB;aACF;YACD,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,kBAAkB;IAElB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC;YACvC,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC;YACvC,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC;YACvC,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,gBAAgB;SACxB,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,sBAAsB;IAEtB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,gBAAgB;IAEhB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC;YACxC,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,IAAI;4BACR,WAAW,EAAE,UAAU;4BACvB,MAAM,EAAE,SAAS;4BACjB,YAAY,EAAE,EAAE;4BAChB,KAAK,EAAE,EAAE;4BACT,KAAK,EAAE,IAAI;4BACX,IAAI,EAAE,CAAC;4BACP,MAAM,EAAE,IAAI;yBACb;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE;wBACL;4BACE,EAAE,EAAE,IAAI;4BACR,WAAW,EAAE,WAAW;4BACxB,MAAM,EAAE,SAAS;4BACjB,YAAY,EAAE,CAAC,IAAI,CAAC;4BACpB,KAAK,EAAE,EAAE;4BACT,KAAK,EAAE,IAAI;4BACX,IAAI,EAAE,CAAC;4BACP,MAAM,EAAE,IAAI;yBACb;qBACF;iBACF;aACF;SACF,CAAC,CAAC;QACH,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAErE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,iBAAiB;IAEjB,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,0BAA0B;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,iBAAiB;IAEjB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEtE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;YAC3B,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,yBAAyB;IAEzB,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,gBAAgB,CAAC,MAAa,EAAE,UAAU,EAAE,MAAa,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAE,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAuB,EAAE,CAAC,CAAC;QAElE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tools-schedules.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-schedules.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tools-schedules.test.ts"],"names":[],"mappings":""}