@atomic-chat/core 0.21.0 → 0.21.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.
- package/dist/backend/advisor/advisor.js +11 -2
- package/dist/backend/advisor/advisor.js.map +1 -1
- package/dist/backend/install/cuda-guard.d.ts +62 -0
- package/dist/backend/install/cuda-guard.js +80 -0
- package/dist/backend/install/cuda-guard.js.map +1 -0
- package/dist/backend/install/cuda-runtime-source.d.ts +76 -0
- package/dist/backend/install/cuda-runtime-source.js +294 -0
- package/dist/backend/install/cuda-runtime-source.js.map +1 -0
- package/dist/backend/install/index.d.ts +3 -0
- package/dist/backend/install/index.js +3 -0
- package/dist/backend/install/index.js.map +1 -1
- package/dist/backend/install/runtime-backend.d.ts +30 -3
- package/dist/backend/install/runtime-backend.js +106 -28
- package/dist/backend/install/runtime-backend.js.map +1 -1
- package/dist/backend/install/service.d.ts +42 -24
- package/dist/backend/install/service.js +176 -31
- package/dist/backend/install/service.js.map +1 -1
- package/dist/backend/install/windows-launch-check.d.ts +72 -0
- package/dist/backend/install/windows-launch-check.js +173 -0
- package/dist/backend/install/windows-launch-check.js.map +1 -0
- package/dist/backend/installed/installed.d.ts +13 -0
- package/dist/backend/installed/installed.js +32 -0
- package/dist/backend/installed/installed.js.map +1 -1
- package/dist/backend/select/bad-backends.d.ts +68 -0
- package/dist/backend/select/bad-backends.js +136 -0
- package/dist/backend/select/bad-backends.js.map +1 -0
- package/dist/backend/select/features.d.ts +18 -1
- package/dist/backend/select/features.js +29 -1
- package/dist/backend/select/features.js.map +1 -1
- package/dist/backend/select/index.d.ts +1 -0
- package/dist/backend/select/index.js +1 -0
- package/dist/backend/select/index.js.map +1 -1
- package/dist/backend/turboquant.d.ts +8 -0
- package/dist/backend/turboquant.js +37 -9
- package/dist/backend/turboquant.js.map +1 -1
- package/dist/cli/main.d.ts +1 -1
- package/dist/contracts/diagnostics.d.ts +21 -0
- package/dist/contracts/diagnostics.js +71 -0
- package/dist/contracts/diagnostics.js.map +1 -0
- package/dist/contracts/errors.d.ts +18 -76
- package/dist/contracts/errors.js +145 -2
- package/dist/contracts/errors.js.map +1 -1
- package/dist/contracts/hardware.d.ts +8 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/load-diag.d.ts +34 -0
- package/dist/contracts/load-diag.js +48 -0
- package/dist/contracts/load-diag.js.map +1 -0
- package/dist/core/atomic-core.d.ts +1 -1
- package/dist/core/atomic-core.js +2 -1
- package/dist/core/atomic-core.js.map +1 -1
- package/dist/core/create.js +25 -15
- package/dist/core/create.js.map +1 -1
- package/dist/core/managed-environment.d.ts +2 -0
- package/dist/core/managed-environment.js +2 -0
- package/dist/core/managed-environment.js.map +1 -1
- package/dist/decision/service.d.ts +2 -23
- package/dist/decision/service.js +27 -0
- package/dist/decision/service.js.map +1 -1
- package/dist/decision/wiring.d.ts +2 -0
- package/dist/decision/wiring.js +1 -6
- package/dist/decision/wiring.js.map +1 -1
- package/dist/diffusion/errors.js +3 -3
- package/dist/diffusion/errors.js.map +1 -1
- package/dist/diffusion/jobs.js +1 -0
- package/dist/diffusion/jobs.js.map +1 -1
- package/dist/diffusion/remote-job.js +1 -0
- package/dist/diffusion/remote-job.js.map +1 -1
- package/dist/diffusion/service.d.ts +2 -6
- package/dist/diffusion/service.js +1 -0
- package/dist/diffusion/service.js.map +1 -1
- package/dist/diffusion/session.d.ts +2 -5
- package/dist/diffusion/session.js +1 -0
- package/dist/diffusion/session.js.map +1 -1
- package/dist/diffusion/wiring.d.ts +2 -0
- package/dist/diffusion/wiring.js +1 -5
- package/dist/diffusion/wiring.js.map +1 -1
- package/dist/downloads/archive.js +8 -3
- package/dist/downloads/archive.js.map +1 -1
- package/dist/downloads/disk.d.ts +18 -0
- package/dist/downloads/disk.js +32 -1
- package/dist/downloads/disk.js.map +1 -1
- package/dist/downloads/downloader.d.ts +2 -18
- package/dist/downloads/downloader.js +208 -97
- package/dist/downloads/downloader.js.map +1 -1
- package/dist/downloads/fs-retry.d.ts +27 -0
- package/dist/downloads/fs-retry.js +40 -0
- package/dist/downloads/fs-retry.js.map +1 -0
- package/dist/downloads/index.d.ts +1 -0
- package/dist/downloads/index.js +1 -0
- package/dist/downloads/index.js.map +1 -1
- package/dist/downloads/protocol.d.ts +6 -2
- package/dist/downloads/protocol.js +27 -5
- package/dist/downloads/protocol.js.map +1 -1
- package/dist/embedding/service.d.ts +2 -18
- package/dist/embedding/service.js +21 -1
- package/dist/embedding/service.js.map +1 -1
- package/dist/embedding/wiring.d.ts +2 -0
- package/dist/embedding/wiring.js +1 -6
- package/dist/embedding/wiring.js.map +1 -1
- package/dist/hardware/index.d.ts +1 -0
- package/dist/hardware/index.js +1 -0
- package/dist/hardware/index.js.map +1 -1
- package/dist/hardware/probe-common.d.ts +9 -1
- package/dist/hardware/probe-common.js.map +1 -1
- package/dist/hardware/probe-windows.d.ts +10 -2
- package/dist/hardware/probe-windows.js +65 -10
- package/dist/hardware/probe-windows.js.map +1 -1
- package/dist/hardware/probe.js +1 -1
- package/dist/hardware/probe.js.map +1 -1
- package/dist/hardware/service.d.ts +11 -0
- package/dist/hardware/service.js +31 -4
- package/dist/hardware/service.js.map +1 -1
- package/dist/hardware/windows-registry.d.ts +80 -0
- package/dist/hardware/windows-registry.js +197 -0
- package/dist/hardware/windows-registry.js.map +1 -0
- package/dist/lock/instance-lock.js +7 -3
- package/dist/lock/instance-lock.js.map +1 -1
- package/dist/remote-access/manager.d.ts +2 -0
- package/dist/remote-access/manager.js +18 -2
- package/dist/remote-access/manager.js.map +1 -1
- package/dist/runtime/environment/service.d.ts +2 -14
- package/dist/runtime/environment/service.js +10 -0
- package/dist/runtime/environment/service.js.map +1 -1
- package/dist/runtime/environment/wiring.d.ts +2 -23
- package/dist/runtime/environment/wiring.js +1 -0
- package/dist/runtime/environment/wiring.js.map +1 -1
- package/dist/runtime/llamacpp/args.d.ts +11 -0
- package/dist/runtime/llamacpp/args.js +28 -3
- package/dist/runtime/llamacpp/args.js.map +1 -1
- package/dist/runtime/llamacpp/devices.d.ts +11 -0
- package/dist/runtime/llamacpp/devices.js +22 -0
- package/dist/runtime/llamacpp/devices.js.map +1 -1
- package/dist/runtime/llamacpp/errors.d.ts +34 -4
- package/dist/runtime/llamacpp/errors.js +105 -22
- package/dist/runtime/llamacpp/errors.js.map +1 -1
- package/dist/runtime/llamacpp/index.d.ts +1 -0
- package/dist/runtime/llamacpp/index.js +1 -0
- package/dist/runtime/llamacpp/index.js.map +1 -1
- package/dist/runtime/llamacpp/load-failure.d.ts +52 -0
- package/dist/runtime/llamacpp/load-failure.js +105 -0
- package/dist/runtime/llamacpp/load-failure.js.map +1 -0
- package/dist/runtime/llamacpp/load-plan.d.ts +5 -0
- package/dist/runtime/llamacpp/load-plan.js +34 -4
- package/dist/runtime/llamacpp/load-plan.js.map +1 -1
- package/dist/runtime/llamacpp/runtime.d.ts +24 -1
- package/dist/runtime/llamacpp/runtime.js +116 -27
- package/dist/runtime/llamacpp/runtime.js.map +1 -1
- package/dist/runtime/shared/env.js +13 -15
- package/dist/runtime/shared/env.js.map +1 -1
- package/dist/server/public/errors.d.ts +2 -0
- package/dist/server/public/errors.js +6 -2
- package/dist/server/public/errors.js.map +1 -1
- package/dist/server/public/forward.js +22 -18
- package/dist/server/public/forward.js.map +1 -1
- package/dist/settings/store.js +1 -1
- package/dist/settings/store.js.map +1 -1
- package/dist/telemetry/diagnostics.d.ts +14 -0
- package/dist/telemetry/diagnostics.js +289 -0
- package/dist/telemetry/diagnostics.js.map +1 -0
- package/dist/telemetry/envelope.d.ts +1 -1
- package/dist/telemetry/envelope.js +57 -28
- package/dist/telemetry/envelope.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -0
- package/dist/telemetry/index.js +1 -0
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/policy.d.ts +1 -1
- package/dist/telemetry/policy.js +45 -2
- package/dist/telemetry/policy.js.map +1 -1
- package/dist/telemetry/reporter.d.ts +1 -0
- package/dist/telemetry/reporter.js +0 -0
- package/dist/telemetry/reporter.js.map +1 -1
- package/dist/telemetry/reports.d.ts +2 -7
- package/dist/telemetry/reports.js +34 -29
- package/dist/telemetry/reports.js.map +1 -1
- package/dist/telemetry/stack.d.ts +1 -1
- package/dist/telemetry/stack.js +8 -1
- package/dist/telemetry/stack.js.map +1 -1
- package/dist/telemetry/subscribe.d.ts +1 -1
- package/dist/telemetry/subscribe.js +7 -5
- package/dist/telemetry/subscribe.js.map +1 -1
- package/dist/telemetry/types.d.ts +3 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { DIAGNOSTIC_VERSION, FAILURE_CATEGORIES, FAILURE_COMPONENTS, FAILURE_OPERATIONS, FAILURE_STAGES, FAILURE_REASONS, NATIVE_FAILURES, } from '../contracts/index.js';
|
|
2
|
+
import { errorCodeOf, isCancellation } from './policy.js';
|
|
3
|
+
import { parseStack } from './stack.js';
|
|
4
|
+
const SIGNALS = new Set([
|
|
5
|
+
'SIGABRT',
|
|
6
|
+
'SIGALRM',
|
|
7
|
+
'SIGBUS',
|
|
8
|
+
'SIGFPE',
|
|
9
|
+
'SIGHUP',
|
|
10
|
+
'SIGILL',
|
|
11
|
+
'SIGINT',
|
|
12
|
+
'SIGKILL',
|
|
13
|
+
'SIGPIPE',
|
|
14
|
+
'SIGQUIT',
|
|
15
|
+
'SIGSEGV',
|
|
16
|
+
'SIGSYS',
|
|
17
|
+
'SIGTERM',
|
|
18
|
+
'SIGTRAP',
|
|
19
|
+
'SIGUSR1',
|
|
20
|
+
'SIGUSR2',
|
|
21
|
+
'SIGXCPU',
|
|
22
|
+
'SIGXFSZ',
|
|
23
|
+
'SIGBREAK',
|
|
24
|
+
]);
|
|
25
|
+
const EXPECTED = {
|
|
26
|
+
INVALID_ARGUMENT: 'invalid_request',
|
|
27
|
+
INVALID_REQUEST: 'invalid_request',
|
|
28
|
+
INVALID_DIMENSIONS: 'invalid_request',
|
|
29
|
+
UNAUTHORIZED: 'authentication',
|
|
30
|
+
AUTH_REQUIRED: 'authentication',
|
|
31
|
+
FORBIDDEN_HOST: 'authentication',
|
|
32
|
+
MODEL_NOT_FOUND: 'not_found',
|
|
33
|
+
MODEL_NOT_LOADED: 'not_found',
|
|
34
|
+
NO_MODEL_LOADED: 'not_found',
|
|
35
|
+
PROVIDER_NOT_FOUND: 'not_found',
|
|
36
|
+
MODEL_MISSING: 'not_found',
|
|
37
|
+
SIDE_FILE_MISSING: 'not_found',
|
|
38
|
+
CORE_ALREADY_RUNNING: 'busy',
|
|
39
|
+
CORE_NOT_RUNNING: 'not_configured',
|
|
40
|
+
REMOTE_ACCESS_SERVER_STOPPED: 'not_configured',
|
|
41
|
+
REMOTE_ACCESS_OPERATION_IN_PROGRESS: 'busy',
|
|
42
|
+
GPU_BUSY: 'busy',
|
|
43
|
+
JOB_BUSY: 'busy',
|
|
44
|
+
QUEUE_FULL: 'busy',
|
|
45
|
+
JOB_NOT_FOUND: 'not_found',
|
|
46
|
+
BACKEND_IN_USE: 'busy',
|
|
47
|
+
ENGINE_INSTALL_IN_PROGRESS: 'busy',
|
|
48
|
+
ENGINE_MISSING: 'not_configured',
|
|
49
|
+
ENGINE_UPDATE_REQUIRED: 'unsupported',
|
|
50
|
+
NOT_CONFIGURED: 'not_configured',
|
|
51
|
+
DECISION_NOT_CONFIGURED: 'not_configured',
|
|
52
|
+
EMBEDDING_NOT_CONFIGURED: 'not_configured',
|
|
53
|
+
DECISION_ENGINE_UNSUPPORTED: 'unsupported',
|
|
54
|
+
EMBEDDING_ENGINE_UNSUPPORTED: 'unsupported',
|
|
55
|
+
UNSUPPORTED_BACKEND: 'unsupported',
|
|
56
|
+
UNSUPPORTED_WORKFLOW: 'unsupported',
|
|
57
|
+
MODEL_INCOMPATIBLE: 'unsupported',
|
|
58
|
+
MODEL_ENGINE_INCOMPATIBLE: 'unsupported',
|
|
59
|
+
MODEL_FORMAT_LEGACY: 'unsupported',
|
|
60
|
+
};
|
|
61
|
+
const OPERATIONAL = {
|
|
62
|
+
OUT_OF_MEMORY: 'out_of_memory',
|
|
63
|
+
ENOMEM: 'out_of_memory',
|
|
64
|
+
ENOSPC: 'disk_full',
|
|
65
|
+
DISK_FULL: 'disk_full',
|
|
66
|
+
EACCES: 'disk_permission',
|
|
67
|
+
EPERM: 'disk_permission',
|
|
68
|
+
EBUSY: 'disk_file_locked',
|
|
69
|
+
ENAMETOOLONG: 'disk_path_too_long',
|
|
70
|
+
EIO: 'disk_io',
|
|
71
|
+
ENODEV: 'disk_device_lost',
|
|
72
|
+
ECONNREFUSED: 'network',
|
|
73
|
+
ECONNRESET: 'network',
|
|
74
|
+
ENETUNREACH: 'network',
|
|
75
|
+
ENOTFOUND: 'network',
|
|
76
|
+
EAI_AGAIN: 'network',
|
|
77
|
+
ETIMEDOUT: 'timeout',
|
|
78
|
+
MODEL_LOAD_TIMED_OUT: 'timeout',
|
|
79
|
+
SERVER_START_TIMED_OUT: 'timeout',
|
|
80
|
+
UPSTREAM_ERROR: 'upstream',
|
|
81
|
+
MODEL_FILE_NOT_FOUND: 'not_found',
|
|
82
|
+
MODEL_FILE_CORRUPT: 'integrity',
|
|
83
|
+
MODEL_SHARDS_INCOMPLETE: 'integrity',
|
|
84
|
+
MODEL_ARCH_NOT_SUPPORTED: 'unsupported',
|
|
85
|
+
MULTIMODAL_PROJECTOR_LOAD_FAILED: 'unsupported',
|
|
86
|
+
BINARY_NOT_FOUND: 'not_found',
|
|
87
|
+
OS_VERSION_UNSUPPORTED: 'unsupported',
|
|
88
|
+
CPU_NO_AVX: 'unsupported',
|
|
89
|
+
CPU_INSTRUCTION_UNSUPPORTED: 'unsupported',
|
|
90
|
+
GPU_BACKEND_INCOMPATIBLE: 'unsupported',
|
|
91
|
+
ENGINE_BINARY_BROKEN: 'integrity',
|
|
92
|
+
EFBIG: 'disk_fs_limit',
|
|
93
|
+
REMOTE_RATE_LIMITED: 'upstream',
|
|
94
|
+
REMOTE_QUOTA: 'upstream',
|
|
95
|
+
REMOTE_UNAVAILABLE: 'upstream',
|
|
96
|
+
REMOTE_TIMEOUT: 'timeout',
|
|
97
|
+
};
|
|
98
|
+
/** Bounded, identity-aware traversal; never enumerates arbitrary thrown objects. */
|
|
99
|
+
export function errorChain(error) {
|
|
100
|
+
const chain = [];
|
|
101
|
+
const seen = new Set();
|
|
102
|
+
while (error instanceof Error && !seen.has(error) && chain.length < 5) {
|
|
103
|
+
seen.add(error);
|
|
104
|
+
chain.push(error);
|
|
105
|
+
error = error.cause;
|
|
106
|
+
}
|
|
107
|
+
return chain;
|
|
108
|
+
}
|
|
109
|
+
/** Runtime validation also protects library callers compiled without TypeScript. */
|
|
110
|
+
export function classifyFailure(error, context) {
|
|
111
|
+
const own = errorChain(error).find((entry) => typeof entry.diagnostic === 'object');
|
|
112
|
+
const input = { ...context, ...own?.diagnostic };
|
|
113
|
+
const diagnostic = {
|
|
114
|
+
component: FAILURE_COMPONENTS.includes(input.component) ? input.component : 'core',
|
|
115
|
+
operation: FAILURE_OPERATIONS.includes(input.operation) ? input.operation : 'request',
|
|
116
|
+
};
|
|
117
|
+
if (input.stage && FAILURE_STAGES.includes(input.stage))
|
|
118
|
+
diagnostic.stage = input.stage;
|
|
119
|
+
if (input.nativeFailure && NATIVE_FAILURES.includes(input.nativeFailure))
|
|
120
|
+
diagnostic.nativeFailure = input.nativeFailure;
|
|
121
|
+
if (input.exitCode === null || (typeof input.exitCode === 'number' && Number.isSafeInteger(input.exitCode)))
|
|
122
|
+
diagnostic.exitCode = input.exitCode;
|
|
123
|
+
if (typeof input.signal === 'number' && Number.isSafeInteger(input.signal))
|
|
124
|
+
diagnostic.signal = input.signal;
|
|
125
|
+
else if (typeof input.signal === 'string' && SIGNALS.has(input.signal))
|
|
126
|
+
diagnostic.signal = input.signal;
|
|
127
|
+
// version_backend may contain a local, user-named backend directory after the version.
|
|
128
|
+
if (typeof input.engineVersion === 'string') {
|
|
129
|
+
const version = /^(b\d{1,10}(?:-\d+(?:\.\d+){1,3})?|v?\d+(?:\.\d+){1,3})(?:\/|$)/.exec(input.engineVersion)?.[1];
|
|
130
|
+
if (version && version.length <= 48)
|
|
131
|
+
diagnostic.engineVersion = version;
|
|
132
|
+
}
|
|
133
|
+
let category = 'unknown';
|
|
134
|
+
let reason = 'unknown';
|
|
135
|
+
const code = errorCodeOf(error);
|
|
136
|
+
if (isCancellation(error) || errorChain(error).some(isCancellation)) {
|
|
137
|
+
category = 'expected';
|
|
138
|
+
reason = 'cancelled';
|
|
139
|
+
}
|
|
140
|
+
else if (code && EXPECTED[code]) {
|
|
141
|
+
category = 'expected';
|
|
142
|
+
reason = EXPECTED[code];
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const chain = errorChain(error);
|
|
146
|
+
const cause = [...chain]
|
|
147
|
+
.reverse()
|
|
148
|
+
.map(errorCodeOf)
|
|
149
|
+
.find((value) => value && OPERATIONAL[value]);
|
|
150
|
+
const operational = OPERATIONAL[code ?? ''] ?? (cause ? OPERATIONAL[cause] : undefined);
|
|
151
|
+
if (operational) {
|
|
152
|
+
category = 'operational';
|
|
153
|
+
reason = operational;
|
|
154
|
+
}
|
|
155
|
+
else if (code === 'INTERNAL_ERROR' ||
|
|
156
|
+
code === 'INTERNAL' ||
|
|
157
|
+
error instanceof TypeError ||
|
|
158
|
+
error instanceof ReferenceError) {
|
|
159
|
+
category = 'defect';
|
|
160
|
+
reason = 'internal';
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (!diagnostic.nativeFailure) {
|
|
164
|
+
const signal = diagnostic.signal;
|
|
165
|
+
const exit = diagnostic.exitCode === undefined || diagnostic.exitCode === null ? null : diagnostic.exitCode >>> 0;
|
|
166
|
+
if (signal === 'SIGSEGV' || signal === 11)
|
|
167
|
+
diagnostic.nativeFailure = 'sigsegv';
|
|
168
|
+
else if (signal === 'SIGABRT' || signal === 6)
|
|
169
|
+
diagnostic.nativeFailure = 'sigabrt';
|
|
170
|
+
else if (signal === 'SIGKILL' || signal === 9) {
|
|
171
|
+
diagnostic.nativeFailure = 'sigkill';
|
|
172
|
+
category = 'operational';
|
|
173
|
+
}
|
|
174
|
+
else if (exit === 0xc0000005)
|
|
175
|
+
diagnostic.nativeFailure = 'access_violation';
|
|
176
|
+
else if (exit === 0xc00000fd)
|
|
177
|
+
diagnostic.nativeFailure = 'stack_overflow';
|
|
178
|
+
else if (exit === 0xc0000409)
|
|
179
|
+
diagnostic.nativeFailure = 'native_crash';
|
|
180
|
+
}
|
|
181
|
+
if (reason !== 'cancelled') {
|
|
182
|
+
if (input.category && FAILURE_CATEGORIES.includes(input.category))
|
|
183
|
+
category = input.category;
|
|
184
|
+
if (input.reason && FAILURE_REASONS.includes(input.reason))
|
|
185
|
+
reason = input.reason;
|
|
186
|
+
}
|
|
187
|
+
return { ...diagnostic, category, reason };
|
|
188
|
+
}
|
|
189
|
+
/** Finite facts are useful without sending raw messages, arguments, paths or engine output. */
|
|
190
|
+
export function diagnosticTags(error, diagnostic) {
|
|
191
|
+
const causeCode = [...errorChain(error)].reverse().map(errorCodeOf).find(Boolean);
|
|
192
|
+
return {
|
|
193
|
+
diagnostic_version: DIAGNOSTIC_VERSION,
|
|
194
|
+
component: diagnostic.component,
|
|
195
|
+
operation: diagnostic.operation,
|
|
196
|
+
failure_category: diagnostic.category,
|
|
197
|
+
failure_reason: diagnostic.reason,
|
|
198
|
+
failure_stage: diagnostic.stage,
|
|
199
|
+
cause_code: causeCode,
|
|
200
|
+
native_failure: diagnostic.nativeFailure,
|
|
201
|
+
exit_code: diagnostic.exitCode,
|
|
202
|
+
signal: diagnostic.signal,
|
|
203
|
+
engine_version: diagnostic.engineVersion,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/** Unknown causes keep their source location; messages and user-selected models never form a key. */
|
|
207
|
+
export function diagnosticFingerprint(error, diagnostic, provider) {
|
|
208
|
+
const chain = errorChain(error);
|
|
209
|
+
const leaf = chain.at(-1);
|
|
210
|
+
const frame = parseStack(leaf?.stack, leaf?.message)
|
|
211
|
+
.filter((entry) => entry.in_app)
|
|
212
|
+
.at(-1);
|
|
213
|
+
const reason = diagnostic.reason ?? 'unknown';
|
|
214
|
+
const location = reason === 'unknown' || reason === 'internal'
|
|
215
|
+
? frame
|
|
216
|
+
? `${frame.filename}:${frame.lineno ?? 0}:${frame.colno ?? 0}`
|
|
217
|
+
: 'no-stack'
|
|
218
|
+
: reason;
|
|
219
|
+
return [
|
|
220
|
+
DIAGNOSTIC_VERSION,
|
|
221
|
+
diagnostic.component,
|
|
222
|
+
diagnostic.operation,
|
|
223
|
+
provider ?? '',
|
|
224
|
+
reason,
|
|
225
|
+
diagnostic.nativeFailure ?? '',
|
|
226
|
+
errorCodeOf(leaf) ?? errorCodeOf(error) ?? '',
|
|
227
|
+
location,
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
/** One injected observer per owner. Repeated propagation of an Error is reported only once. */
|
|
231
|
+
export function failureObserver(sink) {
|
|
232
|
+
return (error, context) => {
|
|
233
|
+
if (!sink)
|
|
234
|
+
return;
|
|
235
|
+
try {
|
|
236
|
+
const diagnostic = classifyFailure(error, context);
|
|
237
|
+
if (diagnostic.category === 'expected')
|
|
238
|
+
return;
|
|
239
|
+
sink.capture({
|
|
240
|
+
source: 'operation',
|
|
241
|
+
error,
|
|
242
|
+
diagnostic,
|
|
243
|
+
level: diagnostic.category === 'operational' ? 'warning' : 'error',
|
|
244
|
+
// Preserve the engine-report cooldown when an internal observer replaces an SSE subscriber.
|
|
245
|
+
throttle: { key: diagnosticFingerprint(error, diagnostic).join('\u0000'), windowMs: 5 * 60_000 },
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
/* Observability must never change the operation's result. */
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/** Legacy report producers acquire the same diagnostic vocabulary at the serialization boundary. */
|
|
254
|
+
export function reportDiagnostic(report) {
|
|
255
|
+
const contexts = {
|
|
256
|
+
operation: { component: 'core', operation: 'request' },
|
|
257
|
+
startup: { component: 'core', operation: 'startup' },
|
|
258
|
+
uncaught_exception: { component: 'core', operation: 'event' },
|
|
259
|
+
unhandled_rejection: { component: 'core', operation: 'event' },
|
|
260
|
+
event_listener: { component: 'core', operation: 'event' },
|
|
261
|
+
control_route: { component: 'http', operation: 'request' },
|
|
262
|
+
public_server: { component: 'http', operation: 'request' },
|
|
263
|
+
model_load: { component: 'runtime', operation: 'load' },
|
|
264
|
+
backend_crash: { component: 'runtime', operation: 'exit', reason: 'process_exit' },
|
|
265
|
+
inference: { component: 'runtime', operation: 'inference' },
|
|
266
|
+
diffusion_load: { component: 'diffusion', operation: 'load' },
|
|
267
|
+
diffusion_job: { component: 'diffusion', operation: 'job' },
|
|
268
|
+
audio_load: { component: 'audio', operation: 'load' },
|
|
269
|
+
audio_job: { component: 'audio', operation: 'job' },
|
|
270
|
+
};
|
|
271
|
+
const context = { ...(report.diagnostic ?? contexts[report.source]) };
|
|
272
|
+
if (!report.diagnostic && report.level === 'warning')
|
|
273
|
+
context.category = 'operational';
|
|
274
|
+
const crash = report.tags?.['crash_kind'];
|
|
275
|
+
if (typeof crash === 'string' && NATIVE_FAILURES.includes(crash))
|
|
276
|
+
context.nativeFailure = crash;
|
|
277
|
+
if (report.source === 'inference')
|
|
278
|
+
context.reason = report.tags?.['failure_kind'] === 'compute' ? 'compute' : 'upstream';
|
|
279
|
+
if (report.tags?.['oom_subtype'] || report.tags?.['failure_kind'] === 'oom')
|
|
280
|
+
context.reason = 'out_of_memory';
|
|
281
|
+
const code = report.tags?.['exit_code'];
|
|
282
|
+
if (typeof code === 'number')
|
|
283
|
+
context.exitCode = code;
|
|
284
|
+
const signal = report.tags?.['signal'];
|
|
285
|
+
if (typeof signal === 'number' || typeof signal === 'string')
|
|
286
|
+
context.signal = signal;
|
|
287
|
+
return classifyFailure(report.error, context);
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/telemetry/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,49 @@
|
|
|
1
|
+
import { diagnosticFingerprint, diagnosticTags, errorChain, reportDiagnostic } from './diagnostics.js';
|
|
1
2
|
import { errorCodeOf, sanitizeTags } from './policy.js';
|
|
2
|
-
import { headline, scrubText } from './scrub.js';
|
|
3
3
|
import { parseStack } from './stack.js';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
// Free-form model IDs, request routes and log fields are not diagnostic facts.
|
|
5
|
+
const REPORT_TAG_KEYS = new Set([
|
|
6
|
+
'source',
|
|
7
|
+
'provider',
|
|
8
|
+
'error_code',
|
|
9
|
+
'http_status',
|
|
10
|
+
'crash_kind',
|
|
11
|
+
'exit_code',
|
|
12
|
+
'signal',
|
|
13
|
+
'backend',
|
|
14
|
+
'oom_subtype',
|
|
15
|
+
'quant',
|
|
16
|
+
'context_length',
|
|
17
|
+
'gpu_layers',
|
|
18
|
+
'cache_type_k',
|
|
19
|
+
'is_embedding',
|
|
20
|
+
'failure_kind',
|
|
21
|
+
'family',
|
|
22
|
+
'engine',
|
|
23
|
+
]);
|
|
24
|
+
const EXCEPTION_TYPES = new Set([
|
|
25
|
+
'Error',
|
|
26
|
+
'TypeError',
|
|
27
|
+
'RangeError',
|
|
28
|
+
'SyntaxError',
|
|
29
|
+
'ReferenceError',
|
|
30
|
+
'URIError',
|
|
31
|
+
'EvalError',
|
|
32
|
+
'AggregateError',
|
|
33
|
+
'DOMException',
|
|
34
|
+
'AbortError',
|
|
35
|
+
'SystemError',
|
|
36
|
+
'AtomicCoreError',
|
|
37
|
+
]);
|
|
38
|
+
function describeThrown(error) {
|
|
6
39
|
if (error instanceof Error) {
|
|
7
40
|
const code = errorCodeOf(error);
|
|
8
41
|
// A coded core error reads best as its code: "OUT_OF_MEMORY: Out of memory".
|
|
9
|
-
const type = error.name === 'AtomicCoreError' && code ? code : error.name
|
|
10
|
-
return {
|
|
11
|
-
type,
|
|
12
|
-
value: headline(scrubText(error.message, scrub)) || type,
|
|
13
|
-
...(error.stack ? { stack: error.stack } : {}),
|
|
14
|
-
};
|
|
42
|
+
const type = error.name === 'AtomicCoreError' && code ? code : EXCEPTION_TYPES.has(error.name) ? error.name : 'Error';
|
|
43
|
+
return { type };
|
|
15
44
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// Never stringify an arbitrary object: it may hold a request body.
|
|
19
|
-
return { type: 'NonError', value: `A non-Error ${error === null ? 'null' : typeof error} was thrown` };
|
|
45
|
+
// Even a string may be a prompt or a request body. Never serialize thrown values.
|
|
46
|
+
return { type: 'NonError' };
|
|
20
47
|
}
|
|
21
48
|
/**
|
|
22
49
|
* The Sentry event for one report. Zero-PII by construction: no server name, no IP, no local
|
|
@@ -24,12 +51,12 @@ function describeThrown(error, scrub) {
|
|
|
24
51
|
*/
|
|
25
52
|
export function buildEvent(report, ctx) {
|
|
26
53
|
const thrown = report.error !== undefined
|
|
27
|
-
? describeThrown(report.error
|
|
54
|
+
? describeThrown(report.error)
|
|
28
55
|
: {
|
|
29
|
-
type: report.type
|
|
30
|
-
value: headline(scrubText(report.message ?? '', ctx.scrub)) || report.source,
|
|
56
|
+
type: report.type && /^[A-Za-z][A-Za-z0-9_.]{0,63}$/.test(report.type) ? report.type : report.source,
|
|
31
57
|
};
|
|
32
|
-
const
|
|
58
|
+
const diagnostic = reportDiagnostic(report);
|
|
59
|
+
const frames = report.error instanceof Error ? parseStack(report.error.stack, report.error.message) : [];
|
|
33
60
|
const tags = {
|
|
34
61
|
...sanitizeTags({
|
|
35
62
|
core_version: ctx.coreVersion,
|
|
@@ -41,12 +68,9 @@ export function buildEvent(report, ctx) {
|
|
|
41
68
|
system_ram_mb: ctx.system?.memoryMb,
|
|
42
69
|
}),
|
|
43
70
|
...ctx.appTags,
|
|
44
|
-
...sanitizeTags({ source: report.source, ...report.tags }, { scrub: ctx.scrub }),
|
|
71
|
+
...sanitizeTags({ source: report.source, ...report.tags }, { allow: REPORT_TAG_KEYS, scrub: ctx.scrub }),
|
|
72
|
+
...sanitizeTags(diagnosticTags(report.error, diagnostic)),
|
|
45
73
|
};
|
|
46
|
-
const extra = {};
|
|
47
|
-
for (const [key, value] of Object.entries(report.extra ?? {})) {
|
|
48
|
-
extra[key] = scrubText(value, ctx.scrub).slice(0, MAX_EXTRA);
|
|
49
|
-
}
|
|
50
74
|
return {
|
|
51
75
|
event_id: ctx.eventId,
|
|
52
76
|
timestamp: ctx.timestamp,
|
|
@@ -66,21 +90,26 @@ export function buildEvent(report, ctx) {
|
|
|
66
90
|
},
|
|
67
91
|
},
|
|
68
92
|
tags,
|
|
69
|
-
|
|
93
|
+
fingerprint: diagnosticFingerprint(report.error, diagnostic, String(report.tags?.['provider'] ?? '')),
|
|
70
94
|
exception: {
|
|
71
95
|
values: [
|
|
96
|
+
...errorChain(report.error)
|
|
97
|
+
.slice(1)
|
|
98
|
+
.reverse()
|
|
99
|
+
.map((cause) => ({
|
|
100
|
+
type: errorCodeOf(cause) ?? (EXCEPTION_TYPES.has(cause.name) ? cause.name : 'Error'),
|
|
101
|
+
value: 'Underlying failure',
|
|
102
|
+
mechanism: { type: 'cause', handled: report.level !== 'fatal' },
|
|
103
|
+
stacktrace: { frames: parseStack(cause.stack, cause.message) },
|
|
104
|
+
})),
|
|
72
105
|
{
|
|
73
106
|
type: thrown.type,
|
|
74
|
-
value:
|
|
107
|
+
value: `${diagnostic.component} ${diagnostic.operation}: ${diagnostic.reason}`,
|
|
75
108
|
mechanism: { type: report.source, handled: report.level !== 'fatal' },
|
|
76
109
|
...(frames.length ? { stacktrace: { frames } } : {}),
|
|
77
110
|
},
|
|
78
111
|
],
|
|
79
112
|
},
|
|
80
|
-
...(ctx.breadcrumbs.length
|
|
81
|
-
? { breadcrumbs: { values: ctx.breadcrumbs.map((b) => ({ ...b, category: 'log' })) } }
|
|
82
|
-
: {}),
|
|
83
|
-
...(Object.keys(extra).length ? { extra } : {}),
|
|
84
113
|
};
|
|
85
114
|
}
|
|
86
115
|
/** A single-event envelope: envelope header, item header, payload, newline-separated. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/telemetry/envelope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/telemetry/envelope.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA"}
|
|
@@ -22,7 +22,7 @@ export declare function markerLines(text: string | undefined, options?: {
|
|
|
22
22
|
maxBytes?: number;
|
|
23
23
|
scrub?: ScrubContext;
|
|
24
24
|
}): string | undefined;
|
|
25
|
-
/** A
|
|
25
|
+
/** A recognized public core, system or upstream code, never arbitrary thrown text. */
|
|
26
26
|
export declare function errorCodeOf(error: unknown): string | undefined;
|
|
27
27
|
/** The user (or a caller) stopped the operation: the feature working, not a defect. */
|
|
28
28
|
export declare function isCancellation(error: unknown): boolean;
|
package/dist/telemetry/policy.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ERROR_CODES } from '../contracts/index.js';
|
|
1
2
|
import { scrubText } from './scrub.js';
|
|
2
3
|
/**
|
|
3
4
|
* Tags the app may attach (`toSentryTags` + `SENTRY_TAG_KEYS` in the web app's
|
|
@@ -74,10 +75,52 @@ export function markerLines(text, options = {}) {
|
|
|
74
75
|
}
|
|
75
76
|
return kept.length ? kept.join('\n') : undefined;
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
+
// Only named system and upstream errors are safe evidence. A string shaped like a code can
|
|
79
|
+
// still contain a token or a user identifier; unfamiliar codes group by the safe source stack.
|
|
80
|
+
const REPORTABLE_CODES = new Set([
|
|
81
|
+
...ERROR_CODES,
|
|
82
|
+
'ABORT_ERR',
|
|
83
|
+
'EACCES',
|
|
84
|
+
'EADDRINUSE',
|
|
85
|
+
'EADDRNOTAVAIL',
|
|
86
|
+
'EAI_AGAIN',
|
|
87
|
+
'EBUSY',
|
|
88
|
+
'ECONNABORTED',
|
|
89
|
+
'ECONNREFUSED',
|
|
90
|
+
'ECONNRESET',
|
|
91
|
+
'EEXIST',
|
|
92
|
+
'EHOSTUNREACH',
|
|
93
|
+
'EINVAL',
|
|
94
|
+
'EIO',
|
|
95
|
+
'EISDIR',
|
|
96
|
+
'EMFILE',
|
|
97
|
+
'ENAMETOOLONG',
|
|
98
|
+
'ENETUNREACH',
|
|
99
|
+
'ENFILE',
|
|
100
|
+
'ENODEV',
|
|
101
|
+
'ENOENT',
|
|
102
|
+
'ENOMEM',
|
|
103
|
+
'ENOSPC',
|
|
104
|
+
'ENOTDIR',
|
|
105
|
+
'ENOTFOUND',
|
|
106
|
+
'ENOTSUP',
|
|
107
|
+
'EPERM',
|
|
108
|
+
'EPIPE',
|
|
109
|
+
'EROFS',
|
|
110
|
+
'ETIMEDOUT',
|
|
111
|
+
'EXDEV',
|
|
112
|
+
'ERR_STREAM_PREMATURE_CLOSE',
|
|
113
|
+
'ERR_STREAM_DESTROYED',
|
|
114
|
+
'ERR_STREAM_WRITE_AFTER_END',
|
|
115
|
+
'REMOTE_RATE_LIMITED',
|
|
116
|
+
'REMOTE_QUOTA',
|
|
117
|
+
'REMOTE_UNAVAILABLE',
|
|
118
|
+
'REMOTE_TIMEOUT',
|
|
119
|
+
]);
|
|
120
|
+
/** A recognized public core, system or upstream code, never arbitrary thrown text. */
|
|
78
121
|
export function errorCodeOf(error) {
|
|
79
122
|
const code = error?.code;
|
|
80
|
-
return typeof code === 'string' &&
|
|
123
|
+
return typeof code === 'string' && REPORTABLE_CODES.has(code) ? code : undefined;
|
|
81
124
|
}
|
|
82
125
|
const CANCELLATION_CODES = new Set(['MODEL_LOAD_CANCELLED', 'CANCELLED', 'AUTH_CANCELLED', 'ABORT_ERR']);
|
|
83
126
|
/** The user (or a caller) stopped the operation: the feature working, not a defect. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/telemetry/policy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/telemetry/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,6 +56,7 @@ export declare class ErrorReporter implements TelemetryControl {
|
|
|
56
56
|
private readonly perIssue;
|
|
57
57
|
private total;
|
|
58
58
|
private blockedUntil;
|
|
59
|
+
private readonly reportedErrors;
|
|
59
60
|
private readonly pending;
|
|
60
61
|
constructor(options: ErrorReporterOptions);
|
|
61
62
|
private consent;
|
|
Binary file
|