@vibesdotdev/infra-core 1.0.0-rc.5 → 1.0.0-rc.6

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 (52) hide show
  1. package/dist/deployment-budget.d.ts +319 -0
  2. package/dist/deployment-budget.d.ts.map +1 -0
  3. package/dist/deployment-budget.js +659 -0
  4. package/dist/deployment-budget.js.map +1 -0
  5. package/dist/deployment-graph.d.ts +182 -0
  6. package/dist/deployment-graph.d.ts.map +1 -0
  7. package/dist/deployment-graph.js +685 -0
  8. package/dist/deployment-graph.js.map +1 -0
  9. package/dist/index.d.ts +2 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/infra.plugin.d.ts.map +1 -1
  14. package/dist/infra.plugin.js +2 -0
  15. package/dist/infra.plugin.js.map +1 -1
  16. package/dist/kinds/compute-source.kind.d.ts +21 -4
  17. package/dist/kinds/compute-source.kind.d.ts.map +1 -1
  18. package/dist/kinds/compute-source.kind.js +14 -1
  19. package/dist/kinds/compute-source.kind.js.map +1 -1
  20. package/dist/kinds/database.kind.d.ts +1 -1
  21. package/dist/kinds/dns.kind.d.ts +3 -3
  22. package/dist/kinds/edge-hostname.kind.d.ts +124 -0
  23. package/dist/kinds/edge-hostname.kind.d.ts.map +1 -0
  24. package/dist/kinds/edge-hostname.kind.js +87 -0
  25. package/dist/kinds/edge-hostname.kind.js.map +1 -0
  26. package/dist/kinds/index.d.ts +2 -2
  27. package/dist/kinds/index.d.ts.map +1 -1
  28. package/dist/kinds/index.js +1 -1
  29. package/dist/kinds/index.js.map +1 -1
  30. package/dist/kinds/load-balancer.kind.d.ts +4 -4
  31. package/dist/kinds/sandbox.kind.d.ts +7 -11
  32. package/dist/kinds/sandbox.kind.d.ts.map +1 -1
  33. package/dist/kinds/sandbox.kind.js +6 -13
  34. package/dist/kinds/sandbox.kind.js.map +1 -1
  35. package/dist/kinds/utilization.kind.d.ts +2 -2
  36. package/dist/kinds/web-app.kind.d.ts +3 -0
  37. package/dist/kinds/web-app.kind.d.ts.map +1 -1
  38. package/dist/schemas/deployment-provider.d.ts +46 -1
  39. package/dist/schemas/deployment-provider.d.ts.map +1 -1
  40. package/dist/schemas/deployment-provider.js +15 -2
  41. package/dist/schemas/deployment-provider.js.map +1 -1
  42. package/dist/schemas.d.ts +5 -0
  43. package/dist/schemas.d.ts.map +1 -1
  44. package/dist/schemas.js +14 -0
  45. package/dist/schemas.js.map +1 -1
  46. package/dist/web-app-projection.d.ts +3 -0
  47. package/dist/web-app-projection.d.ts.map +1 -1
  48. package/package.json +14 -8
  49. package/dist/kinds/compute-sources.descriptors.d.ts +0 -45
  50. package/dist/kinds/compute-sources.descriptors.d.ts.map +0 -1
  51. package/dist/kinds/compute-sources.descriptors.js +0 -93
  52. package/dist/kinds/compute-sources.descriptors.js.map +0 -1
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Deployment and build budgets, and the bundling-correctness gate a deploy runs before upload.
3
+ *
4
+ * A Worker bundle is correct when it carries only modules that belong in the scope it serves. A
5
+ * deploy walks the module graph the provider will bundle from the Worker entry and refuses
6
+ * (`deployment-scope-violation`, every violation at once) when that graph reaches:
7
+ * - a built-in module the provider does not supply, or supplies only as a non-functional stub;
8
+ * - a module whose file-scope suffix, or the export name that publishes it, declares a scope the
9
+ * provider's bundle does not serve (`*.consumer.*`, `*.cli.*`, `*.browser.*`), read by the
10
+ * kernel's one scope grammar;
11
+ * - a host package (`vibes.host`) the provider does not run on;
12
+ * - a browser-only target (`?worker`) or a path the app's `forbidden` list names.
13
+ * The provider declares what it supplies, the scopes it serves, how its bundler resolves and its
14
+ * hard upload limits (`infra/deployment-provider` `bundle`); none of it is a constant here.
15
+ *
16
+ * Size is evidence, not a rule. The total, the largest files with their package and importer
17
+ * chain, and the heaviest packages are measured and reported, and a declared `vibes.budgets`
18
+ * ceiling is compared and reported prominently, but a deploy refuses on bytes only past the
19
+ * provider's own hard limit, where the upload would fail anyway (`deployment-platform-limit-exceeded`).
20
+ *
21
+ * "vibes": { "budgets": {
22
+ * "build": { "maxSeconds": 120 },
23
+ * "deployment": {
24
+ * "outputDir": ".svelte-kit/cloudflare",
25
+ * "entry": ".svelte-kit/cloudflare/_worker.js",
26
+ * "maxBytes": 4194304,
27
+ * "forbidden": ["monaco"],
28
+ * "assets": { "maxBytes": 67108864, "maxFileBytes": 26214400 } } } }
29
+ *
30
+ * The deploy driver enforces it before any upload and the workspace check reports it; both read
31
+ * this one owner.
32
+ */
33
+ import * as z from 'zod/v4';
34
+ import { CapabilityError, type ScopeConstraint } from '@vibesdotdev/kernel';
35
+ import { type DeploymentOutputFiles } from './deployment-graph.ts';
36
+ export type { DeploymentOutputEntry, DeploymentOutputFiles } from './deployment-graph.ts';
37
+ export { scanModule } from './deployment-graph.ts';
38
+ /** How many of the largest files and packages a report names. */
39
+ export declare const DEPLOYMENT_LARGEST_FILE_COUNT = 10;
40
+ export declare const PackageBudgetsSchema: z.ZodObject<{
41
+ build: z.ZodOptional<z.ZodObject<{
42
+ maxSeconds: z.ZodOptional<z.ZodNumber>;
43
+ note: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strip>>;
45
+ deployment: z.ZodOptional<z.ZodObject<{
46
+ outputDir: z.ZodOptional<z.ZodString>;
47
+ entry: z.ZodOptional<z.ZodString>;
48
+ maxBytes: z.ZodOptional<z.ZodNumber>;
49
+ forbidden: z.ZodOptional<z.ZodArray<z.ZodString>>;
50
+ assets: z.ZodOptional<z.ZodObject<{
51
+ maxBytes: z.ZodOptional<z.ZodNumber>;
52
+ maxFileBytes: z.ZodOptional<z.ZodNumber>;
53
+ }, z.core.$strip>>;
54
+ note: z.ZodOptional<z.ZodString>;
55
+ }, z.core.$strip>>;
56
+ }, z.core.$strip>;
57
+ export type PackageBudgets = z.infer<typeof PackageBudgetsSchema>;
58
+ /** The manifest fields budgets read. Unknown fields are other owners' business. */
59
+ export declare const BudgetManifestSchema: z.ZodObject<{
60
+ name: z.ZodOptional<z.ZodString>;
61
+ scripts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
62
+ vibes: z.ZodOptional<z.ZodObject<{
63
+ budgets: z.ZodOptional<z.ZodObject<{
64
+ build: z.ZodOptional<z.ZodObject<{
65
+ maxSeconds: z.ZodOptional<z.ZodNumber>;
66
+ note: z.ZodOptional<z.ZodString>;
67
+ }, z.core.$strip>>;
68
+ deployment: z.ZodOptional<z.ZodObject<{
69
+ outputDir: z.ZodOptional<z.ZodString>;
70
+ entry: z.ZodOptional<z.ZodString>;
71
+ maxBytes: z.ZodOptional<z.ZodNumber>;
72
+ forbidden: z.ZodOptional<z.ZodArray<z.ZodString>>;
73
+ assets: z.ZodOptional<z.ZodObject<{
74
+ maxBytes: z.ZodOptional<z.ZodNumber>;
75
+ maxFileBytes: z.ZodOptional<z.ZodNumber>;
76
+ }, z.core.$strip>>;
77
+ note: z.ZodOptional<z.ZodString>;
78
+ }, z.core.$strip>>;
79
+ }, z.core.$strip>>;
80
+ }, z.core.$strip>>;
81
+ }, z.core.$strip>;
82
+ export type BudgetManifest = z.infer<typeof BudgetManifestSchema>;
83
+ /** How a provider supplies one built-in module (named without its `node:` prefix). */
84
+ export declare const BundleBuiltinSchema: z.ZodObject<{
85
+ support: z.ZodEnum<{
86
+ native: "native";
87
+ partial: "partial";
88
+ stub: "stub";
89
+ }>;
90
+ since: z.ZodOptional<z.ZodString>;
91
+ flag: z.ZodOptional<z.ZodString>;
92
+ note: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>;
94
+ export type BundleBuiltin = z.infer<typeof BundleBuiltinSchema>;
95
+ /**
96
+ * What a deployment provider's Worker bundle is, declared by the provider on its
97
+ * `infra/deployment-provider` descriptor: the scopes the bundle serves, how its bundler resolves,
98
+ * which built-in modules it supplies and its hard size limits.
99
+ */
100
+ export declare const DeploymentBundleTargetSchema: z.ZodObject<{
101
+ scopes: z.ZodArray<z.ZodObject<{
102
+ hardware: z.ZodEnum<{
103
+ consumer: "consumer";
104
+ cloud: "cloud";
105
+ }>;
106
+ surface: z.ZodEnum<{
107
+ agent: "agent";
108
+ browser: "browser";
109
+ ssr: "ssr";
110
+ cli: "cli";
111
+ tui: "tui";
112
+ worker: "worker";
113
+ mcp: "mcp";
114
+ bridge: "bridge";
115
+ }>;
116
+ }, z.core.$strip>>;
117
+ conditions: z.ZodArray<z.ZodString>;
118
+ mainFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
119
+ builtins: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
120
+ support: z.ZodEnum<{
121
+ native: "native";
122
+ partial: "partial";
123
+ stub: "stub";
124
+ }>;
125
+ since: z.ZodOptional<z.ZodString>;
126
+ flag: z.ZodOptional<z.ZodString>;
127
+ note: z.ZodOptional<z.ZodString>;
128
+ }, z.core.$strip>>>;
129
+ providedSchemes: z.ZodDefault<z.ZodArray<z.ZodString>>;
130
+ providedModules: z.ZodDefault<z.ZodArray<z.ZodString>>;
131
+ hostPackages: z.ZodDefault<z.ZodArray<z.ZodString>>;
132
+ entryField: z.ZodOptional<z.ZodString>;
133
+ maxScriptBytes: z.ZodOptional<z.ZodNumber>;
134
+ maxAssetFileBytes: z.ZodOptional<z.ZodNumber>;
135
+ }, z.core.$strip>;
136
+ export type DeploymentBundleTarget = z.infer<typeof DeploymentBundleTargetSchema>;
137
+ export type DeploymentBundleTargetInput = z.input<typeof DeploymentBundleTargetSchema>;
138
+ export interface DeploymentBudget {
139
+ readonly outputDir: string;
140
+ readonly entry?: string;
141
+ /** The Worker script size the owner declared, when one is. */
142
+ readonly maxBytes?: number;
143
+ /** Where the declared size came from: the package or its workspace. */
144
+ readonly source?: 'package' | 'workspace';
145
+ readonly forbidden?: readonly string[];
146
+ readonly assets: {
147
+ readonly maxBytes?: number;
148
+ readonly maxFileBytes?: number;
149
+ };
150
+ readonly note?: string;
151
+ }
152
+ export interface BuildBudget {
153
+ readonly maxSeconds: number;
154
+ readonly note?: string;
155
+ }
156
+ export interface BudgetProblem {
157
+ readonly dimension: 'build';
158
+ readonly message: string;
159
+ }
160
+ export interface ResolvedBudgets {
161
+ build?: BuildBudget;
162
+ deployment?: DeploymentBudget;
163
+ readonly problems: BudgetProblem[];
164
+ }
165
+ /** The budgets a manifest declares; a malformed ceiling throws a zod error naming the field. */
166
+ export declare function budgetsOf(manifest: BudgetManifest | undefined): PackageBudgets;
167
+ /**
168
+ * Merge a package's budgets over the workspace defaults. `deployment` resolves whenever an output
169
+ * directory is known: the caller's (a deploy knows what it ships), the package's, or the
170
+ * workspace's, so no deployed package goes unmeasured. A build budget above the workspace's needs
171
+ * the package's own note; deployment sizes are evidence and need none.
172
+ */
173
+ export declare function resolveBudgets(defaults: PackageBudgets, own: PackageBudgets, options?: {
174
+ readonly outputDir?: string;
175
+ }): ResolvedBudgets;
176
+ export declare function humanBytes(bytes: number): string;
177
+ export interface MeasuredFile {
178
+ /** Relative to the measured package, `/`-separated. */
179
+ readonly path: string;
180
+ readonly bytes: number;
181
+ /** The package this file belongs to. */
182
+ readonly package?: string;
183
+ /** The importing chain, entry first and this file last, relative to the measured package. */
184
+ readonly importers?: readonly string[];
185
+ }
186
+ export interface PackageWeight {
187
+ readonly name: string;
188
+ readonly bytes: number;
189
+ }
190
+ export declare const DeploymentViolationRuleSchema: z.ZodEnum<{
191
+ forbidden: "forbidden";
192
+ "builtin-unsupported": "builtin-unsupported";
193
+ "module-scope": "module-scope";
194
+ "host-package": "host-package";
195
+ "browser-only": "browser-only";
196
+ }>;
197
+ export type DeploymentViolationRule = z.infer<typeof DeploymentViolationRuleSchema>;
198
+ /** One module that does not belong in the Worker bundle, and how the graph reached it. */
199
+ export interface DeploymentViolation {
200
+ readonly rule: DeploymentViolationRule;
201
+ /** The module: a built-in specifier, a source module or a file, relative to the measured package. */
202
+ readonly module: string;
203
+ /** The package the offending module belongs to (or, for a built-in, the package that imports it). */
204
+ readonly package?: string;
205
+ /** The importing chain, entry first and the module last. */
206
+ readonly importers: readonly string[];
207
+ readonly detail: string;
208
+ /** How many modules of the same package the same violation covers. */
209
+ readonly occurrences: number;
210
+ }
211
+ /** A built-in the provider supplies only in part: evidence an owner reads, not a refusal. */
212
+ export interface DeploymentNotice {
213
+ readonly module: string;
214
+ readonly package?: string;
215
+ readonly importers: readonly string[];
216
+ readonly detail: string;
217
+ }
218
+ export interface WorkerMeasurement {
219
+ /** The entries the graph was walked from, relative to the package. */
220
+ readonly entries: readonly string[];
221
+ /** Every module the bundler reads, pre-minify and pre-tree-shake. */
222
+ readonly totalBytes: number;
223
+ readonly fileCount: number;
224
+ /** The part already bundled into the app's own output. */
225
+ readonly outputBytes: number;
226
+ /** The part resolved from packages at bundle time. */
227
+ readonly dependencyBytes: number;
228
+ readonly largest: readonly MeasuredFile[];
229
+ readonly packages: readonly PackageWeight[];
230
+ readonly violations: readonly DeploymentViolation[];
231
+ readonly notices: readonly DeploymentNotice[];
232
+ /** Specifiers nothing resolves, with their importer: the provider's bundler would fail on them. */
233
+ readonly unresolved: readonly {
234
+ readonly specifier: string;
235
+ readonly importer: string;
236
+ }[];
237
+ /** Over the owner's declared size: evidence, reported. */
238
+ readonly overBudget: boolean;
239
+ /** Over the provider's hard script limit: the upload would fail. */
240
+ readonly overPlatformLimit: boolean;
241
+ }
242
+ export interface AssetsMeasurement {
243
+ readonly totalBytes: number;
244
+ readonly fileCount: number;
245
+ readonly largest: readonly MeasuredFile[];
246
+ /** Files over the owner's declared per-file size: evidence. */
247
+ readonly oversized: readonly MeasuredFile[];
248
+ /** Files over the provider's hard per-asset limit: the upload would fail. */
249
+ readonly overPlatformLimit: readonly MeasuredFile[];
250
+ readonly overBudget: boolean;
251
+ }
252
+ export interface DeploymentMeasurement {
253
+ readonly outputDirectory: string;
254
+ readonly budget: DeploymentBudget;
255
+ /** The provider's bundle declaration the measurement applied, when the provider declares one. */
256
+ readonly target?: DeploymentBundleTarget;
257
+ /** Absent when no entry is known: the deployment ships no Worker script this owner can find. */
258
+ readonly worker?: WorkerMeasurement;
259
+ readonly assets: AssetsMeasurement;
260
+ }
261
+ declare const ViteManifestSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
262
+ file: z.ZodString;
263
+ src: z.ZodOptional<z.ZodString>;
264
+ name: z.ZodOptional<z.ZodString>;
265
+ isEntry: z.ZodOptional<z.ZodBoolean>;
266
+ imports: z.ZodOptional<z.ZodArray<z.ZodString>>;
267
+ dynamicImports: z.ZodOptional<z.ZodArray<z.ZodString>>;
268
+ }, z.core.$strip>>;
269
+ export type ViteManifest = z.infer<typeof ViteManifestSchema>;
270
+ /** A Vite manifest and the directory its `file` entries are relative to. */
271
+ export interface LocatedViteManifest {
272
+ readonly base: string;
273
+ readonly manifest: ViteManifest;
274
+ }
275
+ /** The importing chain of one Vite manifest key, entry first and the key's own module last. */
276
+ export declare function importerChain(manifest: ViteManifest, own: string): string[];
277
+ /** The npm package a bundled module source comes from; a workspace source keeps its leading path. */
278
+ export declare function packageOfModule(source: string): string;
279
+ /**
280
+ * The scope a file's name declares, read by the kernel's grammar: the scope tokens among the
281
+ * dot-separated segments after its stem (`report.impl.consumer.ts` is `consumer`,
282
+ * `ai.browser.plugin.ts` is `browser`). A file with none is universal.
283
+ */
284
+ export declare function fileScopeOf(path: string): ScopeConstraint | undefined;
285
+ /** A `*.descriptor.*` module: universal by contract, whatever scope tokens its name carries. */
286
+ export declare function isDescriptorFile(path: string): boolean;
287
+ /**
288
+ * The scope an export name claims, read by the same grammar: every scope token among its path
289
+ * and dot segments (`./consumer/plugin` is `consumer`, `./browser-automation/cli.plugin` is `cli`).
290
+ * An export name is an environment claim.
291
+ */
292
+ export declare function exportScopeOf(subpath: string): ScopeConstraint | undefined;
293
+ /** Whether a declared scope admits any scope the bundle serves. Purposes have no bearing on placement. */
294
+ export declare function scopeAdmitsTarget(constraint: ScopeConstraint | undefined, target: Pick<DeploymentBundleTarget, 'scopes'>): boolean;
295
+ /**
296
+ * Measure a built deployment and check its Worker graph. `entries` are the Worker script entries
297
+ * (absolute); the declared `entry` wins over them. A missing output directory is a typed refusal:
298
+ * an unbuilt output is not a small one. Without a provider `target`, the graph is measured and
299
+ * the app's `forbidden` list applies, but no provider scope or built-in rule can.
300
+ */
301
+ export declare function measureDeploymentOutput(input: {
302
+ readonly files: DeploymentOutputFiles;
303
+ readonly packageDir: string;
304
+ readonly outputDirectory: string;
305
+ readonly budget: DeploymentBudget;
306
+ readonly entries?: readonly string[];
307
+ readonly target?: DeploymentBundleTargetInput;
308
+ }): Promise<DeploymentMeasurement>;
309
+ /** One line per violation: rule, module, package, why, and the chain that reached it. */
310
+ export declare function formatDeploymentViolations(violations: readonly DeploymentViolation[]): string[];
311
+ /** The Worker script and static asset report of a measurement: scope violations first, then the size evidence. */
312
+ export declare function formatDeploymentMeasurement(label: string, measurement: DeploymentMeasurement): string;
313
+ /**
314
+ * The typed refusal for a measurement that must not ship. `deployment-scope-violation` lists every
315
+ * module that does not belong; `deployment-platform-limit-exceeded` is a Worker script or asset over
316
+ * the provider's own hard limit. Declared sizes never refuse. Undefined when it may ship.
317
+ */
318
+ export declare function deploymentRefusal(label: string, measurement: DeploymentMeasurement): CapabilityError | undefined;
319
+ //# sourceMappingURL=deployment-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment-budget.d.ts","sourceRoot":"","sources":["../src/deployment-budget.ts"],"names":[],"mappings":"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"}