@dromio/product 0.1.49

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 (86) hide show
  1. package/LICENSE +201 -0
  2. package/dist/architectureCheck.d.ts +11 -0
  3. package/dist/architectureCheck.d.ts.map +1 -0
  4. package/dist/architectureCheck.js +269 -0
  5. package/dist/architectureCheck.js.map +1 -0
  6. package/dist/architectureCheckTypes.d.ts +23 -0
  7. package/dist/architectureCheckTypes.d.ts.map +1 -0
  8. package/dist/architectureCheckTypes.js +50 -0
  9. package/dist/architectureCheckTypes.js.map +1 -0
  10. package/dist/architectureEffectCheck.d.ts +4 -0
  11. package/dist/architectureEffectCheck.d.ts.map +1 -0
  12. package/dist/architectureEffectCheck.js +106 -0
  13. package/dist/architectureEffectCheck.js.map +1 -0
  14. package/dist/authoring.d.ts +55 -0
  15. package/dist/authoring.d.ts.map +1 -0
  16. package/dist/authoring.js +308 -0
  17. package/dist/authoring.js.map +1 -0
  18. package/dist/authoringArchitectureTemplates.d.ts +5 -0
  19. package/dist/authoringArchitectureTemplates.d.ts.map +1 -0
  20. package/dist/authoringArchitectureTemplates.js +169 -0
  21. package/dist/authoringArchitectureTemplates.js.map +1 -0
  22. package/dist/authoringManifestTemplates.d.ts +4 -0
  23. package/dist/authoringManifestTemplates.d.ts.map +1 -0
  24. package/dist/authoringManifestTemplates.js +77 -0
  25. package/dist/authoringManifestTemplates.js.map +1 -0
  26. package/dist/authoringPackageJson.d.ts +3 -0
  27. package/dist/authoringPackageJson.d.ts.map +1 -0
  28. package/dist/authoringPackageJson.js +69 -0
  29. package/dist/authoringPackageJson.js.map +1 -0
  30. package/dist/authoringTemplates.d.ts +9 -0
  31. package/dist/authoringTemplates.d.ts.map +1 -0
  32. package/dist/authoringTemplates.js +142 -0
  33. package/dist/authoringTemplates.js.map +1 -0
  34. package/dist/authoringWorkflowTemplates.d.ts +13 -0
  35. package/dist/authoringWorkflowTemplates.d.ts.map +1 -0
  36. package/dist/authoringWorkflowTemplates.js +282 -0
  37. package/dist/authoringWorkflowTemplates.js.map +1 -0
  38. package/dist/build.d.ts +12 -0
  39. package/dist/build.d.ts.map +1 -0
  40. package/dist/build.js +119 -0
  41. package/dist/build.js.map +1 -0
  42. package/dist/check.d.ts +16 -0
  43. package/dist/check.d.ts.map +1 -0
  44. package/dist/check.js +172 -0
  45. package/dist/check.js.map +1 -0
  46. package/dist/cli.d.ts +3 -0
  47. package/dist/cli.d.ts.map +1 -0
  48. package/dist/cli.js +93 -0
  49. package/dist/cli.js.map +1 -0
  50. package/dist/deploymentProfile.d.ts +19 -0
  51. package/dist/deploymentProfile.d.ts.map +1 -0
  52. package/dist/deploymentProfile.js +72 -0
  53. package/dist/deploymentProfile.js.map +1 -0
  54. package/dist/emitFromDefinition.d.ts +14 -0
  55. package/dist/emitFromDefinition.d.ts.map +1 -0
  56. package/dist/emitFromDefinition.js +87 -0
  57. package/dist/emitFromDefinition.js.map +1 -0
  58. package/dist/files.d.ts +13 -0
  59. package/dist/files.d.ts.map +1 -0
  60. package/dist/files.js +77 -0
  61. package/dist/files.js.map +1 -0
  62. package/dist/forbiddenImports.d.ts +7 -0
  63. package/dist/forbiddenImports.d.ts.map +1 -0
  64. package/dist/forbiddenImports.js +31 -0
  65. package/dist/forbiddenImports.js.map +1 -0
  66. package/dist/index.d.ts +11 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +9 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/manifest.d.ts +14 -0
  71. package/dist/manifest.d.ts.map +1 -0
  72. package/dist/manifest.js +49 -0
  73. package/dist/manifest.js.map +1 -0
  74. package/dist/publish.d.ts +29 -0
  75. package/dist/publish.d.ts.map +1 -0
  76. package/dist/publish.js +40 -0
  77. package/dist/publish.js.map +1 -0
  78. package/dist/publishPlan.d.ts +62 -0
  79. package/dist/publishPlan.d.ts.map +1 -0
  80. package/dist/publishPlan.js +204 -0
  81. package/dist/publishPlan.js.map +1 -0
  82. package/dist/schemas.d.ts +141 -0
  83. package/dist/schemas.d.ts.map +1 -0
  84. package/dist/schemas.js +154 -0
  85. package/dist/schemas.js.map +1 -0
  86. package/package.json +49 -0
@@ -0,0 +1,40 @@
1
+ import { createDromioProductPublishPlan, } from "./publishPlan.js";
2
+ export async function publishDromioProduct(options) {
3
+ const plan = await createDromioProductPublishPlan(options);
4
+ const fetchImpl = options.fetchImpl ?? fetch;
5
+ const app = await postJson(fetchImpl, options.authToken, plan.app);
6
+ const settings = plan.settings
7
+ ? await postJson(fetchImpl, options.authToken, plan.settings)
8
+ : undefined;
9
+ const release = await postJson(fetchImpl, options.authToken, plan.release);
10
+ const artifact = await postJson(fetchImpl, options.authToken, plan.artifact);
11
+ const deployment = plan.deployment
12
+ ? await postJson(fetchImpl, options.authToken, plan.deployment)
13
+ : undefined;
14
+ const published = await postJson(fetchImpl, options.authToken, plan.publish);
15
+ return {
16
+ app,
17
+ artifact,
18
+ ...(deployment ? { deployment } : {}),
19
+ plan,
20
+ publish: published,
21
+ release,
22
+ ...(settings ? { settings } : {}),
23
+ };
24
+ }
25
+ async function postJson(fetchImpl, authToken, request) {
26
+ const response = await fetchImpl(request.url, {
27
+ body: JSON.stringify(request.body),
28
+ headers: {
29
+ authorization: `Bearer ${authToken}`,
30
+ "content-type": "application/json",
31
+ },
32
+ method: request.method,
33
+ });
34
+ if (!response.ok) {
35
+ const body = await response.text();
36
+ throw new Error(`Dromio publish request failed: ${request.method} ${request.url} -> ${response.status} ${response.statusText}${body ? `: ${body}` : ""}`);
37
+ }
38
+ return response.json();
39
+ }
40
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,GAI/B,MAAM,kBAAkB,CAAC;AAkC1B,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAoC;IAEpC,MAAM,IAAI,GAAG,MAAM,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC5B,CAAC,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;QAC7D,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;QAChC,CAAC,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,OAAO;QACL,GAAG;QACH,QAAQ;QACR,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,IAAI;QACJ,OAAO,EAAE,SAAS;QAClB,OAAO;QACP,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,SAAoC,EACpC,SAAiB,EACjB,OAAoC;IAEpC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;QAC5C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,SAAS,EAAE;YACpC,cAAc,EAAE,kBAAkB;SACnC;QACD,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,kCAAkC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACzI,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { type BuildDromioProductOptions } from "./build.js";
2
+ type HttpMethod = "POST" | "PUT";
3
+ export interface CreateDromioProductPublishPlanOptions extends BuildDromioProductOptions {
4
+ readonly channel?: string;
5
+ readonly deploymentMode?: "external" | "managed";
6
+ readonly externalRuntimeToken?: string;
7
+ readonly externalRuntimeUrl?: string;
8
+ readonly orgSlug: string;
9
+ readonly platformUrl?: string;
10
+ readonly visibility?: "private" | "public" | "workspace";
11
+ }
12
+ export interface DromioPublishRequest<TBody> {
13
+ readonly body: TBody;
14
+ readonly method: HttpMethod;
15
+ readonly url: string;
16
+ }
17
+ export interface DromioPlatformWorkflowRef {
18
+ readonly label: string;
19
+ readonly metadata: Record<string, unknown>;
20
+ readonly nodeCount: number;
21
+ readonly source: string;
22
+ readonly workflowId: string;
23
+ }
24
+ export interface DromioPlatformReleasePayload {
25
+ readonly bundle: Record<string, unknown>;
26
+ readonly channel: string;
27
+ readonly version: string;
28
+ readonly workflows: DromioPlatformWorkflowRef[];
29
+ }
30
+ export interface DromioPlatformArtifactPayload {
31
+ readonly contentBase64: string;
32
+ readonly kind: "bundle";
33
+ readonly mediaType: "application/gzip";
34
+ readonly name: string;
35
+ readonly sha256: string;
36
+ readonly size: number;
37
+ }
38
+ export interface DromioPlatformSettingsPayload {
39
+ readonly deploymentMode: "external" | "managed";
40
+ }
41
+ export interface DromioPlatformDeploymentPayload {
42
+ readonly internalBaseUrl: string;
43
+ readonly runtimeKind: "external";
44
+ readonly token: string;
45
+ }
46
+ export interface DromioProductPublishPlan {
47
+ readonly app: DromioPublishRequest<{
48
+ readonly displayName: string;
49
+ readonly sdkName: string;
50
+ readonly slug: string;
51
+ readonly visibility: "private" | "public" | "workspace";
52
+ }>;
53
+ readonly artifact: DromioPublishRequest<DromioPlatformArtifactPayload>;
54
+ readonly bundlePath: string;
55
+ readonly deployment?: DromioPublishRequest<DromioPlatformDeploymentPayload>;
56
+ readonly publish: DromioPublishRequest<Record<string, never>>;
57
+ readonly release: DromioPublishRequest<DromioPlatformReleasePayload>;
58
+ readonly settings?: DromioPublishRequest<DromioPlatformSettingsPayload>;
59
+ }
60
+ export declare function createDromioProductPublishPlan(options: CreateDromioProductPublishPlanOptions): Promise<DromioProductPublishPlan>;
61
+ export {};
62
+ //# sourceMappingURL=publishPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishPlan.d.ts","sourceRoot":"","sources":["../src/publishPlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFile, stat } from "node:fs/promises";
3
+ import { basename } from "node:path";
4
+ import { buildDromioProduct } from "./build.js";
5
+ import { resolveProductPath } from "./files.js";
6
+ import { loadProductManifests } from "./manifest.js";
7
+ export async function createDromioProductPublishPlan(options) {
8
+ const manifests = await loadProductManifests(options);
9
+ const platformUrl = normalizedPlatformUrl(options.platformUrl ?? manifests.environment.platformUrl);
10
+ const channel = options.channel ?? manifests.environment.id;
11
+ const build = await buildDromioProduct(options);
12
+ const bundleBytes = await readFile(build.bundlePath);
13
+ const bundleStat = await stat(build.bundlePath);
14
+ const artifactName = basename(build.bundlePath);
15
+ const appUrl = `${platformUrl}/api/intent/apps`;
16
+ const releaseUrl = `${platformUrl}/api/intent/apps/${options.orgSlug}/${manifests.product.id}/releases`;
17
+ const artifactUrl = `${releaseUrl}/${manifests.product.version}/artifact`;
18
+ const deploymentUrl = `${releaseUrl}/${manifests.product.version}/deployment`;
19
+ const publishUrl = `${releaseUrl}/${manifests.product.version}/publish`;
20
+ const settingsUrl = `${platformUrl}/api/intent/apps/${options.orgSlug}/${manifests.product.id}/settings`;
21
+ const deployment = externalDeploymentRequest(options, deploymentUrl);
22
+ return {
23
+ app: {
24
+ body: {
25
+ displayName: manifests.product.name,
26
+ sdkName: "@dromio/product",
27
+ slug: manifests.product.id,
28
+ visibility: options.visibility ?? "private",
29
+ },
30
+ method: "POST",
31
+ url: appUrl,
32
+ },
33
+ artifact: {
34
+ body: {
35
+ contentBase64: bundleBytes.toString("base64"),
36
+ kind: "bundle",
37
+ mediaType: "application/gzip",
38
+ name: artifactName,
39
+ sha256: createHash("sha256").update(bundleBytes).digest("hex"),
40
+ size: bundleStat.size,
41
+ },
42
+ method: "POST",
43
+ url: artifactUrl,
44
+ },
45
+ bundlePath: build.bundlePath,
46
+ ...(deployment ? { deployment } : {}),
47
+ publish: {
48
+ body: {},
49
+ method: "POST",
50
+ url: publishUrl,
51
+ },
52
+ release: {
53
+ body: {
54
+ bundle: platformReleaseBundle({
55
+ artifactName,
56
+ environment: manifests.environment,
57
+ product: manifests.product,
58
+ }),
59
+ channel,
60
+ version: manifests.product.version,
61
+ workflows: await platformWorkflowRefs(manifests.product, manifests.productRoot),
62
+ },
63
+ method: "POST",
64
+ url: releaseUrl,
65
+ },
66
+ ...(options.deploymentMode
67
+ ? {
68
+ settings: {
69
+ body: {
70
+ deploymentMode: options.deploymentMode,
71
+ },
72
+ method: "PUT",
73
+ url: settingsUrl,
74
+ },
75
+ }
76
+ : {}),
77
+ };
78
+ }
79
+ function normalizedPlatformUrl(value) {
80
+ if (!value) {
81
+ throw new Error("Platform URL is required. Set dromio.env.<env>.yml platformUrl or pass --platform-url.");
82
+ }
83
+ return value.replace(/\/+$/, "");
84
+ }
85
+ function externalDeploymentRequest(options, url) {
86
+ if (options.deploymentMode !== "external")
87
+ return undefined;
88
+ if (!options.externalRuntimeUrl) {
89
+ throw new Error("External deployment requires --runtime-url or DROMIO_EXTERNAL_RUNTIME_URL.");
90
+ }
91
+ if (!options.externalRuntimeToken) {
92
+ throw new Error("External deployment requires --runtime-token or DROMIO_EXTERNAL_RUNTIME_TOKEN.");
93
+ }
94
+ return {
95
+ body: {
96
+ internalBaseUrl: options.externalRuntimeUrl,
97
+ runtimeKind: "external",
98
+ token: options.externalRuntimeToken,
99
+ },
100
+ method: "POST",
101
+ url,
102
+ };
103
+ }
104
+ function platformReleaseBundle(input) {
105
+ return {
106
+ app: {
107
+ name: input.product.name,
108
+ slug: input.product.id,
109
+ },
110
+ artifact: {
111
+ kind: "bundle",
112
+ name: input.artifactName,
113
+ },
114
+ environment: {
115
+ id: input.environment.id,
116
+ },
117
+ product: {
118
+ id: input.product.id,
119
+ name: input.product.name,
120
+ version: input.product.version,
121
+ },
122
+ panels: input.product.panels.map((panel) => ({
123
+ ...panel,
124
+ source: {
125
+ kind: "dromio.product",
126
+ productId: input.product.id,
127
+ },
128
+ })),
129
+ release: {
130
+ version: input.product.version,
131
+ },
132
+ requires: input.product.requires,
133
+ schemaVersion: 1,
134
+ source: "@dromio/product",
135
+ triggers: input.product.workflows.map((workflow) => ({
136
+ id: manualTriggerId(workflow.id),
137
+ input: {
138
+ schema: { type: "object" },
139
+ },
140
+ label: `${workflow.title} manual run`,
141
+ source: {
142
+ kind: "dromio.product",
143
+ productId: input.product.id,
144
+ workflowId: workflow.id,
145
+ },
146
+ type: "manual",
147
+ workflowId: workflow.id,
148
+ })),
149
+ };
150
+ }
151
+ function manualTriggerId(workflowId) {
152
+ return `${workflowId}.manual`;
153
+ }
154
+ async function platformWorkflowRefs(product, productRoot) {
155
+ return await Promise.all(product.workflows.map(async (workflow) => {
156
+ const compileArtifact = await compileArtifactForWorkflow(workflow, productRoot);
157
+ return {
158
+ label: workflow.title,
159
+ metadata: {
160
+ dromioCompileArtifact: compileArtifact,
161
+ productId: product.id,
162
+ },
163
+ nodeCount: readCompileArtifactNodeCount(compileArtifact),
164
+ source: workflow.document ?? product.entry.workflows ?? "dromio.product.yml",
165
+ workflowId: workflow.id,
166
+ };
167
+ }));
168
+ }
169
+ async function compileArtifactForWorkflow(workflow, productRoot) {
170
+ return readCompileArtifact(resolveProductPath(productRoot, workflow.compileArtifact));
171
+ }
172
+ async function readCompileArtifact(path) {
173
+ const artifact = JSON.parse(await readFile(path, "utf8"));
174
+ if (!artifact || typeof artifact !== "object" || Array.isArray(artifact)) {
175
+ throw new Error(`Workflow compile artifact must be a JSON object: ${path}`);
176
+ }
177
+ const record = artifact;
178
+ const governance = readRecord(record.governance, `Workflow compile artifact governance: ${path}`);
179
+ const validation = readRecord(record.validation, `Workflow compile artifact validation: ${path}`);
180
+ if (governance.publishable !== true) {
181
+ throw new Error(`Workflow compile artifact must be publishable: ${path}`);
182
+ }
183
+ if (validation.valid !== true || validation.mode !== "full") {
184
+ throw new Error(`Workflow compile artifact must be full and valid: ${path}`);
185
+ }
186
+ if (!Array.isArray(record.bddScenarios) || record.bddScenarios.length === 0) {
187
+ throw new Error(`Workflow compile artifact must include BDD scenarios: ${path}`);
188
+ }
189
+ return record;
190
+ }
191
+ function readRecord(value, label) {
192
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
193
+ throw new Error(`${label} must be a JSON object.`);
194
+ }
195
+ return value;
196
+ }
197
+ function readCompileArtifactNodeCount(artifact) {
198
+ const topology = artifact.topology;
199
+ if (!topology || typeof topology !== "object" || Array.isArray(topology))
200
+ return 1;
201
+ const nodeCount = topology.nodeCount;
202
+ return typeof nodeCount === "number" && Number.isFinite(nodeCount) ? nodeCount : 1;
203
+ }
204
+ //# sourceMappingURL=publishPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishPlan.js","sourceRoot":"","sources":["../src/publishPlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { z } from "zod";
2
+ export declare const productArchitectureSchema: z.ZodDefault<z.ZodObject<{
3
+ effect_mode: z.ZodDefault<z.ZodEnum<{
4
+ strict: "strict";
5
+ optional: "optional";
6
+ off: "off";
7
+ }>>;
8
+ mode: z.ZodDefault<z.ZodEnum<{
9
+ strict: "strict";
10
+ off: "off";
11
+ advisory: "advisory";
12
+ }>>;
13
+ source_line_limit: z.ZodDefault<z.ZodNumber>;
14
+ }, z.core.$strict>>;
15
+ export declare const productManifestSchema: z.ZodObject<{
16
+ id: z.ZodString;
17
+ name: z.ZodString;
18
+ version: z.ZodString;
19
+ requires: z.ZodObject<{
20
+ dromio: z.ZodObject<{
21
+ sdk: z.ZodString;
22
+ product: z.ZodOptional<z.ZodString>;
23
+ platform: z.ZodOptional<z.ZodString>;
24
+ runtime: z.ZodOptional<z.ZodString>;
25
+ shell: z.ZodOptional<z.ZodString>;
26
+ protocol: z.ZodOptional<z.ZodString>;
27
+ }, z.core.$strict>;
28
+ runtime: z.ZodOptional<z.ZodObject<{
29
+ "@effect/schema": z.ZodOptional<z.ZodString>;
30
+ effect: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strict>>;
32
+ }, z.core.$strict>;
33
+ architecture: z.ZodDefault<z.ZodObject<{
34
+ effect_mode: z.ZodDefault<z.ZodEnum<{
35
+ strict: "strict";
36
+ optional: "optional";
37
+ off: "off";
38
+ }>>;
39
+ mode: z.ZodDefault<z.ZodEnum<{
40
+ strict: "strict";
41
+ off: "off";
42
+ advisory: "advisory";
43
+ }>>;
44
+ source_line_limit: z.ZodDefault<z.ZodNumber>;
45
+ }, z.core.$strict>>;
46
+ entry: z.ZodDefault<z.ZodObject<{
47
+ capabilities: z.ZodOptional<z.ZodString>;
48
+ panels: z.ZodOptional<z.ZodString>;
49
+ workflows: z.ZodOptional<z.ZodString>;
50
+ }, z.core.$strict>>;
51
+ workflows: z.ZodDefault<z.ZodArray<z.ZodObject<{
52
+ approvalPolicy: z.ZodDefault<z.ZodEnum<{
53
+ none: "none";
54
+ "human-confirm-writes": "human-confirm-writes";
55
+ }>>;
56
+ compileArtifact: z.ZodString;
57
+ document: z.ZodString;
58
+ id: z.ZodString;
59
+ title: z.ZodString;
60
+ }, z.core.$strict>>>;
61
+ capabilities: z.ZodDefault<z.ZodArray<z.ZodObject<{
62
+ id: z.ZodString;
63
+ mode: z.ZodEnum<{
64
+ read: "read";
65
+ write: "write";
66
+ "approval-gated": "approval-gated";
67
+ }>;
68
+ }, z.core.$strict>>>;
69
+ panels: z.ZodDefault<z.ZodArray<z.ZodObject<{
70
+ id: z.ZodString;
71
+ kind: z.ZodLiteral<"json-render">;
72
+ title: z.ZodString;
73
+ view: z.ZodRecord<z.ZodString, z.ZodUnknown>;
74
+ }, z.core.$strict>>>;
75
+ fixtures: z.ZodDefault<z.ZodArray<z.ZodString>>;
76
+ }, z.core.$strict>;
77
+ export declare const environmentManifestSchema: z.ZodObject<{
78
+ id: z.ZodString;
79
+ platformUrl: z.ZodOptional<z.ZodString>;
80
+ runtime: z.ZodObject<{
81
+ provider: z.ZodString;
82
+ model: z.ZodString;
83
+ }, z.core.$strict>;
84
+ storage: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
85
+ sandbox: z.ZodDefault<z.ZodObject<{
86
+ filesystem: z.ZodOptional<z.ZodObject<{
87
+ mode: z.ZodEnum<{
88
+ readonly: "readonly";
89
+ local: "local";
90
+ bounded: "bounded";
91
+ }>;
92
+ writable: z.ZodDefault<z.ZodArray<z.ZodString>>;
93
+ }, z.core.$strict>>;
94
+ }, z.core.$strict>>;
95
+ approvals: z.ZodDefault<z.ZodObject<{
96
+ writes: z.ZodDefault<z.ZodEnum<{
97
+ optional: "optional";
98
+ required: "required";
99
+ }>>;
100
+ }, z.core.$strict>>;
101
+ }, z.core.$strict>;
102
+ export declare const productBundleManifestSchema: z.ZodObject<{
103
+ schemaVersion: z.ZodLiteral<1>;
104
+ product: z.ZodObject<{
105
+ id: z.ZodString;
106
+ name: z.ZodString;
107
+ version: z.ZodString;
108
+ }, z.core.$strict>;
109
+ environment: z.ZodObject<{
110
+ id: z.ZodString;
111
+ }, z.core.$strict>;
112
+ compatibility: z.ZodObject<{
113
+ dromio: z.ZodObject<{
114
+ sdk: z.ZodString;
115
+ product: z.ZodOptional<z.ZodString>;
116
+ platform: z.ZodOptional<z.ZodString>;
117
+ runtime: z.ZodOptional<z.ZodString>;
118
+ shell: z.ZodOptional<z.ZodString>;
119
+ protocol: z.ZodOptional<z.ZodString>;
120
+ }, z.core.$strict>;
121
+ runtime: z.ZodOptional<z.ZodObject<{
122
+ "@effect/schema": z.ZodOptional<z.ZodString>;
123
+ effect: z.ZodOptional<z.ZodString>;
124
+ }, z.core.$strict>>;
125
+ }, z.core.$strict>;
126
+ artifacts: z.ZodObject<{
127
+ productManifest: z.ZodString;
128
+ environmentManifest: z.ZodString;
129
+ sourceInventory: z.ZodString;
130
+ checksums: z.ZodString;
131
+ }, z.core.$strict>;
132
+ provenance: z.ZodObject<{
133
+ builder: z.ZodLiteral<"@dromio/product">;
134
+ generatedAt: z.ZodString;
135
+ }, z.core.$strict>;
136
+ }, z.core.$strict>;
137
+ export type DromioProductManifest = z.infer<typeof productManifestSchema>;
138
+ export type DromioEnvironmentManifest = z.infer<typeof environmentManifestSchema>;
139
+ export type DromioProductBundleManifest = z.infer<typeof productBundleManifestSchema>;
140
+ export type DromioProductArchitecture = z.infer<typeof productArchitectureSchema>;
141
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwBxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;mBAOoC,CAAC;AAmC3E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyBvB,CAAC;AAsBZ,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;kBAc3B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoC7B,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAClF,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AACtF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,154 @@
1
+ import { z } from "zod";
2
+ const relativePathSchema = z.string().min(1).refine((value) => !value.startsWith("/"), {
3
+ message: "Path must be relative to product root.",
4
+ });
5
+ const dromioRequiresSchema = z
6
+ .object({
7
+ sdk: z.string().min(1),
8
+ product: z.string().min(1).optional(),
9
+ platform: z.string().min(1).optional(),
10
+ runtime: z.string().min(1).optional(),
11
+ shell: z.string().min(1).optional(),
12
+ protocol: z.string().min(1).optional(),
13
+ })
14
+ .strict();
15
+ const runtimeRequiresSchema = z
16
+ .object({
17
+ "@effect/schema": z.string().min(1).optional(),
18
+ effect: z.string().min(1).optional(),
19
+ })
20
+ .strict();
21
+ export const productArchitectureSchema = z
22
+ .object({
23
+ effect_mode: z.enum(["strict", "optional", "off"]).default("off"),
24
+ mode: z.enum(["strict", "advisory", "off"]).default("strict"),
25
+ source_line_limit: z.number().int().positive().default(500),
26
+ })
27
+ .strict()
28
+ .default({ effect_mode: "off", mode: "strict", source_line_limit: 500 });
29
+ const moduleEntrySchema = z
30
+ .object({
31
+ exportName: z.string().min(1).optional(),
32
+ path: relativePathSchema,
33
+ })
34
+ .strict();
35
+ const productWorkflowSchema = z
36
+ .object({
37
+ approvalPolicy: z.enum(["none", "human-confirm-writes"]).default("none"),
38
+ compileArtifact: relativePathSchema,
39
+ document: relativePathSchema,
40
+ id: z.string().min(1),
41
+ title: z.string().min(1),
42
+ })
43
+ .strict();
44
+ const productCapabilitySchema = z
45
+ .object({
46
+ id: z.string().min(1),
47
+ mode: z.enum(["read", "write", "approval-gated"]),
48
+ })
49
+ .strict();
50
+ const jsonRenderPanelSchema = z
51
+ .object({
52
+ id: z.string().min(1),
53
+ kind: z.literal("json-render"),
54
+ title: z.string().min(1),
55
+ view: z.record(z.string(), z.unknown()),
56
+ })
57
+ .strict();
58
+ export const productManifestSchema = z
59
+ .object({
60
+ id: z.string().min(1),
61
+ name: z.string().min(1),
62
+ version: z.string().min(1),
63
+ requires: z
64
+ .object({
65
+ dromio: dromioRequiresSchema,
66
+ runtime: runtimeRequiresSchema.optional(),
67
+ })
68
+ .strict(),
69
+ architecture: productArchitectureSchema,
70
+ entry: z
71
+ .object({
72
+ capabilities: relativePathSchema.optional(),
73
+ panels: relativePathSchema.optional(),
74
+ workflows: relativePathSchema.optional(),
75
+ })
76
+ .strict()
77
+ .default({}),
78
+ workflows: z.array(productWorkflowSchema).default([]),
79
+ capabilities: z.array(productCapabilitySchema).default([]),
80
+ panels: z.array(jsonRenderPanelSchema).default([]),
81
+ fixtures: z.array(relativePathSchema).default([]),
82
+ })
83
+ .strict();
84
+ const runtimeSchema = z
85
+ .object({
86
+ provider: z.string().min(1),
87
+ model: z.string().min(1),
88
+ })
89
+ .strict();
90
+ const sandboxSchema = z
91
+ .object({
92
+ filesystem: z
93
+ .object({
94
+ mode: z.enum(["local", "bounded", "readonly"]),
95
+ writable: z.array(z.string().min(1)).default([]),
96
+ })
97
+ .strict()
98
+ .optional(),
99
+ })
100
+ .strict()
101
+ .default({});
102
+ export const environmentManifestSchema = z
103
+ .object({
104
+ id: z.string().min(1),
105
+ platformUrl: z.string().url().optional(),
106
+ runtime: runtimeSchema,
107
+ storage: z.record(z.string(), z.string().min(1)).default({}),
108
+ sandbox: sandboxSchema,
109
+ approvals: z
110
+ .object({
111
+ writes: z.enum(["optional", "required"]).default("optional"),
112
+ })
113
+ .strict()
114
+ .default({ writes: "optional" }),
115
+ })
116
+ .strict();
117
+ export const productBundleManifestSchema = z
118
+ .object({
119
+ schemaVersion: z.literal(1),
120
+ product: z
121
+ .object({
122
+ id: z.string().min(1),
123
+ name: z.string().min(1),
124
+ version: z.string().min(1),
125
+ })
126
+ .strict(),
127
+ environment: z
128
+ .object({
129
+ id: z.string().min(1),
130
+ })
131
+ .strict(),
132
+ compatibility: z
133
+ .object({
134
+ dromio: dromioRequiresSchema,
135
+ runtime: runtimeRequiresSchema.optional(),
136
+ })
137
+ .strict(),
138
+ artifacts: z
139
+ .object({
140
+ productManifest: z.string().min(1),
141
+ environmentManifest: z.string().min(1),
142
+ sourceInventory: z.string().min(1),
143
+ checksums: z.string().min(1),
144
+ })
145
+ .strict(),
146
+ provenance: z
147
+ .object({
148
+ builder: z.literal("@dromio/product"),
149
+ generatedAt: z.string().min(1),
150
+ })
151
+ .strict(),
152
+ })
153
+ .strict();
154
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}