forest-cli
Version:
The Lumberjacks' toolbelt is the Forest CLI which makes easy to manage your back office application directly from the terminal.
81 lines • 2.67 kB
TypeScript
/**
* Compiles a declarative workflow step-graph into the BPMN XML the server's
* workflow engine accepts. A workflow's *elements* (steps) live entirely in
* this BPMN artifact — there is no per-element patch path; the file is uploaded
* whole (presigned S3) and linked via `bpmnAwsS3Identifier`. This is exactly
* what the Forest UI does (verified against a captured request trace).
*
* The parser reads structure + prompt + execution flags; per-field args and
* action/MCP wiring are resolved at runtime. The spec sets the shape.
*/
/** Error in a workflow `steps` spec (authoring-time, before anything is sent). */
export declare class WorkflowSpecError extends Error {
constructor(message: string);
}
/** Step types → BPMN element + `forest:alternative` (task subtype). */
declare const STEP_TYPES: {
readonly action: {
readonly alternative: "trigger-action";
readonly element: "serviceTask";
};
readonly condition: {
readonly element: "exclusiveGateway";
};
readonly end: {
readonly element: "endEvent";
};
readonly escalation: {
readonly element: "intermediateThrowEvent";
};
readonly guidance: {
readonly alternative: "guideline";
readonly element: "userTask";
};
readonly 'load-related': {
readonly alternative: "load-related-record";
readonly element: "serviceTask";
};
readonly mcp: {
readonly alternative: "mcp-server";
readonly element: "serviceTask";
};
readonly read: {
readonly alternative: "get-data";
readonly element: "serviceTask";
};
readonly update: {
readonly alternative: "update-data";
readonly element: "serviceTask";
};
};
export type StepType = keyof typeof STEP_TYPES;
export type BranchSpec = {
answer: string;
color?: string;
next: string;
};
export type StepSpec = {
auto?: boolean;
autoComplete?: boolean;
branches?: BranchSpec[];
id: string;
inboxId?: string;
mcpServerId?: string;
next?: string;
prompt?: string;
title?: string;
type: StepType;
};
export type WorkflowSpec = {
collection: string;
name: string;
segments?: string[];
start?: string;
steps: StepSpec[];
};
/** Validate a (possibly partial) spec object and normalize it (entry step, segments). */
export declare function validateWorkflowSpec(spec: Partial<WorkflowSpec>): WorkflowSpec;
/** Compile a workflow `steps` spec into BPMN XML (validates first). */
export declare function compileWorkflowToBpmn(input: Partial<WorkflowSpec>): string;
export {};
//# sourceMappingURL=workflow-bpmn.d.ts.map