smartlisa 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/README.md +77 -0
  2. package/dist/cli.js +6517 -0
  3. package/dist/src/adapters/cli/formatter.d.ts +34 -0
  4. package/dist/src/adapters/cli/formatter.d.ts.map +1 -0
  5. package/dist/src/adapters/cli/formatter.js +254 -0
  6. package/dist/src/adapters/cli/formatter.js.map +1 -0
  7. package/dist/src/adapters/cli/index.d.ts +14 -0
  8. package/dist/src/adapters/cli/index.d.ts.map +1 -0
  9. package/dist/src/adapters/cli/index.js +781 -0
  10. package/dist/src/adapters/cli/index.js.map +1 -0
  11. package/dist/src/adapters/state/__tests__/api.test.d.ts +8 -0
  12. package/dist/src/adapters/state/__tests__/api.test.d.ts.map +1 -0
  13. package/dist/src/adapters/state/__tests__/api.test.js +500 -0
  14. package/dist/src/adapters/state/__tests__/api.test.js.map +1 -0
  15. package/dist/src/adapters/state/__tests__/filesystem.test.d.ts +7 -0
  16. package/dist/src/adapters/state/__tests__/filesystem.test.d.ts.map +1 -0
  17. package/dist/src/adapters/state/__tests__/filesystem.test.js +418 -0
  18. package/dist/src/adapters/state/__tests__/filesystem.test.js.map +1 -0
  19. package/dist/src/adapters/state/api.d.ts +148 -0
  20. package/dist/src/adapters/state/api.d.ts.map +1 -0
  21. package/dist/src/adapters/state/api.js +337 -0
  22. package/dist/src/adapters/state/api.js.map +1 -0
  23. package/dist/src/adapters/state/filesystem.d.ts +80 -0
  24. package/dist/src/adapters/state/filesystem.d.ts.map +1 -0
  25. package/dist/src/adapters/state/filesystem.js +228 -0
  26. package/dist/src/adapters/state/filesystem.js.map +1 -0
  27. package/dist/src/adapters/state/index.d.ts +9 -0
  28. package/dist/src/adapters/state/index.d.ts.map +1 -0
  29. package/dist/src/adapters/state/index.js +10 -0
  30. package/dist/src/adapters/state/index.js.map +1 -0
  31. package/dist/src/adapters/state/types.d.ts +131 -0
  32. package/dist/src/adapters/state/types.d.ts.map +1 -0
  33. package/dist/src/adapters/state/types.js +11 -0
  34. package/dist/src/adapters/state/types.js.map +1 -0
  35. package/dist/src/core/__tests__/context.test.d.ts +12 -0
  36. package/dist/src/core/__tests__/context.test.d.ts.map +1 -0
  37. package/dist/src/core/__tests__/context.test.js +528 -0
  38. package/dist/src/core/__tests__/context.test.js.map +1 -0
  39. package/dist/src/core/__tests__/discover.test.d.ts +2 -0
  40. package/dist/src/core/__tests__/discover.test.d.ts.map +1 -0
  41. package/dist/src/core/__tests__/discover.test.js +667 -0
  42. package/dist/src/core/__tests__/discover.test.js.map +1 -0
  43. package/dist/src/core/__tests__/engine.test.d.ts +2 -0
  44. package/dist/src/core/__tests__/engine.test.d.ts.map +1 -0
  45. package/dist/src/core/__tests__/engine.test.js +444 -0
  46. package/dist/src/core/__tests__/engine.test.js.map +1 -0
  47. package/dist/src/core/__tests__/feedback.test.d.ts +2 -0
  48. package/dist/src/core/__tests__/feedback.test.d.ts.map +1 -0
  49. package/dist/src/core/__tests__/feedback.test.js +351 -0
  50. package/dist/src/core/__tests__/feedback.test.js.map +1 -0
  51. package/dist/src/core/__tests__/plan.test.d.ts +2 -0
  52. package/dist/src/core/__tests__/plan.test.d.ts.map +1 -0
  53. package/dist/src/core/__tests__/plan.test.js +429 -0
  54. package/dist/src/core/__tests__/plan.test.js.map +1 -0
  55. package/dist/src/core/__tests__/schemas.test.d.ts +2 -0
  56. package/dist/src/core/__tests__/schemas.test.d.ts.map +1 -0
  57. package/dist/src/core/__tests__/schemas.test.js +614 -0
  58. package/dist/src/core/__tests__/schemas.test.js.map +1 -0
  59. package/dist/src/core/__tests__/state.test.d.ts +2 -0
  60. package/dist/src/core/__tests__/state.test.d.ts.map +1 -0
  61. package/dist/src/core/__tests__/state.test.js +1107 -0
  62. package/dist/src/core/__tests__/state.test.js.map +1 -0
  63. package/dist/src/core/__tests__/status.test.d.ts +2 -0
  64. package/dist/src/core/__tests__/status.test.d.ts.map +1 -0
  65. package/dist/src/core/__tests__/status.test.js +600 -0
  66. package/dist/src/core/__tests__/status.test.js.map +1 -0
  67. package/dist/src/core/__tests__/test-helpers.d.ts +28 -0
  68. package/dist/src/core/__tests__/test-helpers.d.ts.map +1 -0
  69. package/dist/src/core/__tests__/test-helpers.js +185 -0
  70. package/dist/src/core/__tests__/test-helpers.js.map +1 -0
  71. package/dist/src/core/__tests__/utils.test.d.ts +2 -0
  72. package/dist/src/core/__tests__/utils.test.d.ts.map +1 -0
  73. package/dist/src/core/__tests__/utils.test.js +276 -0
  74. package/dist/src/core/__tests__/utils.test.js.map +1 -0
  75. package/dist/src/core/__tests__/validate.test.d.ts +2 -0
  76. package/dist/src/core/__tests__/validate.test.d.ts.map +1 -0
  77. package/dist/src/core/__tests__/validate.test.js +354 -0
  78. package/dist/src/core/__tests__/validate.test.js.map +1 -0
  79. package/dist/src/core/commands/discover.d.ts +71 -0
  80. package/dist/src/core/commands/discover.d.ts.map +1 -0
  81. package/dist/src/core/commands/discover.js +687 -0
  82. package/dist/src/core/commands/discover.js.map +1 -0
  83. package/dist/src/core/commands/feedback.d.ts +49 -0
  84. package/dist/src/core/commands/feedback.d.ts.map +1 -0
  85. package/dist/src/core/commands/feedback.js +283 -0
  86. package/dist/src/core/commands/feedback.js.map +1 -0
  87. package/dist/src/core/commands/index.d.ts +11 -0
  88. package/dist/src/core/commands/index.d.ts.map +1 -0
  89. package/dist/src/core/commands/index.js +11 -0
  90. package/dist/src/core/commands/index.js.map +1 -0
  91. package/dist/src/core/commands/plan.d.ts +108 -0
  92. package/dist/src/core/commands/plan.d.ts.map +1 -0
  93. package/dist/src/core/commands/plan.js +621 -0
  94. package/dist/src/core/commands/plan.js.map +1 -0
  95. package/dist/src/core/commands/status.d.ts +72 -0
  96. package/dist/src/core/commands/status.d.ts.map +1 -0
  97. package/dist/src/core/commands/status.js +720 -0
  98. package/dist/src/core/commands/status.js.map +1 -0
  99. package/dist/src/core/commands/validate.d.ts +47 -0
  100. package/dist/src/core/commands/validate.d.ts.map +1 -0
  101. package/dist/src/core/commands/validate.js +608 -0
  102. package/dist/src/core/commands/validate.js.map +1 -0
  103. package/dist/src/core/engine.d.ts +294 -0
  104. package/dist/src/core/engine.d.ts.map +1 -0
  105. package/dist/src/core/engine.js +219 -0
  106. package/dist/src/core/engine.js.map +1 -0
  107. package/dist/src/core/index.d.ts +14 -0
  108. package/dist/src/core/index.d.ts.map +1 -0
  109. package/dist/src/core/index.js +18 -0
  110. package/dist/src/core/index.js.map +1 -0
  111. package/dist/src/core/prompts/context-helpers.d.ts +48 -0
  112. package/dist/src/core/prompts/context-helpers.d.ts.map +1 -0
  113. package/dist/src/core/prompts/context-helpers.js +206 -0
  114. package/dist/src/core/prompts/context-helpers.js.map +1 -0
  115. package/dist/src/core/prompts/discovery.d.ts +11 -0
  116. package/dist/src/core/prompts/discovery.d.ts.map +1 -0
  117. package/dist/src/core/prompts/discovery.js +179 -0
  118. package/dist/src/core/prompts/discovery.js.map +1 -0
  119. package/dist/src/core/prompts/feedback.d.ts +38 -0
  120. package/dist/src/core/prompts/feedback.d.ts.map +1 -0
  121. package/dist/src/core/prompts/feedback.js +292 -0
  122. package/dist/src/core/prompts/feedback.js.map +1 -0
  123. package/dist/src/core/prompts/index.d.ts +12 -0
  124. package/dist/src/core/prompts/index.d.ts.map +1 -0
  125. package/dist/src/core/prompts/index.js +12 -0
  126. package/dist/src/core/prompts/index.js.map +1 -0
  127. package/dist/src/core/prompts/planning.d.ts +15 -0
  128. package/dist/src/core/prompts/planning.d.ts.map +1 -0
  129. package/dist/src/core/prompts/planning.js +293 -0
  130. package/dist/src/core/prompts/planning.js.map +1 -0
  131. package/dist/src/core/prompts/status.d.ts +41 -0
  132. package/dist/src/core/prompts/status.d.ts.map +1 -0
  133. package/dist/src/core/prompts/status.js +270 -0
  134. package/dist/src/core/prompts/status.js.map +1 -0
  135. package/dist/src/core/prompts/validate.d.ts +62 -0
  136. package/dist/src/core/prompts/validate.d.ts.map +1 -0
  137. package/dist/src/core/prompts/validate.js +302 -0
  138. package/dist/src/core/prompts/validate.js.map +1 -0
  139. package/dist/src/core/schemas.d.ts +5045 -0
  140. package/dist/src/core/schemas.d.ts.map +1 -0
  141. package/dist/src/core/schemas.js +492 -0
  142. package/dist/src/core/schemas.js.map +1 -0
  143. package/dist/src/core/state.d.ts +156 -0
  144. package/dist/src/core/state.d.ts.map +1 -0
  145. package/dist/src/core/state.js +608 -0
  146. package/dist/src/core/state.js.map +1 -0
  147. package/dist/src/core/types.d.ts +167 -0
  148. package/dist/src/core/types.d.ts.map +1 -0
  149. package/dist/src/core/types.js +102 -0
  150. package/dist/src/core/types.js.map +1 -0
  151. package/dist/src/core/utils.d.ts +39 -0
  152. package/dist/src/core/utils.d.ts.map +1 -0
  153. package/dist/src/core/utils.js +208 -0
  154. package/dist/src/core/utils.js.map +1 -0
  155. package/package.json +77 -0
@@ -0,0 +1,351 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
+ import { createTestContext, cleanupTestContext, initializeTestProject, setupDiscoveryComplete, setupMilestonesApproved, setupEpicWithArtifacts, } from "./test-helpers.js";
3
+ describe("Feedback Script Integration", () => {
4
+ let ctx;
5
+ beforeEach(async () => {
6
+ ctx = await createTestContext();
7
+ await initializeTestProject(ctx);
8
+ await setupDiscoveryComplete(ctx);
9
+ await setupMilestonesApproved(ctx);
10
+ await setupEpicWithArtifacts(ctx);
11
+ vi.spyOn(console, "log").mockImplementation(() => { });
12
+ });
13
+ afterEach(async () => {
14
+ vi.restoreAllMocks();
15
+ await cleanupTestContext(ctx);
16
+ });
17
+ describe("Mark Story Status", () => {
18
+ it("should mark story as done", async () => {
19
+ const stories = await ctx.state.readStories("E1", "auth");
20
+ const storyIndex = stories.stories.findIndex((s) => s.id === "E1.S1");
21
+ stories.stories[storyIndex].status = "done";
22
+ await ctx.state.writeStories("E1", "auth", stories);
23
+ const updated = await ctx.state.readStories("E1", "auth");
24
+ const story = updated?.stories.find((s) => s.id === "E1.S1");
25
+ expect(story?.status).toBe("done");
26
+ });
27
+ it("should mark story as blocked with reason", async () => {
28
+ const stories = await ctx.state.readStories("E1", "auth");
29
+ const storyIndex = stories.stories.findIndex((s) => s.id === "E1.S1");
30
+ stories.stories[storyIndex].status = "blocked";
31
+ stories.stories[storyIndex].blocked_reason = "Waiting for API";
32
+ await ctx.state.writeStories("E1", "auth", stories);
33
+ const updated = await ctx.state.readStories("E1", "auth");
34
+ const story = updated?.stories.find((s) => s.id === "E1.S1");
35
+ expect(story?.status).toBe("blocked");
36
+ expect(story?.blocked_reason).toBe("Waiting for API");
37
+ });
38
+ it("should mark story as in_progress", async () => {
39
+ const stories = await ctx.state.readStories("E1", "auth");
40
+ const storyIndex = stories.stories.findIndex((s) => s.id === "E1.S1");
41
+ stories.stories[storyIndex].status = "in_progress";
42
+ await ctx.state.writeStories("E1", "auth", stories);
43
+ const updated = await ctx.state.readStories("E1", "auth");
44
+ const story = updated?.stories.find((s) => s.id === "E1.S1");
45
+ expect(story?.status).toBe("in_progress");
46
+ });
47
+ it("should mark story as review", async () => {
48
+ const stories = await ctx.state.readStories("E1", "auth");
49
+ const storyIndex = stories.stories.findIndex((s) => s.id === "E1.S1");
50
+ stories.stories[storyIndex].status = "review";
51
+ await ctx.state.writeStories("E1", "auth", stories);
52
+ const updated = await ctx.state.readStories("E1", "auth");
53
+ const story = updated?.stories.find((s) => s.id === "E1.S1");
54
+ expect(story?.status).toBe("review");
55
+ });
56
+ it("should mark story as deferred", async () => {
57
+ const stories = await ctx.state.readStories("E1", "auth");
58
+ const storyIndex = stories.stories.findIndex((s) => s.id === "E1.S1");
59
+ stories.stories[storyIndex].status = "deferred";
60
+ await ctx.state.writeStories("E1", "auth", stories);
61
+ const updated = await ctx.state.readStories("E1", "auth");
62
+ const story = updated?.stories.find((s) => s.id === "E1.S1");
63
+ expect(story?.status).toBe("deferred");
64
+ });
65
+ it("should update completed_stories count when marking done", async () => {
66
+ const project = await ctx.state.readProject();
67
+ const beforeCount = project?.stats.completed_stories || 0;
68
+ // Already 1 completed (E1.S3), mark another as done
69
+ const stories = await ctx.state.readStories("E1", "auth");
70
+ const storyIndex = stories.stories.findIndex((s) => s.id === "E1.S1");
71
+ stories.stories[storyIndex].status = "done";
72
+ await ctx.state.writeStories("E1", "auth", stories);
73
+ // Manually update project stats (simulating what feedback.ts does)
74
+ project.stats.completed_stories = beforeCount + 1;
75
+ await ctx.state.writeProject(project);
76
+ const updated = await ctx.state.readProject();
77
+ expect(updated?.stats.completed_stories).toBe(beforeCount + 1);
78
+ });
79
+ it("should clear blocked_reason when unblocking", async () => {
80
+ const stories = await ctx.state.readStories("E1", "auth");
81
+ const storyIndex = stories.stories.findIndex((s) => s.id === "E1.S1");
82
+ // First block
83
+ stories.stories[storyIndex].status = "blocked";
84
+ stories.stories[storyIndex].blocked_reason = "Some blocker";
85
+ await ctx.state.writeStories("E1", "auth", stories);
86
+ // Then unblock
87
+ const blockedStories = await ctx.state.readStories("E1", "auth");
88
+ const idx = blockedStories.stories.findIndex((s) => s.id === "E1.S1");
89
+ blockedStories.stories[idx].status = "todo";
90
+ blockedStories.stories[idx].blocked_reason = undefined;
91
+ await ctx.state.writeStories("E1", "auth", blockedStories);
92
+ const updated = await ctx.state.readStories("E1", "auth");
93
+ const story = updated?.stories.find((s) => s.id === "E1.S1");
94
+ expect(story?.status).toBe("todo");
95
+ expect(story?.blocked_reason).toBeUndefined();
96
+ });
97
+ });
98
+ describe("Add Feedback", () => {
99
+ it("should add blocker feedback", async () => {
100
+ const queue = await ctx.state.readFeedbackQueue();
101
+ queue.feedback.push({
102
+ id: "fb-001",
103
+ type: "blocker",
104
+ source: { type: "execution", story_id: "E1.S1" },
105
+ summary: "OAuth requires enterprise plan",
106
+ affects: [{ type: "story", id: "E1.S1" }],
107
+ status: "pending",
108
+ created: new Date().toISOString(),
109
+ });
110
+ await ctx.state.writeFeedbackQueue(queue);
111
+ const updated = await ctx.state.readFeedbackQueue();
112
+ expect(updated?.feedback).toHaveLength(1);
113
+ expect(updated?.feedback[0].type).toBe("blocker");
114
+ });
115
+ it("should add gap feedback", async () => {
116
+ const queue = await ctx.state.readFeedbackQueue();
117
+ queue.feedback.push({
118
+ id: "fb-001",
119
+ type: "gap",
120
+ source: { type: "execution", story_id: "E1.S1" },
121
+ summary: "Missing offline support",
122
+ affects: [{ type: "story", id: "E1.S1" }],
123
+ status: "pending",
124
+ created: new Date().toISOString(),
125
+ });
126
+ await ctx.state.writeFeedbackQueue(queue);
127
+ const updated = await ctx.state.readFeedbackQueue();
128
+ expect(updated?.feedback[0].type).toBe("gap");
129
+ });
130
+ it("should add scope feedback", async () => {
131
+ const queue = await ctx.state.readFeedbackQueue();
132
+ queue.feedback.push({
133
+ id: "fb-001",
134
+ type: "scope",
135
+ source: { type: "execution", story_id: "E1.S1" },
136
+ summary: "Story too large, should split",
137
+ affects: [{ type: "story", id: "E1.S1" }],
138
+ status: "pending",
139
+ created: new Date().toISOString(),
140
+ });
141
+ await ctx.state.writeFeedbackQueue(queue);
142
+ const updated = await ctx.state.readFeedbackQueue();
143
+ expect(updated?.feedback[0].type).toBe("scope");
144
+ });
145
+ it("should add conflict feedback", async () => {
146
+ const queue = await ctx.state.readFeedbackQueue();
147
+ queue.feedback.push({
148
+ id: "fb-001",
149
+ type: "conflict",
150
+ source: { type: "execution", story_id: "E1.S1" },
151
+ summary: "Conflicts with E1.S2 approach",
152
+ affects: [{ type: "story", id: "E1.S1" }],
153
+ status: "pending",
154
+ created: new Date().toISOString(),
155
+ });
156
+ await ctx.state.writeFeedbackQueue(queue);
157
+ const updated = await ctx.state.readFeedbackQueue();
158
+ expect(updated?.feedback[0].type).toBe("conflict");
159
+ });
160
+ it("should add question feedback", async () => {
161
+ const queue = await ctx.state.readFeedbackQueue();
162
+ queue.feedback.push({
163
+ id: "fb-001",
164
+ type: "question",
165
+ source: { type: "execution", story_id: "E1.S1" },
166
+ summary: "What auth provider to use?",
167
+ affects: [{ type: "story", id: "E1.S1" }],
168
+ status: "pending",
169
+ created: new Date().toISOString(),
170
+ });
171
+ await ctx.state.writeFeedbackQueue(queue);
172
+ const updated = await ctx.state.readFeedbackQueue();
173
+ expect(updated?.feedback[0].type).toBe("question");
174
+ });
175
+ it("should track affected items", async () => {
176
+ const queue = await ctx.state.readFeedbackQueue();
177
+ queue.feedback.push({
178
+ id: "fb-001",
179
+ type: "blocker",
180
+ source: { type: "execution", story_id: "E1.S1" },
181
+ summary: "Issue",
182
+ affects: [
183
+ { type: "story", id: "E1.S1" },
184
+ { type: "requirement", id: "E1.R1" },
185
+ { type: "architecture", id: "E1.A1" },
186
+ ],
187
+ status: "pending",
188
+ created: new Date().toISOString(),
189
+ });
190
+ await ctx.state.writeFeedbackQueue(queue);
191
+ const updated = await ctx.state.readFeedbackQueue();
192
+ expect(updated?.feedback[0].affects).toHaveLength(3);
193
+ });
194
+ });
195
+ describe("List Feedback", () => {
196
+ it("should list pending feedback", async () => {
197
+ const queue = await ctx.state.readFeedbackQueue();
198
+ queue.feedback.push({
199
+ id: "fb-001",
200
+ type: "blocker",
201
+ source: { type: "execution" },
202
+ summary: "Issue 1",
203
+ affects: [],
204
+ status: "pending",
205
+ created: new Date().toISOString(),
206
+ }, {
207
+ id: "fb-002",
208
+ type: "gap",
209
+ source: { type: "execution" },
210
+ summary: "Issue 2",
211
+ affects: [],
212
+ status: "pending",
213
+ created: new Date().toISOString(),
214
+ });
215
+ await ctx.state.writeFeedbackQueue(queue);
216
+ const updated = await ctx.state.readFeedbackQueue();
217
+ const pending = updated?.feedback.filter((f) => f.status === "pending");
218
+ expect(pending).toHaveLength(2);
219
+ });
220
+ it("should not include incorporated feedback in pending", async () => {
221
+ const queue = await ctx.state.readFeedbackQueue();
222
+ queue.feedback.push({
223
+ id: "fb-001",
224
+ type: "blocker",
225
+ source: { type: "execution" },
226
+ summary: "Issue",
227
+ affects: [],
228
+ status: "incorporated",
229
+ created: new Date().toISOString(),
230
+ });
231
+ await ctx.state.writeFeedbackQueue(queue);
232
+ const updated = await ctx.state.readFeedbackQueue();
233
+ const pending = updated?.feedback.filter((f) => f.status === "pending");
234
+ expect(pending).toHaveLength(0);
235
+ });
236
+ });
237
+ describe("Resolve Feedback", () => {
238
+ it("should mark feedback as incorporated", async () => {
239
+ const queue = await ctx.state.readFeedbackQueue();
240
+ queue.feedback.push({
241
+ id: "fb-001",
242
+ type: "blocker",
243
+ source: { type: "execution", story_id: "E1.S1" },
244
+ summary: "Issue",
245
+ affects: [],
246
+ status: "pending",
247
+ created: new Date().toISOString(),
248
+ });
249
+ await ctx.state.writeFeedbackQueue(queue);
250
+ // Resolve it
251
+ const toResolve = await ctx.state.readFeedbackQueue();
252
+ const idx = toResolve.feedback.findIndex((f) => f.id === "fb-001");
253
+ const resolved = toResolve.feedback.splice(idx, 1)[0];
254
+ toResolve.incorporated.push({
255
+ id: resolved.id,
256
+ summary: resolved.summary,
257
+ incorporated: new Date().toISOString(),
258
+ changes_made: ["Fixed the issue"],
259
+ });
260
+ await ctx.state.writeFeedbackQueue(toResolve);
261
+ const updated = await ctx.state.readFeedbackQueue();
262
+ expect(updated?.feedback).toHaveLength(0);
263
+ expect(updated?.incorporated).toHaveLength(1);
264
+ });
265
+ it("should track changes made during resolution", async () => {
266
+ const queue = await ctx.state.readFeedbackQueue();
267
+ queue.incorporated.push({
268
+ id: "fb-001",
269
+ summary: "Fixed issue",
270
+ incorporated: new Date().toISOString(),
271
+ changes_made: ["Updated E1.R1", "Modified E1.S1"],
272
+ });
273
+ await ctx.state.writeFeedbackQueue(queue);
274
+ const updated = await ctx.state.readFeedbackQueue();
275
+ expect(updated?.incorporated[0].changes_made).toHaveLength(2);
276
+ });
277
+ });
278
+ describe("Dismiss Feedback", () => {
279
+ it("should mark feedback as dismissed", async () => {
280
+ const queue = await ctx.state.readFeedbackQueue();
281
+ queue.feedback.push({
282
+ id: "fb-001",
283
+ type: "question",
284
+ source: { type: "execution" },
285
+ summary: "Question",
286
+ affects: [],
287
+ status: "pending",
288
+ created: new Date().toISOString(),
289
+ });
290
+ await ctx.state.writeFeedbackQueue(queue);
291
+ // Dismiss it
292
+ const toDismiss = await ctx.state.readFeedbackQueue();
293
+ const idx = toDismiss.feedback.findIndex((f) => f.id === "fb-001");
294
+ toDismiss.feedback[idx].status = "dismissed";
295
+ await ctx.state.writeFeedbackQueue(toDismiss);
296
+ const updated = await ctx.state.readFeedbackQueue();
297
+ expect(updated?.feedback[0].status).toBe("dismissed");
298
+ });
299
+ });
300
+ describe("Stuck Queue Integration", () => {
301
+ it("should show stuck items", async () => {
302
+ const queue = await ctx.state.readStuckQueue();
303
+ queue.stuck.push({
304
+ id: "stuck-001",
305
+ task_id: "task-001",
306
+ type: "ambiguous_requirement",
307
+ summary: "What does 'fast' mean?",
308
+ attempts: [
309
+ { number: 1, approach: "Checked docs", result: "No definition" },
310
+ ],
311
+ suggested_options: [
312
+ { label: "Under 200ms", description: "Snappy" },
313
+ { label: "Under 1s", description: "Acceptable" },
314
+ ],
315
+ created: new Date().toISOString(),
316
+ priority: "high",
317
+ });
318
+ await ctx.state.writeStuckQueue(queue);
319
+ const updated = await ctx.state.readStuckQueue();
320
+ expect(updated?.stuck).toHaveLength(1);
321
+ expect(updated?.stuck[0].suggested_options).toHaveLength(2);
322
+ });
323
+ it("should track resolution of stuck items", async () => {
324
+ const queue = await ctx.state.readStuckQueue();
325
+ queue.stuck.push({
326
+ id: "stuck-001",
327
+ task_id: "task-001",
328
+ type: "test",
329
+ summary: "Issue",
330
+ attempts: [],
331
+ created: new Date().toISOString(),
332
+ priority: "medium",
333
+ });
334
+ await ctx.state.writeStuckQueue(queue);
335
+ // Resolve it
336
+ const toResolve = await ctx.state.readStuckQueue();
337
+ const stuck = toResolve.stuck.splice(0, 1)[0];
338
+ toResolve.resolved.push({
339
+ id: stuck.id,
340
+ resolution: "User provided clarification",
341
+ resolved: new Date().toISOString(),
342
+ resolved_by: "human",
343
+ });
344
+ await ctx.state.writeStuckQueue(toResolve);
345
+ const updated = await ctx.state.readStuckQueue();
346
+ expect(updated?.stuck).toHaveLength(0);
347
+ expect(updated?.resolved).toHaveLength(1);
348
+ });
349
+ });
350
+ });
351
+ //# sourceMappingURL=feedback.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.test.js","sourceRoot":"","sources":["../../../../src/core/__tests__/feedback.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GAEvB,MAAM,mBAAmB,CAAC;AAE3B,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,GAAgB,CAAC;IAErB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAChC,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAElC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACvE,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7C,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAQ,CAAC,CAAC;YAErD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACvE,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YAChD,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,cAAc,GAAG,iBAAiB,CAAC;YAChE,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAQ,CAAC,CAAC;YAErD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACvE,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;YACpD,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAQ,CAAC,CAAC;YAErD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACvE,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC/C,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAQ,CAAC,CAAC;YAErD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACvE,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC;YACjD,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAQ,CAAC,CAAC;YAErD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,OAAO,EAAE,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;YAE1D,oDAAoD;YACpD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACvE,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7C,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAQ,CAAC,CAAC;YAErD,mEAAmE;YACnE,OAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG,WAAW,GAAG,CAAC,CAAC;YACnD,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAQ,CAAC,CAAC;YAEvC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,OAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAEvE,cAAc;YACd,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YAChD,OAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC;YAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAQ,CAAC,CAAC;YAErD,eAAe;YACf,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjE,MAAM,GAAG,GAAG,cAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACvE,cAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAC7C,cAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC;YACxD,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,cAAe,CAAC,CAAC;YAE5D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAChD,OAAO,EAAE,gCAAgC;gBACzC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBACzC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAChD,OAAO,EAAE,yBAAyB;gBAClC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBACzC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAChD,OAAO,EAAE,+BAA+B;gBACxC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBACzC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAChD,OAAO,EAAE,+BAA+B;gBACxC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBACzC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAChD,OAAO,EAAE,4BAA4B;gBACrC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;gBACzC,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAChD,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;oBAC9B,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE;oBACpC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE;iBACtC;gBACD,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAClB;gBACE,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC7B,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,EACD;gBACE,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC7B,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CACF,CAAC;YACF,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACxE,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC7B,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACxE,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE;gBAChD,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,aAAa;YACb,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,SAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,SAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,SAAU,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC3B,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACtC,YAAY,EAAE,CAAC,iBAAiB,CAAC;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAU,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,YAAY,CAAC,IAAI,CAAC;gBACvB,EAAE,EAAE,QAAQ;gBACZ,OAAO,EAAE,aAAa;gBACtB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACtC,YAAY,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;aAClD,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACnB,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;gBAC7B,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAM,CAAC,CAAC;YAE3C,aAAa;YACb,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,SAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;YACpE,SAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC;YAC9C,MAAM,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAU,CAAC,CAAC;YAE/C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC/C,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChB,EAAE,EAAE,WAAW;gBACf,OAAO,EAAE,UAAU;gBACnB,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,wBAAwB;gBACjC,QAAQ,EAAE;oBACR,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE;iBACjE;gBACD,iBAAiB,EAAE;oBACjB,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE;oBAC/C,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE;iBACjD;gBACD,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACjC,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,KAAM,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YACjD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC/C,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChB,EAAE,EAAE,WAAW;gBACf,OAAO,EAAE,UAAU;gBACnB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACjC,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,KAAM,CAAC,CAAC;YAExC,aAAa;YACb,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,SAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,SAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACvB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,UAAU,EAAE,6BAA6B;gBACzC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAClC,WAAW,EAAE,OAAO;aACrB,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,SAAU,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YACjD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plan.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.test.d.ts","sourceRoot":"","sources":["../../../../src/core/__tests__/plan.test.ts"],"names":[],"mappings":""}