@agent-native/core 0.90.7 → 0.90.8
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/core/CHANGELOG.md +7 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/deploy/build.ts +53 -0
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/deploy/build.d.ts +1 -0
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +39 -0
- package/dist/deploy/build.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +1 -1
- package/package.json +1 -1
package/corpus/core/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @agent-native/core
|
|
2
2
|
|
|
3
|
+
## 0.90.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1de8510: Allow public Builder waitlist signups to submit an explicit email address for docs build-online CTAs.
|
|
8
|
+
- 1de8510: Emit and require a Netlify fallback redirect so single-template deploys route dynamic app requests to the server function instead of publishing platform 404s.
|
|
9
|
+
|
|
3
10
|
## 0.90.7
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
package/corpus/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.90.
|
|
3
|
+
"version": "0.90.8",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -2432,6 +2432,7 @@ export function assertSingleTemplateNetlifyBuildOutput(
|
|
|
2432
2432
|
): void {
|
|
2433
2433
|
const failures: string[] = [];
|
|
2434
2434
|
const publishDir = path.join(projectCwd, "dist");
|
|
2435
|
+
const redirectsPath = path.join(publishDir, "_redirects");
|
|
2435
2436
|
const internalDir = path.join(projectCwd, ".netlify", "functions-internal");
|
|
2436
2437
|
const serverDir = path.join(internalDir, "server");
|
|
2437
2438
|
const serverEntryPath = path.join(serverDir, "server.mjs");
|
|
@@ -2439,6 +2440,23 @@ export function assertSingleTemplateNetlifyBuildOutput(
|
|
|
2439
2440
|
|
|
2440
2441
|
if (!fs.existsSync(publishDir)) {
|
|
2441
2442
|
failures.push("missing publish directory: dist");
|
|
2443
|
+
} else if (!fs.existsSync(redirectsPath)) {
|
|
2444
|
+
failures.push("missing Netlify fallback redirects file: dist/_redirects");
|
|
2445
|
+
} else {
|
|
2446
|
+
const redirects = fs.readFileSync(redirectsPath, "utf-8");
|
|
2447
|
+
if (
|
|
2448
|
+
!redirects
|
|
2449
|
+
.split(/\r?\n/)
|
|
2450
|
+
.some(
|
|
2451
|
+
(line) =>
|
|
2452
|
+
line.trim().replace(/\s+/g, " ") ===
|
|
2453
|
+
"/* /.netlify/functions/server 200",
|
|
2454
|
+
)
|
|
2455
|
+
) {
|
|
2456
|
+
failures.push(
|
|
2457
|
+
'dist/_redirects is missing "/* /.netlify/functions/server 200"',
|
|
2458
|
+
);
|
|
2459
|
+
}
|
|
2442
2460
|
}
|
|
2443
2461
|
|
|
2444
2462
|
if (!fs.existsSync(serverDir)) {
|
|
@@ -2526,6 +2544,40 @@ export function assertSingleTemplateNetlifyBuildOutput(
|
|
|
2526
2544
|
);
|
|
2527
2545
|
}
|
|
2528
2546
|
|
|
2547
|
+
export function writeSingleTemplateNetlifyRedirects(projectCwd: string): void {
|
|
2548
|
+
const publishDir = path.join(projectCwd, "dist");
|
|
2549
|
+
if (!fs.existsSync(publishDir)) return;
|
|
2550
|
+
|
|
2551
|
+
const redirectsPath = path.join(publishDir, "_redirects");
|
|
2552
|
+
const existing = fs.existsSync(redirectsPath)
|
|
2553
|
+
? fs.readFileSync(redirectsPath, "utf-8").trimEnd()
|
|
2554
|
+
: "";
|
|
2555
|
+
const lines = existing ? existing.split(/\r?\n/) : [];
|
|
2556
|
+
|
|
2557
|
+
function hasRedirect(line: string): boolean {
|
|
2558
|
+
return lines.some(
|
|
2559
|
+
(existingLine) => existingLine.trim().replace(/\s+/g, " ") === line,
|
|
2560
|
+
);
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
const fallbackRules = [
|
|
2564
|
+
"# Generated by agent-native build for Netlify single-template deploys",
|
|
2565
|
+
"# Static files are served first; dynamic routes fall through to the server function.",
|
|
2566
|
+
"/* /.netlify/functions/server 200",
|
|
2567
|
+
];
|
|
2568
|
+
|
|
2569
|
+
for (const line of fallbackRules) {
|
|
2570
|
+
if (line.startsWith("#") || !hasRedirect(line)) {
|
|
2571
|
+
lines.push(line);
|
|
2572
|
+
}
|
|
2573
|
+
}
|
|
2574
|
+
|
|
2575
|
+
fs.writeFileSync(redirectsPath, lines.join("\n") + "\n");
|
|
2576
|
+
console.log(
|
|
2577
|
+
"[deploy] Wrote Netlify fallback redirect /* -> /.netlify/functions/server.",
|
|
2578
|
+
);
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2529
2581
|
function copyInstalledLibsqlNativePackages(serverDir: string | undefined) {
|
|
2530
2582
|
if (!serverDir || !fs.existsSync(serverDir)) return;
|
|
2531
2583
|
const nodeModulesRoots = nodeModulesAncestors(cwd);
|
|
@@ -3076,6 +3128,7 @@ export default bundle;
|
|
|
3076
3128
|
}
|
|
3077
3129
|
|
|
3078
3130
|
if (preset === "netlify") {
|
|
3131
|
+
writeSingleTemplateNetlifyRedirects(cwd);
|
|
3079
3132
|
assertSingleTemplateNetlifyBuildOutput(cwd);
|
|
3080
3133
|
}
|
|
3081
3134
|
|
|
@@ -60,11 +60,11 @@ export declare const postAwareness: import("h3").EventHandlerWithFetch<import("h
|
|
|
60
60
|
error: string;
|
|
61
61
|
states?: undefined;
|
|
62
62
|
} | {
|
|
63
|
+
error?: undefined;
|
|
63
64
|
states: {
|
|
64
65
|
clientId: number;
|
|
65
66
|
state: string;
|
|
66
67
|
}[];
|
|
67
|
-
error?: undefined;
|
|
68
68
|
}>>;
|
|
69
69
|
/**
|
|
70
70
|
* GET /_agent-native/collab/:docId/users
|
|
@@ -75,10 +75,10 @@ export declare const getActiveUsers: import("h3").EventHandlerWithFetch<import("
|
|
|
75
75
|
error: string;
|
|
76
76
|
users?: undefined;
|
|
77
77
|
} | {
|
|
78
|
+
error?: undefined;
|
|
78
79
|
users: {
|
|
79
80
|
clientId: number;
|
|
80
81
|
lastSeen: number;
|
|
81
82
|
}[];
|
|
82
|
-
error?: undefined;
|
|
83
83
|
}>>;
|
|
84
84
|
//# sourceMappingURL=awareness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"awareness.d.ts","sourceRoot":"","sources":["../../src/collab/awareness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAe3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,eAAO,MAAM,sBAAsB,EAAG,kBAA2B,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,cAAc,GAAG,SAAS,GAChC,IAAI,CAON;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,CAAC,EAAE,cAAc,GACrB,IAAI,CAgBN;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAO1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAOnE;AA6BD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"awareness.d.ts","sourceRoot":"","sources":["../../src/collab/awareness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAe3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,eAAO,MAAM,sBAAsB,EAAG,kBAA2B,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,cAAc,GAAG,SAAS,GAChC,IAAI,CAON;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,CAAC,EAAE,cAAc,GACrB,IAAI,CAgBN;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAO1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAOnE;AA6BD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa;;;;;;kBAqDa,MAAM;eAAS,MAAM;;GAoB1D,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;kBAYM,MAAM;kBAAY,MAAM;;GAMvD,CAAC"}
|
package/dist/deploy/build.d.ts
CHANGED
|
@@ -151,6 +151,7 @@ export declare function isDurableBackgroundDeployEnabled(): boolean;
|
|
|
151
151
|
*/
|
|
152
152
|
export declare function emitSingleTemplateNetlifyBackgroundFunction(projectCwd: string): void;
|
|
153
153
|
export declare function assertSingleTemplateNetlifyBuildOutput(projectCwd: string): void;
|
|
154
|
+
export declare function writeSingleTemplateNetlifyRedirects(projectCwd: string): void;
|
|
154
155
|
/**
|
|
155
156
|
* Nitro's file tracer can over-include optional desktop/dev packages that are
|
|
156
157
|
* present in a monorepo install but cannot run in serverless. Netlify installs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":"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"}
|
package/dist/deploy/build.js
CHANGED
|
@@ -2016,6 +2016,7 @@ export const config = {
|
|
|
2016
2016
|
export function assertSingleTemplateNetlifyBuildOutput(projectCwd) {
|
|
2017
2017
|
const failures = [];
|
|
2018
2018
|
const publishDir = path.join(projectCwd, "dist");
|
|
2019
|
+
const redirectsPath = path.join(publishDir, "_redirects");
|
|
2019
2020
|
const internalDir = path.join(projectCwd, ".netlify", "functions-internal");
|
|
2020
2021
|
const serverDir = path.join(internalDir, "server");
|
|
2021
2022
|
const serverEntryPath = path.join(serverDir, "server.mjs");
|
|
@@ -2023,6 +2024,18 @@ export function assertSingleTemplateNetlifyBuildOutput(projectCwd) {
|
|
|
2023
2024
|
if (!fs.existsSync(publishDir)) {
|
|
2024
2025
|
failures.push("missing publish directory: dist");
|
|
2025
2026
|
}
|
|
2027
|
+
else if (!fs.existsSync(redirectsPath)) {
|
|
2028
|
+
failures.push("missing Netlify fallback redirects file: dist/_redirects");
|
|
2029
|
+
}
|
|
2030
|
+
else {
|
|
2031
|
+
const redirects = fs.readFileSync(redirectsPath, "utf-8");
|
|
2032
|
+
if (!redirects
|
|
2033
|
+
.split(/\r?\n/)
|
|
2034
|
+
.some((line) => line.trim().replace(/\s+/g, " ") ===
|
|
2035
|
+
"/* /.netlify/functions/server 200")) {
|
|
2036
|
+
failures.push('dist/_redirects is missing "/* /.netlify/functions/server 200"');
|
|
2037
|
+
}
|
|
2038
|
+
}
|
|
2026
2039
|
if (!fs.existsSync(serverDir)) {
|
|
2027
2040
|
failures.push("missing scanned Netlify server function: .netlify/functions-internal/server");
|
|
2028
2041
|
}
|
|
@@ -2067,6 +2080,31 @@ export function assertSingleTemplateNetlifyBuildOutput(projectCwd) {
|
|
|
2067
2080
|
}
|
|
2068
2081
|
console.log("[deploy] Netlify deploy guard passed: publish dir and catch-all server function are present.");
|
|
2069
2082
|
}
|
|
2083
|
+
export function writeSingleTemplateNetlifyRedirects(projectCwd) {
|
|
2084
|
+
const publishDir = path.join(projectCwd, "dist");
|
|
2085
|
+
if (!fs.existsSync(publishDir))
|
|
2086
|
+
return;
|
|
2087
|
+
const redirectsPath = path.join(publishDir, "_redirects");
|
|
2088
|
+
const existing = fs.existsSync(redirectsPath)
|
|
2089
|
+
? fs.readFileSync(redirectsPath, "utf-8").trimEnd()
|
|
2090
|
+
: "";
|
|
2091
|
+
const lines = existing ? existing.split(/\r?\n/) : [];
|
|
2092
|
+
function hasRedirect(line) {
|
|
2093
|
+
return lines.some((existingLine) => existingLine.trim().replace(/\s+/g, " ") === line);
|
|
2094
|
+
}
|
|
2095
|
+
const fallbackRules = [
|
|
2096
|
+
"# Generated by agent-native build for Netlify single-template deploys",
|
|
2097
|
+
"# Static files are served first; dynamic routes fall through to the server function.",
|
|
2098
|
+
"/* /.netlify/functions/server 200",
|
|
2099
|
+
];
|
|
2100
|
+
for (const line of fallbackRules) {
|
|
2101
|
+
if (line.startsWith("#") || !hasRedirect(line)) {
|
|
2102
|
+
lines.push(line);
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
fs.writeFileSync(redirectsPath, lines.join("\n") + "\n");
|
|
2106
|
+
console.log("[deploy] Wrote Netlify fallback redirect /* -> /.netlify/functions/server.");
|
|
2107
|
+
}
|
|
2070
2108
|
function copyInstalledLibsqlNativePackages(serverDir) {
|
|
2071
2109
|
if (!serverDir || !fs.existsSync(serverDir))
|
|
2072
2110
|
return;
|
|
@@ -2529,6 +2567,7 @@ export default bundle;
|
|
|
2529
2567
|
}
|
|
2530
2568
|
}
|
|
2531
2569
|
if (preset === "netlify") {
|
|
2570
|
+
writeSingleTemplateNetlifyRedirects(cwd);
|
|
2532
2571
|
assertSingleTemplateNetlifyBuildOutput(cwd);
|
|
2533
2572
|
}
|
|
2534
2573
|
// Resolve remaining bare npm imports by bundling them into _libs/.
|