deepline 0.3.281 → 0.3.282

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.
@@ -200,7 +200,7 @@ export const SDK_RELEASE = {
200
200
  // getters keep their established compatibility behavior.
201
201
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
202
202
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
203
- version: '0.3.281',
203
+ version: '0.3.282',
204
204
  updateSummary:
205
205
  'Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.',
206
206
  packageCapabilities: {
@@ -59,19 +59,27 @@ function redactStructuredValue(
59
59
  }
60
60
 
61
61
  function redactPlainTelemetryText(value: string): string {
62
- return value
63
- .replace(PRIVATE_KEY_PATTERN, '[REDACTED]')
64
- .replace(POSTGRES_CREDENTIAL_PATTERN, '$1[REDACTED]@')
65
- .replace(AUTHORIZATION_CREDENTIAL_PATTERN, '$1$2$3 [REDACTED]')
66
- .replace(BEARER_CREDENTIAL_PATTERN, 'Bearer [REDACTED]')
67
- .replace(BASIC_CREDENTIAL_PATTERN, 'Basic [REDACTED]')
68
- .replace(JWT_PATTERN, '[REDACTED_JWT]')
69
- .replace(
70
- JSON_SECRET_PATTERN,
71
- (_match, keyQuote, key, separator, valueQuote) =>
72
- `${keyQuote}${key}${keyQuote}${separator}${valueQuote}[REDACTED]${valueQuote}`,
73
- )
74
- .replace(INLINE_SECRET_PATTERN, '$1$2[REDACTED]');
62
+ return (
63
+ value
64
+ // Scoped to the provider host: `key` elsewhere remains an identifier.
65
+ .replace(
66
+ /https?:\/\/(?:api|bulkapi)\.millionverifier\.com(?=[:/?#]|$)[^\s"'<>]*/gi,
67
+ (url) =>
68
+ url.replace(/([?&](?:api|key)=)[^&#\s"'<>]*/gi, '$1[REDACTED]'),
69
+ )
70
+ .replace(PRIVATE_KEY_PATTERN, '[REDACTED]')
71
+ .replace(POSTGRES_CREDENTIAL_PATTERN, '$1[REDACTED]@')
72
+ .replace(AUTHORIZATION_CREDENTIAL_PATTERN, '$1$2$3 [REDACTED]')
73
+ .replace(BEARER_CREDENTIAL_PATTERN, 'Bearer [REDACTED]')
74
+ .replace(BASIC_CREDENTIAL_PATTERN, 'Basic [REDACTED]')
75
+ .replace(JWT_PATTERN, '[REDACTED_JWT]')
76
+ .replace(
77
+ JSON_SECRET_PATTERN,
78
+ (_match, keyQuote, key, separator, valueQuote) =>
79
+ `${keyQuote}${key}${keyQuote}${separator}${valueQuote}[REDACTED]${valueQuote}`,
80
+ )
81
+ .replace(INLINE_SECRET_PATTERN, '$1$2[REDACTED]')
82
+ );
75
83
  }
76
84
 
77
85
  /**
@@ -20567,10 +20567,13 @@ export class PlayContextImpl implements ScalarPlayAuthoringRuntimeContext {
20567
20567
  logProvider429RetryPhase('retry_sleep_completed');
20568
20568
  if (
20569
20569
  !usesDurableInvocationFence &&
20570
- failure.backpressureDelayMs !== null
20570
+ (failure.backpressureDelayMs !== null ||
20571
+ (failure.reason === 'rate_limit' &&
20572
+ failure.knownNotDispatched))
20571
20573
  ) {
20572
20574
  // A classified provider rejection has no completed value to
20573
- // charge. The next physical attempt needs a new reservation;
20575
+ // charge. A credential guard refusal also releases its charge
20576
+ // before replying. The next attempt needs a new reservation;
20574
20577
  // durable result and provider-operation keys stay unchanged.
20575
20578
  deeplineRequestId = `ctx-tool-${stableDigest(`${executionRequestNonce}:provider-rate-limit-retry:${invocationAttempt}`).slice(0, 32)}`;
20576
20579
  }
@@ -242,6 +242,25 @@ function isConcurrencyBackpressureResponse(input: {
242
242
  );
243
243
  }
244
244
 
245
+ function isCredentialDispatchRefusalResponse(input: {
246
+ status: number;
247
+ bodyText: string;
248
+ executionFenced?: boolean;
249
+ }): boolean {
250
+ // Fenced gateway attempts have their own qualified redelivery contract.
251
+ // This exemption is only for the ordinary execute route's released charge.
252
+ if (input.status !== 429 || input.executionFenced === true) return false;
253
+ const body = parseJsonObject(input.bodyText);
254
+ return (
255
+ body?.code === 'RATE_LIMIT' &&
256
+ body.failure_origin === 'deepline_rate_limit' &&
257
+ body.error_category === 'rate_limit' &&
258
+ body.rate_limit_bucket_scope === 'credential_shared' &&
259
+ body.rate_limit_kind === 'requests_per_second' &&
260
+ body.provider_request_dispatched === false
261
+ );
262
+ }
263
+
245
264
  function isRuntimeSchedulerCapacityResponse(input: {
246
265
  status: number;
247
266
  bodyText: string;
@@ -573,6 +592,7 @@ export function classifyToolExecuteHttpFailure(input: {
573
592
  const concurrencyBackpressure = isConcurrencyBackpressureResponse(input);
574
593
  const runtimeSchedulerCapacity = isRuntimeSchedulerCapacityResponse(input);
575
594
  const providerPacingWait = isProviderPacingWaitResponse(input);
595
+ const credentialDispatchRefusal = isCredentialDispatchRefusalResponse(input);
576
596
  const edgeGatewayFailure = isEdgeGatewayFailureResponse(input);
577
597
  const executionFenced = input.executionFenced === true;
578
598
  const explicitRetryable = readExplicitToolHttpRetryability(input);
@@ -747,11 +767,12 @@ export function classifyToolExecuteHttpFailure(input: {
747
767
  retryDecision.reason !== 'concurrency_backpressure' &&
748
768
  retryDecision.reason !== 'runtime_scheduler_capacity' &&
749
769
  retryDecision.reason !== 'provider_pacing_wait',
750
- // Scheduler capacity and the relay's explicit concurrency shed both occur
751
- // before a provider request is dispatched. Carry that proof in the shared
752
- // classification so the retry boundary can safely pace either response
753
- // without asking a non-idempotent provider call to be replayed.
770
+ // Only explicit pre-dispatch refusals permit automatic replay of an
771
+ // operation that does not declare ordinary transient retry safety.
754
772
  knownNotDispatched:
755
- runtimeSchedulerCapacity || concurrencyBackpressure || providerPacingWait,
773
+ runtimeSchedulerCapacity ||
774
+ concurrencyBackpressure ||
775
+ providerPacingWait ||
776
+ credentialDispatchRefusal,
756
777
  };
757
778
  }
@@ -370,6 +370,12 @@ function isPublicResultSafeTokenKey(
370
370
  }
371
371
 
372
372
  function maybeRedactString(value: string, options: SecretRedactionOptions) {
373
+ // These names are credentials only on MillionVerifier URLs. Keep unrelated
374
+ // object identifiers named `key` and other providers' query fields intact.
375
+ value = value.replace(
376
+ /https?:\/\/(?:api|bulkapi)\.millionverifier\.com(?=[:/?#]|$)[^\s"'<>]*/gi,
377
+ (url) => url.replace(/([?&](?:api|key)=)[^&#\s"'<>]*/gi, '$1[REDACTED]'),
378
+ );
373
379
  if (hasExplicitSecretValue(value, options)) {
374
380
  return REDACTED_VALUE;
375
381
  }
package/dist/cli/index.js CHANGED
@@ -3515,7 +3515,7 @@ var SDK_RELEASE = {
3515
3515
  // getters keep their established compatibility behavior.
3516
3516
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
3517
3517
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
3518
- version: "0.3.281",
3518
+ version: "0.3.282",
3519
3519
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
3520
3520
  packageCapabilities: {
3521
3521
  updatePreferences: 1
@@ -3510,7 +3510,7 @@ var SDK_RELEASE = {
3510
3510
  // getters keep their established compatibility behavior.
3511
3511
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
3512
3512
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
3513
- version: "0.3.281",
3513
+ version: "0.3.282",
3514
3514
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
3515
3515
  packageCapabilities: {
3516
3516
  updatePreferences: 1
package/dist/index.js CHANGED
@@ -1328,7 +1328,7 @@ var SDK_RELEASE = {
1328
1328
  // getters keep their established compatibility behavior.
1329
1329
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
1330
1330
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
1331
- version: "0.3.281",
1331
+ version: "0.3.282",
1332
1332
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
1333
1333
  packageCapabilities: {
1334
1334
  updatePreferences: 1
package/dist/index.mjs CHANGED
@@ -1232,7 +1232,7 @@ var SDK_RELEASE = {
1232
1232
  // getters keep their established compatibility behavior.
1233
1233
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
1234
1234
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
1235
- version: "0.3.281",
1235
+ version: "0.3.282",
1236
1236
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
1237
1237
  packageCapabilities: {
1238
1238
  updatePreferences: 1
@@ -149,7 +149,7 @@ type SdkRelease = {
149
149
  supportPolicy: SdkSupportPolicy;
150
150
  };
151
151
  declare const SDK_RELEASE: {
152
- readonly version: "0.3.281";
152
+ readonly version: "0.3.282";
153
153
  readonly updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.";
154
154
  readonly packageCapabilities: {
155
155
  readonly updatePreferences: 1;
package/dist/release.d.ts CHANGED
@@ -149,7 +149,7 @@ type SdkRelease = {
149
149
  supportPolicy: SdkSupportPolicy;
150
150
  };
151
151
  declare const SDK_RELEASE: {
152
- readonly version: "0.3.281";
152
+ readonly version: "0.3.282";
153
153
  readonly updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.";
154
154
  readonly packageCapabilities: {
155
155
  readonly updatePreferences: 1;
package/dist/release.js CHANGED
@@ -74,7 +74,7 @@ var SDK_RELEASE = {
74
74
  // getters keep their established compatibility behavior.
75
75
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
76
76
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
77
- version: "0.3.281",
77
+ version: "0.3.282",
78
78
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
79
79
  packageCapabilities: {
80
80
  updatePreferences: 1
package/dist/release.mjs CHANGED
@@ -48,7 +48,7 @@ var SDK_RELEASE = {
48
48
  // getters keep their established compatibility behavior.
49
49
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
50
50
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
51
- version: "0.3.281",
51
+ version: "0.3.282",
52
52
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
53
53
  packageCapabilities: {
54
54
  updatePreferences: 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepline",
3
- "version": "0.3.281",
3
+ "version": "0.3.282",
4
4
  "description": "GTM data CLI and TypeScript SDK for coding agents",
5
5
  "license": "MIT",
6
6
  "homepage": "https://code.deepline.com",