@guckdev/sdk 0.17.0 → 0.17.4

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/README.md CHANGED
@@ -14,7 +14,7 @@ For the CLI (`guck ...`), use `@guckdev/cli`.
14
14
 
15
15
  ```sh
16
16
  guck init
17
- guck wrap --service debate-room --session room-123 -- pnpm run dev
17
+ guck wrap --service worker --session session-123 -- pnpm run dev
18
18
  # in another terminal
19
19
  guck mcp
20
20
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/sdk/auto.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAkEvC,eAAO,MAAM,kBAAkB,QAAO,UAiErC,CAAC"}
1
+ {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/sdk/auto.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AA2EvC,eAAO,MAAM,kBAAkB,QAAO,UAmErC,CAAC"}
package/dist/sdk/auto.js CHANGED
@@ -27,11 +27,13 @@ const flushLine = (target, line) => {
27
27
  };
28
28
  const installCaptureFor = (target, bufferRef) => {
29
29
  const original = target.stream.write.bind(target.stream);
30
- const patched = (chunk, encoding, cb) => {
31
- const result = original(chunk, encoding, cb);
32
- const resolvedEncoding = typeof encoding === "string" ? encoding : "utf8";
30
+ const patched = (chunk, encoding, callback) => {
31
+ const resolvedCallback = typeof encoding === "function" ? encoding : callback;
32
+ const resolvedEncoding = typeof encoding === "string" ? encoding : undefined;
33
+ const result = original(chunk, resolvedEncoding, resolvedCallback);
34
+ const textEncoding = typeof encoding === "string" ? encoding : "utf8";
33
35
  const text = Buffer.isBuffer(chunk)
34
- ? chunk.toString(resolvedEncoding)
36
+ ? chunk.toString(textEncoding)
35
37
  : String(chunk);
36
38
  bufferRef.value += text;
37
39
  const lines = bufferRef.value.split(/\r?\n/);
@@ -75,7 +77,9 @@ export const installAutoCapture = () => {
75
77
  buffers.stderr.value = "";
76
78
  }
77
79
  };
78
- const beforeExit = () => flush();
80
+ const beforeExit = () => {
81
+ flush();
82
+ };
79
83
  process.on("beforeExit", beforeExit);
80
84
  process.on("exit", beforeExit);
81
85
  const stop = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/sdk/auto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/sdk/auto.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guckdev/sdk",
3
- "version": "0.17.0",
3
+ "version": "0.17.4",
4
4
  "description": "Guck JS SDK",
5
5
  "repository": {
6
6
  "type": "git",
@@ -37,7 +37,7 @@
37
37
  "node": ">=18"
38
38
  },
39
39
  "dependencies": {
40
- "@guckdev/core": "0.17.0"
40
+ "@guckdev/core": "0.17.4"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "25.2.2"
package/src/sdk/auto.ts CHANGED
@@ -9,7 +9,14 @@ type WriteTarget = {
9
9
  level: GuckEvent["level"];
10
10
  };
11
11
 
12
- type WriteFn = typeof process.stdout.write;
12
+ type WriteChunk = string | Uint8Array;
13
+ type WriteCallback = (error?: Error | null) => void;
14
+ type WriteEncoding = NodeJS.BufferEncoding | WriteCallback;
15
+ type WriteFn = (
16
+ chunk: WriteChunk,
17
+ encoding?: WriteEncoding,
18
+ callback?: WriteCallback,
19
+ ) => boolean;
13
20
 
14
21
  type CaptureState = {
15
22
  stop: () => void;
@@ -47,13 +54,15 @@ const installCaptureFor = (
47
54
  target: WriteTarget,
48
55
  bufferRef: { value: string },
49
56
  ): WriteFn => {
50
- const original = target.stream.write.bind(target.stream);
51
- const patched: WriteFn = (chunk: any, encoding?: any, cb?: any) => {
52
- const result = original(chunk, encoding as any, cb as any);
53
- const resolvedEncoding: BufferEncoding =
54
- typeof encoding === "string" ? (encoding as BufferEncoding) : "utf8";
57
+ const original = target.stream.write.bind(target.stream) as WriteFn;
58
+ const patched: WriteFn = (chunk, encoding, callback) => {
59
+ const resolvedCallback = typeof encoding === "function" ? encoding : callback;
60
+ const resolvedEncoding = typeof encoding === "string" ? encoding : undefined;
61
+ const result = original(chunk, resolvedEncoding, resolvedCallback);
62
+ const textEncoding: NodeJS.BufferEncoding =
63
+ typeof encoding === "string" ? encoding : "utf8";
55
64
  const text = Buffer.isBuffer(chunk)
56
- ? chunk.toString(resolvedEncoding)
65
+ ? chunk.toString(textEncoding)
57
66
  : String(chunk);
58
67
  bufferRef.value += text;
59
68
  const lines = bufferRef.value.split(/\r?\n/);
@@ -111,7 +120,9 @@ export const installAutoCapture = (): StopHandle => {
111
120
  }
112
121
  };
113
122
 
114
- const beforeExit = () => flush();
123
+ const beforeExit = (): void => {
124
+ flush();
125
+ };
115
126
 
116
127
  process.on("beforeExit", beforeExit);
117
128
  process.on("exit", beforeExit);