deepline 0.3.21 → 0.3.23
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.
- package/dist/bundling-sources/sdk/src/client.ts +64 -0
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/sdk/src/types.ts +14 -0
- package/dist/cli/index.js +167 -16
- package/dist/cli/index.mjs +167 -16
- package/dist/index.d.mts +40 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +38 -19
- package/dist/index.mjs +38 -19
- package/dist/plays/bundle-play-file.mjs +12 -5
- package/package.json +1 -1
|
@@ -1033,6 +1033,28 @@ export type TargetBillingStatusResult = {
|
|
|
1033
1033
|
as_of: string | null;
|
|
1034
1034
|
};
|
|
1035
1035
|
|
|
1036
|
+
export type TargetAutoRechargeResult = {
|
|
1037
|
+
org_id: string;
|
|
1038
|
+
enabled: boolean;
|
|
1039
|
+
available: boolean;
|
|
1040
|
+
reason: string | null;
|
|
1041
|
+
threshold_credits: number | null;
|
|
1042
|
+
refill_to_credits: number | null;
|
|
1043
|
+
rolling_limit_cents: null;
|
|
1044
|
+
};
|
|
1045
|
+
|
|
1046
|
+
export type TargetAutoRechargeUpdateOptions =
|
|
1047
|
+
| {
|
|
1048
|
+
enabled: false;
|
|
1049
|
+
idempotencyKey: string;
|
|
1050
|
+
}
|
|
1051
|
+
| {
|
|
1052
|
+
enabled: true;
|
|
1053
|
+
thresholdCredits: number;
|
|
1054
|
+
refillToCredits: number;
|
|
1055
|
+
idempotencyKey: string;
|
|
1056
|
+
};
|
|
1057
|
+
|
|
1036
1058
|
export type TargetBillingMutationResult = {
|
|
1037
1059
|
data: Record<string, unknown>;
|
|
1038
1060
|
operation: TargetBillingOperation;
|
|
@@ -1158,6 +1180,13 @@ export type BillingNamespace = {
|
|
|
1158
1180
|
targetPlans: () => Promise<TargetBillingPlansResult>;
|
|
1159
1181
|
/** Normalized target billing state. */
|
|
1160
1182
|
targetStatus: () => Promise<TargetBillingStatusResult>;
|
|
1183
|
+
/** Read and manage the Metronome-backed automatic recharge configuration. */
|
|
1184
|
+
autoRecharge: {
|
|
1185
|
+
get: () => Promise<TargetAutoRechargeResult>;
|
|
1186
|
+
update: (
|
|
1187
|
+
options: TargetAutoRechargeUpdateOptions,
|
|
1188
|
+
) => Promise<TargetAutoRechargeResult>;
|
|
1189
|
+
};
|
|
1161
1190
|
/** Buy Deepline credits through a payment-gated Metronome commit. */
|
|
1162
1191
|
purchaseCredits: (options: {
|
|
1163
1192
|
credits: number;
|
|
@@ -1750,6 +1779,10 @@ export class DeeplineClient {
|
|
|
1750
1779
|
},
|
|
1751
1780
|
targetPlans: () => this.getTargetBillingPlans(),
|
|
1752
1781
|
targetStatus: () => this.getTargetBillingStatus(),
|
|
1782
|
+
autoRecharge: {
|
|
1783
|
+
get: () => this.getTargetAutoRecharge(),
|
|
1784
|
+
update: (options) => this.updateTargetAutoRecharge(options),
|
|
1785
|
+
},
|
|
1753
1786
|
purchaseCredits: (options) => this.purchaseTargetBillingCredits(options),
|
|
1754
1787
|
transitionPlan: (options) => this.transitionTargetBillingPlan(options),
|
|
1755
1788
|
portalSession: () => this.createTargetBillingPortalSession(),
|
|
@@ -4537,6 +4570,37 @@ export class DeeplineClient {
|
|
|
4537
4570
|
return this.http.get<TargetBillingStatusResult>('/api/v2/billing/status');
|
|
4538
4571
|
}
|
|
4539
4572
|
|
|
4573
|
+
/** Read the canonical Metronome automatic recharge configuration. */
|
|
4574
|
+
async getTargetAutoRecharge(): Promise<TargetAutoRechargeResult> {
|
|
4575
|
+
return this.http.get<TargetAutoRechargeResult>(
|
|
4576
|
+
'/api/v2/billing/auto-recharge',
|
|
4577
|
+
);
|
|
4578
|
+
}
|
|
4579
|
+
|
|
4580
|
+
/** Update automatic recharge and return the server-verified configuration. */
|
|
4581
|
+
async updateTargetAutoRecharge(
|
|
4582
|
+
options: TargetAutoRechargeUpdateOptions,
|
|
4583
|
+
): Promise<TargetAutoRechargeResult> {
|
|
4584
|
+
const idempotencyKey = requireTargetBillingIdempotencyKey(
|
|
4585
|
+
options.idempotencyKey,
|
|
4586
|
+
);
|
|
4587
|
+
const response = await this.http.put<{
|
|
4588
|
+
data: TargetAutoRechargeResult;
|
|
4589
|
+
request_id?: string;
|
|
4590
|
+
}>(
|
|
4591
|
+
'/api/v2/billing/auto-recharge',
|
|
4592
|
+
options.enabled
|
|
4593
|
+
? {
|
|
4594
|
+
enabled: true,
|
|
4595
|
+
threshold_credits: options.thresholdCredits,
|
|
4596
|
+
refill_to_credits: options.refillToCredits,
|
|
4597
|
+
}
|
|
4598
|
+
: { enabled: false },
|
|
4599
|
+
{ 'Idempotency-Key': idempotencyKey },
|
|
4600
|
+
);
|
|
4601
|
+
return response.data;
|
|
4602
|
+
}
|
|
4603
|
+
|
|
4540
4604
|
/**
|
|
4541
4605
|
* Purchase target-billing credits through the durable commercial operation
|
|
4542
4606
|
* flow. The caller supplies an idempotency key for safe retries.
|
|
@@ -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.
|
|
195
|
+
version: '0.3.23',
|
|
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: {
|
|
@@ -1308,6 +1308,11 @@ export interface PlayCheckResult {
|
|
|
1308
1308
|
* `1 trigger · 2 tools · 1 dataset · 14 columns`.
|
|
1309
1309
|
*/
|
|
1310
1310
|
summary?: string;
|
|
1311
|
+
/**
|
|
1312
|
+
* Feature-gated validation paths that were enabled for this exact cloud
|
|
1313
|
+
* check. Present as an empty array when no feature gate affected the result.
|
|
1314
|
+
*/
|
|
1315
|
+
featureFlags?: PlayCheckFeatureFlag[];
|
|
1311
1316
|
artifactHash?: string | null;
|
|
1312
1317
|
graphHash?: string | null;
|
|
1313
1318
|
/** SHA-256 of the exact source bytes checked by Deepline. */
|
|
@@ -1341,6 +1346,14 @@ export interface PlayCheckResult {
|
|
|
1341
1346
|
};
|
|
1342
1347
|
}
|
|
1343
1348
|
|
|
1349
|
+
/** An enabled server-side feature flag that affected a Play check. */
|
|
1350
|
+
export interface PlayCheckFeatureFlag {
|
|
1351
|
+
id: string;
|
|
1352
|
+
label: string;
|
|
1353
|
+
enabled: true;
|
|
1354
|
+
reason: string;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1344
1357
|
/**
|
|
1345
1358
|
* One exported play's check result inside a multi-play file. Carries the same
|
|
1346
1359
|
* per-play fields as {@link PlayCheckResult}, unprefixed and unaggregated, so a
|
|
@@ -1360,6 +1373,7 @@ export interface PlayCheckExportResult {
|
|
|
1360
1373
|
graphHash?: string | null;
|
|
1361
1374
|
sourceHash?: string | null;
|
|
1362
1375
|
summary?: string;
|
|
1376
|
+
featureFlags?: PlayCheckFeatureFlag[];
|
|
1363
1377
|
recognized?: PlayCheckRecognizedSummary;
|
|
1364
1378
|
triggers?: PlayCheckTriggersSummary | null;
|
|
1365
1379
|
}
|
package/dist/cli/index.js
CHANGED
|
@@ -196,11 +196,11 @@ var import_node_os = require("os");
|
|
|
196
196
|
var import_node_path = require("path");
|
|
197
197
|
|
|
198
198
|
// ../shared_libs/tool-execution-error.ts
|
|
199
|
-
var DEEPLINE_ERROR_BRAND =
|
|
200
|
-
var TOOL_EXECUTION_ERROR_BRAND =
|
|
199
|
+
var DEEPLINE_ERROR_BRAND = Symbol.for("deepline.error.v1");
|
|
200
|
+
var TOOL_EXECUTION_ERROR_BRAND = Symbol.for(
|
|
201
201
|
"deepline.tool-execution-error.v1"
|
|
202
202
|
);
|
|
203
|
-
var PROVIDER_TRANSIENT_ERROR_BRAND =
|
|
203
|
+
var PROVIDER_TRANSIENT_ERROR_BRAND = Symbol.for(
|
|
204
204
|
"deepline.provider-transient-error.v1"
|
|
205
205
|
);
|
|
206
206
|
var LEGACY_TOOL_EXECUTION_ERROR_SCHEMA_VERSION = 0;
|
|
@@ -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.
|
|
1050
|
+
version: "0.3.23",
|
|
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: {
|
|
@@ -1503,8 +1503,8 @@ var MAX_RUNTIME_TEST_POLICY_MS = 10 * 6e4;
|
|
|
1503
1503
|
// src/http.ts
|
|
1504
1504
|
var MAX_DIAGNOSTIC_HEADER_LENGTH = 120;
|
|
1505
1505
|
var COWORK_NETWORK_HINT = "Claude Cowork appears to be running Deepline in a network-restricted sandbox. In Claude Desktop, open Settings > Capabilities, turn on Allow network egress, and set Domain allowlist to All domains for the Cowork session.";
|
|
1506
|
-
var REQUEST_TIMEOUT_MARKER =
|
|
1507
|
-
var REQUEST_ABORT_MARKER =
|
|
1506
|
+
var REQUEST_TIMEOUT_MARKER = Symbol("deeplineRequestTimeout");
|
|
1507
|
+
var REQUEST_ABORT_MARKER = Symbol("deeplineRequestAbort");
|
|
1508
1508
|
function normalizeRequestAbortError(error, input2) {
|
|
1509
1509
|
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
1510
1510
|
const tagged = normalized;
|
|
@@ -1562,7 +1562,6 @@ var HttpClient = class {
|
|
|
1562
1562
|
constructor(config) {
|
|
1563
1563
|
this.config = config;
|
|
1564
1564
|
}
|
|
1565
|
-
config;
|
|
1566
1565
|
cleanDiagnosticHeader(value) {
|
|
1567
1566
|
const normalized = String(value ?? "").replace(/[\u0000-\u001f\u007f]/g, " ").trim().slice(0, MAX_DIAGNOSTIC_HEADER_LENGTH);
|
|
1568
1567
|
return normalized || null;
|
|
@@ -2394,6 +2393,7 @@ var RUNNER_TERMINAL_PUSH_MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
|
2394
2393
|
var RUNTIME_RECEIPT_GATEWAY_BATCH_MAX_BYTES = 12 * 1024 * 1024;
|
|
2395
2394
|
var RUNTIME_RECEIPT_WRITER_TARGET_BATCH_BYTES = 4 * 1024 * 1024;
|
|
2396
2395
|
var RUNNER_POST_TERMINAL_DIAGNOSTIC_MAX_BYTES = 64 * 1024;
|
|
2396
|
+
var JSON_SIZE_LIMIT_REACHED = Symbol("JSON_SIZE_LIMIT_REACHED");
|
|
2397
2397
|
|
|
2398
2398
|
// ../shared_libs/play-runtime/ledger-safe-payload.ts
|
|
2399
2399
|
var ledgerIngressRedactor = createSecretRedactionContext();
|
|
@@ -2409,7 +2409,7 @@ var DOCFLOW_NODE_IO_LIMITS = {
|
|
|
2409
2409
|
maxErrorBytes: 512
|
|
2410
2410
|
};
|
|
2411
2411
|
var utf8Encoder = new TextEncoder();
|
|
2412
|
-
var PLAY_DATASET_BRAND =
|
|
2412
|
+
var PLAY_DATASET_BRAND = Symbol.for("deepline.play.dataset");
|
|
2413
2413
|
function ledgerSafeDocflowPreviewKey(key) {
|
|
2414
2414
|
if (!key.startsWith("$")) return key;
|
|
2415
2415
|
const stripped = key.replace(/^\$+/, "");
|
|
@@ -3668,7 +3668,6 @@ var RunObserveTransportUnavailableError = class extends Error {
|
|
|
3668
3668
|
this.reason = reason;
|
|
3669
3669
|
this.name = "RunObserveTransportUnavailableError";
|
|
3670
3670
|
}
|
|
3671
|
-
reason;
|
|
3672
3671
|
};
|
|
3673
3672
|
var OBSERVE_BOOTSTRAP_TIMEOUT_MS = 1e4;
|
|
3674
3673
|
var OBSERVE_RECONNECT_NOTICE_MS = 1e4;
|
|
@@ -4648,6 +4647,10 @@ var DeeplineClient = class {
|
|
|
4648
4647
|
},
|
|
4649
4648
|
targetPlans: () => this.getTargetBillingPlans(),
|
|
4650
4649
|
targetStatus: () => this.getTargetBillingStatus(),
|
|
4650
|
+
autoRecharge: {
|
|
4651
|
+
get: () => this.getTargetAutoRecharge(),
|
|
4652
|
+
update: (options2) => this.updateTargetAutoRecharge(options2)
|
|
4653
|
+
},
|
|
4651
4654
|
purchaseCredits: (options2) => this.purchaseTargetBillingCredits(options2),
|
|
4652
4655
|
transitionPlan: (options2) => this.transitionTargetBillingPlan(options2),
|
|
4653
4656
|
portalSession: () => this.createTargetBillingPortalSession()
|
|
@@ -6733,6 +6736,28 @@ var DeeplineClient = class {
|
|
|
6733
6736
|
async getTargetBillingStatus() {
|
|
6734
6737
|
return this.http.get("/api/v2/billing/status");
|
|
6735
6738
|
}
|
|
6739
|
+
/** Read the canonical Metronome automatic recharge configuration. */
|
|
6740
|
+
async getTargetAutoRecharge() {
|
|
6741
|
+
return this.http.get(
|
|
6742
|
+
"/api/v2/billing/auto-recharge"
|
|
6743
|
+
);
|
|
6744
|
+
}
|
|
6745
|
+
/** Update automatic recharge and return the server-verified configuration. */
|
|
6746
|
+
async updateTargetAutoRecharge(options) {
|
|
6747
|
+
const idempotencyKey = requireTargetBillingIdempotencyKey(
|
|
6748
|
+
options.idempotencyKey
|
|
6749
|
+
);
|
|
6750
|
+
const response = await this.http.put(
|
|
6751
|
+
"/api/v2/billing/auto-recharge",
|
|
6752
|
+
options.enabled ? {
|
|
6753
|
+
enabled: true,
|
|
6754
|
+
threshold_credits: options.thresholdCredits,
|
|
6755
|
+
refill_to_credits: options.refillToCredits
|
|
6756
|
+
} : { enabled: false },
|
|
6757
|
+
{ "Idempotency-Key": idempotencyKey }
|
|
6758
|
+
);
|
|
6759
|
+
return response.data;
|
|
6760
|
+
}
|
|
6736
6761
|
/**
|
|
6737
6762
|
* Purchase target-billing credits through the durable commercial operation
|
|
6738
6763
|
* flow. The caller supplies an idempotency key for safe retries.
|
|
@@ -9465,6 +9490,96 @@ async function handleTargetStatus(options) {
|
|
|
9465
9490
|
{ json: options.json }
|
|
9466
9491
|
);
|
|
9467
9492
|
}
|
|
9493
|
+
async function handleAutoRechargeStatus(options) {
|
|
9494
|
+
const payload = await new DeeplineClient().billing.autoRecharge.get();
|
|
9495
|
+
const state = payload.available ? payload.enabled ? "on" : "off" : "unavailable";
|
|
9496
|
+
const lines = [
|
|
9497
|
+
`State: ${state}`,
|
|
9498
|
+
...payload.threshold_credits !== null ? [`Threshold: ${payload.threshold_credits} credits`] : [],
|
|
9499
|
+
...payload.refill_to_credits !== null ? [`Refill balance to: ${payload.refill_to_credits} credits`] : []
|
|
9500
|
+
];
|
|
9501
|
+
printCommandEnvelope(
|
|
9502
|
+
{
|
|
9503
|
+
ok: true,
|
|
9504
|
+
...payload,
|
|
9505
|
+
render: { sections: [{ title: "automatic recharge", lines }] }
|
|
9506
|
+
},
|
|
9507
|
+
{ json: options.json }
|
|
9508
|
+
);
|
|
9509
|
+
}
|
|
9510
|
+
async function handleAutoRechargeSet(options) {
|
|
9511
|
+
const thresholdCredits = parseTopUpCredits(options.thresholdCredits);
|
|
9512
|
+
const refillToCredits = parseTopUpCredits(options.refillToCredits);
|
|
9513
|
+
if (thresholdCredits === null || refillToCredits === null || refillToCredits <= thresholdCredits) {
|
|
9514
|
+
reportBillingFailure(
|
|
9515
|
+
{
|
|
9516
|
+
exitCode: 2,
|
|
9517
|
+
code: "INVALID_AUTO_RECHARGE_CONFIGURATION",
|
|
9518
|
+
message: "--threshold-credits and --refill-to-credits must be positive whole credits, and refill-to must be greater."
|
|
9519
|
+
},
|
|
9520
|
+
options
|
|
9521
|
+
);
|
|
9522
|
+
return;
|
|
9523
|
+
}
|
|
9524
|
+
const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
|
|
9525
|
+
if (options.dryRun) {
|
|
9526
|
+
printCommandEnvelope(
|
|
9527
|
+
{
|
|
9528
|
+
ok: true,
|
|
9529
|
+
dry_run: true,
|
|
9530
|
+
idempotency_key: idempotencyKey,
|
|
9531
|
+
planned_request: {
|
|
9532
|
+
method: "PUT",
|
|
9533
|
+
path: "/api/v2/billing/auto-recharge",
|
|
9534
|
+
body: {
|
|
9535
|
+
enabled: true,
|
|
9536
|
+
threshold_credits: thresholdCredits,
|
|
9537
|
+
refill_to_credits: refillToCredits
|
|
9538
|
+
}
|
|
9539
|
+
}
|
|
9540
|
+
},
|
|
9541
|
+
{ json: options.json }
|
|
9542
|
+
);
|
|
9543
|
+
return;
|
|
9544
|
+
}
|
|
9545
|
+
const payload = await new DeeplineClient().billing.autoRecharge.update({
|
|
9546
|
+
enabled: true,
|
|
9547
|
+
thresholdCredits,
|
|
9548
|
+
refillToCredits,
|
|
9549
|
+
idempotencyKey
|
|
9550
|
+
});
|
|
9551
|
+
printCommandEnvelope(
|
|
9552
|
+
{ ok: true, idempotency_key: idempotencyKey, ...payload },
|
|
9553
|
+
{ json: options.json }
|
|
9554
|
+
);
|
|
9555
|
+
}
|
|
9556
|
+
async function handleAutoRechargeOff(options) {
|
|
9557
|
+
const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
|
|
9558
|
+
if (options.dryRun) {
|
|
9559
|
+
printCommandEnvelope(
|
|
9560
|
+
{
|
|
9561
|
+
ok: true,
|
|
9562
|
+
dry_run: true,
|
|
9563
|
+
idempotency_key: idempotencyKey,
|
|
9564
|
+
planned_request: {
|
|
9565
|
+
method: "PUT",
|
|
9566
|
+
path: "/api/v2/billing/auto-recharge",
|
|
9567
|
+
body: { enabled: false }
|
|
9568
|
+
}
|
|
9569
|
+
},
|
|
9570
|
+
{ json: options.json }
|
|
9571
|
+
);
|
|
9572
|
+
return;
|
|
9573
|
+
}
|
|
9574
|
+
const payload = await new DeeplineClient().billing.autoRecharge.update({
|
|
9575
|
+
enabled: false,
|
|
9576
|
+
idempotencyKey
|
|
9577
|
+
});
|
|
9578
|
+
printCommandEnvelope(
|
|
9579
|
+
{ ok: true, idempotency_key: idempotencyKey, ...payload },
|
|
9580
|
+
{ json: options.json }
|
|
9581
|
+
);
|
|
9582
|
+
}
|
|
9468
9583
|
async function handleBuyCredits(creditsRaw, options) {
|
|
9469
9584
|
const credits = parseTopUpCredits(creditsRaw);
|
|
9470
9585
|
if (credits === null) {
|
|
@@ -9726,6 +9841,31 @@ Examples:
|
|
|
9726
9841
|
).option("--dry-run", "Print the planned top-up without charging").option("--compact", "Keep only high-signal fields in JSON output").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleTopUp);
|
|
9727
9842
|
billing.command("buy").description("Buy credits through the target billing contract.").argument("<credits>", "Positive integer Deepline credit amount").option("--idempotency-key <key>", "Stable retry key").option("--json", "Emit JSON output").action(handleBuyCredits);
|
|
9728
9843
|
billing.command("status").description("Show normalized target billing state.").option("--json", "Emit JSON output").action(handleTargetStatus);
|
|
9844
|
+
billing.command("auto-recharge").description("Inspect and manage automatic Deepline credit recharge.").addHelpText(
|
|
9845
|
+
"after",
|
|
9846
|
+
`
|
|
9847
|
+
Examples:
|
|
9848
|
+
deepline billing auto-recharge status --json
|
|
9849
|
+
deepline billing auto-recharge set --threshold-credits 1000 --refill-to-credits 3500 --dry-run --json
|
|
9850
|
+
deepline billing auto-recharge off --dry-run --json
|
|
9851
|
+
`
|
|
9852
|
+
).addCommand(
|
|
9853
|
+
new import_commander.Command("status").description("Show the canonical automatic recharge configuration.").option("--json", "Emit JSON output").action(handleAutoRechargeStatus)
|
|
9854
|
+
).addCommand(
|
|
9855
|
+
new import_commander.Command("set").description(
|
|
9856
|
+
"Enable automatic recharge with a threshold and refill target."
|
|
9857
|
+
).requiredOption(
|
|
9858
|
+
"--threshold-credits <credits>",
|
|
9859
|
+
"Recharge when the balance reaches this amount"
|
|
9860
|
+
).requiredOption(
|
|
9861
|
+
"--refill-to-credits <credits>",
|
|
9862
|
+
"Recharge the balance to this amount"
|
|
9863
|
+
).option("--idempotency-key <key>", "Stable retry key").option("--dry-run", "Print the planned update without applying it").option("--json", "Emit JSON output").action(handleAutoRechargeSet)
|
|
9864
|
+
).addCommand(
|
|
9865
|
+
new import_commander.Command("off").description(
|
|
9866
|
+
"Disable automatic recharge without clearing saved amounts."
|
|
9867
|
+
).option("--idempotency-key <key>", "Stable retry key").option("--dry-run", "Print the planned update without applying it").option("--json", "Emit JSON output").action(handleAutoRechargeOff)
|
|
9868
|
+
);
|
|
9729
9869
|
billing.command("change-plan").description("Start or change the target billing plan.").argument("<plan_sku>", "payg-v1, builder-v1, or team-v1").option("--idempotency-key <key>", "Stable retry key").option("--json", "Emit JSON output").action(handleTargetPlan);
|
|
9730
9870
|
billing.command("cancel-plan").description("Cancel a target subscription at period end, or undo it.").option("--undo", "Undo a pending period-end cancellation").option("--idempotency-key <key>", "Stable retry key").option("--json", "Emit JSON output").action(handleTargetPlanCancellation);
|
|
9731
9871
|
billing.command("portal").description("Open the Stripe-hosted billing recovery portal.").option("--no-open", "Print the URL without opening a browser").option("--json", "Emit JSON output").action(handleTargetPortal);
|
|
@@ -11493,7 +11633,6 @@ var PlayBootstrapError = class extends Error {
|
|
|
11493
11633
|
super(message);
|
|
11494
11634
|
this.exitCode = exitCode;
|
|
11495
11635
|
}
|
|
11496
|
-
exitCode;
|
|
11497
11636
|
};
|
|
11498
11637
|
var PlayBootstrapUsageError = class extends PlayBootstrapError {
|
|
11499
11638
|
constructor(message) {
|
|
@@ -13335,11 +13474,11 @@ var TypeBoxError = class extends Error {
|
|
|
13335
13474
|
};
|
|
13336
13475
|
|
|
13337
13476
|
// ../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs
|
|
13338
|
-
var TransformKind =
|
|
13339
|
-
var ReadonlyKind =
|
|
13340
|
-
var OptionalKind =
|
|
13341
|
-
var Hint =
|
|
13342
|
-
var Kind =
|
|
13477
|
+
var TransformKind = Symbol.for("TypeBox.Transform");
|
|
13478
|
+
var ReadonlyKind = Symbol.for("TypeBox.Readonly");
|
|
13479
|
+
var OptionalKind = Symbol.for("TypeBox.Optional");
|
|
13480
|
+
var Hint = Symbol.for("TypeBox.Hint");
|
|
13481
|
+
var Kind = Symbol.for("TypeBox.Kind");
|
|
13343
13482
|
|
|
13344
13483
|
// ../node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs
|
|
13345
13484
|
function IsReadonly(value) {
|
|
@@ -18004,7 +18143,6 @@ var CliProgress = class {
|
|
|
18004
18143
|
constructor(enabled) {
|
|
18005
18144
|
this.enabled = enabled;
|
|
18006
18145
|
}
|
|
18007
|
-
enabled;
|
|
18008
18146
|
lastMessage = null;
|
|
18009
18147
|
interactive = Boolean(process.stderr.isTTY);
|
|
18010
18148
|
grey = "\x1B[90m";
|
|
@@ -23658,6 +23796,10 @@ function printPlayCheckOutcome(outcome, target, prefix) {
|
|
|
23658
23796
|
console.error(
|
|
23659
23797
|
`\u2717 ${prefix}${playName} failed ${playCheckFailureStage(outcome)}`
|
|
23660
23798
|
);
|
|
23799
|
+
printPlayCheckFeatureFlags(
|
|
23800
|
+
result.featureFlags,
|
|
23801
|
+
(line) => console.error(line)
|
|
23802
|
+
);
|
|
23661
23803
|
const { unstructuredErrors } = partitionMirroredErrors(
|
|
23662
23804
|
result.errors,
|
|
23663
23805
|
result.issues
|
|
@@ -23677,6 +23819,7 @@ function printPlayCheckOutcome(outcome, target, prefix) {
|
|
|
23677
23819
|
console.log(
|
|
23678
23820
|
summary ? `\u2713 ${prefix}${playName} valid \u2014 ${summary}` : `\u2713 ${prefix}${playName} passed ${result.limits ? "cloud" : "local"} play check`
|
|
23679
23821
|
);
|
|
23822
|
+
printPlayCheckFeatureFlags(result.featureFlags, (line) => console.log(line));
|
|
23680
23823
|
if (result.artifactHash) {
|
|
23681
23824
|
console.log(` artifact: ${result.artifactHash.slice(0, 12)}`);
|
|
23682
23825
|
}
|
|
@@ -23698,6 +23841,11 @@ function printPlayCheckOutcome(outcome, target, prefix) {
|
|
|
23698
23841
|
);
|
|
23699
23842
|
printToolGetterHints(result.toolGetterHints);
|
|
23700
23843
|
}
|
|
23844
|
+
function printPlayCheckFeatureFlags(flags, write) {
|
|
23845
|
+
for (const flag of flags ?? []) {
|
|
23846
|
+
write(` feature flag enabled: ${flag.label} \u2014 ${flag.reason}`);
|
|
23847
|
+
}
|
|
23848
|
+
}
|
|
23701
23849
|
function printPlayCheckOutcomes(outcomes, target) {
|
|
23702
23850
|
if (outcomes.length === 1) {
|
|
23703
23851
|
printPlayCheckOutcome(outcomes[0], target, "");
|
|
@@ -42397,6 +42545,9 @@ async function main() {
|
|
|
42397
42545
|
program.name("deepline").description(
|
|
42398
42546
|
"Deepline CLI \u2014 GTM enrichment tools, plays, and runs from your terminal."
|
|
42399
42547
|
).version(SDK_VERSION, "-v, --version", "Show version").exitOverride().showHelpAfterError().showSuggestionAfterError(true).addHelpText(
|
|
42548
|
+
"beforeAll",
|
|
42549
|
+
"for agents: ensure you are using the /deepline-gtm skill\n"
|
|
42550
|
+
).addHelpText(
|
|
42400
42551
|
"after",
|
|
42401
42552
|
`
|
|
42402
42553
|
Common commands:
|
package/dist/cli/index.mjs
CHANGED
|
@@ -182,11 +182,11 @@ import { homedir } from "os";
|
|
|
182
182
|
import { dirname, isAbsolute, join, resolve } from "path";
|
|
183
183
|
|
|
184
184
|
// ../shared_libs/tool-execution-error.ts
|
|
185
|
-
var DEEPLINE_ERROR_BRAND =
|
|
186
|
-
var TOOL_EXECUTION_ERROR_BRAND =
|
|
185
|
+
var DEEPLINE_ERROR_BRAND = Symbol.for("deepline.error.v1");
|
|
186
|
+
var TOOL_EXECUTION_ERROR_BRAND = Symbol.for(
|
|
187
187
|
"deepline.tool-execution-error.v1"
|
|
188
188
|
);
|
|
189
|
-
var PROVIDER_TRANSIENT_ERROR_BRAND =
|
|
189
|
+
var PROVIDER_TRANSIENT_ERROR_BRAND = Symbol.for(
|
|
190
190
|
"deepline.provider-transient-error.v1"
|
|
191
191
|
);
|
|
192
192
|
var LEGACY_TOOL_EXECUTION_ERROR_SCHEMA_VERSION = 0;
|
|
@@ -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.
|
|
1036
|
+
version: "0.3.23",
|
|
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: {
|
|
@@ -1489,8 +1489,8 @@ var MAX_RUNTIME_TEST_POLICY_MS = 10 * 6e4;
|
|
|
1489
1489
|
// src/http.ts
|
|
1490
1490
|
var MAX_DIAGNOSTIC_HEADER_LENGTH = 120;
|
|
1491
1491
|
var COWORK_NETWORK_HINT = "Claude Cowork appears to be running Deepline in a network-restricted sandbox. In Claude Desktop, open Settings > Capabilities, turn on Allow network egress, and set Domain allowlist to All domains for the Cowork session.";
|
|
1492
|
-
var REQUEST_TIMEOUT_MARKER =
|
|
1493
|
-
var REQUEST_ABORT_MARKER =
|
|
1492
|
+
var REQUEST_TIMEOUT_MARKER = Symbol("deeplineRequestTimeout");
|
|
1493
|
+
var REQUEST_ABORT_MARKER = Symbol("deeplineRequestAbort");
|
|
1494
1494
|
function normalizeRequestAbortError(error, input2) {
|
|
1495
1495
|
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
1496
1496
|
const tagged = normalized;
|
|
@@ -1548,7 +1548,6 @@ var HttpClient = class {
|
|
|
1548
1548
|
constructor(config) {
|
|
1549
1549
|
this.config = config;
|
|
1550
1550
|
}
|
|
1551
|
-
config;
|
|
1552
1551
|
cleanDiagnosticHeader(value) {
|
|
1553
1552
|
const normalized = String(value ?? "").replace(/[\u0000-\u001f\u007f]/g, " ").trim().slice(0, MAX_DIAGNOSTIC_HEADER_LENGTH);
|
|
1554
1553
|
return normalized || null;
|
|
@@ -2380,6 +2379,7 @@ var RUNNER_TERMINAL_PUSH_MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
|
2380
2379
|
var RUNTIME_RECEIPT_GATEWAY_BATCH_MAX_BYTES = 12 * 1024 * 1024;
|
|
2381
2380
|
var RUNTIME_RECEIPT_WRITER_TARGET_BATCH_BYTES = 4 * 1024 * 1024;
|
|
2382
2381
|
var RUNNER_POST_TERMINAL_DIAGNOSTIC_MAX_BYTES = 64 * 1024;
|
|
2382
|
+
var JSON_SIZE_LIMIT_REACHED = Symbol("JSON_SIZE_LIMIT_REACHED");
|
|
2383
2383
|
|
|
2384
2384
|
// ../shared_libs/play-runtime/ledger-safe-payload.ts
|
|
2385
2385
|
var ledgerIngressRedactor = createSecretRedactionContext();
|
|
@@ -2395,7 +2395,7 @@ var DOCFLOW_NODE_IO_LIMITS = {
|
|
|
2395
2395
|
maxErrorBytes: 512
|
|
2396
2396
|
};
|
|
2397
2397
|
var utf8Encoder = new TextEncoder();
|
|
2398
|
-
var PLAY_DATASET_BRAND =
|
|
2398
|
+
var PLAY_DATASET_BRAND = Symbol.for("deepline.play.dataset");
|
|
2399
2399
|
function ledgerSafeDocflowPreviewKey(key) {
|
|
2400
2400
|
if (!key.startsWith("$")) return key;
|
|
2401
2401
|
const stripped = key.replace(/^\$+/, "");
|
|
@@ -3654,7 +3654,6 @@ var RunObserveTransportUnavailableError = class extends Error {
|
|
|
3654
3654
|
this.reason = reason;
|
|
3655
3655
|
this.name = "RunObserveTransportUnavailableError";
|
|
3656
3656
|
}
|
|
3657
|
-
reason;
|
|
3658
3657
|
};
|
|
3659
3658
|
var OBSERVE_BOOTSTRAP_TIMEOUT_MS = 1e4;
|
|
3660
3659
|
var OBSERVE_RECONNECT_NOTICE_MS = 1e4;
|
|
@@ -4634,6 +4633,10 @@ var DeeplineClient = class {
|
|
|
4634
4633
|
},
|
|
4635
4634
|
targetPlans: () => this.getTargetBillingPlans(),
|
|
4636
4635
|
targetStatus: () => this.getTargetBillingStatus(),
|
|
4636
|
+
autoRecharge: {
|
|
4637
|
+
get: () => this.getTargetAutoRecharge(),
|
|
4638
|
+
update: (options2) => this.updateTargetAutoRecharge(options2)
|
|
4639
|
+
},
|
|
4637
4640
|
purchaseCredits: (options2) => this.purchaseTargetBillingCredits(options2),
|
|
4638
4641
|
transitionPlan: (options2) => this.transitionTargetBillingPlan(options2),
|
|
4639
4642
|
portalSession: () => this.createTargetBillingPortalSession()
|
|
@@ -6719,6 +6722,28 @@ var DeeplineClient = class {
|
|
|
6719
6722
|
async getTargetBillingStatus() {
|
|
6720
6723
|
return this.http.get("/api/v2/billing/status");
|
|
6721
6724
|
}
|
|
6725
|
+
/** Read the canonical Metronome automatic recharge configuration. */
|
|
6726
|
+
async getTargetAutoRecharge() {
|
|
6727
|
+
return this.http.get(
|
|
6728
|
+
"/api/v2/billing/auto-recharge"
|
|
6729
|
+
);
|
|
6730
|
+
}
|
|
6731
|
+
/** Update automatic recharge and return the server-verified configuration. */
|
|
6732
|
+
async updateTargetAutoRecharge(options) {
|
|
6733
|
+
const idempotencyKey = requireTargetBillingIdempotencyKey(
|
|
6734
|
+
options.idempotencyKey
|
|
6735
|
+
);
|
|
6736
|
+
const response = await this.http.put(
|
|
6737
|
+
"/api/v2/billing/auto-recharge",
|
|
6738
|
+
options.enabled ? {
|
|
6739
|
+
enabled: true,
|
|
6740
|
+
threshold_credits: options.thresholdCredits,
|
|
6741
|
+
refill_to_credits: options.refillToCredits
|
|
6742
|
+
} : { enabled: false },
|
|
6743
|
+
{ "Idempotency-Key": idempotencyKey }
|
|
6744
|
+
);
|
|
6745
|
+
return response.data;
|
|
6746
|
+
}
|
|
6722
6747
|
/**
|
|
6723
6748
|
* Purchase target-billing credits through the durable commercial operation
|
|
6724
6749
|
* flow. The caller supplies an idempotency key for safe retries.
|
|
@@ -9463,6 +9488,96 @@ async function handleTargetStatus(options) {
|
|
|
9463
9488
|
{ json: options.json }
|
|
9464
9489
|
);
|
|
9465
9490
|
}
|
|
9491
|
+
async function handleAutoRechargeStatus(options) {
|
|
9492
|
+
const payload = await new DeeplineClient().billing.autoRecharge.get();
|
|
9493
|
+
const state = payload.available ? payload.enabled ? "on" : "off" : "unavailable";
|
|
9494
|
+
const lines = [
|
|
9495
|
+
`State: ${state}`,
|
|
9496
|
+
...payload.threshold_credits !== null ? [`Threshold: ${payload.threshold_credits} credits`] : [],
|
|
9497
|
+
...payload.refill_to_credits !== null ? [`Refill balance to: ${payload.refill_to_credits} credits`] : []
|
|
9498
|
+
];
|
|
9499
|
+
printCommandEnvelope(
|
|
9500
|
+
{
|
|
9501
|
+
ok: true,
|
|
9502
|
+
...payload,
|
|
9503
|
+
render: { sections: [{ title: "automatic recharge", lines }] }
|
|
9504
|
+
},
|
|
9505
|
+
{ json: options.json }
|
|
9506
|
+
);
|
|
9507
|
+
}
|
|
9508
|
+
async function handleAutoRechargeSet(options) {
|
|
9509
|
+
const thresholdCredits = parseTopUpCredits(options.thresholdCredits);
|
|
9510
|
+
const refillToCredits = parseTopUpCredits(options.refillToCredits);
|
|
9511
|
+
if (thresholdCredits === null || refillToCredits === null || refillToCredits <= thresholdCredits) {
|
|
9512
|
+
reportBillingFailure(
|
|
9513
|
+
{
|
|
9514
|
+
exitCode: 2,
|
|
9515
|
+
code: "INVALID_AUTO_RECHARGE_CONFIGURATION",
|
|
9516
|
+
message: "--threshold-credits and --refill-to-credits must be positive whole credits, and refill-to must be greater."
|
|
9517
|
+
},
|
|
9518
|
+
options
|
|
9519
|
+
);
|
|
9520
|
+
return;
|
|
9521
|
+
}
|
|
9522
|
+
const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
|
|
9523
|
+
if (options.dryRun) {
|
|
9524
|
+
printCommandEnvelope(
|
|
9525
|
+
{
|
|
9526
|
+
ok: true,
|
|
9527
|
+
dry_run: true,
|
|
9528
|
+
idempotency_key: idempotencyKey,
|
|
9529
|
+
planned_request: {
|
|
9530
|
+
method: "PUT",
|
|
9531
|
+
path: "/api/v2/billing/auto-recharge",
|
|
9532
|
+
body: {
|
|
9533
|
+
enabled: true,
|
|
9534
|
+
threshold_credits: thresholdCredits,
|
|
9535
|
+
refill_to_credits: refillToCredits
|
|
9536
|
+
}
|
|
9537
|
+
}
|
|
9538
|
+
},
|
|
9539
|
+
{ json: options.json }
|
|
9540
|
+
);
|
|
9541
|
+
return;
|
|
9542
|
+
}
|
|
9543
|
+
const payload = await new DeeplineClient().billing.autoRecharge.update({
|
|
9544
|
+
enabled: true,
|
|
9545
|
+
thresholdCredits,
|
|
9546
|
+
refillToCredits,
|
|
9547
|
+
idempotencyKey
|
|
9548
|
+
});
|
|
9549
|
+
printCommandEnvelope(
|
|
9550
|
+
{ ok: true, idempotency_key: idempotencyKey, ...payload },
|
|
9551
|
+
{ json: options.json }
|
|
9552
|
+
);
|
|
9553
|
+
}
|
|
9554
|
+
async function handleAutoRechargeOff(options) {
|
|
9555
|
+
const idempotencyKey = targetBillingIdempotencyKey(options.idempotencyKey);
|
|
9556
|
+
if (options.dryRun) {
|
|
9557
|
+
printCommandEnvelope(
|
|
9558
|
+
{
|
|
9559
|
+
ok: true,
|
|
9560
|
+
dry_run: true,
|
|
9561
|
+
idempotency_key: idempotencyKey,
|
|
9562
|
+
planned_request: {
|
|
9563
|
+
method: "PUT",
|
|
9564
|
+
path: "/api/v2/billing/auto-recharge",
|
|
9565
|
+
body: { enabled: false }
|
|
9566
|
+
}
|
|
9567
|
+
},
|
|
9568
|
+
{ json: options.json }
|
|
9569
|
+
);
|
|
9570
|
+
return;
|
|
9571
|
+
}
|
|
9572
|
+
const payload = await new DeeplineClient().billing.autoRecharge.update({
|
|
9573
|
+
enabled: false,
|
|
9574
|
+
idempotencyKey
|
|
9575
|
+
});
|
|
9576
|
+
printCommandEnvelope(
|
|
9577
|
+
{ ok: true, idempotency_key: idempotencyKey, ...payload },
|
|
9578
|
+
{ json: options.json }
|
|
9579
|
+
);
|
|
9580
|
+
}
|
|
9466
9581
|
async function handleBuyCredits(creditsRaw, options) {
|
|
9467
9582
|
const credits = parseTopUpCredits(creditsRaw);
|
|
9468
9583
|
if (credits === null) {
|
|
@@ -9724,6 +9839,31 @@ Examples:
|
|
|
9724
9839
|
).option("--dry-run", "Print the planned top-up without charging").option("--compact", "Keep only high-signal fields in JSON output").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleTopUp);
|
|
9725
9840
|
billing.command("buy").description("Buy credits through the target billing contract.").argument("<credits>", "Positive integer Deepline credit amount").option("--idempotency-key <key>", "Stable retry key").option("--json", "Emit JSON output").action(handleBuyCredits);
|
|
9726
9841
|
billing.command("status").description("Show normalized target billing state.").option("--json", "Emit JSON output").action(handleTargetStatus);
|
|
9842
|
+
billing.command("auto-recharge").description("Inspect and manage automatic Deepline credit recharge.").addHelpText(
|
|
9843
|
+
"after",
|
|
9844
|
+
`
|
|
9845
|
+
Examples:
|
|
9846
|
+
deepline billing auto-recharge status --json
|
|
9847
|
+
deepline billing auto-recharge set --threshold-credits 1000 --refill-to-credits 3500 --dry-run --json
|
|
9848
|
+
deepline billing auto-recharge off --dry-run --json
|
|
9849
|
+
`
|
|
9850
|
+
).addCommand(
|
|
9851
|
+
new Command("status").description("Show the canonical automatic recharge configuration.").option("--json", "Emit JSON output").action(handleAutoRechargeStatus)
|
|
9852
|
+
).addCommand(
|
|
9853
|
+
new Command("set").description(
|
|
9854
|
+
"Enable automatic recharge with a threshold and refill target."
|
|
9855
|
+
).requiredOption(
|
|
9856
|
+
"--threshold-credits <credits>",
|
|
9857
|
+
"Recharge when the balance reaches this amount"
|
|
9858
|
+
).requiredOption(
|
|
9859
|
+
"--refill-to-credits <credits>",
|
|
9860
|
+
"Recharge the balance to this amount"
|
|
9861
|
+
).option("--idempotency-key <key>", "Stable retry key").option("--dry-run", "Print the planned update without applying it").option("--json", "Emit JSON output").action(handleAutoRechargeSet)
|
|
9862
|
+
).addCommand(
|
|
9863
|
+
new Command("off").description(
|
|
9864
|
+
"Disable automatic recharge without clearing saved amounts."
|
|
9865
|
+
).option("--idempotency-key <key>", "Stable retry key").option("--dry-run", "Print the planned update without applying it").option("--json", "Emit JSON output").action(handleAutoRechargeOff)
|
|
9866
|
+
);
|
|
9727
9867
|
billing.command("change-plan").description("Start or change the target billing plan.").argument("<plan_sku>", "payg-v1, builder-v1, or team-v1").option("--idempotency-key <key>", "Stable retry key").option("--json", "Emit JSON output").action(handleTargetPlan);
|
|
9728
9868
|
billing.command("cancel-plan").description("Cancel a target subscription at period end, or undo it.").option("--undo", "Undo a pending period-end cancellation").option("--idempotency-key <key>", "Stable retry key").option("--json", "Emit JSON output").action(handleTargetPlanCancellation);
|
|
9729
9869
|
billing.command("portal").description("Open the Stripe-hosted billing recovery portal.").option("--no-open", "Print the URL without opening a browser").option("--json", "Emit JSON output").action(handleTargetPortal);
|
|
@@ -11537,7 +11677,6 @@ var PlayBootstrapError = class extends Error {
|
|
|
11537
11677
|
super(message);
|
|
11538
11678
|
this.exitCode = exitCode;
|
|
11539
11679
|
}
|
|
11540
|
-
exitCode;
|
|
11541
11680
|
};
|
|
11542
11681
|
var PlayBootstrapUsageError = class extends PlayBootstrapError {
|
|
11543
11682
|
constructor(message) {
|
|
@@ -13391,11 +13530,11 @@ var TypeBoxError = class extends Error {
|
|
|
13391
13530
|
};
|
|
13392
13531
|
|
|
13393
13532
|
// ../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs
|
|
13394
|
-
var TransformKind =
|
|
13395
|
-
var ReadonlyKind =
|
|
13396
|
-
var OptionalKind =
|
|
13397
|
-
var Hint =
|
|
13398
|
-
var Kind =
|
|
13533
|
+
var TransformKind = Symbol.for("TypeBox.Transform");
|
|
13534
|
+
var ReadonlyKind = Symbol.for("TypeBox.Readonly");
|
|
13535
|
+
var OptionalKind = Symbol.for("TypeBox.Optional");
|
|
13536
|
+
var Hint = Symbol.for("TypeBox.Hint");
|
|
13537
|
+
var Kind = Symbol.for("TypeBox.Kind");
|
|
13399
13538
|
|
|
13400
13539
|
// ../node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs
|
|
13401
13540
|
function IsReadonly(value) {
|
|
@@ -18067,7 +18206,6 @@ var CliProgress = class {
|
|
|
18067
18206
|
constructor(enabled) {
|
|
18068
18207
|
this.enabled = enabled;
|
|
18069
18208
|
}
|
|
18070
|
-
enabled;
|
|
18071
18209
|
lastMessage = null;
|
|
18072
18210
|
interactive = Boolean(process.stderr.isTTY);
|
|
18073
18211
|
grey = "\x1B[90m";
|
|
@@ -23721,6 +23859,10 @@ function printPlayCheckOutcome(outcome, target, prefix) {
|
|
|
23721
23859
|
console.error(
|
|
23722
23860
|
`\u2717 ${prefix}${playName} failed ${playCheckFailureStage(outcome)}`
|
|
23723
23861
|
);
|
|
23862
|
+
printPlayCheckFeatureFlags(
|
|
23863
|
+
result.featureFlags,
|
|
23864
|
+
(line) => console.error(line)
|
|
23865
|
+
);
|
|
23724
23866
|
const { unstructuredErrors } = partitionMirroredErrors(
|
|
23725
23867
|
result.errors,
|
|
23726
23868
|
result.issues
|
|
@@ -23740,6 +23882,7 @@ function printPlayCheckOutcome(outcome, target, prefix) {
|
|
|
23740
23882
|
console.log(
|
|
23741
23883
|
summary ? `\u2713 ${prefix}${playName} valid \u2014 ${summary}` : `\u2713 ${prefix}${playName} passed ${result.limits ? "cloud" : "local"} play check`
|
|
23742
23884
|
);
|
|
23885
|
+
printPlayCheckFeatureFlags(result.featureFlags, (line) => console.log(line));
|
|
23743
23886
|
if (result.artifactHash) {
|
|
23744
23887
|
console.log(` artifact: ${result.artifactHash.slice(0, 12)}`);
|
|
23745
23888
|
}
|
|
@@ -23761,6 +23904,11 @@ function printPlayCheckOutcome(outcome, target, prefix) {
|
|
|
23761
23904
|
);
|
|
23762
23905
|
printToolGetterHints(result.toolGetterHints);
|
|
23763
23906
|
}
|
|
23907
|
+
function printPlayCheckFeatureFlags(flags, write) {
|
|
23908
|
+
for (const flag of flags ?? []) {
|
|
23909
|
+
write(` feature flag enabled: ${flag.label} \u2014 ${flag.reason}`);
|
|
23910
|
+
}
|
|
23911
|
+
}
|
|
23764
23912
|
function printPlayCheckOutcomes(outcomes, target) {
|
|
23765
23913
|
if (outcomes.length === 1) {
|
|
23766
23914
|
printPlayCheckOutcome(outcomes[0], target, "");
|
|
@@ -42502,6 +42650,9 @@ async function main() {
|
|
|
42502
42650
|
program.name("deepline").description(
|
|
42503
42651
|
"Deepline CLI \u2014 GTM enrichment tools, plays, and runs from your terminal."
|
|
42504
42652
|
).version(SDK_VERSION, "-v, --version", "Show version").exitOverride().showHelpAfterError().showSuggestionAfterError(true).addHelpText(
|
|
42653
|
+
"beforeAll",
|
|
42654
|
+
"for agents: ensure you are using the /deepline-gtm skill\n"
|
|
42655
|
+
).addHelpText(
|
|
42505
42656
|
"after",
|
|
42506
42657
|
`
|
|
42507
42658
|
Common commands:
|
package/dist/index.d.mts
CHANGED
|
@@ -1413,6 +1413,11 @@ interface PlayCheckResult {
|
|
|
1413
1413
|
* `1 trigger · 2 tools · 1 dataset · 14 columns`.
|
|
1414
1414
|
*/
|
|
1415
1415
|
summary?: string;
|
|
1416
|
+
/**
|
|
1417
|
+
* Feature-gated validation paths that were enabled for this exact cloud
|
|
1418
|
+
* check. Present as an empty array when no feature gate affected the result.
|
|
1419
|
+
*/
|
|
1420
|
+
featureFlags?: PlayCheckFeatureFlag[];
|
|
1416
1421
|
artifactHash?: string | null;
|
|
1417
1422
|
graphHash?: string | null;
|
|
1418
1423
|
/** SHA-256 of the exact source bytes checked by Deepline. */
|
|
@@ -1445,6 +1450,13 @@ interface PlayCheckResult {
|
|
|
1445
1450
|
};
|
|
1446
1451
|
};
|
|
1447
1452
|
}
|
|
1453
|
+
/** An enabled server-side feature flag that affected a Play check. */
|
|
1454
|
+
interface PlayCheckFeatureFlag {
|
|
1455
|
+
id: string;
|
|
1456
|
+
label: string;
|
|
1457
|
+
enabled: true;
|
|
1458
|
+
reason: string;
|
|
1459
|
+
}
|
|
1448
1460
|
/**
|
|
1449
1461
|
* One exported play's check result inside a multi-play file. Carries the same
|
|
1450
1462
|
* per-play fields as {@link PlayCheckResult}, unprefixed and unaggregated, so a
|
|
@@ -1464,6 +1476,7 @@ interface PlayCheckExportResult {
|
|
|
1464
1476
|
graphHash?: string | null;
|
|
1465
1477
|
sourceHash?: string | null;
|
|
1466
1478
|
summary?: string;
|
|
1479
|
+
featureFlags?: PlayCheckFeatureFlag[];
|
|
1467
1480
|
recognized?: PlayCheckRecognizedSummary;
|
|
1468
1481
|
triggers?: PlayCheckTriggersSummary | null;
|
|
1469
1482
|
}
|
|
@@ -2498,6 +2511,24 @@ type TargetBillingStatusResult = {
|
|
|
2498
2511
|
pending_plan_sku: string | null;
|
|
2499
2512
|
as_of: string | null;
|
|
2500
2513
|
};
|
|
2514
|
+
type TargetAutoRechargeResult = {
|
|
2515
|
+
org_id: string;
|
|
2516
|
+
enabled: boolean;
|
|
2517
|
+
available: boolean;
|
|
2518
|
+
reason: string | null;
|
|
2519
|
+
threshold_credits: number | null;
|
|
2520
|
+
refill_to_credits: number | null;
|
|
2521
|
+
rolling_limit_cents: null;
|
|
2522
|
+
};
|
|
2523
|
+
type TargetAutoRechargeUpdateOptions = {
|
|
2524
|
+
enabled: false;
|
|
2525
|
+
idempotencyKey: string;
|
|
2526
|
+
} | {
|
|
2527
|
+
enabled: true;
|
|
2528
|
+
thresholdCredits: number;
|
|
2529
|
+
refillToCredits: number;
|
|
2530
|
+
idempotencyKey: string;
|
|
2531
|
+
};
|
|
2501
2532
|
type TargetBillingMutationResult = {
|
|
2502
2533
|
data: Record<string, unknown>;
|
|
2503
2534
|
operation: TargetBillingOperation;
|
|
@@ -2617,6 +2648,11 @@ type BillingNamespace = {
|
|
|
2617
2648
|
targetPlans: () => Promise<TargetBillingPlansResult>;
|
|
2618
2649
|
/** Normalized target billing state. */
|
|
2619
2650
|
targetStatus: () => Promise<TargetBillingStatusResult>;
|
|
2651
|
+
/** Read and manage the Metronome-backed automatic recharge configuration. */
|
|
2652
|
+
autoRecharge: {
|
|
2653
|
+
get: () => Promise<TargetAutoRechargeResult>;
|
|
2654
|
+
update: (options: TargetAutoRechargeUpdateOptions) => Promise<TargetAutoRechargeResult>;
|
|
2655
|
+
};
|
|
2620
2656
|
/** Buy Deepline credits through a payment-gated Metronome commit. */
|
|
2621
2657
|
purchaseCredits: (options: {
|
|
2622
2658
|
credits: number;
|
|
@@ -3662,6 +3698,10 @@ declare class DeeplineClient {
|
|
|
3662
3698
|
getTargetBillingPlans(): Promise<TargetBillingPlansResult>;
|
|
3663
3699
|
/** Read the workspace's normalized target plan, payment, and balance state. */
|
|
3664
3700
|
getTargetBillingStatus(): Promise<TargetBillingStatusResult>;
|
|
3701
|
+
/** Read the canonical Metronome automatic recharge configuration. */
|
|
3702
|
+
getTargetAutoRecharge(): Promise<TargetAutoRechargeResult>;
|
|
3703
|
+
/** Update automatic recharge and return the server-verified configuration. */
|
|
3704
|
+
updateTargetAutoRecharge(options: TargetAutoRechargeUpdateOptions): Promise<TargetAutoRechargeResult>;
|
|
3665
3705
|
/**
|
|
3666
3706
|
* Purchase target-billing credits through the durable commercial operation
|
|
3667
3707
|
* flow. The caller supplies an idempotency key for safe retries.
|
package/dist/index.d.ts
CHANGED
|
@@ -1413,6 +1413,11 @@ interface PlayCheckResult {
|
|
|
1413
1413
|
* `1 trigger · 2 tools · 1 dataset · 14 columns`.
|
|
1414
1414
|
*/
|
|
1415
1415
|
summary?: string;
|
|
1416
|
+
/**
|
|
1417
|
+
* Feature-gated validation paths that were enabled for this exact cloud
|
|
1418
|
+
* check. Present as an empty array when no feature gate affected the result.
|
|
1419
|
+
*/
|
|
1420
|
+
featureFlags?: PlayCheckFeatureFlag[];
|
|
1416
1421
|
artifactHash?: string | null;
|
|
1417
1422
|
graphHash?: string | null;
|
|
1418
1423
|
/** SHA-256 of the exact source bytes checked by Deepline. */
|
|
@@ -1445,6 +1450,13 @@ interface PlayCheckResult {
|
|
|
1445
1450
|
};
|
|
1446
1451
|
};
|
|
1447
1452
|
}
|
|
1453
|
+
/** An enabled server-side feature flag that affected a Play check. */
|
|
1454
|
+
interface PlayCheckFeatureFlag {
|
|
1455
|
+
id: string;
|
|
1456
|
+
label: string;
|
|
1457
|
+
enabled: true;
|
|
1458
|
+
reason: string;
|
|
1459
|
+
}
|
|
1448
1460
|
/**
|
|
1449
1461
|
* One exported play's check result inside a multi-play file. Carries the same
|
|
1450
1462
|
* per-play fields as {@link PlayCheckResult}, unprefixed and unaggregated, so a
|
|
@@ -1464,6 +1476,7 @@ interface PlayCheckExportResult {
|
|
|
1464
1476
|
graphHash?: string | null;
|
|
1465
1477
|
sourceHash?: string | null;
|
|
1466
1478
|
summary?: string;
|
|
1479
|
+
featureFlags?: PlayCheckFeatureFlag[];
|
|
1467
1480
|
recognized?: PlayCheckRecognizedSummary;
|
|
1468
1481
|
triggers?: PlayCheckTriggersSummary | null;
|
|
1469
1482
|
}
|
|
@@ -2498,6 +2511,24 @@ type TargetBillingStatusResult = {
|
|
|
2498
2511
|
pending_plan_sku: string | null;
|
|
2499
2512
|
as_of: string | null;
|
|
2500
2513
|
};
|
|
2514
|
+
type TargetAutoRechargeResult = {
|
|
2515
|
+
org_id: string;
|
|
2516
|
+
enabled: boolean;
|
|
2517
|
+
available: boolean;
|
|
2518
|
+
reason: string | null;
|
|
2519
|
+
threshold_credits: number | null;
|
|
2520
|
+
refill_to_credits: number | null;
|
|
2521
|
+
rolling_limit_cents: null;
|
|
2522
|
+
};
|
|
2523
|
+
type TargetAutoRechargeUpdateOptions = {
|
|
2524
|
+
enabled: false;
|
|
2525
|
+
idempotencyKey: string;
|
|
2526
|
+
} | {
|
|
2527
|
+
enabled: true;
|
|
2528
|
+
thresholdCredits: number;
|
|
2529
|
+
refillToCredits: number;
|
|
2530
|
+
idempotencyKey: string;
|
|
2531
|
+
};
|
|
2501
2532
|
type TargetBillingMutationResult = {
|
|
2502
2533
|
data: Record<string, unknown>;
|
|
2503
2534
|
operation: TargetBillingOperation;
|
|
@@ -2617,6 +2648,11 @@ type BillingNamespace = {
|
|
|
2617
2648
|
targetPlans: () => Promise<TargetBillingPlansResult>;
|
|
2618
2649
|
/** Normalized target billing state. */
|
|
2619
2650
|
targetStatus: () => Promise<TargetBillingStatusResult>;
|
|
2651
|
+
/** Read and manage the Metronome-backed automatic recharge configuration. */
|
|
2652
|
+
autoRecharge: {
|
|
2653
|
+
get: () => Promise<TargetAutoRechargeResult>;
|
|
2654
|
+
update: (options: TargetAutoRechargeUpdateOptions) => Promise<TargetAutoRechargeResult>;
|
|
2655
|
+
};
|
|
2620
2656
|
/** Buy Deepline credits through a payment-gated Metronome commit. */
|
|
2621
2657
|
purchaseCredits: (options: {
|
|
2622
2658
|
credits: number;
|
|
@@ -3662,6 +3698,10 @@ declare class DeeplineClient {
|
|
|
3662
3698
|
getTargetBillingPlans(): Promise<TargetBillingPlansResult>;
|
|
3663
3699
|
/** Read the workspace's normalized target plan, payment, and balance state. */
|
|
3664
3700
|
getTargetBillingStatus(): Promise<TargetBillingStatusResult>;
|
|
3701
|
+
/** Read the canonical Metronome automatic recharge configuration. */
|
|
3702
|
+
getTargetAutoRecharge(): Promise<TargetAutoRechargeResult>;
|
|
3703
|
+
/** Update automatic recharge and return the server-verified configuration. */
|
|
3704
|
+
updateTargetAutoRecharge(options: TargetAutoRechargeUpdateOptions): Promise<TargetAutoRechargeResult>;
|
|
3665
3705
|
/**
|
|
3666
3706
|
* Purchase target-billing credits through the durable commercial operation
|
|
3667
3707
|
* flow. The caller supplies an idempotency key for safe retries.
|
package/dist/index.js
CHANGED
|
@@ -89,11 +89,11 @@ var import_node_os = require("os");
|
|
|
89
89
|
var import_node_path = require("path");
|
|
90
90
|
|
|
91
91
|
// ../shared_libs/tool-execution-error.ts
|
|
92
|
-
var DEEPLINE_ERROR_BRAND =
|
|
93
|
-
var TOOL_EXECUTION_ERROR_BRAND =
|
|
92
|
+
var DEEPLINE_ERROR_BRAND = Symbol.for("deepline.error.v1");
|
|
93
|
+
var TOOL_EXECUTION_ERROR_BRAND = Symbol.for(
|
|
94
94
|
"deepline.tool-execution-error.v1"
|
|
95
95
|
);
|
|
96
|
-
var PROVIDER_TRANSIENT_ERROR_BRAND =
|
|
96
|
+
var PROVIDER_TRANSIENT_ERROR_BRAND = Symbol.for(
|
|
97
97
|
"deepline.provider-transient-error.v1"
|
|
98
98
|
);
|
|
99
99
|
var LEGACY_TOOL_EXECUTION_ERROR_SCHEMA_VERSION = 0;
|
|
@@ -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.
|
|
786
|
+
version: "0.3.23",
|
|
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: {
|
|
@@ -1239,8 +1239,8 @@ var MAX_RUNTIME_TEST_POLICY_MS = 10 * 6e4;
|
|
|
1239
1239
|
// src/http.ts
|
|
1240
1240
|
var MAX_DIAGNOSTIC_HEADER_LENGTH = 120;
|
|
1241
1241
|
var COWORK_NETWORK_HINT = "Claude Cowork appears to be running Deepline in a network-restricted sandbox. In Claude Desktop, open Settings > Capabilities, turn on Allow network egress, and set Domain allowlist to All domains for the Cowork session.";
|
|
1242
|
-
var REQUEST_TIMEOUT_MARKER =
|
|
1243
|
-
var REQUEST_ABORT_MARKER =
|
|
1242
|
+
var REQUEST_TIMEOUT_MARKER = Symbol("deeplineRequestTimeout");
|
|
1243
|
+
var REQUEST_ABORT_MARKER = Symbol("deeplineRequestAbort");
|
|
1244
1244
|
function normalizeRequestAbortError(error, input) {
|
|
1245
1245
|
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
1246
1246
|
const tagged = normalized;
|
|
@@ -1298,7 +1298,6 @@ var HttpClient = class {
|
|
|
1298
1298
|
constructor(config) {
|
|
1299
1299
|
this.config = config;
|
|
1300
1300
|
}
|
|
1301
|
-
config;
|
|
1302
1301
|
cleanDiagnosticHeader(value) {
|
|
1303
1302
|
const normalized = String(value ?? "").replace(/[\u0000-\u001f\u007f]/g, " ").trim().slice(0, MAX_DIAGNOSTIC_HEADER_LENGTH);
|
|
1304
1303
|
return normalized || null;
|
|
@@ -2105,6 +2104,7 @@ var RUNNER_TERMINAL_PUSH_MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
|
2105
2104
|
var RUNTIME_RECEIPT_GATEWAY_BATCH_MAX_BYTES = 12 * 1024 * 1024;
|
|
2106
2105
|
var RUNTIME_RECEIPT_WRITER_TARGET_BATCH_BYTES = 4 * 1024 * 1024;
|
|
2107
2106
|
var RUNNER_POST_TERMINAL_DIAGNOSTIC_MAX_BYTES = 64 * 1024;
|
|
2107
|
+
var JSON_SIZE_LIMIT_REACHED = Symbol("JSON_SIZE_LIMIT_REACHED");
|
|
2108
2108
|
|
|
2109
2109
|
// ../shared_libs/play-runtime/ledger-safe-payload.ts
|
|
2110
2110
|
var ledgerIngressRedactor = createSecretRedactionContext();
|
|
@@ -2120,7 +2120,7 @@ var DOCFLOW_NODE_IO_LIMITS = {
|
|
|
2120
2120
|
maxErrorBytes: 512
|
|
2121
2121
|
};
|
|
2122
2122
|
var utf8Encoder = new TextEncoder();
|
|
2123
|
-
var PLAY_DATASET_BRAND =
|
|
2123
|
+
var PLAY_DATASET_BRAND = Symbol.for("deepline.play.dataset");
|
|
2124
2124
|
function ledgerSafeDocflowPreviewKey(key) {
|
|
2125
2125
|
if (!key.startsWith("$")) return key;
|
|
2126
2126
|
const stripped = key.replace(/^\$+/, "");
|
|
@@ -3379,7 +3379,6 @@ var RunObserveTransportUnavailableError = class extends Error {
|
|
|
3379
3379
|
this.reason = reason;
|
|
3380
3380
|
this.name = "RunObserveTransportUnavailableError";
|
|
3381
3381
|
}
|
|
3382
|
-
reason;
|
|
3383
3382
|
};
|
|
3384
3383
|
var OBSERVE_BOOTSTRAP_TIMEOUT_MS = 1e4;
|
|
3385
3384
|
var OBSERVE_RECONNECT_NOTICE_MS = 1e4;
|
|
@@ -4359,6 +4358,10 @@ var DeeplineClient = class {
|
|
|
4359
4358
|
},
|
|
4360
4359
|
targetPlans: () => this.getTargetBillingPlans(),
|
|
4361
4360
|
targetStatus: () => this.getTargetBillingStatus(),
|
|
4361
|
+
autoRecharge: {
|
|
4362
|
+
get: () => this.getTargetAutoRecharge(),
|
|
4363
|
+
update: (options2) => this.updateTargetAutoRecharge(options2)
|
|
4364
|
+
},
|
|
4362
4365
|
purchaseCredits: (options2) => this.purchaseTargetBillingCredits(options2),
|
|
4363
4366
|
transitionPlan: (options2) => this.transitionTargetBillingPlan(options2),
|
|
4364
4367
|
portalSession: () => this.createTargetBillingPortalSession()
|
|
@@ -6444,6 +6447,28 @@ var DeeplineClient = class {
|
|
|
6444
6447
|
async getTargetBillingStatus() {
|
|
6445
6448
|
return this.http.get("/api/v2/billing/status");
|
|
6446
6449
|
}
|
|
6450
|
+
/** Read the canonical Metronome automatic recharge configuration. */
|
|
6451
|
+
async getTargetAutoRecharge() {
|
|
6452
|
+
return this.http.get(
|
|
6453
|
+
"/api/v2/billing/auto-recharge"
|
|
6454
|
+
);
|
|
6455
|
+
}
|
|
6456
|
+
/** Update automatic recharge and return the server-verified configuration. */
|
|
6457
|
+
async updateTargetAutoRecharge(options) {
|
|
6458
|
+
const idempotencyKey = requireTargetBillingIdempotencyKey(
|
|
6459
|
+
options.idempotencyKey
|
|
6460
|
+
);
|
|
6461
|
+
const response = await this.http.put(
|
|
6462
|
+
"/api/v2/billing/auto-recharge",
|
|
6463
|
+
options.enabled ? {
|
|
6464
|
+
enabled: true,
|
|
6465
|
+
threshold_credits: options.thresholdCredits,
|
|
6466
|
+
refill_to_credits: options.refillToCredits
|
|
6467
|
+
} : { enabled: false },
|
|
6468
|
+
{ "Idempotency-Key": idempotencyKey }
|
|
6469
|
+
);
|
|
6470
|
+
return response.data;
|
|
6471
|
+
}
|
|
6447
6472
|
/**
|
|
6448
6473
|
* Purchase target-billing credits through the durable commercial operation
|
|
6449
6474
|
* flow. The caller supplies an idempotency key for safe retries.
|
|
@@ -6964,8 +6989,8 @@ function isDeeplineExtractorTarget(value) {
|
|
|
6964
6989
|
}
|
|
6965
6990
|
|
|
6966
6991
|
// ../shared_libs/plays/dataset.ts
|
|
6967
|
-
var PLAY_DATASET_BRAND2 =
|
|
6968
|
-
var NODE_INSPECT_CUSTOM =
|
|
6992
|
+
var PLAY_DATASET_BRAND2 = Symbol.for("deepline.play.dataset");
|
|
6993
|
+
var NODE_INSPECT_CUSTOM = Symbol.for("nodejs.util.inspect.custom");
|
|
6969
6994
|
var residentRowsByDataset = /* @__PURE__ */ new WeakMap();
|
|
6970
6995
|
var DEFAULT_MATERIALIZE_LIMIT = 1e4;
|
|
6971
6996
|
var PLAY_DATASET_EXECUTION_PAGE_BYTES = 64 * 1024 * 1024;
|
|
@@ -7490,6 +7515,7 @@ function listNameFromDeclaredPath(path) {
|
|
|
7490
7515
|
}
|
|
7491
7516
|
|
|
7492
7517
|
// ../shared_libs/play-runtime/tool-result.ts
|
|
7518
|
+
var SERIALIZED_TOOL_LIST_ROWS = Symbol("deepline.serialized_tool_list_rows");
|
|
7493
7519
|
var DESCRIPTOR_SUFFIX = /_(status|type|score|count|id|verified|valid|confidence|quality|source)$/i;
|
|
7494
7520
|
var COMPANY_SCOPED = /company/i;
|
|
7495
7521
|
var TARGET_FALLBACK_KEYS = {
|
|
@@ -8284,9 +8310,6 @@ var DeeplineConditionalStepResolver = class _DeeplineConditionalStepResolver {
|
|
|
8284
8310
|
this.run = run;
|
|
8285
8311
|
this.elseValue = elseValue;
|
|
8286
8312
|
}
|
|
8287
|
-
when;
|
|
8288
|
-
run;
|
|
8289
|
-
elseValue;
|
|
8290
8313
|
kind = "conditional";
|
|
8291
8314
|
else(value) {
|
|
8292
8315
|
return new _DeeplineConditionalStepResolver(this.when, this.run, value);
|
|
@@ -8298,9 +8321,6 @@ var DeeplineStepProgram = class _DeeplineStepProgram {
|
|
|
8298
8321
|
this.returnResolver = returnResolver;
|
|
8299
8322
|
this.continueOnProviderUnavailable = continueOnProviderUnavailable;
|
|
8300
8323
|
}
|
|
8301
|
-
steps;
|
|
8302
|
-
returnResolver;
|
|
8303
|
-
continueOnProviderUnavailable;
|
|
8304
8324
|
kind = "steps";
|
|
8305
8325
|
step(name, resolver, options) {
|
|
8306
8326
|
if (!name.trim()) {
|
|
@@ -8349,13 +8369,12 @@ function steps(options = {}) {
|
|
|
8349
8369
|
function runIf(predicate, resolver) {
|
|
8350
8370
|
return new DeeplineConditionalStepResolver(predicate, resolver, null);
|
|
8351
8371
|
}
|
|
8352
|
-
var PLAY_METADATA_SYMBOL =
|
|
8372
|
+
var PLAY_METADATA_SYMBOL = Symbol.for("deepline.play.metadata");
|
|
8353
8373
|
var DeeplinePlayJobImpl = class {
|
|
8354
8374
|
constructor(client, runId) {
|
|
8355
8375
|
this.client = client;
|
|
8356
8376
|
this.id = runId;
|
|
8357
8377
|
}
|
|
8358
|
-
client;
|
|
8359
8378
|
id;
|
|
8360
8379
|
async status() {
|
|
8361
8380
|
return this.client.getPlayStatus(this.id);
|
package/dist/index.mjs
CHANGED
|
@@ -12,11 +12,11 @@ import { homedir } from "os";
|
|
|
12
12
|
import { dirname, isAbsolute, join, resolve } from "path";
|
|
13
13
|
|
|
14
14
|
// ../shared_libs/tool-execution-error.ts
|
|
15
|
-
var DEEPLINE_ERROR_BRAND =
|
|
16
|
-
var TOOL_EXECUTION_ERROR_BRAND =
|
|
15
|
+
var DEEPLINE_ERROR_BRAND = Symbol.for("deepline.error.v1");
|
|
16
|
+
var TOOL_EXECUTION_ERROR_BRAND = Symbol.for(
|
|
17
17
|
"deepline.tool-execution-error.v1"
|
|
18
18
|
);
|
|
19
|
-
var PROVIDER_TRANSIENT_ERROR_BRAND =
|
|
19
|
+
var PROVIDER_TRANSIENT_ERROR_BRAND = Symbol.for(
|
|
20
20
|
"deepline.provider-transient-error.v1"
|
|
21
21
|
);
|
|
22
22
|
var LEGACY_TOOL_EXECUTION_ERROR_SCHEMA_VERSION = 0;
|
|
@@ -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.
|
|
709
|
+
version: "0.3.23",
|
|
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: {
|
|
@@ -1162,8 +1162,8 @@ var MAX_RUNTIME_TEST_POLICY_MS = 10 * 6e4;
|
|
|
1162
1162
|
// src/http.ts
|
|
1163
1163
|
var MAX_DIAGNOSTIC_HEADER_LENGTH = 120;
|
|
1164
1164
|
var COWORK_NETWORK_HINT = "Claude Cowork appears to be running Deepline in a network-restricted sandbox. In Claude Desktop, open Settings > Capabilities, turn on Allow network egress, and set Domain allowlist to All domains for the Cowork session.";
|
|
1165
|
-
var REQUEST_TIMEOUT_MARKER =
|
|
1166
|
-
var REQUEST_ABORT_MARKER =
|
|
1165
|
+
var REQUEST_TIMEOUT_MARKER = Symbol("deeplineRequestTimeout");
|
|
1166
|
+
var REQUEST_ABORT_MARKER = Symbol("deeplineRequestAbort");
|
|
1167
1167
|
function normalizeRequestAbortError(error, input) {
|
|
1168
1168
|
const normalized = error instanceof Error ? error : new Error(String(error));
|
|
1169
1169
|
const tagged = normalized;
|
|
@@ -1221,7 +1221,6 @@ var HttpClient = class {
|
|
|
1221
1221
|
constructor(config) {
|
|
1222
1222
|
this.config = config;
|
|
1223
1223
|
}
|
|
1224
|
-
config;
|
|
1225
1224
|
cleanDiagnosticHeader(value) {
|
|
1226
1225
|
const normalized = String(value ?? "").replace(/[\u0000-\u001f\u007f]/g, " ").trim().slice(0, MAX_DIAGNOSTIC_HEADER_LENGTH);
|
|
1227
1226
|
return normalized || null;
|
|
@@ -2028,6 +2027,7 @@ var RUNNER_TERMINAL_PUSH_MAX_BODY_BYTES = 16 * 1024 * 1024;
|
|
|
2028
2027
|
var RUNTIME_RECEIPT_GATEWAY_BATCH_MAX_BYTES = 12 * 1024 * 1024;
|
|
2029
2028
|
var RUNTIME_RECEIPT_WRITER_TARGET_BATCH_BYTES = 4 * 1024 * 1024;
|
|
2030
2029
|
var RUNNER_POST_TERMINAL_DIAGNOSTIC_MAX_BYTES = 64 * 1024;
|
|
2030
|
+
var JSON_SIZE_LIMIT_REACHED = Symbol("JSON_SIZE_LIMIT_REACHED");
|
|
2031
2031
|
|
|
2032
2032
|
// ../shared_libs/play-runtime/ledger-safe-payload.ts
|
|
2033
2033
|
var ledgerIngressRedactor = createSecretRedactionContext();
|
|
@@ -2043,7 +2043,7 @@ var DOCFLOW_NODE_IO_LIMITS = {
|
|
|
2043
2043
|
maxErrorBytes: 512
|
|
2044
2044
|
};
|
|
2045
2045
|
var utf8Encoder = new TextEncoder();
|
|
2046
|
-
var PLAY_DATASET_BRAND =
|
|
2046
|
+
var PLAY_DATASET_BRAND = Symbol.for("deepline.play.dataset");
|
|
2047
2047
|
function ledgerSafeDocflowPreviewKey(key) {
|
|
2048
2048
|
if (!key.startsWith("$")) return key;
|
|
2049
2049
|
const stripped = key.replace(/^\$+/, "");
|
|
@@ -3302,7 +3302,6 @@ var RunObserveTransportUnavailableError = class extends Error {
|
|
|
3302
3302
|
this.reason = reason;
|
|
3303
3303
|
this.name = "RunObserveTransportUnavailableError";
|
|
3304
3304
|
}
|
|
3305
|
-
reason;
|
|
3306
3305
|
};
|
|
3307
3306
|
var OBSERVE_BOOTSTRAP_TIMEOUT_MS = 1e4;
|
|
3308
3307
|
var OBSERVE_RECONNECT_NOTICE_MS = 1e4;
|
|
@@ -4282,6 +4281,10 @@ var DeeplineClient = class {
|
|
|
4282
4281
|
},
|
|
4283
4282
|
targetPlans: () => this.getTargetBillingPlans(),
|
|
4284
4283
|
targetStatus: () => this.getTargetBillingStatus(),
|
|
4284
|
+
autoRecharge: {
|
|
4285
|
+
get: () => this.getTargetAutoRecharge(),
|
|
4286
|
+
update: (options2) => this.updateTargetAutoRecharge(options2)
|
|
4287
|
+
},
|
|
4285
4288
|
purchaseCredits: (options2) => this.purchaseTargetBillingCredits(options2),
|
|
4286
4289
|
transitionPlan: (options2) => this.transitionTargetBillingPlan(options2),
|
|
4287
4290
|
portalSession: () => this.createTargetBillingPortalSession()
|
|
@@ -6367,6 +6370,28 @@ var DeeplineClient = class {
|
|
|
6367
6370
|
async getTargetBillingStatus() {
|
|
6368
6371
|
return this.http.get("/api/v2/billing/status");
|
|
6369
6372
|
}
|
|
6373
|
+
/** Read the canonical Metronome automatic recharge configuration. */
|
|
6374
|
+
async getTargetAutoRecharge() {
|
|
6375
|
+
return this.http.get(
|
|
6376
|
+
"/api/v2/billing/auto-recharge"
|
|
6377
|
+
);
|
|
6378
|
+
}
|
|
6379
|
+
/** Update automatic recharge and return the server-verified configuration. */
|
|
6380
|
+
async updateTargetAutoRecharge(options) {
|
|
6381
|
+
const idempotencyKey = requireTargetBillingIdempotencyKey(
|
|
6382
|
+
options.idempotencyKey
|
|
6383
|
+
);
|
|
6384
|
+
const response = await this.http.put(
|
|
6385
|
+
"/api/v2/billing/auto-recharge",
|
|
6386
|
+
options.enabled ? {
|
|
6387
|
+
enabled: true,
|
|
6388
|
+
threshold_credits: options.thresholdCredits,
|
|
6389
|
+
refill_to_credits: options.refillToCredits
|
|
6390
|
+
} : { enabled: false },
|
|
6391
|
+
{ "Idempotency-Key": idempotencyKey }
|
|
6392
|
+
);
|
|
6393
|
+
return response.data;
|
|
6394
|
+
}
|
|
6370
6395
|
/**
|
|
6371
6396
|
* Purchase target-billing credits through the durable commercial operation
|
|
6372
6397
|
* flow. The caller supplies an idempotency key for safe retries.
|
|
@@ -6887,8 +6912,8 @@ function isDeeplineExtractorTarget(value) {
|
|
|
6887
6912
|
}
|
|
6888
6913
|
|
|
6889
6914
|
// ../shared_libs/plays/dataset.ts
|
|
6890
|
-
var PLAY_DATASET_BRAND2 =
|
|
6891
|
-
var NODE_INSPECT_CUSTOM =
|
|
6915
|
+
var PLAY_DATASET_BRAND2 = Symbol.for("deepline.play.dataset");
|
|
6916
|
+
var NODE_INSPECT_CUSTOM = Symbol.for("nodejs.util.inspect.custom");
|
|
6892
6917
|
var residentRowsByDataset = /* @__PURE__ */ new WeakMap();
|
|
6893
6918
|
var DEFAULT_MATERIALIZE_LIMIT = 1e4;
|
|
6894
6919
|
var PLAY_DATASET_EXECUTION_PAGE_BYTES = 64 * 1024 * 1024;
|
|
@@ -7413,6 +7438,7 @@ function listNameFromDeclaredPath(path) {
|
|
|
7413
7438
|
}
|
|
7414
7439
|
|
|
7415
7440
|
// ../shared_libs/play-runtime/tool-result.ts
|
|
7441
|
+
var SERIALIZED_TOOL_LIST_ROWS = Symbol("deepline.serialized_tool_list_rows");
|
|
7416
7442
|
var DESCRIPTOR_SUFFIX = /_(status|type|score|count|id|verified|valid|confidence|quality|source)$/i;
|
|
7417
7443
|
var COMPANY_SCOPED = /company/i;
|
|
7418
7444
|
var TARGET_FALLBACK_KEYS = {
|
|
@@ -8207,9 +8233,6 @@ var DeeplineConditionalStepResolver = class _DeeplineConditionalStepResolver {
|
|
|
8207
8233
|
this.run = run;
|
|
8208
8234
|
this.elseValue = elseValue;
|
|
8209
8235
|
}
|
|
8210
|
-
when;
|
|
8211
|
-
run;
|
|
8212
|
-
elseValue;
|
|
8213
8236
|
kind = "conditional";
|
|
8214
8237
|
else(value) {
|
|
8215
8238
|
return new _DeeplineConditionalStepResolver(this.when, this.run, value);
|
|
@@ -8221,9 +8244,6 @@ var DeeplineStepProgram = class _DeeplineStepProgram {
|
|
|
8221
8244
|
this.returnResolver = returnResolver;
|
|
8222
8245
|
this.continueOnProviderUnavailable = continueOnProviderUnavailable;
|
|
8223
8246
|
}
|
|
8224
|
-
steps;
|
|
8225
|
-
returnResolver;
|
|
8226
|
-
continueOnProviderUnavailable;
|
|
8227
8247
|
kind = "steps";
|
|
8228
8248
|
step(name, resolver, options) {
|
|
8229
8249
|
if (!name.trim()) {
|
|
@@ -8272,13 +8292,12 @@ function steps(options = {}) {
|
|
|
8272
8292
|
function runIf(predicate, resolver) {
|
|
8273
8293
|
return new DeeplineConditionalStepResolver(predicate, resolver, null);
|
|
8274
8294
|
}
|
|
8275
|
-
var PLAY_METADATA_SYMBOL =
|
|
8295
|
+
var PLAY_METADATA_SYMBOL = Symbol.for("deepline.play.metadata");
|
|
8276
8296
|
var DeeplinePlayJobImpl = class {
|
|
8277
8297
|
constructor(client, runId) {
|
|
8278
8298
|
this.client = client;
|
|
8279
8299
|
this.id = runId;
|
|
8280
8300
|
}
|
|
8281
|
-
client;
|
|
8282
8301
|
id;
|
|
8283
8302
|
async status() {
|
|
8284
8303
|
return this.client.getPlayStatus(this.id);
|
|
@@ -61,6 +61,13 @@ var PLAY_BACKEND_DESCRIPTORS = {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
// ../shared_libs/tool-execution-error.ts
|
|
64
|
+
var DEEPLINE_ERROR_BRAND = Symbol.for("deepline.error.v1");
|
|
65
|
+
var TOOL_EXECUTION_ERROR_BRAND = Symbol.for(
|
|
66
|
+
"deepline.tool-execution-error.v1"
|
|
67
|
+
);
|
|
68
|
+
var PROVIDER_TRANSIENT_ERROR_BRAND = Symbol.for(
|
|
69
|
+
"deepline.provider-transient-error.v1"
|
|
70
|
+
);
|
|
64
71
|
var TOOL_EXECUTION_ERROR_SCHEMA_VERSION = 1;
|
|
65
72
|
|
|
66
73
|
// ../shared_libs/plays/artifact-contract-version.ts
|
|
@@ -264,11 +271,11 @@ var TypeBoxError = class extends Error {
|
|
|
264
271
|
};
|
|
265
272
|
|
|
266
273
|
// ../node_modules/@sinclair/typebox/build/esm/type/symbols/symbols.mjs
|
|
267
|
-
var TransformKind =
|
|
268
|
-
var ReadonlyKind =
|
|
269
|
-
var OptionalKind =
|
|
270
|
-
var Hint =
|
|
271
|
-
var Kind =
|
|
274
|
+
var TransformKind = Symbol.for("TypeBox.Transform");
|
|
275
|
+
var ReadonlyKind = Symbol.for("TypeBox.Readonly");
|
|
276
|
+
var OptionalKind = Symbol.for("TypeBox.Optional");
|
|
277
|
+
var Hint = Symbol.for("TypeBox.Hint");
|
|
278
|
+
var Kind = Symbol.for("TypeBox.Kind");
|
|
272
279
|
|
|
273
280
|
// ../node_modules/@sinclair/typebox/build/esm/type/guard/kind.mjs
|
|
274
281
|
function IsReadonly(value) {
|