@agimon-ai/po-dynamic-workflow 0.0.1-alpha.3 → 0.0.1-alpha.4
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.
|
@@ -833,7 +833,7 @@ var dynamic_workflow_runs_server_default = (0, _agimon_ai_po_core_extensionFile.
|
|
|
833
833
|
//#region src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server.ts
|
|
834
834
|
var codemode_how_to_dynamic_workflow_server_default = (0, _agimon_ai_po_core_extensionFile.defineResource)({
|
|
835
835
|
name: "codemode-how-to-dynamic-workflow",
|
|
836
|
-
description: "
|
|
836
|
+
description: "Let the person follow a long multi-phase or fan-out job live, with each child agent transcript in Activity. Use when a script runs many steps or subagents that someone should be able to watch.",
|
|
837
837
|
kind: "skill",
|
|
838
838
|
pinned: true,
|
|
839
839
|
path: (0, _agimon_ai_po_core_serverPlugin.packageResourcePath)(require("url").pathToFileURL(__filename).href, "src/prompts/codemode-how-to-dynamic-workflow/SKILL.md"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.cjs","names":["require","createRequire","AsyncLocalStorage","defineRoot","PO_TEAM_INLINE_RUN_EVENT","PO_CODEMODE_SERVICE","readPoCodemode","defineChannel","defineResource","packageResourcePath","readPackageResource","defineServerPlugin","composeServerProviderOverrides","rootSession","composeRootInjects","channelDynamicWorkflowRuns","composeRootHooks","resourceCodemodeHowToDynamicWorkflow"],"sources":["../../src/constants/dynamicWorkflow.ts","../../src/constants/declarations.ts","../../src/services/workflowTracker/index.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/services/workflowChannel/index.ts","../../src/extensions/(backend)/channel/dynamic-workflow-runs.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server.ts","../../generated/server.ts"],"sourcesContent":["export const DYNAMIC_WORKFLOW_CHANNEL = 'dynamic_workflow_runs';\n","export const dynamicWorkflowDeclarations = `\ninterface WorkflowSchema<T> {\n readonly _output: T;\n parse(value: unknown): T;\n optional(): WorkflowSchema<T | undefined>;\n nullable(): WorkflowSchema<T | null>;\n default(value: T): WorkflowSchema<T>;\n array(): WorkflowSchema<T[]>;\n describe(text: string): WorkflowSchema<T>;\n min(value: number): WorkflowSchema<T>;\n max(value: number): WorkflowSchema<T>;\n int(): WorkflowSchema<T>;\n positive(): WorkflowSchema<T>;\n nonnegative(): WorkflowSchema<T>;\n trim(): WorkflowSchema<T>;\n}\ntype WorkflowSchemaOutput<S> = S extends WorkflowSchema<infer T> ? T : never;\ntype WorkflowObject<S extends Record<string, WorkflowSchema<unknown>>> =\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? never : K]: WorkflowSchemaOutput<S[K]> } &\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? K : never]?: WorkflowSchemaOutput<S[K]> };\ninterface WorkflowZod {\n string(): WorkflowSchema<string>;\n number(): WorkflowSchema<number>;\n boolean(): WorkflowSchema<boolean>;\n null(): WorkflowSchema<null>;\n unknown(): WorkflowSchema<unknown>;\n any(): WorkflowSchema<unknown>;\n literal<T extends string | number | boolean | null>(value: T): WorkflowSchema<T>;\n enum<T extends string>(values: readonly [T, ...T[]]): WorkflowSchema<T>;\n object<S extends Record<string, WorkflowSchema<unknown>>>(shape: S): WorkflowSchema<WorkflowObject<S>>;\n array<T>(item: WorkflowSchema<T>): WorkflowSchema<T[]>;\n record<T>(item: WorkflowSchema<T>): WorkflowSchema<Record<string,T>>;\n union<S extends readonly [WorkflowSchema<unknown>, WorkflowSchema<unknown>, ...WorkflowSchema<unknown>[]]>(schemas: S): WorkflowSchema<WorkflowSchemaOutput<S[number]>>;\n}\ninterface WorkflowExecute<I> {\n inputData: I;\n runId: string;\n abortSignal: AbortSignal;\n getInitData(): unknown;\n}\ninterface TrackedStep<I = unknown, O = unknown, Id extends string = string> {\n readonly id: Id;\n readonly __input?: I;\n readonly __output?: O;\n}\ninterface TrackedRun<I, O> {\n readonly runId: string;\n start(options: { inputData: I }): Promise<{ status: string; result?: O; error?: unknown }>;\n cancel(): Promise<void>;\n}\ninterface TrackedWorkflow<I, O, Current = I> extends TrackedStep<I,O> {\n then<T>(step: TrackedStep<Current,T>): TrackedWorkflow<I,O,T>;\n parallel<T extends readonly TrackedStep<Current,unknown>[]>(steps: T): TrackedWorkflow<I,O,Record<T[number]['id'],T[number] extends TrackedStep<Current,infer Out> ? Out : never>>;\n branch(choices: [((params: WorkflowExecute<Current>) => boolean | Promise<boolean>), TrackedStep<Current,unknown>][]): TrackedWorkflow<I,O,Record<string,unknown>>;\n foreach<T, U, C>(item: TrackedWorkflow<T,U,C>, options: { concurrency: number }): TrackedWorkflow<I,O,U[]>;\n commit(): TrackedWorkflow<I,O,Current>;\n createRun(): Promise<TrackedRun<I,O>>;\n}\ndeclare const dynamicWorkflow: {\n createStep<I,O,Id extends string>(options: { id: Id; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O>; execute: (params: WorkflowExecute<I>) => O | Promise<O> }): TrackedStep<I,O,Id>;\n createWorkflow<I,O>(options: { id: string; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O> }): TrackedWorkflow<I,O>;\n /** Zod 3.25.76. Common constructors are declared here; runtime supplies the real z object. */\n z: WorkflowZod;\n};`;\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport { createRequire } from 'node:module';\n\nimport type { PoCodemodeRun } from '@agimon-ai/po-core/codemode';\nimport type * as Zod from 'zod';\n\nimport { dynamicWorkflowDeclarations } from '../../constants/declarations';\nimport type {\n DynamicWorkflowGroup,\n DynamicWorkflowItem,\n DynamicWorkflowPhase,\n DynamicWorkflowRun,\n DynamicWorkflowShape,\n DynamicWorkflowSnapshot,\n DynamicWorkflowStatus,\n} from '../../types/dynamicWorkflow';\nimport type { WorkflowTracker, WorkflowTrackerOptions } from './type';\n\ninterface RawStep {\n id: string;\n execute: (params: Record<string, unknown>) => Promise<unknown>;\n}\ninterface RawRun {\n runId: string;\n start: (options: Record<string, unknown>) => Promise<Record<string, unknown>>;\n cancel: () => Promise<unknown>;\n}\ninterface RawWorkflow extends RawStep {\n then(step: RawStep): RawWorkflow;\n parallel(steps: RawStep[]): RawWorkflow;\n branch(steps: [(params: Record<string, unknown>) => Promise<boolean>, RawStep][]): RawWorkflow;\n foreach(step: RawWorkflow, options: { concurrency: (params: { inputData: unknown }) => number }): RawWorkflow;\n commit(): RawWorkflow;\n createRun(options?: Record<string, unknown>): Promise<RawRun>;\n}\ninterface Factories {\n createStep(options: Record<string, unknown>): RawStep;\n createWorkflow(options: Record<string, unknown>): RawWorkflow;\n z: typeof Zod.z;\n}\ninterface Definition {\n raw: RawStep;\n shape: DynamicWorkflowShape;\n workflow?: {\n raw: RawWorkflow;\n committed: boolean;\n foreach: Map<string, DynamicWorkflowShape>;\n nested: Map<string, DynamicWorkflowShape>;\n };\n}\ninterface Execution {\n root: DynamicWorkflowRun;\n definition: Definition;\n item: DynamicWorkflowItem;\n boundaryErrors: string[];\n shape: DynamicWorkflowShape;\n}\ninterface PhaseOwner {\n execution: Execution;\n phase: DynamicWorkflowPhase;\n}\n\nconst object = (value: unknown, name: string): Record<string, unknown> => {\n if (value === null || typeof value !== 'object' || Array.isArray(value))\n throw new Error(`${name} must be an object.`);\n return value as Record<string, unknown>;\n};\nconst options = (value: unknown, keys: string[], name: string): Record<string, unknown> => {\n const result = object(value, name);\n for (const key of Object.keys(result))\n if (!keys.includes(key)) throw new Error(`${name}.${key} is not supported by tracked workflows.`);\n return result;\n};\nconst label = (value: unknown): string => {\n if (typeof value !== 'string' || !value.trim() || value.length > 160)\n throw new Error('Workflow and step ids must be non-empty strings of at most 160 characters.');\n return value;\n};\nconst callbackParameters = (params: Record<string, unknown>): Record<string, unknown> => ({\n inputData: params.inputData,\n runId: params.runId,\n abortSignal: params.abortSignal,\n ...(typeof params.getInitData === 'function' ? { getInitData: params.getInitData } : {}),\n});\n/** Reject the host wrapper on abort; late guest settlement cannot write tracked state. */\nconst callbackWithAbort = (callback: () => unknown, signal: AbortSignal): Promise<unknown> => {\n signal.throwIfAborted();\n return new Promise((resolve, reject) => {\n const abort = () => {\n signal.removeEventListener('abort', abort);\n reject(signal.reason);\n };\n signal.addEventListener('abort', abort, { once: true });\n Promise.resolve()\n .then(() => {\n signal.throwIfAborted();\n return callback();\n })\n .then(\n (value) => {\n signal.removeEventListener('abort', abort);\n resolve(value);\n },\n (error) => {\n signal.removeEventListener('abort', abort);\n reject(error);\n },\n );\n });\n};\nconst callbackSignal = (binding: AbortSignal, params: Record<string, unknown>): AbortSignal =>\n params.abortSignal instanceof AbortSignal ? AbortSignal.any([binding, params.abortSignal]) : binding;\nconst validateDefinition = (def: Record<string, unknown>) => {\n if (def.description !== undefined && (typeof def.description !== 'string' || def.description.length > 500))\n throw new Error('description must be a string of at most 500 characters.');\n for (const field of ['inputSchema', 'outputSchema']) {\n const schema = object(def[field], field);\n if (typeof schema.safeParse !== 'function') throw new Error(`${field} must be a Zod schema.`);\n }\n};\nconst errorText = (error: unknown): string =>\n (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string'\n ? error.message\n : String(error)\n ).slice(0, 500);\nconst status = (value: unknown): DynamicWorkflowStatus => {\n if (value === 'success') return 'completed';\n if (value === 'canceled' || value === 'cancelled') return 'stopped';\n if (value === 'failed') return 'failed';\n throw new Error(`Unsupported Mastra result status: ${String(value)}.`);\n};\nconst counts = (): Record<DynamicWorkflowStatus, number> => ({\n pending: 0,\n running: 0,\n completed: 0,\n failed: 0,\n stopped: 0,\n skipped: 0,\n});\n/** Mastra executes. This observer only decorates constructors and lifecycle calls. */\nexport async function createWorkflowTracker(config: WorkflowTrackerOptions): Promise<WorkflowTracker> {\n let factories: Factories | undefined;\n const loadFactories = (): Factories => {\n if (!factories) {\n const require = createRequire(import.meta.url);\n const workflow = require('@mastra/core/workflows') as Pick<Factories, 'createStep' | 'createWorkflow'>;\n const schemas = require('zod') as Pick<Factories, 'z'>;\n factories = { ...workflow, z: schemas.z };\n }\n return factories;\n };\n const now = config.now ?? Date.now;\n const roots: DynamicWorkflowRun[] = [];\n const context = new AsyncLocalStorage<PhaseOwner>();\n const runContext = new AsyncLocalStorage<Execution>();\n const children = new Map<string, PhaseOwner>();\n const boundaryFailures = new WeakSet<DynamicWorkflowPhase>();\n const intentionalStops = new WeakSet<DynamicWorkflowPhase>();\n let revision = 0;\n let serial = 0;\n let disposed = false;\n const key = () => `workflow-${++serial}`;\n const origins = new WeakMap<DynamicWorkflowShape, string>();\n const origin = (shape: DynamicWorkflowShape) => origins.get(shape) ?? shape.key;\n const occurrence = (shape: DynamicWorkflowShape): DynamicWorkflowShape => {\n const result = { ...shape, key: key(), children: shape.children.map(occurrence) };\n origins.set(result, origin(shape));\n return result;\n };\n const findShape = (shape: DynamicWorkflowShape, source: DynamicWorkflowShape): DynamicWorkflowShape | undefined => {\n if (origin(shape) === origin(source)) return shape;\n for (const child of shape.children) {\n const found = findShape(child, source);\n if (found) return found;\n }\n return undefined;\n };\n const directSteps = (shape: DynamicWorkflowShape): DynamicWorkflowShape[] => {\n const result: DynamicWorkflowShape[] = [];\n const visit = (node: DynamicWorkflowShape): void => {\n if (node.kind === 'step') result.push(node);\n else if (node.kind === 'parallel' || node.kind === 'branch') node.children.forEach(visit);\n };\n shape.children.forEach(visit);\n return result;\n };\n const snapshot = (): DynamicWorkflowSnapshot =>\n structuredClone({\n version: 1,\n revision,\n sessionId: config.sessionId,\n runs: roots.map((run) => ({\n ...run,\n groups: run.groups.map((group) => ({\n ...group,\n counts: group.items.reduce((sum, item) => {\n sum[item.status]++;\n return sum;\n }, counts()),\n truncated: group.items.length > 1000,\n items: group.items.slice(0, 1000),\n })),\n })),\n });\n const publish = () => {\n revision++;\n // Observers cannot change workflow execution or strand a running item.\n try {\n config.publish?.(snapshot());\n } catch {\n /* Publication is best effort. */\n }\n };\n const derive = (phase: DynamicWorkflowPhase) => {\n phase.status =\n boundaryFailures.has(phase) || phase.agents.some((agent) => agent.status === 'failed')\n ? 'failed'\n : intentionalStops.has(phase)\n ? 'stopped'\n : phase.executionStatus;\n };\n const summarize = (item: DynamicWorkflowItem) => {\n item.status = item.phases.some((phase) => phase.status === 'failed')\n ? 'failed'\n : item.phases.some((phase) => phase.status === 'running')\n ? 'running'\n : item.phases.some((phase) => phase.status === 'stopped')\n ? 'stopped'\n : item.phases.every((phase) => phase.status === 'skipped')\n ? 'skipped'\n : item.phases.some((phase) => phase.status === 'pending')\n ? 'pending'\n : 'completed';\n };\n const update = (owner: PhaseOwner) => {\n derive(owner.phase);\n summarize(owner.execution.item);\n publish();\n };\n const terminal = (execution: Execution, outcome: DynamicWorkflowStatus, root: boolean, engineOutcome = outcome) => {\n const relevant = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step') relevant.add(shape.key);\n else shape.children.forEach(visit);\n };\n visit(execution.shape);\n for (const phase of execution.item.phases) {\n if (!root && !relevant.has(phase.key)) continue;\n if (phase.executionStatus === 'pending') phase.executionStatus = 'skipped';\n else if (phase.executionStatus === 'running') phase.executionStatus = outcome;\n derive(phase);\n }\n if (execution.item.phases.length) summarize(execution.item);\n else execution.item.status = outcome;\n if (\n execution.root.groups.some(\n (group) =>\n group.key.startsWith(`${execution.item.key}/`) && group.items.some((item) => item.status === 'failed'),\n )\n )\n execution.item.status = 'failed';\n if (root) {\n execution.root.executionStatus = engineOutcome;\n execution.root.status = execution.root.groups.some((group) =>\n group.items.some((item) => item.status === 'failed'),\n )\n ? 'failed'\n : outcome;\n execution.root.finishedAt = now();\n for (const group of execution.root.groups)\n for (const item of group.items) {\n if (item.status === 'pending') {\n item.status = 'skipped';\n for (const phase of item.phases)\n if (phase.executionStatus === 'pending') phase.status = phase.executionStatus = 'skipped';\n }\n }\n const completed = roots.filter((run) => run.executionStatus !== 'running');\n for (const run of completed.slice(0, Math.max(0, completed.length - 20))) {\n roots.splice(roots.indexOf(run), 1);\n for (const [id, owner] of children) if (owner.execution.root === run) children.delete(id);\n }\n }\n publish();\n };\n const reconcile = (execution: Execution, result: Record<string, unknown>) => {\n if (!result.steps || typeof result.steps !== 'object') return;\n const results = result.steps as Record<string, unknown>;\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') {\n // The contract captures the exact Mastra step id as label, not an inferred display name.\n const value = results[shape.label];\n if (!value || typeof value !== 'object') return;\n const detail = value as Record<string, unknown>;\n const phase = execution.item.phases.find((phase) => phase.key === shape.key);\n if (!phase || !['success', 'failed', 'canceled', 'cancelled', 'skipped'].includes(String(detail.status)))\n return;\n phase.executionStatus = detail.status === 'skipped' ? 'skipped' : status(detail.status);\n if (typeof detail.startedAt === 'number') phase.startedAt = detail.startedAt;\n if (typeof detail.endedAt === 'number') phase.finishedAt = detail.endedAt;\n if (detail.error) phase.error = errorText(detail.error);\n derive(phase);\n } else if (shape.kind === 'parallel' || shape.kind === 'branch') shape.children.forEach(visit);\n };\n // Nested workflows reconcile their own result, which can reuse parent run ids.\n execution.shape.children.forEach(visit);\n };\n const makeItem = (definition: Definition, index: number, shape = definition.shape): DynamicWorkflowItem => {\n const phases: DynamicWorkflowPhase[] = [];\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step')\n phases.push({ key: shape.key, label: shape.label, status: 'pending', executionStatus: 'pending', agents: [] });\n else shape.children.forEach(visit);\n };\n visit(shape);\n return { key: key(), index, label: `Item ${index + 1}`, status: 'pending', phases };\n };\n const activeCancels = new Set<() => Promise<unknown>>();\n const activeStarts = new Set<Promise<unknown>>();\n const bindings = new Set<AbortController>();\n return {\n snapshot,\n inlineRun(event) {\n if (event.sessionId !== config.sessionId) return;\n if (event.status === 'running') {\n if (disposed) return;\n const owner = context.getStore();\n if (!owner || owner.phase.executionStatus !== 'running' || owner.execution.root.executionStatus !== 'running')\n return;\n children.set(event.runId, owner);\n if (!owner.phase.agents.some((agent) => agent.runId === event.runId))\n owner.phase.agents.push({ runId: event.runId, status: event.status });\n update(owner);\n } else {\n const owner = children.get(event.runId);\n const agent = owner?.phase.agents.find((agent) => agent.runId === event.runId);\n if (owner && agent) {\n agent.status = event.status;\n update(owner);\n }\n }\n },\n namespace(lifetime) {\n return {\n name: 'dynamicWorkflow',\n summary:\n 'Tracked Mastra workflows: then, parallel, branch and bounded foreach, with live child-agent transcripts in Activity.',\n declarations: dynamicWorkflowDeclarations,\n bind(run: PoCodemodeRun) {\n if (run.sessionId !== config.sessionId) throw new Error('dynamicWorkflow belongs to another session.');\n const binding = new AbortController();\n bindings.add(binding);\n const signal = AbortSignal.any([lifetime, run.signal, binding.signal]);\n let closed = false;\n const assert = () => {\n signal.throwIfAborted();\n if (closed || disposed) throw new Error('dynamicWorkflow execution is disposed.');\n };\n const definitions = new WeakMap<object, Definition>();\n const pendingCancels = new Set<() => Promise<unknown>>();\n const pendingStarts = new Set<Promise<unknown>>();\n const stop = () => {\n closed = true;\n for (const cancel of pendingCancels) void cancel().catch(() => undefined);\n };\n signal.addEventListener('abort', stop, { once: true });\n run.onDispose(async () => {\n closed = true;\n binding.abort(new Error('dynamicWorkflow execution is disposed.'));\n bindings.delete(binding);\n signal.removeEventListener('abort', stop);\n await Promise.allSettled([...pendingCancels].map((cancel) => cancel()));\n await Promise.allSettled(pendingStarts);\n });\n const definitionFor = (value: unknown): Definition => {\n const definition = definitions.get(object(value, 'Tracked step'));\n if (!definition)\n throw new Error('Only steps and workflows created by this dynamicWorkflow execution are supported.');\n if (definition.workflow && !definition.workflow.committed)\n throw new Error('Commit nested workflows before composing them.');\n return definition;\n };\n const createGroup = (\n execution: Execution,\n shape: DynamicWorkflowShape,\n total: number,\n concurrency: number,\n ): DynamicWorkflowGroup => {\n const groupKey = `${execution.item.key}/${shape.key}`;\n let group = execution.root.groups.find((group) => group.key === groupKey);\n if (!group) {\n group = {\n key: groupKey,\n label: shape.label,\n total,\n counts: counts(),\n truncated: false,\n concurrency,\n items: [],\n };\n execution.root.groups.push(group);\n }\n return group;\n };\n const members: Record<string, unknown> = {\n get z() {\n assert();\n return loadFactories().z;\n },\n createStep(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema', 'execute'], 'createStep');\n const id = label(def.id);\n validateDefinition(def);\n if (typeof def.execute !== 'function') throw new Error('createStep.execute must be a function.');\n const callback = def.execute as (params: Record<string, unknown>) => unknown;\n const shape: DynamicWorkflowShape = { key: key(), label: id, kind: 'step', children: [] };\n const raw = loadFactories().createStep({\n ...def,\n id,\n execute: async (params: Record<string, unknown>) => {\n assert();\n const execution = runContext.getStore();\n const position =\n execution && directSteps(execution.shape).find((candidate) => origin(candidate) === shape.key);\n const phase = execution?.item.phases.find((phase) => phase.key === position?.key);\n if (!execution || !phase) throw new Error('Tracked step has no execution context.');\n phase.executionStatus = phase.status = 'running';\n phase.startedAt = now();\n execution.item.status = 'running';\n publish();\n const owner = { execution, phase };\n const operationSignal = callbackSignal(signal, params);\n return context.run(owner, async () => {\n try {\n const output = await callbackWithAbort(\n () => callback(callbackParameters(params)),\n operationSignal,\n );\n operationSignal.throwIfAborted();\n assert();\n if (output === undefined)\n throw new Error(\n 'Tracked callback returned undefined. Return null for empty output, or inspect exec diagnostics for a guest callback error.',\n );\n phase.executionStatus = 'completed';\n return output;\n } catch (error) {\n if (operationSignal.aborted || closed || disposed) intentionalStops.add(phase);\n phase.executionStatus = 'failed';\n phase.error = errorText(error);\n throw error;\n } finally {\n phase.finishedAt = now();\n update(owner);\n }\n });\n },\n });\n const handle = Object.freeze({ id });\n definitions.set(handle, { raw, shape });\n return handle;\n },\n createWorkflow(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema'], 'createWorkflow');\n const id = label(def.id);\n validateDefinition(def);\n const raw = loadFactories().createWorkflow({ ...def, id });\n const definition: Definition = {\n raw,\n shape: { key: key(), kind: 'sequence', label: id, children: [] },\n workflow: { raw, committed: false, foreach: new Map(), nested: new Map() },\n };\n const workflow = definition.workflow!;\n const rawCreateRun = raw.createRun.bind(raw);\n raw.createRun = async (createOptions: Record<string, unknown> = {}) => {\n assert();\n const rawRun = await rawCreateRun(createOptions);\n const parent = createOptions.parentWorkflow as\n | { runId: string; stepId: string; foreachIndex?: number }\n | undefined;\n let execution: Execution | undefined;\n if (parent) {\n const ancestor = runContext.getStore();\n if (!ancestor) throw new Error('Nested workflow has no tracked parent.');\n const authoredForeach = ancestor.definition.workflow?.foreach.get(parent.stepId);\n const foreachShape = authoredForeach && findShape(ancestor.shape, authoredForeach);\n if (foreachShape) {\n if (!Number.isSafeInteger(parent.foreachIndex) || parent.foreachIndex! < 0)\n throw new Error('Nested foreach did not provide a stable item index.');\n const group = ancestor.root.groups.find(\n (group) => group.key === `${ancestor.item.key}/${foreachShape.key}`,\n );\n if (!group) throw new Error('Nested foreach has no observed group.');\n const item = group.items[parent.foreachIndex!];\n if (!item) throw new Error('Nested foreach item is outside its observed input.');\n execution = {\n root: ancestor.root,\n item,\n definition,\n boundaryErrors: ancestor.boundaryErrors,\n shape: foreachShape.children[0]!,\n };\n } else {\n const authored = ancestor.definition.workflow?.nested.get(parent.stepId);\n const position = authored && findShape(ancestor.shape, authored);\n if (!position) throw new Error('Nested workflow has no tracked graph position.');\n execution = { ...ancestor, definition, shape: position };\n }\n }\n const start = rawRun.start.bind(rawRun);\n const cancel = rawRun.cancel.bind(rawRun);\n let started = false;\n let cancelled = false;\n const cancelTracked = async () => {\n cancelled = true;\n return await cancel();\n };\n rawRun.cancel = cancelTracked;\n const executeStart = async (startOptions: Record<string, unknown>) => {\n assert();\n if (started) throw new Error('Tracked runs can only start once.');\n started = true;\n if (!parent) {\n const item = makeItem(definition, 0);\n item.label = id;\n const root: DynamicWorkflowRun = {\n key: rawRun.runId,\n workflowId: id,\n label: id,\n status: 'running',\n executionStatus: 'running',\n startedAt: now(),\n shape: structuredClone(definition.shape),\n groups: [{ key: key(), label: id, total: 1, counts: counts(), truncated: false, items: [item] }],\n };\n // Foreach-only roots do not need an empty synthetic row.\n if (!item.phases.length) root.groups = [];\n roots.push(root);\n execution = { root, item, definition, boundaryErrors: [], shape: definition.shape };\n publish();\n }\n if (!execution) throw new Error('Tracked run has no execution context.');\n execution.item.status = 'running';\n pendingCancels.add(cancelTracked);\n activeCancels.add(cancelTracked);\n let reported = false;\n try {\n const result = await runContext.run(execution, () => start(startOptions));\n const outcome =\n cancelled || signal.aborted || closed || disposed ? 'stopped' : status(result.status);\n if (result.error) execution.root.error = errorText(result.error);\n reconcile(execution, result);\n terminal(execution, outcome, !parent, status(result.status));\n reported = true;\n if (execution.boundaryErrors.length) throw new Error(execution.boundaryErrors[0]);\n return result;\n } catch (error) {\n if (!reported) {\n execution.root.error = errorText(error);\n terminal(\n execution,\n cancelled || signal.aborted || closed || disposed ? 'stopped' : 'failed',\n !parent,\n );\n }\n throw error;\n } finally {\n pendingCancels.delete(cancelTracked);\n activeCancels.delete(cancelTracked);\n }\n };\n rawRun.start = (startOptions) => {\n const started = executeStart(startOptions);\n pendingStarts.add(started);\n activeStarts.add(started);\n const settled = () => {\n pendingStarts.delete(started);\n activeStarts.delete(started);\n };\n void started.then(settled, settled);\n return started;\n };\n return rawRun;\n };\n const ids = new Set<string>();\n const claim = (targets: Definition[]) => {\n const next = new Set<string>();\n for (const target of targets) {\n if (ids.has(target.raw.id) || next.has(target.raw.id) || target.raw.id === id)\n throw new Error('Use distinct step ids within a tracked workflow.');\n next.add(target.raw.id);\n }\n for (const value of next) ids.add(value);\n for (const target of targets) if (target.workflow) workflow.nested.set(target.raw.id, target.shape);\n };\n const mutable = () => {\n assert();\n if (workflow.committed) throw new Error('Tracked workflow is already committed.');\n };\n const add = (kind: 'parallel' | 'branch', targets: Definition[]) => {\n definition.shape.children.push({\n key: key(),\n label: kind,\n kind,\n children: targets.map((target) => occurrence(target.shape)),\n });\n };\n const handle = Object.freeze({\n id,\n // Mastra intentionally names its fluent composition method then, not a Promise continuation.\n // oxlint-disable-next-line unicorn/no-thenable\n then(value: unknown) {\n mutable();\n const target = definitionFor(value);\n claim([target]);\n raw.then(target.raw);\n definition.shape.children.push(occurrence(target.shape));\n return handle;\n },\n parallel(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('parallel requires a non-empty array of tracked steps.');\n const targets = values.map(definitionFor);\n claim(targets);\n raw.parallel(targets.map((target) => target.raw));\n add('parallel', targets);\n return handle;\n },\n branch(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('branch requires predicate/step pairs.');\n const targets: Definition[] = [];\n const pairs = values.map(\n (pair: unknown): [(params: Record<string, unknown>) => Promise<boolean>, RawStep] => {\n if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== 'function')\n throw new Error('branch requires [predicate, tracked step] pairs.');\n const target = definitionFor(pair[1]);\n targets.push(target);\n const predicate = pair[0] as (params: Record<string, unknown>) => unknown;\n return [\n async (params) => {\n assert();\n const operationSignal = callbackSignal(signal, params);\n try {\n const answer = await callbackWithAbort(\n () => predicate(callbackParameters(params)),\n operationSignal,\n );\n if (typeof answer !== 'boolean')\n throw new Error(\n 'Tracked branch predicates must return a boolean. Inspect exec diagnostics if a guest callback failed.',\n );\n return answer;\n } catch (error) {\n if (operationSignal.aborted) throw error;\n const execution = runContext.getStore();\n if (execution) {\n const message = errorText(error);\n execution.boundaryErrors.push(message);\n execution.root.error = message;\n const leaves = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') leaves.add(shape.key);\n else shape.children.forEach(visit);\n };\n const position = findShape(execution.shape, target.shape);\n if (position) visit(position);\n for (const phase of execution.item.phases)\n if (leaves.has(phase.key)) {\n boundaryFailures.add(phase);\n phase.error = message;\n }\n }\n throw error;\n }\n },\n target.raw,\n ];\n },\n );\n claim(targets);\n raw.branch(pairs);\n add('branch', targets);\n return handle;\n },\n foreach(value: unknown, settings: unknown) {\n mutable();\n const target = definitionFor(value);\n if (!target.workflow)\n throw new Error('foreach requires a committed tracked item workflow, not a bare step.');\n const opts = options(settings, ['concurrency'], 'foreach');\n if (!Number.isSafeInteger(opts.concurrency) || Number(opts.concurrency) < 1)\n throw new Error('foreach.concurrency must be a positive integer.');\n const concurrency = Number(opts.concurrency);\n claim([target]);\n const shape: DynamicWorkflowShape = {\n key: key(),\n kind: 'foreach',\n label: target.shape.label,\n children: [occurrence(target.shape)],\n };\n raw.foreach(target.workflow.raw, {\n concurrency: ({ inputData }) => {\n assert();\n const execution = runContext.getStore();\n if (!execution || !Array.isArray(inputData))\n throw new Error('Tracked foreach requires array input and an active run.');\n const position = findShape(execution.shape, shape);\n if (!position) throw new Error('Foreach has no tracked graph position.');\n const group = createGroup(execution, position, inputData.length, concurrency);\n group.items = inputData.map((_, index) => makeItem(target, index, position.children[0]));\n publish();\n return concurrency;\n },\n });\n workflow.foreach.set(target.raw.id, shape);\n definition.shape.children.push(shape);\n return handle;\n },\n commit() {\n mutable();\n raw.commit();\n workflow.committed = true;\n return handle;\n },\n async createRun(value?: unknown) {\n assert();\n if (!workflow.committed) throw new Error('Commit the tracked workflow before creating a run.');\n if (value !== undefined && Object.keys(options(value, [], 'createRun')).length)\n throw new Error('createRun options are unsupported.');\n const live = await raw.createRun();\n return Object.freeze({\n runId: live.runId,\n async start(value: unknown) {\n assert();\n const opts = options(value, ['inputData'], 'start');\n return live.start(opts);\n },\n async cancel() {\n assert();\n await live.cancel();\n },\n });\n },\n });\n definitions.set(handle, definition);\n return handle;\n },\n };\n return members;\n },\n };\n },\n async dispose() {\n disposed = true;\n for (const binding of bindings) binding.abort(new Error('dynamicWorkflow session is disposed.'));\n bindings.clear();\n await Promise.allSettled([...activeCancels].map((cancel) => cancel()));\n await Promise.allSettled(activeStarts);\n children.clear();\n },\n };\n}\n","import { PO_CODEMODE_SERVICE, readPoCodemode } from '@agimon-ai/po-core/codemode';\nimport { PO_TEAM_INLINE_RUN_EVENT } from '@agimon-ai/po-core/delegation';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../../../constants/dynamicWorkflow';\nimport { createWorkflowTracker } from '../../../../services/workflowTracker';\n\nexport default defineRoot(async ({ context, agent, host, signal }: PoServerPluginContext) => {\n if (!agent) throw new Error('Dynamic workflow requires a headless session host.');\n const runtime = await createWorkflowTracker({\n sessionId: agent.context.sessionId,\n publish: (snapshot) =>\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, snapshot),\n });\n const stopEvents = context.on(PO_TEAM_INLINE_RUN_EVENT, (event) => runtime.inlineRun(event));\n context.inject([PO_CODEMODE_SERVICE], (scoped) => {\n const codemode = readPoCodemode(scoped);\n const registration = codemode?.register('@agimon-ai/po-dynamic-workflow', runtime.namespace(signal));\n return () => registration?.dispose();\n });\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, runtime.snapshot());\n return {\n value: runtime,\n onDispose: async () => {\n try {\n await runtime.dispose();\n } finally {\n stopEvents();\n }\n },\n };\n});\n","import type { PoHubChannel, PoHubSessionScope } from '@agimon-ai/po-core/hubChannel';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../constants/dynamicWorkflow';\nimport type { DynamicWorkflowSnapshot } from '../../types/dynamicWorkflow';\n\nexport function createWorkflowChannel(): PoHubChannel {\n return {\n frameType: DYNAMIC_WORKFLOW_CHANNEL,\n start(host) {\n const latest = new Map<string, DynamicWorkflowSnapshot>();\n const subscriptions = new Map<string, () => void>();\n const scopes = new Map<string, PoHubSessionScope>();\n return {\n payloadFor: (scope) => latest.get(scope.sessionId),\n sessionAdded(scope) {\n subscriptions.get(scope.sessionId)?.();\n scopes.set(scope.sessionId, scope);\n latest.delete(scope.sessionId);\n subscriptions.set(\n scope.sessionId,\n host.directEvents.subscribe(\n DYNAMIC_WORKFLOW_CHANNEL,\n scope.sessionId,\n (value) => {\n if (scopes.get(scope.sessionId) !== scope || !value || typeof value !== 'object') return;\n const snapshot = value as DynamicWorkflowSnapshot;\n if (snapshot.version !== 1 || snapshot.sessionId !== scope.sessionId || !Array.isArray(snapshot.runs))\n return;\n const detached = structuredClone(snapshot);\n latest.set(scope.sessionId, detached);\n host.publish(scope.sessionId, detached);\n },\n { replayLatest: true },\n ),\n );\n },\n sessionRemoved(id) {\n subscriptions.get(id)?.();\n subscriptions.delete(id);\n scopes.delete(id);\n latest.delete(id);\n },\n close() {\n for (const unsubscribe of subscriptions.values()) unsubscribe();\n subscriptions.clear();\n scopes.clear();\n latest.clear();\n },\n };\n },\n };\n}\n","import { defineChannel } from '@agimon-ai/po-core/extensionFile';\n\nimport { createWorkflowChannel } from '../../../services/workflowChannel';\n\nexport default defineChannel(createWorkflowChannel);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineResource({\n name: 'codemode-how-to-dynamic-workflow',\n description: 'Compose tracked Mastra workflows and link live child-agent transcripts in Activity.',\n kind: 'skill' as const,\n pinned: true,\n path: packageResourcePath(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverPlugin';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverPlugin';\nimport { composeRootHooks, composeRootInjects } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport channelDynamicWorkflowRuns from '../src/extensions/(backend)/channel/dynamic-workflow-runs.server';\nimport resourceCodemodeHowToDynamicWorkflow from '../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const serverPlugin = defineServerPlugin({\n name: '@agimon-ai/po-dynamic-workflow',\n providerOverrides: composeServerProviderOverrides(rootSession),\n injects: composeRootInjects({ session: [rootSession] }),\n global: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return [() => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]; },\n }),\n workspace: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n }),\n session: async (context) => {\n const scopeSession = await context.scopeRoot('session', rootSession, context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [at(resourceCodemodeHowToDynamicWorkflow, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default serverPlugin;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.cjs","names":["require","createRequire","AsyncLocalStorage","defineRoot","PO_TEAM_INLINE_RUN_EVENT","PO_CODEMODE_SERVICE","readPoCodemode","defineChannel","defineResource","packageResourcePath","readPackageResource","defineServerPlugin","composeServerProviderOverrides","rootSession","composeRootInjects","channelDynamicWorkflowRuns","composeRootHooks","resourceCodemodeHowToDynamicWorkflow"],"sources":["../../src/constants/dynamicWorkflow.ts","../../src/constants/declarations.ts","../../src/services/workflowTracker/index.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/services/workflowChannel/index.ts","../../src/extensions/(backend)/channel/dynamic-workflow-runs.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server.ts","../../generated/server.ts"],"sourcesContent":["export const DYNAMIC_WORKFLOW_CHANNEL = 'dynamic_workflow_runs';\n","export const dynamicWorkflowDeclarations = `\ninterface WorkflowSchema<T> {\n readonly _output: T;\n parse(value: unknown): T;\n optional(): WorkflowSchema<T | undefined>;\n nullable(): WorkflowSchema<T | null>;\n default(value: T): WorkflowSchema<T>;\n array(): WorkflowSchema<T[]>;\n describe(text: string): WorkflowSchema<T>;\n min(value: number): WorkflowSchema<T>;\n max(value: number): WorkflowSchema<T>;\n int(): WorkflowSchema<T>;\n positive(): WorkflowSchema<T>;\n nonnegative(): WorkflowSchema<T>;\n trim(): WorkflowSchema<T>;\n}\ntype WorkflowSchemaOutput<S> = S extends WorkflowSchema<infer T> ? T : never;\ntype WorkflowObject<S extends Record<string, WorkflowSchema<unknown>>> =\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? never : K]: WorkflowSchemaOutput<S[K]> } &\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? K : never]?: WorkflowSchemaOutput<S[K]> };\ninterface WorkflowZod {\n string(): WorkflowSchema<string>;\n number(): WorkflowSchema<number>;\n boolean(): WorkflowSchema<boolean>;\n null(): WorkflowSchema<null>;\n unknown(): WorkflowSchema<unknown>;\n any(): WorkflowSchema<unknown>;\n literal<T extends string | number | boolean | null>(value: T): WorkflowSchema<T>;\n enum<T extends string>(values: readonly [T, ...T[]]): WorkflowSchema<T>;\n object<S extends Record<string, WorkflowSchema<unknown>>>(shape: S): WorkflowSchema<WorkflowObject<S>>;\n array<T>(item: WorkflowSchema<T>): WorkflowSchema<T[]>;\n record<T>(item: WorkflowSchema<T>): WorkflowSchema<Record<string,T>>;\n union<S extends readonly [WorkflowSchema<unknown>, WorkflowSchema<unknown>, ...WorkflowSchema<unknown>[]]>(schemas: S): WorkflowSchema<WorkflowSchemaOutput<S[number]>>;\n}\ninterface WorkflowExecute<I> {\n inputData: I;\n runId: string;\n abortSignal: AbortSignal;\n getInitData(): unknown;\n}\ninterface TrackedStep<I = unknown, O = unknown, Id extends string = string> {\n readonly id: Id;\n readonly __input?: I;\n readonly __output?: O;\n}\ninterface TrackedRun<I, O> {\n readonly runId: string;\n start(options: { inputData: I }): Promise<{ status: string; result?: O; error?: unknown }>;\n cancel(): Promise<void>;\n}\ninterface TrackedWorkflow<I, O, Current = I> extends TrackedStep<I,O> {\n then<T>(step: TrackedStep<Current,T>): TrackedWorkflow<I,O,T>;\n parallel<T extends readonly TrackedStep<Current,unknown>[]>(steps: T): TrackedWorkflow<I,O,Record<T[number]['id'],T[number] extends TrackedStep<Current,infer Out> ? Out : never>>;\n branch(choices: [((params: WorkflowExecute<Current>) => boolean | Promise<boolean>), TrackedStep<Current,unknown>][]): TrackedWorkflow<I,O,Record<string,unknown>>;\n foreach<T, U, C>(item: TrackedWorkflow<T,U,C>, options: { concurrency: number }): TrackedWorkflow<I,O,U[]>;\n commit(): TrackedWorkflow<I,O,Current>;\n createRun(): Promise<TrackedRun<I,O>>;\n}\ndeclare const dynamicWorkflow: {\n createStep<I,O,Id extends string>(options: { id: Id; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O>; execute: (params: WorkflowExecute<I>) => O | Promise<O> }): TrackedStep<I,O,Id>;\n createWorkflow<I,O>(options: { id: string; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O> }): TrackedWorkflow<I,O>;\n /** Zod 3.25.76. Common constructors are declared here; runtime supplies the real z object. */\n z: WorkflowZod;\n};`;\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport { createRequire } from 'node:module';\n\nimport type { PoCodemodeRun } from '@agimon-ai/po-core/codemode';\nimport type * as Zod from 'zod';\n\nimport { dynamicWorkflowDeclarations } from '../../constants/declarations';\nimport type {\n DynamicWorkflowGroup,\n DynamicWorkflowItem,\n DynamicWorkflowPhase,\n DynamicWorkflowRun,\n DynamicWorkflowShape,\n DynamicWorkflowSnapshot,\n DynamicWorkflowStatus,\n} from '../../types/dynamicWorkflow';\nimport type { WorkflowTracker, WorkflowTrackerOptions } from './type';\n\ninterface RawStep {\n id: string;\n execute: (params: Record<string, unknown>) => Promise<unknown>;\n}\ninterface RawRun {\n runId: string;\n start: (options: Record<string, unknown>) => Promise<Record<string, unknown>>;\n cancel: () => Promise<unknown>;\n}\ninterface RawWorkflow extends RawStep {\n then(step: RawStep): RawWorkflow;\n parallel(steps: RawStep[]): RawWorkflow;\n branch(steps: [(params: Record<string, unknown>) => Promise<boolean>, RawStep][]): RawWorkflow;\n foreach(step: RawWorkflow, options: { concurrency: (params: { inputData: unknown }) => number }): RawWorkflow;\n commit(): RawWorkflow;\n createRun(options?: Record<string, unknown>): Promise<RawRun>;\n}\ninterface Factories {\n createStep(options: Record<string, unknown>): RawStep;\n createWorkflow(options: Record<string, unknown>): RawWorkflow;\n z: typeof Zod.z;\n}\ninterface Definition {\n raw: RawStep;\n shape: DynamicWorkflowShape;\n workflow?: {\n raw: RawWorkflow;\n committed: boolean;\n foreach: Map<string, DynamicWorkflowShape>;\n nested: Map<string, DynamicWorkflowShape>;\n };\n}\ninterface Execution {\n root: DynamicWorkflowRun;\n definition: Definition;\n item: DynamicWorkflowItem;\n boundaryErrors: string[];\n shape: DynamicWorkflowShape;\n}\ninterface PhaseOwner {\n execution: Execution;\n phase: DynamicWorkflowPhase;\n}\n\nconst object = (value: unknown, name: string): Record<string, unknown> => {\n if (value === null || typeof value !== 'object' || Array.isArray(value))\n throw new Error(`${name} must be an object.`);\n return value as Record<string, unknown>;\n};\nconst options = (value: unknown, keys: string[], name: string): Record<string, unknown> => {\n const result = object(value, name);\n for (const key of Object.keys(result))\n if (!keys.includes(key)) throw new Error(`${name}.${key} is not supported by tracked workflows.`);\n return result;\n};\nconst label = (value: unknown): string => {\n if (typeof value !== 'string' || !value.trim() || value.length > 160)\n throw new Error('Workflow and step ids must be non-empty strings of at most 160 characters.');\n return value;\n};\nconst callbackParameters = (params: Record<string, unknown>): Record<string, unknown> => ({\n inputData: params.inputData,\n runId: params.runId,\n abortSignal: params.abortSignal,\n ...(typeof params.getInitData === 'function' ? { getInitData: params.getInitData } : {}),\n});\n/** Reject the host wrapper on abort; late guest settlement cannot write tracked state. */\nconst callbackWithAbort = (callback: () => unknown, signal: AbortSignal): Promise<unknown> => {\n signal.throwIfAborted();\n return new Promise((resolve, reject) => {\n const abort = () => {\n signal.removeEventListener('abort', abort);\n reject(signal.reason);\n };\n signal.addEventListener('abort', abort, { once: true });\n Promise.resolve()\n .then(() => {\n signal.throwIfAborted();\n return callback();\n })\n .then(\n (value) => {\n signal.removeEventListener('abort', abort);\n resolve(value);\n },\n (error) => {\n signal.removeEventListener('abort', abort);\n reject(error);\n },\n );\n });\n};\nconst callbackSignal = (binding: AbortSignal, params: Record<string, unknown>): AbortSignal =>\n params.abortSignal instanceof AbortSignal ? AbortSignal.any([binding, params.abortSignal]) : binding;\nconst validateDefinition = (def: Record<string, unknown>) => {\n if (def.description !== undefined && (typeof def.description !== 'string' || def.description.length > 500))\n throw new Error('description must be a string of at most 500 characters.');\n for (const field of ['inputSchema', 'outputSchema']) {\n const schema = object(def[field], field);\n if (typeof schema.safeParse !== 'function') throw new Error(`${field} must be a Zod schema.`);\n }\n};\nconst errorText = (error: unknown): string =>\n (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string'\n ? error.message\n : String(error)\n ).slice(0, 500);\nconst status = (value: unknown): DynamicWorkflowStatus => {\n if (value === 'success') return 'completed';\n if (value === 'canceled' || value === 'cancelled') return 'stopped';\n if (value === 'failed') return 'failed';\n throw new Error(`Unsupported Mastra result status: ${String(value)}.`);\n};\nconst counts = (): Record<DynamicWorkflowStatus, number> => ({\n pending: 0,\n running: 0,\n completed: 0,\n failed: 0,\n stopped: 0,\n skipped: 0,\n});\n/** Mastra executes. This observer only decorates constructors and lifecycle calls. */\nexport async function createWorkflowTracker(config: WorkflowTrackerOptions): Promise<WorkflowTracker> {\n let factories: Factories | undefined;\n const loadFactories = (): Factories => {\n if (!factories) {\n const require = createRequire(import.meta.url);\n const workflow = require('@mastra/core/workflows') as Pick<Factories, 'createStep' | 'createWorkflow'>;\n const schemas = require('zod') as Pick<Factories, 'z'>;\n factories = { ...workflow, z: schemas.z };\n }\n return factories;\n };\n const now = config.now ?? Date.now;\n const roots: DynamicWorkflowRun[] = [];\n const context = new AsyncLocalStorage<PhaseOwner>();\n const runContext = new AsyncLocalStorage<Execution>();\n const children = new Map<string, PhaseOwner>();\n const boundaryFailures = new WeakSet<DynamicWorkflowPhase>();\n const intentionalStops = new WeakSet<DynamicWorkflowPhase>();\n let revision = 0;\n let serial = 0;\n let disposed = false;\n const key = () => `workflow-${++serial}`;\n const origins = new WeakMap<DynamicWorkflowShape, string>();\n const origin = (shape: DynamicWorkflowShape) => origins.get(shape) ?? shape.key;\n const occurrence = (shape: DynamicWorkflowShape): DynamicWorkflowShape => {\n const result = { ...shape, key: key(), children: shape.children.map(occurrence) };\n origins.set(result, origin(shape));\n return result;\n };\n const findShape = (shape: DynamicWorkflowShape, source: DynamicWorkflowShape): DynamicWorkflowShape | undefined => {\n if (origin(shape) === origin(source)) return shape;\n for (const child of shape.children) {\n const found = findShape(child, source);\n if (found) return found;\n }\n return undefined;\n };\n const directSteps = (shape: DynamicWorkflowShape): DynamicWorkflowShape[] => {\n const result: DynamicWorkflowShape[] = [];\n const visit = (node: DynamicWorkflowShape): void => {\n if (node.kind === 'step') result.push(node);\n else if (node.kind === 'parallel' || node.kind === 'branch') node.children.forEach(visit);\n };\n shape.children.forEach(visit);\n return result;\n };\n const snapshot = (): DynamicWorkflowSnapshot =>\n structuredClone({\n version: 1,\n revision,\n sessionId: config.sessionId,\n runs: roots.map((run) => ({\n ...run,\n groups: run.groups.map((group) => ({\n ...group,\n counts: group.items.reduce((sum, item) => {\n sum[item.status]++;\n return sum;\n }, counts()),\n truncated: group.items.length > 1000,\n items: group.items.slice(0, 1000),\n })),\n })),\n });\n const publish = () => {\n revision++;\n // Observers cannot change workflow execution or strand a running item.\n try {\n config.publish?.(snapshot());\n } catch {\n /* Publication is best effort. */\n }\n };\n const derive = (phase: DynamicWorkflowPhase) => {\n phase.status =\n boundaryFailures.has(phase) || phase.agents.some((agent) => agent.status === 'failed')\n ? 'failed'\n : intentionalStops.has(phase)\n ? 'stopped'\n : phase.executionStatus;\n };\n const summarize = (item: DynamicWorkflowItem) => {\n item.status = item.phases.some((phase) => phase.status === 'failed')\n ? 'failed'\n : item.phases.some((phase) => phase.status === 'running')\n ? 'running'\n : item.phases.some((phase) => phase.status === 'stopped')\n ? 'stopped'\n : item.phases.every((phase) => phase.status === 'skipped')\n ? 'skipped'\n : item.phases.some((phase) => phase.status === 'pending')\n ? 'pending'\n : 'completed';\n };\n const update = (owner: PhaseOwner) => {\n derive(owner.phase);\n summarize(owner.execution.item);\n publish();\n };\n const terminal = (execution: Execution, outcome: DynamicWorkflowStatus, root: boolean, engineOutcome = outcome) => {\n const relevant = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step') relevant.add(shape.key);\n else shape.children.forEach(visit);\n };\n visit(execution.shape);\n for (const phase of execution.item.phases) {\n if (!root && !relevant.has(phase.key)) continue;\n if (phase.executionStatus === 'pending') phase.executionStatus = 'skipped';\n else if (phase.executionStatus === 'running') phase.executionStatus = outcome;\n derive(phase);\n }\n if (execution.item.phases.length) summarize(execution.item);\n else execution.item.status = outcome;\n if (\n execution.root.groups.some(\n (group) =>\n group.key.startsWith(`${execution.item.key}/`) && group.items.some((item) => item.status === 'failed'),\n )\n )\n execution.item.status = 'failed';\n if (root) {\n execution.root.executionStatus = engineOutcome;\n execution.root.status = execution.root.groups.some((group) =>\n group.items.some((item) => item.status === 'failed'),\n )\n ? 'failed'\n : outcome;\n execution.root.finishedAt = now();\n for (const group of execution.root.groups)\n for (const item of group.items) {\n if (item.status === 'pending') {\n item.status = 'skipped';\n for (const phase of item.phases)\n if (phase.executionStatus === 'pending') phase.status = phase.executionStatus = 'skipped';\n }\n }\n const completed = roots.filter((run) => run.executionStatus !== 'running');\n for (const run of completed.slice(0, Math.max(0, completed.length - 20))) {\n roots.splice(roots.indexOf(run), 1);\n for (const [id, owner] of children) if (owner.execution.root === run) children.delete(id);\n }\n }\n publish();\n };\n const reconcile = (execution: Execution, result: Record<string, unknown>) => {\n if (!result.steps || typeof result.steps !== 'object') return;\n const results = result.steps as Record<string, unknown>;\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') {\n // The contract captures the exact Mastra step id as label, not an inferred display name.\n const value = results[shape.label];\n if (!value || typeof value !== 'object') return;\n const detail = value as Record<string, unknown>;\n const phase = execution.item.phases.find((phase) => phase.key === shape.key);\n if (!phase || !['success', 'failed', 'canceled', 'cancelled', 'skipped'].includes(String(detail.status)))\n return;\n phase.executionStatus = detail.status === 'skipped' ? 'skipped' : status(detail.status);\n if (typeof detail.startedAt === 'number') phase.startedAt = detail.startedAt;\n if (typeof detail.endedAt === 'number') phase.finishedAt = detail.endedAt;\n if (detail.error) phase.error = errorText(detail.error);\n derive(phase);\n } else if (shape.kind === 'parallel' || shape.kind === 'branch') shape.children.forEach(visit);\n };\n // Nested workflows reconcile their own result, which can reuse parent run ids.\n execution.shape.children.forEach(visit);\n };\n const makeItem = (definition: Definition, index: number, shape = definition.shape): DynamicWorkflowItem => {\n const phases: DynamicWorkflowPhase[] = [];\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step')\n phases.push({ key: shape.key, label: shape.label, status: 'pending', executionStatus: 'pending', agents: [] });\n else shape.children.forEach(visit);\n };\n visit(shape);\n return { key: key(), index, label: `Item ${index + 1}`, status: 'pending', phases };\n };\n const activeCancels = new Set<() => Promise<unknown>>();\n const activeStarts = new Set<Promise<unknown>>();\n const bindings = new Set<AbortController>();\n return {\n snapshot,\n inlineRun(event) {\n if (event.sessionId !== config.sessionId) return;\n if (event.status === 'running') {\n if (disposed) return;\n const owner = context.getStore();\n if (!owner || owner.phase.executionStatus !== 'running' || owner.execution.root.executionStatus !== 'running')\n return;\n children.set(event.runId, owner);\n if (!owner.phase.agents.some((agent) => agent.runId === event.runId))\n owner.phase.agents.push({ runId: event.runId, status: event.status });\n update(owner);\n } else {\n const owner = children.get(event.runId);\n const agent = owner?.phase.agents.find((agent) => agent.runId === event.runId);\n if (owner && agent) {\n agent.status = event.status;\n update(owner);\n }\n }\n },\n namespace(lifetime) {\n return {\n name: 'dynamicWorkflow',\n summary:\n 'Tracked Mastra workflows: then, parallel, branch and bounded foreach, with live child-agent transcripts in Activity.',\n declarations: dynamicWorkflowDeclarations,\n bind(run: PoCodemodeRun) {\n if (run.sessionId !== config.sessionId) throw new Error('dynamicWorkflow belongs to another session.');\n const binding = new AbortController();\n bindings.add(binding);\n const signal = AbortSignal.any([lifetime, run.signal, binding.signal]);\n let closed = false;\n const assert = () => {\n signal.throwIfAborted();\n if (closed || disposed) throw new Error('dynamicWorkflow execution is disposed.');\n };\n const definitions = new WeakMap<object, Definition>();\n const pendingCancels = new Set<() => Promise<unknown>>();\n const pendingStarts = new Set<Promise<unknown>>();\n const stop = () => {\n closed = true;\n for (const cancel of pendingCancels) void cancel().catch(() => undefined);\n };\n signal.addEventListener('abort', stop, { once: true });\n run.onDispose(async () => {\n closed = true;\n binding.abort(new Error('dynamicWorkflow execution is disposed.'));\n bindings.delete(binding);\n signal.removeEventListener('abort', stop);\n await Promise.allSettled([...pendingCancels].map((cancel) => cancel()));\n await Promise.allSettled(pendingStarts);\n });\n const definitionFor = (value: unknown): Definition => {\n const definition = definitions.get(object(value, 'Tracked step'));\n if (!definition)\n throw new Error('Only steps and workflows created by this dynamicWorkflow execution are supported.');\n if (definition.workflow && !definition.workflow.committed)\n throw new Error('Commit nested workflows before composing them.');\n return definition;\n };\n const createGroup = (\n execution: Execution,\n shape: DynamicWorkflowShape,\n total: number,\n concurrency: number,\n ): DynamicWorkflowGroup => {\n const groupKey = `${execution.item.key}/${shape.key}`;\n let group = execution.root.groups.find((group) => group.key === groupKey);\n if (!group) {\n group = {\n key: groupKey,\n label: shape.label,\n total,\n counts: counts(),\n truncated: false,\n concurrency,\n items: [],\n };\n execution.root.groups.push(group);\n }\n return group;\n };\n const members: Record<string, unknown> = {\n get z() {\n assert();\n return loadFactories().z;\n },\n createStep(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema', 'execute'], 'createStep');\n const id = label(def.id);\n validateDefinition(def);\n if (typeof def.execute !== 'function') throw new Error('createStep.execute must be a function.');\n const callback = def.execute as (params: Record<string, unknown>) => unknown;\n const shape: DynamicWorkflowShape = { key: key(), label: id, kind: 'step', children: [] };\n const raw = loadFactories().createStep({\n ...def,\n id,\n execute: async (params: Record<string, unknown>) => {\n assert();\n const execution = runContext.getStore();\n const position =\n execution && directSteps(execution.shape).find((candidate) => origin(candidate) === shape.key);\n const phase = execution?.item.phases.find((phase) => phase.key === position?.key);\n if (!execution || !phase) throw new Error('Tracked step has no execution context.');\n phase.executionStatus = phase.status = 'running';\n phase.startedAt = now();\n execution.item.status = 'running';\n publish();\n const owner = { execution, phase };\n const operationSignal = callbackSignal(signal, params);\n return context.run(owner, async () => {\n try {\n const output = await callbackWithAbort(\n () => callback(callbackParameters(params)),\n operationSignal,\n );\n operationSignal.throwIfAborted();\n assert();\n if (output === undefined)\n throw new Error(\n 'Tracked callback returned undefined. Return null for empty output, or inspect exec diagnostics for a guest callback error.',\n );\n phase.executionStatus = 'completed';\n return output;\n } catch (error) {\n if (operationSignal.aborted || closed || disposed) intentionalStops.add(phase);\n phase.executionStatus = 'failed';\n phase.error = errorText(error);\n throw error;\n } finally {\n phase.finishedAt = now();\n update(owner);\n }\n });\n },\n });\n const handle = Object.freeze({ id });\n definitions.set(handle, { raw, shape });\n return handle;\n },\n createWorkflow(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema'], 'createWorkflow');\n const id = label(def.id);\n validateDefinition(def);\n const raw = loadFactories().createWorkflow({ ...def, id });\n const definition: Definition = {\n raw,\n shape: { key: key(), kind: 'sequence', label: id, children: [] },\n workflow: { raw, committed: false, foreach: new Map(), nested: new Map() },\n };\n const workflow = definition.workflow!;\n const rawCreateRun = raw.createRun.bind(raw);\n raw.createRun = async (createOptions: Record<string, unknown> = {}) => {\n assert();\n const rawRun = await rawCreateRun(createOptions);\n const parent = createOptions.parentWorkflow as\n | { runId: string; stepId: string; foreachIndex?: number }\n | undefined;\n let execution: Execution | undefined;\n if (parent) {\n const ancestor = runContext.getStore();\n if (!ancestor) throw new Error('Nested workflow has no tracked parent.');\n const authoredForeach = ancestor.definition.workflow?.foreach.get(parent.stepId);\n const foreachShape = authoredForeach && findShape(ancestor.shape, authoredForeach);\n if (foreachShape) {\n if (!Number.isSafeInteger(parent.foreachIndex) || parent.foreachIndex! < 0)\n throw new Error('Nested foreach did not provide a stable item index.');\n const group = ancestor.root.groups.find(\n (group) => group.key === `${ancestor.item.key}/${foreachShape.key}`,\n );\n if (!group) throw new Error('Nested foreach has no observed group.');\n const item = group.items[parent.foreachIndex!];\n if (!item) throw new Error('Nested foreach item is outside its observed input.');\n execution = {\n root: ancestor.root,\n item,\n definition,\n boundaryErrors: ancestor.boundaryErrors,\n shape: foreachShape.children[0]!,\n };\n } else {\n const authored = ancestor.definition.workflow?.nested.get(parent.stepId);\n const position = authored && findShape(ancestor.shape, authored);\n if (!position) throw new Error('Nested workflow has no tracked graph position.');\n execution = { ...ancestor, definition, shape: position };\n }\n }\n const start = rawRun.start.bind(rawRun);\n const cancel = rawRun.cancel.bind(rawRun);\n let started = false;\n let cancelled = false;\n const cancelTracked = async () => {\n cancelled = true;\n return await cancel();\n };\n rawRun.cancel = cancelTracked;\n const executeStart = async (startOptions: Record<string, unknown>) => {\n assert();\n if (started) throw new Error('Tracked runs can only start once.');\n started = true;\n if (!parent) {\n const item = makeItem(definition, 0);\n item.label = id;\n const root: DynamicWorkflowRun = {\n key: rawRun.runId,\n workflowId: id,\n label: id,\n status: 'running',\n executionStatus: 'running',\n startedAt: now(),\n shape: structuredClone(definition.shape),\n groups: [{ key: key(), label: id, total: 1, counts: counts(), truncated: false, items: [item] }],\n };\n // Foreach-only roots do not need an empty synthetic row.\n if (!item.phases.length) root.groups = [];\n roots.push(root);\n execution = { root, item, definition, boundaryErrors: [], shape: definition.shape };\n publish();\n }\n if (!execution) throw new Error('Tracked run has no execution context.');\n execution.item.status = 'running';\n pendingCancels.add(cancelTracked);\n activeCancels.add(cancelTracked);\n let reported = false;\n try {\n const result = await runContext.run(execution, () => start(startOptions));\n const outcome =\n cancelled || signal.aborted || closed || disposed ? 'stopped' : status(result.status);\n if (result.error) execution.root.error = errorText(result.error);\n reconcile(execution, result);\n terminal(execution, outcome, !parent, status(result.status));\n reported = true;\n if (execution.boundaryErrors.length) throw new Error(execution.boundaryErrors[0]);\n return result;\n } catch (error) {\n if (!reported) {\n execution.root.error = errorText(error);\n terminal(\n execution,\n cancelled || signal.aborted || closed || disposed ? 'stopped' : 'failed',\n !parent,\n );\n }\n throw error;\n } finally {\n pendingCancels.delete(cancelTracked);\n activeCancels.delete(cancelTracked);\n }\n };\n rawRun.start = (startOptions) => {\n const started = executeStart(startOptions);\n pendingStarts.add(started);\n activeStarts.add(started);\n const settled = () => {\n pendingStarts.delete(started);\n activeStarts.delete(started);\n };\n void started.then(settled, settled);\n return started;\n };\n return rawRun;\n };\n const ids = new Set<string>();\n const claim = (targets: Definition[]) => {\n const next = new Set<string>();\n for (const target of targets) {\n if (ids.has(target.raw.id) || next.has(target.raw.id) || target.raw.id === id)\n throw new Error('Use distinct step ids within a tracked workflow.');\n next.add(target.raw.id);\n }\n for (const value of next) ids.add(value);\n for (const target of targets) if (target.workflow) workflow.nested.set(target.raw.id, target.shape);\n };\n const mutable = () => {\n assert();\n if (workflow.committed) throw new Error('Tracked workflow is already committed.');\n };\n const add = (kind: 'parallel' | 'branch', targets: Definition[]) => {\n definition.shape.children.push({\n key: key(),\n label: kind,\n kind,\n children: targets.map((target) => occurrence(target.shape)),\n });\n };\n const handle = Object.freeze({\n id,\n // Mastra intentionally names its fluent composition method then, not a Promise continuation.\n // oxlint-disable-next-line unicorn/no-thenable\n then(value: unknown) {\n mutable();\n const target = definitionFor(value);\n claim([target]);\n raw.then(target.raw);\n definition.shape.children.push(occurrence(target.shape));\n return handle;\n },\n parallel(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('parallel requires a non-empty array of tracked steps.');\n const targets = values.map(definitionFor);\n claim(targets);\n raw.parallel(targets.map((target) => target.raw));\n add('parallel', targets);\n return handle;\n },\n branch(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('branch requires predicate/step pairs.');\n const targets: Definition[] = [];\n const pairs = values.map(\n (pair: unknown): [(params: Record<string, unknown>) => Promise<boolean>, RawStep] => {\n if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== 'function')\n throw new Error('branch requires [predicate, tracked step] pairs.');\n const target = definitionFor(pair[1]);\n targets.push(target);\n const predicate = pair[0] as (params: Record<string, unknown>) => unknown;\n return [\n async (params) => {\n assert();\n const operationSignal = callbackSignal(signal, params);\n try {\n const answer = await callbackWithAbort(\n () => predicate(callbackParameters(params)),\n operationSignal,\n );\n if (typeof answer !== 'boolean')\n throw new Error(\n 'Tracked branch predicates must return a boolean. Inspect exec diagnostics if a guest callback failed.',\n );\n return answer;\n } catch (error) {\n if (operationSignal.aborted) throw error;\n const execution = runContext.getStore();\n if (execution) {\n const message = errorText(error);\n execution.boundaryErrors.push(message);\n execution.root.error = message;\n const leaves = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') leaves.add(shape.key);\n else shape.children.forEach(visit);\n };\n const position = findShape(execution.shape, target.shape);\n if (position) visit(position);\n for (const phase of execution.item.phases)\n if (leaves.has(phase.key)) {\n boundaryFailures.add(phase);\n phase.error = message;\n }\n }\n throw error;\n }\n },\n target.raw,\n ];\n },\n );\n claim(targets);\n raw.branch(pairs);\n add('branch', targets);\n return handle;\n },\n foreach(value: unknown, settings: unknown) {\n mutable();\n const target = definitionFor(value);\n if (!target.workflow)\n throw new Error('foreach requires a committed tracked item workflow, not a bare step.');\n const opts = options(settings, ['concurrency'], 'foreach');\n if (!Number.isSafeInteger(opts.concurrency) || Number(opts.concurrency) < 1)\n throw new Error('foreach.concurrency must be a positive integer.');\n const concurrency = Number(opts.concurrency);\n claim([target]);\n const shape: DynamicWorkflowShape = {\n key: key(),\n kind: 'foreach',\n label: target.shape.label,\n children: [occurrence(target.shape)],\n };\n raw.foreach(target.workflow.raw, {\n concurrency: ({ inputData }) => {\n assert();\n const execution = runContext.getStore();\n if (!execution || !Array.isArray(inputData))\n throw new Error('Tracked foreach requires array input and an active run.');\n const position = findShape(execution.shape, shape);\n if (!position) throw new Error('Foreach has no tracked graph position.');\n const group = createGroup(execution, position, inputData.length, concurrency);\n group.items = inputData.map((_, index) => makeItem(target, index, position.children[0]));\n publish();\n return concurrency;\n },\n });\n workflow.foreach.set(target.raw.id, shape);\n definition.shape.children.push(shape);\n return handle;\n },\n commit() {\n mutable();\n raw.commit();\n workflow.committed = true;\n return handle;\n },\n async createRun(value?: unknown) {\n assert();\n if (!workflow.committed) throw new Error('Commit the tracked workflow before creating a run.');\n if (value !== undefined && Object.keys(options(value, [], 'createRun')).length)\n throw new Error('createRun options are unsupported.');\n const live = await raw.createRun();\n return Object.freeze({\n runId: live.runId,\n async start(value: unknown) {\n assert();\n const opts = options(value, ['inputData'], 'start');\n return live.start(opts);\n },\n async cancel() {\n assert();\n await live.cancel();\n },\n });\n },\n });\n definitions.set(handle, definition);\n return handle;\n },\n };\n return members;\n },\n };\n },\n async dispose() {\n disposed = true;\n for (const binding of bindings) binding.abort(new Error('dynamicWorkflow session is disposed.'));\n bindings.clear();\n await Promise.allSettled([...activeCancels].map((cancel) => cancel()));\n await Promise.allSettled(activeStarts);\n children.clear();\n },\n };\n}\n","import { PO_CODEMODE_SERVICE, readPoCodemode } from '@agimon-ai/po-core/codemode';\nimport { PO_TEAM_INLINE_RUN_EVENT } from '@agimon-ai/po-core/delegation';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../../../constants/dynamicWorkflow';\nimport { createWorkflowTracker } from '../../../../services/workflowTracker';\n\nexport default defineRoot(async ({ context, agent, host, signal }: PoServerPluginContext) => {\n if (!agent) throw new Error('Dynamic workflow requires a headless session host.');\n const runtime = await createWorkflowTracker({\n sessionId: agent.context.sessionId,\n publish: (snapshot) =>\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, snapshot),\n });\n const stopEvents = context.on(PO_TEAM_INLINE_RUN_EVENT, (event) => runtime.inlineRun(event));\n context.inject([PO_CODEMODE_SERVICE], (scoped) => {\n const codemode = readPoCodemode(scoped);\n const registration = codemode?.register('@agimon-ai/po-dynamic-workflow', runtime.namespace(signal));\n return () => registration?.dispose();\n });\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, runtime.snapshot());\n return {\n value: runtime,\n onDispose: async () => {\n try {\n await runtime.dispose();\n } finally {\n stopEvents();\n }\n },\n };\n});\n","import type { PoHubChannel, PoHubSessionScope } from '@agimon-ai/po-core/hubChannel';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../constants/dynamicWorkflow';\nimport type { DynamicWorkflowSnapshot } from '../../types/dynamicWorkflow';\n\nexport function createWorkflowChannel(): PoHubChannel {\n return {\n frameType: DYNAMIC_WORKFLOW_CHANNEL,\n start(host) {\n const latest = new Map<string, DynamicWorkflowSnapshot>();\n const subscriptions = new Map<string, () => void>();\n const scopes = new Map<string, PoHubSessionScope>();\n return {\n payloadFor: (scope) => latest.get(scope.sessionId),\n sessionAdded(scope) {\n subscriptions.get(scope.sessionId)?.();\n scopes.set(scope.sessionId, scope);\n latest.delete(scope.sessionId);\n subscriptions.set(\n scope.sessionId,\n host.directEvents.subscribe(\n DYNAMIC_WORKFLOW_CHANNEL,\n scope.sessionId,\n (value) => {\n if (scopes.get(scope.sessionId) !== scope || !value || typeof value !== 'object') return;\n const snapshot = value as DynamicWorkflowSnapshot;\n if (snapshot.version !== 1 || snapshot.sessionId !== scope.sessionId || !Array.isArray(snapshot.runs))\n return;\n const detached = structuredClone(snapshot);\n latest.set(scope.sessionId, detached);\n host.publish(scope.sessionId, detached);\n },\n { replayLatest: true },\n ),\n );\n },\n sessionRemoved(id) {\n subscriptions.get(id)?.();\n subscriptions.delete(id);\n scopes.delete(id);\n latest.delete(id);\n },\n close() {\n for (const unsubscribe of subscriptions.values()) unsubscribe();\n subscriptions.clear();\n scopes.clear();\n latest.clear();\n },\n };\n },\n };\n}\n","import { defineChannel } from '@agimon-ai/po-core/extensionFile';\n\nimport { createWorkflowChannel } from '../../../services/workflowChannel';\n\nexport default defineChannel(createWorkflowChannel);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineResource({\n name: 'codemode-how-to-dynamic-workflow',\n description:\n 'Let the person follow a long multi-phase or fan-out job live, with each child agent transcript in Activity. Use when a script runs many steps or subagents that someone should be able to watch.',\n kind: 'skill' as const,\n pinned: true,\n path: packageResourcePath(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverPlugin';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverPlugin';\nimport { composeRootHooks, composeRootInjects } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport channelDynamicWorkflowRuns from '../src/extensions/(backend)/channel/dynamic-workflow-runs.server';\nimport resourceCodemodeHowToDynamicWorkflow from '../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const serverPlugin = defineServerPlugin({\n name: '@agimon-ai/po-dynamic-workflow',\n providerOverrides: composeServerProviderOverrides(rootSession),\n injects: composeRootInjects({ session: [rootSession] }),\n global: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return [() => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]; },\n }),\n workspace: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n }),\n session: async (context) => {\n const scopeSession = await context.scopeRoot('session', rootSession, context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [at(resourceCodemodeHowToDynamicWorkflow, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default serverPlugin;\n"],"mappings":"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"}
|
|
@@ -829,7 +829,7 @@ var dynamic_workflow_runs_server_default = defineChannel(createWorkflowChannel);
|
|
|
829
829
|
//#region src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server.ts
|
|
830
830
|
var codemode_how_to_dynamic_workflow_server_default = defineResource({
|
|
831
831
|
name: "codemode-how-to-dynamic-workflow",
|
|
832
|
-
description: "
|
|
832
|
+
description: "Let the person follow a long multi-phase or fan-out job live, with each child agent transcript in Activity. Use when a script runs many steps or subagents that someone should be able to watch.",
|
|
833
833
|
kind: "skill",
|
|
834
834
|
pinned: true,
|
|
835
835
|
path: packageResourcePath(import.meta.url, "src/prompts/codemode-how-to-dynamic-workflow/SKILL.md"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.mjs","names":["rootSession","channelDynamicWorkflowRuns","resourceCodemodeHowToDynamicWorkflow"],"sources":["../../src/constants/dynamicWorkflow.ts","../../src/constants/declarations.ts","../../src/services/workflowTracker/index.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/services/workflowChannel/index.ts","../../src/extensions/(backend)/channel/dynamic-workflow-runs.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server.ts","../../generated/server.ts"],"sourcesContent":["export const DYNAMIC_WORKFLOW_CHANNEL = 'dynamic_workflow_runs';\n","export const dynamicWorkflowDeclarations = `\ninterface WorkflowSchema<T> {\n readonly _output: T;\n parse(value: unknown): T;\n optional(): WorkflowSchema<T | undefined>;\n nullable(): WorkflowSchema<T | null>;\n default(value: T): WorkflowSchema<T>;\n array(): WorkflowSchema<T[]>;\n describe(text: string): WorkflowSchema<T>;\n min(value: number): WorkflowSchema<T>;\n max(value: number): WorkflowSchema<T>;\n int(): WorkflowSchema<T>;\n positive(): WorkflowSchema<T>;\n nonnegative(): WorkflowSchema<T>;\n trim(): WorkflowSchema<T>;\n}\ntype WorkflowSchemaOutput<S> = S extends WorkflowSchema<infer T> ? T : never;\ntype WorkflowObject<S extends Record<string, WorkflowSchema<unknown>>> =\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? never : K]: WorkflowSchemaOutput<S[K]> } &\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? K : never]?: WorkflowSchemaOutput<S[K]> };\ninterface WorkflowZod {\n string(): WorkflowSchema<string>;\n number(): WorkflowSchema<number>;\n boolean(): WorkflowSchema<boolean>;\n null(): WorkflowSchema<null>;\n unknown(): WorkflowSchema<unknown>;\n any(): WorkflowSchema<unknown>;\n literal<T extends string | number | boolean | null>(value: T): WorkflowSchema<T>;\n enum<T extends string>(values: readonly [T, ...T[]]): WorkflowSchema<T>;\n object<S extends Record<string, WorkflowSchema<unknown>>>(shape: S): WorkflowSchema<WorkflowObject<S>>;\n array<T>(item: WorkflowSchema<T>): WorkflowSchema<T[]>;\n record<T>(item: WorkflowSchema<T>): WorkflowSchema<Record<string,T>>;\n union<S extends readonly [WorkflowSchema<unknown>, WorkflowSchema<unknown>, ...WorkflowSchema<unknown>[]]>(schemas: S): WorkflowSchema<WorkflowSchemaOutput<S[number]>>;\n}\ninterface WorkflowExecute<I> {\n inputData: I;\n runId: string;\n abortSignal: AbortSignal;\n getInitData(): unknown;\n}\ninterface TrackedStep<I = unknown, O = unknown, Id extends string = string> {\n readonly id: Id;\n readonly __input?: I;\n readonly __output?: O;\n}\ninterface TrackedRun<I, O> {\n readonly runId: string;\n start(options: { inputData: I }): Promise<{ status: string; result?: O; error?: unknown }>;\n cancel(): Promise<void>;\n}\ninterface TrackedWorkflow<I, O, Current = I> extends TrackedStep<I,O> {\n then<T>(step: TrackedStep<Current,T>): TrackedWorkflow<I,O,T>;\n parallel<T extends readonly TrackedStep<Current,unknown>[]>(steps: T): TrackedWorkflow<I,O,Record<T[number]['id'],T[number] extends TrackedStep<Current,infer Out> ? Out : never>>;\n branch(choices: [((params: WorkflowExecute<Current>) => boolean | Promise<boolean>), TrackedStep<Current,unknown>][]): TrackedWorkflow<I,O,Record<string,unknown>>;\n foreach<T, U, C>(item: TrackedWorkflow<T,U,C>, options: { concurrency: number }): TrackedWorkflow<I,O,U[]>;\n commit(): TrackedWorkflow<I,O,Current>;\n createRun(): Promise<TrackedRun<I,O>>;\n}\ndeclare const dynamicWorkflow: {\n createStep<I,O,Id extends string>(options: { id: Id; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O>; execute: (params: WorkflowExecute<I>) => O | Promise<O> }): TrackedStep<I,O,Id>;\n createWorkflow<I,O>(options: { id: string; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O> }): TrackedWorkflow<I,O>;\n /** Zod 3.25.76. Common constructors are declared here; runtime supplies the real z object. */\n z: WorkflowZod;\n};`;\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport { createRequire } from 'node:module';\n\nimport type { PoCodemodeRun } from '@agimon-ai/po-core/codemode';\nimport type * as Zod from 'zod';\n\nimport { dynamicWorkflowDeclarations } from '../../constants/declarations';\nimport type {\n DynamicWorkflowGroup,\n DynamicWorkflowItem,\n DynamicWorkflowPhase,\n DynamicWorkflowRun,\n DynamicWorkflowShape,\n DynamicWorkflowSnapshot,\n DynamicWorkflowStatus,\n} from '../../types/dynamicWorkflow';\nimport type { WorkflowTracker, WorkflowTrackerOptions } from './type';\n\ninterface RawStep {\n id: string;\n execute: (params: Record<string, unknown>) => Promise<unknown>;\n}\ninterface RawRun {\n runId: string;\n start: (options: Record<string, unknown>) => Promise<Record<string, unknown>>;\n cancel: () => Promise<unknown>;\n}\ninterface RawWorkflow extends RawStep {\n then(step: RawStep): RawWorkflow;\n parallel(steps: RawStep[]): RawWorkflow;\n branch(steps: [(params: Record<string, unknown>) => Promise<boolean>, RawStep][]): RawWorkflow;\n foreach(step: RawWorkflow, options: { concurrency: (params: { inputData: unknown }) => number }): RawWorkflow;\n commit(): RawWorkflow;\n createRun(options?: Record<string, unknown>): Promise<RawRun>;\n}\ninterface Factories {\n createStep(options: Record<string, unknown>): RawStep;\n createWorkflow(options: Record<string, unknown>): RawWorkflow;\n z: typeof Zod.z;\n}\ninterface Definition {\n raw: RawStep;\n shape: DynamicWorkflowShape;\n workflow?: {\n raw: RawWorkflow;\n committed: boolean;\n foreach: Map<string, DynamicWorkflowShape>;\n nested: Map<string, DynamicWorkflowShape>;\n };\n}\ninterface Execution {\n root: DynamicWorkflowRun;\n definition: Definition;\n item: DynamicWorkflowItem;\n boundaryErrors: string[];\n shape: DynamicWorkflowShape;\n}\ninterface PhaseOwner {\n execution: Execution;\n phase: DynamicWorkflowPhase;\n}\n\nconst object = (value: unknown, name: string): Record<string, unknown> => {\n if (value === null || typeof value !== 'object' || Array.isArray(value))\n throw new Error(`${name} must be an object.`);\n return value as Record<string, unknown>;\n};\nconst options = (value: unknown, keys: string[], name: string): Record<string, unknown> => {\n const result = object(value, name);\n for (const key of Object.keys(result))\n if (!keys.includes(key)) throw new Error(`${name}.${key} is not supported by tracked workflows.`);\n return result;\n};\nconst label = (value: unknown): string => {\n if (typeof value !== 'string' || !value.trim() || value.length > 160)\n throw new Error('Workflow and step ids must be non-empty strings of at most 160 characters.');\n return value;\n};\nconst callbackParameters = (params: Record<string, unknown>): Record<string, unknown> => ({\n inputData: params.inputData,\n runId: params.runId,\n abortSignal: params.abortSignal,\n ...(typeof params.getInitData === 'function' ? { getInitData: params.getInitData } : {}),\n});\n/** Reject the host wrapper on abort; late guest settlement cannot write tracked state. */\nconst callbackWithAbort = (callback: () => unknown, signal: AbortSignal): Promise<unknown> => {\n signal.throwIfAborted();\n return new Promise((resolve, reject) => {\n const abort = () => {\n signal.removeEventListener('abort', abort);\n reject(signal.reason);\n };\n signal.addEventListener('abort', abort, { once: true });\n Promise.resolve()\n .then(() => {\n signal.throwIfAborted();\n return callback();\n })\n .then(\n (value) => {\n signal.removeEventListener('abort', abort);\n resolve(value);\n },\n (error) => {\n signal.removeEventListener('abort', abort);\n reject(error);\n },\n );\n });\n};\nconst callbackSignal = (binding: AbortSignal, params: Record<string, unknown>): AbortSignal =>\n params.abortSignal instanceof AbortSignal ? AbortSignal.any([binding, params.abortSignal]) : binding;\nconst validateDefinition = (def: Record<string, unknown>) => {\n if (def.description !== undefined && (typeof def.description !== 'string' || def.description.length > 500))\n throw new Error('description must be a string of at most 500 characters.');\n for (const field of ['inputSchema', 'outputSchema']) {\n const schema = object(def[field], field);\n if (typeof schema.safeParse !== 'function') throw new Error(`${field} must be a Zod schema.`);\n }\n};\nconst errorText = (error: unknown): string =>\n (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string'\n ? error.message\n : String(error)\n ).slice(0, 500);\nconst status = (value: unknown): DynamicWorkflowStatus => {\n if (value === 'success') return 'completed';\n if (value === 'canceled' || value === 'cancelled') return 'stopped';\n if (value === 'failed') return 'failed';\n throw new Error(`Unsupported Mastra result status: ${String(value)}.`);\n};\nconst counts = (): Record<DynamicWorkflowStatus, number> => ({\n pending: 0,\n running: 0,\n completed: 0,\n failed: 0,\n stopped: 0,\n skipped: 0,\n});\n/** Mastra executes. This observer only decorates constructors and lifecycle calls. */\nexport async function createWorkflowTracker(config: WorkflowTrackerOptions): Promise<WorkflowTracker> {\n let factories: Factories | undefined;\n const loadFactories = (): Factories => {\n if (!factories) {\n const require = createRequire(import.meta.url);\n const workflow = require('@mastra/core/workflows') as Pick<Factories, 'createStep' | 'createWorkflow'>;\n const schemas = require('zod') as Pick<Factories, 'z'>;\n factories = { ...workflow, z: schemas.z };\n }\n return factories;\n };\n const now = config.now ?? Date.now;\n const roots: DynamicWorkflowRun[] = [];\n const context = new AsyncLocalStorage<PhaseOwner>();\n const runContext = new AsyncLocalStorage<Execution>();\n const children = new Map<string, PhaseOwner>();\n const boundaryFailures = new WeakSet<DynamicWorkflowPhase>();\n const intentionalStops = new WeakSet<DynamicWorkflowPhase>();\n let revision = 0;\n let serial = 0;\n let disposed = false;\n const key = () => `workflow-${++serial}`;\n const origins = new WeakMap<DynamicWorkflowShape, string>();\n const origin = (shape: DynamicWorkflowShape) => origins.get(shape) ?? shape.key;\n const occurrence = (shape: DynamicWorkflowShape): DynamicWorkflowShape => {\n const result = { ...shape, key: key(), children: shape.children.map(occurrence) };\n origins.set(result, origin(shape));\n return result;\n };\n const findShape = (shape: DynamicWorkflowShape, source: DynamicWorkflowShape): DynamicWorkflowShape | undefined => {\n if (origin(shape) === origin(source)) return shape;\n for (const child of shape.children) {\n const found = findShape(child, source);\n if (found) return found;\n }\n return undefined;\n };\n const directSteps = (shape: DynamicWorkflowShape): DynamicWorkflowShape[] => {\n const result: DynamicWorkflowShape[] = [];\n const visit = (node: DynamicWorkflowShape): void => {\n if (node.kind === 'step') result.push(node);\n else if (node.kind === 'parallel' || node.kind === 'branch') node.children.forEach(visit);\n };\n shape.children.forEach(visit);\n return result;\n };\n const snapshot = (): DynamicWorkflowSnapshot =>\n structuredClone({\n version: 1,\n revision,\n sessionId: config.sessionId,\n runs: roots.map((run) => ({\n ...run,\n groups: run.groups.map((group) => ({\n ...group,\n counts: group.items.reduce((sum, item) => {\n sum[item.status]++;\n return sum;\n }, counts()),\n truncated: group.items.length > 1000,\n items: group.items.slice(0, 1000),\n })),\n })),\n });\n const publish = () => {\n revision++;\n // Observers cannot change workflow execution or strand a running item.\n try {\n config.publish?.(snapshot());\n } catch {\n /* Publication is best effort. */\n }\n };\n const derive = (phase: DynamicWorkflowPhase) => {\n phase.status =\n boundaryFailures.has(phase) || phase.agents.some((agent) => agent.status === 'failed')\n ? 'failed'\n : intentionalStops.has(phase)\n ? 'stopped'\n : phase.executionStatus;\n };\n const summarize = (item: DynamicWorkflowItem) => {\n item.status = item.phases.some((phase) => phase.status === 'failed')\n ? 'failed'\n : item.phases.some((phase) => phase.status === 'running')\n ? 'running'\n : item.phases.some((phase) => phase.status === 'stopped')\n ? 'stopped'\n : item.phases.every((phase) => phase.status === 'skipped')\n ? 'skipped'\n : item.phases.some((phase) => phase.status === 'pending')\n ? 'pending'\n : 'completed';\n };\n const update = (owner: PhaseOwner) => {\n derive(owner.phase);\n summarize(owner.execution.item);\n publish();\n };\n const terminal = (execution: Execution, outcome: DynamicWorkflowStatus, root: boolean, engineOutcome = outcome) => {\n const relevant = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step') relevant.add(shape.key);\n else shape.children.forEach(visit);\n };\n visit(execution.shape);\n for (const phase of execution.item.phases) {\n if (!root && !relevant.has(phase.key)) continue;\n if (phase.executionStatus === 'pending') phase.executionStatus = 'skipped';\n else if (phase.executionStatus === 'running') phase.executionStatus = outcome;\n derive(phase);\n }\n if (execution.item.phases.length) summarize(execution.item);\n else execution.item.status = outcome;\n if (\n execution.root.groups.some(\n (group) =>\n group.key.startsWith(`${execution.item.key}/`) && group.items.some((item) => item.status === 'failed'),\n )\n )\n execution.item.status = 'failed';\n if (root) {\n execution.root.executionStatus = engineOutcome;\n execution.root.status = execution.root.groups.some((group) =>\n group.items.some((item) => item.status === 'failed'),\n )\n ? 'failed'\n : outcome;\n execution.root.finishedAt = now();\n for (const group of execution.root.groups)\n for (const item of group.items) {\n if (item.status === 'pending') {\n item.status = 'skipped';\n for (const phase of item.phases)\n if (phase.executionStatus === 'pending') phase.status = phase.executionStatus = 'skipped';\n }\n }\n const completed = roots.filter((run) => run.executionStatus !== 'running');\n for (const run of completed.slice(0, Math.max(0, completed.length - 20))) {\n roots.splice(roots.indexOf(run), 1);\n for (const [id, owner] of children) if (owner.execution.root === run) children.delete(id);\n }\n }\n publish();\n };\n const reconcile = (execution: Execution, result: Record<string, unknown>) => {\n if (!result.steps || typeof result.steps !== 'object') return;\n const results = result.steps as Record<string, unknown>;\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') {\n // The contract captures the exact Mastra step id as label, not an inferred display name.\n const value = results[shape.label];\n if (!value || typeof value !== 'object') return;\n const detail = value as Record<string, unknown>;\n const phase = execution.item.phases.find((phase) => phase.key === shape.key);\n if (!phase || !['success', 'failed', 'canceled', 'cancelled', 'skipped'].includes(String(detail.status)))\n return;\n phase.executionStatus = detail.status === 'skipped' ? 'skipped' : status(detail.status);\n if (typeof detail.startedAt === 'number') phase.startedAt = detail.startedAt;\n if (typeof detail.endedAt === 'number') phase.finishedAt = detail.endedAt;\n if (detail.error) phase.error = errorText(detail.error);\n derive(phase);\n } else if (shape.kind === 'parallel' || shape.kind === 'branch') shape.children.forEach(visit);\n };\n // Nested workflows reconcile their own result, which can reuse parent run ids.\n execution.shape.children.forEach(visit);\n };\n const makeItem = (definition: Definition, index: number, shape = definition.shape): DynamicWorkflowItem => {\n const phases: DynamicWorkflowPhase[] = [];\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step')\n phases.push({ key: shape.key, label: shape.label, status: 'pending', executionStatus: 'pending', agents: [] });\n else shape.children.forEach(visit);\n };\n visit(shape);\n return { key: key(), index, label: `Item ${index + 1}`, status: 'pending', phases };\n };\n const activeCancels = new Set<() => Promise<unknown>>();\n const activeStarts = new Set<Promise<unknown>>();\n const bindings = new Set<AbortController>();\n return {\n snapshot,\n inlineRun(event) {\n if (event.sessionId !== config.sessionId) return;\n if (event.status === 'running') {\n if (disposed) return;\n const owner = context.getStore();\n if (!owner || owner.phase.executionStatus !== 'running' || owner.execution.root.executionStatus !== 'running')\n return;\n children.set(event.runId, owner);\n if (!owner.phase.agents.some((agent) => agent.runId === event.runId))\n owner.phase.agents.push({ runId: event.runId, status: event.status });\n update(owner);\n } else {\n const owner = children.get(event.runId);\n const agent = owner?.phase.agents.find((agent) => agent.runId === event.runId);\n if (owner && agent) {\n agent.status = event.status;\n update(owner);\n }\n }\n },\n namespace(lifetime) {\n return {\n name: 'dynamicWorkflow',\n summary:\n 'Tracked Mastra workflows: then, parallel, branch and bounded foreach, with live child-agent transcripts in Activity.',\n declarations: dynamicWorkflowDeclarations,\n bind(run: PoCodemodeRun) {\n if (run.sessionId !== config.sessionId) throw new Error('dynamicWorkflow belongs to another session.');\n const binding = new AbortController();\n bindings.add(binding);\n const signal = AbortSignal.any([lifetime, run.signal, binding.signal]);\n let closed = false;\n const assert = () => {\n signal.throwIfAborted();\n if (closed || disposed) throw new Error('dynamicWorkflow execution is disposed.');\n };\n const definitions = new WeakMap<object, Definition>();\n const pendingCancels = new Set<() => Promise<unknown>>();\n const pendingStarts = new Set<Promise<unknown>>();\n const stop = () => {\n closed = true;\n for (const cancel of pendingCancels) void cancel().catch(() => undefined);\n };\n signal.addEventListener('abort', stop, { once: true });\n run.onDispose(async () => {\n closed = true;\n binding.abort(new Error('dynamicWorkflow execution is disposed.'));\n bindings.delete(binding);\n signal.removeEventListener('abort', stop);\n await Promise.allSettled([...pendingCancels].map((cancel) => cancel()));\n await Promise.allSettled(pendingStarts);\n });\n const definitionFor = (value: unknown): Definition => {\n const definition = definitions.get(object(value, 'Tracked step'));\n if (!definition)\n throw new Error('Only steps and workflows created by this dynamicWorkflow execution are supported.');\n if (definition.workflow && !definition.workflow.committed)\n throw new Error('Commit nested workflows before composing them.');\n return definition;\n };\n const createGroup = (\n execution: Execution,\n shape: DynamicWorkflowShape,\n total: number,\n concurrency: number,\n ): DynamicWorkflowGroup => {\n const groupKey = `${execution.item.key}/${shape.key}`;\n let group = execution.root.groups.find((group) => group.key === groupKey);\n if (!group) {\n group = {\n key: groupKey,\n label: shape.label,\n total,\n counts: counts(),\n truncated: false,\n concurrency,\n items: [],\n };\n execution.root.groups.push(group);\n }\n return group;\n };\n const members: Record<string, unknown> = {\n get z() {\n assert();\n return loadFactories().z;\n },\n createStep(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema', 'execute'], 'createStep');\n const id = label(def.id);\n validateDefinition(def);\n if (typeof def.execute !== 'function') throw new Error('createStep.execute must be a function.');\n const callback = def.execute as (params: Record<string, unknown>) => unknown;\n const shape: DynamicWorkflowShape = { key: key(), label: id, kind: 'step', children: [] };\n const raw = loadFactories().createStep({\n ...def,\n id,\n execute: async (params: Record<string, unknown>) => {\n assert();\n const execution = runContext.getStore();\n const position =\n execution && directSteps(execution.shape).find((candidate) => origin(candidate) === shape.key);\n const phase = execution?.item.phases.find((phase) => phase.key === position?.key);\n if (!execution || !phase) throw new Error('Tracked step has no execution context.');\n phase.executionStatus = phase.status = 'running';\n phase.startedAt = now();\n execution.item.status = 'running';\n publish();\n const owner = { execution, phase };\n const operationSignal = callbackSignal(signal, params);\n return context.run(owner, async () => {\n try {\n const output = await callbackWithAbort(\n () => callback(callbackParameters(params)),\n operationSignal,\n );\n operationSignal.throwIfAborted();\n assert();\n if (output === undefined)\n throw new Error(\n 'Tracked callback returned undefined. Return null for empty output, or inspect exec diagnostics for a guest callback error.',\n );\n phase.executionStatus = 'completed';\n return output;\n } catch (error) {\n if (operationSignal.aborted || closed || disposed) intentionalStops.add(phase);\n phase.executionStatus = 'failed';\n phase.error = errorText(error);\n throw error;\n } finally {\n phase.finishedAt = now();\n update(owner);\n }\n });\n },\n });\n const handle = Object.freeze({ id });\n definitions.set(handle, { raw, shape });\n return handle;\n },\n createWorkflow(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema'], 'createWorkflow');\n const id = label(def.id);\n validateDefinition(def);\n const raw = loadFactories().createWorkflow({ ...def, id });\n const definition: Definition = {\n raw,\n shape: { key: key(), kind: 'sequence', label: id, children: [] },\n workflow: { raw, committed: false, foreach: new Map(), nested: new Map() },\n };\n const workflow = definition.workflow!;\n const rawCreateRun = raw.createRun.bind(raw);\n raw.createRun = async (createOptions: Record<string, unknown> = {}) => {\n assert();\n const rawRun = await rawCreateRun(createOptions);\n const parent = createOptions.parentWorkflow as\n | { runId: string; stepId: string; foreachIndex?: number }\n | undefined;\n let execution: Execution | undefined;\n if (parent) {\n const ancestor = runContext.getStore();\n if (!ancestor) throw new Error('Nested workflow has no tracked parent.');\n const authoredForeach = ancestor.definition.workflow?.foreach.get(parent.stepId);\n const foreachShape = authoredForeach && findShape(ancestor.shape, authoredForeach);\n if (foreachShape) {\n if (!Number.isSafeInteger(parent.foreachIndex) || parent.foreachIndex! < 0)\n throw new Error('Nested foreach did not provide a stable item index.');\n const group = ancestor.root.groups.find(\n (group) => group.key === `${ancestor.item.key}/${foreachShape.key}`,\n );\n if (!group) throw new Error('Nested foreach has no observed group.');\n const item = group.items[parent.foreachIndex!];\n if (!item) throw new Error('Nested foreach item is outside its observed input.');\n execution = {\n root: ancestor.root,\n item,\n definition,\n boundaryErrors: ancestor.boundaryErrors,\n shape: foreachShape.children[0]!,\n };\n } else {\n const authored = ancestor.definition.workflow?.nested.get(parent.stepId);\n const position = authored && findShape(ancestor.shape, authored);\n if (!position) throw new Error('Nested workflow has no tracked graph position.');\n execution = { ...ancestor, definition, shape: position };\n }\n }\n const start = rawRun.start.bind(rawRun);\n const cancel = rawRun.cancel.bind(rawRun);\n let started = false;\n let cancelled = false;\n const cancelTracked = async () => {\n cancelled = true;\n return await cancel();\n };\n rawRun.cancel = cancelTracked;\n const executeStart = async (startOptions: Record<string, unknown>) => {\n assert();\n if (started) throw new Error('Tracked runs can only start once.');\n started = true;\n if (!parent) {\n const item = makeItem(definition, 0);\n item.label = id;\n const root: DynamicWorkflowRun = {\n key: rawRun.runId,\n workflowId: id,\n label: id,\n status: 'running',\n executionStatus: 'running',\n startedAt: now(),\n shape: structuredClone(definition.shape),\n groups: [{ key: key(), label: id, total: 1, counts: counts(), truncated: false, items: [item] }],\n };\n // Foreach-only roots do not need an empty synthetic row.\n if (!item.phases.length) root.groups = [];\n roots.push(root);\n execution = { root, item, definition, boundaryErrors: [], shape: definition.shape };\n publish();\n }\n if (!execution) throw new Error('Tracked run has no execution context.');\n execution.item.status = 'running';\n pendingCancels.add(cancelTracked);\n activeCancels.add(cancelTracked);\n let reported = false;\n try {\n const result = await runContext.run(execution, () => start(startOptions));\n const outcome =\n cancelled || signal.aborted || closed || disposed ? 'stopped' : status(result.status);\n if (result.error) execution.root.error = errorText(result.error);\n reconcile(execution, result);\n terminal(execution, outcome, !parent, status(result.status));\n reported = true;\n if (execution.boundaryErrors.length) throw new Error(execution.boundaryErrors[0]);\n return result;\n } catch (error) {\n if (!reported) {\n execution.root.error = errorText(error);\n terminal(\n execution,\n cancelled || signal.aborted || closed || disposed ? 'stopped' : 'failed',\n !parent,\n );\n }\n throw error;\n } finally {\n pendingCancels.delete(cancelTracked);\n activeCancels.delete(cancelTracked);\n }\n };\n rawRun.start = (startOptions) => {\n const started = executeStart(startOptions);\n pendingStarts.add(started);\n activeStarts.add(started);\n const settled = () => {\n pendingStarts.delete(started);\n activeStarts.delete(started);\n };\n void started.then(settled, settled);\n return started;\n };\n return rawRun;\n };\n const ids = new Set<string>();\n const claim = (targets: Definition[]) => {\n const next = new Set<string>();\n for (const target of targets) {\n if (ids.has(target.raw.id) || next.has(target.raw.id) || target.raw.id === id)\n throw new Error('Use distinct step ids within a tracked workflow.');\n next.add(target.raw.id);\n }\n for (const value of next) ids.add(value);\n for (const target of targets) if (target.workflow) workflow.nested.set(target.raw.id, target.shape);\n };\n const mutable = () => {\n assert();\n if (workflow.committed) throw new Error('Tracked workflow is already committed.');\n };\n const add = (kind: 'parallel' | 'branch', targets: Definition[]) => {\n definition.shape.children.push({\n key: key(),\n label: kind,\n kind,\n children: targets.map((target) => occurrence(target.shape)),\n });\n };\n const handle = Object.freeze({\n id,\n // Mastra intentionally names its fluent composition method then, not a Promise continuation.\n // oxlint-disable-next-line unicorn/no-thenable\n then(value: unknown) {\n mutable();\n const target = definitionFor(value);\n claim([target]);\n raw.then(target.raw);\n definition.shape.children.push(occurrence(target.shape));\n return handle;\n },\n parallel(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('parallel requires a non-empty array of tracked steps.');\n const targets = values.map(definitionFor);\n claim(targets);\n raw.parallel(targets.map((target) => target.raw));\n add('parallel', targets);\n return handle;\n },\n branch(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('branch requires predicate/step pairs.');\n const targets: Definition[] = [];\n const pairs = values.map(\n (pair: unknown): [(params: Record<string, unknown>) => Promise<boolean>, RawStep] => {\n if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== 'function')\n throw new Error('branch requires [predicate, tracked step] pairs.');\n const target = definitionFor(pair[1]);\n targets.push(target);\n const predicate = pair[0] as (params: Record<string, unknown>) => unknown;\n return [\n async (params) => {\n assert();\n const operationSignal = callbackSignal(signal, params);\n try {\n const answer = await callbackWithAbort(\n () => predicate(callbackParameters(params)),\n operationSignal,\n );\n if (typeof answer !== 'boolean')\n throw new Error(\n 'Tracked branch predicates must return a boolean. Inspect exec diagnostics if a guest callback failed.',\n );\n return answer;\n } catch (error) {\n if (operationSignal.aborted) throw error;\n const execution = runContext.getStore();\n if (execution) {\n const message = errorText(error);\n execution.boundaryErrors.push(message);\n execution.root.error = message;\n const leaves = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') leaves.add(shape.key);\n else shape.children.forEach(visit);\n };\n const position = findShape(execution.shape, target.shape);\n if (position) visit(position);\n for (const phase of execution.item.phases)\n if (leaves.has(phase.key)) {\n boundaryFailures.add(phase);\n phase.error = message;\n }\n }\n throw error;\n }\n },\n target.raw,\n ];\n },\n );\n claim(targets);\n raw.branch(pairs);\n add('branch', targets);\n return handle;\n },\n foreach(value: unknown, settings: unknown) {\n mutable();\n const target = definitionFor(value);\n if (!target.workflow)\n throw new Error('foreach requires a committed tracked item workflow, not a bare step.');\n const opts = options(settings, ['concurrency'], 'foreach');\n if (!Number.isSafeInteger(opts.concurrency) || Number(opts.concurrency) < 1)\n throw new Error('foreach.concurrency must be a positive integer.');\n const concurrency = Number(opts.concurrency);\n claim([target]);\n const shape: DynamicWorkflowShape = {\n key: key(),\n kind: 'foreach',\n label: target.shape.label,\n children: [occurrence(target.shape)],\n };\n raw.foreach(target.workflow.raw, {\n concurrency: ({ inputData }) => {\n assert();\n const execution = runContext.getStore();\n if (!execution || !Array.isArray(inputData))\n throw new Error('Tracked foreach requires array input and an active run.');\n const position = findShape(execution.shape, shape);\n if (!position) throw new Error('Foreach has no tracked graph position.');\n const group = createGroup(execution, position, inputData.length, concurrency);\n group.items = inputData.map((_, index) => makeItem(target, index, position.children[0]));\n publish();\n return concurrency;\n },\n });\n workflow.foreach.set(target.raw.id, shape);\n definition.shape.children.push(shape);\n return handle;\n },\n commit() {\n mutable();\n raw.commit();\n workflow.committed = true;\n return handle;\n },\n async createRun(value?: unknown) {\n assert();\n if (!workflow.committed) throw new Error('Commit the tracked workflow before creating a run.');\n if (value !== undefined && Object.keys(options(value, [], 'createRun')).length)\n throw new Error('createRun options are unsupported.');\n const live = await raw.createRun();\n return Object.freeze({\n runId: live.runId,\n async start(value: unknown) {\n assert();\n const opts = options(value, ['inputData'], 'start');\n return live.start(opts);\n },\n async cancel() {\n assert();\n await live.cancel();\n },\n });\n },\n });\n definitions.set(handle, definition);\n return handle;\n },\n };\n return members;\n },\n };\n },\n async dispose() {\n disposed = true;\n for (const binding of bindings) binding.abort(new Error('dynamicWorkflow session is disposed.'));\n bindings.clear();\n await Promise.allSettled([...activeCancels].map((cancel) => cancel()));\n await Promise.allSettled(activeStarts);\n children.clear();\n },\n };\n}\n","import { PO_CODEMODE_SERVICE, readPoCodemode } from '@agimon-ai/po-core/codemode';\nimport { PO_TEAM_INLINE_RUN_EVENT } from '@agimon-ai/po-core/delegation';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../../../constants/dynamicWorkflow';\nimport { createWorkflowTracker } from '../../../../services/workflowTracker';\n\nexport default defineRoot(async ({ context, agent, host, signal }: PoServerPluginContext) => {\n if (!agent) throw new Error('Dynamic workflow requires a headless session host.');\n const runtime = await createWorkflowTracker({\n sessionId: agent.context.sessionId,\n publish: (snapshot) =>\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, snapshot),\n });\n const stopEvents = context.on(PO_TEAM_INLINE_RUN_EVENT, (event) => runtime.inlineRun(event));\n context.inject([PO_CODEMODE_SERVICE], (scoped) => {\n const codemode = readPoCodemode(scoped);\n const registration = codemode?.register('@agimon-ai/po-dynamic-workflow', runtime.namespace(signal));\n return () => registration?.dispose();\n });\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, runtime.snapshot());\n return {\n value: runtime,\n onDispose: async () => {\n try {\n await runtime.dispose();\n } finally {\n stopEvents();\n }\n },\n };\n});\n","import type { PoHubChannel, PoHubSessionScope } from '@agimon-ai/po-core/hubChannel';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../constants/dynamicWorkflow';\nimport type { DynamicWorkflowSnapshot } from '../../types/dynamicWorkflow';\n\nexport function createWorkflowChannel(): PoHubChannel {\n return {\n frameType: DYNAMIC_WORKFLOW_CHANNEL,\n start(host) {\n const latest = new Map<string, DynamicWorkflowSnapshot>();\n const subscriptions = new Map<string, () => void>();\n const scopes = new Map<string, PoHubSessionScope>();\n return {\n payloadFor: (scope) => latest.get(scope.sessionId),\n sessionAdded(scope) {\n subscriptions.get(scope.sessionId)?.();\n scopes.set(scope.sessionId, scope);\n latest.delete(scope.sessionId);\n subscriptions.set(\n scope.sessionId,\n host.directEvents.subscribe(\n DYNAMIC_WORKFLOW_CHANNEL,\n scope.sessionId,\n (value) => {\n if (scopes.get(scope.sessionId) !== scope || !value || typeof value !== 'object') return;\n const snapshot = value as DynamicWorkflowSnapshot;\n if (snapshot.version !== 1 || snapshot.sessionId !== scope.sessionId || !Array.isArray(snapshot.runs))\n return;\n const detached = structuredClone(snapshot);\n latest.set(scope.sessionId, detached);\n host.publish(scope.sessionId, detached);\n },\n { replayLatest: true },\n ),\n );\n },\n sessionRemoved(id) {\n subscriptions.get(id)?.();\n subscriptions.delete(id);\n scopes.delete(id);\n latest.delete(id);\n },\n close() {\n for (const unsubscribe of subscriptions.values()) unsubscribe();\n subscriptions.clear();\n scopes.clear();\n latest.clear();\n },\n };\n },\n };\n}\n","import { defineChannel } from '@agimon-ai/po-core/extensionFile';\n\nimport { createWorkflowChannel } from '../../../services/workflowChannel';\n\nexport default defineChannel(createWorkflowChannel);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineResource({\n name: 'codemode-how-to-dynamic-workflow',\n description: 'Compose tracked Mastra workflows and link live child-agent transcripts in Activity.',\n kind: 'skill' as const,\n pinned: true,\n path: packageResourcePath(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverPlugin';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverPlugin';\nimport { composeRootHooks, composeRootInjects } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport channelDynamicWorkflowRuns from '../src/extensions/(backend)/channel/dynamic-workflow-runs.server';\nimport resourceCodemodeHowToDynamicWorkflow from '../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const serverPlugin = defineServerPlugin({\n name: '@agimon-ai/po-dynamic-workflow',\n providerOverrides: composeServerProviderOverrides(rootSession),\n injects: composeRootInjects({ session: [rootSession] }),\n global: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return [() => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]; },\n }),\n workspace: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n }),\n session: async (context) => {\n const scopeSession = await context.scopeRoot('session', rootSession, context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [at(resourceCodemodeHowToDynamicWorkflow, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default serverPlugin;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["rootSession","channelDynamicWorkflowRuns","resourceCodemodeHowToDynamicWorkflow"],"sources":["../../src/constants/dynamicWorkflow.ts","../../src/constants/declarations.ts","../../src/services/workflowTracker/index.ts","../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/services/workflowChannel/index.ts","../../src/extensions/(backend)/channel/dynamic-workflow-runs.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server.ts","../../generated/server.ts"],"sourcesContent":["export const DYNAMIC_WORKFLOW_CHANNEL = 'dynamic_workflow_runs';\n","export const dynamicWorkflowDeclarations = `\ninterface WorkflowSchema<T> {\n readonly _output: T;\n parse(value: unknown): T;\n optional(): WorkflowSchema<T | undefined>;\n nullable(): WorkflowSchema<T | null>;\n default(value: T): WorkflowSchema<T>;\n array(): WorkflowSchema<T[]>;\n describe(text: string): WorkflowSchema<T>;\n min(value: number): WorkflowSchema<T>;\n max(value: number): WorkflowSchema<T>;\n int(): WorkflowSchema<T>;\n positive(): WorkflowSchema<T>;\n nonnegative(): WorkflowSchema<T>;\n trim(): WorkflowSchema<T>;\n}\ntype WorkflowSchemaOutput<S> = S extends WorkflowSchema<infer T> ? T : never;\ntype WorkflowObject<S extends Record<string, WorkflowSchema<unknown>>> =\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? never : K]: WorkflowSchemaOutput<S[K]> } &\n { [K in keyof S as undefined extends WorkflowSchemaOutput<S[K]> ? K : never]?: WorkflowSchemaOutput<S[K]> };\ninterface WorkflowZod {\n string(): WorkflowSchema<string>;\n number(): WorkflowSchema<number>;\n boolean(): WorkflowSchema<boolean>;\n null(): WorkflowSchema<null>;\n unknown(): WorkflowSchema<unknown>;\n any(): WorkflowSchema<unknown>;\n literal<T extends string | number | boolean | null>(value: T): WorkflowSchema<T>;\n enum<T extends string>(values: readonly [T, ...T[]]): WorkflowSchema<T>;\n object<S extends Record<string, WorkflowSchema<unknown>>>(shape: S): WorkflowSchema<WorkflowObject<S>>;\n array<T>(item: WorkflowSchema<T>): WorkflowSchema<T[]>;\n record<T>(item: WorkflowSchema<T>): WorkflowSchema<Record<string,T>>;\n union<S extends readonly [WorkflowSchema<unknown>, WorkflowSchema<unknown>, ...WorkflowSchema<unknown>[]]>(schemas: S): WorkflowSchema<WorkflowSchemaOutput<S[number]>>;\n}\ninterface WorkflowExecute<I> {\n inputData: I;\n runId: string;\n abortSignal: AbortSignal;\n getInitData(): unknown;\n}\ninterface TrackedStep<I = unknown, O = unknown, Id extends string = string> {\n readonly id: Id;\n readonly __input?: I;\n readonly __output?: O;\n}\ninterface TrackedRun<I, O> {\n readonly runId: string;\n start(options: { inputData: I }): Promise<{ status: string; result?: O; error?: unknown }>;\n cancel(): Promise<void>;\n}\ninterface TrackedWorkflow<I, O, Current = I> extends TrackedStep<I,O> {\n then<T>(step: TrackedStep<Current,T>): TrackedWorkflow<I,O,T>;\n parallel<T extends readonly TrackedStep<Current,unknown>[]>(steps: T): TrackedWorkflow<I,O,Record<T[number]['id'],T[number] extends TrackedStep<Current,infer Out> ? Out : never>>;\n branch(choices: [((params: WorkflowExecute<Current>) => boolean | Promise<boolean>), TrackedStep<Current,unknown>][]): TrackedWorkflow<I,O,Record<string,unknown>>;\n foreach<T, U, C>(item: TrackedWorkflow<T,U,C>, options: { concurrency: number }): TrackedWorkflow<I,O,U[]>;\n commit(): TrackedWorkflow<I,O,Current>;\n createRun(): Promise<TrackedRun<I,O>>;\n}\ndeclare const dynamicWorkflow: {\n createStep<I,O,Id extends string>(options: { id: Id; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O>; execute: (params: WorkflowExecute<I>) => O | Promise<O> }): TrackedStep<I,O,Id>;\n createWorkflow<I,O>(options: { id: string; description?: string; inputSchema: WorkflowSchema<I>; outputSchema: WorkflowSchema<O> }): TrackedWorkflow<I,O>;\n /** Zod 3.25.76. Common constructors are declared here; runtime supplies the real z object. */\n z: WorkflowZod;\n};`;\n","import { AsyncLocalStorage } from 'node:async_hooks';\nimport { createRequire } from 'node:module';\n\nimport type { PoCodemodeRun } from '@agimon-ai/po-core/codemode';\nimport type * as Zod from 'zod';\n\nimport { dynamicWorkflowDeclarations } from '../../constants/declarations';\nimport type {\n DynamicWorkflowGroup,\n DynamicWorkflowItem,\n DynamicWorkflowPhase,\n DynamicWorkflowRun,\n DynamicWorkflowShape,\n DynamicWorkflowSnapshot,\n DynamicWorkflowStatus,\n} from '../../types/dynamicWorkflow';\nimport type { WorkflowTracker, WorkflowTrackerOptions } from './type';\n\ninterface RawStep {\n id: string;\n execute: (params: Record<string, unknown>) => Promise<unknown>;\n}\ninterface RawRun {\n runId: string;\n start: (options: Record<string, unknown>) => Promise<Record<string, unknown>>;\n cancel: () => Promise<unknown>;\n}\ninterface RawWorkflow extends RawStep {\n then(step: RawStep): RawWorkflow;\n parallel(steps: RawStep[]): RawWorkflow;\n branch(steps: [(params: Record<string, unknown>) => Promise<boolean>, RawStep][]): RawWorkflow;\n foreach(step: RawWorkflow, options: { concurrency: (params: { inputData: unknown }) => number }): RawWorkflow;\n commit(): RawWorkflow;\n createRun(options?: Record<string, unknown>): Promise<RawRun>;\n}\ninterface Factories {\n createStep(options: Record<string, unknown>): RawStep;\n createWorkflow(options: Record<string, unknown>): RawWorkflow;\n z: typeof Zod.z;\n}\ninterface Definition {\n raw: RawStep;\n shape: DynamicWorkflowShape;\n workflow?: {\n raw: RawWorkflow;\n committed: boolean;\n foreach: Map<string, DynamicWorkflowShape>;\n nested: Map<string, DynamicWorkflowShape>;\n };\n}\ninterface Execution {\n root: DynamicWorkflowRun;\n definition: Definition;\n item: DynamicWorkflowItem;\n boundaryErrors: string[];\n shape: DynamicWorkflowShape;\n}\ninterface PhaseOwner {\n execution: Execution;\n phase: DynamicWorkflowPhase;\n}\n\nconst object = (value: unknown, name: string): Record<string, unknown> => {\n if (value === null || typeof value !== 'object' || Array.isArray(value))\n throw new Error(`${name} must be an object.`);\n return value as Record<string, unknown>;\n};\nconst options = (value: unknown, keys: string[], name: string): Record<string, unknown> => {\n const result = object(value, name);\n for (const key of Object.keys(result))\n if (!keys.includes(key)) throw new Error(`${name}.${key} is not supported by tracked workflows.`);\n return result;\n};\nconst label = (value: unknown): string => {\n if (typeof value !== 'string' || !value.trim() || value.length > 160)\n throw new Error('Workflow and step ids must be non-empty strings of at most 160 characters.');\n return value;\n};\nconst callbackParameters = (params: Record<string, unknown>): Record<string, unknown> => ({\n inputData: params.inputData,\n runId: params.runId,\n abortSignal: params.abortSignal,\n ...(typeof params.getInitData === 'function' ? { getInitData: params.getInitData } : {}),\n});\n/** Reject the host wrapper on abort; late guest settlement cannot write tracked state. */\nconst callbackWithAbort = (callback: () => unknown, signal: AbortSignal): Promise<unknown> => {\n signal.throwIfAborted();\n return new Promise((resolve, reject) => {\n const abort = () => {\n signal.removeEventListener('abort', abort);\n reject(signal.reason);\n };\n signal.addEventListener('abort', abort, { once: true });\n Promise.resolve()\n .then(() => {\n signal.throwIfAborted();\n return callback();\n })\n .then(\n (value) => {\n signal.removeEventListener('abort', abort);\n resolve(value);\n },\n (error) => {\n signal.removeEventListener('abort', abort);\n reject(error);\n },\n );\n });\n};\nconst callbackSignal = (binding: AbortSignal, params: Record<string, unknown>): AbortSignal =>\n params.abortSignal instanceof AbortSignal ? AbortSignal.any([binding, params.abortSignal]) : binding;\nconst validateDefinition = (def: Record<string, unknown>) => {\n if (def.description !== undefined && (typeof def.description !== 'string' || def.description.length > 500))\n throw new Error('description must be a string of at most 500 characters.');\n for (const field of ['inputSchema', 'outputSchema']) {\n const schema = object(def[field], field);\n if (typeof schema.safeParse !== 'function') throw new Error(`${field} must be a Zod schema.`);\n }\n};\nconst errorText = (error: unknown): string =>\n (error && typeof error === 'object' && 'message' in error && typeof error.message === 'string'\n ? error.message\n : String(error)\n ).slice(0, 500);\nconst status = (value: unknown): DynamicWorkflowStatus => {\n if (value === 'success') return 'completed';\n if (value === 'canceled' || value === 'cancelled') return 'stopped';\n if (value === 'failed') return 'failed';\n throw new Error(`Unsupported Mastra result status: ${String(value)}.`);\n};\nconst counts = (): Record<DynamicWorkflowStatus, number> => ({\n pending: 0,\n running: 0,\n completed: 0,\n failed: 0,\n stopped: 0,\n skipped: 0,\n});\n/** Mastra executes. This observer only decorates constructors and lifecycle calls. */\nexport async function createWorkflowTracker(config: WorkflowTrackerOptions): Promise<WorkflowTracker> {\n let factories: Factories | undefined;\n const loadFactories = (): Factories => {\n if (!factories) {\n const require = createRequire(import.meta.url);\n const workflow = require('@mastra/core/workflows') as Pick<Factories, 'createStep' | 'createWorkflow'>;\n const schemas = require('zod') as Pick<Factories, 'z'>;\n factories = { ...workflow, z: schemas.z };\n }\n return factories;\n };\n const now = config.now ?? Date.now;\n const roots: DynamicWorkflowRun[] = [];\n const context = new AsyncLocalStorage<PhaseOwner>();\n const runContext = new AsyncLocalStorage<Execution>();\n const children = new Map<string, PhaseOwner>();\n const boundaryFailures = new WeakSet<DynamicWorkflowPhase>();\n const intentionalStops = new WeakSet<DynamicWorkflowPhase>();\n let revision = 0;\n let serial = 0;\n let disposed = false;\n const key = () => `workflow-${++serial}`;\n const origins = new WeakMap<DynamicWorkflowShape, string>();\n const origin = (shape: DynamicWorkflowShape) => origins.get(shape) ?? shape.key;\n const occurrence = (shape: DynamicWorkflowShape): DynamicWorkflowShape => {\n const result = { ...shape, key: key(), children: shape.children.map(occurrence) };\n origins.set(result, origin(shape));\n return result;\n };\n const findShape = (shape: DynamicWorkflowShape, source: DynamicWorkflowShape): DynamicWorkflowShape | undefined => {\n if (origin(shape) === origin(source)) return shape;\n for (const child of shape.children) {\n const found = findShape(child, source);\n if (found) return found;\n }\n return undefined;\n };\n const directSteps = (shape: DynamicWorkflowShape): DynamicWorkflowShape[] => {\n const result: DynamicWorkflowShape[] = [];\n const visit = (node: DynamicWorkflowShape): void => {\n if (node.kind === 'step') result.push(node);\n else if (node.kind === 'parallel' || node.kind === 'branch') node.children.forEach(visit);\n };\n shape.children.forEach(visit);\n return result;\n };\n const snapshot = (): DynamicWorkflowSnapshot =>\n structuredClone({\n version: 1,\n revision,\n sessionId: config.sessionId,\n runs: roots.map((run) => ({\n ...run,\n groups: run.groups.map((group) => ({\n ...group,\n counts: group.items.reduce((sum, item) => {\n sum[item.status]++;\n return sum;\n }, counts()),\n truncated: group.items.length > 1000,\n items: group.items.slice(0, 1000),\n })),\n })),\n });\n const publish = () => {\n revision++;\n // Observers cannot change workflow execution or strand a running item.\n try {\n config.publish?.(snapshot());\n } catch {\n /* Publication is best effort. */\n }\n };\n const derive = (phase: DynamicWorkflowPhase) => {\n phase.status =\n boundaryFailures.has(phase) || phase.agents.some((agent) => agent.status === 'failed')\n ? 'failed'\n : intentionalStops.has(phase)\n ? 'stopped'\n : phase.executionStatus;\n };\n const summarize = (item: DynamicWorkflowItem) => {\n item.status = item.phases.some((phase) => phase.status === 'failed')\n ? 'failed'\n : item.phases.some((phase) => phase.status === 'running')\n ? 'running'\n : item.phases.some((phase) => phase.status === 'stopped')\n ? 'stopped'\n : item.phases.every((phase) => phase.status === 'skipped')\n ? 'skipped'\n : item.phases.some((phase) => phase.status === 'pending')\n ? 'pending'\n : 'completed';\n };\n const update = (owner: PhaseOwner) => {\n derive(owner.phase);\n summarize(owner.execution.item);\n publish();\n };\n const terminal = (execution: Execution, outcome: DynamicWorkflowStatus, root: boolean, engineOutcome = outcome) => {\n const relevant = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step') relevant.add(shape.key);\n else shape.children.forEach(visit);\n };\n visit(execution.shape);\n for (const phase of execution.item.phases) {\n if (!root && !relevant.has(phase.key)) continue;\n if (phase.executionStatus === 'pending') phase.executionStatus = 'skipped';\n else if (phase.executionStatus === 'running') phase.executionStatus = outcome;\n derive(phase);\n }\n if (execution.item.phases.length) summarize(execution.item);\n else execution.item.status = outcome;\n if (\n execution.root.groups.some(\n (group) =>\n group.key.startsWith(`${execution.item.key}/`) && group.items.some((item) => item.status === 'failed'),\n )\n )\n execution.item.status = 'failed';\n if (root) {\n execution.root.executionStatus = engineOutcome;\n execution.root.status = execution.root.groups.some((group) =>\n group.items.some((item) => item.status === 'failed'),\n )\n ? 'failed'\n : outcome;\n execution.root.finishedAt = now();\n for (const group of execution.root.groups)\n for (const item of group.items) {\n if (item.status === 'pending') {\n item.status = 'skipped';\n for (const phase of item.phases)\n if (phase.executionStatus === 'pending') phase.status = phase.executionStatus = 'skipped';\n }\n }\n const completed = roots.filter((run) => run.executionStatus !== 'running');\n for (const run of completed.slice(0, Math.max(0, completed.length - 20))) {\n roots.splice(roots.indexOf(run), 1);\n for (const [id, owner] of children) if (owner.execution.root === run) children.delete(id);\n }\n }\n publish();\n };\n const reconcile = (execution: Execution, result: Record<string, unknown>) => {\n if (!result.steps || typeof result.steps !== 'object') return;\n const results = result.steps as Record<string, unknown>;\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') {\n // The contract captures the exact Mastra step id as label, not an inferred display name.\n const value = results[shape.label];\n if (!value || typeof value !== 'object') return;\n const detail = value as Record<string, unknown>;\n const phase = execution.item.phases.find((phase) => phase.key === shape.key);\n if (!phase || !['success', 'failed', 'canceled', 'cancelled', 'skipped'].includes(String(detail.status)))\n return;\n phase.executionStatus = detail.status === 'skipped' ? 'skipped' : status(detail.status);\n if (typeof detail.startedAt === 'number') phase.startedAt = detail.startedAt;\n if (typeof detail.endedAt === 'number') phase.finishedAt = detail.endedAt;\n if (detail.error) phase.error = errorText(detail.error);\n derive(phase);\n } else if (shape.kind === 'parallel' || shape.kind === 'branch') shape.children.forEach(visit);\n };\n // Nested workflows reconcile their own result, which can reuse parent run ids.\n execution.shape.children.forEach(visit);\n };\n const makeItem = (definition: Definition, index: number, shape = definition.shape): DynamicWorkflowItem => {\n const phases: DynamicWorkflowPhase[] = [];\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'foreach') return;\n if (shape.kind === 'step')\n phases.push({ key: shape.key, label: shape.label, status: 'pending', executionStatus: 'pending', agents: [] });\n else shape.children.forEach(visit);\n };\n visit(shape);\n return { key: key(), index, label: `Item ${index + 1}`, status: 'pending', phases };\n };\n const activeCancels = new Set<() => Promise<unknown>>();\n const activeStarts = new Set<Promise<unknown>>();\n const bindings = new Set<AbortController>();\n return {\n snapshot,\n inlineRun(event) {\n if (event.sessionId !== config.sessionId) return;\n if (event.status === 'running') {\n if (disposed) return;\n const owner = context.getStore();\n if (!owner || owner.phase.executionStatus !== 'running' || owner.execution.root.executionStatus !== 'running')\n return;\n children.set(event.runId, owner);\n if (!owner.phase.agents.some((agent) => agent.runId === event.runId))\n owner.phase.agents.push({ runId: event.runId, status: event.status });\n update(owner);\n } else {\n const owner = children.get(event.runId);\n const agent = owner?.phase.agents.find((agent) => agent.runId === event.runId);\n if (owner && agent) {\n agent.status = event.status;\n update(owner);\n }\n }\n },\n namespace(lifetime) {\n return {\n name: 'dynamicWorkflow',\n summary:\n 'Tracked Mastra workflows: then, parallel, branch and bounded foreach, with live child-agent transcripts in Activity.',\n declarations: dynamicWorkflowDeclarations,\n bind(run: PoCodemodeRun) {\n if (run.sessionId !== config.sessionId) throw new Error('dynamicWorkflow belongs to another session.');\n const binding = new AbortController();\n bindings.add(binding);\n const signal = AbortSignal.any([lifetime, run.signal, binding.signal]);\n let closed = false;\n const assert = () => {\n signal.throwIfAborted();\n if (closed || disposed) throw new Error('dynamicWorkflow execution is disposed.');\n };\n const definitions = new WeakMap<object, Definition>();\n const pendingCancels = new Set<() => Promise<unknown>>();\n const pendingStarts = new Set<Promise<unknown>>();\n const stop = () => {\n closed = true;\n for (const cancel of pendingCancels) void cancel().catch(() => undefined);\n };\n signal.addEventListener('abort', stop, { once: true });\n run.onDispose(async () => {\n closed = true;\n binding.abort(new Error('dynamicWorkflow execution is disposed.'));\n bindings.delete(binding);\n signal.removeEventListener('abort', stop);\n await Promise.allSettled([...pendingCancels].map((cancel) => cancel()));\n await Promise.allSettled(pendingStarts);\n });\n const definitionFor = (value: unknown): Definition => {\n const definition = definitions.get(object(value, 'Tracked step'));\n if (!definition)\n throw new Error('Only steps and workflows created by this dynamicWorkflow execution are supported.');\n if (definition.workflow && !definition.workflow.committed)\n throw new Error('Commit nested workflows before composing them.');\n return definition;\n };\n const createGroup = (\n execution: Execution,\n shape: DynamicWorkflowShape,\n total: number,\n concurrency: number,\n ): DynamicWorkflowGroup => {\n const groupKey = `${execution.item.key}/${shape.key}`;\n let group = execution.root.groups.find((group) => group.key === groupKey);\n if (!group) {\n group = {\n key: groupKey,\n label: shape.label,\n total,\n counts: counts(),\n truncated: false,\n concurrency,\n items: [],\n };\n execution.root.groups.push(group);\n }\n return group;\n };\n const members: Record<string, unknown> = {\n get z() {\n assert();\n return loadFactories().z;\n },\n createStep(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema', 'execute'], 'createStep');\n const id = label(def.id);\n validateDefinition(def);\n if (typeof def.execute !== 'function') throw new Error('createStep.execute must be a function.');\n const callback = def.execute as (params: Record<string, unknown>) => unknown;\n const shape: DynamicWorkflowShape = { key: key(), label: id, kind: 'step', children: [] };\n const raw = loadFactories().createStep({\n ...def,\n id,\n execute: async (params: Record<string, unknown>) => {\n assert();\n const execution = runContext.getStore();\n const position =\n execution && directSteps(execution.shape).find((candidate) => origin(candidate) === shape.key);\n const phase = execution?.item.phases.find((phase) => phase.key === position?.key);\n if (!execution || !phase) throw new Error('Tracked step has no execution context.');\n phase.executionStatus = phase.status = 'running';\n phase.startedAt = now();\n execution.item.status = 'running';\n publish();\n const owner = { execution, phase };\n const operationSignal = callbackSignal(signal, params);\n return context.run(owner, async () => {\n try {\n const output = await callbackWithAbort(\n () => callback(callbackParameters(params)),\n operationSignal,\n );\n operationSignal.throwIfAborted();\n assert();\n if (output === undefined)\n throw new Error(\n 'Tracked callback returned undefined. Return null for empty output, or inspect exec diagnostics for a guest callback error.',\n );\n phase.executionStatus = 'completed';\n return output;\n } catch (error) {\n if (operationSignal.aborted || closed || disposed) intentionalStops.add(phase);\n phase.executionStatus = 'failed';\n phase.error = errorText(error);\n throw error;\n } finally {\n phase.finishedAt = now();\n update(owner);\n }\n });\n },\n });\n const handle = Object.freeze({ id });\n definitions.set(handle, { raw, shape });\n return handle;\n },\n createWorkflow(value: unknown) {\n assert();\n const def = options(value, ['id', 'description', 'inputSchema', 'outputSchema'], 'createWorkflow');\n const id = label(def.id);\n validateDefinition(def);\n const raw = loadFactories().createWorkflow({ ...def, id });\n const definition: Definition = {\n raw,\n shape: { key: key(), kind: 'sequence', label: id, children: [] },\n workflow: { raw, committed: false, foreach: new Map(), nested: new Map() },\n };\n const workflow = definition.workflow!;\n const rawCreateRun = raw.createRun.bind(raw);\n raw.createRun = async (createOptions: Record<string, unknown> = {}) => {\n assert();\n const rawRun = await rawCreateRun(createOptions);\n const parent = createOptions.parentWorkflow as\n | { runId: string; stepId: string; foreachIndex?: number }\n | undefined;\n let execution: Execution | undefined;\n if (parent) {\n const ancestor = runContext.getStore();\n if (!ancestor) throw new Error('Nested workflow has no tracked parent.');\n const authoredForeach = ancestor.definition.workflow?.foreach.get(parent.stepId);\n const foreachShape = authoredForeach && findShape(ancestor.shape, authoredForeach);\n if (foreachShape) {\n if (!Number.isSafeInteger(parent.foreachIndex) || parent.foreachIndex! < 0)\n throw new Error('Nested foreach did not provide a stable item index.');\n const group = ancestor.root.groups.find(\n (group) => group.key === `${ancestor.item.key}/${foreachShape.key}`,\n );\n if (!group) throw new Error('Nested foreach has no observed group.');\n const item = group.items[parent.foreachIndex!];\n if (!item) throw new Error('Nested foreach item is outside its observed input.');\n execution = {\n root: ancestor.root,\n item,\n definition,\n boundaryErrors: ancestor.boundaryErrors,\n shape: foreachShape.children[0]!,\n };\n } else {\n const authored = ancestor.definition.workflow?.nested.get(parent.stepId);\n const position = authored && findShape(ancestor.shape, authored);\n if (!position) throw new Error('Nested workflow has no tracked graph position.');\n execution = { ...ancestor, definition, shape: position };\n }\n }\n const start = rawRun.start.bind(rawRun);\n const cancel = rawRun.cancel.bind(rawRun);\n let started = false;\n let cancelled = false;\n const cancelTracked = async () => {\n cancelled = true;\n return await cancel();\n };\n rawRun.cancel = cancelTracked;\n const executeStart = async (startOptions: Record<string, unknown>) => {\n assert();\n if (started) throw new Error('Tracked runs can only start once.');\n started = true;\n if (!parent) {\n const item = makeItem(definition, 0);\n item.label = id;\n const root: DynamicWorkflowRun = {\n key: rawRun.runId,\n workflowId: id,\n label: id,\n status: 'running',\n executionStatus: 'running',\n startedAt: now(),\n shape: structuredClone(definition.shape),\n groups: [{ key: key(), label: id, total: 1, counts: counts(), truncated: false, items: [item] }],\n };\n // Foreach-only roots do not need an empty synthetic row.\n if (!item.phases.length) root.groups = [];\n roots.push(root);\n execution = { root, item, definition, boundaryErrors: [], shape: definition.shape };\n publish();\n }\n if (!execution) throw new Error('Tracked run has no execution context.');\n execution.item.status = 'running';\n pendingCancels.add(cancelTracked);\n activeCancels.add(cancelTracked);\n let reported = false;\n try {\n const result = await runContext.run(execution, () => start(startOptions));\n const outcome =\n cancelled || signal.aborted || closed || disposed ? 'stopped' : status(result.status);\n if (result.error) execution.root.error = errorText(result.error);\n reconcile(execution, result);\n terminal(execution, outcome, !parent, status(result.status));\n reported = true;\n if (execution.boundaryErrors.length) throw new Error(execution.boundaryErrors[0]);\n return result;\n } catch (error) {\n if (!reported) {\n execution.root.error = errorText(error);\n terminal(\n execution,\n cancelled || signal.aborted || closed || disposed ? 'stopped' : 'failed',\n !parent,\n );\n }\n throw error;\n } finally {\n pendingCancels.delete(cancelTracked);\n activeCancels.delete(cancelTracked);\n }\n };\n rawRun.start = (startOptions) => {\n const started = executeStart(startOptions);\n pendingStarts.add(started);\n activeStarts.add(started);\n const settled = () => {\n pendingStarts.delete(started);\n activeStarts.delete(started);\n };\n void started.then(settled, settled);\n return started;\n };\n return rawRun;\n };\n const ids = new Set<string>();\n const claim = (targets: Definition[]) => {\n const next = new Set<string>();\n for (const target of targets) {\n if (ids.has(target.raw.id) || next.has(target.raw.id) || target.raw.id === id)\n throw new Error('Use distinct step ids within a tracked workflow.');\n next.add(target.raw.id);\n }\n for (const value of next) ids.add(value);\n for (const target of targets) if (target.workflow) workflow.nested.set(target.raw.id, target.shape);\n };\n const mutable = () => {\n assert();\n if (workflow.committed) throw new Error('Tracked workflow is already committed.');\n };\n const add = (kind: 'parallel' | 'branch', targets: Definition[]) => {\n definition.shape.children.push({\n key: key(),\n label: kind,\n kind,\n children: targets.map((target) => occurrence(target.shape)),\n });\n };\n const handle = Object.freeze({\n id,\n // Mastra intentionally names its fluent composition method then, not a Promise continuation.\n // oxlint-disable-next-line unicorn/no-thenable\n then(value: unknown) {\n mutable();\n const target = definitionFor(value);\n claim([target]);\n raw.then(target.raw);\n definition.shape.children.push(occurrence(target.shape));\n return handle;\n },\n parallel(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('parallel requires a non-empty array of tracked steps.');\n const targets = values.map(definitionFor);\n claim(targets);\n raw.parallel(targets.map((target) => target.raw));\n add('parallel', targets);\n return handle;\n },\n branch(values: unknown) {\n mutable();\n if (!Array.isArray(values) || !values.length)\n throw new Error('branch requires predicate/step pairs.');\n const targets: Definition[] = [];\n const pairs = values.map(\n (pair: unknown): [(params: Record<string, unknown>) => Promise<boolean>, RawStep] => {\n if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== 'function')\n throw new Error('branch requires [predicate, tracked step] pairs.');\n const target = definitionFor(pair[1]);\n targets.push(target);\n const predicate = pair[0] as (params: Record<string, unknown>) => unknown;\n return [\n async (params) => {\n assert();\n const operationSignal = callbackSignal(signal, params);\n try {\n const answer = await callbackWithAbort(\n () => predicate(callbackParameters(params)),\n operationSignal,\n );\n if (typeof answer !== 'boolean')\n throw new Error(\n 'Tracked branch predicates must return a boolean. Inspect exec diagnostics if a guest callback failed.',\n );\n return answer;\n } catch (error) {\n if (operationSignal.aborted) throw error;\n const execution = runContext.getStore();\n if (execution) {\n const message = errorText(error);\n execution.boundaryErrors.push(message);\n execution.root.error = message;\n const leaves = new Set<string>();\n const visit = (shape: DynamicWorkflowShape): void => {\n if (shape.kind === 'step') leaves.add(shape.key);\n else shape.children.forEach(visit);\n };\n const position = findShape(execution.shape, target.shape);\n if (position) visit(position);\n for (const phase of execution.item.phases)\n if (leaves.has(phase.key)) {\n boundaryFailures.add(phase);\n phase.error = message;\n }\n }\n throw error;\n }\n },\n target.raw,\n ];\n },\n );\n claim(targets);\n raw.branch(pairs);\n add('branch', targets);\n return handle;\n },\n foreach(value: unknown, settings: unknown) {\n mutable();\n const target = definitionFor(value);\n if (!target.workflow)\n throw new Error('foreach requires a committed tracked item workflow, not a bare step.');\n const opts = options(settings, ['concurrency'], 'foreach');\n if (!Number.isSafeInteger(opts.concurrency) || Number(opts.concurrency) < 1)\n throw new Error('foreach.concurrency must be a positive integer.');\n const concurrency = Number(opts.concurrency);\n claim([target]);\n const shape: DynamicWorkflowShape = {\n key: key(),\n kind: 'foreach',\n label: target.shape.label,\n children: [occurrence(target.shape)],\n };\n raw.foreach(target.workflow.raw, {\n concurrency: ({ inputData }) => {\n assert();\n const execution = runContext.getStore();\n if (!execution || !Array.isArray(inputData))\n throw new Error('Tracked foreach requires array input and an active run.');\n const position = findShape(execution.shape, shape);\n if (!position) throw new Error('Foreach has no tracked graph position.');\n const group = createGroup(execution, position, inputData.length, concurrency);\n group.items = inputData.map((_, index) => makeItem(target, index, position.children[0]));\n publish();\n return concurrency;\n },\n });\n workflow.foreach.set(target.raw.id, shape);\n definition.shape.children.push(shape);\n return handle;\n },\n commit() {\n mutable();\n raw.commit();\n workflow.committed = true;\n return handle;\n },\n async createRun(value?: unknown) {\n assert();\n if (!workflow.committed) throw new Error('Commit the tracked workflow before creating a run.');\n if (value !== undefined && Object.keys(options(value, [], 'createRun')).length)\n throw new Error('createRun options are unsupported.');\n const live = await raw.createRun();\n return Object.freeze({\n runId: live.runId,\n async start(value: unknown) {\n assert();\n const opts = options(value, ['inputData'], 'start');\n return live.start(opts);\n },\n async cancel() {\n assert();\n await live.cancel();\n },\n });\n },\n });\n definitions.set(handle, definition);\n return handle;\n },\n };\n return members;\n },\n };\n },\n async dispose() {\n disposed = true;\n for (const binding of bindings) binding.abort(new Error('dynamicWorkflow session is disposed.'));\n bindings.clear();\n await Promise.allSettled([...activeCancels].map((cancel) => cancel()));\n await Promise.allSettled(activeStarts);\n children.clear();\n },\n };\n}\n","import { PO_CODEMODE_SERVICE, readPoCodemode } from '@agimon-ai/po-core/codemode';\nimport { PO_TEAM_INLINE_RUN_EVENT } from '@agimon-ai/po-core/delegation';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { PoServerPluginContext } from '@agimon-ai/po-core/serverPlugin';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../../../constants/dynamicWorkflow';\nimport { createWorkflowTracker } from '../../../../services/workflowTracker';\n\nexport default defineRoot(async ({ context, agent, host, signal }: PoServerPluginContext) => {\n if (!agent) throw new Error('Dynamic workflow requires a headless session host.');\n const runtime = await createWorkflowTracker({\n sessionId: agent.context.sessionId,\n publish: (snapshot) =>\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, snapshot),\n });\n const stopEvents = context.on(PO_TEAM_INLINE_RUN_EVENT, (event) => runtime.inlineRun(event));\n context.inject([PO_CODEMODE_SERVICE], (scoped) => {\n const codemode = readPoCodemode(scoped);\n const registration = codemode?.register('@agimon-ai/po-dynamic-workflow', runtime.namespace(signal));\n return () => registration?.dispose();\n });\n host.context.directEvents?.publish(DYNAMIC_WORKFLOW_CHANNEL, agent.context.sessionId, runtime.snapshot());\n return {\n value: runtime,\n onDispose: async () => {\n try {\n await runtime.dispose();\n } finally {\n stopEvents();\n }\n },\n };\n});\n","import type { PoHubChannel, PoHubSessionScope } from '@agimon-ai/po-core/hubChannel';\n\nimport { DYNAMIC_WORKFLOW_CHANNEL } from '../../constants/dynamicWorkflow';\nimport type { DynamicWorkflowSnapshot } from '../../types/dynamicWorkflow';\n\nexport function createWorkflowChannel(): PoHubChannel {\n return {\n frameType: DYNAMIC_WORKFLOW_CHANNEL,\n start(host) {\n const latest = new Map<string, DynamicWorkflowSnapshot>();\n const subscriptions = new Map<string, () => void>();\n const scopes = new Map<string, PoHubSessionScope>();\n return {\n payloadFor: (scope) => latest.get(scope.sessionId),\n sessionAdded(scope) {\n subscriptions.get(scope.sessionId)?.();\n scopes.set(scope.sessionId, scope);\n latest.delete(scope.sessionId);\n subscriptions.set(\n scope.sessionId,\n host.directEvents.subscribe(\n DYNAMIC_WORKFLOW_CHANNEL,\n scope.sessionId,\n (value) => {\n if (scopes.get(scope.sessionId) !== scope || !value || typeof value !== 'object') return;\n const snapshot = value as DynamicWorkflowSnapshot;\n if (snapshot.version !== 1 || snapshot.sessionId !== scope.sessionId || !Array.isArray(snapshot.runs))\n return;\n const detached = structuredClone(snapshot);\n latest.set(scope.sessionId, detached);\n host.publish(scope.sessionId, detached);\n },\n { replayLatest: true },\n ),\n );\n },\n sessionRemoved(id) {\n subscriptions.get(id)?.();\n subscriptions.delete(id);\n scopes.delete(id);\n latest.delete(id);\n },\n close() {\n for (const unsubscribe of subscriptions.values()) unsubscribe();\n subscriptions.clear();\n scopes.clear();\n latest.clear();\n },\n };\n },\n };\n}\n","import { defineChannel } from '@agimon-ai/po-core/extensionFile';\n\nimport { createWorkflowChannel } from '../../../services/workflowChannel';\n\nexport default defineChannel(createWorkflowChannel);\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverPlugin';\n\nexport default defineResource({\n name: 'codemode-how-to-dynamic-workflow',\n description:\n 'Let the person follow a long multi-phase or fan-out job live, with each child agent transcript in Activity. Use when a script runs many steps or subagents that someone should be able to watch.',\n kind: 'skill' as const,\n pinned: true,\n path: packageResourcePath(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/codemode-how-to-dynamic-workflow/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type PoServerSessionPlugin } from '@agimon-ai/po-core/serverPlugin';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverPlugin';\nimport { composeRootHooks, composeRootInjects } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport channelDynamicWorkflowRuns from '../src/extensions/(backend)/channel/dynamic-workflow-runs.server';\nimport resourceCodemodeHowToDynamicWorkflow from '../src/extensions/workspaces/sessions/(backend)/resource/codemode-how-to-dynamic-workflow.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const serverPlugin = defineServerPlugin({\n name: '@agimon-ai/po-dynamic-workflow',\n providerOverrides: composeServerProviderOverrides(rootSession),\n injects: composeRootInjects({ session: [rootSession] }),\n global: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return [() => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]; },\n }),\n workspace: (context) => ({\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n }),\n session: async (context) => {\n const scopeSession = await context.scopeRoot('session', rootSession, context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get channels(): PoServerSessionPlugin['channels'] { return defined([context.hosted('global') ? undefined : () => via({ frameType: 'dynamic_workflow_runs' }, at(channelDynamicWorkflowRuns, context))]); },\n get resources(): PoServerSessionPlugin['resources'] { return [at(resourceCodemodeHowToDynamicWorkflow, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): PoServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default serverPlugin;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/po-dynamic-workflow",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.4",
|
|
4
4
|
"description": "Tracked Mastra workflows for Po",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -55,17 +55,17 @@
|
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@agimon-ai/po-core": "0.0.0-alpha.
|
|
59
|
-
"@agimon-ai/po-native-components": "0.0.0-alpha.
|
|
60
|
-
"@agimon-ai/po-web-components": "0.0.0-alpha.
|
|
58
|
+
"@agimon-ai/po-core": "0.0.0-alpha.36",
|
|
59
|
+
"@agimon-ai/po-native-components": "0.0.0-alpha.36",
|
|
60
|
+
"@agimon-ai/po-web-components": "0.0.0-alpha.36",
|
|
61
61
|
"@deepseek-ai/cordis": "4.0.5",
|
|
62
62
|
"@mastra/core": "1.78.0",
|
|
63
63
|
"typebox": "1.3.37",
|
|
64
64
|
"zod": "3.25.76"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@agimon-ai/po-build": "0.0.0-alpha.
|
|
68
|
-
"@agimon-ai/vibe-lint-plugin-po-extension": "0.0.0-alpha.
|
|
67
|
+
"@agimon-ai/po-build": "0.0.0-alpha.36",
|
|
68
|
+
"@agimon-ai/vibe-lint-plugin-po-extension": "0.0.0-alpha.36",
|
|
69
69
|
"@earendil-works/pi-coding-agent": "1.3.0",
|
|
70
70
|
"@tanstack/react-store": "0.11.2",
|
|
71
71
|
"@tanstack/store": "0.11.2",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: codemode-how-to-dynamic-workflow
|
|
3
|
-
description:
|
|
3
|
+
description: 'Let the person follow a long multi-phase or fan-out job live, with each child agent transcript in Activity. Use when a script runs many steps or subagents that someone should be able to watch.'
|
|
4
4
|
pinned: true
|
|
5
5
|
---
|
|
6
6
|
|