@runfusion/fusion 0.24.0 → 0.26.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 (167) hide show
  1. package/README.md +6 -0
  2. package/dist/bin.js +18646 -15669
  3. package/dist/client/assets/AgentDetailView-Cv-vgOj3.js +18 -0
  4. package/dist/client/assets/{AgentsView-BkB9FiMT.js → AgentsView-D6Zi5zfP.js} +4 -4
  5. package/dist/client/assets/ChatView-CAHjY9uO.js +1 -0
  6. package/dist/client/assets/{DevServerView-BkvtjZBa.js → DevServerView--_WBvIDQ.js} +1 -1
  7. package/dist/client/assets/{DirectoryPicker-BK-KbnhP.js → DirectoryPicker-xedtR-Rd.js} +1 -1
  8. package/dist/client/assets/{DocumentsView-BEg1CQAk.js → DocumentsView-Bg2oaZks.js} +1 -1
  9. package/dist/client/assets/{EvalsView-Berf9bQm.js → EvalsView-B3uOCXfr.js} +1 -1
  10. package/dist/client/assets/{ExperimentalAgentOnboardingModal-jcInE50G.js → ExperimentalAgentOnboardingModal-Bx6yXVS5.js} +1 -1
  11. package/dist/client/assets/{InsightsView-BX5bSF1J.js → InsightsView-Q1zvtF4F.js} +1 -1
  12. package/dist/client/assets/MemoryView-xcN_eouf.js +2 -0
  13. package/dist/client/assets/MemoryView-zaXewZzi.css +1 -0
  14. package/dist/client/assets/{NodesView-DLUOBLf6.js → NodesView-RxXg58_Q.js} +1 -1
  15. package/dist/client/assets/{PiExtensionsManager-COlJf0Kx.js → PiExtensionsManager-Cc8aAZXg.js} +2 -2
  16. package/dist/client/assets/PluginManager-BEkyBajl.js +1 -0
  17. package/dist/client/assets/{ResearchView-BzCcDAS4.css → ResearchView-BEI4ZSGs.css} +1 -1
  18. package/dist/client/assets/ResearchView-CERNf7sJ.js +1 -0
  19. package/dist/client/assets/{SettingsModal-yRqM4DV8.js → SettingsModal-B1r0yASu.js} +1 -1
  20. package/dist/client/assets/SettingsModal-BLsac7CJ.js +31 -0
  21. package/dist/client/assets/SettingsModal-Cis-4Lot.css +1 -0
  22. package/dist/client/assets/{SetupWizardModal-uUZk3TKT.js → SetupWizardModal-D1q548_L.js} +1 -1
  23. package/dist/client/assets/{SkillsView-CP8JX0P_.js → SkillsView-ClLM6u6p.js} +1 -1
  24. package/dist/client/assets/StashRecoveryView-B_8WIQEo.css +1 -0
  25. package/dist/client/assets/StashRecoveryView-ze0pEZ5U.js +1 -0
  26. package/dist/client/assets/{TodoView-DCRIkDZ-.js → TodoView-CTmIfy2M.js} +1 -1
  27. package/dist/client/assets/{dashboard-view-lR7YYmSC.js → dashboard-view-4xAN3yO5.js} +2 -2
  28. package/dist/client/assets/{folder-open-DHjELt8-.js → folder-open-BZuKESeq.js} +1 -1
  29. package/dist/client/assets/index-Bdw6llW6.js +692 -0
  30. package/dist/client/assets/index-CZGlyJuS.css +1 -0
  31. package/dist/client/assets/{star-DYesq1AV.js → star-D75YKEq-.js} +1 -1
  32. package/dist/client/assets/{upload-DTWF3Db5.js → upload-BYYTgWFj.js} +1 -1
  33. package/dist/client/assets/{users--syrel4l.js → users-RS90Aii3.js} +1 -1
  34. package/dist/client/index.html +2 -2
  35. package/dist/client/version.json +1 -1
  36. package/dist/droid-cli/package.json +1 -1
  37. package/dist/extension.js +5640 -3618
  38. package/dist/pi-claude-cli/package.json +1 -1
  39. package/dist/plugins/fusion-plugin-cli-printing-press/manifest.json +6 -0
  40. package/dist/plugins/fusion-plugin-cli-printing-press/package.json +26 -0
  41. package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/manifest.test.ts +20 -0
  42. package/dist/plugins/fusion-plugin-cli-printing-press/src/index.ts +14 -0
  43. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +9 -11
  44. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
  45. package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +30 -0
  46. package/dist/plugins/fusion-plugin-dependency-graph/package.json +3 -28
  47. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +899 -895
  48. package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
  49. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +68 -71
  50. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  51. package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +47 -50
  52. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  53. package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +155 -109
  54. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  55. package/dist/plugins/fusion-plugin-reports/package.json +1 -1
  56. package/dist/plugins/fusion-plugin-reports/src/index.ts +49 -3
  57. package/dist/plugins/fusion-plugin-reports/src/report-schema.ts +38 -0
  58. package/dist/plugins/fusion-plugin-reports/src/store/__tests__/report-schema.test.ts +66 -0
  59. package/dist/plugins/fusion-plugin-reports/src/store/__tests__/report-store.test.ts +177 -0
  60. package/dist/plugins/fusion-plugin-reports/src/store/report-store.ts +341 -0
  61. package/dist/plugins/fusion-plugin-reports/src/store/report-types.ts +77 -0
  62. package/dist/plugins/fusion-plugin-roadmap/{src/dashboard/RoadmapsView.css → bundled.css} +13 -219
  63. package/dist/plugins/fusion-plugin-roadmap/bundled.js +29535 -0
  64. package/dist/plugins/fusion-plugin-roadmap/package.json +4 -41
  65. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
  66. package/package.json +2 -3
  67. package/dist/client/assets/AgentDetailView-gy_5SUj2.js +0 -18
  68. package/dist/client/assets/ChatView-B_-B8fqu.js +0 -1
  69. package/dist/client/assets/MemoryView-CKElJY_3.js +0 -2
  70. package/dist/client/assets/MemoryView-DiajLXby.css +0 -1
  71. package/dist/client/assets/PluginManager-CfW55BF4.js +0 -1
  72. package/dist/client/assets/ResearchView-B256Lr8I.js +0 -1
  73. package/dist/client/assets/SettingsModal-BeA_nQtW.js +0 -31
  74. package/dist/client/assets/SettingsModal-DzsLquBu.css +0 -1
  75. package/dist/client/assets/index-CQyVRLOb.js +0 -692
  76. package/dist/client/assets/index-CxA2Nn0_.css +0 -1
  77. package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraph.css +0 -58
  78. package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraph.tsx +0 -301
  79. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphHighlight.css +0 -27
  80. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphTaskNode.css +0 -157
  81. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphTaskNode.tsx +0 -126
  82. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphToolbar.css +0 -35
  83. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphToolbar.tsx +0 -36
  84. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.highlighting.test.tsx +0 -112
  85. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.persistence.test.tsx +0 -115
  86. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.test.tsx +0 -128
  87. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphTaskNode.drag.test.tsx +0 -82
  88. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphTaskNode.test.tsx +0 -307
  89. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphToolbar.test.tsx +0 -60
  90. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/edges.test.tsx +0 -75
  91. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/filtering.test.tsx +0 -62
  92. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/filters.test.ts +0 -78
  93. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/graphPositionStorage.test.ts +0 -95
  94. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/host-integration.test.ts +0 -74
  95. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/index.test.ts +0 -58
  96. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/interactions.test.tsx +0 -121
  97. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/layout.test.ts +0 -70
  98. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/persistence.test.tsx +0 -89
  99. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphData.test.ts +0 -86
  100. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphInteraction.test.ts +0 -167
  101. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphPositions.test.ts +0 -66
  102. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useNodeDrag.test.ts +0 -81
  103. package/dist/plugins/fusion-plugin-dependency-graph/src/dashboard-interop.d.ts +0 -35
  104. package/dist/plugins/fusion-plugin-dependency-graph/src/dashboard-view.tsx +0 -19
  105. package/dist/plugins/fusion-plugin-dependency-graph/src/edges.tsx +0 -70
  106. package/dist/plugins/fusion-plugin-dependency-graph/src/filters.ts +0 -8
  107. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/__tests__/useDependencyChain.test.ts +0 -53
  108. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useDependencyChain.ts +0 -60
  109. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useGraphPositions.ts +0 -45
  110. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useNodeDrag.ts +0 -114
  111. package/dist/plugins/fusion-plugin-dependency-graph/src/index.ts +0 -24
  112. package/dist/plugins/fusion-plugin-dependency-graph/src/layout.ts +0 -91
  113. package/dist/plugins/fusion-plugin-dependency-graph/src/styles/drag.css +0 -15
  114. package/dist/plugins/fusion-plugin-dependency-graph/src/types.ts +0 -21
  115. package/dist/plugins/fusion-plugin-dependency-graph/src/useGraphData.ts +0 -17
  116. package/dist/plugins/fusion-plugin-dependency-graph/src/useGraphInteraction.ts +0 -292
  117. package/dist/plugins/fusion-plugin-dependency-graph/src/utils/graphPositionStorage.ts +0 -65
  118. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/api-client.test.ts +0 -101
  119. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/index.test.ts +0 -92
  120. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-routes.test.ts +0 -48
  121. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-suggestions.test.ts +0 -31
  122. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/RoadmapsView.tsx +0 -2559
  123. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/RoadmapsView.test.tsx +0 -1144
  124. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/useRoadmaps.test.ts +0 -1756
  125. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/api.ts +0 -70
  126. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/test-setup.ts +0 -7
  127. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/types.ts +0 -1
  128. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useConfirm.ts +0 -8
  129. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useRoadmaps.ts +0 -1188
  130. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useViewportMode.ts +0 -20
  131. package/dist/plugins/fusion-plugin-roadmap/src/dashboard-view.tsx +0 -6
  132. package/dist/plugins/fusion-plugin-roadmap/src/index.ts +0 -74
  133. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-routes.ts +0 -1
  134. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-schema.ts +0 -41
  135. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.d.ts +0 -15
  136. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.ts +0 -15
  137. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts +0 -283
  138. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts.map +0 -1
  139. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js +0 -21
  140. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js.map +0 -1
  141. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.ts +0 -310
  142. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts +0 -5
  143. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts.map +0 -1
  144. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js +0 -361
  145. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js.map +0 -1
  146. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.ts +0 -408
  147. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts +0 -68
  148. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts.map +0 -1
  149. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js +0 -300
  150. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js.map +0 -1
  151. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.ts +0 -381
  152. package/dist/plugins/fusion-plugin-roadmap/src/server/index.d.ts +0 -3
  153. package/dist/plugins/fusion-plugin-roadmap/src/server/index.ts +0 -1
  154. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-handoff.test.ts +0 -445
  155. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-ordering.test.ts +0 -334
  156. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts +0 -1318
  157. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-handoff.ts +0 -163
  158. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts +0 -37
  159. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts.map +0 -1
  160. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js +0 -188
  161. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js.map +0 -1
  162. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.ts +0 -311
  163. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts +0 -299
  164. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts.map +0 -1
  165. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js +0 -765
  166. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js.map +0 -1
  167. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.ts +0 -1001
@@ -1 +0,0 @@
1
- {"version":3,"file":"roadmap-routes.js","sourceRoot":"","sources":["roadmap-routes.ts"],"names":[],"mappings":"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"}
@@ -1,408 +0,0 @@
1
- import type { PluginContext, PluginRouteDefinition, PluginRouteResponse } from "@fusion/core";
2
-
3
- interface RouteRequest {
4
- params: Record<string, string>;
5
- query?: Record<string, string | string[] | undefined>;
6
- body?: unknown;
7
- }
8
- import { RoadmapStore } from "../store/roadmap-store.js";
9
- import {
10
- generateFeatureSuggestions,
11
- generateMilestoneSuggestions,
12
- SUGGESTION_TIMEOUT_MS,
13
- ParseError as SuggestionParseError,
14
- ServiceUnavailableError as SuggestionServiceUnavailableError,
15
- validateFeatureSuggestionInput,
16
- validateSuggestionInput,
17
- ValidationError as SuggestionValidationError,
18
- } from "./roadmap-suggestions.js";
19
-
20
- const roadmapStoreCache = new WeakMap<object, RoadmapStore>();
21
-
22
- function resolveProjectId(req: RouteRequest): string | undefined {
23
- const queryProjectId = paramValue(req.query?.projectId);
24
- if (queryProjectId.trim()) return queryProjectId.trim();
25
- const bodyProjectId = req.body && typeof req.body === "object"
26
- ? (req.body as { projectId?: unknown }).projectId
27
- : undefined;
28
- if (typeof bodyProjectId === "string" && bodyProjectId.trim()) return bodyProjectId.trim();
29
- return undefined;
30
- }
31
-
32
- async function getRoadmapStore(req: RouteRequest, ctx: PluginContext): Promise<RoadmapStore> {
33
- const projectId = resolveProjectId(req);
34
- const scopedTaskStore = projectId && ctx.resolveProjectTaskStore
35
- ? await ctx.resolveProjectTaskStore(projectId)
36
- : ctx.taskStore;
37
-
38
- const taskStoreWithRoadmaps = scopedTaskStore as PluginContext["taskStore"] & {
39
- getRoadmapStore?: () => RoadmapStore;
40
- };
41
-
42
- if (typeof taskStoreWithRoadmaps.getRoadmapStore === "function") {
43
- return taskStoreWithRoadmaps.getRoadmapStore();
44
- }
45
-
46
- const key = scopedTaskStore as object;
47
- const cached = roadmapStoreCache.get(key);
48
- if (cached) return cached;
49
- const store = new RoadmapStore(scopedTaskStore.getDatabase());
50
- roadmapStoreCache.set(key, store);
51
- return store;
52
- }
53
-
54
- function asRequest(req: unknown): RouteRequest {
55
- return req as RouteRequest;
56
- }
57
-
58
- function paramValue(value: string | string[] | undefined): string {
59
- if (Array.isArray(value)) return value[0] ?? "";
60
- return value ?? "";
61
- }
62
-
63
- function badRequest(message: string): PluginRouteResponse {
64
- return { status: 400, body: { error: message } };
65
- }
66
-
67
- function notFound(message: string): PluginRouteResponse {
68
- return { status: 404, body: { error: message } };
69
- }
70
-
71
- function serverError(message: string): PluginRouteResponse {
72
- return { status: 500, body: { error: message } };
73
- }
74
-
75
- function noContent(): PluginRouteResponse {
76
- return { status: 204 };
77
- }
78
-
79
- function routeHandler<T>(handler: (req: RouteRequest, ctx: PluginContext, roadmapStore: RoadmapStore) => Promise<T | PluginRouteResponse> | T | PluginRouteResponse) {
80
- return async (req: unknown, ctx: PluginContext): Promise<T | PluginRouteResponse> => {
81
- const routeRequest = asRequest(req);
82
- const roadmapStore = await getRoadmapStore(routeRequest, ctx);
83
- try {
84
- return await handler(routeRequest, ctx, roadmapStore);
85
- } catch (error) {
86
- if (error instanceof Error && error.message.toLowerCase().includes("not found")) {
87
- return notFound(error.message);
88
- }
89
- return serverError(error instanceof Error ? error.message : "Internal server error");
90
- }
91
- };
92
- }
93
-
94
- function validateTitle(title: unknown): string {
95
- if (!title || typeof title !== "string" || !title.trim()) {
96
- throw new Error("title is required");
97
- }
98
- if (title.length > 200) {
99
- throw new Error("title must not exceed 200 characters");
100
- }
101
- return title.trim();
102
- }
103
-
104
- function validateDescription(desc: unknown): string | undefined {
105
- if (desc === undefined || desc === null) return undefined;
106
- if (typeof desc !== "string") {
107
- throw new Error("description must be a string");
108
- }
109
- if (desc.length > 5000) {
110
- throw new Error("description must not exceed 5000 characters");
111
- }
112
- return desc.trim() || undefined;
113
- }
114
-
115
- function validateStringArray(arr: unknown, fieldName: string): string[] {
116
- if (!Array.isArray(arr)) {
117
- throw new Error(`${fieldName} must be an array`);
118
- }
119
- if (!arr.every((item) => typeof item === "string")) {
120
- throw new Error(`${fieldName} must be an array of strings`);
121
- }
122
- return arr;
123
- }
124
-
125
- export function createRoadmapPluginRoutes(): PluginRouteDefinition[] {
126
- return [
127
- {
128
- method: "GET",
129
- path: "/roadmaps",
130
- handler: routeHandler((_req, _ctx, roadmapStore) => roadmapStore.listRoadmaps()),
131
- },
132
- {
133
- method: "POST",
134
- path: "/roadmaps",
135
- handler: routeHandler((req, _ctx, roadmapStore) => {
136
- const body = req.body as { title: string; description?: string };
137
- try {
138
- return {
139
- status: 201,
140
- body: roadmapStore.createRoadmap({
141
- title: validateTitle(body?.title),
142
- description: validateDescription(body?.description),
143
- }),
144
- };
145
- } catch (error) {
146
- return badRequest(error instanceof Error ? error.message : "Invalid input");
147
- }
148
- }),
149
- },
150
- {
151
- method: "GET",
152
- path: "/roadmaps/:roadmapId",
153
- handler: routeHandler((req, _ctx, roadmapStore) => {
154
- const roadmap = roadmapStore.getRoadmapWithHierarchy(paramValue(req.params.roadmapId));
155
- return roadmap ? roadmap : notFound(`Roadmap ${paramValue(req.params.roadmapId)} not found`);
156
- }),
157
- },
158
- {
159
- method: "PATCH",
160
- path: "/roadmaps/:roadmapId",
161
- handler: routeHandler((req, _ctx, roadmapStore) => {
162
- const body = req.body as { title?: string; description?: string };
163
- try {
164
- return roadmapStore.updateRoadmap(paramValue(req.params.roadmapId), {
165
- title: body.title !== undefined ? validateTitle(body.title) : undefined,
166
- description: body.description !== undefined ? validateDescription(body.description) : undefined,
167
- });
168
- } catch (error) {
169
- return badRequest(error instanceof Error ? error.message : "Invalid input");
170
- }
171
- }),
172
- },
173
- { method: "DELETE", path: "/roadmaps/:roadmapId", handler: routeHandler((req, _ctx, roadmapStore) => {
174
- roadmapStore.deleteRoadmap(paramValue(req.params.roadmapId));
175
- return noContent();
176
- }) },
177
- {
178
- method: "POST",
179
- path: "/roadmaps/:roadmapId/milestones",
180
- handler: routeHandler((req, _ctx, roadmapStore) => {
181
- const body = req.body as { title: string; description?: string };
182
- try {
183
- return {
184
- status: 201,
185
- body: roadmapStore.createMilestone(paramValue(req.params.roadmapId), {
186
- title: validateTitle(body?.title),
187
- description: validateDescription(body?.description),
188
- }),
189
- };
190
- } catch (error) {
191
- return badRequest(error instanceof Error ? error.message : "Invalid input");
192
- }
193
- }),
194
- },
195
- {
196
- method: "POST",
197
- path: "/roadmaps/:roadmapId/milestones/reorder",
198
- handler: routeHandler((req, _ctx, roadmapStore) => {
199
- try {
200
- const body = req.body as { orderedMilestoneIds: string[] };
201
- roadmapStore.reorderMilestones({ roadmapId: paramValue(req.params.roadmapId), orderedMilestoneIds: validateStringArray(body?.orderedMilestoneIds, "orderedMilestoneIds") });
202
- return noContent();
203
- } catch (error) {
204
- return badRequest(error instanceof Error ? error.message : "Invalid input");
205
- }
206
- }),
207
- },
208
- {
209
- method: "PATCH",
210
- path: "/roadmaps/milestones/:milestoneId",
211
- handler: routeHandler((req, _ctx, roadmapStore) => {
212
- const body = req.body as { title?: string; description?: string };
213
- try {
214
- return roadmapStore.updateMilestone(paramValue(req.params.milestoneId), {
215
- title: body.title !== undefined ? validateTitle(body.title) : undefined,
216
- description: body.description !== undefined ? validateDescription(body.description) : undefined,
217
- });
218
- } catch (error) {
219
- return badRequest(error instanceof Error ? error.message : "Invalid input");
220
- }
221
- }),
222
- },
223
- { method: "DELETE", path: "/roadmaps/milestones/:milestoneId", handler: routeHandler((req, _ctx, roadmapStore) => {
224
- roadmapStore.deleteMilestone(paramValue(req.params.milestoneId));
225
- return noContent();
226
- }) },
227
- {
228
- method: "POST",
229
- path: "/roadmaps/milestones/:milestoneId/features",
230
- handler: routeHandler((req, _ctx, roadmapStore) => {
231
- const body = req.body as { title: string; description?: string };
232
- try {
233
- return {
234
- status: 201,
235
- body: roadmapStore.createFeature(paramValue(req.params.milestoneId), {
236
- title: validateTitle(body?.title),
237
- description: validateDescription(body?.description),
238
- }),
239
- };
240
- } catch (error) {
241
- return badRequest(error instanceof Error ? error.message : "Invalid input");
242
- }
243
- }),
244
- },
245
- {
246
- method: "POST",
247
- path: "/roadmaps/milestones/:milestoneId/features/reorder",
248
- handler: routeHandler((req, _ctx, roadmapStore) => {
249
- try {
250
- const body = req.body as { orderedFeatureIds: string[] };
251
- const milestone = roadmapStore.getMilestone(paramValue(req.params.milestoneId));
252
- if (!milestone) return notFound(`Milestone ${paramValue(req.params.milestoneId)} not found`);
253
- roadmapStore.reorderFeatures({ roadmapId: milestone.roadmapId, milestoneId: paramValue(req.params.milestoneId), orderedFeatureIds: validateStringArray(body?.orderedFeatureIds, "orderedFeatureIds") });
254
- return noContent();
255
- } catch (error) {
256
- return badRequest(error instanceof Error ? error.message : "Invalid input");
257
- }
258
- }),
259
- },
260
- {
261
- method: "PATCH",
262
- path: "/roadmaps/features/:featureId",
263
- handler: routeHandler((req, _ctx, roadmapStore) => {
264
- const body = req.body as { title?: string; description?: string };
265
- try {
266
- return roadmapStore.updateFeature(paramValue(req.params.featureId), {
267
- title: body.title !== undefined ? validateTitle(body.title) : undefined,
268
- description: body.description !== undefined ? validateDescription(body.description) : undefined,
269
- });
270
- } catch (error) {
271
- return badRequest(error instanceof Error ? error.message : "Invalid input");
272
- }
273
- }),
274
- },
275
- { method: "DELETE", path: "/roadmaps/features/:featureId", handler: routeHandler((req, _ctx, roadmapStore) => {
276
- roadmapStore.deleteFeature(paramValue(req.params.featureId));
277
- return noContent();
278
- }) },
279
- {
280
- method: "POST",
281
- path: "/roadmaps/features/:featureId/move",
282
- handler: routeHandler((req, _ctx, roadmapStore) => {
283
- const body = req.body as { targetMilestoneId: string; targetIndex: number };
284
- if (!body?.targetMilestoneId) return badRequest("targetMilestoneId is required");
285
- if (typeof body.targetIndex !== "number") return badRequest("targetIndex must be a number");
286
-
287
- const feature = roadmapStore.getFeature(paramValue(req.params.featureId));
288
- if (!feature) return notFound(`Feature ${paramValue(req.params.featureId)} not found`);
289
- const fromMilestone = roadmapStore.getMilestone(feature.milestoneId);
290
- if (!fromMilestone) return notFound(`Source milestone ${feature.milestoneId} not found`);
291
- const toMilestone = roadmapStore.getMilestone(body.targetMilestoneId);
292
- if (!toMilestone) return notFound(`Target milestone ${body.targetMilestoneId} not found`);
293
-
294
- roadmapStore.moveFeature({
295
- roadmapId: fromMilestone.roadmapId,
296
- featureId: paramValue(req.params.featureId),
297
- fromMilestoneId: feature.milestoneId,
298
- toMilestoneId: body.targetMilestoneId,
299
- targetOrderIndex: body.targetIndex,
300
- });
301
-
302
- return noContent();
303
- }),
304
- },
305
- {
306
- method: "POST",
307
- path: "/roadmaps/:roadmapId/suggestions/milestones",
308
- handler: routeHandler(async (req, ctx, roadmapStore) => {
309
- const roadmap = roadmapStore.getRoadmap(paramValue(req.params.roadmapId));
310
- if (!roadmap) return notFound(`Roadmap ${paramValue(req.params.roadmapId)} not found`);
311
-
312
- try {
313
- validateSuggestionInput(req.body);
314
- } catch (error) {
315
- if (error instanceof SuggestionValidationError) return badRequest(error.message);
316
- throw error;
317
- }
318
-
319
- try {
320
- const body = req.body as { goalPrompt: string; count?: number };
321
- const suggestions = await generateMilestoneSuggestions(
322
- body.goalPrompt,
323
- body.count,
324
- ctx.taskStore.getRootDir(),
325
- undefined,
326
- undefined,
327
- ctx.createAiSession,
328
- );
329
- return { suggestions };
330
- } catch (error) {
331
- if (error instanceof SuggestionParseError) return serverError(error.message);
332
- if (error instanceof SuggestionServiceUnavailableError) {
333
- return { status: 503, body: { error: error.message } };
334
- }
335
- throw error;
336
- }
337
- }),
338
- },
339
- {
340
- method: "POST",
341
- path: "/roadmaps/milestones/:milestoneId/suggestions/features",
342
- handler: routeHandler(async (req, ctx, roadmapStore) => {
343
- const milestone = roadmapStore.getMilestone(paramValue(req.params.milestoneId));
344
- if (!milestone) return notFound(`Milestone ${paramValue(req.params.milestoneId)} not found`);
345
- const roadmap = roadmapStore.getRoadmap(milestone.roadmapId);
346
- if (!roadmap) return notFound(`Roadmap ${milestone.roadmapId} not found`);
347
-
348
- try {
349
- validateFeatureSuggestionInput(req.body);
350
- } catch (error) {
351
- if (error instanceof SuggestionValidationError) return badRequest(error.message);
352
- throw error;
353
- }
354
-
355
- try {
356
- const body = req.body as { prompt?: string; count?: number };
357
- const suggestions = await generateFeatureSuggestions(
358
- {
359
- roadmapTitle: roadmap.title,
360
- roadmapDescription: roadmap.description,
361
- milestoneTitle: milestone.title,
362
- milestoneDescription: milestone.description,
363
- existingFeatureTitles: roadmapStore.listFeatures(milestone.id).map((feature) => feature.title),
364
- },
365
- body.count,
366
- body.prompt,
367
- ctx.taskStore.getRootDir(),
368
- undefined,
369
- undefined,
370
- ctx.createAiSession,
371
- );
372
- return { suggestions };
373
- } catch (error) {
374
- if (error instanceof SuggestionParseError) return serverError(error.message);
375
- if (error instanceof SuggestionServiceUnavailableError) {
376
- return { status: 503, body: { error: error.message } };
377
- }
378
- throw error;
379
- }
380
- }),
381
- },
382
- {
383
- method: "GET",
384
- path: "/roadmaps/:roadmapId/export",
385
- handler: routeHandler((req, _ctx, roadmapStore) => roadmapStore.getRoadmapExport(paramValue(req.params.roadmapId))),
386
- },
387
- {
388
- method: "GET",
389
- path: "/roadmaps/:roadmapId/handoff",
390
- handler: routeHandler((req, _ctx, roadmapStore) => ({
391
- mission: roadmapStore.getMissionPlanningHandoff(paramValue(req.params.roadmapId)),
392
- features: roadmapStore.listFeatureTaskPlanningHandoffs(paramValue(req.params.roadmapId)),
393
- })),
394
- },
395
- {
396
- method: "GET",
397
- path: "/roadmaps/:roadmapId/handoff/mission",
398
- handler: routeHandler((req, _ctx, roadmapStore) => roadmapStore.getMissionPlanningHandoff(paramValue(req.params.roadmapId))),
399
- },
400
- {
401
- method: "GET",
402
- path: "/roadmaps/:roadmapId/milestones/:milestoneId/features/:featureId/handoff/task",
403
- handler: routeHandler((req, _ctx, roadmapStore) => roadmapStore.getRoadmapFeatureHandoff(paramValue(req.params.roadmapId), paramValue(req.params.milestoneId), paramValue(req.params.featureId))),
404
- },
405
- ];
406
- }
407
-
408
- export { SUGGESTION_TIMEOUT_MS };
@@ -1,68 +0,0 @@
1
- import type { CreateAiSessionFactory } from "@fusion/core";
2
- type LegacyCreateFnAgent = (options: {
3
- cwd: string;
4
- systemPrompt: string;
5
- tools?: "coding" | "readonly";
6
- defaultProvider?: string;
7
- defaultModelId?: string;
8
- onThinking?: () => void;
9
- onText?: () => void;
10
- }) => Promise<{
11
- session: {
12
- prompt(text: string): Promise<void>;
13
- state: {
14
- messages: Array<{
15
- role: string;
16
- content?: string | Array<{
17
- type: string;
18
- text: string;
19
- }>;
20
- }>;
21
- };
22
- dispose?: () => void;
23
- };
24
- }>;
25
- export interface GenerateMilestoneSuggestionsInput {
26
- goalPrompt: string;
27
- count?: number;
28
- }
29
- export interface MilestoneSuggestion {
30
- title: string;
31
- description?: string;
32
- }
33
- export declare const MILESTONE_SUGGESTION_SYSTEM_PROMPT = "You are a milestone planning assistant for a product roadmap system.\n\nYour job is to suggest logical milestones that would help achieve a user's roadmap goal.\n\n## Guidelines\n\n1. **Think about phases**: Break the goal into logical phases\n2. **Use clear titles**: Milestone titles should be concise and descriptive\n3. **Add context**: Include a brief description explaining what this milestone encompasses\n4. **Order matters**: List milestones in the order they should be completed\n5. **Realistic scope**: Each milestone should be achievable in 2-4 weeks\n\n## Output Format\n\nRespond with ONLY a valid JSON array of milestone suggestions.";
34
- export declare const SUGGESTION_TIMEOUT_MS = 120000;
35
- export declare function validateSuggestionInput(input: unknown): asserts input is GenerateMilestoneSuggestionsInput;
36
- export declare function generateMilestoneSuggestions(goalPrompt: string, count?: number, rootDir?: string, modelProvider?: string, modelId?: string, createAiSession?: CreateAiSessionFactory): Promise<MilestoneSuggestion[]>;
37
- export interface GenerateFeatureSuggestionsInput {
38
- prompt?: string;
39
- count?: number;
40
- }
41
- export interface FeatureSuggestion {
42
- title: string;
43
- description?: string;
44
- }
45
- export interface FeatureSuggestionContext {
46
- roadmapTitle: string;
47
- roadmapDescription?: string;
48
- milestoneTitle: string;
49
- milestoneDescription?: string;
50
- existingFeatureTitles: string[];
51
- }
52
- export declare const FEATURE_SUGGESTION_SYSTEM_PROMPT = "You are a feature planning assistant for a product roadmap system.";
53
- export declare function validateFeatureSuggestionInput(input: unknown): asserts input is GenerateFeatureSuggestionsInput;
54
- export declare function generateFeatureSuggestions(context: FeatureSuggestionContext, count?: number, prompt?: string, rootDir?: string, modelProvider?: string, modelId?: string, createAiSession?: CreateAiSessionFactory): Promise<FeatureSuggestion[]>;
55
- export declare class ValidationError extends Error {
56
- constructor(message: string);
57
- }
58
- export declare class ParseError extends Error {
59
- constructor(message: string);
60
- }
61
- export declare class ServiceUnavailableError extends Error {
62
- constructor(message: string);
63
- }
64
- export declare function __resetSuggestionState(): void;
65
- export declare function __setCreateFnAgent(mock: LegacyCreateFnAgent | undefined): void;
66
- export declare function __setCreateAiSessionFactory(mock: CreateAiSessionFactory | undefined): void;
67
- export {};
68
- //# sourceMappingURL=roadmap-suggestions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"roadmap-suggestions.d.ts","sourceRoot":"","sources":["roadmap-suggestions.ts"],"names":[],"mappings":"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"}