@agent-native/core 0.128.0 → 0.128.1
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/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +21 -0
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/server/builder-design-systems.ts +299 -82
- package/corpus/core/src/server/index.ts +8 -0
- package/corpus/templates/analytics/_gitignore +2 -0
- package/corpus/templates/assets/_gitignore +2 -0
- package/corpus/templates/calendar/_gitignore +2 -0
- package/corpus/templates/clips/_gitignore +2 -0
- package/corpus/templates/content/_gitignore +2 -0
- package/corpus/templates/design/_gitignore +2 -0
- package/corpus/templates/design/app/i18n-data.ts +10 -0
- package/corpus/templates/design/app/lib/builder-design-system-upload.ts +280 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +90 -54
- package/corpus/templates/design/changelog/2026-07-28-figma-fig-uploads-now-show-indexing-progress-and-an-open-in-.md +6 -0
- package/corpus/templates/design/server/handlers/design-system-decode-job-status.ts +49 -0
- package/corpus/templates/design/server/handlers/design-system-upload-start.ts +87 -0
- package/corpus/templates/design/server/handlers/index-design-system-sources.ts +82 -0
- package/corpus/templates/design/server/routes/api/design-system-decode-job-status.get.ts +1 -0
- package/corpus/templates/design/server/routes/api/design-system-upload-start.post.ts +1 -0
- package/corpus/templates/design/server/routes/api/index-design-system-sources.post.ts +1 -0
- package/corpus/templates/dispatch/_gitignore +2 -0
- package/corpus/templates/forms/_gitignore +2 -0
- package/corpus/templates/macros/_gitignore +2 -0
- package/corpus/templates/mail/_gitignore +2 -0
- package/corpus/templates/plan/_gitignore +2 -0
- package/corpus/templates/slides/_gitignore +2 -0
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +126 -53
- package/corpus/templates/slides/app/components/design-system/builder-design-system-upload.ts +271 -0
- package/corpus/templates/slides/app/components/design-system/builder-index-response.ts +1 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +1 -0
- package/corpus/templates/slides/server/handlers/design-system-decode-job-status.ts +49 -0
- package/corpus/templates/slides/server/handlers/design-system-upload-start.ts +87 -0
- package/corpus/templates/slides/server/handlers/index-design-system-sources.ts +79 -0
- package/corpus/templates/slides/server/routes/api/design-system-decode-job-status.get.ts +1 -0
- package/corpus/templates/slides/server/routes/api/design-system-upload-start.post.ts +1 -0
- package/corpus/templates/slides/server/routes/api/index-design-system-sources.post.ts +1 -0
- package/corpus/templates/tasks/_gitignore +2 -0
- package/dist/collab/routes.d.ts +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +10 -10
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/builder-design-systems.d.ts +49 -0
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +221 -69
- package/dist/server/builder-design-systems.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/package.json +2 -1
- package/src/server/builder-design-systems.ts +299 -82
- package/src/server/index.ts +8 -0
- package/corpus/templates/design/server/handlers/index-design-system-with-builder.ts +0 -151
- package/corpus/templates/design/server/routes/api/index-design-system-with-builder.post.ts +0 -1
- package/corpus/templates/slides/server/handlers/index-design-system-with-builder.ts +0 -119
- package/corpus/templates/slides/server/routes/api/index-design-system-with-builder.post.ts +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FeatureNotConfiguredError,
|
|
3
|
-
getSession,
|
|
4
|
-
startBuilderDesignSystemIndex,
|
|
5
|
-
} from "@agent-native/core/server";
|
|
6
|
-
import {
|
|
7
|
-
defineEventHandler,
|
|
8
|
-
getRequestHeader,
|
|
9
|
-
readMultipartFormData,
|
|
10
|
-
setResponseStatus,
|
|
11
|
-
} from "h3";
|
|
12
|
-
|
|
13
|
-
import { upsertBuilderProxyDesignSystem } from "../lib/builder-design-system-proxy.js";
|
|
14
|
-
import { withSlidesRequestContext } from "./request-auth-context.js";
|
|
15
|
-
|
|
16
|
-
const MAX_FIG_BYTES = 200 * 1024 * 1024;
|
|
17
|
-
const MULTIPART_OVERHEAD_BYTES = 1024 * 1024;
|
|
18
|
-
|
|
19
|
-
function requestContentLength(event: Parameters<typeof getRequestHeader>[0]) {
|
|
20
|
-
const raw = getRequestHeader(event, "content-length");
|
|
21
|
-
if (!raw) return null;
|
|
22
|
-
const parsed = Number(raw);
|
|
23
|
-
return Number.isFinite(parsed) && parsed >= 0 ? parsed : null;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export const indexDesignSystemWithBuilder = defineEventHandler(
|
|
27
|
-
async (event) => {
|
|
28
|
-
const session = await getSession(event).catch(() => null);
|
|
29
|
-
if (!session?.email) {
|
|
30
|
-
setResponseStatus(event, 401);
|
|
31
|
-
return { error: "Unauthorized" };
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const contentLength = requestContentLength(event);
|
|
35
|
-
if (
|
|
36
|
-
contentLength !== null &&
|
|
37
|
-
contentLength > MAX_FIG_BYTES + MULTIPART_OVERHEAD_BYTES
|
|
38
|
-
) {
|
|
39
|
-
setResponseStatus(event, 413);
|
|
40
|
-
return {
|
|
41
|
-
error: `File too large (max ${Math.round(MAX_FIG_BYTES / 1024 / 1024)} MB).`,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
let parts;
|
|
46
|
-
try {
|
|
47
|
-
parts = await readMultipartFormData(event);
|
|
48
|
-
} catch {
|
|
49
|
-
setResponseStatus(event, 413);
|
|
50
|
-
return { error: "Upload too large or malformed." };
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const part = parts?.find(
|
|
54
|
-
(p) => (p.name === "file" || p.name === "fig") && p.data,
|
|
55
|
-
);
|
|
56
|
-
if (!part) {
|
|
57
|
-
setResponseStatus(event, 400);
|
|
58
|
-
return {
|
|
59
|
-
error: "No .fig file uploaded (expected multipart field 'file').",
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
if (part.data.length > MAX_FIG_BYTES) {
|
|
63
|
-
setResponseStatus(event, 413);
|
|
64
|
-
return {
|
|
65
|
-
error: `File too large (max ${Math.round(MAX_FIG_BYTES / 1024 / 1024)} MB).`,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const suggestedTitle =
|
|
70
|
-
(part.filename || "Imported brand")
|
|
71
|
-
.replace(/\.fig$/i, "")
|
|
72
|
-
.replace(/[-_]+/g, " ")
|
|
73
|
-
.trim() || "Imported brand";
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
return await withSlidesRequestContext(event, async ({ orgId }) => {
|
|
77
|
-
const result = await startBuilderDesignSystemIndex({
|
|
78
|
-
projectName: suggestedTitle,
|
|
79
|
-
files: [
|
|
80
|
-
{
|
|
81
|
-
name: part.filename || "brand.fig",
|
|
82
|
-
data: part.data,
|
|
83
|
-
mimeType: "application/octet-stream",
|
|
84
|
-
},
|
|
85
|
-
],
|
|
86
|
-
});
|
|
87
|
-
const proxy = await upsertBuilderProxyDesignSystem({
|
|
88
|
-
result,
|
|
89
|
-
ownerEmail: session.email,
|
|
90
|
-
orgId: orgId ?? null,
|
|
91
|
-
projectName: suggestedTitle,
|
|
92
|
-
});
|
|
93
|
-
return {
|
|
94
|
-
...result,
|
|
95
|
-
...proxy,
|
|
96
|
-
uploadedFileCount: 1,
|
|
97
|
-
};
|
|
98
|
-
});
|
|
99
|
-
} catch (err) {
|
|
100
|
-
if (err instanceof FeatureNotConfiguredError) {
|
|
101
|
-
setResponseStatus(event, 412);
|
|
102
|
-
return {
|
|
103
|
-
error:
|
|
104
|
-
err.message ||
|
|
105
|
-
"Connect Builder.io before indexing a design system from Figma.",
|
|
106
|
-
builderConnectUrl:
|
|
107
|
-
err.builderConnectUrl ?? "/_agent-native/builder/connect",
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
setResponseStatus(event, 502);
|
|
111
|
-
return {
|
|
112
|
-
error:
|
|
113
|
-
err instanceof Error
|
|
114
|
-
? err.message
|
|
115
|
-
: "Builder design-system indexing failed.",
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { indexDesignSystemWithBuilder as default } from "../../handlers/index-design-system-with-builder";
|