sneakoscope 4.0.4 → 4.0.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.
Files changed (41) hide show
  1. package/README.md +9 -9
  2. package/crates/sks-core/Cargo.lock +1 -1
  3. package/crates/sks-core/Cargo.toml +1 -1
  4. package/crates/sks-core/src/main.rs +1 -1
  5. package/dist/bin/sks.js +1 -1
  6. package/dist/core/codex-app/glm-profile-schema.js +5 -1
  7. package/dist/core/commands/glm-command.js +51 -6
  8. package/dist/core/commands/mad-sks-command.js +65 -9
  9. package/dist/core/fsx.js +1 -1
  10. package/dist/core/perf/lru-cache.js +33 -0
  11. package/dist/core/providers/glm/glm-52-profile.js +14 -7
  12. package/dist/core/providers/glm/glm-52-request.js +43 -12
  13. package/dist/core/providers/glm/glm-52-response-guard.js +1 -2
  14. package/dist/core/providers/glm/glm-52-settings.js +50 -8
  15. package/dist/core/providers/glm/glm-bench.js +127 -0
  16. package/dist/core/providers/glm/glm-context-budget.js +15 -0
  17. package/dist/core/providers/glm/glm-context-cache.js +9 -0
  18. package/dist/core/providers/glm/glm-direct-run.js +140 -0
  19. package/dist/core/providers/glm/glm-interactive-launch.js +5 -0
  20. package/dist/core/providers/glm/glm-latency-trace.js +40 -0
  21. package/dist/core/providers/glm/glm-loop-guard.js +31 -0
  22. package/dist/core/providers/glm/glm-mad-launch.js +18 -3
  23. package/dist/core/providers/glm/glm-mad-mode.js +48 -20
  24. package/dist/core/providers/glm/glm-model-meta-cache.js +19 -0
  25. package/dist/core/providers/glm/glm-patch-apply.js +58 -0
  26. package/dist/core/providers/glm/glm-patch-parser.js +19 -0
  27. package/dist/core/providers/glm/glm-profile-resolver.js +104 -0
  28. package/dist/core/providers/glm/glm-readiness.js +5 -0
  29. package/dist/core/providers/glm/glm-reasoning-policy.js +15 -0
  30. package/dist/core/providers/glm/glm-request-cache.js +64 -0
  31. package/dist/core/providers/glm/glm-run-controller.js +66 -0
  32. package/dist/core/providers/glm/glm-run-state.js +11 -0
  33. package/dist/core/providers/glm/glm-run-timeout.js +31 -0
  34. package/dist/core/providers/glm/glm-speed-context.js +82 -0
  35. package/dist/core/providers/glm/glm-speed-gate.js +40 -0
  36. package/dist/core/providers/glm/glm-speed-output-parser.js +40 -0
  37. package/dist/core/providers/glm/glm-tool-schema-cache.js +19 -0
  38. package/dist/core/providers/openrouter/openrouter-client.js +21 -1
  39. package/dist/core/providers/openrouter/openrouter-stream.js +94 -0
  40. package/dist/core/version.js +1 -1
  41. package/package.json +1 -1
@@ -0,0 +1,94 @@
1
+ import { redactOpenRouterString } from '../../security/redact-secrets.js';
2
+ import { OPENROUTER_CHAT_COMPLETIONS_URL } from './openrouter-types.js';
3
+ import { normalizeOpenRouterError } from './openrouter-error.js';
4
+ import { encodeGlmRequestWithCache } from '../glm/glm-request-cache.js';
5
+ export async function sendOpenRouterChatCompletionStream(input) {
6
+ const started = Date.now();
7
+ const controller = input.timeoutMs ? new AbortController() : null;
8
+ const timeout = controller ? setTimeout(() => controller.abort(), Math.max(1, input.timeoutMs || 0)) : null;
9
+ try {
10
+ const request = { ...input.request, stream: true };
11
+ const encoded = encodeGlmRequestWithCache(request);
12
+ const signal = input.signal || controller?.signal;
13
+ const response = await (input.fetchImpl || fetch)(OPENROUTER_CHAT_COMPLETIONS_URL, {
14
+ method: 'POST',
15
+ ...(signal ? { signal } : {}),
16
+ headers: {
17
+ Authorization: `Bearer ${input.apiKey}`,
18
+ 'Content-Type': 'application/json',
19
+ 'X-OpenRouter-Title': 'Sneakoscope-Codex'
20
+ },
21
+ body: encoded.body
22
+ });
23
+ if (timeout)
24
+ clearTimeout(timeout);
25
+ const text = await response.text();
26
+ if (!response.ok)
27
+ return { ok: false, error: normalizeOpenRouterError(response.status, text) };
28
+ return { ok: true, value: parseOpenRouterStreamText(text, started) };
29
+ }
30
+ catch (err) {
31
+ if (timeout)
32
+ clearTimeout(timeout);
33
+ if (err instanceof Error && err.name === 'AbortError') {
34
+ return {
35
+ ok: false,
36
+ error: {
37
+ code: 'glm_request_timeout',
38
+ message: `OpenRouter stream aborted after ${input.timeoutMs || 'external'}ms.`,
39
+ severity: 'failed'
40
+ }
41
+ };
42
+ }
43
+ return {
44
+ ok: false,
45
+ error: {
46
+ code: 'glm_openrouter_stream_failed',
47
+ message: redactOpenRouterString(err instanceof Error ? err.message : String(err)),
48
+ severity: 'failed'
49
+ }
50
+ };
51
+ }
52
+ }
53
+ export function parseOpenRouterStreamText(text, startedAtMs = Date.now()) {
54
+ const events = [];
55
+ let content = '';
56
+ let model;
57
+ let usage;
58
+ let ttft = null;
59
+ for (const line of text.split(/\r?\n/)) {
60
+ if (!line.startsWith('data:'))
61
+ continue;
62
+ const data = line.slice('data:'.length).trim();
63
+ if (!data || data === '[DONE]')
64
+ continue;
65
+ try {
66
+ const raw = JSON.parse(data);
67
+ const delta = raw?.choices?.[0]?.delta?.content;
68
+ if (typeof raw?.model === 'string')
69
+ model = raw.model;
70
+ if (raw?.usage)
71
+ usage = raw.usage;
72
+ if (typeof delta === 'string' && delta) {
73
+ if (ttft === null)
74
+ ttft = Math.max(0, Date.now() - startedAtMs);
75
+ content += delta;
76
+ events.push({ type: 'chunk', content_delta: delta, ...(model ? { model } : {}), raw });
77
+ }
78
+ }
79
+ catch {
80
+ events.push({ type: 'error', raw: data });
81
+ }
82
+ }
83
+ events.push({ type: 'done', ...(model ? { model } : {}), ...(usage ? { usage } : {}) });
84
+ return {
85
+ content,
86
+ ...(model ? { model } : {}),
87
+ ...(usage ? { usage } : {}),
88
+ ttft_ms: ttft,
89
+ total_ms: Math.max(0, Date.now() - startedAtMs),
90
+ chunk_count: events.filter((event) => event.type === 'chunk').length,
91
+ events
92
+ };
93
+ }
94
+ //# sourceMappingURL=openrouter-stream.js.map
@@ -1,2 +1,2 @@
1
- export const PACKAGE_VERSION = '4.0.4';
1
+ export const PACKAGE_VERSION = '4.0.6';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sneakoscope",
3
3
  "displayName": "ㅅㅋㅅ",
4
- "version": "4.0.4",
4
+ "version": "4.0.6",
5
5
  "description": "Sneakoscope Codex: fast proof-first Codex trust layer with image-based Voxel TriWiki.",
6
6
  "type": "module",
7
7
  "homepage": "https://github.com/mandarange/Sneakoscope-Codex#readme",