@slock-ai/daemon 0.55.5 → 0.55.6

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.
@@ -3175,7 +3175,7 @@ function collectModelUsageAttrs(value) {
3175
3175
  modelUsageMaxOutputTokens: aggregate.maxOutputTokens
3176
3176
  });
3177
3177
  }
3178
- function parseClaudeResultUsageTelemetry(event) {
3178
+ function parseClaudeResultUsageTelemetry(event, sessionId) {
3179
3179
  const usage = event.usage && typeof event.usage === "object" ? event.usage : void 0;
3180
3180
  const totalCostUsd = finiteNumber(event.total_cost_usd);
3181
3181
  const modelUsageAttrs = collectModelUsageAttrs(event.modelUsage);
@@ -3224,12 +3224,16 @@ function parseClaudeResultUsageTelemetry(event) {
3224
3224
  name: "token_usage",
3225
3225
  source: "claude_result_usage",
3226
3226
  usageKind: "per_turn",
3227
- ...typeof event.session_id === "string" && event.session_id ? { sessionId: event.session_id } : {},
3227
+ ...sessionId ? { sessionId } : {},
3228
3228
  ...typeof event.uuid === "string" && event.uuid ? { runtimeResultId: event.uuid } : {},
3229
3229
  attrs
3230
3230
  };
3231
3231
  }
3232
3232
  var ClaudeEventNormalizer = class {
3233
+ currentSession = null;
3234
+ get currentSessionId() {
3235
+ return this.currentSession;
3236
+ }
3233
3237
  normalizeLine(line) {
3234
3238
  let event;
3235
3239
  try {
@@ -3238,13 +3242,17 @@ var ClaudeEventNormalizer = class {
3238
3242
  return [];
3239
3243
  }
3240
3244
  const events = [];
3245
+ const eventSessionId = finiteString(event.session_id);
3246
+ if (eventSessionId) {
3247
+ this.currentSession = eventSessionId;
3248
+ }
3241
3249
  const pushResultError = (message, fallback) => {
3242
3250
  events.push({ kind: "error", message: collectResultErrorDetail(message, fallback) });
3243
3251
  };
3244
3252
  switch (event.type) {
3245
3253
  case "system":
3246
- if (event.subtype === "init" && event.session_id) {
3247
- events.push({ kind: "session_init", sessionId: event.session_id });
3254
+ if (event.subtype === "init" && eventSessionId) {
3255
+ events.push({ kind: "session_init", sessionId: eventSessionId });
3248
3256
  }
3249
3257
  if (event.subtype === "status" && event.status === "compacting") {
3250
3258
  events.push({ kind: "compaction_started" });
@@ -3303,7 +3311,8 @@ var ClaudeEventNormalizer = class {
3303
3311
  case "result": {
3304
3312
  const subtype = typeof event.subtype === "string" ? event.subtype : "success";
3305
3313
  const stopReason = typeof event.stop_reason === "string" ? event.stop_reason : null;
3306
- const usageTelemetry = parseClaudeResultUsageTelemetry(event);
3314
+ const resultSessionId = eventSessionId ?? this.currentSession;
3315
+ const usageTelemetry = parseClaudeResultUsageTelemetry(event, resultSessionId);
3307
3316
  switch (subtype) {
3308
3317
  case "success":
3309
3318
  if (event.is_error && stopReason !== "max_tokens") {
@@ -3326,7 +3335,7 @@ var ClaudeEventNormalizer = class {
3326
3335
  break;
3327
3336
  }
3328
3337
  if (usageTelemetry) events.push(usageTelemetry);
3329
- events.push({ kind: "turn_end", sessionId: event.session_id });
3338
+ events.push({ kind: "turn_end", sessionId: resultSessionId || void 0 });
3330
3339
  break;
3331
3340
  }
3332
3341
  }
@@ -3680,6 +3689,9 @@ var ClaudeDriver = class {
3680
3689
  parseLine(line) {
3681
3690
  return this.eventNormalizer.normalizeLine(line);
3682
3691
  }
3692
+ get currentSessionId() {
3693
+ return this.eventNormalizer.currentSessionId;
3694
+ }
3683
3695
  encodeStdinMessage(text, sessionId, _opts) {
3684
3696
  return JSON.stringify({
3685
3697
  type: "user",
@@ -3861,6 +3873,9 @@ function rawResponseItemProgressEvent(message) {
3861
3873
  payloadBytes
3862
3874
  };
3863
3875
  }
3876
+ function nonEmptyString(value) {
3877
+ return typeof value === "string" && value.length > 0 ? value : void 0;
3878
+ }
3864
3879
  var CodexEventNormalizer = class {
3865
3880
  mcpToolPrefix;
3866
3881
  currentThreadId = null;
@@ -3913,10 +3928,17 @@ var CodexEventNormalizer = class {
3913
3928
  }
3914
3929
  const telemetry = parseCodexTelemetryEvent(message);
3915
3930
  if (telemetry) {
3931
+ const telemetrySessionId = nonEmptyString(message.params?.threadId) ?? nonEmptyString(message.params?.thread?.id) ?? nonEmptyString(message.params?.sessionId);
3932
+ const telemetryTurnId = nonEmptyString(message.params?.turnId) ?? nonEmptyString(message.params?.turn?.id);
3933
+ if (telemetrySessionId) {
3934
+ this.currentThreadId = telemetrySessionId;
3935
+ }
3936
+ const sessionId = telemetrySessionId ?? this.currentThreadId ?? void 0;
3937
+ const turnId = telemetryTurnId ?? this.turnState.activeTurnId ?? void 0;
3916
3938
  events.push({
3917
3939
  ...telemetry,
3918
- ...this.currentThreadId ? { sessionId: this.currentThreadId } : {},
3919
- ...this.turnState.activeTurnId ? { turnId: this.turnState.activeTurnId } : {}
3940
+ ...sessionId ? { sessionId } : {},
3941
+ ...turnId ? { turnId } : {}
3920
3942
  });
3921
3943
  return { events };
3922
3944
  }
@@ -4365,6 +4387,9 @@ var CodexDriver = class {
4365
4387
  }
4366
4388
  return result.events;
4367
4389
  }
4390
+ get currentSessionId() {
4391
+ return this.normalizer.threadId;
4392
+ }
4368
4393
  encodeStdinMessage(text, sessionId, opts) {
4369
4394
  if (!this.normalizer.threadId && sessionId) {
4370
4395
  this.normalizer.adoptThreadId(sessionId);
@@ -7724,6 +7749,26 @@ function runtimeTraceCounterAttrs(ap) {
7724
7749
  runtime_thinking_events_count: ap.runtimeTraceCounters.thinkingEvents
7725
7750
  };
7726
7751
  }
7752
+ var RUNTIME_TELEMETRY_RESERVED_ATTR_KEYS = /* @__PURE__ */ new Set([
7753
+ "agentId",
7754
+ "launchId",
7755
+ "runtime",
7756
+ "model",
7757
+ "telemetry_name",
7758
+ "source",
7759
+ "usageKind",
7760
+ "sessionId",
7761
+ "turnId",
7762
+ "runtimeResultId"
7763
+ ]);
7764
+ function sanitizeRuntimeTelemetryPayloadAttrs(attrs) {
7765
+ const sanitized = {};
7766
+ for (const [key, value] of Object.entries(attrs)) {
7767
+ if (RUNTIME_TELEMETRY_RESERVED_ATTR_KEYS.has(key)) continue;
7768
+ sanitized[key] = value;
7769
+ }
7770
+ return sanitized;
7771
+ }
7727
7772
  function getMessageDeliveryText(driver) {
7728
7773
  return driver.supportsStdinNotification ? "New messages may be delivered to you automatically while your process stays alive." : "The daemon will automatically restart you when new messages arrive.";
7729
7774
  }
@@ -10458,11 +10503,13 @@ Use ${communicationCommand(driver, "read_history")} to catch up on the channels
10458
10503
  }
10459
10504
  }
10460
10505
  recordRuntimeTelemetry(agentId, ap, event) {
10506
+ const sessionId = ap.driver.currentSessionId ?? event.sessionId;
10507
+ const payloadAttrs = sanitizeRuntimeTelemetryPayloadAttrs(event.attrs);
10461
10508
  const telemetryAttrs = {
10462
- ...event.attrs,
10509
+ ...payloadAttrs,
10463
10510
  ...event.source ? { source: event.source } : {},
10464
10511
  ...event.usageKind ? { usageKind: event.usageKind } : {},
10465
- ...event.sessionId ? { sessionId: event.sessionId } : {},
10512
+ ...sessionId ? { sessionId } : {},
10466
10513
  ...event.turnId ? { turnId: event.turnId } : {},
10467
10514
  ...event.runtimeResultId ? { runtimeResultId: event.runtimeResultId } : {}
10468
10515
  };
package/dist/cli/index.js CHANGED
@@ -16751,7 +16751,7 @@ var messageReactCommand = defineCommand(
16751
16751
  name: "react",
16752
16752
  description: "Add or remove your reaction on a message",
16753
16753
  options: [
16754
- { flags: "--message-id <id>", description: "Message UUID to react to" },
16754
+ { flags: "--message-id <id>", description: "Message id (full or short) to react to" },
16755
16755
  { flags: "--emoji <emoji>", description: "Reaction emoji" },
16756
16756
  { flags: "--remove", description: "Remove your reaction instead of adding it" }
16757
16757
  ],
package/dist/core.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  resolveSlockCliPath,
10
10
  resolveWorkspaceDirectoryPath,
11
11
  scanWorkspaceDirectories
12
- } from "./chunk-NXNXMFLC.js";
12
+ } from "./chunk-HAZSZDOZ.js";
13
13
  import {
14
14
  subscribeDaemonLogs
15
15
  } from "./chunk-M2KQBJR3.js";
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  DAEMON_CLI_USAGE,
4
4
  DaemonCore,
5
5
  parseDaemonCliArgs
6
- } from "./chunk-NXNXMFLC.js";
6
+ } from "./chunk-HAZSZDOZ.js";
7
7
  import "./chunk-M2KQBJR3.js";
8
8
 
9
9
  // src/index.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slock-ai/daemon",
3
- "version": "0.55.5",
3
+ "version": "0.55.6",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "slock-daemon": "dist/index.js"