@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,106 @@
1
+ import { exportedFunctions, finding, importTargets, } from "./architectureCheckTypes.js";
2
+ export function checkEffectContracts(files, product, severity) {
3
+ if (product.architecture.effect_mode !== "strict")
4
+ return [];
5
+ return [
6
+ ...checkEffectRequires(product, severity),
7
+ ...checkEffectSdkSignatures(files, severity),
8
+ ...checkEffectPortsAsTags(files, severity),
9
+ ...checkEffectAdaptersAsLayers(files, severity),
10
+ ...checkEffectRunPromiseBoundary(files, severity),
11
+ ...checkEffectSchemaContracts(files, severity),
12
+ ...checkEffectNoRawTagUse(files, severity),
13
+ ];
14
+ }
15
+ function checkEffectRequires(product, severity) {
16
+ const runtime = product.requires.runtime;
17
+ const findings = [];
18
+ if (!runtime?.effect) {
19
+ findings.push(finding(severity, "effect-runtime-requires", "dromio.product.yml", 'effect_mode strict requires requires.runtime.effect', 'Add requires.runtime.effect, for example effect: ">=3.0.0".'));
20
+ }
21
+ if (!runtime?.["@effect/schema"]) {
22
+ findings.push(finding(severity, "effect-runtime-requires", "dromio.product.yml", 'effect_mode strict requires requires.runtime["@effect/schema"]', 'Add requires.runtime["@effect/schema"], for example ">=0.70.0".'));
23
+ }
24
+ return findings;
25
+ }
26
+ function checkEffectSdkSignatures(files, severity) {
27
+ return files
28
+ .filter((file) => file.relativePath.startsWith("src/sdk/"))
29
+ .flatMap((file) => exportedFunctions(file).flatMap((signature) => {
30
+ if (signature.returnType.includes("Effect.Effect<") && !signature.returnType.includes("Promise<"))
31
+ return [];
32
+ return [
33
+ finding(severity, "effect-sdk-signatures", file.relativePath, `SDK trigger "${signature.name}" must return Effect.Effect, not a raw Promise or value`, "Return Effect.Effect<Value, Error, Requirements> from SDK triggers and run it only at adapters."),
34
+ ];
35
+ }));
36
+ }
37
+ function checkEffectPortsAsTags(files, severity) {
38
+ return files
39
+ .filter((file) => file.relativePath.startsWith("src/ports/"))
40
+ .flatMap((file) => {
41
+ const findings = [];
42
+ if (/\bexport\s+(interface|type)\b/.test(file.content)) {
43
+ findings.push(finding(severity, "effect-ports-as-tags", file.relativePath, "Effect ports must be Context.Tag services, not raw exported interface or type aliases", "Export a Context.Tag class or value whose service shape contains Effect-returning operations."));
44
+ }
45
+ if (!file.content.includes("Context.Tag")) {
46
+ findings.push(finding(severity, "effect-ports-as-tags", file.relativePath, "Effect port file does not define a Context.Tag", "Define the port as a named Context.Tag so SDK code depends on capabilities, not concretes."));
47
+ }
48
+ return findings;
49
+ });
50
+ }
51
+ function checkEffectAdaptersAsLayers(files, severity) {
52
+ return files
53
+ .filter((file) => file.relativePath.startsWith("src/adapters/system/"))
54
+ .flatMap((file) => {
55
+ if (file.content.includes("Layer."))
56
+ return [];
57
+ return [
58
+ finding(severity, "effect-adapters-as-layers", file.relativePath, "Effect system adapters must export Layer implementations", "Wrap concrete system implementations with Layer.effect, Layer.succeed, or another Layer constructor."),
59
+ ];
60
+ });
61
+ }
62
+ function checkEffectRunPromiseBoundary(files, severity) {
63
+ return files.flatMap((file) => {
64
+ if (!/\bEffect\.run(?:Promise|Sync)\s*\(/.test(file.content))
65
+ return [];
66
+ if (/^src\/adapters\/(?:http|cli)\//.test(file.relativePath) || file.relativePath.startsWith("src/app/")) {
67
+ return [];
68
+ }
69
+ return [
70
+ finding(severity, "effect-runpromise-boundary", file.relativePath, "Effect.runPromise or Effect.runSync is outside the adapter boundary", "Run Effects only in HTTP, CLI, or app adapter composition code."),
71
+ ];
72
+ });
73
+ }
74
+ function checkEffectSchemaContracts(files, severity) {
75
+ return files
76
+ .filter((file) => file.relativePath.startsWith("src/contracts/"))
77
+ .flatMap((file) => {
78
+ const findings = [];
79
+ if (/from\s+["']zod["']/.test(file.content)) {
80
+ findings.push(finding(severity, "effect-schema-contracts", file.relativePath, "Effect strict contracts must not import zod", "Use @effect/schema or effect/Schema for runtime contracts in src/contracts/."));
81
+ }
82
+ if (!/from\s+["'](?:@effect\/schema|effect\/Schema)["']/.test(file.content)) {
83
+ findings.push(finding(severity, "effect-schema-contracts", file.relativePath, "Effect strict contracts must import @effect/schema or effect/Schema", "Define shared contracts with Effect Schema so SDK errors and payloads stay typed."));
84
+ }
85
+ return findings;
86
+ });
87
+ }
88
+ function checkEffectNoRawTagUse(files, severity) {
89
+ return files
90
+ .filter((file) => file.relativePath.startsWith("src/sdk/") ||
91
+ file.relativePath.startsWith("catalog/") ||
92
+ file.relativePath.startsWith("workflows/"))
93
+ .flatMap((file) => {
94
+ const findings = [];
95
+ for (const target of importTargets(file)) {
96
+ if (target.startsWith("src/adapters/system/")) {
97
+ findings.push(finding(severity, "effect-no-raw-tag-use", file.relativePath, `core or workbench source imports concrete adapter ${target}`, "Yield Context.Tag ports in Effect programs and provide concrete Layers at adapter boundaries."));
98
+ }
99
+ }
100
+ if (/\bnew\s+[A-Z][A-Za-z0-9]*(Store|Client|Repository|Adapter)\s*\(/.test(file.content)) {
101
+ findings.push(finding(severity, "effect-no-raw-tag-use", file.relativePath, "core or workbench source instantiates a concrete adapter directly", "Request the port with yield* and provide a Layer from adapter composition code."));
102
+ }
103
+ return findings;
104
+ });
105
+ }
106
+ //# sourceMappingURL=architectureEffectCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architectureEffectCheck.js","sourceRoot":"","sources":["../src/architectureEffectCheck.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ export type DromioScaffoldFileOperation = "append" | "create" | "skip" | "update";
2
+ export interface DromioProductScaffoldFilePlan {
3
+ readonly content: string;
4
+ readonly operation: DromioScaffoldFileOperation;
5
+ readonly path: string;
6
+ readonly reason: string;
7
+ readonly relativePath: string;
8
+ }
9
+ export interface CreateDromioProductScaffoldPlanOptions {
10
+ readonly capabilities?: readonly DromioProductScaffoldCapability[];
11
+ readonly deferredWorkflows?: readonly DromioProductScaffoldDeferredWorkflow[];
12
+ readonly fileOverrides?: readonly DromioProductScaffoldFileOverride[];
13
+ readonly firstConversionSliceId?: string;
14
+ readonly flagshipWorkflowId?: string;
15
+ readonly panels?: readonly DromioProductScaffoldPanel[];
16
+ readonly productId?: string;
17
+ readonly productGoal?: string;
18
+ readonly productName?: string;
19
+ readonly productRoot: string;
20
+ readonly singleWorkflowJustification?: string;
21
+ readonly workflowSetRationale?: string;
22
+ readonly workflows?: readonly DromioProductScaffoldWorkflow[];
23
+ }
24
+ export interface DromioProductScaffoldPlan {
25
+ readonly files: readonly DromioProductScaffoldFilePlan[];
26
+ readonly productId: string;
27
+ readonly productName: string;
28
+ readonly productRoot: string;
29
+ }
30
+ export interface DromioProductScaffoldWorkflow {
31
+ readonly approvalPolicy?: "human-confirm-writes" | "none";
32
+ readonly id: string;
33
+ readonly title: string;
34
+ }
35
+ export interface DromioProductScaffoldDeferredWorkflow {
36
+ readonly id: string;
37
+ readonly reason: string;
38
+ readonly title: string;
39
+ }
40
+ export interface DromioProductScaffoldCapability {
41
+ readonly id: string;
42
+ readonly mode: "approval-gated" | "read" | "write";
43
+ }
44
+ export interface DromioProductScaffoldFileOverride {
45
+ readonly content: string;
46
+ readonly relativePath: string;
47
+ }
48
+ export interface DromioProductScaffoldPanel {
49
+ readonly id: string;
50
+ readonly title: string;
51
+ }
52
+ export declare function createDromioProductScaffoldPlan(options: CreateDromioProductScaffoldPlanOptions): Promise<DromioProductScaffoldPlan>;
53
+ export declare function applyDromioProductScaffoldPlan(plan: DromioProductScaffoldPlan): Promise<DromioProductScaffoldPlan>;
54
+ export declare function productRelativePath(productRoot: string, path: string): string;
55
+ //# sourceMappingURL=authoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,2BAA2B,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAElF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,+BAA+B,EAAE,CAAC;IACnE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,qCAAqC,EAAE,CAAC;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,iCAAiC,EAAE,CAAC;IACtE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC/D;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;CACpD;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,sCAAsC,GAC9C,OAAO,CAAC,yBAAyB,CAAC,CAsBpC;AAED,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,yBAAyB,CAAC,CAcpC;AAyWD,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E"}
@@ -0,0 +1,308 @@
1
+ import { appendFile, mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { existsSync } from "node:fs";
3
+ import { basename, dirname, relative, resolve } from "node:path";
4
+ import { resolveProductPath, toPosixPath } from "./files.js";
5
+ import { architectureScaffoldTemplates } from "./authoringArchitectureTemplates.js";
6
+ import { environmentManifestTemplate, productManifestTemplate } from "./authoringManifestTemplates.js";
7
+ import { agentsTemplate, DEFAULT_ENV_VALUES, DEFAULT_GITIGNORE_LINES, envTemplate, gitignoreTemplate, openCodeConfigTemplate, packageJsonTemplate, skillTemplate, } from "./authoringTemplates.js";
8
+ import { workflowArtifactTemplates, } from "./authoringWorkflowTemplates.js";
9
+ import { packageJsonFilePlan } from "./authoringPackageJson.js";
10
+ import { findForbiddenImportReasons } from "./forbiddenImports.js";
11
+ export async function createDromioProductScaffoldPlan(options) {
12
+ const productRoot = resolve(options.productRoot);
13
+ const productId = options.productId ?? productIdFromName(options.productName ?? basename(productRoot));
14
+ const productName = options.productName ?? titleFromProductId(productId);
15
+ const files = await Promise.all(scaffoldTemplates(productId, productName, options).map(async (template) => template.relativePath === "package.json"
16
+ ? packageJsonFilePlan(productRoot, template.relativePath, template.content)
17
+ : template.relativePath === ".env" || template.relativePath === ".env.example"
18
+ ? envFilePlan(productRoot, template.relativePath)
19
+ : template.relativePath === ".gitignore"
20
+ ? gitignoreFilePlan(productRoot, template.relativePath)
21
+ : createFilePlan(productRoot, template.relativePath, template.content)));
22
+ return {
23
+ files,
24
+ productId,
25
+ productName,
26
+ productRoot,
27
+ };
28
+ }
29
+ export async function applyDromioProductScaffoldPlan(plan) {
30
+ for (const file of plan.files) {
31
+ if (file.operation === "skip")
32
+ continue;
33
+ await mkdir(dirname(file.path), { recursive: true });
34
+ if (file.operation === "append") {
35
+ await appendFile(file.path, file.content, "utf8");
36
+ continue;
37
+ }
38
+ await writeFile(file.path, file.content, {
39
+ encoding: "utf8",
40
+ mode: file.relativePath === ".env" ? 0o600 : 0o644,
41
+ });
42
+ }
43
+ return plan;
44
+ }
45
+ function scaffoldTemplates(productId, productName, shape) {
46
+ const templates = [
47
+ { relativePath: "package.json", content: packageJsonTemplate(productId) },
48
+ { relativePath: "dromio.product.yml", content: productManifestTemplate(productId, productName, shape) },
49
+ { relativePath: "dromio.env.dev.yml", content: environmentManifestTemplate() },
50
+ { relativePath: ".env.example", content: envTemplate() },
51
+ { relativePath: ".env", content: envTemplate() },
52
+ { relativePath: ".gitignore", content: gitignoreTemplate() },
53
+ { relativePath: "opencode.json", content: openCodeConfigTemplate() },
54
+ { relativePath: "AGENTS.md", content: agentsTemplate(productName) },
55
+ { relativePath: "SKILL.md", content: skillTemplate(productName) },
56
+ ...architectureScaffoldTemplates(productId),
57
+ { relativePath: "src/workflows/index.ts", content: workflowsModuleTemplate(shape.workflows, shape.flagshipWorkflowId) },
58
+ ...workflowArtifactTemplates(productId, shape.workflows),
59
+ { relativePath: "src/capabilities/index.ts", content: capabilitiesModuleTemplate(shape.capabilities) },
60
+ { relativePath: "src/panels/index.ts", content: panelsModuleTemplate(shape.panels) },
61
+ { relativePath: "fixtures/sample-product-context.json", content: sampleFixtureTemplate(productId) },
62
+ { relativePath: "evals/authoring/.gitkeep", content: "" },
63
+ ];
64
+ if (hasProductShape(shape)) {
65
+ templates.push({
66
+ relativePath: "dromio.product.shape.json",
67
+ content: productShapeEvidenceTemplate(productId, productName, shape),
68
+ });
69
+ templates.push({
70
+ relativePath: "evals/authoring/product-map.eval.ts",
71
+ content: productMapEvalTemplate(shape.workflows, shape.firstConversionSliceId ?? shape.flagshipWorkflowId),
72
+ });
73
+ }
74
+ if (shape.flagshipWorkflowId) {
75
+ templates.push({
76
+ relativePath: `evals/authoring/${productIdFromName(shape.flagshipWorkflowId)}.eval.ts`,
77
+ content: flagshipWorkflowEvalTemplate(shape.flagshipWorkflowId),
78
+ });
79
+ }
80
+ return applyFileOverrides(templates, shape.fileOverrides);
81
+ }
82
+ function applyFileOverrides(templates, overrides) {
83
+ if (!overrides || overrides.length === 0)
84
+ return templates;
85
+ const byPath = new Map(templates.map((template) => [template.relativePath, template]));
86
+ for (const override of overrides) {
87
+ const forbiddenReasons = findForbiddenImportReasons(override.content);
88
+ if (forbiddenReasons.length > 0) {
89
+ throw new Error(`Scaffold override ${override.relativePath} contains forbidden import: ${forbiddenReasons.join("; ")}`);
90
+ }
91
+ byPath.set(override.relativePath, {
92
+ content: override.content,
93
+ relativePath: override.relativePath,
94
+ });
95
+ }
96
+ return [...byPath.values()];
97
+ }
98
+ async function createFilePlan(productRoot, relativePath, content) {
99
+ const path = resolveProductPath(productRoot, relativePath);
100
+ if (existsSync(path)) {
101
+ return {
102
+ content: "",
103
+ operation: "skip",
104
+ path,
105
+ reason: "file already exists",
106
+ relativePath,
107
+ };
108
+ }
109
+ return {
110
+ content,
111
+ operation: "create",
112
+ path,
113
+ reason: "file missing",
114
+ relativePath,
115
+ };
116
+ }
117
+ async function envFilePlan(productRoot, relativePath) {
118
+ const path = resolveProductPath(productRoot, relativePath);
119
+ if (!existsSync(path)) {
120
+ return {
121
+ content: envTemplate(),
122
+ operation: "create",
123
+ path,
124
+ reason: "env file missing",
125
+ relativePath,
126
+ };
127
+ }
128
+ const current = await readFile(path, "utf8");
129
+ const missingLines = missingEnvLines(current);
130
+ if (missingLines.length === 0) {
131
+ return {
132
+ content: "",
133
+ operation: "skip",
134
+ path,
135
+ reason: "env values already present",
136
+ relativePath,
137
+ };
138
+ }
139
+ return {
140
+ content: `${current.endsWith("\n") ? "" : "\n"}${missingLines.join("\n")}\n`,
141
+ operation: "append",
142
+ path,
143
+ reason: "append missing env values",
144
+ relativePath,
145
+ };
146
+ }
147
+ function missingEnvLines(current) {
148
+ const presentKeys = new Set(current
149
+ .split(/\r?\n/)
150
+ .map((line) => line.trim())
151
+ .filter((line) => line !== "" && !line.startsWith("#"))
152
+ .map((line) => line.split("=", 1)[0]));
153
+ return DEFAULT_ENV_VALUES
154
+ .filter(([key]) => !presentKeys.has(key))
155
+ .map(([key, value]) => `${key}=${value}`);
156
+ }
157
+ async function gitignoreFilePlan(productRoot, relativePath) {
158
+ const path = resolveProductPath(productRoot, relativePath);
159
+ if (!existsSync(path)) {
160
+ return {
161
+ content: gitignoreTemplate(),
162
+ operation: "create",
163
+ path,
164
+ reason: "gitignore file missing",
165
+ relativePath,
166
+ };
167
+ }
168
+ const current = await readFile(path, "utf8");
169
+ const missingLines = DEFAULT_GITIGNORE_LINES.filter((line) => !hasGitignoreLine(current, line));
170
+ if (missingLines.length === 0) {
171
+ return {
172
+ content: "",
173
+ operation: "skip",
174
+ path,
175
+ reason: "gitignore values already present",
176
+ relativePath,
177
+ };
178
+ }
179
+ return {
180
+ content: `${current.endsWith("\n") ? "" : "\n"}${missingLines.join("\n")}\n`,
181
+ operation: "append",
182
+ path,
183
+ reason: "append missing gitignore values",
184
+ relativePath,
185
+ };
186
+ }
187
+ function hasGitignoreLine(current, expected) {
188
+ return current
189
+ .split(/\r?\n/)
190
+ .map((line) => line.trim())
191
+ .some((line) => line === expected);
192
+ }
193
+ function workflowsModuleTemplate(workflows, flagshipWorkflowId) {
194
+ return `export const dromioProductWorkflowIds = ${JSON.stringify((workflows ?? []).map((workflow) => workflow.id), null, 2)} as const;
195
+
196
+ export const dromioProductWorkflows = ${JSON.stringify(workflows ?? [], null, 2)} as const;
197
+
198
+ export const dromioProductFlagshipWorkflow = ${JSON.stringify(flagshipWorkflowId ?? null)} as const;
199
+ `;
200
+ }
201
+ function capabilitiesModuleTemplate(capabilities) {
202
+ return `export const dromioProductCapabilities = ${JSON.stringify(capabilities ?? [], null, 2)} as const;
203
+ `;
204
+ }
205
+ function panelsModuleTemplate(panels) {
206
+ return `export const dromioProductPanels = ${JSON.stringify(panels ?? [], null, 2)} as const;
207
+ `;
208
+ }
209
+ function sampleFixtureTemplate(productId) {
210
+ return `${JSON.stringify({ productId, sample: true }, null, 2)}\n`;
211
+ }
212
+ function hasProductShape(shape) {
213
+ return Boolean(shape.flagshipWorkflowId ||
214
+ shape.workflows?.length ||
215
+ shape.capabilities?.length ||
216
+ shape.deferredWorkflows?.length ||
217
+ shape.firstConversionSliceId ||
218
+ shape.productGoal ||
219
+ shape.panels?.length ||
220
+ shape.singleWorkflowJustification ||
221
+ shape.workflowSetRationale);
222
+ }
223
+ function productShapeEvidenceTemplate(productId, productName, shape) {
224
+ const firstConversionSliceId = shape.firstConversionSliceId ?? shape.flagshipWorkflowId ?? shape.workflows?.[0]?.id ?? null;
225
+ return `${JSON.stringify({
226
+ capabilityCommands: shape.capabilities ?? [],
227
+ deferredWorkflows: shape.deferredWorkflows ?? [],
228
+ firstConversionSliceId,
229
+ panels: shape.panels ?? [],
230
+ product: {
231
+ id: productId,
232
+ name: productName,
233
+ },
234
+ productGoal: shape.productGoal ?? null,
235
+ schemaVersion: 1,
236
+ singleWorkflowJustification: shape.singleWorkflowJustification ?? null,
237
+ workflowSetRationale: shape.workflowSetRationale ?? null,
238
+ workflowPortfolio: shape.workflows ?? [],
239
+ }, null, 2)}\n`;
240
+ }
241
+ function productMapEvalTemplate(workflows, firstConversionSliceId) {
242
+ const expectedWorkflowIds = (workflows ?? []).map((workflow) => workflow.id);
243
+ return `import { defineEval } from "@dromio/evals";
244
+
245
+ import { dromioProductCapabilities } from "../../src/capabilities/index.ts";
246
+ import { dromioProductPanels } from "../../src/panels/index.ts";
247
+ import { dromioProductWorkflowIds } from "../../src/workflows/index.ts";
248
+
249
+ const expectedWorkflowIds = ${JSON.stringify(expectedWorkflowIds, null, 2)} as const;
250
+ const firstConversionSliceId = ${JSON.stringify(firstConversionSliceId ?? null)} as const;
251
+
252
+ export default defineEval({
253
+ id: "authoring/product-map",
254
+ title: "Product map",
255
+ test(t) {
256
+ t.equal(dromioProductWorkflowIds.length, expectedWorkflowIds.length, "workflow portfolio size matches approved shape");
257
+ for (const workflowId of expectedWorkflowIds) {
258
+ t.ok(dromioProductWorkflowIds.includes(workflowId), \`workflow portfolio includes \${workflowId}\`);
259
+ }
260
+ if (firstConversionSliceId) {
261
+ t.ok(dromioProductWorkflowIds.includes(firstConversionSliceId), "first conversion slice is in the workflow portfolio");
262
+ t.ok(
263
+ expectedWorkflowIds.length > 1 || dromioProductWorkflowIds[0] === firstConversionSliceId,
264
+ "first conversion slice is not silently replacing a broader workflow portfolio",
265
+ );
266
+ }
267
+ t.ok(dromioProductCapabilities.length > 0, "capability contracts exist");
268
+ t.ok(dromioProductPanels.length > 0, "panel contracts exist");
269
+ t.completed("product map has approved workflow portfolio, capability, and panel contracts");
270
+ },
271
+ });
272
+ `;
273
+ }
274
+ function flagshipWorkflowEvalTemplate(flagshipWorkflowId) {
275
+ return `import { defineEval } from "@dromio/evals";
276
+
277
+ import { dromioProductFlagshipWorkflow, dromioProductWorkflowIds } from "../../src/workflows/index.ts";
278
+
279
+ export default defineEval({
280
+ id: "authoring/${productIdFromName(flagshipWorkflowId)}",
281
+ title: "Flagship workflow",
282
+ test(t) {
283
+ t.equal(dromioProductFlagshipWorkflow, ${JSON.stringify(flagshipWorkflowId)});
284
+ t.ok(dromioProductWorkflowIds.includes(${JSON.stringify(flagshipWorkflowId)}));
285
+ t.completed("flagship workflow is represented in the product map");
286
+ },
287
+ });
288
+ `;
289
+ }
290
+ function productIdFromName(name) {
291
+ const value = name
292
+ .trim()
293
+ .toLowerCase()
294
+ .replace(/[^a-z0-9]+/g, "-")
295
+ .replace(/^-+|-+$/g, "");
296
+ return value || "dromio-product";
297
+ }
298
+ function titleFromProductId(productId) {
299
+ return productId
300
+ .split("-")
301
+ .filter(Boolean)
302
+ .map((part) => `${part[0]?.toUpperCase() ?? ""}${part.slice(1)}`)
303
+ .join(" ");
304
+ }
305
+ export function productRelativePath(productRoot, path) {
306
+ return toPosixPath(relative(resolve(productRoot), path));
307
+ }
308
+ //# sourceMappingURL=authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function architectureScaffoldTemplates(productId: string): readonly {
2
+ readonly content: string;
3
+ readonly relativePath: string;
4
+ }[];
5
+ //# sourceMappingURL=authoringArchitectureTemplates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoringArchitectureTemplates.d.ts","sourceRoot":"","sources":["../src/authoringArchitectureTemplates.ts"],"names":[],"mappings":"AAAA,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,GAChB,SAAS;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,CAWxE"}