@superblocksteam/vite-plugin-file-sync 2.0.18-next.2 → 2.0.18-next.21
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/dist/ai-service/app-interface/source-tracker.d.ts +9 -2
- package/dist/ai-service/app-interface/source-tracker.d.ts.map +1 -1
- package/dist/ai-service/app-interface/source-tracker.js +22 -4
- package/dist/ai-service/app-interface/source-tracker.js.map +1 -1
- package/dist/ai-service/artifacts/bolt.js +4 -4
- package/dist/ai-service/artifacts/bolt.js.map +1 -1
- package/dist/ai-service/context/app-context.d.ts +37 -0
- package/dist/ai-service/context/app-context.d.ts.map +1 -0
- package/dist/ai-service/context/app-context.js +205 -0
- package/dist/ai-service/context/app-context.js.map +1 -0
- package/dist/ai-service/evals/content-matchers/index.d.ts +1 -0
- package/dist/ai-service/evals/content-matchers/index.d.ts.map +1 -1
- package/dist/ai-service/evals/content-matchers/index.js +8 -0
- package/dist/ai-service/evals/content-matchers/index.js.map +1 -1
- package/dist/ai-service/evals/helpers/eval-scoring.d.ts +23 -4
- package/dist/ai-service/evals/helpers/eval-scoring.d.ts.map +1 -1
- package/dist/ai-service/evals/helpers/eval-scoring.js +211 -34
- package/dist/ai-service/evals/helpers/eval-scoring.js.map +1 -1
- package/dist/ai-service/evals/helpers/index.d.ts +20 -1
- package/dist/ai-service/evals/helpers/index.d.ts.map +1 -1
- package/dist/ai-service/evals/helpers/index.js +108 -2
- package/dist/ai-service/evals/helpers/index.js.map +1 -1
- package/dist/ai-service/evals/llm-provider.d.ts +2 -0
- package/dist/ai-service/evals/llm-provider.d.ts.map +1 -0
- package/dist/ai-service/evals/llm-provider.js +9 -0
- package/dist/ai-service/evals/llm-provider.js.map +1 -0
- package/dist/ai-service/index.d.ts +10 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +80 -11
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/from-prompt-context.js +1 -1
- package/dist/ai-service/integrations/from-prompt-context.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +3 -5
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +5 -13
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/llm/impl/anthropic.d.ts +3 -0
- package/dist/ai-service/llm/impl/anthropic.d.ts.map +1 -0
- package/dist/ai-service/llm/impl/anthropic.js +42 -0
- package/dist/ai-service/llm/impl/anthropic.js.map +1 -0
- package/dist/ai-service/llm/provider.d.ts +3 -0
- package/dist/ai-service/llm/provider.d.ts.map +1 -0
- package/dist/ai-service/llm/provider.js +30 -0
- package/dist/ai-service/llm/provider.js.map +1 -0
- package/dist/ai-service/llm/types.d.ts +15 -0
- package/dist/ai-service/llm/types.d.ts.map +1 -0
- package/dist/ai-service/llm/types.js +2 -0
- package/dist/ai-service/llm/types.js.map +1 -0
- package/dist/ai-service/llm/utils.d.ts +9 -0
- package/dist/ai-service/llm/utils.d.ts.map +1 -0
- package/dist/ai-service/llm/utils.js +49 -0
- package/dist/ai-service/llm/utils.js.map +1 -0
- package/dist/ai-service/prompt-builder-service/builders/code-generation.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/builders/code-generation.js +95 -38
- package/dist/ai-service/prompt-builder-service/builders/code-generation.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/builders/incremental-edits.d.ts +13 -0
- package/dist/ai-service/prompt-builder-service/builders/incremental-edits.d.ts.map +1 -0
- package/dist/ai-service/prompt-builder-service/builders/incremental-edits.js +71 -0
- package/dist/ai-service/prompt-builder-service/builders/incremental-edits.js.map +1 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts +24 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.d.ts.map +1 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js +117 -0
- package/dist/ai-service/prompt-builder-service/classifiers/prompt-interpret-task.js.map +1 -0
- package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.d.ts +2 -2
- package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.js +56 -29
- package/dist/ai-service/prompt-builder-service/constants/superblocks-platform-fragments.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.d.ts +3 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.js +36 -3
- package/dist/ai-service/prompt-builder-service/fragment-generators/base-fragment.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ButtonPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/CheckboxPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ColumnPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ContainerPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DatePickerPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/DropdownPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/IconPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ImagePropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/InputPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/ModalPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/PagePropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SectionPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SlideoutPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/SwitchPropsDocs.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TablePropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/library-components/TextPropsDocs.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/Dim.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/EventFlow.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/library-typedefs/TextStyleWithVariant.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/full-examples.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.d.ts +1 -0
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.js +1 -0
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/index.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.d.ts +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.js +2 -2
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-api.js.map +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-components-rules.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-custom-components.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-data-filtering.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-event-flow.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-forms.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-layouts.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-page.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-rbac.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-routes.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-state.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/superblocks-theming.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-base.js +1 -1
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.d.ts +2 -0
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.d.ts.map +1 -0
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.js +6 -0
- package/dist/ai-service/prompt-builder-service/static-fragments/platform-parts/system-incremental.js.map +1 -0
- package/dist/ai-service/prompt-builder-service/types.d.ts +21 -7
- package/dist/ai-service/prompt-builder-service/types.d.ts.map +1 -1
- package/dist/ai-service/prompt-builder-service/types.js +10 -1
- package/dist/ai-service/prompt-builder-service/types.js.map +1 -1
- package/dist/ai-service/result-buffer/bolt.js +2 -2
- package/dist/ai-service/result-buffer/bolt.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +10 -2
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +49 -11
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +226 -231
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/post-processing.d.ts +1 -1
- package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/post-processing.js +56 -3
- package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
- package/dist/ai-service/test-utils/anthropic-service-mock.d.ts +1 -1
- package/dist/ai-service/test-utils/anthropic-service-mock.d.ts.map +1 -1
- package/dist/ai-service/test-utils/anthropic-service-mock.js +9 -1
- package/dist/ai-service/test-utils/anthropic-service-mock.js.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js +80 -38
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts.map +1 -1
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js +9 -3
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js.map +1 -1
- package/dist/ai-service/transform/shared.d.ts.map +1 -1
- package/dist/ai-service/transform/shared.js +1 -5
- package/dist/ai-service/transform/shared.js.map +1 -1
- package/dist/ai-service/types.d.ts +1 -1
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/components-manager.d.ts.map +1 -1
- package/dist/components-manager.js +9 -15
- package/dist/components-manager.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +50 -11
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/lock-service/index.d.ts +1 -0
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +27 -11
- package/dist/lock-service/index.js.map +1 -1
- package/dist/server-rpc/index.d.ts +0 -1
- package/dist/server-rpc/index.d.ts.map +1 -1
- package/dist/server-rpc/index.js +0 -4
- package/dist/server-rpc/index.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +5 -0
- package/dist/socket-manager.js.map +1 -1
- package/dist/virtual-modules.d.ts +5 -0
- package/dist/virtual-modules.d.ts.map +1 -0
- package/dist/virtual-modules.js +5 -0
- package/dist/virtual-modules.js.map +1 -0
- package/package.json +6 -6
- package/dist/ai-service/evals/lib/modal-config.d.ts +0 -8
- package/dist/ai-service/evals/lib/modal-config.d.ts.map +0 -1
- package/dist/ai-service/evals/lib/modal-config.js +0 -23
- package/dist/ai-service/evals/lib/modal-config.js.map +0 -1
- package/dist/ai-service/prompt-builder-service/constants/superblocks-components-fragments.d.ts +0 -3
- package/dist/ai-service/prompt-builder-service/constants/superblocks-components-fragments.d.ts.map +0 -1
- package/dist/ai-service/prompt-builder-service/constants/superblocks-components-fragments.js +0 -24
- package/dist/ai-service/prompt-builder-service/constants/superblocks-components-fragments.js.map +0 -1
|
@@ -1,30 +1,45 @@
|
|
|
1
1
|
import ddTrace from "dd-trace";
|
|
2
2
|
import { expect } from "vitest";
|
|
3
|
-
import { findComponentsInPage, parseScopeEntityNames, } from "../content-matchers/index.js";
|
|
3
|
+
import { findComponentAtPath, findComponentsInPage, parseScopeEntityNames, } from "../content-matchers/index.js";
|
|
4
4
|
import { groupArtifacts, runLinterCLI } from "./index.js";
|
|
5
5
|
const SOFT_CHECK_PENALTIES = {
|
|
6
6
|
wrongApiCount: 0.3,
|
|
7
7
|
wrongUiComponentCount: 0.3,
|
|
8
8
|
lintErrors: 0.3,
|
|
9
9
|
};
|
|
10
|
+
function getComponentForPropertyCheck(foundComponents, config) {
|
|
11
|
+
if (config.path) {
|
|
12
|
+
return findComponentAtPath(foundComponents, config.path);
|
|
13
|
+
}
|
|
14
|
+
const index = config.index ?? 0;
|
|
15
|
+
return foundComponents[index];
|
|
16
|
+
}
|
|
10
17
|
// Reusable eval scoring function
|
|
11
18
|
// ------------------------
|
|
12
19
|
export async function calculateEvalScore({ artifacts, getTempDir, config, traceData, }) {
|
|
13
|
-
const { scopes, pages, apis, components } = groupArtifacts(artifacts);
|
|
20
|
+
const { scopes, pages, apis, customComponents, components } = groupArtifacts(artifacts);
|
|
14
21
|
const evalChecks = {};
|
|
15
22
|
const apiNames = apis.map((api) => api.params.apiName.replace(".ts", ""));
|
|
16
23
|
// Calculate all evaluation results first (no assertions yet)
|
|
17
24
|
// ------------------------
|
|
18
25
|
let criticalChecksPassed = true;
|
|
19
|
-
// Critical 1: Has expected number of pages
|
|
26
|
+
// Critical 1: Has expected number of pages
|
|
27
|
+
const expectedPageCount = config.expectedPageCount ?? 1;
|
|
20
28
|
evalChecks.hasExpectedPageCount =
|
|
21
|
-
pages.length ===
|
|
29
|
+
pages.length === expectedPageCount &&
|
|
30
|
+
(expectedPageCount > 1
|
|
31
|
+
? pages.every((page, i) => page.params.pageName === `Page${i + 1}`)
|
|
32
|
+
: pages[0]?.params.pageName === "Page1");
|
|
22
33
|
if (!evalChecks.hasExpectedPageCount) {
|
|
23
34
|
criticalChecksPassed = false;
|
|
24
35
|
}
|
|
25
|
-
// Critical 2: Has expected number of scopes
|
|
36
|
+
// Critical 2: Has expected number of scopes
|
|
37
|
+
const expectedScopeCount = config.expectedScopeCount ?? 1;
|
|
26
38
|
evalChecks.hasExpectedScopeCount =
|
|
27
|
-
scopes.length ===
|
|
39
|
+
scopes.length === expectedScopeCount &&
|
|
40
|
+
(expectedScopeCount > 1
|
|
41
|
+
? scopes.every((scope, i) => scope.params.pageName === `Page${i + 1}`)
|
|
42
|
+
: scopes[0]?.params.pageName === "Page1");
|
|
28
43
|
if (!evalChecks.hasExpectedScopeCount) {
|
|
29
44
|
criticalChecksPassed = false;
|
|
30
45
|
}
|
|
@@ -55,25 +70,25 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
55
70
|
criticalChecksPassed = false;
|
|
56
71
|
}
|
|
57
72
|
// Critical 5: Component count check
|
|
58
|
-
let
|
|
73
|
+
let hasExpectedCustomComponentCount = false;
|
|
59
74
|
if (typeof config.expectedCustomComponentCount === "number") {
|
|
60
|
-
|
|
61
|
-
|
|
75
|
+
hasExpectedCustomComponentCount =
|
|
76
|
+
customComponents.length === config.expectedCustomComponentCount;
|
|
62
77
|
}
|
|
63
78
|
else {
|
|
64
79
|
const [min, max] = config.expectedCustomComponentCount;
|
|
65
|
-
|
|
66
|
-
|
|
80
|
+
hasExpectedCustomComponentCount =
|
|
81
|
+
customComponents.length >= min && customComponents.length <= max;
|
|
67
82
|
}
|
|
68
|
-
evalChecks.
|
|
69
|
-
if (!evalChecks.
|
|
83
|
+
evalChecks.hasExpectedCustomComponentCount = hasExpectedCustomComponentCount;
|
|
84
|
+
if (!evalChecks.hasExpectedCustomComponentCount) {
|
|
70
85
|
criticalChecksPassed = false;
|
|
71
86
|
}
|
|
72
87
|
// Get page content for UI component checks
|
|
73
88
|
const pageContent = pages[0]?.content;
|
|
74
89
|
// Critical 6: Required UI components
|
|
75
|
-
let
|
|
76
|
-
for (const uiComponent of config.expectedUiComponents) {
|
|
90
|
+
let hasExpectedUiComponentsInPage = true;
|
|
91
|
+
for (const uiComponent of config.expectedUiComponents ?? []) {
|
|
77
92
|
if (uiComponent.required) {
|
|
78
93
|
const foundComponents = findComponentsInPage(pageContent || "", uiComponent.type);
|
|
79
94
|
let componentCheckPassed = false;
|
|
@@ -91,13 +106,107 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
91
106
|
foundComponents.length >= min && foundComponents.length <= max;
|
|
92
107
|
}
|
|
93
108
|
if (!componentCheckPassed) {
|
|
94
|
-
|
|
109
|
+
hasExpectedUiComponentsInPage = false;
|
|
95
110
|
break;
|
|
96
111
|
}
|
|
97
112
|
}
|
|
98
113
|
}
|
|
99
|
-
evalChecks.
|
|
100
|
-
if (!evalChecks.
|
|
114
|
+
evalChecks.hasExpectedUiComponentsInPage = hasExpectedUiComponentsInPage;
|
|
115
|
+
if (!evalChecks.hasExpectedUiComponentsInPage) {
|
|
116
|
+
criticalChecksPassed = false;
|
|
117
|
+
}
|
|
118
|
+
// Critical check 7: Does it have the expected properties?
|
|
119
|
+
let hasExpectedUiComponentProperties = true;
|
|
120
|
+
if (config.expectedUiComponentProperties) {
|
|
121
|
+
for (const uiComponent of config.expectedUiComponentProperties) {
|
|
122
|
+
const foundComponents = findComponentsInPage(pageContent || "", uiComponent.type);
|
|
123
|
+
const component = getComponentForPropertyCheck(foundComponents, uiComponent);
|
|
124
|
+
if (!component) {
|
|
125
|
+
const selector = uiComponent.path
|
|
126
|
+
? `at path [${uiComponent.path.join(", ")}]`
|
|
127
|
+
: `at index ${uiComponent.index ?? 0}`;
|
|
128
|
+
throw new Error(`Component of type ${uiComponent.type} ${selector} to check properties on not found`);
|
|
129
|
+
}
|
|
130
|
+
for (const [key, value] of Object.entries(uiComponent.expectedProperties ?? {})) {
|
|
131
|
+
const propertyValueIsCorrect = component.props[key] === value;
|
|
132
|
+
if (!propertyValueIsCorrect) {
|
|
133
|
+
hasExpectedUiComponentProperties = false;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Check for expected undefined properties
|
|
138
|
+
if (uiComponent.expectedUndefinedProperties) {
|
|
139
|
+
for (const undefinedProp of uiComponent.expectedUndefinedProperties) {
|
|
140
|
+
const propertyIsUndefined = !(undefinedProp in component.props) ||
|
|
141
|
+
component.props[undefinedProp] === undefined;
|
|
142
|
+
if (!propertyIsUndefined) {
|
|
143
|
+
hasExpectedUiComponentProperties = false;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
evalChecks.hasExpectedUiComponentProperties =
|
|
150
|
+
hasExpectedUiComponentProperties;
|
|
151
|
+
if (!hasExpectedUiComponentProperties) {
|
|
152
|
+
criticalChecksPassed = false;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Critical check 8: Component artifacts have expected properties
|
|
156
|
+
let hasExpectedComponentArtifacts = true;
|
|
157
|
+
if (config.expectedComponentArtifacts &&
|
|
158
|
+
config.expectedComponentArtifacts.length > 0) {
|
|
159
|
+
for (const expectedComponent of config.expectedComponentArtifacts) {
|
|
160
|
+
// Find component artifact matching the criteria
|
|
161
|
+
const componentArtifact = components.find((comp) => {
|
|
162
|
+
// Parse the component content to check tagName and bindName
|
|
163
|
+
if (comp.filePath !== expectedComponent.filePath) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
// For component artifacts, we need to parse the content to extract properties
|
|
167
|
+
// This is a simplified check - in practice you might need more sophisticated parsing
|
|
168
|
+
const content = comp.content;
|
|
169
|
+
const hasExpectedTag = content.includes(`<${expectedComponent.tagName}`);
|
|
170
|
+
if (expectedComponent.bindName) {
|
|
171
|
+
const hasExpectedBind = content.includes(`bind={${expectedComponent.bindName}}`);
|
|
172
|
+
return hasExpectedTag && hasExpectedBind;
|
|
173
|
+
}
|
|
174
|
+
return hasExpectedTag;
|
|
175
|
+
});
|
|
176
|
+
if (!componentArtifact) {
|
|
177
|
+
hasExpectedComponentArtifacts = false;
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
// Check if the component artifact contains the expected properties
|
|
181
|
+
for (const [propKey, propValue] of Object.entries(expectedComponent.expectedProperties ?? {})) {
|
|
182
|
+
// Simple string-based property check for component artifacts
|
|
183
|
+
// This could be enhanced with proper AST parsing if needed
|
|
184
|
+
const hasProperty = componentArtifact.content.includes(`${propKey}=${JSON.stringify(propValue)}`) ||
|
|
185
|
+
componentArtifact.content.includes(`${propKey}={${JSON.stringify(propValue)}}`);
|
|
186
|
+
if (!hasProperty) {
|
|
187
|
+
hasExpectedComponentArtifacts = false;
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Check for expected undefined properties in component artifacts
|
|
192
|
+
if (expectedComponent.expectedUndefinedProperties) {
|
|
193
|
+
for (const undefinedProp of expectedComponent.expectedUndefinedProperties) {
|
|
194
|
+
// Check that the property is NOT present in the component artifact
|
|
195
|
+
const propertyIsPresent = componentArtifact.content.includes(`${undefinedProp}=`) ||
|
|
196
|
+
componentArtifact.content.includes(`${undefinedProp} =`);
|
|
197
|
+
if (propertyIsPresent) {
|
|
198
|
+
hasExpectedComponentArtifacts = false;
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (!hasExpectedComponentArtifacts) {
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
evalChecks.hasExpectedComponentArtifacts = hasExpectedComponentArtifacts;
|
|
209
|
+
if (!hasExpectedComponentArtifacts) {
|
|
101
210
|
criticalChecksPassed = false;
|
|
102
211
|
}
|
|
103
212
|
// Soft checks calculation
|
|
@@ -120,8 +229,8 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
120
229
|
}
|
|
121
230
|
evalChecks.hasReasonableApiCount = hasReasonableApiCount;
|
|
122
231
|
// Soft 2: UI component count tolerance
|
|
123
|
-
let
|
|
124
|
-
for (const uiComponent of config.expectedUiComponents) {
|
|
232
|
+
let hasReasonableUiComponentInPageCounts = true;
|
|
233
|
+
for (const uiComponent of config.expectedUiComponents ?? []) {
|
|
125
234
|
if (!uiComponent.required) {
|
|
126
235
|
const foundComponents = findComponentsInPage(pageContent || "", uiComponent.type);
|
|
127
236
|
let withinTolerance = true;
|
|
@@ -138,15 +247,17 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
138
247
|
}
|
|
139
248
|
if (!withinTolerance) {
|
|
140
249
|
softScore -= SOFT_CHECK_PENALTIES.wrongUiComponentCount;
|
|
141
|
-
|
|
250
|
+
hasReasonableUiComponentInPageCounts = false;
|
|
142
251
|
}
|
|
143
252
|
}
|
|
144
253
|
}
|
|
145
|
-
evalChecks.
|
|
254
|
+
evalChecks.hasReasonableUiComponentInPageCounts =
|
|
255
|
+
hasReasonableUiComponentInPageCounts;
|
|
146
256
|
// Soft 3: Lint errors
|
|
147
257
|
const lintResult = await runLinterCLI(artifacts, getTempDir());
|
|
148
258
|
evalChecks.hasLintErrors = lintResult.hasErrors;
|
|
149
259
|
if (evalChecks.hasLintErrors) {
|
|
260
|
+
console.log("Lint results:", JSON.stringify(lintResult, null, 2));
|
|
150
261
|
softScore -= SOFT_CHECK_PENALTIES.lintErrors;
|
|
151
262
|
}
|
|
152
263
|
// Calculate final eval score
|
|
@@ -165,6 +276,7 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
165
276
|
pages,
|
|
166
277
|
apis,
|
|
167
278
|
apiNames,
|
|
279
|
+
customComponents,
|
|
168
280
|
components,
|
|
169
281
|
},
|
|
170
282
|
};
|
|
@@ -186,10 +298,13 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
186
298
|
softScore,
|
|
187
299
|
pageCount: pages.length,
|
|
188
300
|
apiCount: apis.length,
|
|
189
|
-
|
|
301
|
+
customComponents: customComponents.length,
|
|
190
302
|
uniqueApiCount: new Set(apiNames).size,
|
|
191
303
|
lintErrorCount: lintResult.errorCount,
|
|
192
304
|
lintWarningCount: lintResult.warningCount,
|
|
305
|
+
// Count undefined properties checks
|
|
306
|
+
undefinedPropertiesChecked: (config.expectedUiComponentProperties?.reduce((count, comp) => count + (comp.expectedUndefinedProperties?.length || 0), 0) || 0) +
|
|
307
|
+
(config.expectedComponentArtifacts?.reduce((count, comp) => count + (comp.expectedUndefinedProperties?.length || 0), 0) || 0),
|
|
193
308
|
// Add detailed error counts by rule (sanitize rule names for Datadog)
|
|
194
309
|
...Object.entries(lintResult.ruleBreakdown).reduce((acc, [ruleId, counts]) => {
|
|
195
310
|
// Sanitize rule name: replace special characters with underscores
|
|
@@ -208,27 +323,33 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
208
323
|
}
|
|
209
324
|
// Now run all the assertions (after trace data is sent)
|
|
210
325
|
// ------------------------
|
|
211
|
-
expect(pages).toHaveLength(
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
326
|
+
expect(pages).toHaveLength(expectedPageCount);
|
|
327
|
+
for (let i = 0; i < expectedPageCount; i++) {
|
|
328
|
+
expect(pages[i]?.params.pageName).toEqual(`Page${i + 1}`);
|
|
329
|
+
}
|
|
330
|
+
expect(scopes).toHaveLength(expectedScopeCount);
|
|
331
|
+
for (let i = 0; i < expectedScopeCount; i++) {
|
|
332
|
+
expect(scopes[i]?.params.pageName).toEqual(`Page${i + 1}`);
|
|
333
|
+
}
|
|
215
334
|
expect(new Set(apiNames).size).toBe(apiNames.length);
|
|
216
335
|
for (const api of apis) {
|
|
217
336
|
expect(api.params.pageName).toEqual("Page1");
|
|
218
337
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
338
|
+
if (expectedScopeCount > 0) {
|
|
339
|
+
const scopeEntityNames = parseScopeEntityNames(scopes[0]);
|
|
340
|
+
for (const apiName of apiNames) {
|
|
341
|
+
expect(scopeEntityNames).toContain(apiName);
|
|
342
|
+
}
|
|
222
343
|
}
|
|
223
344
|
if (typeof config.expectedCustomComponentCount === "number") {
|
|
224
|
-
expect(
|
|
345
|
+
expect(customComponents).toHaveLength(config.expectedCustomComponentCount);
|
|
225
346
|
}
|
|
226
347
|
else {
|
|
227
348
|
const [min, max] = config.expectedCustomComponentCount;
|
|
228
|
-
expect(
|
|
229
|
-
expect(
|
|
349
|
+
expect(customComponents.length).toBeGreaterThanOrEqual(min);
|
|
350
|
+
expect(customComponents.length).toBeLessThanOrEqual(max);
|
|
230
351
|
}
|
|
231
|
-
for (const uiComponent of config.expectedUiComponents) {
|
|
352
|
+
for (const uiComponent of config.expectedUiComponents ?? []) {
|
|
232
353
|
if (uiComponent.required) {
|
|
233
354
|
const foundComponents = findComponentsInPage(pageContent || "", uiComponent.type);
|
|
234
355
|
if (typeof uiComponent.expectedCount === "number") {
|
|
@@ -254,6 +375,62 @@ export async function calculateEvalScore({ artifacts, getTempDir, config, traceD
|
|
|
254
375
|
expect(apis.length).toBeGreaterThanOrEqual(min);
|
|
255
376
|
expect(apis.length).toBeLessThanOrEqual(max);
|
|
256
377
|
}
|
|
378
|
+
if (config.expectedUiComponentProperties) {
|
|
379
|
+
for (const expected of config.expectedUiComponentProperties) {
|
|
380
|
+
const { type, expectedProperties } = expected;
|
|
381
|
+
const foundComponents = findComponentsInPage(pageContent || "", type);
|
|
382
|
+
const comp = getComponentForPropertyCheck(foundComponents, expected);
|
|
383
|
+
if (!comp) {
|
|
384
|
+
const selector = expected.path
|
|
385
|
+
? `at path [${expected.path.join(", ")}]`
|
|
386
|
+
: `at index ${expected.index ?? 0}`;
|
|
387
|
+
throw new Error(`Component of type ${type} ${selector} to check properties on not found`);
|
|
388
|
+
}
|
|
389
|
+
for (const [propKey, propValue] of Object.entries(expectedProperties ?? {})) {
|
|
390
|
+
expect(comp.props && comp.props[propKey] === propValue, `Property "${propKey}" expected value: ${JSON.stringify(propValue)}, actual: ${JSON.stringify(comp.props ? comp.props[propKey] : undefined)}`).toBeTruthy();
|
|
391
|
+
}
|
|
392
|
+
// Check assertions for expected undefined properties
|
|
393
|
+
if (expected.expectedUndefinedProperties) {
|
|
394
|
+
for (const undefinedProp of expected.expectedUndefinedProperties) {
|
|
395
|
+
expect(!(undefinedProp in comp.props) ||
|
|
396
|
+
comp.props[undefinedProp] === undefined, `Property "${undefinedProp}" should be undefined but was: ${JSON.stringify(comp.props ? comp.props[undefinedProp] : undefined)}`).toBeTruthy();
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
// Component artifacts assertions
|
|
402
|
+
if (config.expectedComponentArtifacts) {
|
|
403
|
+
for (const expectedComponent of config.expectedComponentArtifacts) {
|
|
404
|
+
const componentArtifact = components.find((comp) => {
|
|
405
|
+
if (comp.filePath !== expectedComponent.filePath) {
|
|
406
|
+
return false;
|
|
407
|
+
}
|
|
408
|
+
const content = comp.content;
|
|
409
|
+
const hasExpectedTag = content.includes(`<${expectedComponent.tagName}`);
|
|
410
|
+
if (expectedComponent.bindName) {
|
|
411
|
+
const hasExpectedBind = content.includes(`bind={${expectedComponent.bindName}}`);
|
|
412
|
+
return hasExpectedTag && hasExpectedBind;
|
|
413
|
+
}
|
|
414
|
+
return hasExpectedTag;
|
|
415
|
+
});
|
|
416
|
+
expect(componentArtifact, `Component artifact not found for ${expectedComponent.tagName} in ${expectedComponent.filePath}`).toBeDefined();
|
|
417
|
+
if (componentArtifact) {
|
|
418
|
+
for (const [propKey, propValue] of Object.entries(expectedComponent.expectedProperties ?? {})) {
|
|
419
|
+
const hasProperty = componentArtifact.content.includes(`${propKey}=${JSON.stringify(propValue)}`) ||
|
|
420
|
+
componentArtifact.content.includes(`${propKey}={${JSON.stringify(propValue)}}`);
|
|
421
|
+
expect(hasProperty, `Component artifact missing expected property ${propKey}=${JSON.stringify(propValue)}`).toBeTruthy();
|
|
422
|
+
}
|
|
423
|
+
// Check assertions for expected undefined properties in component artifacts
|
|
424
|
+
if (expectedComponent.expectedUndefinedProperties) {
|
|
425
|
+
for (const undefinedProp of expectedComponent.expectedUndefinedProperties) {
|
|
426
|
+
const propertyIsPresent = componentArtifact.content.includes(`${undefinedProp}=`) ||
|
|
427
|
+
componentArtifact.content.includes(`${undefinedProp} =`);
|
|
428
|
+
expect(!propertyIsPresent, `Component artifact should not have property "${undefinedProp}" but it was found`).toBeTruthy();
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
257
434
|
// Lint check assertion
|
|
258
435
|
if (lintResult.hasErrors) {
|
|
259
436
|
console.log("Lint results:", JSON.stringify(lintResult, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval-scoring.js","sourceRoot":"","sources":["../../../../src/ai-service/evals/helpers/eval-scoring.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eval-scoring.js","sourceRoot":"","sources":["../../../../src/ai-service/evals/helpers/eval-scoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { type Tracer } from "dd-trace";
|
|
2
2
|
import { Paths } from "../../const.js";
|
|
3
3
|
import type { FileArtifact, PathParams } from "../../types.js";
|
|
4
|
+
import type { NodePath } from "@babel/traverse";
|
|
5
|
+
import type { Node } from "@babel/types";
|
|
4
6
|
export declare const waitForNextTick: () => Promise<unknown>;
|
|
7
|
+
export declare const logLLMResponse: (result: any) => void;
|
|
5
8
|
export declare function sanitizeErrorForTests(error: any): any;
|
|
6
9
|
export declare function generateTextSafe(config: any): Promise<import("ai").GenerateTextResult<import("ai").ToolSet, never>>;
|
|
7
10
|
export declare function wrapLLM<T>(fn: () => Promise<T>, options?: {
|
|
@@ -13,12 +16,28 @@ export type MatchedArtifact<T extends string> = FileArtifact & {
|
|
|
13
16
|
};
|
|
14
17
|
export declare function extractArtifacts(text: string): FileArtifact[];
|
|
15
18
|
export declare function readDemoAppArtifacts(patterns?: string[]): Promise<FileArtifact[]>;
|
|
19
|
+
export declare function readAppArtifacts(appPath: string, patterns?: string[]): Promise<FileArtifact[]>;
|
|
20
|
+
export interface ComponentSearchCriteria {
|
|
21
|
+
tagName: string;
|
|
22
|
+
bindName?: string;
|
|
23
|
+
elementId?: string;
|
|
24
|
+
attributeFilters?: Record<string, string>;
|
|
25
|
+
/** If true, returns all matches instead of just the first one */
|
|
26
|
+
findAll?: boolean;
|
|
27
|
+
/** Zero-based index of which match to return (only used when findAll is false) */
|
|
28
|
+
matchIndex?: number;
|
|
29
|
+
}
|
|
30
|
+
export declare function createComponentNodePath(appPath: string, filePath: string, criteria: ComponentSearchCriteria): Promise<NodePath<Node> | undefined>;
|
|
31
|
+
export declare function createComponentNodePath(appPath: string, filePath: string, criteria: ComponentSearchCriteria & {
|
|
32
|
+
findAll: true;
|
|
33
|
+
}): Promise<NodePath<Node>[]>;
|
|
16
34
|
export declare function groupArtifacts(artifacts: FileArtifact[]): {
|
|
17
35
|
packageJson: FileArtifact | null;
|
|
18
36
|
scopes: MatchedArtifact<Paths.PageScopes>[];
|
|
19
37
|
pages: MatchedArtifact<Paths.PageIndexes>[];
|
|
20
38
|
apis: MatchedArtifact<Paths.GeneratedApis>[];
|
|
21
|
-
components: MatchedArtifact<
|
|
39
|
+
components: MatchedArtifact<any>[];
|
|
40
|
+
customComponents: MatchedArtifact<Paths.ComponentsFile>[];
|
|
22
41
|
other: FileArtifact[];
|
|
23
42
|
};
|
|
24
43
|
export declare function useTempDir(): (testName?: string) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/evals/helpers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/evals/helpers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,18 +3,25 @@ import { readFile } from "node:fs/promises";
|
|
|
3
3
|
import { mkdir, mkdtemp, rm, writeFile, symlink } from "node:fs/promises";
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
+
import { parse } from "@babel/parser";
|
|
6
7
|
import superblocksLinter from "@superblocksteam/linter";
|
|
7
8
|
import { generateText } from "ai";
|
|
8
9
|
import ddTrace, {} from "dd-trace";
|
|
9
10
|
import { ESLint } from "eslint";
|
|
10
11
|
import { expect, beforeEach, afterEach } from "vitest";
|
|
11
12
|
import packageJson from "../../../../package.json" with { type: "json" };
|
|
13
|
+
import { traverse } from "../../../traverse.js";
|
|
12
14
|
import { OperationQueue } from "../../../util/operation-queue.js";
|
|
13
15
|
import { AppShell } from "../../app-interface/shell.js";
|
|
14
16
|
import { BoltArtifactProcessor } from "../../artifacts/bolt.js";
|
|
15
17
|
import { Paths } from "../../const.js";
|
|
16
18
|
import { matchMultiplePaths, matchPath } from "../../transform/shared.js";
|
|
17
19
|
export const waitForNextTick = () => new Promise((resolve) => setTimeout(resolve, 1000));
|
|
20
|
+
export const logLLMResponse = (result) => {
|
|
21
|
+
console.log("====== LLM Response text:");
|
|
22
|
+
console.log(result.text);
|
|
23
|
+
console.log("====== End LLM Response text:");
|
|
24
|
+
};
|
|
18
25
|
// Helper function to sanitize errors and prevent logging system prompts
|
|
19
26
|
export function sanitizeErrorForTests(error) {
|
|
20
27
|
if (typeof error !== "object" || error === null) {
|
|
@@ -71,6 +78,98 @@ export async function readDemoAppArtifacts(patterns = ["**/*.{ts,tsx,yaml,css}",
|
|
|
71
78
|
});
|
|
72
79
|
return await appShell.readFiles(patterns);
|
|
73
80
|
}
|
|
81
|
+
export async function readAppArtifacts(appPath, patterns = ["**/*.{ts,tsx,yaml,css}", "package.json"]) {
|
|
82
|
+
// Get default app artifacts first
|
|
83
|
+
const defaultArtifacts = await readDemoAppArtifacts(patterns);
|
|
84
|
+
// Get specific app artifacts
|
|
85
|
+
const fullAppPath = path.resolve(__dirname, "../input-context", appPath);
|
|
86
|
+
const fsOperationQueue = new OperationQueue();
|
|
87
|
+
const appShell = new AppShell({
|
|
88
|
+
appRootDirPath: fullAppPath,
|
|
89
|
+
fsOperationQueue,
|
|
90
|
+
});
|
|
91
|
+
const specificArtifacts = await appShell.readFiles(patterns);
|
|
92
|
+
// Create a map for easy merging, keyed by file path
|
|
93
|
+
const artifactMap = new Map();
|
|
94
|
+
// Add default artifacts first
|
|
95
|
+
for (const artifact of defaultArtifacts) {
|
|
96
|
+
artifactMap.set(artifact.filePath, artifact);
|
|
97
|
+
}
|
|
98
|
+
// Add specific artifacts, overriding defaults if they exist
|
|
99
|
+
for (const artifact of specificArtifacts) {
|
|
100
|
+
artifactMap.set(artifact.filePath, artifact);
|
|
101
|
+
}
|
|
102
|
+
// Return merged artifacts as array
|
|
103
|
+
return Array.from(artifactMap.values());
|
|
104
|
+
}
|
|
105
|
+
export async function createComponentNodePath(appPath, filePath, criteria) {
|
|
106
|
+
const artifacts = await readAppArtifacts(appPath);
|
|
107
|
+
const targetArtifact = artifacts.find((a) => a.filePath === filePath);
|
|
108
|
+
if (!targetArtifact) {
|
|
109
|
+
return criteria.findAll ? [] : undefined;
|
|
110
|
+
}
|
|
111
|
+
const ast = parse(targetArtifact.content, {
|
|
112
|
+
sourceType: "module",
|
|
113
|
+
plugins: ["jsx", "typescript"],
|
|
114
|
+
});
|
|
115
|
+
const matches = [];
|
|
116
|
+
const targetIndex = criteria.matchIndex ?? 0;
|
|
117
|
+
traverse(ast, {
|
|
118
|
+
JSXOpeningElement(path) {
|
|
119
|
+
if (path.node.name.type === "JSXIdentifier" &&
|
|
120
|
+
path.node.name.name === criteria.tagName) {
|
|
121
|
+
let isMatch = true;
|
|
122
|
+
// Check bind attribute if specified
|
|
123
|
+
if (criteria.bindName) {
|
|
124
|
+
const bindAttr = path.node.attributes.find((attr) => attr.type === "JSXAttribute" &&
|
|
125
|
+
attr.name.type === "JSXIdentifier" &&
|
|
126
|
+
attr.name.name === "bind" &&
|
|
127
|
+
attr.value?.type === "JSXExpressionContainer" &&
|
|
128
|
+
attr.value.expression.type === "Identifier" &&
|
|
129
|
+
attr.value.expression.name === criteria.bindName);
|
|
130
|
+
if (!bindAttr)
|
|
131
|
+
isMatch = false;
|
|
132
|
+
}
|
|
133
|
+
// Check element ID if specified
|
|
134
|
+
if (criteria.elementId && isMatch) {
|
|
135
|
+
const idAttr = path.node.attributes.find((attr) => attr.type === "JSXAttribute" &&
|
|
136
|
+
attr.name.type === "JSXIdentifier" &&
|
|
137
|
+
attr.name.name === "data-sb-id" &&
|
|
138
|
+
attr.value?.type === "StringLiteral" &&
|
|
139
|
+
attr.value.value === criteria.elementId);
|
|
140
|
+
if (!idAttr)
|
|
141
|
+
isMatch = false;
|
|
142
|
+
}
|
|
143
|
+
// Check additional attribute filters if specified
|
|
144
|
+
if (criteria.attributeFilters && isMatch) {
|
|
145
|
+
for (const [attrName, attrValue] of Object.entries(criteria.attributeFilters)) {
|
|
146
|
+
const attr = path.node.attributes.find((attr) => attr.type === "JSXAttribute" &&
|
|
147
|
+
attr.name.type === "JSXIdentifier" &&
|
|
148
|
+
attr.name.name === attrName);
|
|
149
|
+
if (!attr ||
|
|
150
|
+
(attr.type === "JSXAttribute" &&
|
|
151
|
+
attr.value?.type === "StringLiteral" &&
|
|
152
|
+
attr.value.value !== attrValue)) {
|
|
153
|
+
isMatch = false;
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (isMatch) {
|
|
159
|
+
matches.push(path);
|
|
160
|
+
// If we're not finding all matches and we've reached our target index, stop
|
|
161
|
+
if (!criteria.findAll && matches.length > targetIndex) {
|
|
162
|
+
path.stop();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
if (criteria.findAll) {
|
|
169
|
+
return matches;
|
|
170
|
+
}
|
|
171
|
+
return matches[targetIndex] || undefined;
|
|
172
|
+
}
|
|
74
173
|
async function writeArtifacts(artifacts, tempDir) {
|
|
75
174
|
return Promise.all(artifacts.map(async (artifact) => {
|
|
76
175
|
const fullPath = path.join(tempDir, artifact.filePath);
|
|
@@ -88,7 +187,13 @@ export function groupArtifacts(artifacts) {
|
|
|
88
187
|
const pageScopeMatch = pageScopeMatcher(file.filePath);
|
|
89
188
|
const apiPathMatch = apiPathMatcher(file.filePath);
|
|
90
189
|
const componentPathsMatch = componentPathsMatcher(file.filePath);
|
|
91
|
-
if (file.
|
|
190
|
+
if (file.type === "component") {
|
|
191
|
+
acc.components.push({
|
|
192
|
+
...file,
|
|
193
|
+
params: {},
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
else if (file.filePath === Paths.PackageJson) {
|
|
92
197
|
acc.packageJson = file;
|
|
93
198
|
}
|
|
94
199
|
else if (pagePathMatch.matched) {
|
|
@@ -110,7 +215,7 @@ export function groupArtifacts(artifacts) {
|
|
|
110
215
|
});
|
|
111
216
|
}
|
|
112
217
|
else if (componentPathsMatch.matched) {
|
|
113
|
-
acc.
|
|
218
|
+
acc.customComponents.push({
|
|
114
219
|
...file,
|
|
115
220
|
params: componentPathsMatch.params,
|
|
116
221
|
});
|
|
@@ -125,6 +230,7 @@ export function groupArtifacts(artifacts) {
|
|
|
125
230
|
pages: [],
|
|
126
231
|
apis: [],
|
|
127
232
|
components: [],
|
|
233
|
+
customComponents: [],
|
|
128
234
|
other: [],
|
|
129
235
|
});
|
|
130
236
|
}
|