deepline 0.3.26 → 0.3.28

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.
@@ -1958,6 +1958,10 @@ export class DeeplineClient {
1958
1958
  currentPublishedVersion:
1959
1959
  play.currentPublishedVersion ?? play.liveRevision?.version ?? null,
1960
1960
  latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null,
1961
+ ...(play.runtimeLimit ? { runtimeLimit: play.runtimeLimit } : {}),
1962
+ ...(play.activeScheduledPlays
1963
+ ? { activeScheduledPlays: play.activeScheduledPlays }
1964
+ : {}),
1961
1965
  };
1962
1966
  }
1963
1967
 
@@ -4145,12 +4149,17 @@ export class DeeplineClient {
4145
4149
  */
4146
4150
  async getPlay(
4147
4151
  name: string,
4148
- options?: { source?: 'working' | 'live' | `version:${number}` },
4152
+ options?: {
4153
+ source?: 'working' | 'live' | `version:${number}`;
4154
+ guidance?: boolean;
4155
+ },
4149
4156
  ): Promise<PlayDetail> {
4150
4157
  const encodedName = encodeURIComponent(name);
4151
4158
  const query = options?.source
4152
4159
  ? `?include=source&revision=${encodeURIComponent(options.source)}`
4153
- : '';
4160
+ : options?.guidance
4161
+ ? '?include=guidance'
4162
+ : '';
4154
4163
  return this.http.get<PlayDetail>(`/api/v2/plays/${encodedName}${query}`);
4155
4164
  }
4156
4165
 
@@ -4164,7 +4173,7 @@ export class DeeplineClient {
4164
4173
  name: string,
4165
4174
  options?: { compact?: boolean },
4166
4175
  ): Promise<PlayDescription> {
4167
- const detail = await this.getPlay(name);
4176
+ const detail = await this.getPlay(name, { guidance: true });
4168
4177
  return this.summarizePlayDetail(detail, options);
4169
4178
  }
4170
4179
 
@@ -192,7 +192,7 @@ export const SDK_RELEASE = {
192
192
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
193
193
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
194
194
  // getters keep their established compatibility behavior.
195
- version: '0.3.26',
195
+ version: '0.3.28',
196
196
  updateSummary:
197
197
  'New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.',
198
198
  contracts: {
@@ -970,6 +970,24 @@ export interface PlayRevisionSummary {
970
970
  isWorking?: boolean;
971
971
  }
972
972
 
973
+ /** Effective runtime limits stored with the selected immutable Play revision. */
974
+ export interface PlayRuntimeLimit {
975
+ timeoutSeconds: number;
976
+ memoryGiB: number;
977
+ cpu: number;
978
+ diskGiB: number;
979
+ /** `live` is what named runs execute; `working` is shown only before first publish. */
980
+ source: 'live' | 'working';
981
+ }
982
+
983
+ /** Read-only scheduled-Play capacity guidance for a Play with a cron trigger. */
984
+ export interface PlayScheduledCapacity {
985
+ used: number;
986
+ limit: number;
987
+ remaining: number;
988
+ approachingLimit: boolean;
989
+ }
990
+
973
991
  /**
974
992
  * Aggregate row-processing stats for a play's sheet.
975
993
  */
@@ -1069,6 +1087,10 @@ export interface PlayDefinitionDetail {
1069
1087
  liveRevision?: PlayRevisionSummary | null;
1070
1088
  /** `true` if the working revision differs from the live revision. */
1071
1089
  isDraftDirty?: boolean;
1090
+ /** Effective sandbox limit from the live revision, or the working draft before first publish. */
1091
+ runtimeLimit?: PlayRuntimeLimit | null;
1092
+ /** Present for a Play with a cron trigger. Advisory only; publish remains authoritative. */
1093
+ activeScheduledPlays?: PlayScheduledCapacity | null;
1072
1094
  /** Compatibility field for older readers. */
1073
1095
  currentPublishedVersion?: number | null;
1074
1096
  }
@@ -1185,6 +1207,10 @@ export interface PlayDescription {
1185
1207
  };
1186
1208
  isDraftDirty?: boolean;
1187
1209
  latestRunId?: string | null;
1210
+ /** Effective sandbox limit from the revision named runs use. */
1211
+ runtimeLimit?: PlayRuntimeLimit | null;
1212
+ /** Present for a Play with a cron trigger. Advisory only; publish remains authoritative. */
1213
+ activeScheduledPlays?: PlayScheduledCapacity | null;
1188
1214
  }
1189
1215
 
1190
1216
  /**
@@ -1,5 +1,5 @@
1
1
  import {
2
- getCompiledPipelineSubsteps,
2
+ getTopLevelPipelineSubsteps,
3
3
  type PlaySheetContract,
4
4
  type PlayStaticPipeline,
5
5
  type PlayStaticSubstep,
@@ -70,7 +70,7 @@ function datasetSessionContracts(
70
70
  }
71
71
  const rootContract = pipeline.sheetContract ?? null;
72
72
  return currentExecutionScopeSubsteps(
73
- getCompiledPipelineSubsteps(pipeline),
73
+ getTopLevelPipelineSubsteps(pipeline),
74
74
  ).flatMap<DatasetSessionContract>((substep): DatasetSessionContract[] => {
75
75
  if (substep.type !== 'dataset') return [];
76
76
  const rawNamespace = (substep.tableNamespace ?? substep.field ?? '').trim();
package/dist/cli/index.js CHANGED
@@ -1042,7 +1042,7 @@ var SDK_RELEASE = {
1042
1042
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
1043
1043
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
1044
1044
  // getters keep their established compatibility behavior.
1045
- version: "0.3.26",
1045
+ version: "0.3.28",
1046
1046
  updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
1047
1047
  contracts: {
1048
1048
  api: {
@@ -4828,7 +4828,9 @@ var DeeplineClient = class {
4828
4828
  return {
4829
4829
  ...this.summarizePlayListItem(play, options),
4830
4830
  currentPublishedVersion: play.currentPublishedVersion ?? play.liveRevision?.version ?? null,
4831
- latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null
4831
+ latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null,
4832
+ ...play.runtimeLimit ? { runtimeLimit: play.runtimeLimit } : {},
4833
+ ...play.activeScheduledPlays ? { activeScheduledPlays: play.activeScheduledPlays } : {}
4832
4834
  };
4833
4835
  }
4834
4836
  // ——————————————————————————————————————————————————————————
@@ -6465,7 +6467,7 @@ var DeeplineClient = class {
6465
6467
  */
6466
6468
  async getPlay(name, options) {
6467
6469
  const encodedName = encodeURIComponent(name);
6468
- const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : "";
6470
+ const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : options?.guidance ? "?include=guidance" : "";
6469
6471
  return this.http.get(`/api/v2/plays/${encodedName}${query}`);
6470
6472
  }
6471
6473
  /**
@@ -6475,7 +6477,7 @@ var DeeplineClient = class {
6475
6477
  * guidance, revision state, and latest run metadata when available.
6476
6478
  */
6477
6479
  async describePlay(name, options) {
6478
- const detail = await this.getPlay(name);
6480
+ const detail = await this.getPlay(name, { guidance: true });
6479
6481
  return this.summarizePlayDetail(detail, options);
6480
6482
  }
6481
6483
  /**
@@ -23400,14 +23402,25 @@ function printPlayCheckLimits(limits) {
23400
23402
  );
23401
23403
  }
23402
23404
  }
23405
+ function printScheduledPlayCapacity(capacity) {
23406
+ if (!capacity) return;
23407
+ console.log(
23408
+ ` scheduled plays: ${capacity.used} / ${capacity.limit} active (${capacity.remaining} available)`
23409
+ );
23410
+ if (capacity.approachingLimit) {
23411
+ console.log(
23412
+ capacity.remaining === 0 ? " warning: publishing a new schedule will be refused; updating this one does not consume another slot" : " warning: this check does not reserve the final slot; publish remains the confirmation"
23413
+ );
23414
+ }
23415
+ }
23403
23416
  function formatPlayRuntimeLimit(runtimeLimit) {
23404
23417
  if (!runtimeLimit || !Number.isFinite(runtimeLimit.timeoutSeconds)) {
23405
23418
  return null;
23406
23419
  }
23407
23420
  const seconds = runtimeLimit.timeoutSeconds;
23408
- if (seconds % 3600 === 0) return `${seconds / 3600}h`;
23409
- if (seconds % 60 === 0) return `${seconds / 60}m`;
23410
- return `${seconds}s`;
23421
+ if (seconds % 3600 === 0) return `${seconds / 3600} hours`;
23422
+ if (seconds % 60 === 0) return `${seconds / 60} min`;
23423
+ return `${seconds} sec`;
23411
23424
  }
23412
23425
  function isRecord10(value) {
23413
23426
  return Boolean(value && typeof value === "object" && !Array.isArray(value));
@@ -23670,6 +23683,8 @@ async function handlePlayCheck(args) {
23670
23683
  inputSchema: play.inputSchema ?? null,
23671
23684
  outputSchema: play.outputSchema ?? null,
23672
23685
  staticPipeline: play.staticPipeline ?? null,
23686
+ runtimeLimit: play.runtimeLimit ?? null,
23687
+ activeScheduledPlays: play.activeScheduledPlays ?? null,
23673
23688
  note: "Named/prebuilt play contract is available. No run was started."
23674
23689
  };
23675
23690
  if (options.jsonOutput) {
@@ -23678,6 +23693,13 @@ async function handlePlayCheck(args) {
23678
23693
  } else {
23679
23694
  console.log(`\u2713 ${result.reference} passed named play contract check`);
23680
23695
  console.log(" no run started; no Deepline credits spent");
23696
+ const runtimeLimit = formatPlayRuntimeLimit(result.runtimeLimit);
23697
+ if (runtimeLimit) {
23698
+ console.log(
23699
+ ` Runtime limit: ${runtimeLimit} (${result.runtimeLimit?.source ?? "live"})`
23700
+ );
23701
+ }
23702
+ printScheduledPlayCapacity(result.activeScheduledPlays);
23681
23703
  if (play.runCommand) console.log(` run: ${play.runCommand}`);
23682
23704
  }
23683
23705
  return 0;
@@ -25194,6 +25216,13 @@ function printPlayDescription(play) {
25194
25216
  if (play.triggerStatus?.blockedReason) {
25195
25217
  console.log(` Trigger issue: ${play.triggerStatus.blockedReason}`);
25196
25218
  }
25219
+ const runtimeLimit = formatPlayRuntimeLimit(play.runtimeLimit);
25220
+ if (runtimeLimit) {
25221
+ console.log(
25222
+ ` Runtime limit: ${runtimeLimit} (${play.runtimeLimit?.source ?? "live"})`
25223
+ );
25224
+ }
25225
+ printScheduledPlayCapacity(play.activeScheduledPlays);
25197
25226
  console.log(` Describe: deepline plays describe ${reference} --json`);
25198
25227
  console.log(` Run: ${play.runCommand}`);
25199
25228
  const cloneEditStarter = play.cloneEditStarter ?? buildCloneEditStarter(play);
@@ -1028,7 +1028,7 @@ var SDK_RELEASE = {
1028
1028
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
1029
1029
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
1030
1030
  // getters keep their established compatibility behavior.
1031
- version: "0.3.26",
1031
+ version: "0.3.28",
1032
1032
  updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
1033
1033
  contracts: {
1034
1034
  api: {
@@ -4814,7 +4814,9 @@ var DeeplineClient = class {
4814
4814
  return {
4815
4815
  ...this.summarizePlayListItem(play, options),
4816
4816
  currentPublishedVersion: play.currentPublishedVersion ?? play.liveRevision?.version ?? null,
4817
- latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null
4817
+ latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null,
4818
+ ...play.runtimeLimit ? { runtimeLimit: play.runtimeLimit } : {},
4819
+ ...play.activeScheduledPlays ? { activeScheduledPlays: play.activeScheduledPlays } : {}
4818
4820
  };
4819
4821
  }
4820
4822
  // ——————————————————————————————————————————————————————————
@@ -6451,7 +6453,7 @@ var DeeplineClient = class {
6451
6453
  */
6452
6454
  async getPlay(name, options) {
6453
6455
  const encodedName = encodeURIComponent(name);
6454
- const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : "";
6456
+ const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : options?.guidance ? "?include=guidance" : "";
6455
6457
  return this.http.get(`/api/v2/plays/${encodedName}${query}`);
6456
6458
  }
6457
6459
  /**
@@ -6461,7 +6463,7 @@ var DeeplineClient = class {
6461
6463
  * guidance, revision state, and latest run metadata when available.
6462
6464
  */
6463
6465
  async describePlay(name, options) {
6464
- const detail = await this.getPlay(name);
6466
+ const detail = await this.getPlay(name, { guidance: true });
6465
6467
  return this.summarizePlayDetail(detail, options);
6466
6468
  }
6467
6469
  /**
@@ -23463,14 +23465,25 @@ function printPlayCheckLimits(limits) {
23463
23465
  );
23464
23466
  }
23465
23467
  }
23468
+ function printScheduledPlayCapacity(capacity) {
23469
+ if (!capacity) return;
23470
+ console.log(
23471
+ ` scheduled plays: ${capacity.used} / ${capacity.limit} active (${capacity.remaining} available)`
23472
+ );
23473
+ if (capacity.approachingLimit) {
23474
+ console.log(
23475
+ capacity.remaining === 0 ? " warning: publishing a new schedule will be refused; updating this one does not consume another slot" : " warning: this check does not reserve the final slot; publish remains the confirmation"
23476
+ );
23477
+ }
23478
+ }
23466
23479
  function formatPlayRuntimeLimit(runtimeLimit) {
23467
23480
  if (!runtimeLimit || !Number.isFinite(runtimeLimit.timeoutSeconds)) {
23468
23481
  return null;
23469
23482
  }
23470
23483
  const seconds = runtimeLimit.timeoutSeconds;
23471
- if (seconds % 3600 === 0) return `${seconds / 3600}h`;
23472
- if (seconds % 60 === 0) return `${seconds / 60}m`;
23473
- return `${seconds}s`;
23484
+ if (seconds % 3600 === 0) return `${seconds / 3600} hours`;
23485
+ if (seconds % 60 === 0) return `${seconds / 60} min`;
23486
+ return `${seconds} sec`;
23474
23487
  }
23475
23488
  function isRecord10(value) {
23476
23489
  return Boolean(value && typeof value === "object" && !Array.isArray(value));
@@ -23733,6 +23746,8 @@ async function handlePlayCheck(args) {
23733
23746
  inputSchema: play.inputSchema ?? null,
23734
23747
  outputSchema: play.outputSchema ?? null,
23735
23748
  staticPipeline: play.staticPipeline ?? null,
23749
+ runtimeLimit: play.runtimeLimit ?? null,
23750
+ activeScheduledPlays: play.activeScheduledPlays ?? null,
23736
23751
  note: "Named/prebuilt play contract is available. No run was started."
23737
23752
  };
23738
23753
  if (options.jsonOutput) {
@@ -23741,6 +23756,13 @@ async function handlePlayCheck(args) {
23741
23756
  } else {
23742
23757
  console.log(`\u2713 ${result.reference} passed named play contract check`);
23743
23758
  console.log(" no run started; no Deepline credits spent");
23759
+ const runtimeLimit = formatPlayRuntimeLimit(result.runtimeLimit);
23760
+ if (runtimeLimit) {
23761
+ console.log(
23762
+ ` Runtime limit: ${runtimeLimit} (${result.runtimeLimit?.source ?? "live"})`
23763
+ );
23764
+ }
23765
+ printScheduledPlayCapacity(result.activeScheduledPlays);
23744
23766
  if (play.runCommand) console.log(` run: ${play.runCommand}`);
23745
23767
  }
23746
23768
  return 0;
@@ -25257,6 +25279,13 @@ function printPlayDescription(play) {
25257
25279
  if (play.triggerStatus?.blockedReason) {
25258
25280
  console.log(` Trigger issue: ${play.triggerStatus.blockedReason}`);
25259
25281
  }
25282
+ const runtimeLimit = formatPlayRuntimeLimit(play.runtimeLimit);
25283
+ if (runtimeLimit) {
25284
+ console.log(
25285
+ ` Runtime limit: ${runtimeLimit} (${play.runtimeLimit?.source ?? "live"})`
25286
+ );
25287
+ }
25288
+ printScheduledPlayCapacity(play.activeScheduledPlays);
25260
25289
  console.log(` Describe: deepline plays describe ${reference} --json`);
25261
25290
  console.log(` Run: ${play.runCommand}`);
25262
25291
  const cloneEditStarter = play.cloneEditStarter ?? buildCloneEditStarter(play);
package/dist/index.d.mts CHANGED
@@ -1072,6 +1072,22 @@ interface PlayRevisionSummary {
1072
1072
  /** True when this is the newest saved working revision. */
1073
1073
  isWorking?: boolean;
1074
1074
  }
1075
+ /** Effective runtime limits stored with the selected immutable Play revision. */
1076
+ interface PlayRuntimeLimit {
1077
+ timeoutSeconds: number;
1078
+ memoryGiB: number;
1079
+ cpu: number;
1080
+ diskGiB: number;
1081
+ /** `live` is what named runs execute; `working` is shown only before first publish. */
1082
+ source: 'live' | 'working';
1083
+ }
1084
+ /** Read-only scheduled-Play capacity guidance for a Play with a cron trigger. */
1085
+ interface PlayScheduledCapacity {
1086
+ used: number;
1087
+ limit: number;
1088
+ remaining: number;
1089
+ approachingLimit: boolean;
1090
+ }
1075
1091
  /**
1076
1092
  * Aggregate row-processing stats for a play's sheet.
1077
1093
  */
@@ -1168,6 +1184,10 @@ interface PlayDefinitionDetail {
1168
1184
  liveRevision?: PlayRevisionSummary | null;
1169
1185
  /** `true` if the working revision differs from the live revision. */
1170
1186
  isDraftDirty?: boolean;
1187
+ /** Effective sandbox limit from the live revision, or the working draft before first publish. */
1188
+ runtimeLimit?: PlayRuntimeLimit | null;
1189
+ /** Present for a Play with a cron trigger. Advisory only; publish remains authoritative. */
1190
+ activeScheduledPlays?: PlayScheduledCapacity | null;
1171
1191
  /** Compatibility field for older readers. */
1172
1192
  currentPublishedVersion?: number | null;
1173
1193
  }
@@ -1292,6 +1312,10 @@ interface PlayDescription {
1292
1312
  };
1293
1313
  isDraftDirty?: boolean;
1294
1314
  latestRunId?: string | null;
1315
+ /** Effective sandbox limit from the revision named runs use. */
1316
+ runtimeLimit?: PlayRuntimeLimit | null;
1317
+ /** Present for a Play with a cron trigger. Advisory only; publish remains authoritative. */
1318
+ activeScheduledPlays?: PlayScheduledCapacity | null;
1295
1319
  }
1296
1320
  /**
1297
1321
  * Complete play detail including definition, recent runs, and sheet state.
@@ -3518,6 +3542,7 @@ declare class DeeplineClient {
3518
3542
  */
3519
3543
  getPlay(name: string, options?: {
3520
3544
  source?: 'working' | 'live' | `version:${number}`;
3545
+ guidance?: boolean;
3521
3546
  }): Promise<PlayDetail>;
3522
3547
  /**
3523
3548
  * Get a normalized play description suitable for agents and CLIs.
package/dist/index.d.ts CHANGED
@@ -1072,6 +1072,22 @@ interface PlayRevisionSummary {
1072
1072
  /** True when this is the newest saved working revision. */
1073
1073
  isWorking?: boolean;
1074
1074
  }
1075
+ /** Effective runtime limits stored with the selected immutable Play revision. */
1076
+ interface PlayRuntimeLimit {
1077
+ timeoutSeconds: number;
1078
+ memoryGiB: number;
1079
+ cpu: number;
1080
+ diskGiB: number;
1081
+ /** `live` is what named runs execute; `working` is shown only before first publish. */
1082
+ source: 'live' | 'working';
1083
+ }
1084
+ /** Read-only scheduled-Play capacity guidance for a Play with a cron trigger. */
1085
+ interface PlayScheduledCapacity {
1086
+ used: number;
1087
+ limit: number;
1088
+ remaining: number;
1089
+ approachingLimit: boolean;
1090
+ }
1075
1091
  /**
1076
1092
  * Aggregate row-processing stats for a play's sheet.
1077
1093
  */
@@ -1168,6 +1184,10 @@ interface PlayDefinitionDetail {
1168
1184
  liveRevision?: PlayRevisionSummary | null;
1169
1185
  /** `true` if the working revision differs from the live revision. */
1170
1186
  isDraftDirty?: boolean;
1187
+ /** Effective sandbox limit from the live revision, or the working draft before first publish. */
1188
+ runtimeLimit?: PlayRuntimeLimit | null;
1189
+ /** Present for a Play with a cron trigger. Advisory only; publish remains authoritative. */
1190
+ activeScheduledPlays?: PlayScheduledCapacity | null;
1171
1191
  /** Compatibility field for older readers. */
1172
1192
  currentPublishedVersion?: number | null;
1173
1193
  }
@@ -1292,6 +1312,10 @@ interface PlayDescription {
1292
1312
  };
1293
1313
  isDraftDirty?: boolean;
1294
1314
  latestRunId?: string | null;
1315
+ /** Effective sandbox limit from the revision named runs use. */
1316
+ runtimeLimit?: PlayRuntimeLimit | null;
1317
+ /** Present for a Play with a cron trigger. Advisory only; publish remains authoritative. */
1318
+ activeScheduledPlays?: PlayScheduledCapacity | null;
1295
1319
  }
1296
1320
  /**
1297
1321
  * Complete play detail including definition, recent runs, and sheet state.
@@ -3518,6 +3542,7 @@ declare class DeeplineClient {
3518
3542
  */
3519
3543
  getPlay(name: string, options?: {
3520
3544
  source?: 'working' | 'live' | `version:${number}`;
3545
+ guidance?: boolean;
3521
3546
  }): Promise<PlayDetail>;
3522
3547
  /**
3523
3548
  * Get a normalized play description suitable for agents and CLIs.
package/dist/index.js CHANGED
@@ -778,7 +778,7 @@ var SDK_RELEASE = {
778
778
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
779
779
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
780
780
  // getters keep their established compatibility behavior.
781
- version: "0.3.26",
781
+ version: "0.3.28",
782
782
  updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
783
783
  contracts: {
784
784
  api: {
@@ -4530,7 +4530,9 @@ var DeeplineClient = class {
4530
4530
  return {
4531
4531
  ...this.summarizePlayListItem(play, options),
4532
4532
  currentPublishedVersion: play.currentPublishedVersion ?? play.liveRevision?.version ?? null,
4533
- latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null
4533
+ latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null,
4534
+ ...play.runtimeLimit ? { runtimeLimit: play.runtimeLimit } : {},
4535
+ ...play.activeScheduledPlays ? { activeScheduledPlays: play.activeScheduledPlays } : {}
4534
4536
  };
4535
4537
  }
4536
4538
  // ——————————————————————————————————————————————————————————
@@ -6167,7 +6169,7 @@ var DeeplineClient = class {
6167
6169
  */
6168
6170
  async getPlay(name, options) {
6169
6171
  const encodedName = encodeURIComponent(name);
6170
- const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : "";
6172
+ const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : options?.guidance ? "?include=guidance" : "";
6171
6173
  return this.http.get(`/api/v2/plays/${encodedName}${query}`);
6172
6174
  }
6173
6175
  /**
@@ -6177,7 +6179,7 @@ var DeeplineClient = class {
6177
6179
  * guidance, revision state, and latest run metadata when available.
6178
6180
  */
6179
6181
  async describePlay(name, options) {
6180
- const detail = await this.getPlay(name);
6182
+ const detail = await this.getPlay(name, { guidance: true });
6181
6183
  return this.summarizePlayDetail(detail, options);
6182
6184
  }
6183
6185
  /**
package/dist/index.mjs CHANGED
@@ -701,7 +701,7 @@ var SDK_RELEASE = {
701
701
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
702
702
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
703
703
  // getters keep their established compatibility behavior.
704
- version: "0.3.26",
704
+ version: "0.3.28",
705
705
  updateSummary: "New raw-v2 tool responses preserve complete scrubbed provider envelopes at toolResponse.rawV2, including JSON:API included resources, links, cursors, and totals. Existing toolResponse.raw and declared getters keep working unchanged.",
706
706
  contracts: {
707
707
  api: {
@@ -4453,7 +4453,9 @@ var DeeplineClient = class {
4453
4453
  return {
4454
4454
  ...this.summarizePlayListItem(play, options),
4455
4455
  currentPublishedVersion: play.currentPublishedVersion ?? play.liveRevision?.version ?? null,
4456
- latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null
4456
+ latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null,
4457
+ ...play.runtimeLimit ? { runtimeLimit: play.runtimeLimit } : {},
4458
+ ...play.activeScheduledPlays ? { activeScheduledPlays: play.activeScheduledPlays } : {}
4457
4459
  };
4458
4460
  }
4459
4461
  // ——————————————————————————————————————————————————————————
@@ -6090,7 +6092,7 @@ var DeeplineClient = class {
6090
6092
  */
6091
6093
  async getPlay(name, options) {
6092
6094
  const encodedName = encodeURIComponent(name);
6093
- const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : "";
6095
+ const query = options?.source ? `?include=source&revision=${encodeURIComponent(options.source)}` : options?.guidance ? "?include=guidance" : "";
6094
6096
  return this.http.get(`/api/v2/plays/${encodedName}${query}`);
6095
6097
  }
6096
6098
  /**
@@ -6100,7 +6102,7 @@ var DeeplineClient = class {
6100
6102
  * guidance, revision state, and latest run metadata when available.
6101
6103
  */
6102
6104
  async describePlay(name, options) {
6103
- const detail = await this.getPlay(name);
6105
+ const detail = await this.getPlay(name, { guidance: true });
6104
6106
  return this.summarizePlayDetail(detail, options);
6105
6107
  }
6106
6108
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepline",
3
- "version": "0.3.26",
3
+ "version": "0.3.28",
4
4
  "description": "GTM data CLI and TypeScript SDK for coding agents",
5
5
  "license": "MIT",
6
6
  "homepage": "https://code.deepline.com",