deepline 0.3.136 → 0.3.138

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.136',
203
+ version: '0.3.138',
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: {
@@ -200,6 +200,11 @@ export const QUEUE_ITEM_STATES = [
200
200
 
201
201
  export type QueueItemState = (typeof QUEUE_ITEM_STATES)[number];
202
202
 
203
+ /** Operator disposition is an overlay on native source state. Retiring an
204
+ * item removes it from active operational views without pretending the owner
205
+ * completed, deleted, or replayed the source row. */
206
+ export type QueueItemDisposition = 'active' | 'retired';
207
+
203
208
  export type QueueItemAction =
204
209
  | 'archive'
205
210
  | 'quarantine'
@@ -207,6 +212,7 @@ export type QueueItemAction =
207
212
  | 'hold'
208
213
  | 'resume'
209
214
  | 'cancel'
215
+ | 'retire'
210
216
  | 'update';
211
217
 
212
218
  export const QUEUE_ITEM_ACTIONS = [
@@ -216,6 +222,7 @@ export const QUEUE_ITEM_ACTIONS = [
216
222
  'hold',
217
223
  'resume',
218
224
  'cancel',
225
+ 'retire',
219
226
  'update',
220
227
  ] as const satisfies readonly QueueItemAction[];
221
228
 
@@ -262,6 +269,8 @@ export type QueueItem = {
262
269
  readonly revision: string;
263
270
  readonly observedAt: string;
264
271
  readonly state: QueueItemState;
272
+ /** Additive operator overlay; older connectors may omit it. */
273
+ readonly disposition?: QueueItemDisposition;
265
274
  readonly nativeState: string;
266
275
  readonly lastError?: QueueItemLastError;
267
276
  readonly actions: readonly ActionAvailability[];
@@ -269,6 +278,8 @@ export type QueueItem = {
269
278
  readonly createdAt?: string;
270
279
  readonly updatedAt?: string;
271
280
  readonly summary?: string;
281
+ readonly retiredAt?: string;
282
+ readonly retirementReason?: string;
272
283
  };
273
284
 
274
285
  /** Keep old DLQ verbs working at the boundary while exposing a smaller,
@@ -424,8 +435,9 @@ export type QueueItemConnectorContext = {
424
435
 
425
436
  /**
426
437
  * Owner implementation port. The connector owns native reads, state mapping,
427
- * lease/CAS checks, and outcome verification. The shared control service only
428
- * authenticates, validates, journals idempotency, and returns this result.
438
+ * lease/CAS checks, and outcome verification. `retire` is the one shared
439
+ * disposition action: connectors fence the source revision, while the shared
440
+ * control plane records an overlay and never mutates the owner row.
429
441
  */
430
442
  export type QueueItemConnector = {
431
443
  readonly id: string;
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.136",
3071
+ version: "0.3.138",
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
@@ -36192,6 +36192,14 @@ function parseSessionAgent(value) {
36192
36192
  }
36193
36193
  throw new Error("Invalid --agent value. Expected auto, claude, or codex.");
36194
36194
  }
36195
+ function parseSessionRating(value) {
36196
+ if (value === void 0) return void 0;
36197
+ const normalized = value.trim().toLowerCase();
36198
+ if (normalized === "good" || normalized === "bad" || normalized === "neutral") {
36199
+ return normalized;
36200
+ }
36201
+ throw new Error("Invalid --rating value. Expected good, bad, or neutral.");
36202
+ }
36195
36203
  function findSessionFile(sessionId, agent) {
36196
36204
  if (!UUID_RE.test(sessionId)) {
36197
36205
  throw new Error(
@@ -36457,7 +36465,8 @@ async function uploadChunkedSessions(sessions, options) {
36457
36465
  upload_id: uploadId,
36458
36466
  session_ids: sessions.map((session) => session.sessionId),
36459
36467
  labels: sessions.map((session) => session.label),
36460
- environments: sessions.map(() => detectShellContext())
36468
+ environments: sessions.map(() => detectShellContext()),
36469
+ ...options.rating ? { rating: options.rating } : {}
36461
36470
  });
36462
36471
  printCommandEnvelope(
36463
36472
  {
@@ -36477,6 +36486,7 @@ async function uploadChunkedSessions(sessions, options) {
36477
36486
  );
36478
36487
  }
36479
36488
  async function handleSessionsSend(options) {
36489
+ const rating = parseSessionRating(options.rating);
36480
36490
  if (options.file) {
36481
36491
  const filePath = (0, import_node_path19.resolve)(options.file);
36482
36492
  if (!(0, import_node_fs14.existsSync)(filePath)) {
@@ -36484,7 +36494,8 @@ async function handleSessionsSend(options) {
36484
36494
  }
36485
36495
  const response2 = await uploadPayload("/api/v2/cli/send-session", {
36486
36496
  file: (0, import_node_fs14.readFileSync)(filePath).toString("base64"),
36487
- filename: (0, import_node_path19.basename)(filePath)
36497
+ filename: (0, import_node_path19.basename)(filePath),
36498
+ ...rating ? { rating } : {}
36488
36499
  });
36489
36500
  printCommandEnvelope(
36490
36501
  {
@@ -36517,13 +36528,14 @@ async function handleSessionsSend(options) {
36517
36528
  return { ...target, ...upload };
36518
36529
  });
36519
36530
  if (built.some((session) => session.needsChunking)) {
36520
- await uploadChunkedSessions(built, options);
36531
+ await uploadChunkedSessions(built, { json: options.json, rating });
36521
36532
  return;
36522
36533
  }
36523
36534
  const response = built.length === 1 && !options.label?.length ? await uploadPayload("/api/v2/cli/send-session", {
36524
36535
  session_id: built[0]?.sessionId,
36525
36536
  content: built[0]?.encodedContent,
36526
- environment: detectShellContext()
36537
+ environment: detectShellContext(),
36538
+ ...rating ? { rating } : {}
36527
36539
  }) : await uploadPayload("/api/v2/cli/send-session", {
36528
36540
  sessions: built.map((session) => ({
36529
36541
  session_id: session.sessionId,
@@ -36531,7 +36543,8 @@ async function handleSessionsSend(options) {
36531
36543
  label: session.label,
36532
36544
  environment: detectShellContext()
36533
36545
  })),
36534
- environment: detectShellContext()
36546
+ environment: detectShellContext(),
36547
+ ...rating ? { rating } : {}
36535
36548
  });
36536
36549
  printCommandEnvelope(
36537
36550
  {
@@ -36709,6 +36722,7 @@ Examples:
36709
36722
  deepline ${familyName} send --current-session --json
36710
36723
  deepline ${familyName} send --agent codex --current-session --json
36711
36724
  deepline ${familyName} send --session-id 5a3bfb97-a2d9-49d9-82c6-52ccc03dadca --label "pilot run"
36725
+ deepline ${familyName} send --current-session --rating bad --json # tag the session as one that went badly
36712
36726
  deepline ${familyName} send --file ./debug.log --json
36713
36727
  `
36714
36728
  ).option(
@@ -36725,7 +36739,10 @@ Examples:
36725
36739
  "--agent <auto|claude|codex>",
36726
36740
  "Limit transcript discovery to one agent runtime",
36727
36741
  "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);
36742
+ ).option("--current-session", "Use the newest local agent session JSONL").option("--file <path>", "Upload a raw local file instead of a session").option(
36743
+ "--rating <good|bad|neutral>",
36744
+ "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."
36745
+ ).option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleSessionsSend);
36729
36746
  parent.command("render").description("Render local session transcript(s) to an HTML viewer.").addHelpText(
36730
36747
  "after",
36731
36748
  `
@@ -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.136",
3066
+ version: "0.3.138",
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
@@ -36271,6 +36271,14 @@ function parseSessionAgent(value) {
36271
36271
  }
36272
36272
  throw new Error("Invalid --agent value. Expected auto, claude, or codex.");
36273
36273
  }
36274
+ function parseSessionRating(value) {
36275
+ if (value === void 0) return void 0;
36276
+ const normalized = value.trim().toLowerCase();
36277
+ if (normalized === "good" || normalized === "bad" || normalized === "neutral") {
36278
+ return normalized;
36279
+ }
36280
+ throw new Error("Invalid --rating value. Expected good, bad, or neutral.");
36281
+ }
36274
36282
  function findSessionFile(sessionId, agent) {
36275
36283
  if (!UUID_RE.test(sessionId)) {
36276
36284
  throw new Error(
@@ -36536,7 +36544,8 @@ async function uploadChunkedSessions(sessions, options) {
36536
36544
  upload_id: uploadId,
36537
36545
  session_ids: sessions.map((session) => session.sessionId),
36538
36546
  labels: sessions.map((session) => session.label),
36539
- environments: sessions.map(() => detectShellContext())
36547
+ environments: sessions.map(() => detectShellContext()),
36548
+ ...options.rating ? { rating: options.rating } : {}
36540
36549
  });
36541
36550
  printCommandEnvelope(
36542
36551
  {
@@ -36556,6 +36565,7 @@ async function uploadChunkedSessions(sessions, options) {
36556
36565
  );
36557
36566
  }
36558
36567
  async function handleSessionsSend(options) {
36568
+ const rating = parseSessionRating(options.rating);
36559
36569
  if (options.file) {
36560
36570
  const filePath = resolve14(options.file);
36561
36571
  if (!existsSync10(filePath)) {
@@ -36563,7 +36573,8 @@ async function handleSessionsSend(options) {
36563
36573
  }
36564
36574
  const response2 = await uploadPayload("/api/v2/cli/send-session", {
36565
36575
  file: readFileSync11(filePath).toString("base64"),
36566
- filename: basename5(filePath)
36576
+ filename: basename5(filePath),
36577
+ ...rating ? { rating } : {}
36567
36578
  });
36568
36579
  printCommandEnvelope(
36569
36580
  {
@@ -36596,13 +36607,14 @@ async function handleSessionsSend(options) {
36596
36607
  return { ...target, ...upload };
36597
36608
  });
36598
36609
  if (built.some((session) => session.needsChunking)) {
36599
- await uploadChunkedSessions(built, options);
36610
+ await uploadChunkedSessions(built, { json: options.json, rating });
36600
36611
  return;
36601
36612
  }
36602
36613
  const response = built.length === 1 && !options.label?.length ? await uploadPayload("/api/v2/cli/send-session", {
36603
36614
  session_id: built[0]?.sessionId,
36604
36615
  content: built[0]?.encodedContent,
36605
- environment: detectShellContext()
36616
+ environment: detectShellContext(),
36617
+ ...rating ? { rating } : {}
36606
36618
  }) : await uploadPayload("/api/v2/cli/send-session", {
36607
36619
  sessions: built.map((session) => ({
36608
36620
  session_id: session.sessionId,
@@ -36610,7 +36622,8 @@ async function handleSessionsSend(options) {
36610
36622
  label: session.label,
36611
36623
  environment: detectShellContext()
36612
36624
  })),
36613
- environment: detectShellContext()
36625
+ environment: detectShellContext(),
36626
+ ...rating ? { rating } : {}
36614
36627
  });
36615
36628
  printCommandEnvelope(
36616
36629
  {
@@ -36788,6 +36801,7 @@ Examples:
36788
36801
  deepline ${familyName} send --current-session --json
36789
36802
  deepline ${familyName} send --agent codex --current-session --json
36790
36803
  deepline ${familyName} send --session-id 5a3bfb97-a2d9-49d9-82c6-52ccc03dadca --label "pilot run"
36804
+ deepline ${familyName} send --current-session --rating bad --json # tag the session as one that went badly
36791
36805
  deepline ${familyName} send --file ./debug.log --json
36792
36806
  `
36793
36807
  ).option(
@@ -36804,7 +36818,10 @@ Examples:
36804
36818
  "--agent <auto|claude|codex>",
36805
36819
  "Limit transcript discovery to one agent runtime",
36806
36820
  "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);
36821
+ ).option("--current-session", "Use the newest local agent session JSONL").option("--file <path>", "Upload a raw local file instead of a session").option(
36822
+ "--rating <good|bad|neutral>",
36823
+ "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."
36824
+ ).option("--json", "Emit JSON output. Also automatic when stdout is piped").action(handleSessionsSend);
36808
36825
  parent.command("render").description("Render local session transcript(s) to an HTML viewer.").addHelpText(
36809
36826
  "after",
36810
36827
  `
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.136",
867
+ version: "0.3.138",
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.136",
771
+ version: "0.3.138",
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.136";
152
+ readonly version: "0.3.138";
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.136";
152
+ readonly version: "0.3.138";
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.136",
77
+ version: "0.3.138",
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.136",
51
+ version: "0.3.138",
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.136",
3
+ "version": "0.3.138",
4
4
  "description": "GTM data CLI and TypeScript SDK for coding agents",
5
5
  "license": "MIT",
6
6
  "homepage": "https://code.deepline.com",