@gns-foundation/hive-worker 0.5.1 → 0.5.2

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.
@@ -1,4 +1,13 @@
1
1
  import type { HiveJob, JobResult, RpcPeer } from './jobs.js';
2
+ /**
3
+ * Strip llama-cli chat-template artifacts from raw stdout.
4
+ * Handles multiple template styles:
5
+ * - Special-token (TinyLlama, Phi-3): <|assistant|>...<|im_end|>
6
+ * - Plain-text decoded (LFM2.5): \nassistant\n...
7
+ * - Llama-3 header format: <|start_header_id|>assistant<|end_header_id|>
8
+ * Plus the trailing "> EOF by user" from interactive-mode stdin closure.
9
+ */
10
+ export declare function cleanLlamaOutput(raw: string): string;
2
11
  export declare function findLlamaCli(): string | null;
3
12
  export declare function ensureModelCacheDir(): void;
4
13
  export declare function modelCachePath(modelId: string): string;
package/dist/executor.js CHANGED
@@ -15,6 +15,53 @@ import { spawn } from 'child_process';
15
15
  import { execSync } from 'child_process';
16
16
  import os from 'os';
17
17
  import path from 'path';
18
+ /**
19
+ * Strip llama-cli chat-template artifacts from raw stdout.
20
+ * Handles multiple template styles:
21
+ * - Special-token (TinyLlama, Phi-3): <|assistant|>...<|im_end|>
22
+ * - Plain-text decoded (LFM2.5): \nassistant\n...
23
+ * - Llama-3 header format: <|start_header_id|>assistant<|end_header_id|>
24
+ * Plus the trailing "> EOF by user" from interactive-mode stdin closure.
25
+ */
26
+ export function cleanLlamaOutput(raw) {
27
+ let out = raw.trim();
28
+ // Try special-token markers first (most specific)
29
+ const specialMarkers = [
30
+ '<|assistant|>',
31
+ '<|im_start|>assistant',
32
+ '<|start_header_id|>assistant<|end_header_id|>',
33
+ ];
34
+ let stripped = false;
35
+ for (const marker of specialMarkers) {
36
+ const idx = out.lastIndexOf(marker);
37
+ if (idx !== -1) {
38
+ out = out.slice(idx + marker.length);
39
+ stripped = true;
40
+ break;
41
+ }
42
+ }
43
+ // Fallback: plain "assistant\n" (LFM2.5 + other ChatML-decoded models)
44
+ if (!stripped) {
45
+ const lastAssistant = out.lastIndexOf('\nassistant\n');
46
+ if (lastAssistant !== -1) {
47
+ out = out.slice(lastAssistant + '\nassistant\n'.length);
48
+ }
49
+ else if (out.startsWith('assistant\n')) {
50
+ out = out.slice('assistant\n'.length);
51
+ }
52
+ }
53
+ // Interactive-mode reverse-prompt artifact
54
+ const eofIdx = out.indexOf('> EOF by user');
55
+ if (eofIdx !== -1)
56
+ out = out.slice(0, eofIdx);
57
+ // End-of-turn tokens (defense in depth)
58
+ out = out
59
+ .replace(/<\|im_end\|>\s*$/, '')
60
+ .replace(/<\|endoftext\|>\s*$/, '')
61
+ .replace(/<\|eot_id\|>\s*$/, '')
62
+ .replace(/<\|end\|>\s*$/, '');
63
+ return out.trim();
64
+ }
18
65
  // ─── Binary detection ─────────────────────────────────────────
19
66
  const LLAMA_CLI_CANDIDATES = [
20
67
  // llama-completion: pure completion mode, clean stdout, no banner
@@ -177,13 +224,8 @@ function runLlamaCli(binary, modelPath, job, opts) {
177
224
  return;
178
225
  }
179
226
  // llama-completion echoes the prompt with chat template then the response.
180
- // Strip everything up to and including <|assistant|> token.
181
- let resultText = stdout.trim();
182
- const assistantMarker = '<|assistant|>';
183
- const assistantIdx = resultText.lastIndexOf(assistantMarker);
184
- if (assistantIdx !== -1) {
185
- resultText = resultText.slice(assistantIdx + assistantMarker.length).trim();
186
- }
227
+ // cleanLlamaOutput handles multiple template styles + interactive-mode artifacts.
228
+ let resultText = cleanLlamaOutput(stdout);
187
229
  // Parse tok/s from stderr timing line
188
230
  let tokensPerSecond = 0;
189
231
  const tokensGenerated = resultText.split(/\s+/).filter(Boolean).length;
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gns-foundation/hive-worker",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Turn your device into a GEIANT Hive compute node. Earn GNS tokens.",
5
5
  "bin": {
6
6
  "hive-worker": "./dist/cli.js"
package/src/executor.ts CHANGED
@@ -18,6 +18,57 @@ import os from 'os';
18
18
  import path from 'path';
19
19
  import type { HiveJob, JobResult, RpcPeer } from './jobs.js';
20
20
 
21
+ /**
22
+ * Strip llama-cli chat-template artifacts from raw stdout.
23
+ * Handles multiple template styles:
24
+ * - Special-token (TinyLlama, Phi-3): <|assistant|>...<|im_end|>
25
+ * - Plain-text decoded (LFM2.5): \nassistant\n...
26
+ * - Llama-3 header format: <|start_header_id|>assistant<|end_header_id|>
27
+ * Plus the trailing "> EOF by user" from interactive-mode stdin closure.
28
+ */
29
+ export function cleanLlamaOutput(raw: string): string {
30
+ let out = raw.trim();
31
+
32
+ // Try special-token markers first (most specific)
33
+ const specialMarkers = [
34
+ '<|assistant|>',
35
+ '<|im_start|>assistant',
36
+ '<|start_header_id|>assistant<|end_header_id|>',
37
+ ];
38
+ let stripped = false;
39
+ for (const marker of specialMarkers) {
40
+ const idx = out.lastIndexOf(marker);
41
+ if (idx !== -1) {
42
+ out = out.slice(idx + marker.length);
43
+ stripped = true;
44
+ break;
45
+ }
46
+ }
47
+
48
+ // Fallback: plain "assistant\n" (LFM2.5 + other ChatML-decoded models)
49
+ if (!stripped) {
50
+ const lastAssistant = out.lastIndexOf('\nassistant\n');
51
+ if (lastAssistant !== -1) {
52
+ out = out.slice(lastAssistant + '\nassistant\n'.length);
53
+ } else if (out.startsWith('assistant\n')) {
54
+ out = out.slice('assistant\n'.length);
55
+ }
56
+ }
57
+
58
+ // Interactive-mode reverse-prompt artifact
59
+ const eofIdx = out.indexOf('> EOF by user');
60
+ if (eofIdx !== -1) out = out.slice(0, eofIdx);
61
+
62
+ // End-of-turn tokens (defense in depth)
63
+ out = out
64
+ .replace(/<\|im_end\|>\s*$/, '')
65
+ .replace(/<\|endoftext\|>\s*$/, '')
66
+ .replace(/<\|eot_id\|>\s*$/, '')
67
+ .replace(/<\|end\|>\s*$/, '');
68
+
69
+ return out.trim();
70
+ }
71
+
21
72
  // ─── Binary detection ─────────────────────────────────────────
22
73
 
23
74
  const LLAMA_CLI_CANDIDATES = [
@@ -240,13 +291,8 @@ function runLlamaCli(
240
291
  }
241
292
 
242
293
  // llama-completion echoes the prompt with chat template then the response.
243
- // Strip everything up to and including <|assistant|> token.
244
- let resultText = stdout.trim();
245
- const assistantMarker = '<|assistant|>';
246
- const assistantIdx = resultText.lastIndexOf(assistantMarker);
247
- if (assistantIdx !== -1) {
248
- resultText = resultText.slice(assistantIdx + assistantMarker.length).trim();
249
- }
294
+ // cleanLlamaOutput handles multiple template styles + interactive-mode artifacts.
295
+ let resultText = cleanLlamaOutput(stdout);
250
296
 
251
297
  // Parse tok/s from stderr timing line
252
298
  let tokensPerSecond = 0;