deepline 0.2.63 → 0.2.65

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.
@@ -160,7 +160,7 @@ export const SDK_RELEASE = {
160
160
  // 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
161
161
  // exposed storage-dependent synchronous access. This deliberate minor
162
162
  // release keeps lazy paging semantics independent of row residency.
163
- version: '0.2.63',
163
+ version: '0.2.65',
164
164
  contracts: {
165
165
  api: {
166
166
  name: 'sdk-http-api',
@@ -545,7 +545,7 @@ function parseContractPaths(
545
545
  .filter(Boolean);
546
546
  if (paths.some((path) => !DOCFLOW_PATH.test(path))) {
547
547
  errors.push(
548
- `Docflow annotation "${nodeId}" on line ${line} has an invalid ${attribute}:"…" contract. Use comma-separated identifiers or property paths only.`,
548
+ `Docflow annotation "${nodeId}" on line ${line} has an invalid ${attribute}:"…" contract. Use comma-separated identifiers or property paths only — e.g. the assigned const name (out:"result"). Prose labels belong in the diagram box, not here.`,
549
549
  );
550
550
  return undefined;
551
551
  }
@@ -370,25 +370,33 @@ export class ProviderTransientError extends ToolExecutionError {
370
370
  /** Why a provider cannot serve the current read request. */
371
371
  export type ProviderUnavailableReason =
372
372
  | ProviderTransientErrorCategory
373
- | 'account_capacity';
373
+ | 'account_capacity'
374
+ | 'credentials_missing';
374
375
 
375
376
  /**
376
- * A provider-owned failure that permits a read waterfall to try its next
377
- * provider. This does not include invalid credentials, caller input, or
378
- * Deepline billing failures.
377
+ * A provider failure that permits a read waterfall to try its next provider.
378
+ * A missing provider connection is included because another provider may still
379
+ * serve the read. Invalid credentials, caller input, and Deepline billing
380
+ * failures remain loud.
379
381
  */
380
382
  export type ProviderUnavailableError =
381
383
  | ProviderTransientError
382
384
  | (ToolExecutionError & {
383
385
  readonly origin: 'provider';
384
386
  readonly code: 'PROVIDER_ACCOUNT_CAPACITY';
387
+ })
388
+ | (ToolExecutionError & {
389
+ readonly origin: 'caller';
390
+ readonly code: 'INTEGRATION_CREDENTIALS_MISSING';
385
391
  });
386
392
 
387
393
  /**
388
394
  * Return the provider-specific reason a read cannot run right now.
389
395
  *
390
396
  * `null` means this error must stay loud: it is caller input, an invalid
391
- * customer credential, Deepline billing, or an internal failure.
397
+ * customer credential, Deepline billing, or an internal failure. A missing
398
+ * provider connection is different: an explicit read waterfall may continue
399
+ * to a configured fallback and record the unavailable leg.
392
400
  */
393
401
  export function getProviderUnavailableReason(
394
402
  error: unknown,
@@ -401,6 +409,13 @@ export function getProviderUnavailableReason(
401
409
  ) {
402
410
  return 'account_capacity';
403
411
  }
412
+ if (
413
+ error instanceof ToolExecutionError &&
414
+ error.origin === 'caller' &&
415
+ error.code === 'INTEGRATION_CREDENTIALS_MISSING'
416
+ ) {
417
+ return 'credentials_missing';
418
+ }
404
419
  return null;
405
420
  }
406
421
 
package/dist/cli/index.js CHANGED
@@ -1044,7 +1044,7 @@ var SDK_RELEASE = {
1044
1044
  // 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
1045
1045
  // exposed storage-dependent synchronous access. This deliberate minor
1046
1046
  // release keeps lazy paging semantics independent of row residency.
1047
- version: "0.2.63",
1047
+ version: "0.2.65",
1048
1048
  contracts: {
1049
1049
  api: {
1050
1050
  name: "sdk-http-api",
@@ -38091,6 +38091,13 @@ function isRegistryAccessFailure(output2, registryUrl) {
38091
38091
  function withRegistry(args, registryUrl) {
38092
38092
  return [...args.slice(0, -1), "--registry", registryUrl, args.at(-1) ?? ""];
38093
38093
  }
38094
+ function isBinLinkExistsFailure(output2) {
38095
+ return /\bEEXIST\b/i.test(output2) && /symlink/i.test(output2);
38096
+ }
38097
+ function withForce(args) {
38098
+ if (args.includes("--force")) return args;
38099
+ return [...args.slice(0, -1), "--force", args.at(-1) ?? ""];
38100
+ }
38094
38101
  async function runNpmInstallWithRegistryFallback(input2) {
38095
38102
  const primaryArgs = input2.primaryRegistryUrl ? withRegistry(input2.installArgs, input2.primaryRegistryUrl) : input2.installArgs;
38096
38103
  const first = await runCommand(
@@ -38098,22 +38105,36 @@ async function runNpmInstallWithRegistryFallback(input2) {
38098
38105
  primaryArgs,
38099
38106
  input2.env ?? process.env
38100
38107
  );
38101
- if (first.exitCode === 0 || !input2.fallbackRegistryUrl || !isRegistryAccessFailure(
38108
+ if (first.exitCode === 0) {
38109
+ return first.exitCode;
38110
+ }
38111
+ if (input2.fallbackRegistryUrl && isRegistryAccessFailure(
38102
38112
  first.output,
38103
38113
  input2.primaryRegistryUrl ?? DEFAULT_NPM_REGISTRY_URL
38104
38114
  )) {
38105
- return first.exitCode;
38106
- }
38107
- process.stderr.write(
38108
- `Primary npm registry access failed; retrying through Deepline's registry: ${input2.fallbackRegistryUrl}
38115
+ process.stderr.write(
38116
+ `Primary npm registry access failed; retrying through Deepline's registry: ${input2.fallbackRegistryUrl}
38109
38117
  `
38110
- );
38111
- const fallback = await runCommand(
38112
- input2.npmCommand,
38113
- withRegistry(input2.installArgs, input2.fallbackRegistryUrl),
38114
- input2.env ?? process.env
38115
- );
38116
- return fallback.exitCode;
38118
+ );
38119
+ const fallback = await runCommand(
38120
+ input2.npmCommand,
38121
+ withRegistry(input2.installArgs, input2.fallbackRegistryUrl),
38122
+ input2.env ?? process.env
38123
+ );
38124
+ return fallback.exitCode;
38125
+ }
38126
+ if (isBinLinkExistsFailure(first.output)) {
38127
+ process.stderr.write(
38128
+ "npm refused to relink an existing global bin symlink (EEXIST); retrying with --force since this plan only targets this CLI's own install prefix.\n"
38129
+ );
38130
+ const forced = await runCommand(
38131
+ input2.npmCommand,
38132
+ withForce(primaryArgs),
38133
+ input2.env ?? process.env
38134
+ );
38135
+ return forced.exitCode;
38136
+ }
38137
+ return first.exitCode;
38117
38138
  }
38118
38139
  function writeSidecarLauncher(input2) {
38119
38140
  (0, import_node_fs20.mkdirSync)((0, import_node_path23.dirname)(input2.path), { recursive: true });
@@ -1030,7 +1030,7 @@ var SDK_RELEASE = {
1030
1030
  // 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
1031
1031
  // exposed storage-dependent synchronous access. This deliberate minor
1032
1032
  // release keeps lazy paging semantics independent of row residency.
1033
- version: "0.2.63",
1033
+ version: "0.2.65",
1034
1034
  contracts: {
1035
1035
  api: {
1036
1036
  name: "sdk-http-api",
@@ -38171,6 +38171,13 @@ function isRegistryAccessFailure(output2, registryUrl) {
38171
38171
  function withRegistry(args, registryUrl) {
38172
38172
  return [...args.slice(0, -1), "--registry", registryUrl, args.at(-1) ?? ""];
38173
38173
  }
38174
+ function isBinLinkExistsFailure(output2) {
38175
+ return /\bEEXIST\b/i.test(output2) && /symlink/i.test(output2);
38176
+ }
38177
+ function withForce(args) {
38178
+ if (args.includes("--force")) return args;
38179
+ return [...args.slice(0, -1), "--force", args.at(-1) ?? ""];
38180
+ }
38174
38181
  async function runNpmInstallWithRegistryFallback(input2) {
38175
38182
  const primaryArgs = input2.primaryRegistryUrl ? withRegistry(input2.installArgs, input2.primaryRegistryUrl) : input2.installArgs;
38176
38183
  const first = await runCommand(
@@ -38178,22 +38185,36 @@ async function runNpmInstallWithRegistryFallback(input2) {
38178
38185
  primaryArgs,
38179
38186
  input2.env ?? process.env
38180
38187
  );
38181
- if (first.exitCode === 0 || !input2.fallbackRegistryUrl || !isRegistryAccessFailure(
38188
+ if (first.exitCode === 0) {
38189
+ return first.exitCode;
38190
+ }
38191
+ if (input2.fallbackRegistryUrl && isRegistryAccessFailure(
38182
38192
  first.output,
38183
38193
  input2.primaryRegistryUrl ?? DEFAULT_NPM_REGISTRY_URL
38184
38194
  )) {
38185
- return first.exitCode;
38186
- }
38187
- process.stderr.write(
38188
- `Primary npm registry access failed; retrying through Deepline's registry: ${input2.fallbackRegistryUrl}
38195
+ process.stderr.write(
38196
+ `Primary npm registry access failed; retrying through Deepline's registry: ${input2.fallbackRegistryUrl}
38189
38197
  `
38190
- );
38191
- const fallback = await runCommand(
38192
- input2.npmCommand,
38193
- withRegistry(input2.installArgs, input2.fallbackRegistryUrl),
38194
- input2.env ?? process.env
38195
- );
38196
- return fallback.exitCode;
38198
+ );
38199
+ const fallback = await runCommand(
38200
+ input2.npmCommand,
38201
+ withRegistry(input2.installArgs, input2.fallbackRegistryUrl),
38202
+ input2.env ?? process.env
38203
+ );
38204
+ return fallback.exitCode;
38205
+ }
38206
+ if (isBinLinkExistsFailure(first.output)) {
38207
+ process.stderr.write(
38208
+ "npm refused to relink an existing global bin symlink (EEXIST); retrying with --force since this plan only targets this CLI's own install prefix.\n"
38209
+ );
38210
+ const forced = await runCommand(
38211
+ input2.npmCommand,
38212
+ withForce(primaryArgs),
38213
+ input2.env ?? process.env
38214
+ );
38215
+ return forced.exitCode;
38216
+ }
38217
+ return first.exitCode;
38197
38218
  }
38198
38219
  function writeSidecarLauncher(input2) {
38199
38220
  mkdirSync10(dirname16(input2.path), { recursive: true });
@@ -979,21 +979,27 @@ declare class ProviderTransientError extends ToolExecutionError {
979
979
  static [Symbol.hasInstance](value: unknown): boolean;
980
980
  }
981
981
  /** Why a provider cannot serve the current read request. */
982
- type ProviderUnavailableReason = ProviderTransientErrorCategory | 'account_capacity';
982
+ type ProviderUnavailableReason = ProviderTransientErrorCategory | 'account_capacity' | 'credentials_missing';
983
983
  /**
984
- * A provider-owned failure that permits a read waterfall to try its next
985
- * provider. This does not include invalid credentials, caller input, or
986
- * Deepline billing failures.
984
+ * A provider failure that permits a read waterfall to try its next provider.
985
+ * A missing provider connection is included because another provider may still
986
+ * serve the read. Invalid credentials, caller input, and Deepline billing
987
+ * failures remain loud.
987
988
  */
988
989
  type ProviderUnavailableError = ProviderTransientError | (ToolExecutionError & {
989
990
  readonly origin: 'provider';
990
991
  readonly code: 'PROVIDER_ACCOUNT_CAPACITY';
992
+ }) | (ToolExecutionError & {
993
+ readonly origin: 'caller';
994
+ readonly code: 'INTEGRATION_CREDENTIALS_MISSING';
991
995
  });
992
996
  /**
993
997
  * Return the provider-specific reason a read cannot run right now.
994
998
  *
995
999
  * `null` means this error must stay loud: it is caller input, an invalid
996
- * customer credential, Deepline billing, or an internal failure.
1000
+ * customer credential, Deepline billing, or an internal failure. A missing
1001
+ * provider connection is different: an explicit read waterfall may continue
1002
+ * to a configured fallback and record the unavailable leg.
997
1003
  */
998
1004
  declare function getProviderUnavailableReason(error: unknown): ProviderUnavailableReason | null;
999
1005
  /**
@@ -979,21 +979,27 @@ declare class ProviderTransientError extends ToolExecutionError {
979
979
  static [Symbol.hasInstance](value: unknown): boolean;
980
980
  }
981
981
  /** Why a provider cannot serve the current read request. */
982
- type ProviderUnavailableReason = ProviderTransientErrorCategory | 'account_capacity';
982
+ type ProviderUnavailableReason = ProviderTransientErrorCategory | 'account_capacity' | 'credentials_missing';
983
983
  /**
984
- * A provider-owned failure that permits a read waterfall to try its next
985
- * provider. This does not include invalid credentials, caller input, or
986
- * Deepline billing failures.
984
+ * A provider failure that permits a read waterfall to try its next provider.
985
+ * A missing provider connection is included because another provider may still
986
+ * serve the read. Invalid credentials, caller input, and Deepline billing
987
+ * failures remain loud.
987
988
  */
988
989
  type ProviderUnavailableError = ProviderTransientError | (ToolExecutionError & {
989
990
  readonly origin: 'provider';
990
991
  readonly code: 'PROVIDER_ACCOUNT_CAPACITY';
992
+ }) | (ToolExecutionError & {
993
+ readonly origin: 'caller';
994
+ readonly code: 'INTEGRATION_CREDENTIALS_MISSING';
991
995
  });
992
996
  /**
993
997
  * Return the provider-specific reason a read cannot run right now.
994
998
  *
995
999
  * `null` means this error must stay loud: it is caller input, an invalid
996
- * customer credential, Deepline billing, or an internal failure.
1000
+ * customer credential, Deepline billing, or an internal failure. A missing
1001
+ * provider connection is different: an explicit read waterfall may continue
1002
+ * to a configured fallback and record the unavailable leg.
997
1003
  */
998
1004
  declare function getProviderUnavailableReason(error: unknown): ProviderUnavailableReason | null;
999
1005
  /**
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, O as PlayAuthoringStepProgramOptions } from './compiler-manifest-DTbs7i9a.mjs';
2
- export { Q as DEEPLINE_EXTRACTOR_TARGETS, R as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, S as DeeplineEmailStatusGetterValue, U as DeeplineExtractorTarget, V as DeeplineGetterValue, W as DeeplineGetterValueMap, X as JOB_CHANGE_STATUS_VALUES, Y as JobChangeStatus, Z as PHONE_STATUS_VALUES, _ as PhoneStatus, $ as PlayDataset, a0 as PlayDatasetInput, a1 as PreviousCell, a2 as ProviderTransientError, a3 as ProviderTransientErrorCategory, a4 as ProviderUnavailableError, a5 as ProviderUnavailableReason, a6 as ToolExecutionErrorCategory, a7 as ToolExecutionErrorOrigin, a8 as ToolExecutionFailureV1, a9 as ToolExecutionNetworkKind, aa as ToolExecutionNetworkScope, ab as getProviderUnavailableReason, ac as isDeeplineExtractorTarget, ad as isProviderUnavailable, ae as isProviderWaterfallUnavailableError } from './compiler-manifest-DTbs7i9a.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, O as PlayAuthoringStepProgramOptions } from './compiler-manifest-CrAB1ffd.mjs';
2
+ export { Q as DEEPLINE_EXTRACTOR_TARGETS, R as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, S as DeeplineEmailStatusGetterValue, U as DeeplineExtractorTarget, V as DeeplineGetterValue, W as DeeplineGetterValueMap, X as JOB_CHANGE_STATUS_VALUES, Y as JobChangeStatus, Z as PHONE_STATUS_VALUES, _ as PhoneStatus, $ as PlayDataset, a0 as PlayDatasetInput, a1 as PreviousCell, a2 as ProviderTransientError, a3 as ProviderTransientErrorCategory, a4 as ProviderUnavailableError, a5 as ProviderUnavailableReason, a6 as ToolExecutionErrorCategory, a7 as ToolExecutionErrorOrigin, a8 as ToolExecutionFailureV1, a9 as ToolExecutionNetworkKind, aa as ToolExecutionNetworkScope, ab as getProviderUnavailableReason, ac as isDeeplineExtractorTarget, ad as isProviderUnavailable, ae as isProviderWaterfallUnavailableError } from './compiler-manifest-CrAB1ffd.mjs';
3
3
  import '@sinclair/typebox';
4
4
 
5
5
  declare const FIXTURE_BEHAVIOR_VERSION: 1;
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, O as PlayAuthoringStepProgramOptions } from './compiler-manifest-DTbs7i9a.js';
2
- export { Q as DEEPLINE_EXTRACTOR_TARGETS, R as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, S as DeeplineEmailStatusGetterValue, U as DeeplineExtractorTarget, V as DeeplineGetterValue, W as DeeplineGetterValueMap, X as JOB_CHANGE_STATUS_VALUES, Y as JobChangeStatus, Z as PHONE_STATUS_VALUES, _ as PhoneStatus, $ as PlayDataset, a0 as PlayDatasetInput, a1 as PreviousCell, a2 as ProviderTransientError, a3 as ProviderTransientErrorCategory, a4 as ProviderUnavailableError, a5 as ProviderUnavailableReason, a6 as ToolExecutionErrorCategory, a7 as ToolExecutionErrorOrigin, a8 as ToolExecutionFailureV1, a9 as ToolExecutionNetworkKind, aa as ToolExecutionNetworkScope, ab as getProviderUnavailableReason, ac as isDeeplineExtractorTarget, ad as isProviderUnavailable, ae as isProviderWaterfallUnavailableError } from './compiler-manifest-DTbs7i9a.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, O as PlayAuthoringStepProgramOptions } from './compiler-manifest-CrAB1ffd.js';
2
+ export { Q as DEEPLINE_EXTRACTOR_TARGETS, R as DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS, S as DeeplineEmailStatusGetterValue, U as DeeplineExtractorTarget, V as DeeplineGetterValue, W as DeeplineGetterValueMap, X as JOB_CHANGE_STATUS_VALUES, Y as JobChangeStatus, Z as PHONE_STATUS_VALUES, _ as PhoneStatus, $ as PlayDataset, a0 as PlayDatasetInput, a1 as PreviousCell, a2 as ProviderTransientError, a3 as ProviderTransientErrorCategory, a4 as ProviderUnavailableError, a5 as ProviderUnavailableReason, a6 as ToolExecutionErrorCategory, a7 as ToolExecutionErrorOrigin, a8 as ToolExecutionFailureV1, a9 as ToolExecutionNetworkKind, aa as ToolExecutionNetworkScope, ab as getProviderUnavailableReason, ac as isDeeplineExtractorTarget, ad as isProviderUnavailable, ae as isProviderWaterfallUnavailableError } from './compiler-manifest-CrAB1ffd.js';
3
3
  import '@sinclair/typebox';
4
4
 
5
5
  declare const FIXTURE_BEHAVIOR_VERSION: 1;
package/dist/index.js CHANGED
@@ -239,6 +239,9 @@ function getProviderUnavailableReason(error) {
239
239
  if (error instanceof ToolExecutionError && error.origin === "provider" && error.code === "PROVIDER_ACCOUNT_CAPACITY") {
240
240
  return "account_capacity";
241
241
  }
242
+ if (error instanceof ToolExecutionError && error.origin === "caller" && error.code === "INTEGRATION_CREDENTIALS_MISSING") {
243
+ return "credentials_missing";
244
+ }
242
245
  return null;
243
246
  }
244
247
  function isProviderUnavailable(error) {
@@ -777,7 +780,7 @@ var SDK_RELEASE = {
777
780
  // 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
778
781
  // exposed storage-dependent synchronous access. This deliberate minor
779
782
  // release keeps lazy paging semantics independent of row residency.
780
- version: "0.2.63",
783
+ version: "0.2.65",
781
784
  contracts: {
782
785
  api: {
783
786
  name: "sdk-http-api",
package/dist/index.mjs CHANGED
@@ -162,6 +162,9 @@ function getProviderUnavailableReason(error) {
162
162
  if (error instanceof ToolExecutionError && error.origin === "provider" && error.code === "PROVIDER_ACCOUNT_CAPACITY") {
163
163
  return "account_capacity";
164
164
  }
165
+ if (error instanceof ToolExecutionError && error.origin === "caller" && error.code === "INTEGRATION_CREDENTIALS_MISSING") {
166
+ return "credentials_missing";
167
+ }
165
168
  return null;
166
169
  }
167
170
  function isProviderUnavailable(error) {
@@ -700,7 +703,7 @@ var SDK_RELEASE = {
700
703
  // 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
701
704
  // exposed storage-dependent synchronous access. This deliberate minor
702
705
  // release keeps lazy paging semantics independent of row residency.
703
- version: "0.2.63",
706
+ version: "0.2.65",
704
707
  contracts: {
705
708
  api: {
706
709
  name: "sdk-http-api",
@@ -225,8 +225,8 @@
225
225
  "dist/cli/index.d.ts",
226
226
  "dist/cli/index.js",
227
227
  "dist/cli/index.mjs",
228
- "dist/compiler-manifest-DTbs7i9a.d.mts",
229
- "dist/compiler-manifest-DTbs7i9a.d.ts",
228
+ "dist/compiler-manifest-CrAB1ffd.d.mts",
229
+ "dist/compiler-manifest-CrAB1ffd.d.ts",
230
230
  "dist/helpers.d.mts",
231
231
  "dist/helpers.d.ts",
232
232
  "dist/helpers.js",
@@ -1,5 +1,5 @@
1
- import { T as ToolExecutionErrorSchemaVersion, P as PlayAuthoringContractEdition, a as PlayArtifactKind$1, b as PlaySandboxRuntimeDeclaration, c as PlayCompilerManifest } from '../compiler-manifest-DTbs7i9a.mjs';
2
- export { d as PLAY_ARTIFACT_KINDS } from '../compiler-manifest-DTbs7i9a.mjs';
1
+ import { T as ToolExecutionErrorSchemaVersion, P as PlayAuthoringContractEdition, a as PlayArtifactKind$1, b as PlaySandboxRuntimeDeclaration, c as PlayCompilerManifest } from '../compiler-manifest-CrAB1ffd.mjs';
2
+ export { d as PLAY_ARTIFACT_KINDS } from '../compiler-manifest-CrAB1ffd.mjs';
3
3
  import '@sinclair/typebox';
4
4
 
5
5
  type PlayPackageImport = {
@@ -1,5 +1,5 @@
1
- import { T as ToolExecutionErrorSchemaVersion, P as PlayAuthoringContractEdition, a as PlayArtifactKind$1, b as PlaySandboxRuntimeDeclaration, c as PlayCompilerManifest } from '../compiler-manifest-DTbs7i9a.js';
2
- export { d as PLAY_ARTIFACT_KINDS } from '../compiler-manifest-DTbs7i9a.js';
1
+ import { T as ToolExecutionErrorSchemaVersion, P as PlayAuthoringContractEdition, a as PlayArtifactKind$1, b as PlaySandboxRuntimeDeclaration, c as PlayCompilerManifest } from '../compiler-manifest-CrAB1ffd.js';
2
+ export { d as PLAY_ARTIFACT_KINDS } from '../compiler-manifest-CrAB1ffd.js';
3
3
  import '@sinclair/typebox';
4
4
 
5
5
  type PlayPackageImport = {
@@ -4350,7 +4350,7 @@ function parseContractPaths(value, attribute, nodeId, line, errors) {
4350
4350
  const paths = value.split(",").map((path) => path.trim()).filter(Boolean);
4351
4351
  if (paths.some((path) => !DOCFLOW_PATH.test(path))) {
4352
4352
  errors.push(
4353
- `Docflow annotation "${nodeId}" on line ${line} has an invalid ${attribute}:"\u2026" contract. Use comma-separated identifiers or property paths only.`
4353
+ `Docflow annotation "${nodeId}" on line ${line} has an invalid ${attribute}:"\u2026" contract. Use comma-separated identifiers or property paths only \u2014 e.g. the assigned const name (out:"result"). Prose labels belong in the diagram box, not here.`
4354
4354
  );
4355
4355
  return void 0;
4356
4356
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepline",
3
- "version": "0.2.63",
3
+ "version": "0.2.65",
4
4
  "description": "GTM data CLI and TypeScript SDK for coding agents",
5
5
  "license": "MIT",
6
6
  "homepage": "https://code.deepline.com",