@skastr0/prism-darwin-x64 0.2.1 → 0.3.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.
Files changed (52) hide show
  1. package/bin/prism +0 -0
  2. package/package.json +2 -1
  3. package/types/content-hash.d.ts +14 -0
  4. package/types/index.d.ts +1 -9
  5. package/types/lowerer-capabilities.d.ts +34 -0
  6. package/types/workflow-bun-runtime.d.ts +21 -0
  7. package/types/workflow-errors.d.ts +9 -2
  8. package/types/workflow-harness-detection.d.ts +85 -0
  9. package/types/workflow-identity.d.ts +48 -0
  10. package/types/workflow-runner.d.ts +4 -1
  11. package/types/workflow-runtime.d.ts +24 -0
  12. package/types/workflow-session.d.ts +0 -1
  13. package/types/workflow-store.d.ts +7 -51
  14. package/types/workflow-worker-contract.d.ts +2 -1
  15. package/types/workflows.d.ts +27 -0
  16. package/types/compile/authoring-runtime.d.ts +0 -27
  17. package/types/compile/bundle-utils.d.ts +0 -16
  18. package/types/compile/cache.d.ts +0 -49
  19. package/types/compile/compile-manifest.d.ts +0 -48
  20. package/types/compile/compose.d.ts +0 -35
  21. package/types/compile/errors.d.ts +0 -124
  22. package/types/compile/generated-plugin.d.ts +0 -10
  23. package/types/compile/load.d.ts +0 -52
  24. package/types/compile/paths.d.ts +0 -2
  25. package/types/compile/protocol-tools.d.ts +0 -47
  26. package/types/compile/refs.d.ts +0 -7
  27. package/types/compile/registry.d.ts +0 -32
  28. package/types/compile/resolve.d.ts +0 -63
  29. package/types/compile/runtime-deps.d.ts +0 -6
  30. package/types/compile/sources.d.ts +0 -2782
  31. package/types/errors.d.ts +0 -116
  32. package/types/harnesses.d.ts +0 -18
  33. package/types/manifest.d.ts +0 -106
  34. package/types/prism-home.d.ts +0 -26
  35. package/types/services/prism-env.d.ts +0 -45
  36. package/types/source-selection.d.ts +0 -38
  37. package/types/state/lock.d.ts +0 -14
  38. package/types/workflow-amp-worker.d.ts +0 -28
  39. package/types/workflow-antigravity-pty.d.ts +0 -22
  40. package/types/workflow-antigravity-worker.d.ts +0 -75
  41. package/types/workflow-claude-worker.d.ts +0 -32
  42. package/types/workflow-codex-worker.d.ts +0 -24
  43. package/types/workflow-grok-worker.d.ts +0 -27
  44. package/types/workflow-hermes-worker.d.ts +0 -22
  45. package/types/workflow-kimi-worker.d.ts +0 -24
  46. package/types/workflow-loader.d.ts +0 -64
  47. package/types/workflow-opencode-worker.d.ts +0 -22
  48. package/types/workflow-output-schema.d.ts +0 -7
  49. package/types/workflow-permissions.d.ts +0 -10
  50. package/types/workflow-tsconfig.d.ts +0 -98
  51. package/types/workflow-worker-process.d.ts +0 -24
  52. package/types/workflow-workers.d.ts +0 -43
package/bin/prism CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skastr0/prism-darwin-x64",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "Prism standalone CLI binary for macOS x64.",
6
6
  "license": "MIT",
@@ -20,6 +20,7 @@
20
20
  "@modelcontextprotocol/sdk": "1.29.0",
21
21
  "@opencode-ai/plugin": "^1.15.13",
22
22
  "@opentui/core-darwin-x64": "0.4.1",
23
+ "@skastr0/prism-sdk": "0.3.0",
23
24
  "effect": "^3.21.1",
24
25
  "typescript": "^5.8.3",
25
26
  "zod": "4.4.3"
@@ -1 +1,15 @@
1
1
  export declare const computeContentHash: (content: string | Uint8Array) => string;
2
+ /**
3
+ * Normalizes the dynamic `mcpServers[*].url` authority (host:port) out of a
4
+ * generated MCP HTTP config before hashing, so an owner daemon rebinding to a
5
+ * different ephemeral port is never mistaken for content drift. Detection is
6
+ * purely structural (`{ mcpServers: { url: "http(s)://..." } }`); content that
7
+ * does not match this shape is returned unchanged.
8
+ */
9
+ export declare const normalizeMcpHttpConfigForHash: (content: string) => string;
10
+ /**
11
+ * Content hash for a generated MCP HTTP config owned file. Equal for two
12
+ * renders that differ only in the dynamic port/url authority; still differs
13
+ * for a genuine content change (e.g. an added/removed server entry).
14
+ */
15
+ export declare const computeMcpHttpConfigContentHash: (content: string) => string;
package/types/index.d.ts CHANGED
@@ -13,19 +13,11 @@
13
13
  * These helpers are identity constructors for authoring ergonomics.
14
14
  */
15
15
  export * from "./workflow-errors.js";
16
+ export * from "./workflow-harness-detection.js";
16
17
  export * from "./workflows.js";
17
- export * from "./workflow-tsconfig.js";
18
- export * from "./workflow-antigravity-worker.js";
19
- export * from "./workflow-amp-worker.js";
20
- export * from "./workflow-claude-worker.js";
21
- export * from "./workflow-codex-worker.js";
22
- export * from "./workflow-loader.js";
23
- export * from "./workflow-opencode-worker.js";
24
18
  export * from "./workflow-runner.js";
25
- export * from "./workflow-store.js";
26
19
  export * from "./workflow-worker-contract.js";
27
20
  export * from "./workflow-worker-metadata.js";
28
- export * from "./workflow-workers.js";
29
21
  export interface NamedRefDefinition {
30
22
  readonly plugin?: string;
31
23
  readonly name: string;
@@ -2,8 +2,10 @@ import type { HarnessId } from "./types.js";
2
2
  export type GeneratedCanonicalToolSupport = "executable" | "unsupported";
3
3
  export type SkillPermissionSupport = "supported" | "unsupported";
4
4
  export type CompileSurfaceSupport = "supported" | "unsupported";
5
+ export type AgentModelBindingSupport = "consumed" | "ignored";
5
6
  export interface CompileTargetCapabilities {
6
7
  readonly agents: CompileSurfaceSupport;
8
+ readonly agentModelBindings: AgentModelBindingSupport;
7
9
  readonly generatedCanonicalTools: GeneratedCanonicalToolSupport;
8
10
  readonly hooks: CompileSurfaceSupport;
9
11
  readonly skillPermissions: SkillPermissionSupport;
@@ -21,6 +23,14 @@ export interface LowererSurfaceCapability {
21
23
  export interface LowererCapabilityProfile {
22
24
  readonly harness: HarnessId;
23
25
  readonly family: HarnessFamily;
26
+ /**
27
+ * Whether Prism Workflows can dispatch a task to this harness (a worker
28
+ * module exists under `src/workflow-*-worker.ts` and the harness is a
29
+ * member of `WorkflowWorkerId`, workflows.ts). This is the single source
30
+ * for `WORKFLOW_WORKERS` (workflow-catalog.ts) — do not hand-list harness
31
+ * ids elsewhere.
32
+ */
33
+ readonly workflowWorker: boolean;
24
34
  readonly compile: CompileTargetCapabilities;
25
35
  readonly surfaces: Record<LowererSurfaceId, LowererSurfaceCapability>;
26
36
  readonly notes?: readonly string[];
@@ -29,6 +39,7 @@ export declare const LOWERER_CAPABILITIES: {
29
39
  readonly "claude-code": {
30
40
  readonly harness: "claude-code";
31
41
  readonly family: "coding-harness";
42
+ readonly workflowWorker: true;
32
43
  readonly compile: CompileTargetCapabilities;
33
44
  readonly surfaces: {
34
45
  readonly pluginBundle: {
@@ -77,6 +88,7 @@ export declare const LOWERER_CAPABILITIES: {
77
88
  readonly opencode: {
78
89
  readonly harness: "opencode";
79
90
  readonly family: "coding-harness";
91
+ readonly workflowWorker: true;
80
92
  readonly compile: CompileTargetCapabilities;
81
93
  readonly surfaces: {
82
94
  readonly pluginBundle: {
@@ -125,6 +137,7 @@ export declare const LOWERER_CAPABILITIES: {
125
137
  readonly openclaw: {
126
138
  readonly harness: "openclaw";
127
139
  readonly family: "claw-harness";
140
+ readonly workflowWorker: false;
128
141
  readonly compile: CompileTargetCapabilities;
129
142
  readonly surfaces: {
130
143
  readonly pluginBundle: LowererSurfaceCapability;
@@ -146,6 +159,7 @@ export declare const LOWERER_CAPABILITIES: {
146
159
  readonly hermes: {
147
160
  readonly harness: "hermes";
148
161
  readonly family: "claw-harness";
162
+ readonly workflowWorker: true;
149
163
  readonly compile: CompileTargetCapabilities;
150
164
  readonly surfaces: {
151
165
  readonly pluginBundle: LowererSurfaceCapability;
@@ -174,6 +188,7 @@ export declare const LOWERER_CAPABILITIES: {
174
188
  readonly "codex-cli": {
175
189
  readonly harness: "codex-cli";
176
190
  readonly family: "coding-harness";
191
+ readonly workflowWorker: true;
177
192
  readonly compile: CompileTargetCapabilities;
178
193
  readonly surfaces: {
179
194
  readonly pluginBundle: LowererSurfaceCapability;
@@ -222,6 +237,7 @@ export declare const LOWERER_CAPABILITIES: {
222
237
  readonly "antigravity-cli": {
223
238
  readonly harness: "antigravity-cli";
224
239
  readonly family: "coding-harness";
240
+ readonly workflowWorker: true;
225
241
  readonly compile: CompileTargetCapabilities;
226
242
  readonly surfaces: {
227
243
  readonly pluginBundle: {
@@ -270,6 +286,7 @@ export declare const LOWERER_CAPABILITIES: {
270
286
  readonly "kimi-code": {
271
287
  readonly harness: "kimi-code";
272
288
  readonly family: "coding-harness";
289
+ readonly workflowWorker: true;
273
290
  readonly compile: CompileTargetCapabilities;
274
291
  readonly surfaces: {
275
292
  readonly pluginBundle: {
@@ -323,6 +340,7 @@ export declare const LOWERER_CAPABILITIES: {
323
340
  readonly "amp-code": {
324
341
  readonly harness: "amp-code";
325
342
  readonly family: "coding-harness";
343
+ readonly workflowWorker: true;
326
344
  readonly compile: CompileTargetCapabilities;
327
345
  readonly surfaces: {
328
346
  readonly pluginBundle: {
@@ -368,6 +386,7 @@ export declare const LOWERER_CAPABILITIES: {
368
386
  readonly cursor: {
369
387
  readonly harness: "cursor";
370
388
  readonly family: "coding-harness";
389
+ readonly workflowWorker: false;
371
390
  readonly compile: CompileTargetCapabilities;
372
391
  readonly surfaces: {
373
392
  readonly pluginBundle: {
@@ -409,6 +428,7 @@ export declare const LOWERER_CAPABILITIES: {
409
428
  readonly "factory-droid": {
410
429
  readonly harness: "factory-droid";
411
430
  readonly family: "coding-harness";
431
+ readonly workflowWorker: false;
412
432
  readonly compile: CompileTargetCapabilities;
413
433
  readonly surfaces: {
414
434
  readonly pluginBundle: {
@@ -461,6 +481,7 @@ export declare const LOWERER_CAPABILITIES: {
461
481
  readonly pi: {
462
482
  readonly harness: "pi";
463
483
  readonly family: "coding-harness";
484
+ readonly workflowWorker: false;
464
485
  readonly compile: CompileTargetCapabilities;
465
486
  readonly surfaces: {
466
487
  readonly pluginBundle: {
@@ -510,6 +531,7 @@ export declare const LOWERER_CAPABILITIES: {
510
531
  readonly grok: {
511
532
  readonly harness: "grok";
512
533
  readonly family: "coding-harness";
534
+ readonly workflowWorker: true;
513
535
  readonly compile: CompileTargetCapabilities;
514
536
  readonly surfaces: {
515
537
  readonly pluginBundle: {
@@ -557,3 +579,15 @@ export declare const LOWERER_CAPABILITIES: {
557
579
  };
558
580
  };
559
581
  export declare const getCompileTargetCapabilities: (harness: string) => CompileTargetCapabilities;
582
+ /**
583
+ * Harness ids flagged `workflowWorker: true` above — computed at the type
584
+ * level from the literal `as const` table, so it narrows exactly (no wider
585
+ * than `HarnessId`, no manual re-listing). Consumers (workflow-catalog.ts)
586
+ * assert this set against their own worker-module registry so a harness
587
+ * flagged here without a matching worker module is a tsc error.
588
+ */
589
+ export type WorkflowWorkerHarnessId = {
590
+ [K in HarnessId]: (typeof LOWERER_CAPABILITIES)[K]["workflowWorker"] extends true ? K : never;
591
+ }[HarnessId];
592
+ /** Harness ids that can be dispatched as Prism Workflows workers, derived from the `workflowWorker` bit. */
593
+ export declare const workflowWorkerHarnessIds: () => readonly WorkflowWorkerHarnessId[];
@@ -0,0 +1,21 @@
1
+ export interface WorkflowBunSpawnOptions {
2
+ readonly cmd: ReadonlyArray<string>;
3
+ readonly cwd?: string;
4
+ readonly env?: Record<string, string | undefined>;
5
+ readonly stdin: "ignore";
6
+ readonly stdout: "ignore" | "pipe";
7
+ readonly stderr: "ignore" | "pipe";
8
+ }
9
+ export interface WorkflowBunSpawnedProcess {
10
+ readonly pid?: number;
11
+ readonly stdout?: ReadableStream<Uint8Array>;
12
+ readonly stderr: ReadableStream<Uint8Array>;
13
+ readonly exited: Promise<number | null>;
14
+ kill(signal?: NodeJS.Signals | number): void;
15
+ unref?(): void;
16
+ }
17
+ export interface WorkflowBunRuntime {
18
+ which(name: string): string | null;
19
+ spawn(options: WorkflowBunSpawnOptions): WorkflowBunSpawnedProcess;
20
+ }
21
+ export declare const workflowBunRuntime: (capability: string) => WorkflowBunRuntime;
@@ -17,5 +17,12 @@ export declare class WorkflowTaskEscalatedError extends Error {
17
17
  readonly name = "WorkflowTaskEscalatedError";
18
18
  constructor(taskId: string, criterion: string, feedback?: string | undefined);
19
19
  }
20
- export type WorkflowRuntimeError = WorkflowTaskDecodeError | WorkflowTaskEscalatedError | WorkflowRunStoppedError | Error;
21
- export declare const toWorkflowRuntimeError: (error: unknown) => WorkflowRuntimeError;
20
+ export declare class WorkflowBunRuntimeUnavailableError extends Error {
21
+ readonly name = "WorkflowBunRuntimeUnavailableError";
22
+ constructor(capability: string, cause?: unknown);
23
+ }
24
+ export declare class WorkflowUnsupportedHarnessError extends Error {
25
+ readonly name = "WorkflowUnsupportedHarnessError";
26
+ constructor(harness: string, validHarnesses: ReadonlyArray<string>);
27
+ }
28
+ export type WorkflowRuntimeError = WorkflowBunRuntimeUnavailableError | WorkflowUnsupportedHarnessError | WorkflowTaskDecodeError | WorkflowTaskEscalatedError | WorkflowRunStoppedError | Error;
@@ -0,0 +1,85 @@
1
+ import { type WorkflowWorkerHarnessId } from "./lowerer-capabilities.js";
2
+ import type { HarnessId } from "./types.js";
3
+ /**
4
+ * Workflow-worker harness ids, derived from the capability registry's
5
+ * `workflowWorker` bit (`lowerer-capabilities.ts`) — the single source of
6
+ * truth for this set (PQ-163). Never hand-list these ids here; add a harness
7
+ * by flipping its `workflowWorker` capability in the registry, which also
8
+ * forces `WORKFLOW_HARNESS_DETECTION_SPECS` below to gain the matching entry
9
+ * at compile time.
10
+ */
11
+ export declare const WORKFLOW_HARNESS_IDS: ReadonlyArray<WorkflowWorkerHarnessId>;
12
+ export type WorkflowHarnessId = WorkflowWorkerHarnessId;
13
+ export type WorkflowHarnessDetectionStatus = "available" | "missing" | "broken";
14
+ export type WorkflowHarnessDetectionReasonCode = "executable-found" | "executable-missing" | "probe-succeeded" | "probe-exited-nonzero" | "probe-timed-out" | "probe-failed";
15
+ export interface WorkflowHarnessDetectionReason {
16
+ readonly code: WorkflowHarnessDetectionReasonCode;
17
+ readonly message: string;
18
+ readonly command: string;
19
+ readonly executablePath?: string;
20
+ readonly exitCode?: number | null;
21
+ readonly stderr?: string;
22
+ }
23
+ export interface WorkflowHarnessDetection {
24
+ readonly schema: "prism.workflow-harness-detection.v1";
25
+ readonly harness: WorkflowHarnessId;
26
+ readonly available: boolean;
27
+ readonly status: WorkflowHarnessDetectionStatus;
28
+ readonly reason: WorkflowHarnessDetectionReason;
29
+ }
30
+ export interface WorkflowHarnessDetectionSpec {
31
+ readonly harness: WorkflowHarnessId;
32
+ readonly command: string;
33
+ readonly envVar: string;
34
+ readonly probeArgs: ReadonlyArray<string>;
35
+ /**
36
+ * Cheap-fast-tier model used by `resolveWorkflowTaskModel` when a task
37
+ * declares this harness but nothing (task, profile, or CLI --model) supplies
38
+ * a concrete model. Chosen from the empirical modelspace's throughput/triage
39
+ * profiles (not the premium tier) so a scaffolded workflow never crashes at
40
+ * run with "no concrete model for workflow worker X".
41
+ */
42
+ readonly defaultModel: string;
43
+ }
44
+ export interface WorkflowHarnessProbeRunResult {
45
+ readonly exitCode: number | null;
46
+ readonly stderr?: string;
47
+ readonly timedOut?: boolean;
48
+ }
49
+ export interface WorkflowHarnessProbeRunOptions {
50
+ readonly timeoutMs: number;
51
+ }
52
+ export interface WorkflowHarnessDetectionOptions {
53
+ /**
54
+ * Environment map used only to read Prism workflow binary override variables.
55
+ * Defaults to process.env when omitted.
56
+ */
57
+ readonly env?: Readonly<Record<string, string | undefined>>;
58
+ /**
59
+ * Optional executable resolver. Inject this in apps/tests to keep detection
60
+ * deterministic and side-effect free.
61
+ */
62
+ readonly resolveExecutable?: (command: string) => string | undefined | Promise<string | undefined>;
63
+ /**
64
+ * When true, detection runs a short version probe after resolving the binary.
65
+ * The default false mode only inspects PATH/override variables and is safe to
66
+ * call during application startup: no files are written, no config is loaded,
67
+ * and no harness process is spawned.
68
+ */
69
+ readonly verify?: boolean;
70
+ readonly probeTimeoutMs?: number;
71
+ readonly runProbe?: (command: string, args: ReadonlyArray<string>, options: WorkflowHarnessProbeRunOptions) => Promise<WorkflowHarnessProbeRunResult>;
72
+ }
73
+ export declare const WORKFLOW_HARNESS_DETECTION_SPECS: Readonly<Record<WorkflowHarnessId, WorkflowHarnessDetectionSpec>>;
74
+ export declare const isWorkflowHarnessId: (id: string) => id is WorkflowHarnessId;
75
+ /**
76
+ * Cheap-fast-tier default model for a workflow harness, or `undefined` for an
77
+ * id outside the registry. Single source of truth for `resolveWorkflowTaskModel`
78
+ * (src/workflows.ts) — do not hand-maintain a second per-harness default list.
79
+ */
80
+ export declare const workflowHarnessDefaultModel: (harness: string) => string | undefined;
81
+ export declare const workflowHarnessIdsForHarnesses: (harnesses: ReadonlyArray<HarnessId>) => WorkflowHarnessId[];
82
+ export declare const detectWorkflowHarness: (harness: WorkflowHarnessId, options?: WorkflowHarnessDetectionOptions) => Promise<WorkflowHarnessDetection>;
83
+ export declare const detectWorkflowHarnesses: (options?: WorkflowHarnessDetectionOptions & {
84
+ readonly harnesses?: ReadonlyArray<WorkflowHarnessId>;
85
+ }) => Promise<ReadonlyArray<WorkflowHarnessDetection>>;
@@ -0,0 +1,48 @@
1
+ import { type AnyWorkflowTask, type WorkflowRuntimeOptions } from "./workflows.js";
2
+ export interface WorkflowTaskIdentity {
3
+ readonly workflow: string;
4
+ readonly taskId: string;
5
+ readonly cacheKey: string;
6
+ readonly promptHash: string;
7
+ readonly agentManifestHash: string;
8
+ }
9
+ export interface WorkflowJudgeIdentity {
10
+ readonly workflow: string;
11
+ readonly taskId: string;
12
+ readonly taskCacheKey: string;
13
+ readonly criterion: string;
14
+ readonly cacheKey: string;
15
+ }
16
+ export interface WorkflowRunTaskSnapshot {
17
+ readonly runId: string;
18
+ readonly ordinal: number;
19
+ readonly taskId: string;
20
+ readonly phase?: string;
21
+ readonly prompt: string;
22
+ readonly cacheKey: string;
23
+ readonly promptHash: string;
24
+ readonly agentManifestHash: string;
25
+ readonly agent: {
26
+ readonly plugin: string;
27
+ readonly name: string;
28
+ readonly description: string;
29
+ readonly sourceHash: string;
30
+ readonly manifestHash: string;
31
+ };
32
+ readonly worker?: {
33
+ readonly worker?: string;
34
+ readonly model?: string;
35
+ readonly profile?: string;
36
+ };
37
+ readonly outputSchema?: unknown;
38
+ readonly finishCriteria: ReadonlyArray<string>;
39
+ readonly createdAt: string;
40
+ }
41
+ export declare const workflowTaskIdentity: (workflow: string, task: AnyWorkflowTask, runtimeOptions?: WorkflowRuntimeOptions) => WorkflowTaskIdentity;
42
+ export declare const workflowRunTaskSnapshotForTask: (input: {
43
+ readonly runId: string;
44
+ readonly ordinal: number;
45
+ readonly workflow: string;
46
+ readonly task: AnyWorkflowTask;
47
+ readonly runtimeOptions?: WorkflowRuntimeOptions;
48
+ }) => Omit<WorkflowRunTaskSnapshot, "createdAt">;
@@ -1,10 +1,11 @@
1
1
  import { type AnyWorkflowDefinition, type AnyWorkflowTask, type WorkflowRuntimeOptions } from "./workflows.js";
2
- import { type WorkflowStore } from "./workflow-store.js";
2
+ import type { WorkflowStore } from "./workflow-store.js";
3
3
  import { type WorkflowRepairLoopContinuationWorkerId, type WorkflowStableSession } from "./workflow-session.js";
4
4
  export interface WorkflowTaskExecution {
5
5
  readonly output: unknown;
6
6
  readonly metadata?: Record<string, unknown>;
7
7
  }
8
+ export type WorkflowRunTaskResultStatus = "completed" | "failed" | "escalated";
8
9
  export interface WorkflowRunTaskResult {
9
10
  readonly id: string;
10
11
  readonly agent: {
@@ -13,7 +14,9 @@ export interface WorkflowRunTaskResult {
13
14
  };
14
15
  readonly output: unknown;
15
16
  readonly cached: boolean;
17
+ readonly status: WorkflowRunTaskResultStatus;
16
18
  readonly metadata?: Record<string, unknown>;
19
+ readonly error?: string;
17
20
  }
18
21
  export interface WorkflowRunResult {
19
22
  readonly runId: string | null;
@@ -0,0 +1,24 @@
1
+ import { type WorkflowBunSpawnedProcess, type WorkflowBunSpawnOptions } from "./workflow-bun-runtime.js";
2
+ export interface WorkflowDatabaseQuery<Row, Params extends ReadonlyArray<unknown>> {
3
+ get(...params: Params): Row | null;
4
+ all(...params: Params): Row[];
5
+ run(...params: Params): unknown;
6
+ }
7
+ export interface WorkflowDatabase {
8
+ exec(statement: string): unknown;
9
+ close(): void;
10
+ query<Row = unknown, Params extends ReadonlyArray<unknown> = ReadonlyArray<unknown>>(statement: string): WorkflowDatabaseQuery<Row, Params>;
11
+ transaction<T extends (...args: never[]) => unknown>(fn: T): T;
12
+ }
13
+ export interface WorkflowSpawnOptions extends WorkflowBunSpawnOptions {
14
+ readonly cwd: string;
15
+ }
16
+ export interface WorkflowSpawnedProcess extends WorkflowBunSpawnedProcess {
17
+ readonly pid: number;
18
+ readonly stdout: ReadableStream<Uint8Array>;
19
+ readonly stderr: ReadableStream<Uint8Array>;
20
+ unref(): void;
21
+ }
22
+ export declare const openWorkflowDatabase: (path: string) => WorkflowDatabase;
23
+ export declare const spawnWorkflowProcess: (options: WorkflowSpawnOptions) => WorkflowSpawnedProcess;
24
+ export declare const findWorkflowExecutable: (name: string) => string | undefined;
@@ -116,7 +116,6 @@ export declare const workflowHarnessContinuationSupport: {
116
116
  };
117
117
  export declare const stableSessionIdFromUnknown: (value: unknown) => StableSessionId | undefined;
118
118
  export declare const workflowContinuationAdapterForWorker: (worker: string) => WorkflowContinuationAdapterId | undefined;
119
- export declare const workflowWorkerSupportsRepairLoopContinuation: (worker: string) => worker is WorkflowRepairLoopContinuationWorkerId;
120
119
  export declare const workflowContinuationSupportForAdapter: (adapter: string | undefined) => WorkflowHarnessContinuationSupport | undefined;
121
120
  export declare const workflowAdapterFromMetadata: (metadata: Record<string, unknown> | undefined) => WorkflowContinuationAdapterId | undefined;
122
121
  export declare const workflowStableSessionFromMetadata: (metadata: Record<string, unknown> | undefined) => WorkflowStableSession | undefined;
@@ -1,19 +1,7 @@
1
- import { Database } from "bun:sqlite";
2
- import { type AnyWorkflowTask, type WorkflowJudgeVerdict, type WorkflowRuntimeOptions } from "./workflows.js";
3
- export interface WorkflowTaskIdentity {
4
- readonly workflow: string;
5
- readonly taskId: string;
6
- readonly cacheKey: string;
7
- readonly promptHash: string;
8
- readonly agentManifestHash: string;
9
- }
10
- export interface WorkflowJudgeIdentity {
11
- readonly workflow: string;
12
- readonly taskId: string;
13
- readonly taskCacheKey: string;
14
- readonly criterion: string;
15
- readonly cacheKey: string;
16
- }
1
+ import type { WorkflowJudgeVerdict } from "./workflows.js";
2
+ import type { WorkflowJudgeIdentity, WorkflowRunTaskSnapshot, WorkflowTaskIdentity } from "./workflow-identity.js";
3
+ export { workflowRunTaskSnapshotForTask, workflowTaskIdentity, type WorkflowJudgeIdentity, type WorkflowRunTaskSnapshot, type WorkflowTaskIdentity } from "./workflow-identity.js";
4
+ import { type WorkflowDatabase } from "./workflow-runtime.js";
17
5
  export type WorkflowTaskOutputSource = "mock-output";
18
6
  export interface CompletedWorkflowTaskRecord {
19
7
  readonly identity: WorkflowTaskIdentity;
@@ -105,31 +93,6 @@ export interface WorkflowRunSnapshot {
105
93
  readonly createdAt: string;
106
94
  readonly updatedAt: string;
107
95
  }
108
- export interface WorkflowRunTaskSnapshot {
109
- readonly runId: string;
110
- readonly ordinal: number;
111
- readonly taskId: string;
112
- readonly phase?: string;
113
- readonly prompt: string;
114
- readonly cacheKey: string;
115
- readonly promptHash: string;
116
- readonly agentManifestHash: string;
117
- readonly agent: {
118
- readonly plugin: string;
119
- readonly name: string;
120
- readonly description: string;
121
- readonly sourceHash: string;
122
- readonly manifestHash: string;
123
- };
124
- readonly worker?: {
125
- readonly worker?: string;
126
- readonly model?: string;
127
- readonly profile?: string;
128
- };
129
- readonly outputSchema?: unknown;
130
- readonly finishCriteria: ReadonlyArray<string>;
131
- readonly createdAt: string;
132
- }
133
96
  export type WorkflowCacheBadge = "hit" | "miss" | "skipped" | "cached" | "fresh" | "write" | "mock" | `repair ${number}`;
134
97
  export interface WorkflowMonitorTask extends WorkflowRunTaskCompactSummary {
135
98
  readonly phase?: string;
@@ -187,18 +150,11 @@ export interface WorkflowEventRecord {
187
150
  readonly payload: unknown;
188
151
  readonly createdAt: string;
189
152
  }
190
- export declare const defaultWorkflowStorePath: (projectPath: string) => string;
191
- export declare const workflowTaskIdentity: (workflow: string, task: AnyWorkflowTask, runtimeOptions?: WorkflowRuntimeOptions) => WorkflowTaskIdentity;
192
- export declare const workflowRunTaskSnapshotForTask: (input: {
193
- readonly runId: string;
194
- readonly ordinal: number;
195
- readonly workflow: string;
196
- readonly task: AnyWorkflowTask;
197
- readonly runtimeOptions?: WorkflowRuntimeOptions;
198
- }) => Omit<WorkflowRunTaskSnapshot, "createdAt">;
153
+ export declare const projectWorkflowStoreDir: (prismHome: string, cwd?: string) => string;
154
+ export declare const defaultWorkflowStorePath: (prismHome: string, cwd?: string) => string;
199
155
  export declare class WorkflowStore {
200
156
  private readonly db;
201
- constructor(db: Database);
157
+ constructor(db: WorkflowDatabase);
202
158
  static open(path: string): Promise<WorkflowStore>;
203
159
  close(): void;
204
160
  getCompleted(identity: WorkflowTaskIdentity, options?: {
@@ -4,7 +4,8 @@ export declare const WORKFLOW_WORKER_JSON_INSTRUCTION_SOURCE = "workflow-worker-
4
4
  export declare class WorkflowOutputParseError extends Error {
5
5
  readonly name = "WorkflowOutputParseError";
6
6
  readonly rawText?: string;
7
- constructor(message: string, rawText?: string);
7
+ readonly metadata?: Record<string, unknown>;
8
+ constructor(message: string, rawText?: string, metadata?: Record<string, unknown>);
8
9
  }
9
10
  export declare const workflowWorkerJsonInstruction: (task: AnyWorkflowTask) => string;
10
11
  export declare const parseWorkflowWorkerJsonOutput: (text: string) => unknown;
@@ -42,6 +42,20 @@ export interface WorkflowAgentRef {
42
42
  readonly model?: WorkflowModelRef;
43
43
  readonly installs: ReadonlyArray<string>;
44
44
  }
45
+ export interface WorkflowTaskSummary {
46
+ readonly id: string;
47
+ readonly agent: {
48
+ readonly plugin: string;
49
+ readonly name: string;
50
+ };
51
+ readonly cacheKey?: string;
52
+ }
53
+ export interface WorkflowValidationSummary {
54
+ readonly path: string;
55
+ readonly name: string;
56
+ readonly tasks: ReadonlyArray<WorkflowTaskSummary>;
57
+ readonly dynamic: boolean;
58
+ }
45
59
  export type WorkflowOutputSchema = Schema.Schema.AnyNoContext;
46
60
  export type WorkflowFinishCriterionError = Error;
47
61
  export type WorkflowWorkerId = "amp-code" | "antigravity-cli" | "claude-code" | "codex-cli" | "grok" | "hermes" | "kimi-code" | "opencode";
@@ -68,6 +82,15 @@ export type WorkflowResolvedModelTarget = Readonly<Record<string, WorkflowResolv
68
82
  export declare class WorkflowModelResolutionError extends Error {
69
83
  readonly name = "WorkflowModelResolutionError";
70
84
  }
85
+ export type WorkflowTaskModelResolutionSource = "task" | "profile" | "default" | "cli-fallback";
86
+ export interface WorkflowTaskModelResolution {
87
+ readonly model: string;
88
+ readonly source: WorkflowTaskModelResolutionSource;
89
+ }
90
+ export declare const resolveWorkflowTaskModelResolution: (task: AnyWorkflowTask, options?: {
91
+ readonly worker?: string;
92
+ readonly fallbackModel?: string;
93
+ }) => WorkflowTaskModelResolution | undefined;
71
94
  export declare const resolveWorkflowTaskModel: (task: AnyWorkflowTask, options?: {
72
95
  readonly worker?: string;
73
96
  readonly fallbackModel?: string;
@@ -145,6 +168,8 @@ export interface WorkflowTask<Id extends string = string, Agent extends Workflow
145
168
  }
146
169
  export type AnyWorkflowTask = WorkflowTask<string, WorkflowAgentRef, WorkflowOutputSchema>;
147
170
  export type WorkflowTaskOutput<Task extends AnyWorkflowTask> = Schema.Schema.Type<Task["output"]>;
171
+ export declare const isWorkflowAgentRef: (value: unknown) => value is WorkflowAgentRef;
172
+ export declare const isWorkflowTask: (value: unknown) => value is AnyWorkflowTask;
148
173
  export interface WorkflowDefinition<Name extends string, Tasks extends ReadonlyArray<AnyWorkflowTask>> {
149
174
  readonly kind: "workflow";
150
175
  readonly name: Name;
@@ -165,6 +190,8 @@ export interface DynamicWorkflowDefinition<Name extends string, Result = unknown
165
190
  readonly run: (runtime: WorkflowRuntime) => Effect.Effect<Result, Err, never>;
166
191
  }
167
192
  export type AnyWorkflowDefinition = WorkflowDefinition<string, ReadonlyArray<AnyWorkflowTask>> | DynamicWorkflowDefinition<string>;
193
+ export declare const isWorkflowDefinition: (value: unknown) => value is AnyWorkflowDefinition;
194
+ export declare const workflowSummary: (path: string, workflow: AnyWorkflowDefinition) => WorkflowValidationSummary;
168
195
  export declare const defineTask: <const Id extends string, const Agent extends WorkflowAgentRef, const Output extends WorkflowOutputSchema>(definition: WorkflowTaskDefinition<Id, Agent, Output>) => WorkflowTask<Id, Agent, Output>;
169
196
  export declare function defineWorkflow<const Name extends string, const Tasks extends ReadonlyArray<AnyWorkflowTask>>(definition: {
170
197
  readonly name: Name;
@@ -1,27 +0,0 @@
1
- import { Effect } from "effect";
2
- /**
3
- * Minimal in-memory authoring runtime that stubs the `prism` module for
4
- * plugin source files. It provides the typed-ref helpers and definition
5
- * builders used by `.agent.ts`, `.orbit.ts`, `.trait.ts`, `.tool.ts`,
6
- * `.toolspace.ts`, `.modelspace.ts`, `.skillspace.ts`, and `.hook.ts` files.
7
- *
8
- * The real semantic validation happens later in the compiler; this runtime
9
- * only needs to return plain data structures so that source modules can be
10
- * imported/bundled without resolving the full `prism` package.
11
- */
12
- export declare const AUTHORING_RUNTIME_JS = "\nconst withNamedRef = (kind, first, second) =>\n second === undefined ? { kind, name: first } : { kind, plugin: first, name: second };\n\nexport const traitRef = (first, second) => withNamedRef(\"trait-ref\", first, second);\nexport const agentRef = (first, second) => withNamedRef(\"agent-ref\", first, second);\nexport const orbitRef = (first, second) => withNamedRef(\"orbit-ref\", first, second);\n\nexport const toolRef = (first, second, third) =>\n third === undefined\n ? { kind: \"tool-ref\", toolspace: first, name: second }\n : { kind: \"tool-ref\", plugin: first, toolspace: second, name: third };\n\nexport const toolGroupRef = (first, second, third) =>\n third === undefined\n ? { kind: \"tool-group-ref\", toolspace: first, name: second }\n : { kind: \"tool-group-ref\", plugin: first, toolspace: second, name: third };\n\nexport const modelProfileRef = (first, second, third) =>\n third === undefined\n ? { kind: \"model-profile-ref\", modelspace: first, name: second }\n : { kind: \"model-profile-ref\", plugin: first, modelspace: second, name: third };\n\nexport const skillRef = (first, second) => withNamedRef(\"skill-ref\", first, second);\n\nexport const skillspaceRef = (first, second, third) =>\n third === undefined\n ? { kind: \"skillspace-ref\", skillspace: first, name: second }\n : { kind: \"skillspace-ref\", plugin: first, skillspace: second, name: third };\n\nexport const schemaSlot = (options = {}) => ({ kind: \"schema\", ...options });\nexport const bindTrait = (trait, options = {}) => ({\n kind: \"trait-binding\",\n trait,\n ...(options.tools ? { tools: options.tools } : {}),\n});\n\nexport const defineAgent = (agent) => agent;\nexport const defineTrait = (trait) => trait;\nexport const defineOrbit = (orbit) => orbit;\nexport const defineTool = (tool) => tool;\nexport const defineToolspace = (toolspace) => toolspace;\nexport const defineModelspace = (modelspace) => modelspace;\nexport const defineSkillspace = (skillspace) => skillspace;\nexport const defineHook = (hook) => hook;\n\nexport const hookEvent = {\n toolBefore: \"tool.before\",\n toolAfter: \"tool.after\",\n promptSubmit: \"prompt.submit\",\n permissionRequest: \"permission.request\",\n sessionStart: \"session.start\",\n sessionEnd: \"session.end\",\n};\n\nexport const hookTool = {\n any: () => ({ kind: \"hook-any-tool\" }),\n tool: (tool) => ({ kind: \"hook-toolspace-tool\", tool }),\n group: (group) => ({ kind: \"hook-toolspace-group\", group }),\n canonical: (ref) => ({ kind: \"hook-canonical-tool\", ref }),\n};\n\nexport const hookMatcher = {\n tool: hookTool,\n};\n";
13
- declare class AuthoringRuntimeWriteError {
14
- readonly cause: unknown;
15
- readonly _tag = "AuthoringRuntimeWriteError";
16
- constructor(cause: unknown);
17
- }
18
- /**
19
- * Return a file path to a persisted copy of the authoring runtime. The file
20
- * is written once per process and reused across plugin compiles.
21
- */
22
- export declare const getAuthoringRuntimePath: () => Effect.Effect<string, AuthoringRuntimeWriteError, never>;
23
- /**
24
- * For tests that need to clean up the machine-global temp runtime file.
25
- */
26
- export declare const getAuthoringRuntimeDir: () => string | undefined;
27
- export {};
@@ -1,16 +0,0 @@
1
- export declare const NODE_BUILTIN_EXTERNALS: string[];
2
- export declare const BARE_IMPORT_PATTERN: RegExp;
3
- export declare const RELATIVE_IMPORT_PATTERN: RegExp;
4
- export declare const collectRelativeImportSpecifiers: (source: string) => string[];
5
- export declare const packageNameFromSpecifier: (specifier: string) => string;
6
- export declare const relativeModulePath: (fromFile: string, toFileWithoutExtension: string) => string;
7
- export declare const resolveImportedSourcePath: (sourcePath: string, source: string) => string;
8
- export declare const stripToolAuthoringHelpers: (source: string) => string;
9
- export declare const rewriteGeneratedPluginBundleImports: (source: string, currentGeneratedPath: string) => string;
10
- export declare const resolveTsImportCandidate: (absoluteWithoutQuery: string, fileExists: (path: string) => Promise<boolean>) => Promise<string | undefined>;
11
- export declare const rewriteBareImportsForBundle: (source: string, replacements: ReadonlyMap<string, string>) => string;
12
- export declare const rewriteBareEffectImportsForBundle: (source: string) => string;
13
- export declare const rewriteBarePluginDependencyImportsForBundle: (options: {
14
- readonly source: string;
15
- readonly pluginRoot?: string;
16
- }) => Promise<string>;