deepline 0.3.18 → 0.3.19

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.
@@ -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.18',
195
+ version: '0.3.19',
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: {
@@ -964,10 +964,12 @@ export class AppRuntimeApiTransportError extends Error {
964
964
  * whether to retry or block a delivery without parsing an error message.
965
965
  */
966
966
  export class AppRuntimeApiResponseError extends Error {
967
+ readonly action: RuntimeApiRequest['action'];
967
968
  readonly status: number;
968
969
  readonly code: string | null;
969
970
  readonly requestId: string | null;
970
971
  readonly retryable: boolean;
972
+ readonly detail: string;
971
973
 
972
974
  constructor(input: {
973
975
  action: RuntimeApiRequest['action'];
@@ -985,10 +987,12 @@ export class AppRuntimeApiResponseError extends Error {
985
987
  input.detail,
986
988
  );
987
989
  this.name = 'AppRuntimeApiResponseError';
990
+ this.action = input.action;
988
991
  this.status = input.status;
989
992
  this.code = input.code?.trim() || null;
990
993
  this.requestId = input.requestId?.trim() || null;
991
994
  this.retryable = input.retryable;
995
+ this.detail = input.detail;
992
996
  }
993
997
  }
994
998
 
@@ -1514,9 +1518,36 @@ export function fallbackRuntimeTrafficPolicyForUnavailableControlPlane(
1514
1518
  ) {
1515
1519
  return DEFAULT_RUNTIME_TRAFFIC_POLICY;
1516
1520
  }
1521
+ // A new worker is intentionally canaried against the currently active app
1522
+ // before the staged app is promoted. Older apps predate this non-critical
1523
+ // traffic-policy action and reject the unknown action before capability
1524
+ // evaluation with this exact response. Treat only that known cross-version
1525
+ // contract as unavailable; broad 403 fallback would mask a genuinely
1526
+ // missing or revoked capability.
1527
+ if (isLegacyRuntimeTrafficPolicyControlPlaneResponse(error)) {
1528
+ return DEFAULT_RUNTIME_TRAFFIC_POLICY;
1529
+ }
1517
1530
  return null;
1518
1531
  }
1519
1532
 
1533
+ /**
1534
+ * Identifies the precise response an app predating runtime traffic policy
1535
+ * returns during a rolling worker-before-app deployment. Keep this separate
1536
+ * from normal control-plane unavailability so on-call can distinguish a
1537
+ * rollout bridge from a service outage.
1538
+ */
1539
+ export function isLegacyRuntimeTrafficPolicyControlPlaneResponse(
1540
+ error: unknown,
1541
+ ): error is AppRuntimeApiResponseError {
1542
+ return (
1543
+ error instanceof AppRuntimeApiResponseError &&
1544
+ error.action === 'get_runtime_traffic_policy' &&
1545
+ error.status === 403 &&
1546
+ error.code === null &&
1547
+ error.detail === 'Unsupported runtime action capability scope.'
1548
+ );
1549
+ }
1550
+
1520
1551
  export async function writeStagedFileFromAppRuntime(
1521
1552
  context: WorkerRuntimeApiContext,
1522
1553
  file: Pick<PlayStagedFileRef, 'storageKey'>,
package/dist/cli/index.js CHANGED
@@ -1047,7 +1047,7 @@ var SDK_RELEASE = {
1047
1047
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
1048
1048
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
1049
1049
  // getters keep their established compatibility behavior.
1050
- version: "0.3.18",
1050
+ version: "0.3.19",
1051
1051
  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.",
1052
1052
  contracts: {
1053
1053
  api: {
@@ -1033,7 +1033,7 @@ var SDK_RELEASE = {
1033
1033
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
1034
1034
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
1035
1035
  // getters keep their established compatibility behavior.
1036
- version: "0.3.18",
1036
+ version: "0.3.19",
1037
1037
  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.",
1038
1038
  contracts: {
1039
1039
  api: {
package/dist/index.js CHANGED
@@ -783,7 +783,7 @@ var SDK_RELEASE = {
783
783
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
784
784
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
785
785
  // getters keep their established compatibility behavior.
786
- version: "0.3.18",
786
+ version: "0.3.19",
787
787
  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.",
788
788
  contracts: {
789
789
  api: {
package/dist/index.mjs CHANGED
@@ -706,7 +706,7 @@ var SDK_RELEASE = {
706
706
  // 0.3.0 introduces raw-v2: complete scrubbed provider responses are
707
707
  // available at toolResponse.rawV2 while toolResponse.raw and all declared
708
708
  // getters keep their established compatibility behavior.
709
- version: "0.3.18",
709
+ version: "0.3.19",
710
710
  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.",
711
711
  contracts: {
712
712
  api: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepline",
3
- "version": "0.3.18",
3
+ "version": "0.3.19",
4
4
  "description": "GTM data CLI and TypeScript SDK for coding agents",
5
5
  "license": "MIT",
6
6
  "homepage": "https://code.deepline.com",