@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.
- package/LICENSE +201 -0
- package/dist/architectureCheck.d.ts +11 -0
- package/dist/architectureCheck.d.ts.map +1 -0
- package/dist/architectureCheck.js +269 -0
- package/dist/architectureCheck.js.map +1 -0
- package/dist/architectureCheckTypes.d.ts +23 -0
- package/dist/architectureCheckTypes.d.ts.map +1 -0
- package/dist/architectureCheckTypes.js +50 -0
- package/dist/architectureCheckTypes.js.map +1 -0
- package/dist/architectureEffectCheck.d.ts +4 -0
- package/dist/architectureEffectCheck.d.ts.map +1 -0
- package/dist/architectureEffectCheck.js +106 -0
- package/dist/architectureEffectCheck.js.map +1 -0
- package/dist/authoring.d.ts +55 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +308 -0
- package/dist/authoring.js.map +1 -0
- package/dist/authoringArchitectureTemplates.d.ts +5 -0
- package/dist/authoringArchitectureTemplates.d.ts.map +1 -0
- package/dist/authoringArchitectureTemplates.js +169 -0
- package/dist/authoringArchitectureTemplates.js.map +1 -0
- package/dist/authoringManifestTemplates.d.ts +4 -0
- package/dist/authoringManifestTemplates.d.ts.map +1 -0
- package/dist/authoringManifestTemplates.js +77 -0
- package/dist/authoringManifestTemplates.js.map +1 -0
- package/dist/authoringPackageJson.d.ts +3 -0
- package/dist/authoringPackageJson.d.ts.map +1 -0
- package/dist/authoringPackageJson.js +69 -0
- package/dist/authoringPackageJson.js.map +1 -0
- package/dist/authoringTemplates.d.ts +9 -0
- package/dist/authoringTemplates.d.ts.map +1 -0
- package/dist/authoringTemplates.js +142 -0
- package/dist/authoringTemplates.js.map +1 -0
- package/dist/authoringWorkflowTemplates.d.ts +13 -0
- package/dist/authoringWorkflowTemplates.d.ts.map +1 -0
- package/dist/authoringWorkflowTemplates.js +282 -0
- package/dist/authoringWorkflowTemplates.js.map +1 -0
- package/dist/build.d.ts +12 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +119 -0
- package/dist/build.js.map +1 -0
- package/dist/check.d.ts +16 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +172 -0
- package/dist/check.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +93 -0
- package/dist/cli.js.map +1 -0
- package/dist/deploymentProfile.d.ts +19 -0
- package/dist/deploymentProfile.d.ts.map +1 -0
- package/dist/deploymentProfile.js +72 -0
- package/dist/deploymentProfile.js.map +1 -0
- package/dist/emitFromDefinition.d.ts +14 -0
- package/dist/emitFromDefinition.d.ts.map +1 -0
- package/dist/emitFromDefinition.js +87 -0
- package/dist/emitFromDefinition.js.map +1 -0
- package/dist/files.d.ts +13 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +77 -0
- package/dist/files.js.map +1 -0
- package/dist/forbiddenImports.d.ts +7 -0
- package/dist/forbiddenImports.d.ts.map +1 -0
- package/dist/forbiddenImports.js +31 -0
- package/dist/forbiddenImports.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +14 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +49 -0
- package/dist/manifest.js.map +1 -0
- package/dist/publish.d.ts +29 -0
- package/dist/publish.d.ts.map +1 -0
- package/dist/publish.js +40 -0
- package/dist/publish.js.map +1 -0
- package/dist/publishPlan.d.ts +62 -0
- package/dist/publishPlan.d.ts.map +1 -0
- package/dist/publishPlan.js +204 -0
- package/dist/publishPlan.js.map +1 -0
- package/dist/schemas.d.ts +141 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +154 -0
- package/dist/schemas.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
export function architectureScaffoldTemplates(productId) {
|
|
2
|
+
return [
|
|
3
|
+
{ relativePath: "src/contracts/task.ts", content: taskContractsTemplate() },
|
|
4
|
+
{ relativePath: "src/ports/task-store.ts", content: taskStorePortTemplate() },
|
|
5
|
+
{ relativePath: "src/sdk/create-task.ts", content: createTaskSdkTemplate() },
|
|
6
|
+
{ relativePath: "src/sdk/index.ts", content: sdkIndexTemplate() },
|
|
7
|
+
{ relativePath: "src/adapters/system/task-store/memory.ts", content: memoryTaskStoreTemplate() },
|
|
8
|
+
{ relativePath: "src/adapters/http/routes/tasks/create.ts", content: httpCreateTaskRouteTemplate() },
|
|
9
|
+
{ relativePath: "src/adapters/cli/commands/create-task.ts", content: cliCreateTaskCommandTemplate() },
|
|
10
|
+
{ relativePath: "src/app/index.ts", content: appAdapterTemplate(productId) },
|
|
11
|
+
];
|
|
12
|
+
}
|
|
13
|
+
function taskContractsTemplate() {
|
|
14
|
+
return `import {
|
|
15
|
+
Schema,
|
|
16
|
+
} from "@effect/schema";
|
|
17
|
+
|
|
18
|
+
export const TaskSchema = Schema.Struct({
|
|
19
|
+
id: Schema.String,
|
|
20
|
+
state: Schema.Literal("open", "in-progress", "done", "archived"),
|
|
21
|
+
title: Schema.String,
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export type Task = Schema.Schema.Type<typeof TaskSchema>;
|
|
25
|
+
|
|
26
|
+
export const CreateTaskCommand = Schema.Struct({
|
|
27
|
+
title: Schema.String,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export type CreateTaskCommand = Schema.Schema.Type<typeof CreateTaskCommand>;
|
|
31
|
+
|
|
32
|
+
export interface CreateTaskResult {
|
|
33
|
+
readonly task: Task;
|
|
34
|
+
readonly taskId: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class ProductError extends Schema.TaggedError<ProductError>()("ProductError", {
|
|
38
|
+
message: Schema.String,
|
|
39
|
+
cause: Schema.optional(Schema.Unknown),
|
|
40
|
+
}) {}
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
function taskStorePortTemplate() {
|
|
44
|
+
return `import {
|
|
45
|
+
Context,
|
|
46
|
+
Effect,
|
|
47
|
+
} from "effect";
|
|
48
|
+
import {
|
|
49
|
+
type Task,
|
|
50
|
+
ProductError,
|
|
51
|
+
} from "../contracts/task.js";
|
|
52
|
+
|
|
53
|
+
export class TaskStore extends Context.Tag("TaskStore")<
|
|
54
|
+
TaskStore,
|
|
55
|
+
{
|
|
56
|
+
readonly create: (input: { readonly title: string }) => Effect.Effect<Task, ProductError>;
|
|
57
|
+
readonly findById: (id: string) => Effect.Effect<Task | null, ProductError>;
|
|
58
|
+
}
|
|
59
|
+
>() {}
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
function createTaskSdkTemplate() {
|
|
63
|
+
return `import {
|
|
64
|
+
Effect,
|
|
65
|
+
} from "effect";
|
|
66
|
+
import {
|
|
67
|
+
type CreateTaskCommand,
|
|
68
|
+
type CreateTaskResult,
|
|
69
|
+
ProductError,
|
|
70
|
+
} from "../contracts/task.js";
|
|
71
|
+
import {
|
|
72
|
+
TaskStore,
|
|
73
|
+
} from "../ports/task-store.js";
|
|
74
|
+
|
|
75
|
+
export function createTask(
|
|
76
|
+
command: CreateTaskCommand,
|
|
77
|
+
): Effect.Effect<CreateTaskResult, ProductError, TaskStore> {
|
|
78
|
+
return Effect.gen(function* () {
|
|
79
|
+
const store = yield* TaskStore;
|
|
80
|
+
const task = yield* store.create({ title: command.title });
|
|
81
|
+
return {
|
|
82
|
+
task,
|
|
83
|
+
taskId: task.id,
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
`;
|
|
88
|
+
}
|
|
89
|
+
function sdkIndexTemplate() {
|
|
90
|
+
return `export {
|
|
91
|
+
createTask,
|
|
92
|
+
} from "./create-task.js";
|
|
93
|
+
`;
|
|
94
|
+
}
|
|
95
|
+
function memoryTaskStoreTemplate() {
|
|
96
|
+
return `import {
|
|
97
|
+
Effect,
|
|
98
|
+
Layer,
|
|
99
|
+
} from "effect";
|
|
100
|
+
import {
|
|
101
|
+
type Task,
|
|
102
|
+
} from "../../../contracts/task.js";
|
|
103
|
+
import {
|
|
104
|
+
TaskStore,
|
|
105
|
+
} from "../../../ports/task-store.js";
|
|
106
|
+
|
|
107
|
+
const tasks = new Map<string, Task>();
|
|
108
|
+
|
|
109
|
+
export const MemoryTaskStore = Layer.succeed(
|
|
110
|
+
TaskStore,
|
|
111
|
+
TaskStore.of({
|
|
112
|
+
create(input) {
|
|
113
|
+
const task: Task = {
|
|
114
|
+
id: crypto.randomUUID(),
|
|
115
|
+
state: "open",
|
|
116
|
+
title: input.title,
|
|
117
|
+
};
|
|
118
|
+
tasks.set(task.id, task);
|
|
119
|
+
return Effect.succeed(task);
|
|
120
|
+
},
|
|
121
|
+
findById(id) {
|
|
122
|
+
return Effect.succeed(tasks.get(id) ?? null);
|
|
123
|
+
},
|
|
124
|
+
}),
|
|
125
|
+
);
|
|
126
|
+
`;
|
|
127
|
+
}
|
|
128
|
+
function httpCreateTaskRouteTemplate() {
|
|
129
|
+
return `import {
|
|
130
|
+
Effect,
|
|
131
|
+
} from "effect";
|
|
132
|
+
import {
|
|
133
|
+
createTask,
|
|
134
|
+
} from "../../../../sdk/create-task.js";
|
|
135
|
+
import {
|
|
136
|
+
MemoryTaskStore,
|
|
137
|
+
} from "../../../system/task-store/memory.js";
|
|
138
|
+
|
|
139
|
+
export async function handleCreateTask(input: { readonly title: string }) {
|
|
140
|
+
const program = createTask(input).pipe(Effect.provide(MemoryTaskStore));
|
|
141
|
+
return await Effect.runPromise(program);
|
|
142
|
+
}
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
function cliCreateTaskCommandTemplate() {
|
|
146
|
+
return `import {
|
|
147
|
+
Effect,
|
|
148
|
+
} from "effect";
|
|
149
|
+
import {
|
|
150
|
+
createTask,
|
|
151
|
+
} from "../../../sdk/create-task.js";
|
|
152
|
+
import {
|
|
153
|
+
MemoryTaskStore,
|
|
154
|
+
} from "../../system/task-store/memory.js";
|
|
155
|
+
|
|
156
|
+
export async function runCreateTaskCommand(input: { readonly title: string }) {
|
|
157
|
+
const program = createTask(input).pipe(Effect.provide(MemoryTaskStore));
|
|
158
|
+
return await Effect.runPromise(program);
|
|
159
|
+
}
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
function appAdapterTemplate(productId) {
|
|
163
|
+
return `export const productApp = {
|
|
164
|
+
id: ${JSON.stringify(productId)},
|
|
165
|
+
transport: "http",
|
|
166
|
+
} as const;
|
|
167
|
+
`;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=authoringArchitectureTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringArchitectureTemplates.js","sourceRoot":"","sources":["../src/authoringArchitectureTemplates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,6BAA6B,CAC3C,SAAiB;IAEjB,OAAO;QACL,EAAE,YAAY,EAAE,uBAAuB,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;QAC3E,EAAE,YAAY,EAAE,yBAAyB,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;QAC7E,EAAE,YAAY,EAAE,wBAAwB,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;QAC5E,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE;QACjE,EAAE,YAAY,EAAE,0CAA0C,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE;QAChG,EAAE,YAAY,EAAE,0CAA0C,EAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE;QACpG,EAAE,YAAY,EAAE,0CAA0C,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE;QACrG,EAAE,YAAY,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BR,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;;;;;;;;;;;;;;;;CAgBR,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;CAwBR,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;;;CAGR,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BR,CAAC;AACF,CAAC;AAED,SAAS,2BAA2B;IAClC,OAAO;;;;;;;;;;;;;;CAcR,CAAC;AACF,CAAC;AAED,SAAS,4BAA4B;IACnC,OAAO;;;;;;;;;;;;;;CAcR,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,OAAO;QACD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;CAGhC,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CreateDromioProductScaffoldPlanOptions } from "./authoring.js";
|
|
2
|
+
export declare function productManifestTemplate(productId: string, productName: string, shape: Pick<CreateDromioProductScaffoldPlanOptions, "capabilities" | "firstConversionSliceId" | "flagshipWorkflowId" | "panels" | "productGoal" | "workflows">): string;
|
|
3
|
+
export declare function environmentManifestTemplate(): string;
|
|
4
|
+
//# sourceMappingURL=authoringManifestTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringManifestTemplates.d.ts","sourceRoot":"","sources":["../src/authoringManifestTemplates.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,sCAAsC,EAIvC,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,IAAI,CACT,sCAAsC,EACtC,cAAc,GAAG,wBAAwB,GAAG,oBAAoB,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,CAC1G,GACA,MAAM,CAyBR;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAcpD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { workflowCompileArtifactPath, workflowDocumentPath, } from "./authoringWorkflowTemplates.js";
|
|
2
|
+
export function productManifestTemplate(productId, productName, shape) {
|
|
3
|
+
return `id: ${productId}
|
|
4
|
+
name: ${yamlString(productName)}
|
|
5
|
+
version: 0.1.0
|
|
6
|
+
requires:
|
|
7
|
+
dromio:
|
|
8
|
+
sdk: ">=0.1.0 <0.2.0"
|
|
9
|
+
product: ">=0.1.0 <0.2.0"
|
|
10
|
+
runtime:
|
|
11
|
+
effect: ">=3.0.0"
|
|
12
|
+
"@effect/schema": ">=0.70.0"
|
|
13
|
+
architecture:
|
|
14
|
+
mode: strict
|
|
15
|
+
effect_mode: strict
|
|
16
|
+
source_line_limit: 500
|
|
17
|
+
entry:
|
|
18
|
+
workflows: src/workflows/index.ts
|
|
19
|
+
capabilities: src/capabilities/index.ts
|
|
20
|
+
panels: src/panels/index.ts
|
|
21
|
+
workflows:${workflowManifestEntries(shape.workflows)}
|
|
22
|
+
capabilities:${capabilityManifestEntries(shape.capabilities)}
|
|
23
|
+
panels:${panelManifestEntries(shape.panels)}
|
|
24
|
+
fixtures:
|
|
25
|
+
- fixtures/sample-product-context.json
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
28
|
+
export function environmentManifestTemplate() {
|
|
29
|
+
return `id: dev
|
|
30
|
+
runtime:
|
|
31
|
+
provider: openai
|
|
32
|
+
model: gpt-4.1-mini
|
|
33
|
+
storage: {}
|
|
34
|
+
sandbox:
|
|
35
|
+
filesystem:
|
|
36
|
+
mode: local
|
|
37
|
+
writable:
|
|
38
|
+
- ./.dromio
|
|
39
|
+
approvals:
|
|
40
|
+
writes: required
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
function workflowManifestEntries(workflows) {
|
|
44
|
+
if (!workflows || workflows.length === 0)
|
|
45
|
+
return " []";
|
|
46
|
+
return `\n${workflows
|
|
47
|
+
.map((workflow) => ` - id: ${yamlString(workflow.id)}
|
|
48
|
+
title: ${yamlString(workflow.title)}
|
|
49
|
+
approvalPolicy: ${workflow.approvalPolicy ?? "none"}
|
|
50
|
+
document: ${yamlString(workflowDocumentPath(workflow.id))}
|
|
51
|
+
compileArtifact: ${yamlString(workflowCompileArtifactPath(workflow.id))}`)
|
|
52
|
+
.join("\n")}`;
|
|
53
|
+
}
|
|
54
|
+
function capabilityManifestEntries(capabilities) {
|
|
55
|
+
if (!capabilities || capabilities.length === 0)
|
|
56
|
+
return " []";
|
|
57
|
+
return `\n${capabilities
|
|
58
|
+
.map((capability) => ` - id: ${yamlString(capability.id)}
|
|
59
|
+
mode: ${capability.mode}`)
|
|
60
|
+
.join("\n")}`;
|
|
61
|
+
}
|
|
62
|
+
function panelManifestEntries(panels) {
|
|
63
|
+
if (!panels || panels.length === 0)
|
|
64
|
+
return " []";
|
|
65
|
+
return `\n${panels
|
|
66
|
+
.map((panel) => ` - id: ${yamlString(panel.id)}
|
|
67
|
+
kind: json-render
|
|
68
|
+
title: ${yamlString(panel.title)}
|
|
69
|
+
view:
|
|
70
|
+
type: panel
|
|
71
|
+
title: ${yamlString(panel.title)}`)
|
|
72
|
+
.join("\n")}`;
|
|
73
|
+
}
|
|
74
|
+
function yamlString(value) {
|
|
75
|
+
return JSON.stringify(value);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=authoringManifestTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringManifestTemplates.js","sourceRoot":"","sources":["../src/authoringManifestTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AAQzC,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,WAAmB,EACnB,KAGC;IAED,OAAO,OAAO,SAAS;QACjB,UAAU,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;YAiBnB,uBAAuB,CAAC,KAAK,CAAC,SAAS,CAAC;eACrC,yBAAyB,CAAC,KAAK,CAAC,YAAY,CAAC;SACnD,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;;;CAG1C,CAAC;AACF,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;CAYR,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAC9B,SAA+D;IAE/D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,OAAO,KAAK,SAAS;SAClB,GAAG,CACF,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;aACzC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;sBACjB,QAAQ,CAAC,cAAc,IAAI,MAAM;gBACvC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;uBACtC,UAAU,CAAC,2BAA2B,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,CACxE;SACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,yBAAyB,CAChC,YAAoE;IAEpE,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7D,OAAO,KAAK,YAAY;SACrB,GAAG,CACF,CAAC,UAAU,EAAE,EAAE,CAAC,WAAW,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,UAAU,CAAC,IAAI,EAAE,CACxB;SACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAyD;IACrF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,OAAO,KAAK,MAAM;SACf,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;;aAEnC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;;;eAGrB,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CACnC;SACA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringPackageJson.d.ts","sourceRoot":"","sources":["../src/authoringPackageJson.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAEpE,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,6BAA6B,CAAC,CAkCxC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { resolveProductPath } from "./files.js";
|
|
4
|
+
export async function packageJsonFilePlan(productRoot, relativePath, content) {
|
|
5
|
+
const path = resolveProductPath(productRoot, relativePath);
|
|
6
|
+
if (!existsSync(path)) {
|
|
7
|
+
return {
|
|
8
|
+
content,
|
|
9
|
+
operation: "create",
|
|
10
|
+
path,
|
|
11
|
+
reason: "package manifest missing",
|
|
12
|
+
relativePath,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const current = await readFile(path, "utf8");
|
|
16
|
+
const existing = parsePackageJson(current, path);
|
|
17
|
+
const desired = parsePackageJson(content, "Dromio package template");
|
|
18
|
+
const merged = mergePackageJson(existing, desired);
|
|
19
|
+
const mergedContent = `${JSON.stringify(merged, null, 2)}\n`;
|
|
20
|
+
if (`${JSON.stringify(existing, null, 2)}\n` === mergedContent) {
|
|
21
|
+
return {
|
|
22
|
+
content: "",
|
|
23
|
+
operation: "skip",
|
|
24
|
+
path,
|
|
25
|
+
reason: "package manifest already has Dromio authoring scripts and dependencies",
|
|
26
|
+
relativePath,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
content: mergedContent,
|
|
31
|
+
operation: "update",
|
|
32
|
+
path,
|
|
33
|
+
reason: "merge Dromio authoring scripts and dependencies",
|
|
34
|
+
relativePath,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function parsePackageJson(content, label) {
|
|
38
|
+
const parsed = JSON.parse(content);
|
|
39
|
+
if (!isJsonRecord(parsed)) {
|
|
40
|
+
throw new Error(`${label} must contain a JSON object`);
|
|
41
|
+
}
|
|
42
|
+
return parsed;
|
|
43
|
+
}
|
|
44
|
+
function mergePackageJson(existing, desired) {
|
|
45
|
+
return {
|
|
46
|
+
...existing,
|
|
47
|
+
name: readNonEmptyString(existing.name) ?? desired.name,
|
|
48
|
+
private: typeof existing.private === "boolean" ? existing.private : desired.private,
|
|
49
|
+
type: readNonEmptyString(existing.type) ?? desired.type,
|
|
50
|
+
scripts: {
|
|
51
|
+
...readRecord(existing.scripts),
|
|
52
|
+
...readRecord(desired.scripts),
|
|
53
|
+
},
|
|
54
|
+
dependencies: {
|
|
55
|
+
...readRecord(existing.dependencies),
|
|
56
|
+
...readRecord(desired.dependencies),
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function readNonEmptyString(value) {
|
|
61
|
+
return typeof value === "string" && value.trim() !== "" ? value : undefined;
|
|
62
|
+
}
|
|
63
|
+
function readRecord(value) {
|
|
64
|
+
return isJsonRecord(value) ? value : {};
|
|
65
|
+
}
|
|
66
|
+
function isJsonRecord(value) {
|
|
67
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=authoringPackageJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringPackageJson.js","sourceRoot":"","sources":["../src/authoringPackageJson.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const DEFAULT_ENV_VALUES: readonly [string, string][];
|
|
2
|
+
export declare const DEFAULT_GITIGNORE_LINES: readonly string[];
|
|
3
|
+
export declare function packageJsonTemplate(productId: string): string;
|
|
4
|
+
export declare function agentsTemplate(productName: string): string;
|
|
5
|
+
export declare function skillTemplate(productName: string): string;
|
|
6
|
+
export declare function envTemplate(): string;
|
|
7
|
+
export declare function gitignoreTemplate(): string;
|
|
8
|
+
export declare function openCodeConfigTemplate(): string;
|
|
9
|
+
//# sourceMappingURL=authoringTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringTemplates.d.ts","sourceRoot":"","sources":["../src/authoringTemplates.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAOzD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAKpD,CAAC;AAKF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA0B7D;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAuC1D;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAyC/C"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
export const DEFAULT_ENV_VALUES = [
|
|
2
|
+
["DROMIO_PRODUCT_ENV", "dev"],
|
|
3
|
+
["DROMIO_DEPLOYMENT_PROFILE", "public"],
|
|
4
|
+
["DROMIO_ROUTER_BASE_URL", "https://api.dromio.ai/v1"],
|
|
5
|
+
["DROMIO_ROUTER_MODEL", "openai-codex:gpt-5.5"],
|
|
6
|
+
["DROMIO_ROUTER_TOKEN", ""],
|
|
7
|
+
["DROMIO_AUTH_TOKEN", ""],
|
|
8
|
+
];
|
|
9
|
+
export const DEFAULT_GITIGNORE_LINES = [
|
|
10
|
+
".env",
|
|
11
|
+
".dromio/",
|
|
12
|
+
"build/",
|
|
13
|
+
"node_modules/",
|
|
14
|
+
];
|
|
15
|
+
const DEFAULT_ROUTER_BASE_URL = "https://api.dromio.ai/v1";
|
|
16
|
+
const DEFAULT_ROUTER_MODEL = "openai-codex:gpt-5.5";
|
|
17
|
+
export function packageJsonTemplate(productId) {
|
|
18
|
+
return `${JSON.stringify({
|
|
19
|
+
name: productId,
|
|
20
|
+
private: true,
|
|
21
|
+
type: "module",
|
|
22
|
+
scripts: {
|
|
23
|
+
"product:doctor": "dromio product doctor",
|
|
24
|
+
"product:check": "dromio product check",
|
|
25
|
+
"product:build": "dromio product build",
|
|
26
|
+
author: "set -a; [ ! -f .env ] || . ./.env; set +a; opencode",
|
|
27
|
+
eval: "dromio eval run",
|
|
28
|
+
},
|
|
29
|
+
dependencies: {
|
|
30
|
+
"@dromio/cli": "^0.1.76",
|
|
31
|
+
"@dromio/evals": "0.1.42",
|
|
32
|
+
"@dromio/product": "0.1.48",
|
|
33
|
+
"@dromio/product-mcp": "0.1.48",
|
|
34
|
+
"@dromio/workflow": "0.2.4",
|
|
35
|
+
"@effect/schema": ">=0.70.0",
|
|
36
|
+
effect: ">=3.0.0",
|
|
37
|
+
},
|
|
38
|
+
}, null, 2)}\n`;
|
|
39
|
+
}
|
|
40
|
+
export function agentsTemplate(productName) {
|
|
41
|
+
return `# ${productName}
|
|
42
|
+
|
|
43
|
+
This is a Dromio product repo.
|
|
44
|
+
|
|
45
|
+
Run:
|
|
46
|
+
|
|
47
|
+
\`\`\`sh
|
|
48
|
+
dromio product init
|
|
49
|
+
npm run author
|
|
50
|
+
dromio product doctor
|
|
51
|
+
\`\`\`
|
|
52
|
+
|
|
53
|
+
OpenCode uses \`opencode.json\` to connect to Dromio Router and launch
|
|
54
|
+
\`@dromio/product-mcp\` from this repo. Set \`DROMIO_ROUTER_TOKEN\` in \`.env\` or
|
|
55
|
+
in your shell before starting OpenCode. The \`npm run author\` script loads
|
|
56
|
+
\`.env\` before launching OpenCode.
|
|
57
|
+
|
|
58
|
+
Verify router access before authoring:
|
|
59
|
+
|
|
60
|
+
\`\`\`sh
|
|
61
|
+
curl -sS "https://api.dromio.ai/v1/chat/completions" \\
|
|
62
|
+
-H "Authorization: Bearer $DROMIO_ROUTER_TOKEN" \\
|
|
63
|
+
-H "Content-Type: application/json" \\
|
|
64
|
+
-d '{"model":"openai-codex:gpt-5.5","messages":[{"role":"user","content":"Reply with only: dromio-ok"}]}'
|
|
65
|
+
\`\`\`
|
|
66
|
+
|
|
67
|
+
Authoring rules:
|
|
68
|
+
|
|
69
|
+
- Read \`dromio://skills/product-authoring\` before proposing product shape.
|
|
70
|
+
- Run Product MCP analysis in this order: \`analyze_repo\`, \`extract_domain_model\`,
|
|
71
|
+
\`identify_product_seams\`, then \`propose_product_shape\`.
|
|
72
|
+
- Pass the user's actual goal as \`productGoal\` to \`propose_product_shape\`.
|
|
73
|
+
- Present a workflow portfolio before choosing a first implementation slice.
|
|
74
|
+
- Do not hand-patch a first slice as if it were the complete product.
|
|
75
|
+
- Preview changes and get approval before writing.
|
|
76
|
+
- Run \`run_product_check\` with \`strictAuthoring: true\` after authoring changes.
|
|
77
|
+
- Do not import workspace-local Dromio source. Use published @dromio/* packages.
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
export function skillTemplate(productName) {
|
|
81
|
+
return `# ${productName} Product Skill
|
|
82
|
+
|
|
83
|
+
Use Dromio Product MCP for product authoring.
|
|
84
|
+
|
|
85
|
+
Required loop:
|
|
86
|
+
|
|
87
|
+
1. Read \`dromio://skills/product-authoring\`.
|
|
88
|
+
2. Analyze source and seams.
|
|
89
|
+
3. Call \`propose_product_shape\` with \`productGoal\`.
|
|
90
|
+
4. Get approval for the workflow portfolio, flagship workflow, first slice, and
|
|
91
|
+
capability commands.
|
|
92
|
+
5. Preview scaffold changes, get write approval, then apply.
|
|
93
|
+
6. Run \`run_product_check\` with \`strictAuthoring: true\`, build, and evals.
|
|
94
|
+
|
|
95
|
+
Do not collapse the workflow portfolio into the first conversion slice.
|
|
96
|
+
`;
|
|
97
|
+
}
|
|
98
|
+
export function envTemplate() {
|
|
99
|
+
return `${DEFAULT_ENV_VALUES.map(([key, value]) => `${key}=${value}`).join("\n")}\n`;
|
|
100
|
+
}
|
|
101
|
+
export function gitignoreTemplate() {
|
|
102
|
+
return `${DEFAULT_GITIGNORE_LINES.join("\n")}\n`;
|
|
103
|
+
}
|
|
104
|
+
export function openCodeConfigTemplate() {
|
|
105
|
+
return `${JSON.stringify({
|
|
106
|
+
$schema: "https://opencode.ai/config.json",
|
|
107
|
+
enabled_providers: ["dromio-router"],
|
|
108
|
+
model: `dromio-router/${DEFAULT_ROUTER_MODEL}`,
|
|
109
|
+
provider: {
|
|
110
|
+
"dromio-router": {
|
|
111
|
+
name: "Dromio Router",
|
|
112
|
+
npm: "@ai-sdk/openai-compatible",
|
|
113
|
+
models: {
|
|
114
|
+
[DEFAULT_ROUTER_MODEL]: {
|
|
115
|
+
id: DEFAULT_ROUTER_MODEL,
|
|
116
|
+
name: "Dromio Router Model",
|
|
117
|
+
tool_call: true,
|
|
118
|
+
reasoning: true,
|
|
119
|
+
temperature: false,
|
|
120
|
+
limit: {
|
|
121
|
+
context: 400000,
|
|
122
|
+
output: 128000,
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
options: {
|
|
127
|
+
baseURL: DEFAULT_ROUTER_BASE_URL,
|
|
128
|
+
apiKey: "{env:DROMIO_ROUTER_TOKEN}",
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
mcp: {
|
|
133
|
+
"dromio-product": {
|
|
134
|
+
type: "local",
|
|
135
|
+
command: ["npx", "-y", "@dromio/product-mcp"],
|
|
136
|
+
enabled: true,
|
|
137
|
+
timeout: 30000,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
}, null, 2)}\n`;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=authoringTemplates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringTemplates.js","sourceRoot":"","sources":["../src/authoringTemplates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface WorkflowTemplateInput {
|
|
2
|
+
readonly approvalPolicy?: "human-confirm-writes" | "none";
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly title: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ScaffoldTemplate {
|
|
7
|
+
readonly content: string;
|
|
8
|
+
readonly relativePath: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function workflowArtifactTemplates(productId: string, workflows: readonly WorkflowTemplateInput[] | undefined): readonly ScaffoldTemplate[];
|
|
11
|
+
export declare function workflowDocumentPath(workflowId: string): string;
|
|
12
|
+
export declare function workflowCompileArtifactPath(workflowId: string): string;
|
|
13
|
+
//# sourceMappingURL=authoringWorkflowTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoringWorkflowTemplates.d.ts","sourceRoot":"","sources":["../src/authoringWorkflowTemplates.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,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,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,qBAAqB,EAAE,GAAG,SAAS,GACtD,SAAS,gBAAgB,EAAE,CAY7B;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtE"}
|