deepline 0.2.53 → 0.2.55

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 (44) hide show
  1. package/dist/bundling-sources/sdk/src/client.ts +17 -1
  2. package/dist/bundling-sources/sdk/src/plays/bundle-play-file.ts +1 -1
  3. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  4. package/dist/bundling-sources/sdk/src/types.ts +43 -1
  5. package/dist/bundling-sources/shared_libs/play-runtime/app-runtime-api.ts +30 -1
  6. package/dist/bundling-sources/shared_libs/play-runtime/cell-provenance.ts +231 -0
  7. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +1094 -128
  8. package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +178 -9
  9. package/dist/bundling-sources/shared_libs/play-runtime/docflow-node-io.ts +634 -0
  10. package/dist/bundling-sources/shared_libs/play-runtime/docflow-observation.ts +64 -0
  11. package/dist/bundling-sources/shared_libs/play-runtime/dynamic-worker-version.ts +1 -1
  12. package/dist/bundling-sources/shared_libs/play-runtime/execution-capabilities.ts +18 -0
  13. package/dist/bundling-sources/shared_libs/play-runtime/live-state-contract.ts +33 -0
  14. package/dist/bundling-sources/shared_libs/play-runtime/log-provenance.ts +251 -0
  15. package/dist/bundling-sources/shared_libs/play-runtime/play-node-scope.ts +160 -0
  16. package/dist/bundling-sources/shared_libs/play-runtime/protocol.ts +6 -0
  17. package/dist/bundling-sources/shared_libs/play-runtime/run-failure.ts +27 -0
  18. package/dist/bundling-sources/shared_libs/play-runtime/run-ledger.ts +43 -5
  19. package/dist/bundling-sources/shared_libs/play-runtime/run-snapshot-stream.ts +12 -0
  20. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/local-process.ts +26 -4
  21. package/dist/bundling-sources/shared_libs/play-runtime/runtime-actions.ts +6 -1
  22. package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +83 -0
  23. package/dist/bundling-sources/shared_libs/play-runtime/worker-api-types.ts +3 -0
  24. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +49 -1
  25. package/dist/bundling-sources/shared_libs/plays/bundling/index.ts +375 -29
  26. package/dist/bundling-sources/shared_libs/plays/docflow-binding-owner.ts +636 -0
  27. package/dist/bundling-sources/shared_libs/plays/docflow-binding.ts +598 -0
  28. package/dist/bundling-sources/shared_libs/plays/docflow.ts +1645 -0
  29. package/dist/bundling-sources/shared_libs/plays/play-exports.ts +202 -0
  30. package/dist/bundling-sources/shared_libs/plays/static-pipeline.ts +16 -1
  31. package/dist/bundling-sources/shared_libs/plays/ts-ast.ts +48 -0
  32. package/dist/cli/index.js +994 -312
  33. package/dist/cli/index.mjs +994 -312
  34. package/dist/{compiler-manifest-Cj3--4ZJ.d.mts → compiler-manifest-Bl8kmLx9.d.mts} +118 -0
  35. package/dist/{compiler-manifest-Cj3--4ZJ.d.ts → compiler-manifest-Bl8kmLx9.d.ts} +118 -0
  36. package/dist/index.d.mts +47 -2
  37. package/dist/index.d.ts +47 -2
  38. package/dist/index.js +419 -59
  39. package/dist/index.mjs +419 -59
  40. package/dist/install-integrity.json +12 -2
  41. package/dist/plays/bundle-play-file.d.mts +2 -2
  42. package/dist/plays/bundle-play-file.d.ts +2 -2
  43. package/dist/plays/bundle-play-file.mjs +1361 -45
  44. package/package.json +1 -1
@@ -16,6 +16,91 @@ declare const PLAY_ARTIFACT_KINDS: {
16
16
  };
17
17
  type PlayArtifactKind = (typeof PLAY_ARTIFACT_KINDS)[keyof typeof PLAY_ARTIFACT_KINDS];
18
18
 
19
+ type PlayDocflowNodeKind = 'action' | 'decision' | 'dataset' | 'play' | 'conceptual';
20
+ type PlayDocflowNode = {
21
+ id: string;
22
+ label: string;
23
+ kind: PlayDocflowNodeKind;
24
+ };
25
+ /**
26
+ * Which arm of a conditional a drawn decision edge IS.
27
+ *
28
+ * The runtime's own two-valued vocabulary for a `runIf` (ADR 0019): the cell
29
+ * record says `branch: 'run' | 'else'`, and this is the same token on the
30
+ * diagram's side of the join. Deliberately NOT the arm's label — a label is the
31
+ * author's prose ("fit 65 or better", "nicht gefunden") and says nothing about
32
+ * polarity in any language.
33
+ */
34
+ type PlayDocflowArm = 'run' | 'else';
35
+ type PlayDocflowEdge = {
36
+ from: string;
37
+ to: string;
38
+ label?: string;
39
+ /**
40
+ * The conditional arm this edge is, when the author recorded it.
41
+ *
42
+ * ABSENT — never `null` — when unrecorded, and that is load-bearing rather
43
+ * than stylistic. `docflow` is whole-object serialized into
44
+ * `playStaticPipelineContractHash` (`src/lib/plays/artifact-storage.ts`),
45
+ * which is part of the immutable artifact storage key, and the canonicalizer
46
+ * there drops `undefined` but HASHES `null`. Emitting `arm: null` on an
47
+ * unannotated edge would change the contract hash of every diagrammed play
48
+ * ever published and force a republish. Omission is what keeps this additive.
49
+ */
50
+ arm?: PlayDocflowArm;
51
+ };
52
+ /**
53
+ * A Mermaid `subgraph … end` region. When an edge connects it to a dataset
54
+ * node, it models that dataset's per-row loop; its members represent the
55
+ * per-row column work. See `docs/play-syntax-spec.md`. `memberIds` records the
56
+ * innermost subgraph for nested regions.
57
+ */
58
+ type PlayDocflowSubgraph = {
59
+ id: string;
60
+ label: string;
61
+ memberIds: string[];
62
+ };
63
+ type PlayDocflowBinding = {
64
+ nodeId: string;
65
+ line: number;
66
+ label?: string;
67
+ kind?: PlayDocflowNodeKind;
68
+ /** Symbolic values read by this business node. Never an arbitrary JS expression. */
69
+ inputs?: string[];
70
+ /** Symbolic values produced or changed by this business node. */
71
+ outputs?: string[];
72
+ /** Whether the contract was authored, safely inferred, or still needs help. */
73
+ ioConfidence?: 'explicit' | 'inferred' | 'ambiguous';
74
+ /**
75
+ * `arm:"run"` / `arm:"else"` — this node is that arm of the decision above it.
76
+ *
77
+ * Recorded on the annotation because the annotation is the only place the two
78
+ * halves of the join meet: a `@mermaid-node` binds a DIAGRAM id to the SOURCE
79
+ * statement directly beneath it, so the author writing it is the one person
80
+ * who knows both which drawn arm this is and which side of the `runIf` the
81
+ * code under it implements. Projected onto the incoming decision edge by
82
+ * {@link attachBindingsToBlocks}; the edge is what readers resolve against.
83
+ */
84
+ arm?: PlayDocflowArm;
85
+ };
86
+ type PlayDocflow = {
87
+ direction: 'LR' | 'RL' | 'TB' | 'TD' | 'BT';
88
+ nodes: PlayDocflowNode[];
89
+ edges: PlayDocflowEdge[];
90
+ bindings: PlayDocflowBinding[];
91
+ /** Authoring syntax used by the source file. Absent on older persisted graphs. */
92
+ syntax?: 'docflow' | 'mermaid';
93
+ /** Normalized Mermaid text, ready to pass directly to a Mermaid renderer. */
94
+ mermaidSource?: string;
95
+ /**
96
+ * Mermaid `subgraph` loop regions. Optional so older persisted graphs stay
97
+ * valid. Only populated for the Mermaid syntax; legacy `docflow` has none.
98
+ */
99
+ subgraphs?: PlayDocflowSubgraph[];
100
+ /** Mermaid directives accepted by the parser but not applied by React Flow. */
101
+ ignoredDirectives?: string[];
102
+ };
103
+
19
104
  /**
20
105
  * A top-level key the play's function literally `return`s. Derived from the
21
106
  * `return { ... }` object literal — NOT from dataset `.withColumn(...)` names —
@@ -35,6 +120,8 @@ interface PlayStaticReturnField {
35
120
  datasetName?: string;
36
121
  }
37
122
  interface PlayStaticPipeline {
123
+ /** Authored business flow. Static analysis is used only when this is absent. */
124
+ docflow?: PlayDocflow;
38
125
  tableNamespace?: string;
39
126
  inputFields?: string[];
40
127
  rowKeyFields?: string[];
@@ -135,6 +222,12 @@ type PlayStaticSubstep = PlayStaticSubstepMetadata & ({
135
222
  waterfallIds?: string[];
136
223
  steps?: PlayStaticSubstep[];
137
224
  sheetContract?: PlaySheetContract | null;
225
+ /**
226
+ * Columns the author declared as deliberately absent from the `@mermaid`
227
+ * diagram via `.run({ undrawnColumns: [...] })`. The docflow column
228
+ * coverage gate reads this; nothing about execution does.
229
+ */
230
+ undrawnColumns?: string[];
138
231
  description?: string;
139
232
  sourceRange?: PlayStaticSourceRange;
140
233
  callDepth?: number;
@@ -1110,6 +1203,13 @@ type PlayAuthoringDatasetRunOptions<InputRow extends object> = {
1110
1203
  key?: PlayAuthoringDatasetRowKey<InputRow>;
1111
1204
  onRowError?: 'isolate' | 'fail';
1112
1205
  mode?: 'upsert' | 'net_new';
1206
+ /**
1207
+ * Computed columns this dataset produces that the authored `@mermaid`
1208
+ * diagram deliberately does not draw. A diagrammed Play must account for
1209
+ * every column it computes: draw it inside the dataset's `subgraph` loop
1210
+ * region, or name it here. Nothing else opts a column out.
1211
+ */
1212
+ undrawnColumns?: readonly string[];
1113
1213
  };
1114
1214
  type PlayAuthoringDatasetBuilder<InputRow extends object, OutputRow extends object, TContext> = {
1115
1215
  /** Define one output column for every row in this dataset. */
@@ -2104,6 +2204,24 @@ declare const PLAY_AUTHORING_FIELD_REGISTRY: {
2104
2204
  readonly description: "Whether the dataset returns all rows or only newly admitted rows.";
2105
2205
  readonly errorMessage: "ctx.dataset run mode must be \"upsert\" or \"net_new\".";
2106
2206
  };
2207
+ readonly 'ctx.dataset.run.undrawnColumns': {
2208
+ readonly schema: _sinclair_typebox.TArray<_sinclair_typebox.TString>;
2209
+ readonly fixtures: {
2210
+ readonly valid: readonly ["miss_reason"];
2211
+ readonly invalid: readonly [];
2212
+ readonly absent: undefined;
2213
+ readonly unresolved: {
2214
+ readonly expression: "undrawnColumns";
2215
+ };
2216
+ readonly edition1: readonly ["miss_reason"];
2217
+ };
2218
+ readonly referenceType: "readonly string[]";
2219
+ readonly required: false;
2220
+ readonly resolution: "static-when-present";
2221
+ readonly issueCode: "play_authoring_dataset_option_invalid";
2222
+ readonly description: "Computed columns deliberately left out of the authored @mermaid diagram.";
2223
+ readonly errorMessage: "ctx.dataset run undrawnColumns must be a non-empty array of static column-name strings.";
2224
+ };
2107
2225
  readonly 'ctx.step.id': {
2108
2226
  readonly schema: _sinclair_typebox.TString;
2109
2227
  readonly fixtures: {
@@ -16,6 +16,91 @@ declare const PLAY_ARTIFACT_KINDS: {
16
16
  };
17
17
  type PlayArtifactKind = (typeof PLAY_ARTIFACT_KINDS)[keyof typeof PLAY_ARTIFACT_KINDS];
18
18
 
19
+ type PlayDocflowNodeKind = 'action' | 'decision' | 'dataset' | 'play' | 'conceptual';
20
+ type PlayDocflowNode = {
21
+ id: string;
22
+ label: string;
23
+ kind: PlayDocflowNodeKind;
24
+ };
25
+ /**
26
+ * Which arm of a conditional a drawn decision edge IS.
27
+ *
28
+ * The runtime's own two-valued vocabulary for a `runIf` (ADR 0019): the cell
29
+ * record says `branch: 'run' | 'else'`, and this is the same token on the
30
+ * diagram's side of the join. Deliberately NOT the arm's label — a label is the
31
+ * author's prose ("fit 65 or better", "nicht gefunden") and says nothing about
32
+ * polarity in any language.
33
+ */
34
+ type PlayDocflowArm = 'run' | 'else';
35
+ type PlayDocflowEdge = {
36
+ from: string;
37
+ to: string;
38
+ label?: string;
39
+ /**
40
+ * The conditional arm this edge is, when the author recorded it.
41
+ *
42
+ * ABSENT — never `null` — when unrecorded, and that is load-bearing rather
43
+ * than stylistic. `docflow` is whole-object serialized into
44
+ * `playStaticPipelineContractHash` (`src/lib/plays/artifact-storage.ts`),
45
+ * which is part of the immutable artifact storage key, and the canonicalizer
46
+ * there drops `undefined` but HASHES `null`. Emitting `arm: null` on an
47
+ * unannotated edge would change the contract hash of every diagrammed play
48
+ * ever published and force a republish. Omission is what keeps this additive.
49
+ */
50
+ arm?: PlayDocflowArm;
51
+ };
52
+ /**
53
+ * A Mermaid `subgraph … end` region. When an edge connects it to a dataset
54
+ * node, it models that dataset's per-row loop; its members represent the
55
+ * per-row column work. See `docs/play-syntax-spec.md`. `memberIds` records the
56
+ * innermost subgraph for nested regions.
57
+ */
58
+ type PlayDocflowSubgraph = {
59
+ id: string;
60
+ label: string;
61
+ memberIds: string[];
62
+ };
63
+ type PlayDocflowBinding = {
64
+ nodeId: string;
65
+ line: number;
66
+ label?: string;
67
+ kind?: PlayDocflowNodeKind;
68
+ /** Symbolic values read by this business node. Never an arbitrary JS expression. */
69
+ inputs?: string[];
70
+ /** Symbolic values produced or changed by this business node. */
71
+ outputs?: string[];
72
+ /** Whether the contract was authored, safely inferred, or still needs help. */
73
+ ioConfidence?: 'explicit' | 'inferred' | 'ambiguous';
74
+ /**
75
+ * `arm:"run"` / `arm:"else"` — this node is that arm of the decision above it.
76
+ *
77
+ * Recorded on the annotation because the annotation is the only place the two
78
+ * halves of the join meet: a `@mermaid-node` binds a DIAGRAM id to the SOURCE
79
+ * statement directly beneath it, so the author writing it is the one person
80
+ * who knows both which drawn arm this is and which side of the `runIf` the
81
+ * code under it implements. Projected onto the incoming decision edge by
82
+ * {@link attachBindingsToBlocks}; the edge is what readers resolve against.
83
+ */
84
+ arm?: PlayDocflowArm;
85
+ };
86
+ type PlayDocflow = {
87
+ direction: 'LR' | 'RL' | 'TB' | 'TD' | 'BT';
88
+ nodes: PlayDocflowNode[];
89
+ edges: PlayDocflowEdge[];
90
+ bindings: PlayDocflowBinding[];
91
+ /** Authoring syntax used by the source file. Absent on older persisted graphs. */
92
+ syntax?: 'docflow' | 'mermaid';
93
+ /** Normalized Mermaid text, ready to pass directly to a Mermaid renderer. */
94
+ mermaidSource?: string;
95
+ /**
96
+ * Mermaid `subgraph` loop regions. Optional so older persisted graphs stay
97
+ * valid. Only populated for the Mermaid syntax; legacy `docflow` has none.
98
+ */
99
+ subgraphs?: PlayDocflowSubgraph[];
100
+ /** Mermaid directives accepted by the parser but not applied by React Flow. */
101
+ ignoredDirectives?: string[];
102
+ };
103
+
19
104
  /**
20
105
  * A top-level key the play's function literally `return`s. Derived from the
21
106
  * `return { ... }` object literal — NOT from dataset `.withColumn(...)` names —
@@ -35,6 +120,8 @@ interface PlayStaticReturnField {
35
120
  datasetName?: string;
36
121
  }
37
122
  interface PlayStaticPipeline {
123
+ /** Authored business flow. Static analysis is used only when this is absent. */
124
+ docflow?: PlayDocflow;
38
125
  tableNamespace?: string;
39
126
  inputFields?: string[];
40
127
  rowKeyFields?: string[];
@@ -135,6 +222,12 @@ type PlayStaticSubstep = PlayStaticSubstepMetadata & ({
135
222
  waterfallIds?: string[];
136
223
  steps?: PlayStaticSubstep[];
137
224
  sheetContract?: PlaySheetContract | null;
225
+ /**
226
+ * Columns the author declared as deliberately absent from the `@mermaid`
227
+ * diagram via `.run({ undrawnColumns: [...] })`. The docflow column
228
+ * coverage gate reads this; nothing about execution does.
229
+ */
230
+ undrawnColumns?: string[];
138
231
  description?: string;
139
232
  sourceRange?: PlayStaticSourceRange;
140
233
  callDepth?: number;
@@ -1110,6 +1203,13 @@ type PlayAuthoringDatasetRunOptions<InputRow extends object> = {
1110
1203
  key?: PlayAuthoringDatasetRowKey<InputRow>;
1111
1204
  onRowError?: 'isolate' | 'fail';
1112
1205
  mode?: 'upsert' | 'net_new';
1206
+ /**
1207
+ * Computed columns this dataset produces that the authored `@mermaid`
1208
+ * diagram deliberately does not draw. A diagrammed Play must account for
1209
+ * every column it computes: draw it inside the dataset's `subgraph` loop
1210
+ * region, or name it here. Nothing else opts a column out.
1211
+ */
1212
+ undrawnColumns?: readonly string[];
1113
1213
  };
1114
1214
  type PlayAuthoringDatasetBuilder<InputRow extends object, OutputRow extends object, TContext> = {
1115
1215
  /** Define one output column for every row in this dataset. */
@@ -2104,6 +2204,24 @@ declare const PLAY_AUTHORING_FIELD_REGISTRY: {
2104
2204
  readonly description: "Whether the dataset returns all rows or only newly admitted rows.";
2105
2205
  readonly errorMessage: "ctx.dataset run mode must be \"upsert\" or \"net_new\".";
2106
2206
  };
2207
+ readonly 'ctx.dataset.run.undrawnColumns': {
2208
+ readonly schema: _sinclair_typebox.TArray<_sinclair_typebox.TString>;
2209
+ readonly fixtures: {
2210
+ readonly valid: readonly ["miss_reason"];
2211
+ readonly invalid: readonly [];
2212
+ readonly absent: undefined;
2213
+ readonly unresolved: {
2214
+ readonly expression: "undrawnColumns";
2215
+ };
2216
+ readonly edition1: readonly ["miss_reason"];
2217
+ };
2218
+ readonly referenceType: "readonly string[]";
2219
+ readonly required: false;
2220
+ readonly resolution: "static-when-present";
2221
+ readonly issueCode: "play_authoring_dataset_option_invalid";
2222
+ readonly description: "Computed columns deliberately left out of the authored @mermaid diagram.";
2223
+ readonly errorMessage: "ctx.dataset run undrawnColumns must be a non-empty array of static column-name strings.";
2224
+ };
2107
2225
  readonly 'ctx.step.id': {
2108
2226
  readonly schema: _sinclair_typebox.TString;
2109
2227
  readonly fixtures: {
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { e as PlayRuntimeBackendId, c as PlayCompilerManifest, D as DeeplineError, f as ToolExecutionError, g as ToolExecutionErrorOptions, h as PlayAuthoringColumnMap, i as PlayAuthoringColumnResolver, j as PlayAuthoringRuntimeContext, k as PlayAuthoringConditionalStepResolver, l as PlayAuthoringCsvInput, m as PlayAuthoringCsvOptions, n as PlayAuthoringDatasetBuilder, o as PlayAuthoringDatasetColumnDefinition, p as PlayAuthoringDatasetColumnRunInput, q as ToolExecuteResult, r as PlayAuthoringReferenceLike, s as PlayReturnObject$1, t as PlayAuthoringDefineConfig, u as PlayAuthoringDefinedPlay, v as PlayAuthoringFetchOptions, w as PlayAuthoringFileInput, x as PlayAuthoringBindings, y as PlayAuthoringCallExecution, z as PlayAuthoringCallOptions, A as PlayAuthoringFetchResponse, B as PlayAuthoringInputContract, C as PlayAuthoringStepProgramStep, E as PlayAuthoringRuntimeStepOptions, F as PlaySqlListenerDeclaration, G as PlaySqlListenerEvent, H as PlaySqlListenerOperation, I as PlaySqlQuery, J as PlayAuthoringStepOptions, K as PlayAuthoringStepProgram, L as PlayAuthoringStepProgramResolver, M as PlayAuthoringStepResolver, N as PlayToolExecutionRequest } from './compiler-manifest-Cj3--4ZJ.mjs';
2
- export { O as DEEPLINE_EXTRACTOR_TARGETS, Q as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, R as DeeplineEmailStatusGetterValue, S as DeeplineExtractorTarget, U as DeeplineGetterValue, V as DeeplineGetterValueMap, W as JOB_CHANGE_STATUS_VALUES, X as JobChangeStatus, Y as PHONE_STATUS_VALUES, Z as PhoneStatus, _ as PlayDataset, $ as PlayDatasetInput, a0 as PreviousCell, a1 as ProviderTransientError, a2 as ProviderTransientErrorCategory, a3 as ToolExecutionErrorCategory, a4 as ToolExecutionErrorOrigin, a5 as ToolExecutionFailureV1, a6 as ToolExecutionNetworkKind, a7 as ToolExecutionNetworkScope, a8 as isDeeplineExtractorTarget } from './compiler-manifest-Cj3--4ZJ.mjs';
1
+ import { e as PlayRuntimeBackendId, c as PlayCompilerManifest, D as DeeplineError, f as ToolExecutionError, g as ToolExecutionErrorOptions, h as PlayAuthoringColumnMap, i as PlayAuthoringColumnResolver, j as PlayAuthoringRuntimeContext, k as PlayAuthoringConditionalStepResolver, l as PlayAuthoringCsvInput, m as PlayAuthoringCsvOptions, n as PlayAuthoringDatasetBuilder, o as PlayAuthoringDatasetColumnDefinition, p as PlayAuthoringDatasetColumnRunInput, q as ToolExecuteResult, r as PlayAuthoringReferenceLike, s as PlayReturnObject$1, t as PlayAuthoringDefineConfig, u as PlayAuthoringDefinedPlay, v as PlayAuthoringFetchOptions, w as PlayAuthoringFileInput, x as PlayAuthoringBindings, y as PlayAuthoringCallExecution, z as PlayAuthoringCallOptions, A as PlayAuthoringFetchResponse, B as PlayAuthoringInputContract, C as PlayAuthoringStepProgramStep, E as PlayAuthoringRuntimeStepOptions, F as PlaySqlListenerDeclaration, G as PlaySqlListenerEvent, H as PlaySqlListenerOperation, I as PlaySqlQuery, J as PlayAuthoringStepOptions, K as PlayAuthoringStepProgram, L as PlayAuthoringStepProgramResolver, M as PlayAuthoringStepResolver, N as PlayToolExecutionRequest } from './compiler-manifest-Bl8kmLx9.mjs';
2
+ export { O as DEEPLINE_EXTRACTOR_TARGETS, Q as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, R as DeeplineEmailStatusGetterValue, S as DeeplineExtractorTarget, U as DeeplineGetterValue, V as DeeplineGetterValueMap, W as JOB_CHANGE_STATUS_VALUES, X as JobChangeStatus, Y as PHONE_STATUS_VALUES, Z as PhoneStatus, _ as PlayDataset, $ as PlayDatasetInput, a0 as PreviousCell, a1 as ProviderTransientError, a2 as ProviderTransientErrorCategory, a3 as ToolExecutionErrorCategory, a4 as ToolExecutionErrorOrigin, a5 as ToolExecutionFailureV1, a6 as ToolExecutionNetworkKind, a7 as ToolExecutionNetworkScope, a8 as isDeeplineExtractorTarget } from './compiler-manifest-Bl8kmLx9.mjs';
3
3
  import '@sinclair/typebox';
4
4
 
5
5
  declare const FIXTURE_BEHAVIOR_VERSION: 1;
@@ -1359,6 +1359,14 @@ interface PlayCheckResult {
1359
1359
  graphHash?: string | null;
1360
1360
  /** SHA-256 of the exact source bytes checked by Deepline. */
1361
1361
  sourceHash?: string | null;
1362
+ /**
1363
+ * Per-export results, present ONLY when the checked file exports more than
1364
+ * one play. Single-play files keep the exact flat shape they always had.
1365
+ * Entry 0 is the default export and mirrors the top-level fields; the
1366
+ * top-level `valid` is the AND over every entry, so an agent that reads only
1367
+ * `valid` can never ship a file whose second play fails.
1368
+ */
1369
+ exports?: PlayCheckExportResult[];
1362
1370
  /** Enforceable byte budgets measured during cloud preflight. */
1363
1371
  limits?: {
1364
1372
  revisionStorage: {
@@ -1379,6 +1387,28 @@ interface PlayCheckResult {
1379
1387
  };
1380
1388
  };
1381
1389
  }
1390
+ /**
1391
+ * One exported play's check result inside a multi-play file. Carries the same
1392
+ * per-play fields as {@link PlayCheckResult}, unprefixed and unaggregated, so a
1393
+ * consumer can attribute an error to the export that produced it.
1394
+ */
1395
+ interface PlayCheckExportResult {
1396
+ /** Canonical export name: `default`, or the named export (`batch`). */
1397
+ exportName: string;
1398
+ /** The `definePlay` name this export declares. */
1399
+ name?: string | null;
1400
+ valid: boolean;
1401
+ errors: string[];
1402
+ warnings?: string[];
1403
+ issues?: PlayCheckIssue[];
1404
+ staticPipeline?: Record<string, unknown> | null;
1405
+ artifactHash?: string | null;
1406
+ graphHash?: string | null;
1407
+ sourceHash?: string | null;
1408
+ summary?: string;
1409
+ recognized?: PlayCheckRecognizedSummary;
1410
+ triggers?: PlayCheckTriggersSummary | null;
1411
+ }
1382
1412
  /** Severity of a {@link PlayCheckIssue}. `error` fails the check; `warning` does not. */
1383
1413
  type PlayCheckIssueSeverity = 'error' | 'warning';
1384
1414
  /**
@@ -1392,6 +1422,12 @@ interface PlayCheckIssue {
1392
1422
  code: string;
1393
1423
  severity: PlayCheckIssueSeverity;
1394
1424
  message: string;
1425
+ /**
1426
+ * Which exported play raised this issue, when the checked file exports more
1427
+ * than one and this is not the default export. Absent everywhere else, so
1428
+ * the structured channel stays byte-identical for single-play files.
1429
+ */
1430
+ exportName?: string;
1395
1431
  path?: string;
1396
1432
  hint?: string;
1397
1433
  validOptions?: string[];
@@ -1404,9 +1440,15 @@ interface PlayCheckIssue {
1404
1440
  interface PlayCheckRecognizedSummary {
1405
1441
  triggers?: PlayCheckTriggersSummary;
1406
1442
  tools?: string[];
1443
+ /**
1444
+ * Durable datasets the play produces. `undrawnColumns` echoes the columns the
1445
+ * author declared out of an authored `@mermaid` diagram with
1446
+ * `.run({ undrawnColumns: [...] })`, so an opt-out is visible in check output.
1447
+ */
1407
1448
  datasets?: {
1408
1449
  name: string;
1409
1450
  columns?: string[];
1451
+ undrawnColumns?: string[];
1410
1452
  }[];
1411
1453
  inputs?: string[];
1412
1454
  outputs?: string[];
@@ -2796,6 +2838,9 @@ declare class DeeplineClient {
2796
2838
  sourceFiles?: Record<string, string>;
2797
2839
  description?: string;
2798
2840
  artifact: Record<string, unknown>;
2841
+ /** Which exported play in `sourceCode` this artifact is, when the file
2842
+ * exports more than one. Omit for the default export. */
2843
+ exportName?: string | null;
2799
2844
  integrationMode?: 'live' | 'eval_stub' | 'fixture';
2800
2845
  /**
2801
2846
  * Sibling plays from the same local bundle graph. Lets the server splice
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { e as PlayRuntimeBackendId, c as PlayCompilerManifest, D as DeeplineError, f as ToolExecutionError, g as ToolExecutionErrorOptions, h as PlayAuthoringColumnMap, i as PlayAuthoringColumnResolver, j as PlayAuthoringRuntimeContext, k as PlayAuthoringConditionalStepResolver, l as PlayAuthoringCsvInput, m as PlayAuthoringCsvOptions, n as PlayAuthoringDatasetBuilder, o as PlayAuthoringDatasetColumnDefinition, p as PlayAuthoringDatasetColumnRunInput, q as ToolExecuteResult, r as PlayAuthoringReferenceLike, s as PlayReturnObject$1, t as PlayAuthoringDefineConfig, u as PlayAuthoringDefinedPlay, v as PlayAuthoringFetchOptions, w as PlayAuthoringFileInput, x as PlayAuthoringBindings, y as PlayAuthoringCallExecution, z as PlayAuthoringCallOptions, A as PlayAuthoringFetchResponse, B as PlayAuthoringInputContract, C as PlayAuthoringStepProgramStep, E as PlayAuthoringRuntimeStepOptions, F as PlaySqlListenerDeclaration, G as PlaySqlListenerEvent, H as PlaySqlListenerOperation, I as PlaySqlQuery, J as PlayAuthoringStepOptions, K as PlayAuthoringStepProgram, L as PlayAuthoringStepProgramResolver, M as PlayAuthoringStepResolver, N as PlayToolExecutionRequest } from './compiler-manifest-Cj3--4ZJ.js';
2
- export { O as DEEPLINE_EXTRACTOR_TARGETS, Q as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, R as DeeplineEmailStatusGetterValue, S as DeeplineExtractorTarget, U as DeeplineGetterValue, V as DeeplineGetterValueMap, W as JOB_CHANGE_STATUS_VALUES, X as JobChangeStatus, Y as PHONE_STATUS_VALUES, Z as PhoneStatus, _ as PlayDataset, $ as PlayDatasetInput, a0 as PreviousCell, a1 as ProviderTransientError, a2 as ProviderTransientErrorCategory, a3 as ToolExecutionErrorCategory, a4 as ToolExecutionErrorOrigin, a5 as ToolExecutionFailureV1, a6 as ToolExecutionNetworkKind, a7 as ToolExecutionNetworkScope, a8 as isDeeplineExtractorTarget } from './compiler-manifest-Cj3--4ZJ.js';
1
+ import { e as PlayRuntimeBackendId, c as PlayCompilerManifest, D as DeeplineError, f as ToolExecutionError, g as ToolExecutionErrorOptions, h as PlayAuthoringColumnMap, i as PlayAuthoringColumnResolver, j as PlayAuthoringRuntimeContext, k as PlayAuthoringConditionalStepResolver, l as PlayAuthoringCsvInput, m as PlayAuthoringCsvOptions, n as PlayAuthoringDatasetBuilder, o as PlayAuthoringDatasetColumnDefinition, p as PlayAuthoringDatasetColumnRunInput, q as ToolExecuteResult, r as PlayAuthoringReferenceLike, s as PlayReturnObject$1, t as PlayAuthoringDefineConfig, u as PlayAuthoringDefinedPlay, v as PlayAuthoringFetchOptions, w as PlayAuthoringFileInput, x as PlayAuthoringBindings, y as PlayAuthoringCallExecution, z as PlayAuthoringCallOptions, A as PlayAuthoringFetchResponse, B as PlayAuthoringInputContract, C as PlayAuthoringStepProgramStep, E as PlayAuthoringRuntimeStepOptions, F as PlaySqlListenerDeclaration, G as PlaySqlListenerEvent, H as PlaySqlListenerOperation, I as PlaySqlQuery, J as PlayAuthoringStepOptions, K as PlayAuthoringStepProgram, L as PlayAuthoringStepProgramResolver, M as PlayAuthoringStepResolver, N as PlayToolExecutionRequest } from './compiler-manifest-Bl8kmLx9.js';
2
+ export { O as DEEPLINE_EXTRACTOR_TARGETS, Q as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, R as DeeplineEmailStatusGetterValue, S as DeeplineExtractorTarget, U as DeeplineGetterValue, V as DeeplineGetterValueMap, W as JOB_CHANGE_STATUS_VALUES, X as JobChangeStatus, Y as PHONE_STATUS_VALUES, Z as PhoneStatus, _ as PlayDataset, $ as PlayDatasetInput, a0 as PreviousCell, a1 as ProviderTransientError, a2 as ProviderTransientErrorCategory, a3 as ToolExecutionErrorCategory, a4 as ToolExecutionErrorOrigin, a5 as ToolExecutionFailureV1, a6 as ToolExecutionNetworkKind, a7 as ToolExecutionNetworkScope, a8 as isDeeplineExtractorTarget } from './compiler-manifest-Bl8kmLx9.js';
3
3
  import '@sinclair/typebox';
4
4
 
5
5
  declare const FIXTURE_BEHAVIOR_VERSION: 1;
@@ -1359,6 +1359,14 @@ interface PlayCheckResult {
1359
1359
  graphHash?: string | null;
1360
1360
  /** SHA-256 of the exact source bytes checked by Deepline. */
1361
1361
  sourceHash?: string | null;
1362
+ /**
1363
+ * Per-export results, present ONLY when the checked file exports more than
1364
+ * one play. Single-play files keep the exact flat shape they always had.
1365
+ * Entry 0 is the default export and mirrors the top-level fields; the
1366
+ * top-level `valid` is the AND over every entry, so an agent that reads only
1367
+ * `valid` can never ship a file whose second play fails.
1368
+ */
1369
+ exports?: PlayCheckExportResult[];
1362
1370
  /** Enforceable byte budgets measured during cloud preflight. */
1363
1371
  limits?: {
1364
1372
  revisionStorage: {
@@ -1379,6 +1387,28 @@ interface PlayCheckResult {
1379
1387
  };
1380
1388
  };
1381
1389
  }
1390
+ /**
1391
+ * One exported play's check result inside a multi-play file. Carries the same
1392
+ * per-play fields as {@link PlayCheckResult}, unprefixed and unaggregated, so a
1393
+ * consumer can attribute an error to the export that produced it.
1394
+ */
1395
+ interface PlayCheckExportResult {
1396
+ /** Canonical export name: `default`, or the named export (`batch`). */
1397
+ exportName: string;
1398
+ /** The `definePlay` name this export declares. */
1399
+ name?: string | null;
1400
+ valid: boolean;
1401
+ errors: string[];
1402
+ warnings?: string[];
1403
+ issues?: PlayCheckIssue[];
1404
+ staticPipeline?: Record<string, unknown> | null;
1405
+ artifactHash?: string | null;
1406
+ graphHash?: string | null;
1407
+ sourceHash?: string | null;
1408
+ summary?: string;
1409
+ recognized?: PlayCheckRecognizedSummary;
1410
+ triggers?: PlayCheckTriggersSummary | null;
1411
+ }
1382
1412
  /** Severity of a {@link PlayCheckIssue}. `error` fails the check; `warning` does not. */
1383
1413
  type PlayCheckIssueSeverity = 'error' | 'warning';
1384
1414
  /**
@@ -1392,6 +1422,12 @@ interface PlayCheckIssue {
1392
1422
  code: string;
1393
1423
  severity: PlayCheckIssueSeverity;
1394
1424
  message: string;
1425
+ /**
1426
+ * Which exported play raised this issue, when the checked file exports more
1427
+ * than one and this is not the default export. Absent everywhere else, so
1428
+ * the structured channel stays byte-identical for single-play files.
1429
+ */
1430
+ exportName?: string;
1395
1431
  path?: string;
1396
1432
  hint?: string;
1397
1433
  validOptions?: string[];
@@ -1404,9 +1440,15 @@ interface PlayCheckIssue {
1404
1440
  interface PlayCheckRecognizedSummary {
1405
1441
  triggers?: PlayCheckTriggersSummary;
1406
1442
  tools?: string[];
1443
+ /**
1444
+ * Durable datasets the play produces. `undrawnColumns` echoes the columns the
1445
+ * author declared out of an authored `@mermaid` diagram with
1446
+ * `.run({ undrawnColumns: [...] })`, so an opt-out is visible in check output.
1447
+ */
1407
1448
  datasets?: {
1408
1449
  name: string;
1409
1450
  columns?: string[];
1451
+ undrawnColumns?: string[];
1410
1452
  }[];
1411
1453
  inputs?: string[];
1412
1454
  outputs?: string[];
@@ -2796,6 +2838,9 @@ declare class DeeplineClient {
2796
2838
  sourceFiles?: Record<string, string>;
2797
2839
  description?: string;
2798
2840
  artifact: Record<string, unknown>;
2841
+ /** Which exported play in `sourceCode` this artifact is, when the file
2842
+ * exports more than one. Omit for the default export. */
2843
+ exportName?: string | null;
2799
2844
  integrationMode?: 'live' | 'eval_stub' | 'fixture';
2800
2845
  /**
2801
2846
  * Sibling plays from the same local bundle graph. Lets the server splice