deepline 0.2.32 → 0.2.34
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/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/shared_libs/observability/scheduled-job-errors.ts +8 -1
- package/dist/bundling-sources/shared_libs/observability/telemetry.ts +40 -3
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
|
@@ -160,7 +160,7 @@ export const SDK_RELEASE = {
|
|
|
160
160
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
161
161
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
162
162
|
// release keeps lazy paging semantics independent of row residency.
|
|
163
|
-
version: '0.2.
|
|
163
|
+
version: '0.2.34',
|
|
164
164
|
contracts: {
|
|
165
165
|
api: {
|
|
166
166
|
name: 'sdk-http-api',
|
|
@@ -72,15 +72,22 @@ export function formatScheduledJobFailure(input: ScheduledJobFailure): string {
|
|
|
72
72
|
const title = input.test
|
|
73
73
|
? '[TEST] Scheduled job failure alert'
|
|
74
74
|
: 'Scheduled job failed';
|
|
75
|
+
const errorLog = sanitizeScheduledJobError(input.error).replace(
|
|
76
|
+
/```/g,
|
|
77
|
+
"'''",
|
|
78
|
+
);
|
|
75
79
|
return [
|
|
76
80
|
title,
|
|
77
81
|
`Job: ${input.jobName} (${input.jobId})`,
|
|
78
82
|
`Scheduler: ${input.scheduler}`,
|
|
79
83
|
input.stage ? `Stage: ${input.stage}` : null,
|
|
80
84
|
input.attempt ? `Attempt: ${input.attempt}` : null,
|
|
81
|
-
`Error: ${sanitizeScheduledJobError(input.error)}`,
|
|
82
85
|
`Occurred: ${input.occurredAt ?? new Date().toISOString()}`,
|
|
83
86
|
input.runUrl ? `Diagnostics: ${input.runUrl}` : null,
|
|
87
|
+
'Error/log:',
|
|
88
|
+
'```',
|
|
89
|
+
errorLog,
|
|
90
|
+
'```',
|
|
84
91
|
]
|
|
85
92
|
.filter((line): line is string => Boolean(line))
|
|
86
93
|
.join('\n');
|
|
@@ -35,6 +35,16 @@ export type TelemetryLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
|
35
35
|
export type TelemetryMetricKind = 'counter' | 'gauge' | 'distribution';
|
|
36
36
|
export type TelemetrySpanOutcome = 'ok' | 'error';
|
|
37
37
|
|
|
38
|
+
export const TELEMETRY_TRIAGE_SCHEMA_VERSION = 1 as const;
|
|
39
|
+
export const DEFAULT_ERROR_TRIAGE_CLASS = 'unclassified_error' as const;
|
|
40
|
+
const TELEMETRY_TRIAGE_CLASS_PATTERN = /^[a-z][a-z0-9_]{0,63}$/;
|
|
41
|
+
|
|
42
|
+
export type TelemetryTriage = {
|
|
43
|
+
schema_version: typeof TELEMETRY_TRIAGE_SCHEMA_VERSION;
|
|
44
|
+
reportable: boolean;
|
|
45
|
+
class: string;
|
|
46
|
+
};
|
|
47
|
+
|
|
38
48
|
type TelemetryEventBase = {
|
|
39
49
|
telemetrySchemaVersion: typeof TELEMETRY_SCHEMA_VERSION;
|
|
40
50
|
timestamp: string;
|
|
@@ -42,6 +52,7 @@ type TelemetryEventBase = {
|
|
|
42
52
|
component: string | null;
|
|
43
53
|
event: string;
|
|
44
54
|
tag: string;
|
|
55
|
+
triage?: TelemetryTriage;
|
|
45
56
|
} & Omit<TelemetryContext, never> &
|
|
46
57
|
Record<string, TelemetryValue | undefined>;
|
|
47
58
|
|
|
@@ -69,7 +80,9 @@ export type TelemetrySpanEvent = TelemetryEventBase & {
|
|
|
69
80
|
};
|
|
70
81
|
|
|
71
82
|
export type TelemetryEvent =
|
|
72
|
-
|
|
83
|
+
| TelemetryLogEvent
|
|
84
|
+
| TelemetryMetricEvent
|
|
85
|
+
| TelemetrySpanEvent;
|
|
73
86
|
|
|
74
87
|
export type TelemetryAdapter = {
|
|
75
88
|
emit(event: TelemetryEvent): void | Promise<void>;
|
|
@@ -167,6 +180,25 @@ const RESERVED_FIELDS = new Set([
|
|
|
167
180
|
'machineId',
|
|
168
181
|
]);
|
|
169
182
|
|
|
183
|
+
function errorTriage(fields: TelemetryFields | undefined): TelemetryTriage {
|
|
184
|
+
const candidate = fields?.triage;
|
|
185
|
+
const triageClass =
|
|
186
|
+
candidate &&
|
|
187
|
+
typeof candidate === 'object' &&
|
|
188
|
+
!Array.isArray(candidate) &&
|
|
189
|
+
typeof (candidate as { class?: unknown }).class === 'string' &&
|
|
190
|
+
TELEMETRY_TRIAGE_CLASS_PATTERN.test(
|
|
191
|
+
(candidate as { class: string }).class.trim(),
|
|
192
|
+
)
|
|
193
|
+
? (candidate as { class: string }).class.trim()
|
|
194
|
+
: DEFAULT_ERROR_TRIAGE_CLASS;
|
|
195
|
+
return {
|
|
196
|
+
schema_version: TELEMETRY_TRIAGE_SCHEMA_VERSION,
|
|
197
|
+
reportable: true,
|
|
198
|
+
class: triageClass,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
170
202
|
function normalizeName(value: string, label: string): string {
|
|
171
203
|
const normalized = value.trim();
|
|
172
204
|
if (!normalized) throw new Error(`${label} must not be empty.`);
|
|
@@ -376,6 +408,7 @@ export function createTelemetry(input: CreateTelemetryInput): Telemetry {
|
|
|
376
408
|
await publish({
|
|
377
409
|
...base(event, options),
|
|
378
410
|
...normalizeFields(fields),
|
|
411
|
+
triage: errorTriage(fields),
|
|
379
412
|
telemetryKind: 'log',
|
|
380
413
|
telemetryLevel: 'error',
|
|
381
414
|
...errorFields(error),
|
|
@@ -402,10 +435,14 @@ export function createTelemetry(input: CreateTelemetryInput): Telemetry {
|
|
|
402
435
|
return result;
|
|
403
436
|
} catch (error) {
|
|
404
437
|
const errorOptions = options?.onError?.(error);
|
|
438
|
+
const failureFields = {
|
|
439
|
+
...(fields ?? {}),
|
|
440
|
+
...(errorOptions?.fields ?? {}),
|
|
441
|
+
};
|
|
405
442
|
await publish({
|
|
406
443
|
...base(span),
|
|
407
|
-
...normalizeFields(
|
|
408
|
-
|
|
444
|
+
...normalizeFields(failureFields),
|
|
445
|
+
triage: errorTriage(failureFields),
|
|
409
446
|
telemetryKind: 'span',
|
|
410
447
|
telemetryLevel: errorOptions?.telemetryLevel ?? 'error',
|
|
411
448
|
spanDurationMs: performance.now() - startedAt,
|
package/dist/cli/index.js
CHANGED
|
@@ -1044,7 +1044,7 @@ var SDK_RELEASE = {
|
|
|
1044
1044
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
1045
1045
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
1046
1046
|
// release keeps lazy paging semantics independent of row residency.
|
|
1047
|
-
version: "0.2.
|
|
1047
|
+
version: "0.2.34",
|
|
1048
1048
|
contracts: {
|
|
1049
1049
|
api: {
|
|
1050
1050
|
name: "sdk-http-api",
|
package/dist/cli/index.mjs
CHANGED
|
@@ -1030,7 +1030,7 @@ var SDK_RELEASE = {
|
|
|
1030
1030
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
1031
1031
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
1032
1032
|
// release keeps lazy paging semantics independent of row residency.
|
|
1033
|
-
version: "0.2.
|
|
1033
|
+
version: "0.2.34",
|
|
1034
1034
|
contracts: {
|
|
1035
1035
|
api: {
|
|
1036
1036
|
name: "sdk-http-api",
|
package/dist/index.js
CHANGED
|
@@ -763,7 +763,7 @@ var SDK_RELEASE = {
|
|
|
763
763
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
764
764
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
765
765
|
// release keeps lazy paging semantics independent of row residency.
|
|
766
|
-
version: "0.2.
|
|
766
|
+
version: "0.2.34",
|
|
767
767
|
contracts: {
|
|
768
768
|
api: {
|
|
769
769
|
name: "sdk-http-api",
|
package/dist/index.mjs
CHANGED
|
@@ -689,7 +689,7 @@ var SDK_RELEASE = {
|
|
|
689
689
|
// 0.2.0 makes Dataset Handles uniformly async-only after 0.1.320 briefly
|
|
690
690
|
// exposed storage-dependent synchronous access. This deliberate minor
|
|
691
691
|
// release keeps lazy paging semantics independent of row residency.
|
|
692
|
-
version: "0.2.
|
|
692
|
+
version: "0.2.34",
|
|
693
693
|
contracts: {
|
|
694
694
|
api: {
|
|
695
695
|
name: "sdk-http-api",
|