@skaile/workspaces 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +81 -0
- package/dist/{asset-feeds-SS336LXB.js → asset-feeds-FMV3SJVQ.js} +4 -4
- package/dist/{asset-feeds-SS336LXB.js.map → asset-feeds-FMV3SJVQ.js.map} +1 -1
- package/dist/asset-manager/index.js +1 -1
- package/dist/bridge/drivers/claude-sdk.js +1 -1
- package/dist/bridge/drivers/codex.js +1 -1
- package/dist/bridge/drivers/continue.js +2 -2
- package/dist/bridge/drivers/echo.js +201 -1
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +3 -3
- package/dist/bridge/drivers/goose.js +2 -2
- package/dist/bridge/drivers/omp.js +1 -1
- package/dist/bridge/drivers/opencode.js +2 -2
- package/dist/bridge/drivers/qwen.js +3 -3
- package/dist/bridge/index.js +2 -2
- package/dist/bridge/src/drivers/echo.d.ts +16 -0
- package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
- package/dist/bridge/src/drivers/flow-script.d.ts +129 -0
- package/dist/bridge/src/drivers/flow-script.d.ts.map +1 -0
- package/dist/bridge/src/types.d.ts +32 -1
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-4DFBHEXQ.js → chunk-2257NSNY.js} +96 -17
- package/dist/chunk-2257NSNY.js.map +1 -0
- package/dist/{chunk-MWZGGCMF.js → chunk-2ZP6KIIQ.js} +2 -2
- package/dist/{chunk-MWZGGCMF.js.map → chunk-2ZP6KIIQ.js.map} +1 -1
- package/dist/{chunk-NKTFEV7Q.js → chunk-6XQ5QG63.js} +4 -4
- package/dist/{chunk-NKTFEV7Q.js.map → chunk-6XQ5QG63.js.map} +1 -1
- package/dist/{chunk-TNSCHS4I.js → chunk-APHTT5GE.js} +2 -2
- package/dist/{chunk-TNSCHS4I.js.map → chunk-APHTT5GE.js.map} +1 -1
- package/dist/{chunk-UNJGSISX.js → chunk-DEBMR6MK.js} +3 -3
- package/dist/{chunk-UNJGSISX.js.map → chunk-DEBMR6MK.js.map} +1 -1
- package/dist/{chunk-UQ5FK2AB.js → chunk-FRD4NU3W.js} +3 -3
- package/dist/{chunk-UQ5FK2AB.js.map → chunk-FRD4NU3W.js.map} +1 -1
- package/dist/{chunk-GKPUN2YQ.js → chunk-GEZMBQ3R.js} +3 -3
- package/dist/{chunk-GKPUN2YQ.js.map → chunk-GEZMBQ3R.js.map} +1 -1
- package/dist/{chunk-TJNEKDWS.js → chunk-IFCHOBEF.js} +6 -6
- package/dist/{chunk-TJNEKDWS.js.map → chunk-IFCHOBEF.js.map} +1 -1
- package/dist/{chunk-HKX5VSWQ.js → chunk-LVQO4X4U.js} +3 -3
- package/dist/{chunk-HKX5VSWQ.js.map → chunk-LVQO4X4U.js.map} +1 -1
- package/dist/{chunk-QY47VHNI.js → chunk-PU3FGN4T.js} +2 -2
- package/dist/{chunk-QY47VHNI.js.map → chunk-PU3FGN4T.js.map} +1 -1
- package/dist/{chunk-OMBYBUOF.js → chunk-SMWXVW6Z.js} +3 -3
- package/dist/{chunk-OMBYBUOF.js.map → chunk-SMWXVW6Z.js.map} +1 -1
- package/dist/{chunk-R5UMZEBH.js → chunk-TR6E5JOF.js} +6 -6
- package/dist/{chunk-R5UMZEBH.js.map → chunk-TR6E5JOF.js.map} +1 -1
- package/dist/{chunk-DTZ7JUZY.js → chunk-YNEJXDCZ.js} +250 -195
- package/dist/chunk-YNEJXDCZ.js.map +1 -0
- package/dist/{chunk-5DC744E3.js → chunk-ZDRAMXBS.js} +3 -3
- package/dist/{chunk-5DC744E3.js.map → chunk-ZDRAMXBS.js.map} +1 -1
- package/dist/cli/index.js +27 -27
- package/dist/connectors/index.js +1 -1
- package/dist/connectors/src/connector-prompt.d.ts +23 -0
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/credential-helper-script.d.ts +8 -5
- package/dist/connectors/src/credential-helper-script.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +1 -1
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts +4 -2
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/{ensure-sources-ELLWRQAT.js → ensure-sources-OJ5GIRZF.js} +4 -4
- package/dist/{ensure-sources-ELLWRQAT.js.map → ensure-sources-OJ5GIRZF.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +1 -1
- package/dist/factory-assets/connectors/deploy.js +1 -1
- package/dist/factory-assets/connectors/devserver.js +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +2 -2
- package/dist/factory-assets/connectors/flow.js +1 -1
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +1 -1
- package/dist/factory-assets/connectors/gmail.js +1 -1
- package/dist/factory-assets/connectors/googledrive.js +1 -1
- package/dist/factory-assets/connectors/local.js +1 -1
- package/dist/factory-assets/connectors/mattermost.js +1 -1
- package/dist/factory-assets/connectors/memory.js +1 -1
- package/dist/factory-assets/connectors/minio.js +1 -1
- package/dist/factory-assets/connectors/postgres.js +1 -1
- package/dist/factory-assets/connectors/s3.js +1 -1
- package/dist/factory-assets/connectors/sharepoint.js +1 -1
- package/dist/factory-assets/connectors/sqlite.js +1 -1
- package/dist/factory-assets/connectors/static-server.js +1 -1
- package/dist/factory-assets/connectors/tunnel.js +1 -1
- package/dist/factory-assets/connectors/webdav.js +1 -1
- package/dist/factory-assets/connectors/xstate-store.js +1 -1
- package/dist/factory-assets/connectors/xstate.js +1 -1
- package/dist/{helpers-7Y4DTFR6.js → helpers-PS37RNFV.js} +4 -4
- package/dist/{helpers-7Y4DTFR6.js.map → helpers-PS37RNFV.js.map} +1 -1
- package/dist/{library-publish-7AH63NKA.js → library-publish-CRG7JLDZ.js} +6 -6
- package/dist/{library-publish-7AH63NKA.js.map → library-publish-CRG7JLDZ.js.map} +1 -1
- package/dist/{open-library-J2PRSM3J.js → open-library-5SRCSBSY.js} +5 -5
- package/dist/{open-library-J2PRSM3J.js.map → open-library-5SRCSBSY.js.map} +1 -1
- package/dist/{project-CSNHUQFK.js → project-SM2VMQOZ.js} +5 -5
- package/dist/{project-CSNHUQFK.js.map → project-SM2VMQOZ.js.map} +1 -1
- package/dist/run-group-engine/index.js.map +1 -1
- package/dist/run-group-engine/src/rollup.d.ts +5 -3
- package/dist/run-group-engine/src/rollup.d.ts.map +1 -1
- package/dist/runner/index.js +5 -5
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-capability-wiring.d.ts +49 -0
- package/dist/runner/src/session-capability-wiring.d.ts.map +1 -0
- package/dist/runner/src/session-resource-handlers.d.ts +1 -2
- package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +1 -1
- package/dist/sdk/bridge.js +2 -2
- package/dist/sdk/index.js +5 -5
- package/dist/sdk/runner.js +5 -5
- package/dist/{setup-ETGRXSZG.js → setup-H3WCLOEH.js} +4 -4
- package/dist/{setup-ETGRXSZG.js.map → setup-H3WCLOEH.js.map} +1 -1
- package/dist/{source-4YG45QO6.js → source-Y7ZTBG2U.js} +6 -6
- package/dist/{source-4YG45QO6.js.map → source-Y7ZTBG2U.js.map} +1 -1
- package/dist/{source-manifest-publish-RFU4YBC6.js → source-manifest-publish-SXJ6LF4S.js} +7 -7
- package/dist/{source-manifest-publish-RFU4YBC6.js.map → source-manifest-publish-SXJ6LF4S.js.map} +1 -1
- package/dist/tui/index.js +5 -5
- package/dist/types/src/run-group.d.ts +2 -2
- package/dist/types/src/run-group.d.ts.map +1 -1
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4DFBHEXQ.js.map +0 -1
- package/dist/chunk-DTZ7JUZY.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../bridge/src/drivers/echo.ts"],"names":["events"],"mappings":"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","file":"echo.js","sourcesContent":["import type { DriverTarget } from \"@skaile/workspaces/plugin-registry\";\nimport type { Logger } from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nimport { dispatchCapability } from \"../capability-dispatch.js\";\nimport { getBridgeLogger } from \"../logger.js\";\nimport { BUILTIN_DRIVER_CATALOG } from \"../registry.js\";\nimport {\n type AgentConfig,\n AgentDriver,\n type AgentEvent,\n type BridgeCapabilityTool,\n type DriverInfo,\n} from \"../types.js\";\n\n/**\n * Echo/mock driver for E2E testing in docker mode.\n *\n * Runs inside a real Docker container with real WebSocket transport and\n * session lifecycle, but generates deterministic keyword-triggered responses\n * instead of calling the Anthropic API. This lets E2E tests exercise the\n * full infrastructure (containers, WebSocket, session management, message\n * persistence) without needing real AI credentials.\n *\n * Keyword triggers match the MockAgentClient in\n * `platform/backend/libs/agent-gateway/src/mock-agent-client.ts` — the\n * same test messages (\"test toolcall\", \"test question\", etc.) produce\n * the same events.\n *\n * Enable by setting `SKAILE_AGENT_DRIVER=echo` in the container env,\n * or by passing `{ driver: 'echo' }` in the runner config.\n *\n * @docLink packages/bridge/drivers#echo-driver\n */\nexport class EchoDriver extends AgentDriver {\n readonly driverInfo: DriverInfo = {\n id: \"echo\",\n name: \"Echo (E2E mock)\",\n modelAgnostic: true,\n supportsInBandAbort: false,\n };\n\n private readonly log: Logger = getBridgeLogger(\"echo\");\n private running = false;\n private readonly config: AgentConfig;\n\n constructor(config: AgentConfig) {\n super();\n this.config = config;\n }\n\n /**\n * Test surface: returns the tool list the LLM would see for this turn.\n * Composition: the registry hooks (Protocol v2) take precedence; legacy\n * `mcpServers` is not enumerated here (the echo driver never exposed MCP\n * tools to the LLM by name).\n */\n listCapabilityTools(): BridgeCapabilityTool[] {\n return this.config.capabilities?.composeTools() ?? [];\n }\n\n /**\n * Test surface: invoke a registered capability through the dispatch\n * helper. Mirrors what a real driver would do when the LLM produced a\n * tool_use for the given name — applies fire-and-forget, render emission,\n * and fallback text. Returns the structured dispatch result so tests can\n * assert immediate-vs-background resolution.\n */\n async invokeCapabilityForTest(\n name: string,\n input: unknown,\n ): Promise<{ result: unknown; background: boolean }> {\n const hooks = this.config.capabilities;\n if (!hooks) throw new Error(\"EchoDriver: no capability hooks configured\");\n const callId = `echo-cap-${Date.now()}`;\n const out = await dispatchCapability(hooks, callId, name, input, (err) =>\n this.log.warn(\"background capability handler failed\", {\n name,\n error: String(err),\n }),\n );\n return out;\n }\n\n async start(): Promise<void> {\n this.running = true;\n this.log.info(\"driver started\");\n }\n\n async prompt(message: string): Promise<void> {\n if (!this.running) return;\n const content = message.toLowerCase();\n this.log.info(\"received prompt\", { preview: message.slice(0, 80), length: message.length });\n\n // Small delay to simulate real agent processing\n await new Promise((resolve) => setTimeout(resolve, 200));\n\n // Phase 7B test seam — explicit capability invocation keyword. Lets E2E\n // tests drive `dispatchCapability` from a chat prompt without a real LLM.\n // Format: `[test-cap:<name>] {json}`. Anything after the closing bracket\n // is parsed as JSON input; on parse error we fall back to `{}`.\n const capMatch = /^\\s*\\[test-cap:([\\w.\\-_]+)\\]\\s*(.*)$/s.exec(message);\n if (capMatch) {\n const name = capMatch[1] ?? \"\";\n const rawInput = (capMatch[2] ?? \"\").trim();\n let input: unknown = {};\n if (rawInput.length > 0) {\n try {\n input = JSON.parse(rawInput);\n } catch (err) {\n this.log.warn(\"test-cap input was not valid JSON; defaulting to {}\", {\n error: String(err),\n preview: rawInput.slice(0, 80),\n });\n }\n }\n const events = await this.runCapabilityKeyword(name, input);\n for (const event of events) {\n this.emit(\"agent-event\", event);\n await new Promise((resolve) => setTimeout(resolve, 20));\n }\n this.emit(\"agent-event\", { type: \"agent_end\" });\n return;\n }\n\n const events = buildEchoEvents(content, message);\n for (const event of events) {\n this.emit(\"agent-event\", event);\n // Small gap between events to let the transport process each one\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n // Signal turn completion — the runner waits for this before accepting\n // the next prompt. Without it, the runner stays stuck after the first message.\n this.emit(\"agent-event\", { type: \"agent_end\" });\n }\n\n /**\n * Phase 7B helper — drive a single capability through the dispatcher and\n * surface the structured outcome as a result event the LLM-side test code\n * can assert against. Used exclusively by the `[test-cap:<name>]` prompt\n * keyword above; never wired into normal chat flow.\n */\n private async runCapabilityKeyword(name: string, input: unknown): Promise<AgentEvent[]> {\n const events: AgentEvent[] = [];\n if (!this.config.capabilities) {\n return textAndResult(`echo[test-cap]: no capability hooks configured (skipping ${name})`);\n }\n try {\n const out = await this.invokeCapabilityForTest(name, input);\n const summary = `echo[test-cap]: invoked ${name} background=${String(out.background)} result=${safeStringify(out.result)}`;\n events.push(...textAndResult(summary));\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n events.push({\n type: \"error\",\n error: `echo[test-cap]: ${name} failed: ${msg}`,\n fatal: false,\n });\n events.push(...textAndResult(`echo[test-cap]: ${name} errored (${msg})`));\n }\n return events;\n }\n\n async abort(): Promise<void> {\n this.log.info(\"abort requested\");\n }\n\n kill(): void {\n this.running = false;\n this.log.info(\"killed\");\n }\n\n async resetSession(): Promise<void> {\n this.log.info(\"session reset\");\n }\n\n get isRunning(): boolean {\n return this.running;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Echo response generation — mirrors MockAgentClient.buildMockEvents\n// ---------------------------------------------------------------------------\n\nfunction safeStringify(v: unknown): string {\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\nfunction textAndResult(summary: string): AgentEvent[] {\n return [\n {\n type: \"message_start\",\n message: { role: \"assistant\", content: summary },\n },\n {\n type: \"message_end\",\n message: { role: \"assistant\", content: summary },\n },\n {\n type: \"result\",\n subtype: \"success\",\n summary,\n costUsd: 0,\n },\n ];\n}\n\nfunction buildEchoEvents(content: string, originalPrompt: string): AgentEvent[] {\n const events: AgentEvent[] = [];\n\n if (content.includes(\"test all\")) {\n events.push(\n { type: \"tool_call\", name: \"Read\", tool: { name: \"Read\" }, input: \"prisma/schema.prisma\" },\n { type: \"tool_execution_end\", toolName: \"Read\" },\n {\n type: \"tool_call\",\n name: \"Write\",\n tool: { name: \"Write\" },\n input: \"src/modules/sprint/sprint.service.ts\",\n },\n { type: \"tool_execution_end\", toolName: \"Write\" },\n );\n events.push(\n ...textAndResult(\n \"All operations completed successfully. Created sprint service, updated schema, started dev server, and ran E2E tests.\",\n ),\n );\n } else if (content.includes(\"test toolcall\")) {\n events.push(\n {\n type: \"tool_call\",\n name: \"Read\",\n tool: { name: \"Read\" },\n input: \"platform/prisma/schema.prisma\",\n },\n { type: \"tool_execution_end\", toolName: \"Read\" },\n );\n events.push(\n ...textAndResult(\n \"I've read the schema and found 42 models. The data model looks well-structured.\",\n ),\n );\n } else if (content.includes(\"test question\")) {\n // Emit a message that asks the user a question (the runner normalizer\n // converts this to a `question` AgentEvent for the transport layer)\n events.push(\n ...textAndResult(\n \"The blueprint calls for a relational database. Which engine should I target? \" +\n \"This will affect the Prisma provider, Docker Compose setup, and the connection string.\\n\\n\" +\n \"Options: PostgreSQL, MySQL, SQLite\",\n ),\n );\n } else if (content.includes(\"test error\")) {\n events.push({\n type: \"error\",\n error:\n \"AI provider returned HTTP 429 — rate limit exceeded. The request will be retried automatically in 35 seconds.\",\n fatal: false,\n });\n } else if (content.includes(\"test fatal\")) {\n events.push({\n type: \"error\",\n error:\n \"Session agent was killed by the container runtime (OOM — memory limit 2 GB exceeded). The session cannot continue.\",\n fatal: true,\n });\n } else {\n // Default echo response\n const summary =\n `I received your message: \"${originalPrompt}\". I'm the Skaile AI assistant running in echo mode. ` +\n `This is a deterministic mock response for E2E testing.`;\n events.push(...textAndResult(summary));\n }\n\n return events;\n}\n\n/**\n * `DriverTarget` wrapper for the echo driver. Registered into the plugin\n * registry by `registerBuiltinDrivers()`.\n */\nexport const echoDriverTarget: DriverTarget<AgentConfig> = {\n id: \"echo\",\n displayName: BUILTIN_DRIVER_CATALOG.echo?.name ?? \"Echo (E2E mock)\",\n apiVersion: 1,\n // Drivers take AgentConfig; passthrough — full schema validation is out of scope.\n configSchema: z.custom<AgentConfig>(() => true),\n create: async (config, _ctx) => new EchoDriver(config),\n listModels: async (apiKeys) =>\n new EchoDriver({ cwd: process.cwd(), sessionId: \"model-list\", apiKeys }).listModels(),\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../bridge/src/drivers/flow-script.ts","../../../bridge/src/drivers/echo.ts"],"names":["events"],"mappings":"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","file":"echo.js","sourcesContent":["/**\n * Scripted-flow decision logic for the echo driver.\n *\n * Pure, deterministic policy that maps a live {@link FlowExecution} snapshot\n * (plus an optional per-node script) to the single next flow-adapter mutation\n * the driver should emit this iteration. The echo driver calls this in a loop\n * per turn (see `echo.ts`), executing each returned action against the\n * runner-injected {@link FlowTestDriverHook} until it yields (`null`) or emits\n * a turn-ending action.\n *\n * The policy mirrors what a real LLM orchestrator would do, but without an\n * LLM: it reacts to state each turn, so a host can drive a flow to `complete`,\n * park it at an approval/input gate, and exercise the reject/recover path\n * simply by applying host mutations (`applyApproval`, `applyInput`, …) between\n * turns. No new protocol, no flow-contract change — it only calls the existing\n * FlowAdapter agent-tool operations.\n *\n * @docLink packages/bridge/drivers#scripted-flow\n * @since 3.6.0\n */\n\nimport type { FlowExecution, NodeExecution } from \"@skaile/workspaces/types\";\n\n/**\n * What the scripted driver should do when a node reaches its decision point.\n *\n * - `auto` (default): follow the flow's `autonomousMode` — `complete_node`\n * when autonomous, else `request_approval`.\n * - `complete`: always `complete_node` (autonomous-style, even if the flow's\n * autonomousMode is false — the adapter allows it only when autonomous, so\n * use with autonomous flows).\n * - `approve`: always `request_approval` (park at an approval gate).\n * - `input`: `request_input` once; after the host applies input, fall back to\n * `auto` behaviour.\n * - `skip`: `skip_node` (optional nodes only).\n * - `fail`: `fail_node`. With `recoverable: false` (default) this is terminal.\n * With `recoverable: true` the node returns to `available`; the driver\n * re-emits the recoverable failure `failCount` times (default 1) and then\n * proceeds as `auto` — it never deadlocks on a recoverable fail.\n */\nexport type OnRun = \"auto\" | \"complete\" | \"approve\" | \"input\" | \"skip\" | \"fail\";\n\n/**\n * What to do when a node returns to `available` after a rejection.\n *\n * - `retry` (default): re-drive it — `start_node` again, then its `onRun`.\n * - `fail`: `fail_node(recoverable: false)` — exercises the terminal path.\n */\nexport type OnReject = \"retry\" | \"fail\";\n\n/** Per-node scripting directive. All fields optional. */\nexport interface FlowNodeDirective {\n onRun?: OnRun;\n onReject?: OnReject;\n /** For `onRun: \"input\"` — the input request shown to the host. */\n input?: { prompt?: string; schema?: unknown };\n /** For `onRun: \"fail\"` — whether the failure is recoverable. Default false. */\n recoverable?: boolean;\n /**\n * For `onRun: \"fail\"` with `recoverable: true` — how many recoverable\n * failures to emit before the node proceeds as `auto`. Default 1. Counted\n * from the node's own `errorHistory`, so the policy stays a pure function of\n * state (no driver-instance bookkeeping) and never deadlocks.\n */\n failCount?: number;\n /** Summary text used for `complete_node` / `request_approval` / failures. */\n summary?: string;\n}\n\n/**\n * A scripted-flow program. Empty (`{}`) means \"canonical policy\": start each\n * available node, then complete (autonomous) or request approval (interactive)\n * — enough to drive the autonomous-complete, approval-gate, and reject/recover\n * scenarios with no per-node scripting at all.\n */\nexport interface FlowScript {\n /** Per-node overrides, keyed by node id. */\n nodes?: Record<string, FlowNodeDirective>;\n /** Fallback directive for any node without its own entry. */\n default?: FlowNodeDirective;\n}\n\n/** A single flow-adapter mutation the driver will execute. */\nexport type FlowAction =\n | { op: \"start_node\"; nodeId: string }\n | { op: \"complete_node\"; nodeId: string; summary: string }\n | { op: \"request_approval\"; nodeId: string; summary: string }\n | { op: \"request_input\"; nodeId: string; prompt: string; schema: string }\n | { op: \"skip_node\"; nodeId: string }\n | { op: \"fail_node\"; nodeId: string; message: string; recoverable: boolean };\n\n/** Ops that end the agent turn (the runner yields until the host acts). */\nconst TURN_ENDING: ReadonlySet<FlowAction[\"op\"]> = new Set([\n \"request_approval\",\n \"request_input\",\n \"fail_node\",\n]);\n\n/** Whether an action ends the turn (driver stops looping after emitting it). */\nexport function isTurnEnding(action: FlowAction): boolean {\n return TURN_ENDING.has(action.op);\n}\n\n/** Map a {@link FlowAction} to the `executeOp` argument bag the adapter expects. */\nexport function actionArgs(action: FlowAction): Record<string, unknown> {\n switch (action.op) {\n case \"start_node\":\n case \"skip_node\":\n return { nodeId: action.nodeId };\n case \"complete_node\":\n return { nodeId: action.nodeId, summary: action.summary };\n case \"request_approval\":\n return { nodeId: action.nodeId, summary: action.summary };\n case \"request_input\":\n return { nodeId: action.nodeId, prompt: action.prompt, schema: action.schema };\n case \"fail_node\":\n return {\n nodeId: action.nodeId,\n message: action.message,\n recoverable: String(action.recoverable),\n };\n }\n}\n\nfunction summaryFor(d: FlowNodeDirective, n: NodeExecution): string {\n return d.summary ?? `Scripted output for ${n.id}`;\n}\n\n/**\n * Decide the single next flow action for the current state, or `null` to yield\n * (nothing to do this iteration — wait for a host mutation).\n *\n * Priority order: resolve approved gates → advance running nodes → start (or\n * skip / terminally-fail) available nodes. Terminal flow states and gates with\n * no decision / input yet yield.\n *\n * Pure — the fail bookkeeping (how many recoverable failures a node has already\n * emitted) is read from the node's own `errorHistory`, so no external counter is\n * needed and a recoverable `fail` directive can never deadlock.\n */\nexport function decideFlowAction(state: FlowExecution, script: FlowScript): FlowAction | null {\n // Terminal flow — never fight a completed/failed/cancelled run.\n if (state.status === \"complete\" || state.status === \"failed\" || state.status === \"cancelled\") {\n return null;\n }\n\n const dir = (id: string): FlowNodeDirective => script.nodes?.[id] ?? script.default ?? {};\n const nodes = Object.values(state.nodes);\n\n // 1. Approved gate → complete.\n for (const n of nodes) {\n if (n.status === \"awaiting_approval\" && n.approval?.decision === \"approved\") {\n return { op: \"complete_node\", nodeId: n.id, summary: summaryFor(dir(n.id), n) };\n }\n }\n\n // 2. Running node → per directive.\n for (const n of nodes) {\n if (n.status !== \"running\") continue;\n const d = dir(n.id);\n const onRun: OnRun = d.onRun ?? \"auto\";\n const resolved: OnRun =\n onRun === \"auto\" ? (state.autonomousMode ? \"complete\" : \"approve\") : onRun;\n\n if (resolved === \"complete\") {\n return { op: \"complete_node\", nodeId: n.id, summary: summaryFor(d, n) };\n }\n if (resolved === \"approve\") {\n return { op: \"request_approval\", nodeId: n.id, summary: summaryFor(d, n) };\n }\n if (resolved === \"input\") {\n const lastInput = n.inputHistory[n.inputHistory.length - 1];\n if (lastInput && lastInput.response !== undefined) {\n // Input already provided — proceed as if `auto`.\n return state.autonomousMode\n ? { op: \"complete_node\", nodeId: n.id, summary: summaryFor(d, n) }\n : { op: \"request_approval\", nodeId: n.id, summary: summaryFor(d, n) };\n }\n return {\n op: \"request_input\",\n nodeId: n.id,\n prompt: d.input?.prompt ?? `Provide input for ${n.id}`,\n schema: JSON.stringify(d.input?.schema ?? { kind: \"text\" }),\n };\n }\n if (resolved === \"fail\") {\n const recoverable = d.recoverable ?? false;\n if (!recoverable) {\n // Terminal fail — the adapter marks node + flow `failed`, so the\n // terminal-status guard above stops any re-fire on later turns.\n return {\n op: \"fail_node\",\n nodeId: n.id,\n message: d.summary ?? `Scripted failure for ${n.id}`,\n recoverable: false,\n };\n }\n // Recoverable fail — emit up to `failCount` times (counting the node's\n // own recorded recoverable errors), then proceed as `auto` so the node\n // is not stranded in a re-drive loop.\n const emitted = n.errorHistory.filter((e) => e.recoverable).length;\n const failCount = Math.max(1, d.failCount ?? 1);\n if (emitted < failCount) {\n return {\n op: \"fail_node\",\n nodeId: n.id,\n message: d.summary ?? `Scripted recoverable failure for ${n.id}`,\n recoverable: true,\n };\n }\n return state.autonomousMode\n ? { op: \"complete_node\", nodeId: n.id, summary: summaryFor(d, n) }\n : { op: \"request_approval\", nodeId: n.id, summary: summaryFor(d, n) };\n }\n // `skip` while running is illegal; complete instead to avoid a deadlock.\n return { op: \"complete_node\", nodeId: n.id, summary: summaryFor(d, n) };\n }\n\n // 3. Available node → terminally-fail (post-reject), skip, or start.\n for (const n of nodes) {\n if (n.status !== \"available\") continue;\n const d = dir(n.id);\n const lastApproval = n.approvalHistory[n.approvalHistory.length - 1];\n if (lastApproval?.decision === \"rejected\" && d.onReject === \"fail\") {\n return {\n op: \"fail_node\",\n nodeId: n.id,\n message: d.summary ?? `Rejected and not recoverable: ${n.id}`,\n recoverable: false,\n };\n }\n if (d.onRun === \"skip\") {\n return { op: \"skip_node\", nodeId: n.id };\n }\n return { op: \"start_node\", nodeId: n.id };\n }\n\n // 4. Nothing actionable — awaiting_approval (no decision), awaiting_input\n // (no response), or fully drained. Yield.\n return null;\n}\n\n/**\n * Parse a `[test-flow]` sentinel body into a {@link FlowScript}. An empty body\n * yields the canonical (empty) script. Malformed JSON is a hard error so tests\n * fail loudly rather than silently running the wrong policy.\n */\nexport function parseFlowScript(body: string): FlowScript {\n const trimmed = body.trim();\n if (trimmed.length === 0) return {};\n const parsed: unknown = JSON.parse(trimmed);\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"flow script must be a JSON object\");\n }\n return parsed as FlowScript;\n}\n","import type { DriverTarget } from \"@skaile/workspaces/plugin-registry\";\nimport type { Logger } from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nimport { dispatchCapability } from \"../capability-dispatch.js\";\nimport { getBridgeLogger } from \"../logger.js\";\nimport { BUILTIN_DRIVER_CATALOG } from \"../registry.js\";\nimport {\n type AgentConfig,\n AgentDriver,\n type AgentEvent,\n type BridgeCapabilityTool,\n type DriverInfo,\n} from \"../types.js\";\nimport {\n actionArgs,\n type FlowScript,\n decideFlowAction,\n isTurnEnding,\n parseFlowScript,\n} from \"./flow-script.js\";\n\n/**\n * Echo/mock driver for E2E testing in docker mode.\n *\n * Runs inside a real Docker container with real WebSocket transport and\n * session lifecycle, but generates deterministic keyword-triggered responses\n * instead of calling the Anthropic API. This lets E2E tests exercise the\n * full infrastructure (containers, WebSocket, session management, message\n * persistence) without needing real AI credentials.\n *\n * Keyword triggers match the MockAgentClient in\n * `platform/backend/libs/agent-gateway/src/mock-agent-client.ts` — the\n * same test messages (\"test toolcall\", \"test question\", etc.) produce\n * the same events.\n *\n * Enable by setting `SKAILE_AGENT_DRIVER=echo` in the container env,\n * or by passing `{ driver: 'echo' }` in the runner config.\n *\n * @docLink packages/bridge/drivers#echo-driver\n */\nexport class EchoDriver extends AgentDriver {\n readonly driverInfo: DriverInfo = {\n id: \"echo\",\n name: \"Echo (E2E mock)\",\n modelAgnostic: true,\n supportsInBandAbort: false,\n };\n\n private readonly log: Logger = getBridgeLogger(\"echo\");\n private running = false;\n private readonly config: AgentConfig;\n\n /**\n * Scripted-flow mode state (workspaces#396). Enabled by a `[test-flow]`\n * sentinel chat message; once on, orchestrator-prompt turns are driven\n * deterministically against `config.flowTestDriver`. `null` script ⇒ mode\n * off (default echo behaviour, unchanged).\n */\n private flowScript: FlowScript | null = null;\n\n constructor(config: AgentConfig) {\n super();\n this.config = config;\n }\n\n /**\n * Test surface: returns the tool list the LLM would see for this turn.\n * Composition: the registry hooks (Protocol v2) take precedence; legacy\n * `mcpServers` is not enumerated here (the echo driver never exposed MCP\n * tools to the LLM by name).\n */\n listCapabilityTools(): BridgeCapabilityTool[] {\n return this.config.capabilities?.composeTools() ?? [];\n }\n\n /**\n * Test surface: invoke a registered capability through the dispatch\n * helper. Mirrors what a real driver would do when the LLM produced a\n * tool_use for the given name — applies fire-and-forget, render emission,\n * and fallback text. Returns the structured dispatch result so tests can\n * assert immediate-vs-background resolution.\n */\n async invokeCapabilityForTest(\n name: string,\n input: unknown,\n ): Promise<{ result: unknown; background: boolean }> {\n const hooks = this.config.capabilities;\n if (!hooks) throw new Error(\"EchoDriver: no capability hooks configured\");\n const callId = `echo-cap-${Date.now()}`;\n const out = await dispatchCapability(hooks, callId, name, input, (err) =>\n this.log.warn(\"background capability handler failed\", {\n name,\n error: String(err),\n }),\n );\n return out;\n }\n\n async start(): Promise<void> {\n this.running = true;\n this.log.info(\"driver started\");\n }\n\n async prompt(message: string): Promise<void> {\n if (!this.running) return;\n const content = message.toLowerCase();\n this.log.info(\"received prompt\", { preview: message.slice(0, 80), length: message.length });\n\n // Small delay to simulate real agent processing\n await new Promise((resolve) => setTimeout(resolve, 200));\n\n // Scripted-flow test seam (workspaces#396) — a `[test-flow]` sentinel\n // arms deterministic flow driving for this session and (optionally)\n // carries a JSON script. Format: `[test-flow] {json}`; empty body ⇒\n // canonical policy. Must be handled before the flow-turn branch below.\n const flowMatch = /^\\s*\\[test-flow\\]\\s*(.*)$/s.exec(message);\n if (flowMatch) {\n let summary: string;\n try {\n this.flowScript = parseFlowScript(flowMatch[1] ?? \"\");\n summary = \"echo[test-flow]: scripted-flow mode armed\";\n } catch (err) {\n this.flowScript = null;\n summary = `echo[test-flow]: invalid script — ${err instanceof Error ? err.message : String(err)}`;\n this.emit(\"agent-event\", { type: \"error\", error: summary, fatal: false });\n }\n for (const event of textAndResult(summary)) this.emit(\"agent-event\", event);\n this.emit(\"agent-event\", { type: \"agent_end\" });\n return;\n }\n\n // Scripted-flow turn — the runner reassembles the orchestrator prompt on\n // every flow turn; when scripted-flow mode is armed and a flow driver hook\n // is present, drive nodes deterministically instead of echoing text.\n if (this.flowScript && this.config.flowTestDriver && isFlowTurn(message)) {\n await this.runScriptedFlowTurn();\n return;\n }\n\n // Phase 7B test seam — explicit capability invocation keyword. Lets E2E\n // tests drive `dispatchCapability` from a chat prompt without a real LLM.\n // Format: `[test-cap:<name>] {json}`. Anything after the closing bracket\n // is parsed as JSON input; on parse error we fall back to `{}`.\n const capMatch = /^\\s*\\[test-cap:([\\w.\\-_]+)\\]\\s*(.*)$/s.exec(message);\n if (capMatch) {\n const name = capMatch[1] ?? \"\";\n const rawInput = (capMatch[2] ?? \"\").trim();\n let input: unknown = {};\n if (rawInput.length > 0) {\n try {\n input = JSON.parse(rawInput);\n } catch (err) {\n this.log.warn(\"test-cap input was not valid JSON; defaulting to {}\", {\n error: String(err),\n preview: rawInput.slice(0, 80),\n });\n }\n }\n const events = await this.runCapabilityKeyword(name, input);\n for (const event of events) {\n this.emit(\"agent-event\", event);\n await new Promise((resolve) => setTimeout(resolve, 20));\n }\n this.emit(\"agent-event\", { type: \"agent_end\" });\n return;\n }\n\n const events = buildEchoEvents(content, message);\n for (const event of events) {\n this.emit(\"agent-event\", event);\n // Small gap between events to let the transport process each one\n await new Promise((resolve) => setTimeout(resolve, 50));\n }\n // Signal turn completion — the runner waits for this before accepting\n // the next prompt. Without it, the runner stays stuck after the first message.\n this.emit(\"agent-event\", { type: \"agent_end\" });\n }\n\n /**\n * Phase 7B helper — drive a single capability through the dispatcher and\n * surface the structured outcome as a result event the LLM-side test code\n * can assert against. Used exclusively by the `[test-cap:<name>]` prompt\n * keyword above; never wired into normal chat flow.\n */\n private async runCapabilityKeyword(name: string, input: unknown): Promise<AgentEvent[]> {\n const events: AgentEvent[] = [];\n if (!this.config.capabilities) {\n return textAndResult(`echo[test-cap]: no capability hooks configured (skipping ${name})`);\n }\n try {\n const out = await this.invokeCapabilityForTest(name, input);\n const summary = `echo[test-cap]: invoked ${name} background=${String(out.background)} result=${safeStringify(out.result)}`;\n events.push(...textAndResult(summary));\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n events.push({\n type: \"error\",\n error: `echo[test-cap]: ${name} failed: ${msg}`,\n fatal: false,\n });\n events.push(...textAndResult(`echo[test-cap]: ${name} errored (${msg})`));\n }\n return events;\n }\n\n /**\n * Scripted-flow turn (workspaces#396). Reads the live flow state via the\n * runner-injected `flowTestDriver` hook and executes the scripted next\n * action(s) until the policy yields or emits a turn-ending action. Each\n * mutation fires the adapter's `onChange` (→ host `state_changed`) and, when\n * the runner wires the stimulus bus, queues the follow-up turn — so the\n * driver advances one step at a time exactly like a real LLM orchestrator.\n */\n private async runScriptedFlowTurn(): Promise<void> {\n const hook = this.config.flowTestDriver;\n const script = this.flowScript;\n if (!hook || !script) {\n this.emit(\"agent-event\", { type: \"agent_end\" });\n return;\n }\n\n const executed: string[] = [];\n // Hard cap — the policy is monotonic, but never let a bug spin forever.\n const MAX_STEPS = 200;\n for (let i = 0; i < MAX_STEPS; i++) {\n const state = hook.getState();\n if (!state) break;\n const action = decideFlowAction(state, script);\n if (!action) break;\n\n this.emit(\"agent-event\", {\n type: \"tool_call\",\n name: action.op,\n tool: { name: action.op },\n input: action.nodeId,\n });\n try {\n await hook.execute(action.op, actionArgs(action));\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.log.warn(\"scripted flow op failed\", {\n op: action.op,\n nodeId: action.nodeId,\n error: msg,\n });\n this.emit(\"agent-event\", {\n type: \"error\",\n error: `echo[test-flow]: ${action.op}(${action.nodeId}) failed: ${msg}`,\n fatal: false,\n });\n break;\n }\n this.emit(\"agent-event\", { type: \"tool_execution_end\", toolName: action.op });\n executed.push(`${action.op}(${action.nodeId})`);\n if (isTurnEnding(action)) break;\n }\n\n const summary =\n executed.length > 0\n ? `echo[test-flow]: ${executed.join(\" → \")}`\n : \"echo[test-flow]: no action (yielding to host)\";\n for (const event of textAndResult(summary)) this.emit(\"agent-event\", event);\n this.emit(\"agent-event\", { type: \"agent_end\" });\n }\n\n async abort(): Promise<void> {\n this.log.info(\"abort requested\");\n }\n\n kill(): void {\n this.running = false;\n this.log.info(\"killed\");\n }\n\n async resetSession(): Promise<void> {\n this.log.info(\"session reset\");\n }\n\n get isRunning(): boolean {\n return this.running;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Echo response generation — mirrors MockAgentClient.buildMockEvents\n// ---------------------------------------------------------------------------\n\n/**\n * A flow turn is recognised by the orchestrator prompt's stable header\n * (`buildOrchestratorPrompt` in the flow connector). Detection is header-only —\n * the driver reads live state through the injected hook, never by parsing the\n * prompt body.\n */\nfunction isFlowTurn(message: string): boolean {\n return message.startsWith(\"# Flow Execution Context\");\n}\n\nfunction safeStringify(v: unknown): string {\n try {\n return JSON.stringify(v);\n } catch {\n return String(v);\n }\n}\n\nfunction textAndResult(summary: string): AgentEvent[] {\n return [\n {\n type: \"message_start\",\n message: { role: \"assistant\", content: summary },\n },\n {\n type: \"message_end\",\n message: { role: \"assistant\", content: summary },\n },\n {\n type: \"result\",\n subtype: \"success\",\n summary,\n costUsd: 0,\n },\n ];\n}\n\nfunction buildEchoEvents(content: string, originalPrompt: string): AgentEvent[] {\n const events: AgentEvent[] = [];\n\n if (content.includes(\"test all\")) {\n events.push(\n { type: \"tool_call\", name: \"Read\", tool: { name: \"Read\" }, input: \"prisma/schema.prisma\" },\n { type: \"tool_execution_end\", toolName: \"Read\" },\n {\n type: \"tool_call\",\n name: \"Write\",\n tool: { name: \"Write\" },\n input: \"src/modules/sprint/sprint.service.ts\",\n },\n { type: \"tool_execution_end\", toolName: \"Write\" },\n );\n events.push(\n ...textAndResult(\n \"All operations completed successfully. Created sprint service, updated schema, started dev server, and ran E2E tests.\",\n ),\n );\n } else if (content.includes(\"test toolcall\")) {\n events.push(\n {\n type: \"tool_call\",\n name: \"Read\",\n tool: { name: \"Read\" },\n input: \"platform/prisma/schema.prisma\",\n },\n { type: \"tool_execution_end\", toolName: \"Read\" },\n );\n events.push(\n ...textAndResult(\n \"I've read the schema and found 42 models. The data model looks well-structured.\",\n ),\n );\n } else if (content.includes(\"test question\")) {\n // Emit a message that asks the user a question (the runner normalizer\n // converts this to a `question` AgentEvent for the transport layer)\n events.push(\n ...textAndResult(\n \"The blueprint calls for a relational database. Which engine should I target? \" +\n \"This will affect the Prisma provider, Docker Compose setup, and the connection string.\\n\\n\" +\n \"Options: PostgreSQL, MySQL, SQLite\",\n ),\n );\n } else if (content.includes(\"test error\")) {\n events.push({\n type: \"error\",\n error:\n \"AI provider returned HTTP 429 — rate limit exceeded. The request will be retried automatically in 35 seconds.\",\n fatal: false,\n });\n } else if (content.includes(\"test fatal\")) {\n events.push({\n type: \"error\",\n error:\n \"Session agent was killed by the container runtime (OOM — memory limit 2 GB exceeded). The session cannot continue.\",\n fatal: true,\n });\n } else {\n // Default echo response\n const summary =\n `I received your message: \"${originalPrompt}\". I'm the Skaile AI assistant running in echo mode. ` +\n `This is a deterministic mock response for E2E testing.`;\n events.push(...textAndResult(summary));\n }\n\n return events;\n}\n\n/**\n * `DriverTarget` wrapper for the echo driver. Registered into the plugin\n * registry by `registerBuiltinDrivers()`.\n */\nexport const echoDriverTarget: DriverTarget<AgentConfig> = {\n id: \"echo\",\n displayName: BUILTIN_DRIVER_CATALOG.echo?.name ?? \"Echo (E2E mock)\",\n apiVersion: 1,\n // Drivers take AgentConfig; passthrough — full schema validation is out of scope.\n configSchema: z.custom<AgentConfig>(() => true),\n create: async (config, _ctx) => new EchoDriver(config),\n listModels: async (apiKeys) =>\n new EchoDriver({ cwd: process.cwd(), sessionId: \"model-list\", apiKeys }).listModels(),\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
export { GeminiDriver, GeminiFamilyDriver, geminiDriverTarget } from '../../chunk-6XQ5QG63.js';
|
|
2
|
+
import '../../chunk-FRD4NU3W.js';
|
|
3
3
|
import '../../chunk-BMQKMOQY.js';
|
|
4
4
|
import '../../chunk-GAH4YRCI.js';
|
|
5
|
-
import '../../chunk-
|
|
5
|
+
import '../../chunk-APHTT5GE.js';
|
|
6
6
|
import '../../chunk-6E6PKKAD.js';
|
|
7
7
|
import '../../chunk-JB35MVBN.js';
|
|
8
8
|
import '../../chunk-NSBPE2FW.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-
|
|
1
|
+
import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-FRD4NU3W.js';
|
|
2
2
|
import '../../chunk-GAH4YRCI.js';
|
|
3
|
-
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-
|
|
3
|
+
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-APHTT5GE.js';
|
|
4
4
|
import '../../chunk-6E6PKKAD.js';
|
|
5
5
|
import '../../chunk-JB35MVBN.js';
|
|
6
6
|
import '../../chunk-NSBPE2FW.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { classifyGenericErrorMessage } from '../../chunk-GAH4YRCI.js';
|
|
2
|
-
import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-
|
|
2
|
+
import { BUILTIN_DRIVER_CATALOG, AgentDriver, getBridgeLogger } from '../../chunk-APHTT5GE.js';
|
|
3
3
|
import '../../chunk-6E6PKKAD.js';
|
|
4
4
|
import '../../chunk-JB35MVBN.js';
|
|
5
5
|
import '../../chunk-NSBPE2FW.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-
|
|
1
|
+
import { SubprocessCliDriver, mapApiKeysToEnv, extractText, extractCost, extractTokens } from '../../chunk-FRD4NU3W.js';
|
|
2
2
|
import '../../chunk-GAH4YRCI.js';
|
|
3
|
-
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-
|
|
3
|
+
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-APHTT5GE.js';
|
|
4
4
|
import '../../chunk-6E6PKKAD.js';
|
|
5
5
|
import '../../chunk-JB35MVBN.js';
|
|
6
6
|
import '../../chunk-NSBPE2FW.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { GeminiFamilyDriver } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
import { GeminiFamilyDriver } from '../../chunk-6XQ5QG63.js';
|
|
2
|
+
import '../../chunk-FRD4NU3W.js';
|
|
3
3
|
import { fetchProviderModels } from '../../chunk-BMQKMOQY.js';
|
|
4
4
|
import '../../chunk-GAH4YRCI.js';
|
|
5
|
-
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-
|
|
5
|
+
import { BUILTIN_DRIVER_CATALOG, getBridgeLogger } from '../../chunk-APHTT5GE.js';
|
|
6
6
|
import '../../chunk-6E6PKKAD.js';
|
|
7
7
|
import '../../chunk-JB35MVBN.js';
|
|
8
8
|
import '../../chunk-NSBPE2FW.js';
|
package/dist/bridge/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-
|
|
1
|
+
export { BridgeRuntime, EventNormalizer, createRuntime, detectFileChange, detectFileChanges, summarizeToolCall, summarizeToolResult, validateApiKey } from '../chunk-LVQO4X4U.js';
|
|
2
2
|
export { CLOUD_SECRET_ENV_KEYS, SUPPORTED_CLOUDS, buildClaudeCloudEnv } from '../chunk-ISQWMBKD.js';
|
|
3
3
|
export { dispatchCapability, filterRenderCapabilities, renderFallback } from '../chunk-RRVQAE5D.js';
|
|
4
4
|
export { STATIC_MODELS, fetchProviderModels, getModels, getStaticModels } from '../chunk-BMQKMOQY.js';
|
|
5
5
|
export { AccountUnavailableError, AuthError, classifyClaudeSdkError, reclassifyAuthAsAccountUnavailable } from '../chunk-GAH4YRCI.js';
|
|
6
|
-
export { AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, createDriver, getBridgeLogger, listDrivers, listModelsForDriver, registerBuiltinDrivers } from '../chunk-
|
|
6
|
+
export { AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, createDriver, getBridgeLogger, listDrivers, listModelsForDriver, registerBuiltinDrivers } from '../chunk-APHTT5GE.js';
|
|
7
7
|
import '../chunk-6E6PKKAD.js';
|
|
8
8
|
import '../chunk-JB35MVBN.js';
|
|
9
9
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -24,6 +24,13 @@ export declare class EchoDriver extends AgentDriver {
|
|
|
24
24
|
private readonly log;
|
|
25
25
|
private running;
|
|
26
26
|
private readonly config;
|
|
27
|
+
/**
|
|
28
|
+
* Scripted-flow mode state (workspaces#396). Enabled by a `[test-flow]`
|
|
29
|
+
* sentinel chat message; once on, orchestrator-prompt turns are driven
|
|
30
|
+
* deterministically against `config.flowTestDriver`. `null` script ⇒ mode
|
|
31
|
+
* off (default echo behaviour, unchanged).
|
|
32
|
+
*/
|
|
33
|
+
private flowScript;
|
|
27
34
|
constructor(config: AgentConfig);
|
|
28
35
|
/**
|
|
29
36
|
* Test surface: returns the tool list the LLM would see for this turn.
|
|
@@ -52,6 +59,15 @@ export declare class EchoDriver extends AgentDriver {
|
|
|
52
59
|
* keyword above; never wired into normal chat flow.
|
|
53
60
|
*/
|
|
54
61
|
private runCapabilityKeyword;
|
|
62
|
+
/**
|
|
63
|
+
* Scripted-flow turn (workspaces#396). Reads the live flow state via the
|
|
64
|
+
* runner-injected `flowTestDriver` hook and executes the scripted next
|
|
65
|
+
* action(s) until the policy yields or emits a turn-ending action. Each
|
|
66
|
+
* mutation fires the adapter's `onChange` (→ host `state_changed`) and, when
|
|
67
|
+
* the runner wires the stimulus bus, queues the follow-up turn — so the
|
|
68
|
+
* driver advances one step at a time exactly like a real LLM orchestrator.
|
|
69
|
+
*/
|
|
70
|
+
private runScriptedFlowTurn;
|
|
55
71
|
abort(): Promise<void>;
|
|
56
72
|
kill(): void;
|
|
57
73
|
resetSession(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/echo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAMvE,OAAO,EACL,KAAK,WAAW,EAChB,WAAW,EAEX,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/echo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAMvE,OAAO,EACL,KAAK,WAAW,EAChB,WAAW,EAEX,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AASrB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IAErC;;;;;OAKG;IACH,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,EAAE,WAAW;IAK/B;;;;;OAKG;IACH,mBAAmB,IAAI,oBAAoB,EAAE;IAI7C;;;;;;OAMG;IACG,uBAAuB,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAa9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2E5C;;;;;OAKG;YACW,oBAAoB;IAqBlC;;;;;;;OAOG;YACW,mBAAmB;IAoD3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,IAAI,IAAI;IAKN,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF;AAiHD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,WAAW,CAStD,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scripted-flow decision logic for the echo driver.
|
|
3
|
+
*
|
|
4
|
+
* Pure, deterministic policy that maps a live {@link FlowExecution} snapshot
|
|
5
|
+
* (plus an optional per-node script) to the single next flow-adapter mutation
|
|
6
|
+
* the driver should emit this iteration. The echo driver calls this in a loop
|
|
7
|
+
* per turn (see `echo.ts`), executing each returned action against the
|
|
8
|
+
* runner-injected {@link FlowTestDriverHook} until it yields (`null`) or emits
|
|
9
|
+
* a turn-ending action.
|
|
10
|
+
*
|
|
11
|
+
* The policy mirrors what a real LLM orchestrator would do, but without an
|
|
12
|
+
* LLM: it reacts to state each turn, so a host can drive a flow to `complete`,
|
|
13
|
+
* park it at an approval/input gate, and exercise the reject/recover path
|
|
14
|
+
* simply by applying host mutations (`applyApproval`, `applyInput`, …) between
|
|
15
|
+
* turns. No new protocol, no flow-contract change — it only calls the existing
|
|
16
|
+
* FlowAdapter agent-tool operations.
|
|
17
|
+
*
|
|
18
|
+
* @docLink packages/bridge/drivers#scripted-flow
|
|
19
|
+
* @since 3.6.0
|
|
20
|
+
*/
|
|
21
|
+
import type { FlowExecution } from "@skaile/workspaces/types";
|
|
22
|
+
/**
|
|
23
|
+
* What the scripted driver should do when a node reaches its decision point.
|
|
24
|
+
*
|
|
25
|
+
* - `auto` (default): follow the flow's `autonomousMode` — `complete_node`
|
|
26
|
+
* when autonomous, else `request_approval`.
|
|
27
|
+
* - `complete`: always `complete_node` (autonomous-style, even if the flow's
|
|
28
|
+
* autonomousMode is false — the adapter allows it only when autonomous, so
|
|
29
|
+
* use with autonomous flows).
|
|
30
|
+
* - `approve`: always `request_approval` (park at an approval gate).
|
|
31
|
+
* - `input`: `request_input` once; after the host applies input, fall back to
|
|
32
|
+
* `auto` behaviour.
|
|
33
|
+
* - `skip`: `skip_node` (optional nodes only).
|
|
34
|
+
* - `fail`: `fail_node`. With `recoverable: false` (default) this is terminal.
|
|
35
|
+
* With `recoverable: true` the node returns to `available`; the driver
|
|
36
|
+
* re-emits the recoverable failure `failCount` times (default 1) and then
|
|
37
|
+
* proceeds as `auto` — it never deadlocks on a recoverable fail.
|
|
38
|
+
*/
|
|
39
|
+
export type OnRun = "auto" | "complete" | "approve" | "input" | "skip" | "fail";
|
|
40
|
+
/**
|
|
41
|
+
* What to do when a node returns to `available` after a rejection.
|
|
42
|
+
*
|
|
43
|
+
* - `retry` (default): re-drive it — `start_node` again, then its `onRun`.
|
|
44
|
+
* - `fail`: `fail_node(recoverable: false)` — exercises the terminal path.
|
|
45
|
+
*/
|
|
46
|
+
export type OnReject = "retry" | "fail";
|
|
47
|
+
/** Per-node scripting directive. All fields optional. */
|
|
48
|
+
export interface FlowNodeDirective {
|
|
49
|
+
onRun?: OnRun;
|
|
50
|
+
onReject?: OnReject;
|
|
51
|
+
/** For `onRun: "input"` — the input request shown to the host. */
|
|
52
|
+
input?: {
|
|
53
|
+
prompt?: string;
|
|
54
|
+
schema?: unknown;
|
|
55
|
+
};
|
|
56
|
+
/** For `onRun: "fail"` — whether the failure is recoverable. Default false. */
|
|
57
|
+
recoverable?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* For `onRun: "fail"` with `recoverable: true` — how many recoverable
|
|
60
|
+
* failures to emit before the node proceeds as `auto`. Default 1. Counted
|
|
61
|
+
* from the node's own `errorHistory`, so the policy stays a pure function of
|
|
62
|
+
* state (no driver-instance bookkeeping) and never deadlocks.
|
|
63
|
+
*/
|
|
64
|
+
failCount?: number;
|
|
65
|
+
/** Summary text used for `complete_node` / `request_approval` / failures. */
|
|
66
|
+
summary?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* A scripted-flow program. Empty (`{}`) means "canonical policy": start each
|
|
70
|
+
* available node, then complete (autonomous) or request approval (interactive)
|
|
71
|
+
* — enough to drive the autonomous-complete, approval-gate, and reject/recover
|
|
72
|
+
* scenarios with no per-node scripting at all.
|
|
73
|
+
*/
|
|
74
|
+
export interface FlowScript {
|
|
75
|
+
/** Per-node overrides, keyed by node id. */
|
|
76
|
+
nodes?: Record<string, FlowNodeDirective>;
|
|
77
|
+
/** Fallback directive for any node without its own entry. */
|
|
78
|
+
default?: FlowNodeDirective;
|
|
79
|
+
}
|
|
80
|
+
/** A single flow-adapter mutation the driver will execute. */
|
|
81
|
+
export type FlowAction = {
|
|
82
|
+
op: "start_node";
|
|
83
|
+
nodeId: string;
|
|
84
|
+
} | {
|
|
85
|
+
op: "complete_node";
|
|
86
|
+
nodeId: string;
|
|
87
|
+
summary: string;
|
|
88
|
+
} | {
|
|
89
|
+
op: "request_approval";
|
|
90
|
+
nodeId: string;
|
|
91
|
+
summary: string;
|
|
92
|
+
} | {
|
|
93
|
+
op: "request_input";
|
|
94
|
+
nodeId: string;
|
|
95
|
+
prompt: string;
|
|
96
|
+
schema: string;
|
|
97
|
+
} | {
|
|
98
|
+
op: "skip_node";
|
|
99
|
+
nodeId: string;
|
|
100
|
+
} | {
|
|
101
|
+
op: "fail_node";
|
|
102
|
+
nodeId: string;
|
|
103
|
+
message: string;
|
|
104
|
+
recoverable: boolean;
|
|
105
|
+
};
|
|
106
|
+
/** Whether an action ends the turn (driver stops looping after emitting it). */
|
|
107
|
+
export declare function isTurnEnding(action: FlowAction): boolean;
|
|
108
|
+
/** Map a {@link FlowAction} to the `executeOp` argument bag the adapter expects. */
|
|
109
|
+
export declare function actionArgs(action: FlowAction): Record<string, unknown>;
|
|
110
|
+
/**
|
|
111
|
+
* Decide the single next flow action for the current state, or `null` to yield
|
|
112
|
+
* (nothing to do this iteration — wait for a host mutation).
|
|
113
|
+
*
|
|
114
|
+
* Priority order: resolve approved gates → advance running nodes → start (or
|
|
115
|
+
* skip / terminally-fail) available nodes. Terminal flow states and gates with
|
|
116
|
+
* no decision / input yet yield.
|
|
117
|
+
*
|
|
118
|
+
* Pure — the fail bookkeeping (how many recoverable failures a node has already
|
|
119
|
+
* emitted) is read from the node's own `errorHistory`, so no external counter is
|
|
120
|
+
* needed and a recoverable `fail` directive can never deadlock.
|
|
121
|
+
*/
|
|
122
|
+
export declare function decideFlowAction(state: FlowExecution, script: FlowScript): FlowAction | null;
|
|
123
|
+
/**
|
|
124
|
+
* Parse a `[test-flow]` sentinel body into a {@link FlowScript}. An empty body
|
|
125
|
+
* yields the canonical (empty) script. Malformed JSON is a hard error so tests
|
|
126
|
+
* fail loudly rather than silently running the wrong policy.
|
|
127
|
+
*/
|
|
128
|
+
export declare function parseFlowScript(body: string): FlowScript;
|
|
129
|
+
//# sourceMappingURL=flow-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-script.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/flow-script.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,0BAA0B,CAAC;AAE7E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAExC,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,kEAAkE;IAClE,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC9C,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC1C,6DAA6D;IAC7D,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,EAAE,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,EAAE,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC;AAS/E,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAExD;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBtE;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAoG5F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAQxD"}
|
|
@@ -1,7 +1,29 @@
|
|
|
1
1
|
import { EventEmitter } from "node:events";
|
|
2
2
|
import type { Span, TelemetryProvider, Trace } from "@skaile/workspaces/telemetry";
|
|
3
|
-
import type { Capability, CredentialMint, RenderInvokedEvent, TokenUsage } from "@skaile/workspaces/types";
|
|
3
|
+
import type { Capability, CredentialMint, FlowExecution, RenderInvokedEvent, TokenUsage } from "@skaile/workspaces/types";
|
|
4
4
|
import type { ModelEntry } from "./models.js";
|
|
5
|
+
/**
|
|
6
|
+
* Test-only hook injected by the runner so a no-LLM driver (the echo driver's
|
|
7
|
+
* scripted-flow mode) can read flow state and drive flow-adapter mutations
|
|
8
|
+
* without an SDK/MCP round-trip. The runner wires this in `createActiveFlow`
|
|
9
|
+
* from the active FlowAdapter + handle.
|
|
10
|
+
*
|
|
11
|
+
* This is an internal runner↔driver interface — NOT part of any wire
|
|
12
|
+
* protocol or flow contract. Production drivers ignore it.
|
|
13
|
+
*
|
|
14
|
+
* @see packages/bridge/drivers/echo — scripted-flow mode
|
|
15
|
+
* @since 3.6.0
|
|
16
|
+
*/
|
|
17
|
+
export interface FlowTestDriverHook {
|
|
18
|
+
/** Current flow execution snapshot, or `null` when no flow is active. */
|
|
19
|
+
getState(): FlowExecution | null;
|
|
20
|
+
/**
|
|
21
|
+
* Execute a flow-adapter operation (`start_node`, `request_approval`,
|
|
22
|
+
* `complete_node`, `request_input`, `skip_node`, `fail_node`, …). Returns
|
|
23
|
+
* the adapter's JSON string result (or rejects on an illegal transition).
|
|
24
|
+
*/
|
|
25
|
+
execute(op: string, args: Record<string, unknown>): Promise<string>;
|
|
26
|
+
}
|
|
5
27
|
/**
|
|
6
28
|
* Minimal LLM tool descriptor used by the capability dispatch path. Mirrors
|
|
7
29
|
* the runner's `LLMTool` shape so drivers can consume registry output without
|
|
@@ -276,6 +298,15 @@ export interface AgentConfig {
|
|
|
276
298
|
onAuthError?: (args: {
|
|
277
299
|
configId: string;
|
|
278
300
|
}) => Promise<CredentialMint>;
|
|
301
|
+
/**
|
|
302
|
+
* Test-only flow driver hook. When present, the echo driver's scripted-flow
|
|
303
|
+
* mode uses it to advance flow nodes deterministically (no LLM). The runner
|
|
304
|
+
* injects it in `createActiveFlow`; every other driver ignores it.
|
|
305
|
+
*
|
|
306
|
+
* @see FlowTestDriverHook
|
|
307
|
+
* @since 3.6.0
|
|
308
|
+
*/
|
|
309
|
+
flowTestDriver?: FlowTestDriverHook;
|
|
279
310
|
}
|
|
280
311
|
/**
|
|
281
312
|
* A single message in an agent conversation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../bridge/src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../bridge/src/types.ts"],"names":[],"mappings":"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"}
|