@runfusion/fusion 0.22.0 → 0.24.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 (206) hide show
  1. package/dist/bin.js +30071 -20735
  2. package/dist/client/assets/AgentDetailView-BwJaLqZh.css +1 -0
  3. package/dist/client/assets/AgentDetailView-gy_5SUj2.js +18 -0
  4. package/dist/client/assets/AgentsView-BkB9FiMT.js +29 -0
  5. package/dist/client/assets/AgentsView-CV3vm7Qk.css +1 -0
  6. package/dist/client/assets/ChatView-B_-B8fqu.js +1 -0
  7. package/dist/client/assets/ChatView-DwJAd5G1.css +1 -0
  8. package/dist/client/assets/{DevServerView-l8RCyL2k.js → DevServerView-BkvtjZBa.js} +1 -1
  9. package/dist/client/assets/{DirectoryPicker-CS1dwqcC.js → DirectoryPicker-BK-KbnhP.js} +1 -1
  10. package/dist/client/assets/{DocumentsView-DmthQWDZ.js → DocumentsView-BEg1CQAk.js} +1 -1
  11. package/dist/client/assets/{DocumentsView-BrhyOdeE.css → DocumentsView-gv4zG3aT.css} +1 -1
  12. package/dist/client/assets/EvalsView-Berf9bQm.js +1 -0
  13. package/dist/client/assets/EvalsView-CUNJ1TLc.css +1 -0
  14. package/dist/client/assets/{agentSkills-DDHJnrkn.css → ExperimentalAgentOnboardingModal-B-APN_lM.css} +1 -1
  15. package/dist/client/assets/ExperimentalAgentOnboardingModal-jcInE50G.js +499 -0
  16. package/dist/client/assets/InsightsView-B0J4mhzV.css +1 -0
  17. package/dist/client/assets/InsightsView-BX5bSF1J.js +11 -0
  18. package/dist/client/assets/{MemoryView-CPwlKnUI.js → MemoryView-CKElJY_3.js} +2 -2
  19. package/dist/client/assets/NodesView-DLUOBLf6.js +14 -0
  20. package/dist/client/assets/NodesView-DT4pXowv.css +1 -0
  21. package/dist/client/assets/{PiExtensionsManager-j8rPXqmB.js → PiExtensionsManager-COlJf0Kx.js} +2 -2
  22. package/dist/client/assets/PluginManager-CfW55BF4.js +1 -0
  23. package/dist/client/assets/PluginManager-DtRQXia5.css +1 -0
  24. package/dist/client/assets/{ResearchView-D9DNJYDq.js → ResearchView-B256Lr8I.js} +1 -1
  25. package/dist/client/assets/SettingsModal-BeA_nQtW.js +31 -0
  26. package/dist/client/assets/SettingsModal-DzsLquBu.css +1 -0
  27. package/dist/client/assets/{SettingsModal-fxvTFLtR.js → SettingsModal-yRqM4DV8.js} +1 -1
  28. package/dist/client/assets/SetupWizardModal-uUZk3TKT.js +1 -0
  29. package/dist/client/assets/{SkillsView-Ddf0YL8z.js → SkillsView-CP8JX0P_.js} +1 -1
  30. package/dist/client/assets/TodoView-Cx9cVhq7.css +1 -0
  31. package/dist/client/assets/TodoView-DCRIkDZ-.js +6 -0
  32. package/dist/client/assets/createLucideIcon-BazL2hk5.js +21 -0
  33. package/dist/client/assets/dashboard-view-BkTMSZYn.css +1 -0
  34. package/dist/client/assets/dashboard-view-CyWN-d02.js +63 -0
  35. package/dist/client/assets/dashboard-view-lR7YYmSC.js +21 -0
  36. package/dist/client/assets/{folder-open-BiJpmnaT.js → folder-open-DHjELt8-.js} +1 -1
  37. package/dist/client/assets/index-CQyVRLOb.js +692 -0
  38. package/dist/client/assets/index-CxA2Nn0_.css +1 -0
  39. package/dist/client/assets/projectDetection-G3XuxD2X.js +1 -0
  40. package/dist/client/assets/{star-BwRZmiuZ.js → star-DYesq1AV.js} +1 -1
  41. package/dist/client/assets/{upload-D4NwZhPp.js → upload-DTWF3Db5.js} +1 -1
  42. package/dist/client/assets/{users-DNISDtI1.js → users--syrel4l.js} +1 -1
  43. package/dist/client/index.html +12 -20
  44. package/dist/client/theme-data.css +106 -0
  45. package/dist/client/version.json +1 -1
  46. package/dist/droid-cli/package.json +1 -1
  47. package/dist/extension.js +17072 -9627
  48. package/dist/pi-claude-cli/package.json +1 -1
  49. package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +218 -0
  50. package/dist/plugins/fusion-plugin-cursor-runtime/manifest.json +6 -0
  51. package/dist/plugins/fusion-plugin-cursor-runtime/package.json +11 -0
  52. package/dist/plugins/fusion-plugin-dependency-graph/manifest.json +1 -1
  53. package/dist/plugins/fusion-plugin-dependency-graph/package.json +6 -4
  54. package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraph.css +58 -0
  55. package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraph.tsx +301 -0
  56. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphHighlight.css +27 -0
  57. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphTaskNode.css +157 -0
  58. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphTaskNode.tsx +126 -0
  59. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphToolbar.css +35 -0
  60. package/dist/plugins/fusion-plugin-dependency-graph/src/GraphToolbar.tsx +36 -0
  61. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.highlighting.test.tsx +112 -0
  62. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.persistence.test.tsx +115 -0
  63. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.test.tsx +128 -0
  64. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphTaskNode.drag.test.tsx +82 -0
  65. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphTaskNode.test.tsx +307 -0
  66. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphToolbar.test.tsx +60 -0
  67. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/edges.test.tsx +75 -0
  68. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/filtering.test.tsx +62 -0
  69. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/filters.test.ts +78 -0
  70. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/graphPositionStorage.test.ts +95 -0
  71. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/host-integration.test.ts +74 -0
  72. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/index.test.ts +58 -0
  73. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/interactions.test.tsx +121 -0
  74. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/layout.test.ts +70 -0
  75. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/persistence.test.tsx +89 -0
  76. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphData.test.ts +86 -0
  77. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphInteraction.test.ts +167 -0
  78. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphPositions.test.ts +66 -0
  79. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useNodeDrag.test.ts +81 -0
  80. package/dist/plugins/fusion-plugin-dependency-graph/src/dashboard-interop.d.ts +35 -0
  81. package/dist/plugins/fusion-plugin-dependency-graph/src/dashboard-view.tsx +19 -0
  82. package/dist/plugins/fusion-plugin-dependency-graph/src/edges.tsx +70 -0
  83. package/dist/plugins/fusion-plugin-dependency-graph/src/filters.ts +8 -0
  84. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/__tests__/useDependencyChain.test.ts +53 -0
  85. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useDependencyChain.ts +60 -0
  86. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useGraphPositions.ts +45 -0
  87. package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useNodeDrag.ts +114 -0
  88. package/dist/plugins/fusion-plugin-dependency-graph/src/index.ts +1 -2
  89. package/dist/plugins/fusion-plugin-dependency-graph/src/layout.ts +91 -0
  90. package/dist/plugins/fusion-plugin-dependency-graph/src/styles/drag.css +15 -0
  91. package/dist/plugins/fusion-plugin-dependency-graph/src/types.ts +21 -0
  92. package/dist/plugins/fusion-plugin-dependency-graph/src/useGraphData.ts +17 -0
  93. package/dist/plugins/fusion-plugin-dependency-graph/src/useGraphInteraction.ts +292 -0
  94. package/dist/plugins/fusion-plugin-dependency-graph/src/utils/graphPositionStorage.ts +65 -0
  95. package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +136680 -0
  96. package/dist/plugins/fusion-plugin-droid-runtime/manifest.json +13 -0
  97. package/dist/plugins/fusion-plugin-droid-runtime/mcp-schema-server.cjs +49 -0
  98. package/dist/plugins/fusion-plugin-droid-runtime/package.json +11 -0
  99. package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +176 -7
  100. package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
  101. package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +93 -6
  102. package/dist/plugins/fusion-plugin-openclaw-runtime/mcp-schema-server.cjs +59 -0
  103. package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
  104. package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
  105. package/dist/plugins/fusion-plugin-reports/manifest.json +33 -0
  106. package/dist/plugins/fusion-plugin-reports/package.json +26 -0
  107. package/dist/plugins/fusion-plugin-reports/src/__tests__/manifest.test.ts +51 -0
  108. package/dist/plugins/fusion-plugin-reports/src/__tests__/review-panel.test.ts +166 -0
  109. package/dist/plugins/fusion-plugin-reports/src/__tests__/settings.test.ts +157 -0
  110. package/dist/plugins/fusion-plugin-reports/src/index.ts +41 -0
  111. package/dist/plugins/fusion-plugin-reports/src/review-panel.ts +294 -0
  112. package/dist/plugins/fusion-plugin-reports/src/review-types.ts +75 -0
  113. package/dist/plugins/fusion-plugin-reports/src/settings.ts +105 -0
  114. package/dist/plugins/fusion-plugin-roadmap/manifest.json +16 -0
  115. package/dist/plugins/fusion-plugin-roadmap/package.json +48 -0
  116. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/api-client.test.ts +101 -0
  117. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/index.test.ts +92 -0
  118. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-routes.test.ts +48 -0
  119. package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-suggestions.test.ts +31 -0
  120. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/RoadmapsView.css +1299 -0
  121. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/RoadmapsView.tsx +2559 -0
  122. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/RoadmapsView.test.tsx +1144 -0
  123. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/useRoadmaps.test.ts +1756 -0
  124. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/api.ts +70 -0
  125. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/test-setup.ts +7 -0
  126. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/types.ts +1 -0
  127. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useConfirm.ts +8 -0
  128. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useRoadmaps.ts +1188 -0
  129. package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useViewportMode.ts +20 -0
  130. package/dist/plugins/fusion-plugin-roadmap/src/dashboard-view.tsx +6 -0
  131. package/dist/plugins/fusion-plugin-roadmap/src/index.ts +74 -0
  132. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-routes.ts +1 -0
  133. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-schema.ts +41 -0
  134. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.d.ts +15 -0
  135. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.ts +15 -0
  136. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts +283 -0
  137. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts.map +1 -0
  138. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js +21 -0
  139. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js.map +1 -0
  140. package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.ts +310 -0
  141. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts +5 -0
  142. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts.map +1 -0
  143. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js +361 -0
  144. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js.map +1 -0
  145. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.ts +408 -0
  146. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts +68 -0
  147. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts.map +1 -0
  148. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js +300 -0
  149. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js.map +1 -0
  150. package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.ts +381 -0
  151. package/dist/plugins/fusion-plugin-roadmap/src/server/index.d.ts +3 -0
  152. package/dist/plugins/fusion-plugin-roadmap/src/server/index.ts +1 -0
  153. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-handoff.test.ts +445 -0
  154. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-ordering.test.ts +334 -0
  155. package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts +1318 -0
  156. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-handoff.ts +163 -0
  157. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts +37 -0
  158. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts.map +1 -0
  159. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js +188 -0
  160. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js.map +1 -0
  161. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.ts +311 -0
  162. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts +299 -0
  163. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts.map +1 -0
  164. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js +765 -0
  165. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js.map +1 -0
  166. package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.ts +1001 -0
  167. package/dist/plugins/fusion-plugin-whatsapp-chat/manifest.json +8 -0
  168. package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +34 -0
  169. package/dist/plugins/fusion-plugin-whatsapp-chat/src/__tests__/auth-state.test.ts +99 -0
  170. package/dist/plugins/fusion-plugin-whatsapp-chat/src/__tests__/connection.test.ts +145 -0
  171. package/dist/plugins/fusion-plugin-whatsapp-chat/src/__tests__/index.test.ts +216 -0
  172. package/dist/plugins/fusion-plugin-whatsapp-chat/src/__tests__/reply.test.ts +52 -0
  173. package/dist/plugins/fusion-plugin-whatsapp-chat/src/auth-state.ts +89 -0
  174. package/dist/plugins/fusion-plugin-whatsapp-chat/src/connection.ts +253 -0
  175. package/dist/plugins/fusion-plugin-whatsapp-chat/src/index.ts +262 -0
  176. package/dist/plugins/fusion-plugin-whatsapp-chat/src/qrcode.d.ts +1 -0
  177. package/dist/plugins/fusion-plugin-whatsapp-chat/src/reply.ts +37 -0
  178. package/package.json +2 -2
  179. package/skill/fusion/SKILL.md +2 -2
  180. package/skill/fusion/references/engine-tools.md +8 -2
  181. package/skill/fusion/references/extension-tools.md +39 -0
  182. package/skill/fusion/references/fusion-capabilities.md +3 -0
  183. package/dist/client/assets/AgentDetailView-BKKpbp1S.js +0 -18
  184. package/dist/client/assets/AgentDetailView-CeO_1MK7.css +0 -1
  185. package/dist/client/assets/AgentsView-BRXFmrcJ.js +0 -527
  186. package/dist/client/assets/AgentsView-Bs03ptrd.css +0 -1
  187. package/dist/client/assets/ChatView-D7L2e_qu.js +0 -1
  188. package/dist/client/assets/InsightsView-AWo5o_81.css +0 -1
  189. package/dist/client/assets/InsightsView-DvXpMKmH.js +0 -11
  190. package/dist/client/assets/NodesView-BLlfUfsy.js +0 -14
  191. package/dist/client/assets/NodesView-fXqDk9ur.css +0 -1
  192. package/dist/client/assets/PluginManager-DA_T0GHn.css +0 -1
  193. package/dist/client/assets/PluginManager-pW6RMz5z.js +0 -1
  194. package/dist/client/assets/RoadmapsView-Djc_X35v.js +0 -6
  195. package/dist/client/assets/SettingsModal-BWe0KrGY.css +0 -1
  196. package/dist/client/assets/SettingsModal-WGCF_pk8.js +0 -31
  197. package/dist/client/assets/SetupWizardModal-tG_MF_nA.js +0 -1
  198. package/dist/client/assets/agentSkills-EwIwBlG8.js +0 -1
  199. package/dist/client/assets/index-D6ebxTPF.css +0 -1
  200. package/dist/client/assets/index-DYDLmOcK.js +0 -694
  201. package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraphView.css +0 -132
  202. package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraphView.tsx +0 -428
  203. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraphView.test.tsx +0 -261
  204. package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/storage.test.ts +0 -31
  205. package/dist/plugins/fusion-plugin-dependency-graph/src/storage.ts +0 -23
  206. /package/dist/client/assets/{RoadmapsView-DdGlfuu-.css → dashboard-view-DdGlfuu-.css} +0 -0
@@ -0,0 +1,20 @@
1
+ import { useEffect, useState } from "react";
2
+
3
+ export type ViewportMode = "mobile" | "tablet" | "desktop";
4
+
5
+ function getViewportMode(): ViewportMode {
6
+ if (typeof window === "undefined") return "desktop";
7
+ if (window.matchMedia("(max-width: 768px)").matches) return "mobile";
8
+ if (window.matchMedia("(min-width: 769px) and (max-width: 1024px)").matches) return "tablet";
9
+ return "desktop";
10
+ }
11
+
12
+ export function useViewportMode(): ViewportMode {
13
+ const [mode, setMode] = useState<ViewportMode>(() => getViewportMode());
14
+ useEffect(() => {
15
+ const onResize = () => setMode(getViewportMode());
16
+ window.addEventListener("resize", onResize);
17
+ return () => window.removeEventListener("resize", onResize);
18
+ }, []);
19
+ return mode;
20
+ }
@@ -0,0 +1,6 @@
1
+ import type { PluginDashboardViewContext } from "@fusion/dashboard/app/plugins/types";
2
+ import { RoadmapsView } from "./dashboard/RoadmapsView.js";
3
+
4
+ export function RoadmapDashboardView({ context }: { context?: PluginDashboardViewContext }) {
5
+ return <RoadmapsView projectId={context?.projectId} addToast={context?.addToast ?? (() => undefined)} />;
6
+ }
@@ -0,0 +1,74 @@
1
+ import { definePlugin } from "@fusion/plugin-sdk";
2
+ import { createRoadmapPluginRoutes } from "./roadmap-routes.js";
3
+ import { ensureRoadmapSchema } from "./roadmap-schema.js";
4
+
5
+ const plugin = definePlugin({
6
+ manifest: {
7
+ id: "roadmap-planner",
8
+ name: "Roadmaps",
9
+ version: "0.1.0",
10
+ description: "Standalone roadmap planning plugin",
11
+ },
12
+ state: "installed",
13
+ hooks: {
14
+ onSchemaInit: ensureRoadmapSchema,
15
+ },
16
+ routes: createRoadmapPluginRoutes(),
17
+ dashboardViews: [
18
+ {
19
+ viewId: "roadmaps",
20
+ label: "Roadmaps",
21
+ componentPath: "./dashboard-view",
22
+ icon: "Map",
23
+ placement: "primary",
24
+ order: 30,
25
+ },
26
+ ],
27
+ });
28
+
29
+ export default plugin;
30
+
31
+ export type {
32
+ Roadmap,
33
+ RoadmapMilestone,
34
+ RoadmapFeature,
35
+ RoadmapCreateInput,
36
+ RoadmapUpdateInput,
37
+ RoadmapMilestoneCreateInput,
38
+ RoadmapMilestoneUpdateInput,
39
+ RoadmapFeatureCreateInput,
40
+ RoadmapFeatureUpdateInput,
41
+ RoadmapMilestoneReorderInput,
42
+ RoadmapFeatureReorderInput,
43
+ RoadmapFeatureMoveInput,
44
+ RoadmapFeatureMoveResult,
45
+ RoadmapMilestoneWithFeatures,
46
+ RoadmapWithHierarchy,
47
+ RoadmapExportBundle,
48
+ RoadmapFeatureSourceRef,
49
+ RoadmapFeatureTaskPlanningHandoff,
50
+ RoadmapMissionPlanningMilestoneHandoff,
51
+ RoadmapMissionPlanningHandoff,
52
+ } from "./roadmap-types.js";
53
+
54
+ export {
55
+ normalizeRoadmapMilestoneOrder,
56
+ applyRoadmapMilestoneReorder,
57
+ normalizeRoadmapFeatureOrder,
58
+ applyRoadmapFeatureReorder,
59
+ moveRoadmapFeature,
60
+ } from "./store/roadmap-ordering.js";
61
+
62
+ export {
63
+ mapFeatureToTaskHandoff,
64
+ mapRoadmapToMissionHandoff,
65
+ mapRoadmapWithHierarchyToMissionHandoff,
66
+ mapAllFeaturesToTaskHandoffs,
67
+ } from "./store/roadmap-handoff.js";
68
+
69
+ export { RoadmapStore } from "./store/roadmap-store.js";
70
+ export type { RoadmapStoreEvents } from "./store/roadmap-store.js";
71
+
72
+ export { ensureRoadmapSchema } from "./roadmap-schema.js";
73
+ export { RoadmapDashboardView } from "./dashboard-view.js";
74
+ export * from "./server/index.js";
@@ -0,0 +1 @@
1
+ export { createRoadmapPluginRoutes, SUGGESTION_TIMEOUT_MS } from "./routes/roadmap-routes.js";
@@ -0,0 +1,41 @@
1
+ import type { Database } from "@fusion/core";
2
+
3
+ export function ensureRoadmapSchema(db: Database): void {
4
+ db.exec(`
5
+ CREATE TABLE IF NOT EXISTS roadmaps (
6
+ id TEXT PRIMARY KEY,
7
+ title TEXT NOT NULL,
8
+ description TEXT,
9
+ createdAt TEXT NOT NULL,
10
+ updatedAt TEXT NOT NULL
11
+ );
12
+
13
+ CREATE TABLE IF NOT EXISTS roadmap_milestones (
14
+ id TEXT PRIMARY KEY,
15
+ roadmapId TEXT NOT NULL,
16
+ title TEXT NOT NULL,
17
+ description TEXT,
18
+ orderIndex INTEGER NOT NULL,
19
+ createdAt TEXT NOT NULL,
20
+ updatedAt TEXT NOT NULL,
21
+ FOREIGN KEY (roadmapId) REFERENCES roadmaps(id) ON DELETE CASCADE
22
+ );
23
+
24
+ CREATE TABLE IF NOT EXISTS roadmap_features (
25
+ id TEXT PRIMARY KEY,
26
+ milestoneId TEXT NOT NULL,
27
+ title TEXT NOT NULL,
28
+ description TEXT,
29
+ orderIndex INTEGER NOT NULL,
30
+ createdAt TEXT NOT NULL,
31
+ updatedAt TEXT NOT NULL,
32
+ FOREIGN KEY (milestoneId) REFERENCES roadmap_milestones(id) ON DELETE CASCADE
33
+ );
34
+
35
+ CREATE INDEX IF NOT EXISTS idxRoadmapMilestonesRoadmapOrder
36
+ ON roadmap_milestones(roadmapId, orderIndex, createdAt, id);
37
+
38
+ CREATE INDEX IF NOT EXISTS idxRoadmapFeaturesMilestoneOrder
39
+ ON roadmap_features(milestoneId, orderIndex, createdAt, id);
40
+ `);
41
+ }
@@ -0,0 +1,15 @@
1
+ export {
2
+ FEATURE_SUGGESTION_SYSTEM_PROMPT,
3
+ MILESTONE_SUGGESTION_SYSTEM_PROMPT,
4
+ ParseError,
5
+ ServiceUnavailableError,
6
+ SUGGESTION_TIMEOUT_MS,
7
+ ValidationError,
8
+ __resetSuggestionState,
9
+ __setCreateAiSessionFactory,
10
+ __setCreateFnAgent,
11
+ generateFeatureSuggestions,
12
+ generateMilestoneSuggestions,
13
+ validateFeatureSuggestionInput,
14
+ validateSuggestionInput,
15
+ } from "./routes/roadmap-suggestions.js";
@@ -0,0 +1,15 @@
1
+ export {
2
+ FEATURE_SUGGESTION_SYSTEM_PROMPT,
3
+ MILESTONE_SUGGESTION_SYSTEM_PROMPT,
4
+ ParseError,
5
+ ServiceUnavailableError,
6
+ SUGGESTION_TIMEOUT_MS,
7
+ ValidationError,
8
+ __resetSuggestionState,
9
+ __setCreateAiSessionFactory,
10
+ __setCreateFnAgent,
11
+ generateFeatureSuggestions,
12
+ generateMilestoneSuggestions,
13
+ validateFeatureSuggestionInput,
14
+ validateSuggestionInput,
15
+ } from "./routes/roadmap-suggestions.js";
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Standalone roadmap planning types.
3
+ *
4
+ * This model is intentionally separate from the mission hierarchy so roadmap
5
+ * work can evolve independently of `MissionStore`/`MissionManager`.
6
+ *
7
+ * Core ordering invariants:
8
+ * - milestone ordering is scoped to a single roadmap and must be contiguous + 0-based
9
+ * - feature ordering is scoped to a single milestone and must be contiguous + 0-based
10
+ * - cross-milestone feature moves must renumber both the source and target
11
+ * milestone deterministically after the move
12
+ * - whenever stored order data is incomplete or conflicting, consumers should
13
+ * repair it using a stable tie-breaker (`createdAt`, then `id`, both ASC)
14
+ *
15
+ * These contracts are persistence-agnostic and UI-agnostic. They define the
16
+ * canonical domain surface that downstream storage, API, and dashboard work use.
17
+ *
18
+ * @module roadmap-types
19
+ */
20
+ /**
21
+ * A standalone roadmap container.
22
+ *
23
+ * Roadmaps do not reuse mission lifecycle or mission status concepts. They are
24
+ * lightweight planning artifacts that own ordered milestones.
25
+ */
26
+ export interface Roadmap {
27
+ /** Unique identifier (for example `RM-01HXYZ...`) */
28
+ id: string;
29
+ /** Display title shown in roadmap lists and detail views */
30
+ title: string;
31
+ /** Optional long-form planning context for the roadmap */
32
+ description?: string;
33
+ /** ISO-8601 timestamp of creation */
34
+ createdAt: string;
35
+ /** ISO-8601 timestamp of last update */
36
+ updatedAt: string;
37
+ }
38
+ /**
39
+ * A milestone within a roadmap.
40
+ *
41
+ * `orderIndex` is the canonical persisted ordering field. It is always scoped to
42
+ * the parent roadmap and must remain contiguous + 0-based after reorder flows.
43
+ */
44
+ export interface RoadmapMilestone {
45
+ /** Unique identifier (for example `RMS-01HXYZ...`) */
46
+ id: string;
47
+ /** Parent roadmap ID */
48
+ roadmapId: string;
49
+ /** Display title for the milestone */
50
+ title: string;
51
+ /** Optional description of the milestone's goals */
52
+ description?: string;
53
+ /** 0-based contiguous ordering within the roadmap */
54
+ orderIndex: number;
55
+ /** ISO-8601 timestamp of creation */
56
+ createdAt: string;
57
+ /** ISO-8601 timestamp of last update */
58
+ updatedAt: string;
59
+ }
60
+ /**
61
+ * A feature within a roadmap milestone.
62
+ *
63
+ * `orderIndex` is scoped to the parent milestone. Cross-milestone moves must
64
+ * update `milestoneId` and then normalize both affected milestone lists back to
65
+ * contiguous 0-based order.
66
+ */
67
+ export interface RoadmapFeature {
68
+ /** Unique identifier (for example `RF-01HXYZ...`) */
69
+ id: string;
70
+ /** Parent milestone ID */
71
+ milestoneId: string;
72
+ /** Display title for the feature */
73
+ title: string;
74
+ /** Optional description of the feature's intent */
75
+ description?: string;
76
+ /** 0-based contiguous ordering within the parent milestone */
77
+ orderIndex: number;
78
+ /** ISO-8601 timestamp of creation */
79
+ createdAt: string;
80
+ /** ISO-8601 timestamp of last update */
81
+ updatedAt: string;
82
+ }
83
+ /** Input for creating a roadmap. */
84
+ export interface RoadmapCreateInput {
85
+ /** Display title of the roadmap (required) */
86
+ title: string;
87
+ /** Optional roadmap description */
88
+ description?: string;
89
+ }
90
+ /** Input for updating roadmap metadata. Ordering is handled by dedicated move/reorder DTOs. */
91
+ export interface RoadmapUpdateInput {
92
+ /** Updated display title */
93
+ title?: string;
94
+ /** Updated roadmap description */
95
+ description?: string;
96
+ }
97
+ /** Input for creating a milestone inside a roadmap. */
98
+ export interface RoadmapMilestoneCreateInput {
99
+ /** Display title of the milestone (required) */
100
+ title: string;
101
+ /** Optional milestone description */
102
+ description?: string;
103
+ }
104
+ /** Input for updating milestone metadata. Ordering is handled separately. */
105
+ export interface RoadmapMilestoneUpdateInput {
106
+ /** Updated milestone title */
107
+ title?: string;
108
+ /** Updated milestone description */
109
+ description?: string;
110
+ }
111
+ /** Input for creating a feature inside a milestone. */
112
+ export interface RoadmapFeatureCreateInput {
113
+ /** Display title of the feature (required) */
114
+ title: string;
115
+ /** Optional feature description */
116
+ description?: string;
117
+ }
118
+ /** Input for updating feature metadata. Ordering is handled separately. */
119
+ export interface RoadmapFeatureUpdateInput {
120
+ /** Updated feature title */
121
+ title?: string;
122
+ /** Updated feature description */
123
+ description?: string;
124
+ }
125
+ /**
126
+ * Explicit reorder payload for milestones within a roadmap.
127
+ *
128
+ * `orderedMilestoneIds` must contain the full set of milestone IDs for the
129
+ * roadmap exactly once. Consumers should reject partial or duplicate lists.
130
+ */
131
+ export interface RoadmapMilestoneReorderInput {
132
+ /** Roadmap whose milestone sequence is being rewritten */
133
+ roadmapId: string;
134
+ /** Complete milestone ID sequence in final order */
135
+ orderedMilestoneIds: string[];
136
+ }
137
+ /**
138
+ * Explicit reorder payload for features within a single milestone.
139
+ *
140
+ * `orderedFeatureIds` must contain the full set of feature IDs for the milestone
141
+ * exactly once. The resulting `orderIndex` values must be normalized to 0-based
142
+ * contiguous order.
143
+ */
144
+ export interface RoadmapFeatureReorderInput {
145
+ /** Parent roadmap for integrity validation */
146
+ roadmapId: string;
147
+ /** Milestone whose internal feature ordering is being rewritten */
148
+ milestoneId: string;
149
+ /** Complete feature ID sequence in final order */
150
+ orderedFeatureIds: string[];
151
+ }
152
+ /**
153
+ * Explicit move payload for relocating a feature, including cross-milestone moves.
154
+ *
155
+ * `targetOrderIndex` is the desired insertion position in the destination
156
+ * milestone before final normalization. Consumers should clamp out-of-range
157
+ * values and must deterministically renumber both source and destination
158
+ * milestones after the move.
159
+ */
160
+ export interface RoadmapFeatureMoveInput {
161
+ /** Parent roadmap for integrity validation */
162
+ roadmapId: string;
163
+ /** Feature being moved */
164
+ featureId: string;
165
+ /** Current milestone that owns the feature */
166
+ fromMilestoneId: string;
167
+ /** Destination milestone after the move */
168
+ toMilestoneId: string;
169
+ /** Requested insertion index in the destination milestone */
170
+ targetOrderIndex: number;
171
+ }
172
+ /**
173
+ * Result of a feature move operation after deterministic renumbering.
174
+ *
175
+ * `affectedFeatures` contains the canonical post-move feature records for the
176
+ * source and target milestones. When a feature is moved within the same
177
+ * milestone, `sourceMilestoneFeatures` and `targetMilestoneFeatures` will be
178
+ * the same normalized list.
179
+ */
180
+ export interface RoadmapFeatureMoveResult {
181
+ /** The moved feature after `milestoneId` and `orderIndex` updates */
182
+ movedFeature: RoadmapFeature;
183
+ /** Canonical post-move features for the affected milestone scope */
184
+ affectedFeatures: RoadmapFeature[];
185
+ /** Canonical feature list for the source milestone after the move */
186
+ sourceMilestoneFeatures: RoadmapFeature[];
187
+ /** Canonical feature list for the destination milestone after the move */
188
+ targetMilestoneFeatures: RoadmapFeature[];
189
+ }
190
+ /** Milestone with all of its ordered features loaded. */
191
+ export interface RoadmapMilestoneWithFeatures extends RoadmapMilestone {
192
+ /** Features belonging to this milestone */
193
+ features: RoadmapFeature[];
194
+ }
195
+ /** Full roadmap hierarchy loaded in roadmap → milestone → feature order. */
196
+ export interface RoadmapWithHierarchy extends Roadmap {
197
+ /** Ordered milestones with ordered features */
198
+ milestones: RoadmapMilestoneWithFeatures[];
199
+ }
200
+ /**
201
+ * Flat export payload for persistence, APIs, import/export, and sync jobs.
202
+ *
203
+ * This shape intentionally keeps entities separate so downstream persistence
204
+ * layers can upsert by table/collection without first denormalizing a nested
205
+ * hierarchy.
206
+ */
207
+ export interface RoadmapExportBundle {
208
+ /** Roadmap being exported */
209
+ roadmap: Roadmap;
210
+ /** Ordered milestones for the roadmap */
211
+ milestones: RoadmapMilestone[];
212
+ /** Ordered features for the roadmap's milestones */
213
+ features: RoadmapFeature[];
214
+ }
215
+ /**
216
+ * Source metadata carried forward when a roadmap feature is converted into a
217
+ * task-planning input or other downstream artifact.
218
+ */
219
+ export interface RoadmapFeatureSourceRef {
220
+ /** Source roadmap ID */
221
+ roadmapId: string;
222
+ /** Source milestone ID */
223
+ milestoneId: string;
224
+ /** Source feature ID */
225
+ featureId: string;
226
+ /** Human-readable roadmap title for prompt context */
227
+ roadmapTitle: string;
228
+ /** Human-readable milestone title for prompt context */
229
+ milestoneTitle: string;
230
+ /** Canonical milestone order at handoff time */
231
+ milestoneOrderIndex: number;
232
+ /** Canonical feature order at handoff time */
233
+ featureOrderIndex: number;
234
+ }
235
+ /**
236
+ * Handoff payload for converting a single roadmap feature into task planning
237
+ * flows without coupling the task system to roadmap persistence details.
238
+ */
239
+ export interface RoadmapFeatureTaskPlanningHandoff {
240
+ /** Source lineage and ordering context */
241
+ source: RoadmapFeatureSourceRef;
242
+ /** Title to seed the downstream task or planning prompt */
243
+ title: string;
244
+ /** Optional description to seed the downstream task or planning prompt */
245
+ description?: string;
246
+ }
247
+ /** Source-preserving milestone payload used for mission conversion handoffs. */
248
+ export interface RoadmapMissionPlanningMilestoneHandoff {
249
+ /** Source roadmap milestone ID */
250
+ sourceMilestoneId: string;
251
+ /** Canonical milestone title */
252
+ title: string;
253
+ /** Optional milestone description */
254
+ description?: string;
255
+ /** Canonical milestone ordering within the roadmap */
256
+ orderIndex: number;
257
+ /** Ordered roadmap features that belong to this milestone */
258
+ features: Array<{
259
+ /** Source roadmap feature ID */
260
+ sourceFeatureId: string;
261
+ /** Canonical feature title */
262
+ title: string;
263
+ /** Optional feature description */
264
+ description?: string;
265
+ /** Canonical feature ordering within the milestone */
266
+ orderIndex: number;
267
+ }>;
268
+ }
269
+ /**
270
+ * Handoff payload for converting a standalone roadmap into mission planning
271
+ * structures while preserving source IDs and deterministic order.
272
+ */
273
+ export interface RoadmapMissionPlanningHandoff {
274
+ /** Source roadmap ID */
275
+ sourceRoadmapId: string;
276
+ /** Canonical roadmap title */
277
+ title: string;
278
+ /** Optional roadmap description */
279
+ description?: string;
280
+ /** Ordered milestone breakdown captured at handoff time */
281
+ milestones: RoadmapMissionPlanningMilestoneHandoff[];
282
+ }
283
+ //# sourceMappingURL=roadmap-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap-types.d.ts","sourceRoot":"","sources":["roadmap-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Standalone roadmap planning types.
3
+ *
4
+ * This model is intentionally separate from the mission hierarchy so roadmap
5
+ * work can evolve independently of `MissionStore`/`MissionManager`.
6
+ *
7
+ * Core ordering invariants:
8
+ * - milestone ordering is scoped to a single roadmap and must be contiguous + 0-based
9
+ * - feature ordering is scoped to a single milestone and must be contiguous + 0-based
10
+ * - cross-milestone feature moves must renumber both the source and target
11
+ * milestone deterministically after the move
12
+ * - whenever stored order data is incomplete or conflicting, consumers should
13
+ * repair it using a stable tie-breaker (`createdAt`, then `id`, both ASC)
14
+ *
15
+ * These contracts are persistence-agnostic and UI-agnostic. They define the
16
+ * canonical domain surface that downstream storage, API, and dashboard work use.
17
+ *
18
+ * @module roadmap-types
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=roadmap-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roadmap-types.js","sourceRoot":"","sources":["roadmap-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}