d00f9df2dd
- Delete ConditionDefinition, Transition types from workflow-protocol - Add Target type, change graph to Record<string, Record<string, Target>> - Remove conditions from WorkflowPayload and WORKFLOW_SCHEMA - Replace jsonata with mustache in workflow-moderator - Rewrite evaluate() to simple map lookup + mustache render - Update cli-workflow to use new 3-arg evaluate(graph, role, output) - 296 tests pass, 0 fail Phase 1 of #490 (closes #491)
77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
import type { JSONSchema } from "@uncaged/json-cas";
|
|
|
|
const ROLE_DEFINITION: JSONSchema = {
|
|
type: "object",
|
|
required: ["description", "goal", "capabilities", "procedure", "output", "frontmatter"],
|
|
properties: {
|
|
description: { type: "string" },
|
|
goal: { type: "string" },
|
|
capabilities: { type: "array", items: { type: "string" } },
|
|
procedure: { type: "string" },
|
|
output: { type: "string" },
|
|
frontmatter: { type: "string", format: "cas_ref" },
|
|
},
|
|
additionalProperties: false,
|
|
};
|
|
|
|
const TARGET: JSONSchema = {
|
|
type: "object",
|
|
required: ["role", "prompt"],
|
|
properties: {
|
|
role: { type: "string" },
|
|
prompt: { type: "string" },
|
|
},
|
|
additionalProperties: false,
|
|
};
|
|
|
|
export const WORKFLOW_SCHEMA: JSONSchema = {
|
|
title: "Workflow",
|
|
type: "object",
|
|
required: ["name", "description", "roles", "graph"],
|
|
properties: {
|
|
name: { type: "string" },
|
|
description: { type: "string" },
|
|
roles: {
|
|
type: "object",
|
|
additionalProperties: ROLE_DEFINITION,
|
|
},
|
|
graph: {
|
|
type: "object",
|
|
additionalProperties: {
|
|
type: "object",
|
|
additionalProperties: TARGET,
|
|
},
|
|
},
|
|
},
|
|
additionalProperties: false,
|
|
};
|
|
|
|
export const START_NODE_SCHEMA: JSONSchema = {
|
|
title: "StartNode",
|
|
type: "object",
|
|
required: ["workflow", "prompt"],
|
|
properties: {
|
|
workflow: { type: "string", format: "cas_ref" },
|
|
prompt: { type: "string" },
|
|
},
|
|
additionalProperties: false,
|
|
};
|
|
|
|
export const STEP_NODE_SCHEMA: JSONSchema = {
|
|
title: "StepNode",
|
|
type: "object",
|
|
required: ["start", "prev", "role", "output", "detail", "agent"],
|
|
properties: {
|
|
start: { type: "string", format: "cas_ref" },
|
|
prev: {
|
|
anyOf: [{ type: "string", format: "cas_ref" }, { type: "null" }],
|
|
},
|
|
role: { type: "string" },
|
|
output: { type: "string", format: "cas_ref" },
|
|
detail: { type: "string", format: "cas_ref" },
|
|
agent: { type: "string" },
|
|
edgePrompt: { type: "string" },
|
|
},
|
|
additionalProperties: false,
|
|
};
|