deepline 0.3.137 → 0.3.139

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.137',
203
+ version: '0.3.139',
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: {
@@ -304,6 +304,13 @@ function formatInsufficientCreditsMessage(input: {
304
304
  : billingUrl
305
305
  ? ` Add credits at ${billingUrl}.`
306
306
  : '';
307
+ const minimum = input.billing.minimum_balance_credits;
308
+ if (
309
+ typeof minimum === 'number' &&
310
+ input.billing.required_credits === minimum
311
+ ) {
312
+ return `Workspace balance ${balance} is below the ${formatCreditAmount(minimum)}-credit workspace minimum for starting a billable call (${operation}); this is a workspace-wide minimum, separate from the tool's own price.${addSuffix}`;
313
+ }
307
314
  return `Workspace balance ${balance} < required ${required} for ${operation}.${addSuffix}`;
308
315
  }
309
316
 
package/dist/cli/index.js CHANGED
@@ -3068,7 +3068,7 @@ var SDK_RELEASE = {
3068
3068
  // getters keep their established compatibility behavior.
3069
3069
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
3070
3070
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
3071
- version: "0.3.137",
3071
+ version: "0.3.139",
3072
3072
  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.",
3073
3073
  packageCapabilities: {
3074
3074
  updatePreferences: 1
@@ -24673,7 +24673,9 @@ function formatInsufficientCreditsMessage(input2) {
24673
24673
  const workspaceSuffix = workspace ? ` (workspace=${workspace})` : "";
24674
24674
  const recovery = insufficientCreditsRecoveryCommands(input2.billing);
24675
24675
  const addSuffix = billingUrl && recommended !== "-" ? ` Add >=${recommended} at ${billingUrl}.` : billingUrl ? ` Add credits at ${billingUrl}.` : "";
24676
- return `Workspace balance ${balance} < required ${required} for ${operation}${workspaceSuffix}.${addSuffix} Ask the user if they want to add Deepline credits. If they approve, run: ${recovery.topUp}. If checkout is required, run: ${recovery.checkout}.`;
24676
+ const minimum = input2.billing.minimum_balance_credits;
24677
+ const shortfall = typeof minimum === "number" && input2.billing.required_credits === minimum ? `Workspace balance ${balance} is below the ${formatCreditAmount(minimum)}-credit workspace minimum for starting a billable call (${operation}${workspaceSuffix}); this is a workspace-wide minimum, separate from the tool's own price.` : `Workspace balance ${balance} < required ${required} for ${operation}${workspaceSuffix}.`;
24678
+ return `${shortfall}${addSuffix} Ask the user if they want to add Deepline credits. If they approve, run: ${recovery.topUp}. If checkout is required, run: ${recovery.checkout}.`;
24677
24679
  }
24678
24680
  function buildInsufficientCreditsSummaryLines(input2) {
24679
24681
  const progress = input2.status.progress;
@@ -36192,6 +36194,14 @@ function parseSessionAgent(value) {
36192
36194
  }
36193
36195
  throw new Error("Invalid --agent value. Expected auto, claude, or codex.");
36194
36196
  }
36197
+ function parseSessionRating(value) {
36198
+ if (value === void 0) return void 0;
36199
+ const normalized = value.trim().toLowerCase();
36200
+ if (normalized === "good" || normalized === "bad" || normalized === "neutral") {
36201
+ return normalized;
36202
+ }
36203
+ throw new Error("Invalid --rating value. Expected good, bad, or neutral.");
36204
+ }
36195
36205
  function findSessionFile(sessionId, agent) {
36196
36206
  if (!UUID_RE.test(sessionId)) {
36197
36207
  throw new Error(
@@ -36457,7 +36467,8 @@ async function uploadChunkedSessions(sessions, options) {
36457
36467
  upload_id: uploadId,
36458
36468
  session_ids: sessions.map((session) => session.sessionId),
36459
36469
  labels: sessions.map((session) => session.label),
36460
- environments: sessions.map(() => detectShellContext())
36470
+ environments: sessions.map(() => detectShellContext()),
36471
+ ...options.rating ? { rating: options.rating } : {}
36461
36472
  });
36462
36473
  printCommandEnvelope(
36463
36474
  {
@@ -36477,6 +36488,7 @@ async function uploadChunkedSessions(sessions, options) {
36477
36488
  );
36478
36489
  }
36479
36490
  async function handleSessionsSend(options) {
36491
+ const rating = parseSessionRating(options.rating);
36480
36492
  if (options.file) {
36481
36493
  const filePath = (0, import_node_path19.resolve)(options.file);
36482
36494
  if (!(0, import_node_fs14.existsSync)(filePath)) {
@@ -36484,7 +36496,8 @@ async function handleSessionsSend(options) {
36484
36496
  }
36485
36497
  const response2 = await uploadPayload("/api/v2/cli/send-session", {
36486
36498
  file: (0, import_node_fs14.readFileSync)(filePath).toString("base64"),
36487
- filename: (0, import_node_path19.basename)(filePath)
36499
+ filename: (0, import_node_path19.basename)(filePath),
36500
+ ...rating ? { rating } : {}
36488
36501
  });
36489
36502
  printCommandEnvelope(
36490
36503
  {
@@ -36517,13 +36530,14 @@ async function handleSessionsSend(options) {
36517
36530
  return { ...target, ...upload };
36518
36531
  });
36519
36532
  if (built.some((session) => session.needsChunking)) {
36520
- await uploadChunkedSessions(built, options);
36533
+ await uploadChunkedSessions(built, { json: options.json, rating });
36521
36534
  return;
36522
36535
  }
36523
36536
  const response = built.length === 1 && !options.label?.length ? await uploadPayload("/api/v2/cli/send-session", {
36524
36537
  session_id: built[0]?.sessionId,
36525
36538
  content: built[0]?.encodedContent,
36526
- environment: detectShellContext()
36539
+ environment: detectShellContext(),
36540
+ ...rating ? { rating } : {}
36527
36541
  }) : await uploadPayload("/api/v2/cli/send-session", {
36528
36542
  sessions: built.map((session) => ({
36529
36543
  session_id: session.sessionId,
@@ -36531,7 +36545,8 @@ async function handleSessionsSend(options) {
36531
36545
  label: session.label,
36532
36546
  environment: detectShellContext()
36533
36547
  })),
36534
- environment: detectShellContext()
36548
+ environment: detectShellContext(),
36549
+ ...rating ? { rating } : {}
36535
36550
  });
36536
36551
  printCommandEnvelope(
36537
36552
  {
@@ -36709,6 +36724,7 @@ Examples:
36709
36724
  deepline ${familyName} send --current-session --json
36710
36725
  deepline ${familyName} send --agent codex --current-session --json
36711
36726
  deepline ${familyName} send --session-id 5a3bfb97-a2d9-49d9-82c6-52ccc03dadca --label "pilot run"
36727
+ deepline ${familyName} send --current-session --rating bad --json # tag the session as one that went badly
36712
36728
  deepline ${familyName} send --file ./debug.log --json
36713
36729
  `
36714
36730
  ).option(
@@ -36725,7 +36741,10 @@ Examples:
36725
36741
  "--agent <auto|claude|codex>",
36726
36742
  "Limit transcript discovery to one agent runtime",
36727
36743
  "auto"
36728
- ).option("--current-session", "Use the newest local agent session JSONL").option("--file <path>", "Upload a raw local file instead of a session").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleSessionsSend);
36744
+ ).option("--current-session", "Use the newest local agent session JSONL").option("--file <path>", "Upload a raw local file instead of a session").option(
36745
+ "--rating <good|bad|neutral>",
36746
+ "Tag the upload by outcome, not tone, so Deepline can filter sessions: good = the user's goal was met without product problems; bad = the goal was missed, or a product failure, bug, or avoidable friction (including a substantial workaround) got in the way; neutral = partly met or unclear."
36747
+ ).option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleSessionsSend);
36729
36748
  parent.command("render").description("Render local session transcript(s) to an HTML viewer.").addHelpText(
36730
36749
  "after",
36731
36750
  `
@@ -3063,7 +3063,7 @@ var SDK_RELEASE = {
3063
3063
  // getters keep their established compatibility behavior.
3064
3064
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
3065
3065
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
3066
- version: "0.3.137",
3066
+ version: "0.3.139",
3067
3067
  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.",
3068
3068
  packageCapabilities: {
3069
3069
  updatePreferences: 1
@@ -24745,7 +24745,9 @@ function formatInsufficientCreditsMessage(input2) {
24745
24745
  const workspaceSuffix = workspace ? ` (workspace=${workspace})` : "";
24746
24746
  const recovery = insufficientCreditsRecoveryCommands(input2.billing);
24747
24747
  const addSuffix = billingUrl && recommended !== "-" ? ` Add >=${recommended} at ${billingUrl}.` : billingUrl ? ` Add credits at ${billingUrl}.` : "";
24748
- return `Workspace balance ${balance} < required ${required} for ${operation}${workspaceSuffix}.${addSuffix} Ask the user if they want to add Deepline credits. If they approve, run: ${recovery.topUp}. If checkout is required, run: ${recovery.checkout}.`;
24748
+ const minimum = input2.billing.minimum_balance_credits;
24749
+ const shortfall = typeof minimum === "number" && input2.billing.required_credits === minimum ? `Workspace balance ${balance} is below the ${formatCreditAmount(minimum)}-credit workspace minimum for starting a billable call (${operation}${workspaceSuffix}); this is a workspace-wide minimum, separate from the tool's own price.` : `Workspace balance ${balance} < required ${required} for ${operation}${workspaceSuffix}.`;
24750
+ return `${shortfall}${addSuffix} Ask the user if they want to add Deepline credits. If they approve, run: ${recovery.topUp}. If checkout is required, run: ${recovery.checkout}.`;
24749
24751
  }
24750
24752
  function buildInsufficientCreditsSummaryLines(input2) {
24751
24753
  const progress = input2.status.progress;
@@ -36271,6 +36273,14 @@ function parseSessionAgent(value) {
36271
36273
  }
36272
36274
  throw new Error("Invalid --agent value. Expected auto, claude, or codex.");
36273
36275
  }
36276
+ function parseSessionRating(value) {
36277
+ if (value === void 0) return void 0;
36278
+ const normalized = value.trim().toLowerCase();
36279
+ if (normalized === "good" || normalized === "bad" || normalized === "neutral") {
36280
+ return normalized;
36281
+ }
36282
+ throw new Error("Invalid --rating value. Expected good, bad, or neutral.");
36283
+ }
36274
36284
  function findSessionFile(sessionId, agent) {
36275
36285
  if (!UUID_RE.test(sessionId)) {
36276
36286
  throw new Error(
@@ -36536,7 +36546,8 @@ async function uploadChunkedSessions(sessions, options) {
36536
36546
  upload_id: uploadId,
36537
36547
  session_ids: sessions.map((session) => session.sessionId),
36538
36548
  labels: sessions.map((session) => session.label),
36539
- environments: sessions.map(() => detectShellContext())
36549
+ environments: sessions.map(() => detectShellContext()),
36550
+ ...options.rating ? { rating: options.rating } : {}
36540
36551
  });
36541
36552
  printCommandEnvelope(
36542
36553
  {
@@ -36556,6 +36567,7 @@ async function uploadChunkedSessions(sessions, options) {
36556
36567
  );
36557
36568
  }
36558
36569
  async function handleSessionsSend(options) {
36570
+ const rating = parseSessionRating(options.rating);
36559
36571
  if (options.file) {
36560
36572
  const filePath = resolve14(options.file);
36561
36573
  if (!existsSync10(filePath)) {
@@ -36563,7 +36575,8 @@ async function handleSessionsSend(options) {
36563
36575
  }
36564
36576
  const response2 = await uploadPayload("/api/v2/cli/send-session", {
36565
36577
  file: readFileSync11(filePath).toString("base64"),
36566
- filename: basename5(filePath)
36578
+ filename: basename5(filePath),
36579
+ ...rating ? { rating } : {}
36567
36580
  });
36568
36581
  printCommandEnvelope(
36569
36582
  {
@@ -36596,13 +36609,14 @@ async function handleSessionsSend(options) {
36596
36609
  return { ...target, ...upload };
36597
36610
  });
36598
36611
  if (built.some((session) => session.needsChunking)) {
36599
- await uploadChunkedSessions(built, options);
36612
+ await uploadChunkedSessions(built, { json: options.json, rating });
36600
36613
  return;
36601
36614
  }
36602
36615
  const response = built.length === 1 && !options.label?.length ? await uploadPayload("/api/v2/cli/send-session", {
36603
36616
  session_id: built[0]?.sessionId,
36604
36617
  content: built[0]?.encodedContent,
36605
- environment: detectShellContext()
36618
+ environment: detectShellContext(),
36619
+ ...rating ? { rating } : {}
36606
36620
  }) : await uploadPayload("/api/v2/cli/send-session", {
36607
36621
  sessions: built.map((session) => ({
36608
36622
  session_id: session.sessionId,
@@ -36610,7 +36624,8 @@ async function handleSessionsSend(options) {
36610
36624
  label: session.label,
36611
36625
  environment: detectShellContext()
36612
36626
  })),
36613
- environment: detectShellContext()
36627
+ environment: detectShellContext(),
36628
+ ...rating ? { rating } : {}
36614
36629
  });
36615
36630
  printCommandEnvelope(
36616
36631
  {
@@ -36788,6 +36803,7 @@ Examples:
36788
36803
  deepline ${familyName} send --current-session --json
36789
36804
  deepline ${familyName} send --agent codex --current-session --json
36790
36805
  deepline ${familyName} send --session-id 5a3bfb97-a2d9-49d9-82c6-52ccc03dadca --label "pilot run"
36806
+ deepline ${familyName} send --current-session --rating bad --json # tag the session as one that went badly
36791
36807
  deepline ${familyName} send --file ./debug.log --json
36792
36808
  `
36793
36809
  ).option(
@@ -36804,7 +36820,10 @@ Examples:
36804
36820
  "--agent <auto|claude|codex>",
36805
36821
  "Limit transcript discovery to one agent runtime",
36806
36822
  "auto"
36807
- ).option("--current-session", "Use the newest local agent session JSONL").option("--file <path>", "Upload a raw local file instead of a session").option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleSessionsSend);
36823
+ ).option("--current-session", "Use the newest local agent session JSONL").option("--file <path>", "Upload a raw local file instead of a session").option(
36824
+ "--rating <good|bad|neutral>",
36825
+ "Tag the upload by outcome, not tone, so Deepline can filter sessions: good = the user's goal was met without product problems; bad = the goal was missed, or a product failure, bug, or avoidable friction (including a substantial workaround) got in the way; neutral = partly met or unclear."
36826
+ ).option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleSessionsSend);
36808
36827
  parent.command("render").description("Render local session transcript(s) to an HTML viewer.").addHelpText(
36809
36828
  "after",
36810
36829
  `
package/dist/index.js CHANGED
@@ -864,7 +864,7 @@ var SDK_RELEASE = {
864
864
  // getters keep their established compatibility behavior.
865
865
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
866
866
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
867
- version: "0.3.137",
867
+ version: "0.3.139",
868
868
  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.",
869
869
  packageCapabilities: {
870
870
  updatePreferences: 1
package/dist/index.mjs CHANGED
@@ -768,7 +768,7 @@ var SDK_RELEASE = {
768
768
  // getters keep their established compatibility behavior.
769
769
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
770
770
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
771
- version: "0.3.137",
771
+ version: "0.3.139",
772
772
  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.",
773
773
  packageCapabilities: {
774
774
  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.137";
152
+ readonly version: "0.3.139";
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.137";
152
+ readonly version: "0.3.139";
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.137",
77
+ version: "0.3.139",
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.137",
51
+ version: "0.3.139",
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.137",
3
+ "version": "0.3.139",
4
4
  "description": "GTM data CLI and TypeScript SDK for coding agents",
5
5
  "license": "MIT",
6
6
  "homepage": "https://code.deepline.com",