@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.
- package/README.md +6 -0
- package/dist/bin.js +18646 -15669
- package/dist/client/assets/AgentDetailView-Cv-vgOj3.js +18 -0
- package/dist/client/assets/{AgentsView-BkB9FiMT.js → AgentsView-D6Zi5zfP.js} +4 -4
- package/dist/client/assets/ChatView-CAHjY9uO.js +1 -0
- package/dist/client/assets/{DevServerView-BkvtjZBa.js → DevServerView--_WBvIDQ.js} +1 -1
- package/dist/client/assets/{DirectoryPicker-BK-KbnhP.js → DirectoryPicker-xedtR-Rd.js} +1 -1
- package/dist/client/assets/{DocumentsView-BEg1CQAk.js → DocumentsView-Bg2oaZks.js} +1 -1
- package/dist/client/assets/{EvalsView-Berf9bQm.js → EvalsView-B3uOCXfr.js} +1 -1
- package/dist/client/assets/{ExperimentalAgentOnboardingModal-jcInE50G.js → ExperimentalAgentOnboardingModal-Bx6yXVS5.js} +1 -1
- package/dist/client/assets/{InsightsView-BX5bSF1J.js → InsightsView-Q1zvtF4F.js} +1 -1
- package/dist/client/assets/MemoryView-xcN_eouf.js +2 -0
- package/dist/client/assets/MemoryView-zaXewZzi.css +1 -0
- package/dist/client/assets/{NodesView-DLUOBLf6.js → NodesView-RxXg58_Q.js} +1 -1
- package/dist/client/assets/{PiExtensionsManager-COlJf0Kx.js → PiExtensionsManager-Cc8aAZXg.js} +2 -2
- package/dist/client/assets/PluginManager-BEkyBajl.js +1 -0
- package/dist/client/assets/{ResearchView-BzCcDAS4.css → ResearchView-BEI4ZSGs.css} +1 -1
- package/dist/client/assets/ResearchView-CERNf7sJ.js +1 -0
- package/dist/client/assets/{SettingsModal-yRqM4DV8.js → SettingsModal-B1r0yASu.js} +1 -1
- package/dist/client/assets/SettingsModal-BLsac7CJ.js +31 -0
- package/dist/client/assets/SettingsModal-Cis-4Lot.css +1 -0
- package/dist/client/assets/{SetupWizardModal-uUZk3TKT.js → SetupWizardModal-D1q548_L.js} +1 -1
- package/dist/client/assets/{SkillsView-CP8JX0P_.js → SkillsView-ClLM6u6p.js} +1 -1
- package/dist/client/assets/StashRecoveryView-B_8WIQEo.css +1 -0
- package/dist/client/assets/StashRecoveryView-ze0pEZ5U.js +1 -0
- package/dist/client/assets/{TodoView-DCRIkDZ-.js → TodoView-CTmIfy2M.js} +1 -1
- package/dist/client/assets/{dashboard-view-lR7YYmSC.js → dashboard-view-4xAN3yO5.js} +2 -2
- package/dist/client/assets/{folder-open-DHjELt8-.js → folder-open-BZuKESeq.js} +1 -1
- package/dist/client/assets/index-Bdw6llW6.js +692 -0
- package/dist/client/assets/index-CZGlyJuS.css +1 -0
- package/dist/client/assets/{star-DYesq1AV.js → star-D75YKEq-.js} +1 -1
- package/dist/client/assets/{upload-DTWF3Db5.js → upload-BYYTgWFj.js} +1 -1
- package/dist/client/assets/{users--syrel4l.js → users-RS90Aii3.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/client/version.json +1 -1
- package/dist/droid-cli/package.json +1 -1
- package/dist/extension.js +5640 -3618
- package/dist/pi-claude-cli/package.json +1 -1
- package/dist/plugins/fusion-plugin-cli-printing-press/manifest.json +6 -0
- package/dist/plugins/fusion-plugin-cli-printing-press/package.json +26 -0
- package/dist/plugins/fusion-plugin-cli-printing-press/src/__tests__/manifest.test.ts +20 -0
- package/dist/plugins/fusion-plugin-cli-printing-press/src/index.ts +14 -0
- package/dist/plugins/fusion-plugin-cursor-runtime/bundled.js +9 -11
- package/dist/plugins/fusion-plugin-cursor-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-dependency-graph/bundled.js +30 -0
- package/dist/plugins/fusion-plugin-dependency-graph/package.json +3 -28
- package/dist/plugins/fusion-plugin-droid-runtime/bundled.js +899 -895
- package/dist/plugins/fusion-plugin-droid-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-hermes-runtime/bundled.js +68 -71
- package/dist/plugins/fusion-plugin-hermes-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-openclaw-runtime/bundled.js +47 -50
- package/dist/plugins/fusion-plugin-openclaw-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-paperclip-runtime/bundled.js +155 -109
- package/dist/plugins/fusion-plugin-paperclip-runtime/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/package.json +1 -1
- package/dist/plugins/fusion-plugin-reports/src/index.ts +49 -3
- package/dist/plugins/fusion-plugin-reports/src/report-schema.ts +38 -0
- package/dist/plugins/fusion-plugin-reports/src/store/__tests__/report-schema.test.ts +66 -0
- package/dist/plugins/fusion-plugin-reports/src/store/__tests__/report-store.test.ts +177 -0
- package/dist/plugins/fusion-plugin-reports/src/store/report-store.ts +341 -0
- package/dist/plugins/fusion-plugin-reports/src/store/report-types.ts +77 -0
- package/dist/plugins/fusion-plugin-roadmap/{src/dashboard/RoadmapsView.css → bundled.css} +13 -219
- package/dist/plugins/fusion-plugin-roadmap/bundled.js +29535 -0
- package/dist/plugins/fusion-plugin-roadmap/package.json +4 -41
- package/dist/plugins/fusion-plugin-whatsapp-chat/package.json +1 -1
- package/package.json +2 -3
- package/dist/client/assets/AgentDetailView-gy_5SUj2.js +0 -18
- package/dist/client/assets/ChatView-B_-B8fqu.js +0 -1
- package/dist/client/assets/MemoryView-CKElJY_3.js +0 -2
- package/dist/client/assets/MemoryView-DiajLXby.css +0 -1
- package/dist/client/assets/PluginManager-CfW55BF4.js +0 -1
- package/dist/client/assets/ResearchView-B256Lr8I.js +0 -1
- package/dist/client/assets/SettingsModal-BeA_nQtW.js +0 -31
- package/dist/client/assets/SettingsModal-DzsLquBu.css +0 -1
- package/dist/client/assets/index-CQyVRLOb.js +0 -692
- package/dist/client/assets/index-CxA2Nn0_.css +0 -1
- package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraph.css +0 -58
- package/dist/plugins/fusion-plugin-dependency-graph/src/DependencyGraph.tsx +0 -301
- package/dist/plugins/fusion-plugin-dependency-graph/src/GraphHighlight.css +0 -27
- package/dist/plugins/fusion-plugin-dependency-graph/src/GraphTaskNode.css +0 -157
- package/dist/plugins/fusion-plugin-dependency-graph/src/GraphTaskNode.tsx +0 -126
- package/dist/plugins/fusion-plugin-dependency-graph/src/GraphToolbar.css +0 -35
- package/dist/plugins/fusion-plugin-dependency-graph/src/GraphToolbar.tsx +0 -36
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.highlighting.test.tsx +0 -112
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.persistence.test.tsx +0 -115
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/DependencyGraph.test.tsx +0 -128
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphTaskNode.drag.test.tsx +0 -82
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphTaskNode.test.tsx +0 -307
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/GraphToolbar.test.tsx +0 -60
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/edges.test.tsx +0 -75
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/filtering.test.tsx +0 -62
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/filters.test.ts +0 -78
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/graphPositionStorage.test.ts +0 -95
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/host-integration.test.ts +0 -74
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/index.test.ts +0 -58
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/interactions.test.tsx +0 -121
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/layout.test.ts +0 -70
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/persistence.test.tsx +0 -89
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphData.test.ts +0 -86
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphInteraction.test.ts +0 -167
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useGraphPositions.test.ts +0 -66
- package/dist/plugins/fusion-plugin-dependency-graph/src/__tests__/useNodeDrag.test.ts +0 -81
- package/dist/plugins/fusion-plugin-dependency-graph/src/dashboard-interop.d.ts +0 -35
- package/dist/plugins/fusion-plugin-dependency-graph/src/dashboard-view.tsx +0 -19
- package/dist/plugins/fusion-plugin-dependency-graph/src/edges.tsx +0 -70
- package/dist/plugins/fusion-plugin-dependency-graph/src/filters.ts +0 -8
- package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/__tests__/useDependencyChain.test.ts +0 -53
- package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useDependencyChain.ts +0 -60
- package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useGraphPositions.ts +0 -45
- package/dist/plugins/fusion-plugin-dependency-graph/src/hooks/useNodeDrag.ts +0 -114
- package/dist/plugins/fusion-plugin-dependency-graph/src/index.ts +0 -24
- package/dist/plugins/fusion-plugin-dependency-graph/src/layout.ts +0 -91
- package/dist/plugins/fusion-plugin-dependency-graph/src/styles/drag.css +0 -15
- package/dist/plugins/fusion-plugin-dependency-graph/src/types.ts +0 -21
- package/dist/plugins/fusion-plugin-dependency-graph/src/useGraphData.ts +0 -17
- package/dist/plugins/fusion-plugin-dependency-graph/src/useGraphInteraction.ts +0 -292
- package/dist/plugins/fusion-plugin-dependency-graph/src/utils/graphPositionStorage.ts +0 -65
- package/dist/plugins/fusion-plugin-roadmap/src/__tests__/api-client.test.ts +0 -101
- package/dist/plugins/fusion-plugin-roadmap/src/__tests__/index.test.ts +0 -92
- package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-routes.test.ts +0 -48
- package/dist/plugins/fusion-plugin-roadmap/src/__tests__/roadmap-suggestions.test.ts +0 -31
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/RoadmapsView.tsx +0 -2559
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/RoadmapsView.test.tsx +0 -1144
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/__tests__/useRoadmaps.test.ts +0 -1756
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/api.ts +0 -70
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/test-setup.ts +0 -7
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/types.ts +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useConfirm.ts +0 -8
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useRoadmaps.ts +0 -1188
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard/useViewportMode.ts +0 -20
- package/dist/plugins/fusion-plugin-roadmap/src/dashboard-view.tsx +0 -6
- package/dist/plugins/fusion-plugin-roadmap/src/index.ts +0 -74
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-routes.ts +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-schema.ts +0 -41
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.d.ts +0 -15
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-suggestions.ts +0 -15
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts +0 -283
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.d.ts.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js +0 -21
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.js.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/roadmap-types.ts +0 -310
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts +0 -5
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.d.ts.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js +0 -361
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.js.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-routes.ts +0 -408
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts +0 -68
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.d.ts.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js +0 -300
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.js.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/routes/roadmap-suggestions.ts +0 -381
- package/dist/plugins/fusion-plugin-roadmap/src/server/index.d.ts +0 -3
- package/dist/plugins/fusion-plugin-roadmap/src/server/index.ts +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-handoff.test.ts +0 -445
- package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-ordering.test.ts +0 -334
- package/dist/plugins/fusion-plugin-roadmap/src/store/__tests__/roadmap-store.test.ts +0 -1318
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-handoff.ts +0 -163
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts +0 -37
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.d.ts.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js +0 -188
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.js.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-ordering.ts +0 -311
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts +0 -299
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.d.ts.map +0 -1
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js +0 -765
- package/dist/plugins/fusion-plugin-roadmap/src/store/roadmap-store.js.map +0 -1
- 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":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,KAAK,mBAAmB,GAAG,CAAC,OAAO,EAAE;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,KAAK,OAAO,CAAC;IACZ,OAAO,EAAE;QACP,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,EAAE;YAAE,QAAQ,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAC,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;QACvG,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,WAAW,iCAAiC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,kCAAkC,6oBAcgB,CAAC;AAGhE,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAM7C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,iCAAiC,CAiB1G;AAyHD,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAiC,EACxC,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,sBAAsB,GACvC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmDhC;AAED,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,eAAO,MAAM,gCAAgC,uEAAuE,CAAC;AAIrH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,+BAA+B,CAa/G;AAmBD,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,wBAAwB,EACjC,KAAK,GAAE,MAAiC,EACxC,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,sBAAsB,GACvC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA8B9B;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,GAAG,IAAI,CAM9E;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,GAAG,IAAI,CAE1F"}
|