veryfront 0.1.764 → 0.1.765

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/esm/deno.js +1 -1
  2. package/esm/src/cache/keys/builders/render.d.ts +8 -1
  3. package/esm/src/cache/keys/builders/render.d.ts.map +1 -1
  4. package/esm/src/cache/keys/builders/render.js +10 -2
  5. package/esm/src/html/html-shell-generator.d.ts.map +1 -1
  6. package/esm/src/html/html-shell-generator.js +24 -4
  7. package/esm/src/html/schemas/html.schema.d.ts +2 -0
  8. package/esm/src/html/schemas/html.schema.d.ts.map +1 -1
  9. package/esm/src/html/schemas/html.schema.js +1 -0
  10. package/esm/src/platform/adapters/fs/veryfront/adapter.d.ts.map +1 -1
  11. package/esm/src/platform/adapters/fs/veryfront/adapter.js +31 -0
  12. package/esm/src/platform/adapters/veryfront-api-client/client.d.ts +31 -0
  13. package/esm/src/platform/adapters/veryfront-api-client/client.d.ts.map +1 -1
  14. package/esm/src/platform/adapters/veryfront-api-client/client.js +21 -0
  15. package/esm/src/platform/adapters/veryfront-api-client/operations.d.ts +6 -1
  16. package/esm/src/platform/adapters/veryfront-api-client/operations.d.ts.map +1 -1
  17. package/esm/src/platform/adapters/veryfront-api-client/operations.js +59 -1
  18. package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.d.ts +22 -0
  19. package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.d.ts.map +1 -1
  20. package/esm/src/platform/adapters/veryfront-api-client/schemas/api.schema.js +39 -0
  21. package/esm/src/platform/adapters/veryfront-api-client/schemas/index.d.ts +1 -1
  22. package/esm/src/platform/adapters/veryfront-api-client/schemas/index.d.ts.map +1 -1
  23. package/esm/src/platform/adapters/veryfront-api-client/schemas/index.js +1 -1
  24. package/esm/src/proxy/asset-handler.d.ts +30 -0
  25. package/esm/src/proxy/asset-handler.d.ts.map +1 -0
  26. package/esm/src/proxy/asset-handler.js +108 -0
  27. package/esm/src/proxy/main.js +4 -0
  28. package/esm/src/release-assets/build-executor.d.ts +89 -0
  29. package/esm/src/release-assets/build-executor.d.ts.map +1 -0
  30. package/esm/src/release-assets/build-executor.js +405 -0
  31. package/esm/src/release-assets/constants.d.ts +35 -0
  32. package/esm/src/release-assets/constants.d.ts.map +1 -0
  33. package/esm/src/release-assets/constants.js +50 -0
  34. package/esm/src/release-assets/hash.d.ts +14 -0
  35. package/esm/src/release-assets/hash.d.ts.map +1 -0
  36. package/esm/src/release-assets/hash.js +22 -0
  37. package/esm/src/release-assets/html-consumption.d.ts +31 -0
  38. package/esm/src/release-assets/html-consumption.d.ts.map +1 -0
  39. package/esm/src/release-assets/html-consumption.js +64 -0
  40. package/esm/src/release-assets/manifest-cache.d.ts +70 -0
  41. package/esm/src/release-assets/manifest-cache.d.ts.map +1 -0
  42. package/esm/src/release-assets/manifest-cache.js +178 -0
  43. package/esm/src/release-assets/manifest-schema.d.ts +70 -0
  44. package/esm/src/release-assets/manifest-schema.d.ts.map +1 -0
  45. package/esm/src/release-assets/manifest-schema.js +126 -0
  46. package/esm/src/rendering/context/render-context.d.ts.map +1 -1
  47. package/esm/src/rendering/context/render-context.js +3 -1
  48. package/esm/src/rendering/orchestrator/html.d.ts.map +1 -1
  49. package/esm/src/rendering/orchestrator/html.js +16 -0
  50. package/esm/src/rendering/orchestrator/types.d.ts +2 -0
  51. package/esm/src/rendering/orchestrator/types.d.ts.map +1 -1
  52. package/esm/src/server/context/enriched-context.d.ts.map +1 -1
  53. package/esm/src/server/context/enriched-context.js +2 -1
  54. package/esm/src/server/handlers/request/project-run-execute.handler.d.ts +5 -0
  55. package/esm/src/server/handlers/request/project-run-execute.handler.d.ts.map +1 -1
  56. package/esm/src/server/handlers/request/project-run-execute.handler.js +86 -3
  57. package/esm/src/utils/version-constant.d.ts +1 -1
  58. package/esm/src/utils/version-constant.js +1 -1
  59. package/package.json +1 -1
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Release Asset Manifest — v1 body schema, types, and validator.
3
+ *
4
+ * The manifest body is content-addressed metadata describing the transformed
5
+ * browser modules and compiled CSS for a release, plus the per-route closure
6
+ * used to drive preload hints and asset URL rewriting.
7
+ *
8
+ * Validation follows the repo's `defineSchema` convention (zod via the
9
+ * `SchemaValidator` extension contract). The schema is materialized lazily so
10
+ * core modules can import these types without pulling in the validator.
11
+ *
12
+ * @module release-assets/manifest-schema
13
+ */
14
+ import { defineSchema } from "../schemas/index.js";
15
+ import { RELEASE_ASSET_MANIFEST_SCHEMA_VERSION } from "./constants.js";
16
+ // ---------------------------------------------------------------------------
17
+ // Schema fragments
18
+ // ---------------------------------------------------------------------------
19
+ const assetEntryShape = (v) => ({
20
+ contentHash: v.string(),
21
+ size: v.number(),
22
+ contentType: v.string(),
23
+ });
24
+ const cssEntryShape = (v) => ({
25
+ contentHash: v.string(),
26
+ size: v.number(),
27
+ contentType: v.string(),
28
+ styleProfileHash: v.string().nullable(),
29
+ });
30
+ const routeEntryShape = (v) => ({
31
+ modules: v.array(v.string()),
32
+ css: v.array(v.string()),
33
+ });
34
+ const fallbackShape = (v) => ({
35
+ mode: v.literal("jit"),
36
+ gaps: v.array(v.string()),
37
+ });
38
+ // ---------------------------------------------------------------------------
39
+ // Exported schema getter
40
+ // ---------------------------------------------------------------------------
41
+ export const getReleaseAssetManifestSchema = defineSchema((v) => v.object({
42
+ schemaVersion: v.literal(RELEASE_ASSET_MANIFEST_SCHEMA_VERSION),
43
+ projectId: v.string(),
44
+ releaseId: v.string(),
45
+ releaseVersion: v.number(),
46
+ manifestVersion: v.number(),
47
+ builderVersion: v.string(),
48
+ sourceContentHash: v.string(),
49
+ createdAt: v.string(),
50
+ assetBasePath: v.string(),
51
+ modules: v.record(v.string(), v.object(assetEntryShape(v))),
52
+ css: v.array(v.object(cssEntryShape(v))),
53
+ routes: v.record(v.string(), v.object(routeEntryShape(v))),
54
+ // `dependencies` is reserved for S7 vendoring — always {} in v1, but the
55
+ // validator accepts entries shaped like `modules` values keyed by specifier.
56
+ dependencies: v.record(v.string(), v.object(assetEntryShape(v))),
57
+ fallback: v.object(fallbackShape(v)),
58
+ }));
59
+ /**
60
+ * Hand-rolled structural validator.
61
+ *
62
+ * Used on consumption paths (HTML/proxy) where the `SchemaValidator` extension
63
+ * may not be registered. Returns the typed manifest on success, or null. Does
64
+ * not throw — consumption is always best-effort with a JIT fallback.
65
+ */
66
+ export function parseReleaseAssetManifest(value) {
67
+ if (!isRecord(value))
68
+ return null;
69
+ if (value.schemaVersion !== RELEASE_ASSET_MANIFEST_SCHEMA_VERSION)
70
+ return null;
71
+ if (typeof value.projectId !== "string" ||
72
+ typeof value.releaseId !== "string" ||
73
+ typeof value.releaseVersion !== "number" ||
74
+ typeof value.manifestVersion !== "number" ||
75
+ typeof value.builderVersion !== "string" ||
76
+ typeof value.sourceContentHash !== "string" ||
77
+ typeof value.createdAt !== "string" ||
78
+ typeof value.assetBasePath !== "string") {
79
+ return null;
80
+ }
81
+ if (!isAssetEntryRecord(value.modules))
82
+ return null;
83
+ if (!isAssetEntryRecord(value.dependencies))
84
+ return null;
85
+ if (!Array.isArray(value.css) || !value.css.every(isCssEntry))
86
+ return null;
87
+ if (!isRouteRecord(value.routes))
88
+ return null;
89
+ if (!isFallback(value.fallback))
90
+ return null;
91
+ return value;
92
+ }
93
+ function isRecord(value) {
94
+ return typeof value === "object" && value !== null && !Array.isArray(value);
95
+ }
96
+ function isAssetEntry(value) {
97
+ return (isRecord(value) &&
98
+ typeof value.contentHash === "string" &&
99
+ typeof value.size === "number" &&
100
+ typeof value.contentType === "string");
101
+ }
102
+ function isAssetEntryRecord(value) {
103
+ return isRecord(value) && Object.values(value).every(isAssetEntry);
104
+ }
105
+ function isCssEntry(value) {
106
+ return (isRecord(value) &&
107
+ typeof value.contentHash === "string" &&
108
+ typeof value.size === "number" &&
109
+ typeof value.contentType === "string" &&
110
+ (value.styleProfileHash === null || typeof value.styleProfileHash === "string"));
111
+ }
112
+ function isRouteRecord(value) {
113
+ if (!isRecord(value))
114
+ return false;
115
+ return Object.values(value).every((entry) => isRecord(entry) &&
116
+ Array.isArray(entry.modules) &&
117
+ entry.modules.every((m) => typeof m === "string") &&
118
+ Array.isArray(entry.css) &&
119
+ entry.css.every((c) => typeof c === "string"));
120
+ }
121
+ function isFallback(value) {
122
+ return (isRecord(value) &&
123
+ value.mode === "jit" &&
124
+ Array.isArray(value.gaps) &&
125
+ value.gaps.every((g) => typeof g === "string"));
126
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/context/render-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EAIL,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,2GAA2G;IAC3G,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,0BAA0B,GACnC,aAAa,CA4Cf;AAoBD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,0BAA0B,GACnC,aAAa,CA8Bf;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,eAAO,MAAM,aAAa,4BAAsB,CAAC;AAEjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAExE"}
1
+ {"version":3,"file":"render-context.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/context/render-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,OAAO,EAIL,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,2GAA2G;IAC3G,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,cAAc,EACnB,OAAO,CAAC,EAAE,0BAA0B,GACnC,aAAa,CAkDf;AAoBD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,eAAe,EACzB,OAAO,CAAC,EAAE,0BAA0B,GACnC,aAAa,CA8Bf;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,eAAO,MAAM,aAAa,4BAAsB,CAAC;AAEjD,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAExE"}
@@ -1,5 +1,6 @@
1
1
  import { INVALID_ARGUMENT } from "../../errors/error-registry.js";
2
2
  import { buildRenderCacheKey, buildRenderCachePrefix, computeContentSourceId, parseRenderCacheKey, } from "../../cache/keys.js";
3
+ import { getReadyManifestForRender } from "../../release-assets/manifest-cache.js";
3
4
  export function createRenderContext(ctx, options) {
4
5
  if (ctx.enriched)
5
6
  return createRenderContextFromEnriched(ctx.enriched, options);
@@ -18,7 +19,8 @@ export function createRenderContext(ctx, options) {
18
19
  const isLocal = !!ctx.isLocalProject;
19
20
  const contentSourceId = computeContentSourceId(isLocal, environment, branch, ctx.releaseId);
20
21
  const releaseKey = getReleaseKey(isLocal, environment, branch, ctx.releaseId);
21
- const cachePrefix = buildRenderCachePrefix(projectId, environment, releaseKey);
22
+ const readyManifest = getReadyManifestForRender(ctx.releaseId);
23
+ const cachePrefix = buildRenderCachePrefix(projectId, environment, releaseKey, readyManifest?.manifestVersion);
22
24
  return {
23
25
  projectId,
24
26
  projectSlug,
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/html.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AA4DlF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIjC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BjE,kBAAkB,CACtB,WAAW,EAAE,cAAc,EAC3B,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAC3C,OAAO,CAAC,cAAc,CAAC;YAqEZ,sBAAsB;YAqDtB,4BAA4B;YAiB5B,wBAAwB;YAmBxB,gBAAgB;YAyBhB,kBAAkB;IAwDhC,OAAO,CAAC,cAAc;YAQR,eAAe;YAaf,gBAAgB;IAgF9B;;;;OAIG;YACW,gBAAgB;CAc/B"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/html.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AA4ElF,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIjC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BjE,kBAAkB,CACtB,WAAW,EAAE,cAAc,EAC3B,OAAO,EAAE,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAC3C,OAAO,CAAC,cAAc,CAAC;YAqEZ,sBAAsB;YAqDtB,4BAA4B;YAiB5B,wBAAwB;YAmBxB,gBAAgB;YAyBhB,kBAAkB;IAwDhC,OAAO,CAAC,cAAc;YAQR,eAAe;YAaf,gBAAgB;IAiF9B;;;;OAIG;YACW,gBAAgB;CAc/B"}
@@ -14,6 +14,21 @@ import { extractProjectClassesForRoute, startPreparedCSSWarmup, startProjectCSSP
14
14
  import { buildHeadElements as buildCollectedHeadElements, mergeFrontmatter as mergeCollectedFrontmatter, } from "./html-head.js";
15
15
  import { mergeImportedCSS as mergeImportedProjectCss } from "./html-imported-css.js";
16
16
  const logger = rendererLogger.component("html-generator");
17
+ /**
18
+ * Resolve the release ID for manifest consumption from render options.
19
+ *
20
+ * Prefers an explicit `releaseId`, then derives it from a production
21
+ * `contentSourceId` of the form `release-<id>`. Returns undefined for
22
+ * preview/local renders so manifest consumption stays inert there.
23
+ */
24
+ function resolveReleaseId(options) {
25
+ if (options?.releaseId)
26
+ return options.releaseId;
27
+ const source = options?.contentSourceId;
28
+ if (source && source.startsWith("release-"))
29
+ return source.slice("release-".length);
30
+ return undefined;
31
+ }
17
32
  function applyExplicitThemeToDocument(html, colorScheme, enabled) {
18
33
  if (!enabled || !colorScheme)
19
34
  return html;
@@ -279,6 +294,7 @@ export class HTMLGenerator {
279
294
  studioEmbed: context.options?.studioEmbed,
280
295
  projectId: context.options?.projectId,
281
296
  projectSlug: context.options?.projectSlug,
297
+ releaseId: resolveReleaseId(context.options),
282
298
  pageId: context.options?.pageId,
283
299
  sourceHash,
284
300
  colorScheme: context.options?.colorScheme,
@@ -45,6 +45,8 @@ export interface RenderOptions {
45
45
  projectSlug?: string;
46
46
  /** Content source identifier for cache isolation (branch name or release ID) */
47
47
  contentSourceId?: string;
48
+ /** Release ID for production renders (drives release asset manifest consumption) */
49
+ releaseId?: string;
48
50
  /** Skip cache check in pipeline (cache already checked by Renderer) */
49
51
  skipCacheCheck?: boolean;
50
52
  /** Skip cache persistence (used for prefetch/aux renders like CSS generation) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC/B,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qDAAqD;IACrD,WAAW,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IACvC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;IACrD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/rendering/orchestrator/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"enriched-context.d.ts","sourceRoot":"","sources":["../../../../src/src/server/context/enriched-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAChG,YAAY,EACV,2BAA2B,EAC3B,eAAe,EACf,WAAW,GACZ,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe,CA8C1F;AAMD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAK/E"}
1
+ {"version":3,"file":"enriched-context.d.ts","sourceRoot":"","sources":["../../../../src/src/server/context/enriched-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEhG,YAAY,EACV,2BAA2B,EAC3B,eAAe,EACf,WAAW,GACZ,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe,CAmD1F;AAMD,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAK/E"}
@@ -1,5 +1,6 @@
1
1
  import { buildRenderCachePrefix } from "../../cache/keys.js";
2
2
  import { INVALID_ARGUMENT } from "../../errors/error-registry.js";
3
+ import { getReadyManifestForRender } from "../../release-assets/manifest-cache.js";
3
4
  export function buildEnrichedContext(options) {
4
5
  if (!options.contentSourceId) {
5
6
  throw INVALID_ARGUMENT.create({ detail: `Missing contentSourceId for ${options.projectSlug}` });
@@ -35,7 +36,7 @@ export function buildEnrichedContext(options) {
35
36
  projectData: options.projectData,
36
37
  adapter: options.adapter,
37
38
  config: options.config,
38
- cachePrefix: buildRenderCachePrefix(options.projectId, options.environment, releaseKey),
39
+ cachePrefix: buildRenderCachePrefix(options.projectId, options.environment, releaseKey, getReadyManifestForRender(options.releaseId)?.manifestVersion),
39
40
  moduleServerUrl: options.moduleServerUrl,
40
41
  nonce: options.nonce,
41
42
  debug: options.debug,
@@ -63,6 +63,11 @@ export interface ProjectRunExecuteHandlerDeps {
63
63
  ctx: HandlerContext;
64
64
  req: Request;
65
65
  }): Promise<ProjectRunExecuteResponse>;
66
+ executeReleaseAssetBuild(input: {
67
+ request: ProjectRunExecuteRequest;
68
+ ctx: HandlerContext;
69
+ req: Request;
70
+ }): Promise<ProjectRunExecuteResponse>;
66
71
  sleep(ms: number): Promise<void>;
67
72
  now(): number;
68
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-run-execute.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/project-run-execute.handler.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAW,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG3F,OAAO,EAAE,KAAK,kBAAkB,EAAoB,MAAM,sCAAsC,CAAC;AAEjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;CACvB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACrC;AAED,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,KAAK,CACH,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IACvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GACA,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACzD,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,eAAe,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GACA,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACtC,oBAAoB,CAClB,MAAM,CAAC,EAAE,oBAAoB,GAC5B,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpD,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,sBAAsB,CAAC,KAAK,EAAE;QAC5B,OAAO,EAAE,wBAAwB,CAAC;QAClC,GAAG,EAAE,cAAc,CAAC;QACpB,GAAG,EAAE,OAAO,CAAC;KACd,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,GAAG,IAAI,MAAM,CAAC;CACf;AAkfD,qBAAa,wBAAyB,SAAQ,WAAW;IAS3C,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,QAAQ,EAAE,eAAe,CAMvB;gBAE2B,IAAI,GAAE,4BAA0C;IAIvE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CAkExE"}
1
+ {"version":3,"file":"project-run-execute.handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/server/handlers/request/project-run-execute.handler.ts"],"names":[],"mappings":"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"}
@@ -404,6 +404,86 @@ async function executeKnowledgeIngestRun(input) {
404
404
  await dntShim.Deno.remove(outputDir, { recursive: true }).catch(() => undefined);
405
405
  }
406
406
  }
407
+ function getNumberConfig(config, keys) {
408
+ for (const key of keys) {
409
+ const value = config[key];
410
+ if (typeof value === "number" && Number.isFinite(value))
411
+ return value;
412
+ if (typeof value === "string" && value.trim() !== "") {
413
+ const parsed = Number.parseInt(value, 10);
414
+ if (Number.isFinite(parsed))
415
+ return parsed;
416
+ }
417
+ }
418
+ return undefined;
419
+ }
420
+ async function executeReleaseAssetBuildRun(input) {
421
+ const startedAt = Date.now();
422
+ const config = input.request.config ?? {};
423
+ const projectReference = input.ctx.projectSlug ?? input.request.projectId;
424
+ const releaseId = getStringConfig(config, ["release_id", "releaseId"]);
425
+ const releaseVersion = getNumberConfig(config, ["release_version", "releaseVersion"]);
426
+ const tempDir = await dntShim.Deno.makeTempDir({ prefix: "veryfront-release-assets-" });
427
+ try {
428
+ if (!releaseId || releaseVersion === undefined) {
429
+ throw new Error("Missing release_id or release_version for release asset build");
430
+ }
431
+ const { VeryfrontApiClient } = await import("../../../platform/adapters/veryfront-api-client/client.js");
432
+ const { resolveProjectReactVersion } = await import("../../../transforms/esm/package-registry.js");
433
+ const { runReleaseAssetBuild } = await import("../../../release-assets/build-executor.js");
434
+ const apiBaseUrl = getEnvironmentConfig().apiBaseUrl;
435
+ const token = input.req.headers.get("x-token") ?? input.ctx.proxyToken ??
436
+ input.ctx.requestContext?.token ?? "";
437
+ if (!token)
438
+ throw new Error("Missing project runtime API token");
439
+ const apiClient = new VeryfrontApiClient({
440
+ apiBaseUrl,
441
+ apiToken: token,
442
+ projectSlug: projectReference,
443
+ projectId: input.ctx.projectId,
444
+ });
445
+ apiClient.setProjectSlug(projectReference);
446
+ const reactVersion = await resolveProjectReactVersion({
447
+ projectDir: input.ctx.projectDir,
448
+ config: input.ctx.config,
449
+ });
450
+ const releaseVersionRef = releaseId;
451
+ const result = await runReleaseAssetBuild({
452
+ projectReference,
453
+ projectId: input.ctx.projectId ?? input.request.projectId,
454
+ releaseId,
455
+ releaseVersion,
456
+ releaseVersionRef,
457
+ reactVersion,
458
+ adapter: input.ctx.adapter,
459
+ client: {
460
+ beginReleaseAssetManifestBuild: (version) => apiClient.beginReleaseAssetManifestBuild(version),
461
+ listAllReleaseFiles: (version) => apiClient.listAllReleaseFiles(version),
462
+ uploadReleaseAsset: (version, hash, contentType, bytes) => apiClient.uploadReleaseAsset(version, hash, contentType, bytes),
463
+ putReleaseAssetManifest: (version, manifest) => apiClient.putReleaseAssetManifest(version, manifest),
464
+ reportReleaseAssetManifestState: (version, state, error) => apiClient.reportReleaseAssetManifestState(version, state, error),
465
+ },
466
+ }, tempDir);
467
+ return {
468
+ success: result.success,
469
+ result,
470
+ error: result.error ?? null,
471
+ logs: null,
472
+ duration_ms: Date.now() - startedAt,
473
+ };
474
+ }
475
+ catch (error) {
476
+ return {
477
+ success: false,
478
+ error: errorMessage(error),
479
+ logs: null,
480
+ duration_ms: Date.now() - startedAt,
481
+ };
482
+ }
483
+ finally {
484
+ await dntShim.Deno.remove(tempDir, { recursive: true }).catch(() => undefined);
485
+ }
486
+ }
407
487
  const defaultDeps = {
408
488
  findTaskById,
409
489
  runTask,
@@ -411,6 +491,7 @@ const defaultDeps = {
411
491
  createWorkflowClient: createRuntimeWorkflowClient,
412
492
  ensureProjectDiscovery,
413
493
  executeKnowledgeIngest: executeKnowledgeIngestRun,
494
+ executeReleaseAssetBuild: executeReleaseAssetBuildRun,
414
495
  sleep: (ms) => new Promise((resolve) => dntShim.setTimeout(resolve, ms)),
415
496
  now: () => Date.now(),
416
497
  };
@@ -454,9 +535,11 @@ export class ProjectRunExecuteHandler extends BaseHandler {
454
535
  try {
455
536
  const response = request.kind === "task" && request.target === "task:knowledge-ingest"
456
537
  ? await this.deps.executeKnowledgeIngest({ request, ctx, req })
457
- : request.kind === "task"
458
- ? await executeTaskRun(request, ctx, this.deps)
459
- : await executeWorkflowRun(request, ctx, this.deps);
538
+ : request.kind === "task" && request.target === "task:release-asset-build"
539
+ ? await this.deps.executeReleaseAssetBuild({ request, ctx, req })
540
+ : request.kind === "task"
541
+ ? await executeTaskRun(request, ctx, this.deps)
542
+ : await executeWorkflowRun(request, ctx, this.deps);
460
543
  return this.respond(builder.json(response, 200));
461
544
  }
462
545
  catch (error) {
@@ -1,3 +1,3 @@
1
1
  /** Shared version value. */
2
- export declare const VERSION = "0.1.764";
2
+ export declare const VERSION = "0.1.765";
3
3
  //# sourceMappingURL=version-constant.d.ts.map
@@ -1,4 +1,4 @@
1
1
  // Keep in sync with deno.json version.
2
2
  // scripts/release.ts updates this constant during releases.
3
3
  /** Shared version value. */
4
- export const VERSION = "0.1.764";
4
+ export const VERSION = "0.1.765";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.764",
3
+ "version": "0.1.765",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",