@neatlogs/claude-code 0.1.1 → 0.1.3
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/cli.js +8 -2
- package/dist/index.cjs +8 -2
- package/dist/index.js +8 -2
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import { appendFileSync as appendFileSync2 } from "fs";
|
|
8
8
|
|
|
9
9
|
// src/trace-shipper.ts
|
|
10
|
+
import { createHash } from "crypto";
|
|
10
11
|
import protobuf from "protobufjs";
|
|
11
12
|
|
|
12
13
|
// src/package-info.ts
|
|
@@ -113,6 +114,10 @@ function generateTraceId() {
|
|
|
113
114
|
function generateSpanId() {
|
|
114
115
|
return randomBytes(8);
|
|
115
116
|
}
|
|
117
|
+
function deterministicId(input, length) {
|
|
118
|
+
const hash = createHash("sha256").update(input).digest();
|
|
119
|
+
return new Uint8Array(hash.buffer, hash.byteOffset, length);
|
|
120
|
+
}
|
|
116
121
|
function bytesToHex(bytes) {
|
|
117
122
|
return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
118
123
|
}
|
|
@@ -500,8 +505,8 @@ function ensureSessionTrace(payload, config, shipper) {
|
|
|
500
505
|
const model = readState(`model_${payload.session_id}`) || void 0;
|
|
501
506
|
const workflowName = deriveWorkflowName(payload);
|
|
502
507
|
writeState(`workflow_${payload.session_id}`, workflowName);
|
|
503
|
-
const traceId =
|
|
504
|
-
const spanId =
|
|
508
|
+
const traceId = deterministicId(payload.session_id, 16);
|
|
509
|
+
const spanId = deterministicId(payload.session_id + ":root", 8);
|
|
505
510
|
const now = nowNanoString();
|
|
506
511
|
const rootSpan = {
|
|
507
512
|
traceId,
|
|
@@ -554,6 +559,7 @@ function createSpan(name, parent, startNano, endNano, attributes, status) {
|
|
|
554
559
|
function mapHookEvent(payload, config, shipper) {
|
|
555
560
|
switch (payload.hook_event_name) {
|
|
556
561
|
case "SessionStart":
|
|
562
|
+
case "SessionStart:resume":
|
|
557
563
|
handleSessionStart(payload, config, shipper);
|
|
558
564
|
break;
|
|
559
565
|
case "UserPromptSubmit":
|
package/dist/index.cjs
CHANGED
|
@@ -88,6 +88,7 @@ function updateConfig(patch) {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
// src/trace-shipper.ts
|
|
91
|
+
var import_crypto = require("crypto");
|
|
91
92
|
var import_protobufjs = __toESM(require("protobufjs"), 1);
|
|
92
93
|
|
|
93
94
|
// src/package-info.ts
|
|
@@ -194,6 +195,10 @@ function generateTraceId() {
|
|
|
194
195
|
function generateSpanId() {
|
|
195
196
|
return randomBytes(8);
|
|
196
197
|
}
|
|
198
|
+
function deterministicId(input, length) {
|
|
199
|
+
const hash = (0, import_crypto.createHash)("sha256").update(input).digest();
|
|
200
|
+
return new Uint8Array(hash.buffer, hash.byteOffset, length);
|
|
201
|
+
}
|
|
197
202
|
function bytesToHex(bytes) {
|
|
198
203
|
return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
199
204
|
}
|
|
@@ -581,8 +586,8 @@ function ensureSessionTrace(payload, config, shipper) {
|
|
|
581
586
|
const model = readState(`model_${payload.session_id}`) || void 0;
|
|
582
587
|
const workflowName = deriveWorkflowName(payload);
|
|
583
588
|
writeState(`workflow_${payload.session_id}`, workflowName);
|
|
584
|
-
const traceId =
|
|
585
|
-
const spanId =
|
|
589
|
+
const traceId = deterministicId(payload.session_id, 16);
|
|
590
|
+
const spanId = deterministicId(payload.session_id + ":root", 8);
|
|
586
591
|
const now = nowNanoString();
|
|
587
592
|
const rootSpan = {
|
|
588
593
|
traceId,
|
|
@@ -635,6 +640,7 @@ function createSpan(name, parent, startNano, endNano, attributes, status) {
|
|
|
635
640
|
function mapHookEvent(payload, config, shipper) {
|
|
636
641
|
switch (payload.hook_event_name) {
|
|
637
642
|
case "SessionStart":
|
|
643
|
+
case "SessionStart:resume":
|
|
638
644
|
handleSessionStart(payload, config, shipper);
|
|
639
645
|
break;
|
|
640
646
|
case "UserPromptSubmit":
|
package/dist/index.js
CHANGED
|
@@ -48,6 +48,7 @@ function updateConfig(patch) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
// src/trace-shipper.ts
|
|
51
|
+
import { createHash } from "crypto";
|
|
51
52
|
import protobuf from "protobufjs";
|
|
52
53
|
|
|
53
54
|
// src/package-info.ts
|
|
@@ -154,6 +155,10 @@ function generateTraceId() {
|
|
|
154
155
|
function generateSpanId() {
|
|
155
156
|
return randomBytes(8);
|
|
156
157
|
}
|
|
158
|
+
function deterministicId(input, length) {
|
|
159
|
+
const hash = createHash("sha256").update(input).digest();
|
|
160
|
+
return new Uint8Array(hash.buffer, hash.byteOffset, length);
|
|
161
|
+
}
|
|
157
162
|
function bytesToHex(bytes) {
|
|
158
163
|
return Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
159
164
|
}
|
|
@@ -541,8 +546,8 @@ function ensureSessionTrace(payload, config, shipper) {
|
|
|
541
546
|
const model = readState(`model_${payload.session_id}`) || void 0;
|
|
542
547
|
const workflowName = deriveWorkflowName(payload);
|
|
543
548
|
writeState(`workflow_${payload.session_id}`, workflowName);
|
|
544
|
-
const traceId =
|
|
545
|
-
const spanId =
|
|
549
|
+
const traceId = deterministicId(payload.session_id, 16);
|
|
550
|
+
const spanId = deterministicId(payload.session_id + ":root", 8);
|
|
546
551
|
const now = nowNanoString();
|
|
547
552
|
const rootSpan = {
|
|
548
553
|
traceId,
|
|
@@ -595,6 +600,7 @@ function createSpan(name, parent, startNano, endNano, attributes, status) {
|
|
|
595
600
|
function mapHookEvent(payload, config, shipper) {
|
|
596
601
|
switch (payload.hook_event_name) {
|
|
597
602
|
case "SessionStart":
|
|
603
|
+
case "SessionStart:resume":
|
|
598
604
|
handleSessionStart(payload, config, shipper);
|
|
599
605
|
break;
|
|
600
606
|
case "UserPromptSubmit":
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neatlogs/claude-code",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Neatlogs observability for Claude Code sessions — automatic tracing of prompts, tool calls, thinking, and LLM responses via hooks",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|