@reasonlayer/factory 0.1.0-beta.2.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 ADDED
@@ -0,0 +1,17 @@
1
+ # @reasonlayer/factory
2
+
3
+ Reasonlayer Factory workflow authoring SDK.
4
+
5
+ Install it in a workflow project:
6
+
7
+ ```sh
8
+ pnpm add @reasonlayer/factory
9
+ ```
10
+
11
+ Author workflows by importing the SDK primitives:
12
+
13
+ ```ts
14
+ import { from, harness, step, workflow, z } from "@reasonlayer/factory";
15
+ ```
16
+
17
+ Build and deploy workflows with the `rlx factory` commands.
@@ -0,0 +1,17 @@
1
+ import type { HarnessIR } from "./ir.js";
2
+ declare const HARNESS_BRAND: unique symbol;
3
+ export interface HarnessDefinition {
4
+ readonly [HARNESS_BRAND]: true;
5
+ readonly ir: HarnessIR;
6
+ }
7
+ export interface CodexOptions {
8
+ model?: string;
9
+ sandbox?: "read-only" | "workspace-write" | "danger-full-access";
10
+ extraArgs?: string[];
11
+ }
12
+ export declare function isHarness(value: unknown): value is HarnessDefinition;
13
+ export declare const harness: {
14
+ codex(options?: CodexOptions): HarnessDefinition;
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,QAAA,MAAM,aAAa,eAAgC,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAMpE;AASD,eAAO,MAAM,OAAO;oBACH,YAAY,GAAQ,iBAAiB;CAQrD,CAAC"}
@@ -0,0 +1,23 @@
1
+ const HARNESS_BRAND = Symbol.for("factory.harness");
2
+ export function isHarness(value) {
3
+ return (typeof value === "object" &&
4
+ value !== null &&
5
+ value[HARNESS_BRAND] === true);
6
+ }
7
+ function makeHarness(ir) {
8
+ return {
9
+ [HARNESS_BRAND]: true,
10
+ ir,
11
+ };
12
+ }
13
+ export const harness = {
14
+ codex(options = {}) {
15
+ return makeHarness({
16
+ type: "codex",
17
+ ...(options.model ? { model: options.model } : {}),
18
+ ...(options.sandbox ? { sandbox: options.sandbox } : {}),
19
+ ...(options.extraArgs ? { extraArgs: options.extraArgs } : {}),
20
+ });
21
+ },
22
+ };
23
+ //# sourceMappingURL=harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAapD,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiC,CAAC,aAAa,CAAC,KAAK,IAAI,CAC3D,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAa;IAChC,OAAO;QACL,CAAC,aAAa,CAAC,EAAE,IAAI;QACrB,EAAE;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,KAAK,CAAC,UAAwB,EAAE;QAC9B,OAAO,WAAW,CAAC;YACjB,IAAI,EAAE,OAAO;YACb,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ export { workflow, isWorkflow } from "./workflow.js";
2
+ export type { WorkflowConfig, WorkflowDefinition } from "./workflow.js";
3
+ export { step, isStep } from "./step.js";
4
+ export type { AnyApprovalStepDefinition, AnyCodeStepDefinition, AnyHarnessStepDefinition, ApprovalStepConfig, ApprovalStepDefinition, CodeStepConfig, CodeStepDefinition, HarnessStepConfig, HarnessStepDefinition, MapStepConfig, MapStepDefinition, RetryPolicyConfig, SandboxConfig, StepDefinition, StepKind, } from "./step.js";
5
+ export { from, isSelector, Selector } from "./selectors.js";
6
+ export type { SelectorInput } from "./selectors.js";
7
+ export { harness, isHarness } from "./harness.js";
8
+ export type { CodexOptions, HarnessDefinition } from "./harness.js";
9
+ export { tool, isCliTool, isCustomTool, isMcpTool, isTool } from "./tool.js";
10
+ export type { AnyCustomToolDefinition, AnyToolDefinition, CliToolConfig, CliToolDefinition, CustomToolConfig, CustomToolDefinition, McpToolConfig, McpToolDefinition, ToolKind, } from "./tool.js";
11
+ export { toJsonSchema } from "./schema.js";
12
+ export type { ApprovalChannelIR, ApprovalStepIR, BaseStepIR, CliToolIR, CodeStepIR, CustomToolIR, HarnessIR, HarnessStepIR, JsonSchema, MapStepIR, McpToolIR, PromptIR, PromptSegment, RetryPolicyIR, SandboxIR, SelectorIR, StepIR, ToolIR, WorkflowIR, } from "./ir.js";
13
+ export { z } from "zod";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,QAAQ,GACT,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC7E,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,QAAQ,GACT,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,GACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { workflow, isWorkflow } from "./workflow.js";
2
+ export { step, isStep } from "./step.js";
3
+ export { from, isSelector, Selector } from "./selectors.js";
4
+ export { harness, isHarness } from "./harness.js";
5
+ export { tool, isCliTool, isCustomTool, isMcpTool, isTool } from "./tool.js";
6
+ export { toJsonSchema } from "./schema.js";
7
+ export { z } from "zod";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGrD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAmBzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAa7E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAwB3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC"}
package/dist/ir.d.ts ADDED
@@ -0,0 +1,142 @@
1
+ export type JsonSchema = Record<string, unknown>;
2
+ export type SelectorIR = {
3
+ kind: "input";
4
+ path: string[];
5
+ } | {
6
+ kind: "step";
7
+ stepId: string;
8
+ path: string[];
9
+ } | {
10
+ kind: "mapItem";
11
+ path: string[];
12
+ } | {
13
+ kind: "literal";
14
+ value: unknown;
15
+ } | {
16
+ kind: "object";
17
+ fields: Record<string, SelectorIR>;
18
+ } | {
19
+ kind: "array";
20
+ items: SelectorIR[];
21
+ };
22
+ export type PromptIR = {
23
+ kind: "literal";
24
+ template: string;
25
+ } | {
26
+ kind: "template";
27
+ segments: PromptSegment[];
28
+ };
29
+ export type PromptSegment = {
30
+ kind: "text";
31
+ text: string;
32
+ } | {
33
+ kind: "selector";
34
+ selector: SelectorIR;
35
+ };
36
+ export interface RetryPolicyIR {
37
+ maxAttempts: number;
38
+ backoffMs?: number;
39
+ }
40
+ export type HarnessIR = {
41
+ type: "codex";
42
+ model?: string;
43
+ sandbox?: "read-only" | "workspace-write" | "danger-full-access";
44
+ extraArgs?: string[];
45
+ };
46
+ export type ToolIR = CustomToolIR | CliToolIR | McpToolIR;
47
+ export interface CustomToolIR {
48
+ kind: "custom";
49
+ name: string;
50
+ description: string;
51
+ inputSchemaJson: JsonSchema;
52
+ outputSchemaJson: JsonSchema;
53
+ moduleRef: string;
54
+ exportName: string;
55
+ }
56
+ export interface CliToolIR {
57
+ kind: "cli";
58
+ name: string;
59
+ description: string;
60
+ command: string;
61
+ args?: string[];
62
+ env?: Record<string, string>;
63
+ }
64
+ export type McpToolIR = {
65
+ kind: "mcp";
66
+ name: string;
67
+ description: string;
68
+ transport: "stdio";
69
+ command: string;
70
+ args?: string[];
71
+ env?: Record<string, string>;
72
+ } | {
73
+ kind: "mcp";
74
+ name: string;
75
+ description: string;
76
+ transport: "http";
77
+ url: string;
78
+ bearerTokenEnvVar?: string;
79
+ };
80
+ export interface BaseStepIR {
81
+ id: string;
82
+ input: SelectorIR;
83
+ inputSchemaJson?: JsonSchema;
84
+ outputSchemaJson: JsonSchema;
85
+ retries?: RetryPolicyIR;
86
+ timeoutMs?: number;
87
+ secrets?: string[];
88
+ }
89
+ export type SandboxIR = {
90
+ kind: "e2b";
91
+ template?: string;
92
+ } | {
93
+ kind: "local";
94
+ profile?: string;
95
+ };
96
+ export type CodeStepIR = BaseStepIR & {
97
+ kind: "code";
98
+ moduleRef: string;
99
+ exportName: string;
100
+ sandbox: SandboxIR;
101
+ };
102
+ export type HarnessStepIR = BaseStepIR & {
103
+ kind: "harness";
104
+ harness: HarnessIR;
105
+ prompt: PromptIR;
106
+ tools: ToolIR[];
107
+ sandbox: SandboxIR;
108
+ };
109
+ export type ApprovalStepIR = {
110
+ kind: "approval";
111
+ id: string;
112
+ input: SelectorIR;
113
+ requestSchemaJson: JsonSchema;
114
+ responseSchemaJson: JsonSchema;
115
+ channel: ApprovalChannelIR;
116
+ timeoutMs?: number;
117
+ };
118
+ export type ApprovalChannelIR = {
119
+ kind: "console";
120
+ } | {
121
+ kind: "webhook";
122
+ url: string;
123
+ };
124
+ export type MapStepIR = {
125
+ kind: "map";
126
+ id: string;
127
+ over: SelectorIR;
128
+ key: SelectorIR;
129
+ step: CodeStepIR | HarnessStepIR | ApprovalStepIR;
130
+ concurrency?: number;
131
+ };
132
+ export type StepIR = CodeStepIR | HarnessStepIR | ApprovalStepIR | MapStepIR;
133
+ export interface WorkflowIR {
134
+ schemaVersion: 1;
135
+ id: string;
136
+ version?: string;
137
+ inputSchemaJson: JsonSchema;
138
+ outputSchemaJson: JsonSchema;
139
+ steps: Record<string, StepIR>;
140
+ output: SelectorIR;
141
+ }
142
+ //# sourceMappingURL=ir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"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"}
package/dist/ir.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ir.js.map
package/dist/ir.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ir.js","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { type ZodTypeAny, z } from "zod";
2
+ import type { JsonSchema } from "./ir.js";
3
+ export { z };
4
+ export declare function toJsonSchema(schema: ZodTypeAny): JsonSchema;
5
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,CAAC,EAAE,CAAC;AAEb,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAO3D"}
package/dist/schema.js ADDED
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ import { zodToJsonSchema } from "zod-to-json-schema";
3
+ export { z };
4
+ export function toJsonSchema(schema) {
5
+ return stripReservedSchemaMetadata(zodToJsonSchema(schema, {
6
+ target: "jsonSchema7",
7
+ $refStrategy: "none",
8
+ }));
9
+ }
10
+ function stripReservedSchemaMetadata(value) {
11
+ if (Array.isArray(value))
12
+ return value.map(stripReservedSchemaMetadata);
13
+ if (typeof value !== "object" || value == null)
14
+ return value;
15
+ const out = {};
16
+ for (const [key, child] of Object.entries(value)) {
17
+ if (key === "$schema")
18
+ continue;
19
+ out[key] = stripReservedSchemaMetadata(child);
20
+ }
21
+ return out;
22
+ }
23
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,CAAC,EAAE,CAAC;AAEb,MAAM,UAAU,YAAY,CAAC,MAAkB;IAC7C,OAAO,2BAA2B,CAChC,eAAe,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,aAAa;QACrB,YAAY,EAAE,MAAM;KACrB,CAAC,CACW,CAAC;AAClB,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACxE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7D,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { SelectorIR } from "./ir.js";
2
+ declare const SELECTOR_BRAND: unique symbol;
3
+ export declare class Selector {
4
+ readonly [SELECTOR_BRAND] = true;
5
+ readonly ir: SelectorIR;
6
+ constructor(ir: SelectorIR);
7
+ }
8
+ export declare function isSelector(value: unknown): value is Selector;
9
+ export declare const from: {
10
+ input(...path: string[]): Selector;
11
+ step(stepId: string, ...path: string[]): Selector;
12
+ mapItem(...path: string[]): Selector;
13
+ literal(value: unknown): Selector;
14
+ object(fields: Record<string, Selector | unknown>): Selector;
15
+ array(...items: Array<Selector | unknown>): Selector;
16
+ };
17
+ export type SelectorInput = Selector;
18
+ export {};
19
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,QAAA,MAAM,cAAc,eAAiC,CAAC;AAEtD,qBAAa,QAAQ;IACnB,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ;IACjC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC;gBAEZ,EAAE,EAAE,UAAU;CAG3B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAM5D;AAUD,eAAO,MAAM,IAAI;mBACA,MAAM,EAAE,GAAG,QAAQ;iBAIrB,MAAM,WAAW,MAAM,EAAE,GAAG,QAAQ;qBAIhC,MAAM,EAAE,GAAG,QAAQ;mBAIrB,OAAO,GAAG,QAAQ;mBAIlB,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,QAAQ;oBAQ5C,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,QAAQ;CAGrD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,44 @@
1
+ const SELECTOR_BRAND = Symbol.for("factory.selector");
2
+ export class Selector {
3
+ [SELECTOR_BRAND] = true;
4
+ ir;
5
+ constructor(ir) {
6
+ this.ir = ir;
7
+ }
8
+ }
9
+ export function isSelector(value) {
10
+ return (typeof value === "object" &&
11
+ value !== null &&
12
+ value[SELECTOR_BRAND] === true);
13
+ }
14
+ function selector(ir) {
15
+ return new Selector(ir);
16
+ }
17
+ function literalOrSelector(value) {
18
+ return isSelector(value) ? value.ir : { kind: "literal", value };
19
+ }
20
+ export const from = {
21
+ input(...path) {
22
+ return selector({ kind: "input", path });
23
+ },
24
+ step(stepId, ...path) {
25
+ return selector({ kind: "step", stepId, path });
26
+ },
27
+ mapItem(...path) {
28
+ return selector({ kind: "mapItem", path });
29
+ },
30
+ literal(value) {
31
+ return selector({ kind: "literal", value });
32
+ },
33
+ object(fields) {
34
+ const out = {};
35
+ for (const [key, value] of Object.entries(fields)) {
36
+ out[key] = literalOrSelector(value);
37
+ }
38
+ return selector({ kind: "object", fields: out });
39
+ },
40
+ array(...items) {
41
+ return selector({ kind: "array", items: items.map(literalOrSelector) });
42
+ },
43
+ };
44
+ //# sourceMappingURL=selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAEtD,MAAM,OAAO,QAAQ;IACV,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACxB,EAAE,CAAa;IAExB,YAAY,EAAc;QACxB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiC,CAAC,cAAc,CAAC,KAAK,IAAI,CAC5D,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,EAAc;IAC9B,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,KAAK,CAAC,GAAG,IAAc;QACrB,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,MAAc,EAAE,GAAG,IAAc;QACpC,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,GAAG,IAAc;QACvB,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,MAA0C;QAC/C,MAAM,GAAG,GAA+B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,GAAG,KAAgC;QACvC,OAAO,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;CACF,CAAC"}
package/dist/step.d.ts ADDED
@@ -0,0 +1,88 @@
1
+ import type { ZodTypeAny, z } from "zod";
2
+ import type { HarnessDefinition } from "./harness.js";
3
+ import type { Selector } from "./selectors.js";
4
+ import type { AnyToolDefinition } from "./tool.js";
5
+ declare const STEP_BRAND: unique symbol;
6
+ export type StepKind = "code" | "harness" | "approval" | "map";
7
+ export interface StepDefinition {
8
+ readonly [STEP_BRAND]: StepKind;
9
+ }
10
+ export declare function isStep(value: unknown): value is StepDefinition;
11
+ export type SandboxConfig = {
12
+ kind: "e2b";
13
+ template?: string;
14
+ } | {
15
+ kind: "local";
16
+ profile?: string;
17
+ };
18
+ export interface RetryPolicyConfig {
19
+ maxAttempts: number;
20
+ backoffMs?: number;
21
+ }
22
+ export interface CodeStepConfig<TIn extends ZodTypeAny, TOut extends ZodTypeAny> {
23
+ input?: Selector;
24
+ inputSchema?: TIn;
25
+ outputSchema: TOut;
26
+ run: (input: z.infer<TIn>) => Promise<z.infer<TOut>> | z.infer<TOut>;
27
+ secrets?: string[];
28
+ timeoutMs?: number;
29
+ retries?: RetryPolicyConfig;
30
+ sandbox?: SandboxConfig;
31
+ }
32
+ export interface CodeStepDefinition<TIn extends ZodTypeAny = ZodTypeAny, TOut extends ZodTypeAny = ZodTypeAny> extends StepDefinition {
33
+ readonly [STEP_BRAND]: "code";
34
+ readonly config: CodeStepConfig<TIn, TOut>;
35
+ }
36
+ export type AnyCodeStepDefinition = CodeStepDefinition<any, any>;
37
+ export interface HarnessStepConfig<TIn extends ZodTypeAny, TOut extends ZodTypeAny> {
38
+ harness: HarnessDefinition;
39
+ input?: Selector;
40
+ inputSchema?: TIn;
41
+ outputSchema: TOut;
42
+ prompt: string | ((input: z.infer<TIn>) => string);
43
+ tools?: AnyToolDefinition[];
44
+ secrets?: string[];
45
+ timeoutMs?: number;
46
+ retries?: RetryPolicyConfig;
47
+ sandbox?: SandboxConfig;
48
+ }
49
+ export interface HarnessStepDefinition<TIn extends ZodTypeAny = ZodTypeAny, TOut extends ZodTypeAny = ZodTypeAny> extends StepDefinition {
50
+ readonly [STEP_BRAND]: "harness";
51
+ readonly config: HarnessStepConfig<TIn, TOut>;
52
+ }
53
+ export type AnyHarnessStepDefinition = HarnessStepDefinition<any, any>;
54
+ export interface ApprovalStepConfig<TReq extends ZodTypeAny, TRes extends ZodTypeAny = TReq> {
55
+ input?: Selector;
56
+ requestSchema: TReq;
57
+ responseSchema?: TRes;
58
+ channel: {
59
+ kind: "console";
60
+ } | {
61
+ kind: "webhook";
62
+ url: string;
63
+ };
64
+ timeoutMs?: number;
65
+ }
66
+ export interface ApprovalStepDefinition<TReq extends ZodTypeAny = ZodTypeAny, TRes extends ZodTypeAny = TReq> extends StepDefinition {
67
+ readonly [STEP_BRAND]: "approval";
68
+ readonly config: ApprovalStepConfig<TReq, TRes>;
69
+ }
70
+ export type AnyApprovalStepDefinition = ApprovalStepDefinition<any, any>;
71
+ export interface MapStepConfig {
72
+ over: Selector;
73
+ key: (item: unknown) => string;
74
+ step: AnyCodeStepDefinition | AnyHarnessStepDefinition | AnyApprovalStepDefinition;
75
+ concurrency?: number;
76
+ }
77
+ export interface MapStepDefinition extends StepDefinition {
78
+ readonly [STEP_BRAND]: "map";
79
+ readonly config: MapStepConfig;
80
+ }
81
+ export declare const step: {
82
+ code<TIn extends ZodTypeAny, TOut extends ZodTypeAny>(config: CodeStepConfig<TIn, TOut>): CodeStepDefinition<TIn, TOut>;
83
+ harness<TIn extends ZodTypeAny, TOut extends ZodTypeAny>(config: HarnessStepConfig<TIn, TOut>): HarnessStepDefinition<TIn, TOut>;
84
+ approval<TReq extends ZodTypeAny, TRes extends ZodTypeAny = TReq>(config: ApprovalStepConfig<TReq, TRes>): ApprovalStepDefinition<TReq, TRes>;
85
+ map(config: MapStepConfig): MapStepDefinition;
86
+ };
87
+ export {};
88
+ //# sourceMappingURL=step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"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"}
package/dist/step.js ADDED
@@ -0,0 +1,24 @@
1
+ const STEP_BRAND = Symbol.for("factory.step");
2
+ export function isStep(value) {
3
+ return (typeof value === "object" &&
4
+ value !== null &&
5
+ typeof value[STEP_BRAND] === "string");
6
+ }
7
+ function brand(kind, value) {
8
+ return { ...value, [STEP_BRAND]: kind };
9
+ }
10
+ export const step = {
11
+ code(config) {
12
+ return brand("code", { config });
13
+ },
14
+ harness(config) {
15
+ return brand("harness", { config });
16
+ },
17
+ approval(config) {
18
+ return brand("approval", { config });
19
+ },
20
+ map(config) {
21
+ return brand("map", { config });
22
+ },
23
+ };
24
+ //# sourceMappingURL=step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../src/step.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAQ9C,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAiC,CAAC,UAAU,CAAC,KAAK,QAAQ,CACnE,CAAC;AACJ,CAAC;AAqFD,SAAS,KAAK,CAAuC,IAAO,EAAE,KAAQ;IACpE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAA6B,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,IAAI,CACF,MAAiC;QAEjC,OAAO,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CACL,MAAoC;QAEpC,OAAO,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ,CACN,MAAsC;QAEtC,OAAO,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,MAAqB;QACvB,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
package/dist/tool.d.ts ADDED
@@ -0,0 +1,79 @@
1
+ import type { ZodTypeAny, z } from "zod";
2
+ declare const TOOL_BRAND: unique symbol;
3
+ export type ToolKind = "custom" | "cli" | "mcp";
4
+ export interface CustomToolConfig<TIn extends ZodTypeAny, TOut extends ZodTypeAny> {
5
+ name: string;
6
+ description: string;
7
+ inputSchema: TIn;
8
+ outputSchema: TOut;
9
+ run: (input: z.infer<TIn>) => Promise<z.infer<TOut>> | z.infer<TOut>;
10
+ }
11
+ export interface CustomToolDefinition<TIn extends ZodTypeAny = ZodTypeAny, TOut extends ZodTypeAny = ZodTypeAny> {
12
+ readonly [TOOL_BRAND]: "custom";
13
+ readonly name: string;
14
+ readonly description: string;
15
+ readonly inputSchema: TIn;
16
+ readonly outputSchema: TOut;
17
+ readonly run: (input: z.infer<TIn>) => Promise<z.infer<TOut>> | z.infer<TOut>;
18
+ }
19
+ export type AnyCustomToolDefinition = CustomToolDefinition<any, any>;
20
+ export interface CliToolConfig {
21
+ name: string;
22
+ description: string;
23
+ command: string;
24
+ args?: string[];
25
+ env?: Record<string, string>;
26
+ }
27
+ export interface CliToolDefinition {
28
+ readonly [TOOL_BRAND]: "cli";
29
+ readonly name: string;
30
+ readonly description: string;
31
+ readonly command: string;
32
+ readonly args?: string[];
33
+ readonly env?: Record<string, string>;
34
+ }
35
+ export type McpToolConfig = {
36
+ name: string;
37
+ description: string;
38
+ command: string;
39
+ args?: string[];
40
+ env?: Record<string, string>;
41
+ url?: never;
42
+ bearerTokenEnvVar?: never;
43
+ } | {
44
+ name: string;
45
+ description: string;
46
+ url: string;
47
+ bearerTokenEnvVar?: string;
48
+ command?: never;
49
+ args?: never;
50
+ env?: never;
51
+ };
52
+ export type McpToolDefinition = {
53
+ readonly [TOOL_BRAND]: "mcp";
54
+ readonly name: string;
55
+ readonly description: string;
56
+ readonly transport: "stdio";
57
+ readonly command: string;
58
+ readonly args?: string[];
59
+ readonly env?: Record<string, string>;
60
+ } | {
61
+ readonly [TOOL_BRAND]: "mcp";
62
+ readonly name: string;
63
+ readonly description: string;
64
+ readonly transport: "http";
65
+ readonly url: string;
66
+ readonly bearerTokenEnvVar?: string;
67
+ };
68
+ export type AnyToolDefinition = AnyCustomToolDefinition | CliToolDefinition | McpToolDefinition;
69
+ export declare function isTool(value: unknown): value is AnyToolDefinition;
70
+ export declare function isCustomTool(value: unknown): value is AnyCustomToolDefinition;
71
+ export declare function isCliTool(value: unknown): value is CliToolDefinition;
72
+ export declare function isMcpTool(value: unknown): value is McpToolDefinition;
73
+ export declare const tool: {
74
+ custom<TIn extends ZodTypeAny, TOut extends ZodTypeAny>(config: CustomToolConfig<TIn, TOut>): CustomToolDefinition<TIn, TOut>;
75
+ cli(config: CliToolConfig): CliToolDefinition;
76
+ mcp(config: McpToolConfig): McpToolDefinition;
77
+ };
78
+ export {};
79
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAEzC,QAAA,MAAM,UAAU,eAA6B,CAAC;AAE9C,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AAEhD,MAAM,WAAW,gBAAgB,CAAC,GAAG,SAAS,UAAU,EAAE,IAAI,SAAS,UAAU;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,IAAI,CAAC;IACnB,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,oBAAoB,CACnC,GAAG,SAAS,UAAU,GAAG,UAAU,EACnC,IAAI,SAAS,UAAU,GAAG,UAAU;IAEpC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CAC/E;AAED,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,iBAAiB,CAAC,EAAE,KAAK,CAAC;CAC3B,GACD;IACE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAC;AAEN,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAEN,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAEhG,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAMjE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAM7E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAMpE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAMpE;AAED,eAAO,MAAM,IAAI;WACR,GAAG,SAAS,UAAU,EAAE,IAAI,SAAS,UAAU,UAC5C,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,GAClC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC;gBAWtB,aAAa,GAAG,iBAAiB;gBAWjC,aAAa,GAAG,iBAAiB;CAsB9C,CAAC"}
package/dist/tool.js ADDED
@@ -0,0 +1,65 @@
1
+ const TOOL_BRAND = Symbol.for("factory.tool");
2
+ export function isTool(value) {
3
+ return (typeof value === "object" &&
4
+ value !== null &&
5
+ typeof value[TOOL_BRAND] === "string");
6
+ }
7
+ export function isCustomTool(value) {
8
+ return (typeof value === "object" &&
9
+ value !== null &&
10
+ value[TOOL_BRAND] === "custom");
11
+ }
12
+ export function isCliTool(value) {
13
+ return (typeof value === "object" &&
14
+ value !== null &&
15
+ value[TOOL_BRAND] === "cli");
16
+ }
17
+ export function isMcpTool(value) {
18
+ return (typeof value === "object" &&
19
+ value !== null &&
20
+ value[TOOL_BRAND] === "mcp");
21
+ }
22
+ export const tool = {
23
+ custom(config) {
24
+ return {
25
+ [TOOL_BRAND]: "custom",
26
+ name: config.name,
27
+ description: config.description,
28
+ inputSchema: config.inputSchema,
29
+ outputSchema: config.outputSchema,
30
+ run: config.run,
31
+ };
32
+ },
33
+ cli(config) {
34
+ return {
35
+ [TOOL_BRAND]: "cli",
36
+ name: config.name,
37
+ description: config.description,
38
+ command: config.command,
39
+ ...(config.args ? { args: config.args } : {}),
40
+ ...(config.env ? { env: config.env } : {}),
41
+ };
42
+ },
43
+ mcp(config) {
44
+ if (config.url !== undefined) {
45
+ return {
46
+ [TOOL_BRAND]: "mcp",
47
+ name: config.name,
48
+ description: config.description,
49
+ transport: "http",
50
+ url: config.url,
51
+ ...(config.bearerTokenEnvVar ? { bearerTokenEnvVar: config.bearerTokenEnvVar } : {}),
52
+ };
53
+ }
54
+ return {
55
+ [TOOL_BRAND]: "mcp",
56
+ name: config.name,
57
+ description: config.description,
58
+ transport: "stdio",
59
+ command: config.command,
60
+ ...(config.args ? { args: config.args } : {}),
61
+ ...(config.env ? { env: config.env } : {}),
62
+ };
63
+ },
64
+ };
65
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ZodTypeAny, z } from "zod";
2
+ import type { Selector } from "./selectors.js";
3
+ import type { StepDefinition } from "./step.js";
4
+ declare const WORKFLOW_BRAND: unique symbol;
5
+ export interface WorkflowConfig<TIn extends ZodTypeAny, TOut extends ZodTypeAny> {
6
+ id: string;
7
+ version?: string;
8
+ inputSchema: TIn;
9
+ outputSchema: TOut;
10
+ steps: Record<string, StepDefinition>;
11
+ output: Selector;
12
+ }
13
+ export interface WorkflowDefinition<TIn extends ZodTypeAny = ZodTypeAny, TOut extends ZodTypeAny = ZodTypeAny> {
14
+ readonly [WORKFLOW_BRAND]: true;
15
+ readonly config: WorkflowConfig<TIn, TOut>;
16
+ readonly _input?: z.infer<TIn>;
17
+ readonly _output?: z.infer<TOut>;
18
+ }
19
+ export declare function isWorkflow(value: unknown): value is WorkflowDefinition;
20
+ export declare function workflow<TIn extends ZodTypeAny, TOut extends ZodTypeAny>(config: WorkflowConfig<TIn, TOut>): WorkflowDefinition<TIn, TOut>;
21
+ export {};
22
+ //# sourceMappingURL=workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,QAAA,MAAM,cAAc,eAAiC,CAAC;AAEtD,MAAM,WAAW,cAAc,CAAC,GAAG,SAAS,UAAU,EAAE,IAAI,SAAS,UAAU;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB,CACjC,GAAG,SAAS,UAAU,GAAG,UAAU,EACnC,IAAI,SAAS,UAAU,GAAG,UAAU;IAEpC,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAMtE;AAED,wBAAgB,QAAQ,CAAC,GAAG,SAAS,UAAU,EAAE,IAAI,SAAS,UAAU,EACtE,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAChC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAK/B"}
@@ -0,0 +1,13 @@
1
+ const WORKFLOW_BRAND = Symbol.for("factory.workflow");
2
+ export function isWorkflow(value) {
3
+ return (typeof value === "object" &&
4
+ value !== null &&
5
+ value[WORKFLOW_BRAND] === true);
6
+ }
7
+ export function workflow(config) {
8
+ return {
9
+ [WORKFLOW_BRAND]: true,
10
+ config,
11
+ };
12
+ }
13
+ //# sourceMappingURL=workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"AAIA,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAqBtD,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAiC,CAAC,cAAc,CAAC,KAAK,IAAI,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,MAAiC;IAEjC,OAAO;QACL,CAAC,cAAc,CAAC,EAAE,IAAI;QACtB,MAAM;KACP,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@reasonlayer/factory",
3
+ "version": "0.1.0-beta.2.1",
4
+ "description": "Reasonlayer Factory workflow authoring SDK.",
5
+ "private": false,
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/reasonlayer/rl-core.git",
18
+ "directory": "packages/factory-sdk"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "README.md"
23
+ ],
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "scripts": {
28
+ "typecheck": "tsc --noEmit",
29
+ "build": "tsc",
30
+ "prepack": "tsc"
31
+ },
32
+ "dependencies": {
33
+ "zod": "^3.23.0",
34
+ "zod-to-json-schema": "^3.23.0"
35
+ },
36
+ "devDependencies": {
37
+ "typescript": "^5.7.0"
38
+ }
39
+ }