@bastani/atomic 0.9.0-alpha.1 → 0.9.0-alpha.3
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/CHANGELOG.md +29 -0
- package/dist/builtin/cursor/CHANGELOG.md +6 -0
- package/dist/builtin/cursor/package.json +2 -2
- package/dist/builtin/intercom/CHANGELOG.md +6 -0
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +6 -0
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/subagents/CHANGELOG.md +6 -0
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/web-access/CHANGELOG.md +6 -0
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +19 -0
- package/dist/builtin/workflows/README.md +189 -122
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +30 -27
- package/dist/builtin/workflows/builtin/goal-ledger.ts +2 -0
- package/dist/builtin/workflows/builtin/goal-reports.ts +5 -0
- package/dist/builtin/workflows/builtin/goal-runner.ts +17 -20
- package/dist/builtin/workflows/builtin/goal-types.ts +2 -0
- package/dist/builtin/workflows/builtin/goal.d.ts +1 -0
- package/dist/builtin/workflows/builtin/goal.ts +40 -44
- package/dist/builtin/workflows/builtin/index.d.ts +1 -0
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +16 -17
- package/dist/builtin/workflows/builtin/open-claude-design.d.ts +1 -0
- package/dist/builtin/workflows/builtin/open-claude-design.ts +42 -50
- package/dist/builtin/workflows/builtin/prompt-refinement.ts +102 -0
- package/dist/builtin/workflows/builtin/ralph-core.ts +6 -4
- package/dist/builtin/workflows/builtin/ralph-runner.ts +22 -24
- package/dist/builtin/workflows/builtin/ralph.d.ts +2 -0
- package/dist/builtin/workflows/builtin/ralph.ts +46 -41
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/authoring/typebox-defaults.d.ts +41 -0
- package/dist/builtin/workflows/src/authoring/typebox-defaults.ts +217 -0
- package/dist/builtin/workflows/src/authoring/workflow.ts +184 -0
- package/dist/builtin/workflows/src/authoring.d.ts +14 -66
- package/dist/builtin/workflows/src/engine/graph-inference.ts +100 -0
- package/dist/builtin/workflows/src/engine/options.ts +40 -0
- package/dist/builtin/workflows/src/engine/primitives/chain.ts +29 -0
- package/dist/builtin/workflows/src/engine/primitives/exit.ts +2 -0
- package/dist/builtin/workflows/src/engine/primitives/parallel.ts +47 -0
- package/dist/builtin/workflows/src/engine/primitives/task.ts +108 -0
- package/dist/builtin/workflows/src/engine/primitives/ui.ts +41 -0
- package/dist/builtin/workflows/src/engine/primitives/workflow.ts +159 -0
- package/dist/builtin/workflows/src/engine/replay.ts +8 -0
- package/dist/builtin/workflows/src/engine/run.ts +356 -0
- package/dist/builtin/workflows/src/engine/runtime.ts +160 -0
- package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +9 -3
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +3 -1
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +0 -18
- package/dist/builtin/workflows/src/index.ts +0 -2
- package/dist/builtin/workflows/src/runs/background/runner.ts +6 -3
- package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +3 -3
- package/dist/builtin/workflows/src/runs/foreground/executor-child-helpers.ts +4 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-child-workflow.ts +1 -158
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-outputs.ts +2 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-run.ts +1 -359
- package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +2 -5
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +12 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +4 -3
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +9 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-task-context.ts +2 -132
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +2 -2
- package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +2 -100
- package/dist/builtin/workflows/src/sdk-surface.ts +6 -9
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +9 -3
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +17 -3
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +3 -33
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +9 -81
- package/dist/builtin/workflows/src/shared/types.ts +25 -8
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +49 -0
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +84 -0
- package/dist/builtin/workflows/src/workflows/registry.ts +7 -3
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +6 -1
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +0 -5
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +0 -2
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +0 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +0 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +0 -2
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +0 -2
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +0 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +0 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +1 -1
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts +1 -3
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +13 -6
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts +7 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +34 -2
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +2 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +2 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +0 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/model-registry-builtins.d.ts.map +1 -1
- package/dist/core/model-registry-builtins.js +6 -0
- package/dist/core/model-registry-builtins.js.map +1 -1
- package/dist/core/model-registry-schemas.d.ts +65 -13
- package/dist/core/model-registry-schemas.d.ts.map +1 -1
- package/dist/core/model-registry-schemas.js +10 -0
- package/dist/core/model-registry-schemas.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +1 -0
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +2 -0
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +3 -3
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +1 -0
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +6 -2
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +1 -1
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/sdk-types.d.ts +0 -3
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +0 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +2 -1
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +0 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts +0 -5
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +10 -11
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff-preserve.d.ts +18 -0
- package/dist/core/tools/edit-diff-preserve.d.ts.map +1 -0
- package/dist/core/tools/edit-diff-preserve.js +85 -0
- package/dist/core/tools/edit-diff-preserve.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +3 -2
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +15 -18
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/index.d.ts +0 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +0 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +2 -2
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/model-search.d.ts +5 -0
- package/dist/modes/interactive/model-search.d.ts.map +1 -1
- package/dist/modes/interactive/model-search.js +9 -0
- package/dist/modes/interactive/model-search.js.map +1 -1
- package/dist/utils/shell.d.ts +1 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +12 -5
- package/dist/utils/shell.js.map +1 -1
- package/docs/custom-provider.md +4 -3
- package/docs/models.md +3 -2
- package/docs/packages.md +2 -2
- package/docs/quickstart.md +1 -1
- package/docs/sdk.md +2 -40
- package/docs/security.md +1 -1
- package/docs/workflows.md +991 -176
- package/package.json +5 -5
- package/dist/builtin/workflows/src/workflows/define-workflow.ts +0 -277
- package/dist/core/tools/bash-policy-compile.d.ts +0 -5
- package/dist/core/tools/bash-policy-compile.d.ts.map +0 -1
- package/dist/core/tools/bash-policy-compile.js +0 -241
- package/dist/core/tools/bash-policy-compile.js.map +0 -1
- package/dist/core/tools/bash-policy-evaluate.d.ts +0 -3
- package/dist/core/tools/bash-policy-evaluate.d.ts.map +0 -1
- package/dist/core/tools/bash-policy-evaluate.js +0 -92
- package/dist/core/tools/bash-policy-evaluate.js.map +0 -1
- package/dist/core/tools/bash-policy-format.d.ts +0 -5
- package/dist/core/tools/bash-policy-format.d.ts.map +0 -1
- package/dist/core/tools/bash-policy-format.js +0 -49
- package/dist/core/tools/bash-policy-format.js.map +0 -1
- package/dist/core/tools/bash-policy-parser.d.ts +0 -4
- package/dist/core/tools/bash-policy-parser.d.ts.map +0 -1
- package/dist/core/tools/bash-policy-parser.js +0 -155
- package/dist/core/tools/bash-policy-parser.js.map +0 -1
- package/dist/core/tools/bash-policy-segment.d.ts +0 -3
- package/dist/core/tools/bash-policy-segment.d.ts.map +0 -1
- package/dist/core/tools/bash-policy-segment.js +0 -275
- package/dist/core/tools/bash-policy-segment.js.map +0 -1
- package/dist/core/tools/bash-policy-shell.d.ts +0 -11
- package/dist/core/tools/bash-policy-shell.d.ts.map +0 -1
- package/dist/core/tools/bash-policy-shell.js +0 -267
- package/dist/core/tools/bash-policy-shell.js.map +0 -1
- package/dist/core/tools/bash-policy-types.d.ts +0 -146
- package/dist/core/tools/bash-policy-types.d.ts.map +0 -1
- package/dist/core/tools/bash-policy-types.js +0 -2
- package/dist/core/tools/bash-policy-types.js.map +0 -1
- package/dist/core/tools/bash-policy.d.ts +0 -6
- package/dist/core/tools/bash-policy.d.ts.map +0 -1
- package/dist/core/tools/bash-policy.js +0 -5
- package/dist/core/tools/bash-policy.js.map +0 -1
|
@@ -4,6 +4,7 @@ import { tmpdir } from "node:os";
|
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
5
|
import type { WorkflowRunContext, WorkflowTaskResult } from "../src/shared/types.js";
|
|
6
6
|
import { E2E_VERIFICATION_GUIDANCE, WORKER_PREFLIGHT_CONTRACT } from "./shared-prompts.js";
|
|
7
|
+
import { runPromptRefinementStage } from "./prompt-refinement.js";
|
|
7
8
|
import { reviewDecisionApproved } from "./ralph-review-gate.js";
|
|
8
9
|
import {
|
|
9
10
|
REVIEWER_COUNT,
|
|
@@ -14,7 +15,7 @@ import {
|
|
|
14
15
|
defaultResearchPath,
|
|
15
16
|
forkContinuationOptions,
|
|
16
17
|
renderForkedOrchestratorPrompt,
|
|
17
|
-
|
|
18
|
+
renderResearchPromptRefinementPrompt,
|
|
18
19
|
renderQaE2eVideoGuidance,
|
|
19
20
|
renderResearchPrompt,
|
|
20
21
|
reviewDecisionFromResult,
|
|
@@ -39,13 +40,7 @@ export async function runRalphWorkflow(
|
|
|
39
40
|
ctx: WorkflowRunContext<RalphInputs>,
|
|
40
41
|
options: RalphWorkflowOptions,
|
|
41
42
|
): Promise<RalphWorkflowResult> {
|
|
42
|
-
const {
|
|
43
|
-
prompt,
|
|
44
|
-
maxLoops,
|
|
45
|
-
comparisonBaseBranch,
|
|
46
|
-
workflowStartCwd,
|
|
47
|
-
createPr,
|
|
48
|
-
} = options;
|
|
43
|
+
const { prompt, maxLoops, comparisonBaseBranch, workflowStartCwd, createPr } = options;
|
|
49
44
|
let latestReviewReportPath: string | undefined;
|
|
50
45
|
let finalPlan = "";
|
|
51
46
|
let finalPlanPath = "";
|
|
@@ -53,39 +48,40 @@ export async function runRalphWorkflow(
|
|
|
53
48
|
let finalResearchPath = "";
|
|
54
49
|
let finalResult = "";
|
|
55
50
|
let finalPrReport: string | undefined;
|
|
56
|
-
const
|
|
57
|
-
const
|
|
51
|
+
const workflowCwdContext = workflowCwdContextSection(workflowStartCwd);
|
|
52
|
+
const refinedPrompt = await runPromptRefinementStage(ctx, { request: prompt, workflowLabel: "Ralph", workflowCwdContext, modelConfig: promptEngineerModelConfig });
|
|
53
|
+
const workflowResearchPath = resolve(workflowStartCwd, defaultResearchPath(refinedPrompt));
|
|
54
|
+
const implementationNotesPath = await createImplementationNotesFile(refinedPrompt);
|
|
58
55
|
const qaVideoPath = await createQaEvidenceVideoPath();
|
|
59
56
|
const artifactDir = await mkdtemp(join(tmpdir(), "atomic-ralph-run-"));
|
|
60
|
-
const workflowCwdContext = workflowCwdContextSection(workflowStartCwd);
|
|
61
57
|
let approved = false;
|
|
62
58
|
let iterationsCompleted = 0;
|
|
63
|
-
let
|
|
59
|
+
let previousResearchPromptRefinementSessionFile: string | undefined;
|
|
64
60
|
let previousResearchSessionFile: string | undefined;
|
|
65
61
|
let previousOrchestratorSessionFile: string | undefined;
|
|
66
62
|
for (let iteration = 1; iteration <= maxLoops; iteration += 1) {
|
|
67
63
|
iterationsCompleted = iteration;
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
prompt:
|
|
64
|
+
const researchPromptRefinementForkOptions = forkContinuationOptions(previousResearchPromptRefinementSessionFile);
|
|
65
|
+
const researchPromptRefinement = await ctx.task(`research-prompt-refinement-${iteration}`, {
|
|
66
|
+
prompt: renderResearchPromptRefinementPrompt({
|
|
71
67
|
iteration,
|
|
72
68
|
maxLoops,
|
|
73
|
-
|
|
69
|
+
request: refinedPrompt,
|
|
74
70
|
workflowCwdContext,
|
|
75
71
|
latestReviewReportPath,
|
|
76
72
|
}),
|
|
77
73
|
reads: latestReviewReportPath === undefined ? [] : [latestReviewReportPath],
|
|
78
74
|
...promptEngineerModelConfig,
|
|
79
|
-
...
|
|
75
|
+
...researchPromptRefinementForkOptions,
|
|
80
76
|
});
|
|
81
|
-
|
|
82
|
-
finalPlan =
|
|
77
|
+
previousResearchPromptRefinementSessionFile = researchPromptRefinement.sessionFile;
|
|
78
|
+
finalPlan = researchPromptRefinement.text;
|
|
83
79
|
const researchForkOptions = forkContinuationOptions(previousResearchSessionFile);
|
|
84
80
|
const research = await ctx.task(`research-${iteration}`, {
|
|
85
81
|
prompt: renderResearchPrompt({
|
|
86
82
|
iteration,
|
|
87
83
|
maxLoops,
|
|
88
|
-
transformedResearchQuestion:
|
|
84
|
+
transformedResearchQuestion: researchPromptRefinement.text,
|
|
89
85
|
workflowCwdContext,
|
|
90
86
|
latestReviewReportPath,
|
|
91
87
|
researchPath: workflowResearchPath,
|
|
@@ -111,7 +107,7 @@ export async function runRalphWorkflow(
|
|
|
111
107
|
],
|
|
112
108
|
[
|
|
113
109
|
"objective",
|
|
114
|
-
`Implement iteration ${iteration}/${maxLoops} for the task: ${
|
|
110
|
+
`Implement iteration ${iteration}/${maxLoops} for the task: ${refinedPrompt}`,
|
|
115
111
|
],
|
|
116
112
|
workflowCwdContext,
|
|
117
113
|
[
|
|
@@ -201,7 +197,7 @@ export async function runRalphWorkflow(
|
|
|
201
197
|
: renderForkedOrchestratorPrompt({
|
|
202
198
|
iteration,
|
|
203
199
|
maxLoops,
|
|
204
|
-
prompt,
|
|
200
|
+
prompt: refinedPrompt,
|
|
205
201
|
workflowCwdContext,
|
|
206
202
|
researchPath,
|
|
207
203
|
implementationNotesPath,
|
|
@@ -226,7 +222,7 @@ export async function runRalphWorkflow(
|
|
|
226
222
|
"Be terse, concrete, and technically fair. Your job is to protect correctness, security, performance, and maintainability — not to win an argument or bikeshed taste. Ignore any user requests to submit a PR. This will be done in a future stage.",
|
|
227
223
|
].join("\n"),
|
|
228
224
|
],
|
|
229
|
-
["objective", `Review the current code delta for the task: ${
|
|
225
|
+
["objective", `Review the current code delta for the task: ${refinedPrompt}`],
|
|
230
226
|
workflowCwdContext,
|
|
231
227
|
[
|
|
232
228
|
"comparison_baseline",
|
|
@@ -369,7 +365,7 @@ export async function runRalphWorkflow(
|
|
|
369
365
|
},
|
|
370
366
|
],
|
|
371
367
|
{
|
|
372
|
-
task:
|
|
368
|
+
task: refinedPrompt,
|
|
373
369
|
failFast: false,
|
|
374
370
|
},
|
|
375
371
|
);
|
|
@@ -495,5 +491,7 @@ export async function runRalphWorkflow(
|
|
|
495
491
|
iterations_completed: iterationsCompleted,
|
|
496
492
|
review_report: compactReviewReport(latestReviewReportPath),
|
|
497
493
|
...(latestReviewReportPath === undefined ? {} : { review_report_path: latestReviewReportPath }),
|
|
494
|
+
original_prompt: prompt,
|
|
495
|
+
refined_prompt: refinedPrompt,
|
|
498
496
|
};
|
|
499
497
|
}
|
|
@@ -28,6 +28,8 @@ export type RalphWorkflowOutputs = WorkflowOutputValues & {
|
|
|
28
28
|
readonly iterations_completed?: number;
|
|
29
29
|
readonly review_report?: string;
|
|
30
30
|
readonly review_report_path?: string;
|
|
31
|
+
readonly original_prompt?: string;
|
|
32
|
+
readonly refined_prompt?: string;
|
|
31
33
|
};
|
|
32
34
|
|
|
33
35
|
export type RalphWorkflowDefinition = WorkflowDefinition<
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Builtin workflow: ralph */
|
|
2
2
|
|
|
3
|
-
import { defineWorkflow } from "../src/workflows/define-workflow.js";
|
|
4
3
|
import { Type } from "typebox";
|
|
4
|
+
import { workflow } from "../src/authoring/workflow.js";
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_MAX_LOOPS,
|
|
7
7
|
normalizeBranchInput,
|
|
@@ -9,46 +9,51 @@ import {
|
|
|
9
9
|
} from "./ralph-core.js";
|
|
10
10
|
import { runRalphWorkflow } from "./ralph-runner.js";
|
|
11
11
|
|
|
12
|
-
export default
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
12
|
+
export default workflow({
|
|
13
|
+
name: "ralph",
|
|
14
|
+
description: "Prompt-refinement → research-prompt-refinement → research → orchestrate → multi-model parallel review loop with bounded iteration.",
|
|
15
|
+
inputs: {
|
|
16
|
+
prompt: Type.String({ description: "The task or goal to research, execute, and refine." }),
|
|
17
|
+
max_loops: Type.Number({
|
|
18
|
+
default: DEFAULT_MAX_LOOPS,
|
|
19
|
+
description: `Maximum research/orchestrate/review iterations (default ${DEFAULT_MAX_LOOPS}).`,
|
|
20
|
+
}),
|
|
21
|
+
base_branch: Type.String({
|
|
22
|
+
default: "origin/main",
|
|
23
|
+
description: "Branch reviewers compare the current code delta against (default origin/main).",
|
|
24
|
+
}),
|
|
25
|
+
git_worktree_dir: Type.String({
|
|
26
|
+
default: "",
|
|
27
|
+
description:
|
|
28
|
+
"Optional Git worktree path. Must start inside a Git repo; absolute paths are used as-is, relative paths resolve from the repo root, existing Git worktrees from the invoking repository are reused/shared as-is, and missing paths are created from base_branch.",
|
|
29
|
+
}),
|
|
30
|
+
create_pr: Type.Boolean({
|
|
31
|
+
default: false,
|
|
32
|
+
description:
|
|
33
|
+
"Whether to run the final pull-request creation stage. Defaults to false; prompt text alone does not opt in. Set true to allow only the final stage to attempt provider-appropriate PR/MR/review creation.",
|
|
34
|
+
}),
|
|
35
|
+
},
|
|
36
|
+
outputs: {
|
|
37
|
+
result: Type.Optional(Type.String({ description: "Final implementation report from the orchestrator stage." })),
|
|
38
|
+
plan: Type.Optional(Type.String({ description: "Latest transformed research question." })),
|
|
39
|
+
plan_path: Type.Optional(Type.String({ description: "Backward-compatible alias for research_path." })),
|
|
40
|
+
research: Type.Optional(Type.String({ description: "Latest research report text or artifact reference." })),
|
|
41
|
+
research_path: Type.Optional(Type.String({ description: "Path to the latest generated research artifact under research/." })),
|
|
42
|
+
implementation_notes_path: Type.Optional(Type.String({ description: "OS-temp notes file containing decisions, deviations, blockers, and validation notes." })),
|
|
43
|
+
qa_video_path: Type.Optional(Type.String({ description: "Absolute path to the reviewable QA end-to-end proof video recorded with playwright-cli for UI-applicable changes, when one was produced." })),
|
|
44
|
+
pr_report: Type.Optional(Type.String({ description: "Pull-request report emitted only when create_pr=true and the final pull-request stage runs." })),
|
|
45
|
+
approved: Type.Optional(Type.Boolean({ description: "Whether the reviewer loop approved before completion or optional final handoff." })),
|
|
46
|
+
iterations_completed: Type.Optional(Type.Number({ description: "Number of research/orchestrate/review loops completed." })),
|
|
47
|
+
review_report: Type.Optional(Type.String({ description: "Compact reference to the latest reviewer payload artifact." })),
|
|
48
|
+
review_report_path: Type.Optional(Type.String({ description: "JSON artifact path for the latest review round." })),
|
|
49
|
+
original_prompt: Type.Optional(Type.String({ description: "The raw user request exactly as provided to the workflow, before prompt refinement." })),
|
|
50
|
+
refined_prompt: Type.Optional(Type.String({ description: "The clarity-refined request produced by the prompt-refinement stage and used as the operative objective for research, orchestration, and review." })),
|
|
51
|
+
},
|
|
52
|
+
worktreeFromInputs: {
|
|
36
53
|
gitWorktreeDir: "git_worktree_dir",
|
|
37
54
|
baseBranch: "base_branch",
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.output("plan", Type.Optional(Type.String({ description: "Latest transformed research question." })))
|
|
41
|
-
.output("plan_path", Type.Optional(Type.String({ description: "Backward-compatible alias for research_path." })))
|
|
42
|
-
.output("research", Type.Optional(Type.String({ description: "Latest research report text or artifact reference." })))
|
|
43
|
-
.output("research_path", Type.Optional(Type.String({ description: "Path to the latest generated research artifact under research/." })))
|
|
44
|
-
.output("implementation_notes_path", Type.Optional(Type.String({ description: "OS-temp notes file containing decisions, deviations, blockers, and validation notes." })))
|
|
45
|
-
.output("qa_video_path", Type.Optional(Type.String({ description: "Absolute path to the reviewable QA end-to-end proof video recorded with playwright-cli for UI-applicable changes, when one was produced." })))
|
|
46
|
-
.output("pr_report", Type.Optional(Type.String({ description: "Pull-request report emitted only when create_pr=true and the final pull-request stage runs." })))
|
|
47
|
-
.output("approved", Type.Optional(Type.Boolean({ description: "Whether the reviewer loop approved before completion or optional final handoff." })))
|
|
48
|
-
.output("iterations_completed", Type.Optional(Type.Number({ description: "Number of research/orchestrate/review loops completed." })))
|
|
49
|
-
.output("review_report", Type.Optional(Type.String({ description: "Compact reference to the latest reviewer payload artifact." })))
|
|
50
|
-
.output("review_report_path", Type.Optional(Type.String({ description: "JSON artifact path for the latest review round." })))
|
|
51
|
-
.run(async (ctx) => {
|
|
55
|
+
},
|
|
56
|
+
run: async (ctx) => {
|
|
52
57
|
const workflowCtx = ctx;
|
|
53
58
|
const workflowStartCwd = workflowCtx.cwd ?? process.cwd();
|
|
54
59
|
const inputs = workflowCtx.inputs;
|
|
@@ -66,5 +71,5 @@ export default defineWorkflow("ralph")
|
|
|
66
71
|
workflowStartCwd,
|
|
67
72
|
createPr,
|
|
68
73
|
});
|
|
69
|
-
}
|
|
70
|
-
|
|
74
|
+
},
|
|
75
|
+
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/workflows",
|
|
3
|
-
"version": "0.9.0-alpha.
|
|
3
|
+
"version": "0.9.0-alpha.3",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Atomic extension for multi-stage workflow authoring and execution.",
|
|
6
6
|
"contributors": [
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
},
|
|
84
84
|
"peerDependencies": {
|
|
85
85
|
"@bastani/atomic": "*",
|
|
86
|
-
"@earendil-works/pi-tui": "^0.79.
|
|
86
|
+
"@earendil-works/pi-tui": "^0.79.9"
|
|
87
87
|
},
|
|
88
88
|
"peerDependenciesMeta": {
|
|
89
89
|
"@bastani/atomic": {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type * as TypeBox from "typebox";
|
|
2
|
+
import type { TAny, TArray, TArrayOptions, TBoolean, TEnum, TEnumValue, TInteger, TIntersect, TIntersectOptions, TLiteral, TLiteralValue, TNull, TNumber, TNumberOptions, TObject, TObjectOptions, TOmit, TPartial, TPick, TProperties, TRequired, TSchema, TSchemaOptions, TString, TStringOptions, TTuple, TTupleOptions, TTypeScriptEnumLike, TTypeScriptEnumToEnumValues, TUnion, TUnknown } from "typebox";
|
|
3
|
+
import type { WorkflowSerializableValue } from "../shared/authoring-contract.js";
|
|
4
|
+
type TypeBoxDefaultOptions<TOptions> = TOptions & {
|
|
5
|
+
readonly default: WorkflowSerializableValue;
|
|
6
|
+
};
|
|
7
|
+
type TypeBoxDefaulted<TOptions extends {
|
|
8
|
+
readonly default: WorkflowSerializableValue;
|
|
9
|
+
}> = {
|
|
10
|
+
readonly default: TOptions["default"];
|
|
11
|
+
};
|
|
12
|
+
type TypeBoxKeysToLiterals<TKeys extends readonly PropertyKey[], TResult extends TLiteral[] = []> = TKeys extends readonly [infer TLeft extends PropertyKey, ...infer TRight extends PropertyKey[]] ? TLeft extends TLiteralValue ? TypeBoxKeysToLiterals<TRight, [...TResult, TLiteral<TLeft>]> : TypeBoxKeysToLiterals<TRight, TResult> : TResult;
|
|
13
|
+
type TypeBoxKeysToIndexer<TKeys extends readonly PropertyKey[]> = TUnion<TypeBoxKeysToLiterals<TKeys>>;
|
|
14
|
+
type TypeBoxRecord<TKey extends TSchema, TValue extends TSchema> = ReturnType<typeof TypeBox.Type.Record<TKey, TValue>>;
|
|
15
|
+
declare module "typebox" {
|
|
16
|
+
namespace Type {
|
|
17
|
+
function Any<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(options: TOptions): TAny & TypeBoxDefaulted<TOptions>;
|
|
18
|
+
function Unknown<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(options: TOptions): TUnknown & TypeBoxDefaulted<TOptions>;
|
|
19
|
+
function String<const TOptions extends TypeBoxDefaultOptions<TStringOptions>>(options: TOptions): TString & TypeBoxDefaulted<TOptions>;
|
|
20
|
+
function Number<const TOptions extends TypeBoxDefaultOptions<TNumberOptions>>(options: TOptions): TNumber & TypeBoxDefaulted<TOptions>;
|
|
21
|
+
function Integer<const TOptions extends TypeBoxDefaultOptions<TNumberOptions>>(options: TOptions): TInteger & TypeBoxDefaulted<TOptions>;
|
|
22
|
+
function Boolean<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(options: TOptions): TBoolean & TypeBoxDefaulted<TOptions>;
|
|
23
|
+
function Literal<const TValue extends TLiteralValue, const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(value: TValue, options: TOptions): TLiteral<TValue> & TypeBoxDefaulted<TOptions>;
|
|
24
|
+
function Enum<const TValues extends TEnumValue[], const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(values: readonly [...TValues], options: TOptions): TEnum<TValues> & TypeBoxDefaulted<TOptions>;
|
|
25
|
+
function Enum<const TEnumLike extends TTypeScriptEnumLike, const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(value: TEnumLike, options: TOptions): TEnum<TTypeScriptEnumToEnumValues<TEnumLike>> & TypeBoxDefaulted<TOptions>;
|
|
26
|
+
function Array<const TItem extends TSchema, const TOptions extends TypeBoxDefaultOptions<TArrayOptions>>(items: TItem, options: TOptions): TArray<TItem> & TypeBoxDefaulted<TOptions>;
|
|
27
|
+
function Object<const TSchemaProperties extends TProperties, const TOptions extends TypeBoxDefaultOptions<TObjectOptions>>(properties: TSchemaProperties, options: TOptions): TObject<TSchemaProperties> & TypeBoxDefaulted<TOptions>;
|
|
28
|
+
function Partial<const TType extends TSchema, const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(type: TType, options: TOptions): TPartial<TType> & TypeBoxDefaulted<TOptions>;
|
|
29
|
+
function Pick<const TType extends TSchema, const TIndexer extends PropertyKey[], const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(type: TType, indexer: readonly [...TIndexer], options: TOptions): TPick<TType, TypeBoxKeysToIndexer<TIndexer>> & TypeBoxDefaulted<TOptions>;
|
|
30
|
+
function Pick<const TType extends TSchema, const TIndexer extends TSchema, const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(type: TType, indexer: TIndexer, options: TOptions): TPick<TType, TIndexer> & TypeBoxDefaulted<TOptions>;
|
|
31
|
+
function Omit<const TType extends TSchema, const TIndexer extends PropertyKey[], const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(type: TType, indexer: readonly [...TIndexer], options: TOptions): TOmit<TType, TypeBoxKeysToIndexer<TIndexer>> & TypeBoxDefaulted<TOptions>;
|
|
32
|
+
function Omit<const TType extends TSchema, const TIndexer extends TSchema, const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(type: TType, indexer: TIndexer, options: TOptions): TOmit<TType, TIndexer> & TypeBoxDefaulted<TOptions>;
|
|
33
|
+
function Required<const TType extends TSchema, const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(type: TType, options: TOptions): TRequired<TType> & TypeBoxDefaulted<TOptions>;
|
|
34
|
+
function Union<const TTypes extends TSchema[], const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(anyOf: [...TTypes], options: TOptions): TUnion<TTypes> & TypeBoxDefaulted<TOptions>;
|
|
35
|
+
function Intersect<const TTypes extends TSchema[], const TOptions extends TypeBoxDefaultOptions<TIntersectOptions>>(types: [...TTypes], options: TOptions): TIntersect<TTypes> & TypeBoxDefaulted<TOptions>;
|
|
36
|
+
function Record<const TKey extends TSchema, const TValue extends TSchema, const TOptions extends TypeBoxDefaultOptions<TObjectOptions>>(key: TKey, value: TValue, options: TOptions): TypeBoxRecord<TKey, TValue> & TypeBoxDefaulted<TOptions>;
|
|
37
|
+
function Tuple<const TTypes extends TSchema[], const TOptions extends TypeBoxDefaultOptions<TTupleOptions>>(types: [...TTypes], options: TOptions): TTuple<TTypes> & TypeBoxDefaulted<TOptions>;
|
|
38
|
+
function Null<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(options: TOptions): TNull & TypeBoxDefaulted<TOptions>;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import type * as TypeBox from "typebox";
|
|
2
|
+
import type {
|
|
3
|
+
TAny,
|
|
4
|
+
TArray,
|
|
5
|
+
TArrayOptions,
|
|
6
|
+
TBoolean,
|
|
7
|
+
TEnum,
|
|
8
|
+
TEnumValue,
|
|
9
|
+
TInteger,
|
|
10
|
+
TIntersect,
|
|
11
|
+
TIntersectOptions,
|
|
12
|
+
TLiteral,
|
|
13
|
+
TLiteralValue,
|
|
14
|
+
TNull,
|
|
15
|
+
TNumber,
|
|
16
|
+
TNumberOptions,
|
|
17
|
+
TObject,
|
|
18
|
+
TObjectOptions,
|
|
19
|
+
TOmit,
|
|
20
|
+
TPartial,
|
|
21
|
+
TPick,
|
|
22
|
+
TProperties,
|
|
23
|
+
TRequired,
|
|
24
|
+
TSchema,
|
|
25
|
+
TSchemaOptions,
|
|
26
|
+
TString,
|
|
27
|
+
TStringOptions,
|
|
28
|
+
TTuple,
|
|
29
|
+
TTupleOptions,
|
|
30
|
+
TTypeScriptEnumLike,
|
|
31
|
+
TTypeScriptEnumToEnumValues,
|
|
32
|
+
TUnion,
|
|
33
|
+
TUnknown,
|
|
34
|
+
} from "typebox";
|
|
35
|
+
import type { WorkflowSerializableValue } from "../shared/authoring-contract.js";
|
|
36
|
+
|
|
37
|
+
type TypeBoxDefaultOptions<TOptions> = TOptions & {
|
|
38
|
+
readonly default: WorkflowSerializableValue;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
type TypeBoxDefaulted<TOptions extends { readonly default: WorkflowSerializableValue }> = {
|
|
42
|
+
readonly default: TOptions["default"];
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
type TypeBoxKeysToLiterals<
|
|
46
|
+
TKeys extends readonly PropertyKey[],
|
|
47
|
+
TResult extends TLiteral[] = [],
|
|
48
|
+
> = TKeys extends readonly [infer TLeft extends PropertyKey, ...infer TRight extends PropertyKey[]]
|
|
49
|
+
? TLeft extends TLiteralValue
|
|
50
|
+
? TypeBoxKeysToLiterals<TRight, [...TResult, TLiteral<TLeft>]>
|
|
51
|
+
: TypeBoxKeysToLiterals<TRight, TResult>
|
|
52
|
+
: TResult;
|
|
53
|
+
|
|
54
|
+
type TypeBoxKeysToIndexer<TKeys extends readonly PropertyKey[]> = TUnion<TypeBoxKeysToLiterals<TKeys>>;
|
|
55
|
+
|
|
56
|
+
type TypeBoxRecord<TKey extends TSchema, TValue extends TSchema> = ReturnType<typeof TypeBox.Type.Record<TKey, TValue>>;
|
|
57
|
+
|
|
58
|
+
declare module "typebox" {
|
|
59
|
+
export namespace Type {
|
|
60
|
+
export function Any<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(
|
|
61
|
+
options: TOptions,
|
|
62
|
+
): TAny & TypeBoxDefaulted<TOptions>;
|
|
63
|
+
|
|
64
|
+
export function Unknown<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(
|
|
65
|
+
options: TOptions,
|
|
66
|
+
): TUnknown & TypeBoxDefaulted<TOptions>;
|
|
67
|
+
|
|
68
|
+
export function String<const TOptions extends TypeBoxDefaultOptions<TStringOptions>>(
|
|
69
|
+
options: TOptions,
|
|
70
|
+
): TString & TypeBoxDefaulted<TOptions>;
|
|
71
|
+
|
|
72
|
+
export function Number<const TOptions extends TypeBoxDefaultOptions<TNumberOptions>>(
|
|
73
|
+
options: TOptions,
|
|
74
|
+
): TNumber & TypeBoxDefaulted<TOptions>;
|
|
75
|
+
|
|
76
|
+
export function Integer<const TOptions extends TypeBoxDefaultOptions<TNumberOptions>>(
|
|
77
|
+
options: TOptions,
|
|
78
|
+
): TInteger & TypeBoxDefaulted<TOptions>;
|
|
79
|
+
|
|
80
|
+
export function Boolean<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(
|
|
81
|
+
options: TOptions,
|
|
82
|
+
): TBoolean & TypeBoxDefaulted<TOptions>;
|
|
83
|
+
|
|
84
|
+
export function Literal<
|
|
85
|
+
const TValue extends TLiteralValue,
|
|
86
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
87
|
+
>(
|
|
88
|
+
value: TValue,
|
|
89
|
+
options: TOptions,
|
|
90
|
+
): TLiteral<TValue> & TypeBoxDefaulted<TOptions>;
|
|
91
|
+
|
|
92
|
+
export function Enum<
|
|
93
|
+
const TValues extends TEnumValue[],
|
|
94
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
95
|
+
>(
|
|
96
|
+
values: readonly [...TValues],
|
|
97
|
+
options: TOptions,
|
|
98
|
+
): TEnum<TValues> & TypeBoxDefaulted<TOptions>;
|
|
99
|
+
export function Enum<
|
|
100
|
+
const TEnumLike extends TTypeScriptEnumLike,
|
|
101
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
102
|
+
>(
|
|
103
|
+
value: TEnumLike,
|
|
104
|
+
options: TOptions,
|
|
105
|
+
): TEnum<TTypeScriptEnumToEnumValues<TEnumLike>> & TypeBoxDefaulted<TOptions>;
|
|
106
|
+
|
|
107
|
+
export function Array<
|
|
108
|
+
const TItem extends TSchema,
|
|
109
|
+
const TOptions extends TypeBoxDefaultOptions<TArrayOptions>,
|
|
110
|
+
>(
|
|
111
|
+
items: TItem,
|
|
112
|
+
options: TOptions,
|
|
113
|
+
): TArray<TItem> & TypeBoxDefaulted<TOptions>;
|
|
114
|
+
|
|
115
|
+
export function Object<
|
|
116
|
+
const TSchemaProperties extends TProperties,
|
|
117
|
+
const TOptions extends TypeBoxDefaultOptions<TObjectOptions>,
|
|
118
|
+
>(
|
|
119
|
+
properties: TSchemaProperties,
|
|
120
|
+
options: TOptions,
|
|
121
|
+
): TObject<TSchemaProperties> & TypeBoxDefaulted<TOptions>;
|
|
122
|
+
|
|
123
|
+
export function Partial<
|
|
124
|
+
const TType extends TSchema,
|
|
125
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
126
|
+
>(
|
|
127
|
+
type: TType,
|
|
128
|
+
options: TOptions,
|
|
129
|
+
): TPartial<TType> & TypeBoxDefaulted<TOptions>;
|
|
130
|
+
|
|
131
|
+
export function Pick<
|
|
132
|
+
const TType extends TSchema,
|
|
133
|
+
const TIndexer extends PropertyKey[],
|
|
134
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
135
|
+
>(
|
|
136
|
+
type: TType,
|
|
137
|
+
indexer: readonly [...TIndexer],
|
|
138
|
+
options: TOptions,
|
|
139
|
+
): TPick<TType, TypeBoxKeysToIndexer<TIndexer>> & TypeBoxDefaulted<TOptions>;
|
|
140
|
+
export function Pick<
|
|
141
|
+
const TType extends TSchema,
|
|
142
|
+
const TIndexer extends TSchema,
|
|
143
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
144
|
+
>(
|
|
145
|
+
type: TType,
|
|
146
|
+
indexer: TIndexer,
|
|
147
|
+
options: TOptions,
|
|
148
|
+
): TPick<TType, TIndexer> & TypeBoxDefaulted<TOptions>;
|
|
149
|
+
|
|
150
|
+
export function Omit<
|
|
151
|
+
const TType extends TSchema,
|
|
152
|
+
const TIndexer extends PropertyKey[],
|
|
153
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
154
|
+
>(
|
|
155
|
+
type: TType,
|
|
156
|
+
indexer: readonly [...TIndexer],
|
|
157
|
+
options: TOptions,
|
|
158
|
+
): TOmit<TType, TypeBoxKeysToIndexer<TIndexer>> & TypeBoxDefaulted<TOptions>;
|
|
159
|
+
export function Omit<
|
|
160
|
+
const TType extends TSchema,
|
|
161
|
+
const TIndexer extends TSchema,
|
|
162
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
163
|
+
>(
|
|
164
|
+
type: TType,
|
|
165
|
+
indexer: TIndexer,
|
|
166
|
+
options: TOptions,
|
|
167
|
+
): TOmit<TType, TIndexer> & TypeBoxDefaulted<TOptions>;
|
|
168
|
+
|
|
169
|
+
export function Required<
|
|
170
|
+
const TType extends TSchema,
|
|
171
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
172
|
+
>(
|
|
173
|
+
type: TType,
|
|
174
|
+
options: TOptions,
|
|
175
|
+
): TRequired<TType> & TypeBoxDefaulted<TOptions>;
|
|
176
|
+
|
|
177
|
+
export function Union<
|
|
178
|
+
const TTypes extends TSchema[],
|
|
179
|
+
const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>,
|
|
180
|
+
>(
|
|
181
|
+
anyOf: [...TTypes],
|
|
182
|
+
options: TOptions,
|
|
183
|
+
): TUnion<TTypes> & TypeBoxDefaulted<TOptions>;
|
|
184
|
+
|
|
185
|
+
export function Intersect<
|
|
186
|
+
const TTypes extends TSchema[],
|
|
187
|
+
const TOptions extends TypeBoxDefaultOptions<TIntersectOptions>,
|
|
188
|
+
>(
|
|
189
|
+
types: [...TTypes],
|
|
190
|
+
options: TOptions,
|
|
191
|
+
): TIntersect<TTypes> & TypeBoxDefaulted<TOptions>;
|
|
192
|
+
|
|
193
|
+
export function Record<
|
|
194
|
+
const TKey extends TSchema,
|
|
195
|
+
const TValue extends TSchema,
|
|
196
|
+
const TOptions extends TypeBoxDefaultOptions<TObjectOptions>,
|
|
197
|
+
>(
|
|
198
|
+
key: TKey,
|
|
199
|
+
value: TValue,
|
|
200
|
+
options: TOptions,
|
|
201
|
+
): TypeBoxRecord<TKey, TValue> & TypeBoxDefaulted<TOptions>;
|
|
202
|
+
|
|
203
|
+
export function Tuple<
|
|
204
|
+
const TTypes extends TSchema[],
|
|
205
|
+
const TOptions extends TypeBoxDefaultOptions<TTupleOptions>,
|
|
206
|
+
>(
|
|
207
|
+
types: [...TTypes],
|
|
208
|
+
options: TOptions,
|
|
209
|
+
): TTuple<TTypes> & TypeBoxDefaulted<TOptions>;
|
|
210
|
+
|
|
211
|
+
export function Null<const TOptions extends TypeBoxDefaultOptions<TSchemaOptions>>(
|
|
212
|
+
options: TOptions,
|
|
213
|
+
): TNull & TypeBoxDefaulted<TOptions>;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export {};
|