@vibesdotdev/infra-core 0.0.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/README.md +78 -0
- package/SPEC.md +169 -0
- package/dist/bootstrap/index.d.ts +5 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +4 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/seed.descriptor.d.ts +31 -0
- package/dist/bootstrap/seed.descriptor.d.ts.map +1 -0
- package/dist/bootstrap/seed.descriptor.js +18 -0
- package/dist/bootstrap/seed.descriptor.js.map +1 -0
- package/dist/bootstrap/seed.impl-shape.d.ts +5 -0
- package/dist/bootstrap/seed.impl-shape.d.ts.map +1 -0
- package/dist/bootstrap/seed.impl-shape.js +2 -0
- package/dist/bootstrap/seed.impl-shape.js.map +1 -0
- package/dist/bootstrap/seed.kind.d.ts +5 -0
- package/dist/bootstrap/seed.kind.d.ts.map +1 -0
- package/dist/bootstrap/seed.kind.js +14 -0
- package/dist/bootstrap/seed.kind.js.map +1 -0
- package/dist/bootstrap/seed.runner.d.ts +18 -0
- package/dist/bootstrap/seed.runner.d.ts.map +1 -0
- package/dist/bootstrap/seed.runner.js +59 -0
- package/dist/bootstrap/seed.runner.js.map +1 -0
- package/dist/credentials/resolve.d.ts +80 -0
- package/dist/credentials/resolve.d.ts.map +1 -0
- package/dist/credentials/resolve.js +128 -0
- package/dist/credentials/resolve.js.map +1 -0
- package/dist/deployment.d.ts +9 -0
- package/dist/deployment.d.ts.map +1 -0
- package/dist/deployment.js +25 -0
- package/dist/deployment.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/infra.plugin.d.ts +18 -0
- package/dist/infra.plugin.d.ts.map +1 -0
- package/dist/infra.plugin.js +52 -0
- package/dist/infra.plugin.js.map +1 -0
- package/dist/kinds/alerts.kind.d.ts +192 -0
- package/dist/kinds/alerts.kind.d.ts.map +1 -0
- package/dist/kinds/alerts.kind.js +116 -0
- package/dist/kinds/alerts.kind.js.map +1 -0
- package/dist/kinds/artifact.kind.d.ts +96 -0
- package/dist/kinds/artifact.kind.d.ts.map +1 -0
- package/dist/kinds/artifact.kind.js +53 -0
- package/dist/kinds/artifact.kind.js.map +1 -0
- package/dist/kinds/cache.kind.d.ts +128 -0
- package/dist/kinds/cache.kind.d.ts.map +1 -0
- package/dist/kinds/cache.kind.js +90 -0
- package/dist/kinds/cache.kind.js.map +1 -0
- package/dist/kinds/database.kind.d.ts +141 -0
- package/dist/kinds/database.kind.d.ts.map +1 -0
- package/dist/kinds/database.kind.js +103 -0
- package/dist/kinds/database.kind.js.map +1 -0
- package/dist/kinds/discovery.d.ts +20 -0
- package/dist/kinds/discovery.d.ts.map +1 -0
- package/dist/kinds/discovery.js +25 -0
- package/dist/kinds/discovery.js.map +1 -0
- package/dist/kinds/git-hosting.kind.d.ts +98 -0
- package/dist/kinds/git-hosting.kind.d.ts.map +1 -0
- package/dist/kinds/git-hosting.kind.js +81 -0
- package/dist/kinds/git-hosting.kind.js.map +1 -0
- package/dist/kinds/index.d.ts +16 -0
- package/dist/kinds/index.d.ts.map +1 -0
- package/dist/kinds/index.js +16 -0
- package/dist/kinds/index.js.map +1 -0
- package/dist/kinds/logs.kind.d.ts +91 -0
- package/dist/kinds/logs.kind.d.ts.map +1 -0
- package/dist/kinds/logs.kind.js +73 -0
- package/dist/kinds/logs.kind.js.map +1 -0
- package/dist/kinds/object-storage.kind.d.ts +85 -0
- package/dist/kinds/object-storage.kind.d.ts.map +1 -0
- package/dist/kinds/object-storage.kind.js +81 -0
- package/dist/kinds/object-storage.kind.js.map +1 -0
- package/dist/kinds/observability.kind.d.ts +176 -0
- package/dist/kinds/observability.kind.d.ts.map +1 -0
- package/dist/kinds/observability.kind.js +120 -0
- package/dist/kinds/observability.kind.js.map +1 -0
- package/dist/kinds/package-registry.kind.d.ts +89 -0
- package/dist/kinds/package-registry.kind.d.ts.map +1 -0
- package/dist/kinds/package-registry.kind.js +78 -0
- package/dist/kinds/package-registry.kind.js.map +1 -0
- package/dist/kinds/queue.kind.d.ts +113 -0
- package/dist/kinds/queue.kind.d.ts.map +1 -0
- package/dist/kinds/queue.kind.js +86 -0
- package/dist/kinds/queue.kind.js.map +1 -0
- package/dist/kinds/rum.kind.d.ts +113 -0
- package/dist/kinds/rum.kind.d.ts.map +1 -0
- package/dist/kinds/rum.kind.js +80 -0
- package/dist/kinds/rum.kind.js.map +1 -0
- package/dist/kinds/sandbox.kind.d.ts +111 -0
- package/dist/kinds/sandbox.kind.d.ts.map +1 -0
- package/dist/kinds/sandbox.kind.js +94 -0
- package/dist/kinds/sandbox.kind.js.map +1 -0
- package/dist/kinds/web-app.kind.d.ts +99 -0
- package/dist/kinds/web-app.kind.d.ts.map +1 -0
- package/dist/kinds/web-app.kind.js +86 -0
- package/dist/kinds/web-app.kind.js.map +1 -0
- package/dist/kinds/worker.kind.d.ts +244 -0
- package/dist/kinds/worker.kind.d.ts.map +1 -0
- package/dist/kinds/worker.kind.js +171 -0
- package/dist/kinds/worker.kind.js.map +1 -0
- package/dist/schemas.d.ts +125 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +102 -0
- package/dist/schemas.js.map +1 -0
- package/package.json +92 -0
- package/src/bootstrap/index.ts +15 -0
- package/src/bootstrap/seed.descriptor.ts +24 -0
- package/src/bootstrap/seed.impl-shape.ts +5 -0
- package/src/bootstrap/seed.kind.ts +26 -0
- package/src/bootstrap/seed.runner.ts +87 -0
- package/src/credentials/resolve.ts +205 -0
- package/src/deployment.ts +57 -0
- package/src/index.ts +149 -0
- package/src/infra.plugin.ts +54 -0
- package/src/kinds/alerts.kind.ts +164 -0
- package/src/kinds/artifact.kind.ts +96 -0
- package/src/kinds/cache.kind.ts +104 -0
- package/src/kinds/database.kind.ts +120 -0
- package/src/kinds/discovery.ts +26 -0
- package/src/kinds/git-hosting.kind.ts +100 -0
- package/src/kinds/index.ts +139 -0
- package/src/kinds/logs.kind.ts +104 -0
- package/src/kinds/object-storage.kind.ts +101 -0
- package/src/kinds/observability.kind.ts +178 -0
- package/src/kinds/package-registry.kind.ts +95 -0
- package/src/kinds/queue.kind.ts +102 -0
- package/src/kinds/rum.kind.ts +135 -0
- package/src/kinds/sandbox.kind.ts +115 -0
- package/src/kinds/web-app.kind.ts +103 -0
- package/src/kinds/worker.kind.ts +203 -0
- package/src/schemas.ts +127 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/object-storage
|
|
3
|
+
*
|
|
4
|
+
* Describes object/blob storage.
|
|
5
|
+
*
|
|
6
|
+
* Schema shape: strict common base + `config` discriminated union.
|
|
7
|
+
*
|
|
8
|
+
* - The base defines fields universal across adapters: id/kind/name +
|
|
9
|
+
* the storage shape (bucket, cors, lifecycle, publicAccess).
|
|
10
|
+
* - Adapter-specific fields (region, acl, …) live under `config`.
|
|
11
|
+
* Each adapter package defines its own concrete schema.
|
|
12
|
+
*/
|
|
13
|
+
import * as z from 'zod/v4';
|
|
14
|
+
import type { RuntimeKindDescriptorRecord } from '@vibesdotdev/runtime/schemas/kind';
|
|
15
|
+
import type { RuntimeDescriptor } from '@vibesdotdev/runtime/schemas/descriptor';
|
|
16
|
+
export declare const CorsRuleSchema: z.ZodObject<{
|
|
17
|
+
allowedOrigins: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
18
|
+
allowedMethods: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
19
|
+
allowedHeaders: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
20
|
+
maxAgeSeconds: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export type CorsRule = z.infer<typeof CorsRuleSchema>;
|
|
23
|
+
export declare const LifecycleRuleSchema: z.ZodObject<{
|
|
24
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
25
|
+
expiration: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
transition: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
days: z.ZodNumber;
|
|
28
|
+
storageClass: z.ZodString;
|
|
29
|
+
}, z.core.$strip>>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
export type LifecycleRule = z.infer<typeof LifecycleRuleSchema>;
|
|
32
|
+
export declare const DOSpacesConfigSchema: z.ZodObject<{
|
|
33
|
+
region: z.ZodDefault<z.ZodString>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export declare const CloudflareR2ConfigSchema: z.ZodObject<{}, z.core.$strip>;
|
|
36
|
+
export declare const ObjectStorageConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
37
|
+
region: z.ZodDefault<z.ZodString>;
|
|
38
|
+
adapter: z.ZodLiteral<"do-spaces">;
|
|
39
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
40
|
+
adapter: z.ZodLiteral<"cloudflare-r2">;
|
|
41
|
+
}, z.core.$strip>]>;
|
|
42
|
+
export declare const ObjectStorageDescriptorSchema: z.ZodObject<{
|
|
43
|
+
id: z.ZodString;
|
|
44
|
+
name: z.ZodOptional<z.ZodString>;
|
|
45
|
+
description: z.ZodOptional<z.ZodString>;
|
|
46
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
47
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
48
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
49
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
51
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
52
|
+
kind: z.ZodLiteral<"infra/object-storage">;
|
|
53
|
+
bucket: z.ZodOptional<z.ZodString>;
|
|
54
|
+
cors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
55
|
+
allowedOrigins: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
56
|
+
allowedMethods: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
57
|
+
allowedHeaders: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
58
|
+
maxAgeSeconds: z.ZodOptional<z.ZodNumber>;
|
|
59
|
+
}, z.core.$strip>>>;
|
|
60
|
+
lifecycle: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
61
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
62
|
+
expiration: z.ZodOptional<z.ZodNumber>;
|
|
63
|
+
transition: z.ZodOptional<z.ZodObject<{
|
|
64
|
+
days: z.ZodNumber;
|
|
65
|
+
storageClass: z.ZodString;
|
|
66
|
+
}, z.core.$strip>>;
|
|
67
|
+
}, z.core.$strip>>>;
|
|
68
|
+
publicAccess: z.ZodOptional<z.ZodBoolean>;
|
|
69
|
+
config: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
70
|
+
region: z.ZodDefault<z.ZodString>;
|
|
71
|
+
adapter: z.ZodLiteral<"do-spaces">;
|
|
72
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
73
|
+
adapter: z.ZodLiteral<"cloudflare-r2">;
|
|
74
|
+
}, z.core.$strip>]>>;
|
|
75
|
+
}, z.core.$strip>;
|
|
76
|
+
export type ObjectStorageDescriptor = z.infer<typeof ObjectStorageDescriptorSchema>;
|
|
77
|
+
declare class DefaultObjectStorageImplementation {
|
|
78
|
+
readonly descriptor: RuntimeDescriptor;
|
|
79
|
+
readonly context: unknown;
|
|
80
|
+
constructor(descriptor: RuntimeDescriptor, context: unknown);
|
|
81
|
+
get config(): ObjectStorageDescriptor;
|
|
82
|
+
}
|
|
83
|
+
export declare const objectStorageKind: RuntimeKindDescriptorRecord<DefaultObjectStorageImplementation>;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=object-storage.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-storage.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/object-storage.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAErF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,eAAO,MAAM,cAAc;;;;;iBAKzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,mBAAmB;;;;;;;iBAY9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAkBhE,eAAO,MAAM,oBAAoB;;iBAG/B,CAAC;AAEH,eAAO,MAAM,wBAAwB,gCAAe,CAAC;AAErD,eAAO,MAAM,yBAAyB;;;;;mBAGpC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMxC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,cAAM,kCAAkC;aAEtB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,OAAO;gBADhB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,OAAO;IAGjC,IAAI,MAAM,IAAI,uBAAuB,CAEpC;CACD;AAED,eAAO,MAAM,iBAAiB,iEAS5B,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/object-storage
|
|
3
|
+
*
|
|
4
|
+
* Describes object/blob storage.
|
|
5
|
+
*
|
|
6
|
+
* Schema shape: strict common base + `config` discriminated union.
|
|
7
|
+
*
|
|
8
|
+
* - The base defines fields universal across adapters: id/kind/name +
|
|
9
|
+
* the storage shape (bucket, cors, lifecycle, publicAccess).
|
|
10
|
+
* - Adapter-specific fields (region, acl, …) live under `config`.
|
|
11
|
+
* Each adapter package defines its own concrete schema.
|
|
12
|
+
*/
|
|
13
|
+
import * as z from 'zod/v4';
|
|
14
|
+
import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
|
|
15
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
|
|
16
|
+
import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
|
|
17
|
+
export const CorsRuleSchema = z.object({
|
|
18
|
+
allowedOrigins: z.array(z.string()).default(['*']),
|
|
19
|
+
allowedMethods: z.array(z.string()).default(['GET']),
|
|
20
|
+
allowedHeaders: z.array(z.string()).optional(),
|
|
21
|
+
maxAgeSeconds: z.number().int().nonnegative().optional()
|
|
22
|
+
});
|
|
23
|
+
export const LifecycleRuleSchema = z.object({
|
|
24
|
+
/** Prefix filter for matching objects */
|
|
25
|
+
prefix: z.string().optional(),
|
|
26
|
+
/** Days until expiration */
|
|
27
|
+
expiration: z.number().int().positive().optional(),
|
|
28
|
+
/** Storage class transition */
|
|
29
|
+
transition: z
|
|
30
|
+
.object({
|
|
31
|
+
days: z.number().int().positive(),
|
|
32
|
+
storageClass: z.string().min(1)
|
|
33
|
+
})
|
|
34
|
+
.optional()
|
|
35
|
+
});
|
|
36
|
+
const ObjectStorageBaseSchema = RuntimeDescriptorSchema.extend({
|
|
37
|
+
kind: z.literal('infra/object-storage'),
|
|
38
|
+
/** Bucket name (defaults to descriptor id when omitted). */
|
|
39
|
+
bucket: z.string().min(1).optional(),
|
|
40
|
+
/** CORS rules. */
|
|
41
|
+
cors: z.array(CorsRuleSchema).optional(),
|
|
42
|
+
/** Lifecycle rules. */
|
|
43
|
+
lifecycle: z.array(LifecycleRuleSchema).optional(),
|
|
44
|
+
/** Whether the bucket is publicly readable. */
|
|
45
|
+
publicAccess: z.boolean().optional()
|
|
46
|
+
});
|
|
47
|
+
export const DOSpacesConfigSchema = z.object({
|
|
48
|
+
/** DO region (default: nyc3). */
|
|
49
|
+
region: z.string().min(1).default('nyc3')
|
|
50
|
+
});
|
|
51
|
+
export const CloudflareR2ConfigSchema = z.object({});
|
|
52
|
+
export const ObjectStorageConfigSchema = z.union([
|
|
53
|
+
DOSpacesConfigSchema.extend({ adapter: z.literal('do-spaces') }),
|
|
54
|
+
CloudflareR2ConfigSchema.extend({ adapter: z.literal('cloudflare-r2') })
|
|
55
|
+
]);
|
|
56
|
+
export const ObjectStorageDescriptorSchema = ObjectStorageBaseSchema.extend({
|
|
57
|
+
/**
|
|
58
|
+
* Adapter-specific configuration. Discriminated union — each adapter
|
|
59
|
+
* package defines its own config schema under its discriminator key.
|
|
60
|
+
*/
|
|
61
|
+
config: ObjectStorageConfigSchema.optional()
|
|
62
|
+
});
|
|
63
|
+
class DefaultObjectStorageImplementation {
|
|
64
|
+
descriptor;
|
|
65
|
+
context;
|
|
66
|
+
constructor(descriptor, context) {
|
|
67
|
+
this.descriptor = descriptor;
|
|
68
|
+
this.context = context;
|
|
69
|
+
}
|
|
70
|
+
get config() {
|
|
71
|
+
return this.descriptor;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export const objectStorageKind = createRuntimeKind({
|
|
75
|
+
id: 'infra/object-storage',
|
|
76
|
+
descriptorSchema: ObjectStorageDescriptorSchema,
|
|
77
|
+
defaultImplementation: DefaultObjectStorageImplementation,
|
|
78
|
+
discoveryPattern: INFRA_DISCOVERY_PATTERN,
|
|
79
|
+
extractStem
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=object-storage.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-storage.kind.js","sourceRoot":"","sources":["../../src/kinds/object-storage.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACxD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,yCAAyC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,4BAA4B;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAClD,+BAA+B;IAC/B,UAAU,EAAE,CAAC;SACX,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC/B,CAAC;SACD,QAAQ,EAAE;CACZ,CAAC,CAAC;AAGH,MAAM,uBAAuB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAEvC,4DAA4D;IAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAEpC,kBAAkB;IAClB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAExC,uBAAuB;IACvB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;IAElD,+CAA+C;IAC/C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,iCAAiC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC;IAChD,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IAChE,wBAAwB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CACxE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,uBAAuB,CAAC,MAAM,CAAC;IAC3E;;;OAGG;IACH,MAAM,EAAE,yBAAyB,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAIH,MAAM,kCAAkC;IAEtB;IACA;IAFjB,YACiB,UAA6B,EAC7B,OAAgB;QADhB,eAAU,GAAV,UAAU,CAAmB;QAC7B,YAAO,GAAP,OAAO,CAAS;IAC9B,CAAC;IAEJ,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,UAAqC,CAAC;IACnD,CAAC;CACD;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAGhD;IACD,EAAE,EAAE,sBAAsB;IAC1B,gBAAgB,EAAE,6BAA6B;IAC/C,qBAAqB,EAAE,kCAAkC;IACzD,gBAAgB,EAAE,uBAAuB;IACzC,WAAW;CACX,CAAC,CAAC"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra Observability Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic per-Worker (or fleet-wide) observability config —
|
|
5
|
+
* sampling rate, log/trace toggles, export destinations. Decouples
|
|
6
|
+
* observability concerns from the `infra/web-app` descriptor so:
|
|
7
|
+
*
|
|
8
|
+
* 1. The CLI can introspect + write settings across the entire fleet
|
|
9
|
+
* without going through deploy.
|
|
10
|
+
* 2. Cross-cutting policies (e.g. "10% sampling on every customer-facing
|
|
11
|
+
* Worker") have a single declarative shape.
|
|
12
|
+
* 3. Provider impls map onto the native control plane (CF Workers
|
|
13
|
+
* Observability, DO Monitoring, Datadog, etc.).
|
|
14
|
+
*
|
|
15
|
+
* CLI surface (`vibes infra observability …`):
|
|
16
|
+
* status [--worker] read current settings
|
|
17
|
+
* set [--worker] --sampling 0.1 write new settings
|
|
18
|
+
* exports list|add|remove (Phase 2.5; not yet wired)
|
|
19
|
+
*
|
|
20
|
+
* Production Workers consume settings via their wrangler.jsonc; the CLI
|
|
21
|
+
* writes directly to the provider API for immediate effect. To avoid
|
|
22
|
+
* drift, `vibes infra deploy regenerate` is the canonical declarative
|
|
23
|
+
* path — the CLI here is for ops-time tuning between deploys.
|
|
24
|
+
*/
|
|
25
|
+
import * as z from 'zod/v4';
|
|
26
|
+
declare const ObservabilityScopeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
27
|
+
kind: z.ZodLiteral<"worker">;
|
|
28
|
+
workerName: z.ZodString;
|
|
29
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
30
|
+
kind: z.ZodLiteral<"account-wide">;
|
|
31
|
+
filter: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strip>], "kind">;
|
|
33
|
+
export type ObservabilityScope = z.infer<typeof ObservabilityScopeSchema>;
|
|
34
|
+
/**
|
|
35
|
+
* Standard observability settings shape. Provider impls translate
|
|
36
|
+
* these onto native fields (CF: `observability.head_sampling_rate`,
|
|
37
|
+
* Datadog: `apm_sampling_rate`, etc.).
|
|
38
|
+
*/
|
|
39
|
+
declare const ObservabilitySettingsSchema: z.ZodObject<{
|
|
40
|
+
logs: z.ZodOptional<z.ZodObject<{
|
|
41
|
+
enabled: z.ZodBoolean;
|
|
42
|
+
headSamplingRate: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
structured: z.ZodOptional<z.ZodBoolean>;
|
|
44
|
+
persist: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
+
invocationLogs: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
47
|
+
traces: z.ZodOptional<z.ZodObject<{
|
|
48
|
+
enabled: z.ZodBoolean;
|
|
49
|
+
headSamplingRate: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
persist: z.ZodOptional<z.ZodBoolean>;
|
|
51
|
+
exporter: z.ZodOptional<z.ZodObject<{
|
|
52
|
+
kind: z.ZodEnum<{
|
|
53
|
+
otlp: "otlp";
|
|
54
|
+
datadog: "datadog";
|
|
55
|
+
jaeger: "jaeger";
|
|
56
|
+
}>;
|
|
57
|
+
endpoint: z.ZodString;
|
|
58
|
+
tokenSecretKey: z.ZodOptional<z.ZodString>;
|
|
59
|
+
}, z.core.$strip>>;
|
|
60
|
+
}, z.core.$strip>>;
|
|
61
|
+
exports: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
62
|
+
kind: z.ZodLiteral<"logflare">;
|
|
63
|
+
tokenSecretKey: z.ZodString;
|
|
64
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
65
|
+
kind: z.ZodLiteral<"datadog">;
|
|
66
|
+
apiKeySecretKey: z.ZodString;
|
|
67
|
+
site: z.ZodString;
|
|
68
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
69
|
+
kind: z.ZodLiteral<"logpush">;
|
|
70
|
+
destination: z.ZodString;
|
|
71
|
+
dataset: z.ZodString;
|
|
72
|
+
}, z.core.$strip>], "kind">>>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
export type ObservabilitySettings = z.infer<typeof ObservabilitySettingsSchema>;
|
|
75
|
+
declare const ObservabilityBaseSchema: z.ZodObject<{
|
|
76
|
+
id: z.ZodString;
|
|
77
|
+
name: z.ZodOptional<z.ZodString>;
|
|
78
|
+
description: z.ZodOptional<z.ZodString>;
|
|
79
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
80
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
81
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
82
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
84
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
85
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
86
|
+
kind: z.ZodLiteral<"infra/observability">;
|
|
87
|
+
adapter: z.ZodString;
|
|
88
|
+
adapterConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
89
|
+
environment: z.ZodDefault<z.ZodString>;
|
|
90
|
+
defaultScope: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
91
|
+
kind: z.ZodLiteral<"worker">;
|
|
92
|
+
workerName: z.ZodString;
|
|
93
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
94
|
+
kind: z.ZodLiteral<"account-wide">;
|
|
95
|
+
filter: z.ZodOptional<z.ZodString>;
|
|
96
|
+
}, z.core.$strip>], "kind">>;
|
|
97
|
+
settings: z.ZodOptional<z.ZodObject<{
|
|
98
|
+
logs: z.ZodOptional<z.ZodObject<{
|
|
99
|
+
enabled: z.ZodBoolean;
|
|
100
|
+
headSamplingRate: z.ZodOptional<z.ZodNumber>;
|
|
101
|
+
structured: z.ZodOptional<z.ZodBoolean>;
|
|
102
|
+
persist: z.ZodOptional<z.ZodBoolean>;
|
|
103
|
+
invocationLogs: z.ZodOptional<z.ZodBoolean>;
|
|
104
|
+
}, z.core.$strip>>;
|
|
105
|
+
traces: z.ZodOptional<z.ZodObject<{
|
|
106
|
+
enabled: z.ZodBoolean;
|
|
107
|
+
headSamplingRate: z.ZodOptional<z.ZodNumber>;
|
|
108
|
+
persist: z.ZodOptional<z.ZodBoolean>;
|
|
109
|
+
exporter: z.ZodOptional<z.ZodObject<{
|
|
110
|
+
kind: z.ZodEnum<{
|
|
111
|
+
otlp: "otlp";
|
|
112
|
+
datadog: "datadog";
|
|
113
|
+
jaeger: "jaeger";
|
|
114
|
+
}>;
|
|
115
|
+
endpoint: z.ZodString;
|
|
116
|
+
tokenSecretKey: z.ZodOptional<z.ZodString>;
|
|
117
|
+
}, z.core.$strip>>;
|
|
118
|
+
}, z.core.$strip>>;
|
|
119
|
+
exports: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
120
|
+
kind: z.ZodLiteral<"logflare">;
|
|
121
|
+
tokenSecretKey: z.ZodString;
|
|
122
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
123
|
+
kind: z.ZodLiteral<"datadog">;
|
|
124
|
+
apiKeySecretKey: z.ZodString;
|
|
125
|
+
site: z.ZodString;
|
|
126
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
127
|
+
kind: z.ZodLiteral<"logpush">;
|
|
128
|
+
destination: z.ZodString;
|
|
129
|
+
dataset: z.ZodString;
|
|
130
|
+
}, z.core.$strip>], "kind">>>;
|
|
131
|
+
}, z.core.$strip>>;
|
|
132
|
+
}, z.core.$strip>;
|
|
133
|
+
export type InfraObservabilityDescriptor = z.infer<typeof ObservabilityBaseSchema>;
|
|
134
|
+
export type InfraObservabilityDescriptorInput = z.input<typeof ObservabilityBaseSchema>;
|
|
135
|
+
/**
|
|
136
|
+
* Snapshot of the live settings for a single Worker (or other scope).
|
|
137
|
+
* Returned by `getStatus`; consumed by the CLI for table-rendering.
|
|
138
|
+
*/
|
|
139
|
+
export interface ObservabilitySnapshot {
|
|
140
|
+
workerName: string;
|
|
141
|
+
settings: ObservabilitySettings;
|
|
142
|
+
/** Last-modified timestamp from the provider, when available. */
|
|
143
|
+
modifiedAt?: string;
|
|
144
|
+
}
|
|
145
|
+
export interface SetObservabilityInput {
|
|
146
|
+
scope: ObservabilityScope;
|
|
147
|
+
settings: ObservabilitySettings;
|
|
148
|
+
/** Skip Workers that already match desired state. Defaults to true. */
|
|
149
|
+
skipUnchanged?: boolean;
|
|
150
|
+
}
|
|
151
|
+
export interface SetObservabilityResult {
|
|
152
|
+
changed: Array<{
|
|
153
|
+
workerName: string;
|
|
154
|
+
before: ObservabilitySettings;
|
|
155
|
+
after: ObservabilitySettings;
|
|
156
|
+
}>;
|
|
157
|
+
unchanged: string[];
|
|
158
|
+
failed: Array<{
|
|
159
|
+
workerName: string;
|
|
160
|
+
error: string;
|
|
161
|
+
}>;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Implementation contract every provider implements.
|
|
165
|
+
*/
|
|
166
|
+
export interface ObservabilityImplementation {
|
|
167
|
+
/** Read current settings for a scope. account-wide → one snapshot per Worker. */
|
|
168
|
+
getStatus(scope: ObservabilityScope): Promise<ObservabilitySnapshot[]>;
|
|
169
|
+
/** Apply settings to a scope. Returns per-Worker outcome. */
|
|
170
|
+
set(input: SetObservabilityInput): Promise<SetObservabilityResult>;
|
|
171
|
+
}
|
|
172
|
+
export declare const observabilityKind: import("@vibesdotdev/runtime").RuntimeKindDescriptorRecord<ObservabilityImplementation>;
|
|
173
|
+
export type InfraObservabilityKind = InfraObservabilityDescriptor;
|
|
174
|
+
export type InfraObservabilityKindInput = InfraObservabilityDescriptorInput;
|
|
175
|
+
export { ObservabilityBaseSchema as InfraObservabilityDescriptorSchema, ObservabilityScopeSchema, ObservabilitySettingsSchema };
|
|
176
|
+
//# sourceMappingURL=observability.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/observability.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,QAAA,MAAM,wBAAwB;;;;;;2BAU5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;GAIG;AACH,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmD/B,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiB3B,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACnF,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExF;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,qBAAqB,CAAC;IAChC,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,qBAAqB,CAAC;QAAC,KAAK,EAAE,qBAAqB,CAAA;KAAE,CAAC,CAAC;IACpG,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,iFAAiF;IACjF,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACvE,6DAA6D;IAC7D,GAAG,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACnE;AAED,eAAO,MAAM,iBAAiB,yFAQ5B,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AAClE,MAAM,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;AAE5E,OAAO,EACN,uBAAuB,IAAI,kCAAkC,EAC7D,wBAAwB,EACxB,2BAA2B,EAC3B,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra Observability Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic per-Worker (or fleet-wide) observability config —
|
|
5
|
+
* sampling rate, log/trace toggles, export destinations. Decouples
|
|
6
|
+
* observability concerns from the `infra/web-app` descriptor so:
|
|
7
|
+
*
|
|
8
|
+
* 1. The CLI can introspect + write settings across the entire fleet
|
|
9
|
+
* without going through deploy.
|
|
10
|
+
* 2. Cross-cutting policies (e.g. "10% sampling on every customer-facing
|
|
11
|
+
* Worker") have a single declarative shape.
|
|
12
|
+
* 3. Provider impls map onto the native control plane (CF Workers
|
|
13
|
+
* Observability, DO Monitoring, Datadog, etc.).
|
|
14
|
+
*
|
|
15
|
+
* CLI surface (`vibes infra observability …`):
|
|
16
|
+
* status [--worker] read current settings
|
|
17
|
+
* set [--worker] --sampling 0.1 write new settings
|
|
18
|
+
* exports list|add|remove (Phase 2.5; not yet wired)
|
|
19
|
+
*
|
|
20
|
+
* Production Workers consume settings via their wrangler.jsonc; the CLI
|
|
21
|
+
* writes directly to the provider API for immediate effect. To avoid
|
|
22
|
+
* drift, `vibes infra deploy regenerate` is the canonical declarative
|
|
23
|
+
* path — the CLI here is for ops-time tuning between deploys.
|
|
24
|
+
*/
|
|
25
|
+
import * as z from 'zod/v4';
|
|
26
|
+
import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
|
|
27
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
|
|
28
|
+
import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
|
|
29
|
+
const ObservabilityScopeSchema = z.discriminatedUnion('kind', [
|
|
30
|
+
z.object({
|
|
31
|
+
kind: z.literal('worker'),
|
|
32
|
+
workerName: z.string().min(1)
|
|
33
|
+
}),
|
|
34
|
+
z.object({
|
|
35
|
+
kind: z.literal('account-wide'),
|
|
36
|
+
/** When set, restrict the fleet sweep to workers matching the glob. */
|
|
37
|
+
filter: z.string().optional()
|
|
38
|
+
})
|
|
39
|
+
]);
|
|
40
|
+
/**
|
|
41
|
+
* Standard observability settings shape. Provider impls translate
|
|
42
|
+
* these onto native fields (CF: `observability.head_sampling_rate`,
|
|
43
|
+
* Datadog: `apm_sampling_rate`, etc.).
|
|
44
|
+
*/
|
|
45
|
+
const ObservabilitySettingsSchema = z.object({
|
|
46
|
+
logs: z
|
|
47
|
+
.object({
|
|
48
|
+
enabled: z.boolean(),
|
|
49
|
+
/**
|
|
50
|
+
* Head sampling rate, 0..1. Providers without head-sampling
|
|
51
|
+
* (e.g. Logpush-only setups) treat this as a hint and may
|
|
52
|
+
* implement tail-sampling at the destination instead.
|
|
53
|
+
*/
|
|
54
|
+
headSamplingRate: z.number().min(0).max(1).optional(),
|
|
55
|
+
structured: z.boolean().optional(),
|
|
56
|
+
/** Persist logs for dashboard view (CF: observability.logs.persist). */
|
|
57
|
+
persist: z.boolean().optional(),
|
|
58
|
+
/** Capture per-request invocation envelopes (CF only). */
|
|
59
|
+
invocationLogs: z.boolean().optional()
|
|
60
|
+
})
|
|
61
|
+
.optional(),
|
|
62
|
+
traces: z
|
|
63
|
+
.object({
|
|
64
|
+
enabled: z.boolean(),
|
|
65
|
+
headSamplingRate: z.number().min(0).max(1).optional(),
|
|
66
|
+
persist: z.boolean().optional(),
|
|
67
|
+
exporter: z
|
|
68
|
+
.object({
|
|
69
|
+
kind: z.enum(['otlp', 'datadog', 'jaeger']),
|
|
70
|
+
endpoint: z.string().url(),
|
|
71
|
+
tokenSecretKey: z.string().optional()
|
|
72
|
+
})
|
|
73
|
+
.optional()
|
|
74
|
+
})
|
|
75
|
+
.optional(),
|
|
76
|
+
exports: z
|
|
77
|
+
.array(z.discriminatedUnion('kind', [
|
|
78
|
+
z.object({
|
|
79
|
+
kind: z.literal('logflare'),
|
|
80
|
+
tokenSecretKey: z.string()
|
|
81
|
+
}),
|
|
82
|
+
z.object({
|
|
83
|
+
kind: z.literal('datadog'),
|
|
84
|
+
apiKeySecretKey: z.string(),
|
|
85
|
+
site: z.string()
|
|
86
|
+
}),
|
|
87
|
+
z.object({
|
|
88
|
+
kind: z.literal('logpush'),
|
|
89
|
+
destination: z.string(),
|
|
90
|
+
dataset: z.string()
|
|
91
|
+
})
|
|
92
|
+
]))
|
|
93
|
+
.optional()
|
|
94
|
+
});
|
|
95
|
+
const ObservabilityBaseSchema = RuntimeDescriptorSchema.extend({
|
|
96
|
+
kind: z.literal('infra/observability'),
|
|
97
|
+
adapter: z.string().min(1),
|
|
98
|
+
adapterConfig: z.record(z.string(), z.unknown()).optional(),
|
|
99
|
+
environment: z.string().default('local'),
|
|
100
|
+
/**
|
|
101
|
+
* Default scope when the descriptor is used standalone (e.g.
|
|
102
|
+
* `vibes infra observability status` with no --worker flag). When
|
|
103
|
+
* the CLI passes an explicit scope, this is ignored.
|
|
104
|
+
*/
|
|
105
|
+
defaultScope: ObservabilityScopeSchema.default({ kind: 'account-wide' }),
|
|
106
|
+
/**
|
|
107
|
+
* Optional declared settings — used by `vibes infra observability
|
|
108
|
+
* sync` (future) to drive a desired-state reconciliation. Today the
|
|
109
|
+
* CLI imperatively sets values per call.
|
|
110
|
+
*/
|
|
111
|
+
settings: ObservabilitySettingsSchema.optional()
|
|
112
|
+
});
|
|
113
|
+
export const observabilityKind = createRuntimeKind({
|
|
114
|
+
id: 'infra/observability',
|
|
115
|
+
descriptorSchema: ObservabilityBaseSchema,
|
|
116
|
+
discoveryPattern: INFRA_DISCOVERY_PATTERN,
|
|
117
|
+
extractStem
|
|
118
|
+
});
|
|
119
|
+
export { ObservabilityBaseSchema as InfraObservabilityDescriptorSchema, ObservabilityScopeSchema, ObservabilitySettingsSchema };
|
|
120
|
+
//# sourceMappingURL=observability.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observability.kind.js","sourceRoot":"","sources":["../../src/kinds/observability.kind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/package-registry
|
|
3
|
+
*
|
|
4
|
+
* Describes a package registry instance (npm, Docker, Maven, Helm, etc.).
|
|
5
|
+
*
|
|
6
|
+
* Schema shape: strict common base + `config` discriminated union.
|
|
7
|
+
*
|
|
8
|
+
* - The base (this file) defines fields that are universal across every
|
|
9
|
+
* adapter: id/kind/name + the registry shape every package host declares
|
|
10
|
+
* (url, registryType, scope, upstreamUrl, authRequired, ssl, env).
|
|
11
|
+
* - Adapter-specific fields (dockerImage, storageSize, domain, …)
|
|
12
|
+
* live exclusively under `config`. Each adapter package defines its own
|
|
13
|
+
* concrete schema under its discriminator key.
|
|
14
|
+
*/
|
|
15
|
+
import * as z from 'zod/v4';
|
|
16
|
+
import type { RuntimeKindDescriptorRecord } from '@vibesdotdev/runtime/schemas/kind';
|
|
17
|
+
import type { RuntimeDescriptor } from '@vibesdotdev/runtime/schemas/descriptor';
|
|
18
|
+
export declare const PackageRegistryTypeSchema: z.ZodEnum<{
|
|
19
|
+
docker: "docker";
|
|
20
|
+
npm: "npm";
|
|
21
|
+
maven: "maven";
|
|
22
|
+
helm: "helm";
|
|
23
|
+
}>;
|
|
24
|
+
export type PackageRegistryType = z.infer<typeof PackageRegistryTypeSchema>;
|
|
25
|
+
export declare const VerdaccioDoksPackageRegistryConfigSchema: z.ZodObject<{
|
|
26
|
+
dockerImage: z.ZodDefault<z.ZodString>;
|
|
27
|
+
storageSize: z.ZodDefault<z.ZodString>;
|
|
28
|
+
domain: z.ZodString;
|
|
29
|
+
upstreamNpmUrl: z.ZodDefault<z.ZodString>;
|
|
30
|
+
authEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export declare const PackageRegistryConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
33
|
+
dockerImage: z.ZodDefault<z.ZodString>;
|
|
34
|
+
storageSize: z.ZodDefault<z.ZodString>;
|
|
35
|
+
domain: z.ZodString;
|
|
36
|
+
upstreamNpmUrl: z.ZodDefault<z.ZodString>;
|
|
37
|
+
authEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
38
|
+
adapter: z.ZodLiteral<"verdaccio-doks">;
|
|
39
|
+
}, z.core.$strip>]>;
|
|
40
|
+
export declare const PackageRegistryDescriptorSchema: z.ZodObject<{
|
|
41
|
+
id: z.ZodString;
|
|
42
|
+
name: z.ZodOptional<z.ZodString>;
|
|
43
|
+
description: z.ZodOptional<z.ZodString>;
|
|
44
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
45
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
46
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
49
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
50
|
+
kind: z.ZodLiteral<"infra/package-registry">;
|
|
51
|
+
url: z.ZodString;
|
|
52
|
+
registryType: z.ZodDefault<z.ZodEnum<{
|
|
53
|
+
docker: "docker";
|
|
54
|
+
npm: "npm";
|
|
55
|
+
maven: "maven";
|
|
56
|
+
helm: "helm";
|
|
57
|
+
}>>;
|
|
58
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
59
|
+
upstreamUrl: z.ZodOptional<z.ZodString>;
|
|
60
|
+
authRequired: z.ZodDefault<z.ZodBoolean>;
|
|
61
|
+
ssl: z.ZodDefault<z.ZodBoolean>;
|
|
62
|
+
env: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
63
|
+
name: z.ZodString;
|
|
64
|
+
public: z.ZodOptional<z.ZodBoolean>;
|
|
65
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
66
|
+
value: z.ZodOptional<z.ZodString>;
|
|
67
|
+
secret: z.ZodOptional<z.ZodBoolean>;
|
|
68
|
+
description: z.ZodOptional<z.ZodString>;
|
|
69
|
+
storeKey: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, z.core.$strip>>>;
|
|
71
|
+
config: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
72
|
+
dockerImage: z.ZodDefault<z.ZodString>;
|
|
73
|
+
storageSize: z.ZodDefault<z.ZodString>;
|
|
74
|
+
domain: z.ZodString;
|
|
75
|
+
upstreamNpmUrl: z.ZodDefault<z.ZodString>;
|
|
76
|
+
authEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
77
|
+
adapter: z.ZodLiteral<"verdaccio-doks">;
|
|
78
|
+
}, z.core.$strip>]>>;
|
|
79
|
+
}, z.core.$strip>;
|
|
80
|
+
export type PackageRegistryDescriptor = z.infer<typeof PackageRegistryDescriptorSchema>;
|
|
81
|
+
declare class DefaultPackageRegistryImplementation {
|
|
82
|
+
readonly descriptor: RuntimeDescriptor;
|
|
83
|
+
readonly context: unknown;
|
|
84
|
+
constructor(descriptor: RuntimeDescriptor, context: unknown);
|
|
85
|
+
get config(): PackageRegistryDescriptor;
|
|
86
|
+
}
|
|
87
|
+
export declare const packageRegistryKind: RuntimeKindDescriptorRecord<DefaultPackageRegistryImplementation>;
|
|
88
|
+
export {};
|
|
89
|
+
//# sourceMappingURL=package-registry.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-registry.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/package-registry.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAErF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAIjF,eAAO,MAAM,yBAAyB;;;;;EAA6C,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AA2B5E,eAAO,MAAM,wCAAwC;;;;;;iBAWnD,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;mBAEtC,CAAC;AAEH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAM1C,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,cAAM,oCAAoC;aAExB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,OAAO;gBADhB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,OAAO;IAGjC,IAAI,MAAM,IAAI,yBAAyB,CAEtC;CACD;AAED,eAAO,MAAM,mBAAmB,mEAM9B,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/package-registry
|
|
3
|
+
*
|
|
4
|
+
* Describes a package registry instance (npm, Docker, Maven, Helm, etc.).
|
|
5
|
+
*
|
|
6
|
+
* Schema shape: strict common base + `config` discriminated union.
|
|
7
|
+
*
|
|
8
|
+
* - The base (this file) defines fields that are universal across every
|
|
9
|
+
* adapter: id/kind/name + the registry shape every package host declares
|
|
10
|
+
* (url, registryType, scope, upstreamUrl, authRequired, ssl, env).
|
|
11
|
+
* - Adapter-specific fields (dockerImage, storageSize, domain, …)
|
|
12
|
+
* live exclusively under `config`. Each adapter package defines its own
|
|
13
|
+
* concrete schema under its discriminator key.
|
|
14
|
+
*/
|
|
15
|
+
import * as z from 'zod/v4';
|
|
16
|
+
import { createRuntimeKind } from '@vibesdotdev/runtime/factory/kind';
|
|
17
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/runtime/schemas/descriptor';
|
|
18
|
+
import { INFRA_DISCOVERY_PATTERN, extractStem } from "./discovery.js";
|
|
19
|
+
import { deploymentEnvRequirementSchema } from "../schemas.js";
|
|
20
|
+
export const PackageRegistryTypeSchema = z.enum(['npm', 'docker', 'maven', 'helm']);
|
|
21
|
+
const PackageRegistryBaseSchema = RuntimeDescriptorSchema.extend({
|
|
22
|
+
kind: z.literal('infra/package-registry'),
|
|
23
|
+
/** Primary access URL (e.g. 'https://packages.vibes.dev'). */
|
|
24
|
+
url: z.string().url(),
|
|
25
|
+
/** Package type this registry serves. */
|
|
26
|
+
registryType: PackageRegistryTypeSchema.default('npm'),
|
|
27
|
+
/** Npm scope this registry owns (e.g. '@vibesdotdev'). */
|
|
28
|
+
scope: z.string().optional(),
|
|
29
|
+
/** Upstream registry URL this registry proxies (optional). */
|
|
30
|
+
upstreamUrl: z.string().url().optional(),
|
|
31
|
+
/** Whether authentication is required to pull from this registry. */
|
|
32
|
+
authRequired: z.boolean().default(true),
|
|
33
|
+
/** Whether TLS is enabled. */
|
|
34
|
+
ssl: z.boolean().default(true),
|
|
35
|
+
/** Environment variable requirements. */
|
|
36
|
+
env: z.array(deploymentEnvRequirementSchema).optional()
|
|
37
|
+
});
|
|
38
|
+
export const VerdaccioDoksPackageRegistryConfigSchema = z.object({
|
|
39
|
+
/** Docker image for the Verdaccio container. */
|
|
40
|
+
dockerImage: z.string().default('verdaccio/verdaccio:5'),
|
|
41
|
+
/** Persistent storage size (e.g. '10Gi'). */
|
|
42
|
+
storageSize: z.string().default('10Gi'),
|
|
43
|
+
/** Primary domain for the registry. */
|
|
44
|
+
domain: z.string().min(1),
|
|
45
|
+
/** Upstream npm registry URL to proxy. */
|
|
46
|
+
upstreamNpmUrl: z.string().url().default('https://registry.npmjs.org'),
|
|
47
|
+
/** Whether built-in authentication is enabled. */
|
|
48
|
+
authEnabled: z.boolean().default(true)
|
|
49
|
+
});
|
|
50
|
+
export const PackageRegistryConfigSchema = z.union([
|
|
51
|
+
VerdaccioDoksPackageRegistryConfigSchema.extend({ adapter: z.literal('verdaccio-doks') })
|
|
52
|
+
]);
|
|
53
|
+
export const PackageRegistryDescriptorSchema = PackageRegistryBaseSchema.extend({
|
|
54
|
+
/**
|
|
55
|
+
* Adapter-specific configuration. Discriminated union — each adapter
|
|
56
|
+
* package defines its own config schema under its discriminator key.
|
|
57
|
+
*/
|
|
58
|
+
config: PackageRegistryConfigSchema.optional()
|
|
59
|
+
});
|
|
60
|
+
class DefaultPackageRegistryImplementation {
|
|
61
|
+
descriptor;
|
|
62
|
+
context;
|
|
63
|
+
constructor(descriptor, context) {
|
|
64
|
+
this.descriptor = descriptor;
|
|
65
|
+
this.context = context;
|
|
66
|
+
}
|
|
67
|
+
get config() {
|
|
68
|
+
return this.descriptor;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export const packageRegistryKind = createRuntimeKind({
|
|
72
|
+
id: 'infra/package-registry',
|
|
73
|
+
descriptorSchema: PackageRegistryDescriptorSchema,
|
|
74
|
+
defaultImplementation: DefaultPackageRegistryImplementation,
|
|
75
|
+
discoveryPattern: INFRA_DISCOVERY_PATTERN,
|
|
76
|
+
extractStem
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=package-registry.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-registry.kind.js","sourceRoot":"","sources":["../../src/kinds/package-registry.kind.ts"],"names":[],"mappings":"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"}
|