@harness-kernel/core 0.2.1 → 0.4.0

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 (58) hide show
  1. package/dist/agent/context.d.ts +2 -3
  2. package/dist/agent/context.js +1 -1
  3. package/dist/agent/event.d.ts +3 -2
  4. package/dist/agent/event.js +6 -2
  5. package/dist/agent/hook.d.ts +3 -4
  6. package/dist/agent/hook.js +1 -1
  7. package/dist/agent/mode.d.ts +2 -3
  8. package/dist/agent/mode.js +1 -1
  9. package/dist/agent/role.js +1 -1
  10. package/dist/agent/session.d.ts +3 -4
  11. package/dist/agent/session.js +8 -2
  12. package/dist/agent/tool.d.ts +39 -3
  13. package/dist/agent/tool.js +8 -2
  14. package/dist/agent.d.ts +6 -6
  15. package/dist/{approval-D_G2w-fW.d.ts → approval-7e8HD-35.d.ts} +20 -15
  16. package/dist/chunk-2NQ3JL7K.js +502 -0
  17. package/dist/chunk-2NQ3JL7K.js.map +1 -0
  18. package/dist/{chunk-JIJHGB6H.js → chunk-3QOAFCCZ.js} +24 -2
  19. package/dist/chunk-3QOAFCCZ.js.map +1 -0
  20. package/dist/{chunk-QEVKKJ7N.js → chunk-BLLQSHQI.js} +391 -151
  21. package/dist/chunk-BLLQSHQI.js.map +1 -0
  22. package/dist/{chunk-ZU6ADDET.js → chunk-IWHCNKHK.js} +1 -1
  23. package/dist/chunk-IWHCNKHK.js.map +1 -0
  24. package/dist/chunk-NCSQEUQC.js +37 -0
  25. package/dist/chunk-NCSQEUQC.js.map +1 -0
  26. package/dist/{chunk-B4Q6CPYO.js → chunk-TCHZYK5Y.js} +3 -1
  27. package/dist/{chunk-B4Q6CPYO.js.map → chunk-TCHZYK5Y.js.map} +1 -1
  28. package/dist/{context-BfpLqV11.d.ts → context-Bz9C_rL9.d.ts} +88 -3
  29. package/dist/errors-DHHy8V3O.d.ts +6 -0
  30. package/dist/errors-hpkW3tfR.d.ts +112 -0
  31. package/dist/{event-CKV4EeZ3.d.ts → event-DMBY-R6h.d.ts} +33 -4
  32. package/dist/{hook-CfBbhUQf.d.ts → hook-DD7uuzE3.d.ts} +2 -2
  33. package/dist/index.d.ts +25 -18
  34. package/dist/index.js +20 -7
  35. package/dist/metrics-DMN8bfY6.d.ts +23 -0
  36. package/dist/{model-provider-Ch7tzk1x.d.ts → model-provider-DGkLQJWP.d.ts} +6 -4
  37. package/dist/runner/approval.d.ts +7 -7
  38. package/dist/runner/event.d.ts +3 -2
  39. package/dist/runner/event.js +6 -2
  40. package/dist/runner/logging.d.ts +7 -3
  41. package/dist/runner/logging.js +11 -1
  42. package/dist/runner/model-provider.d.ts +6 -6
  43. package/dist/runner/sandbox.d.ts +12 -2
  44. package/dist/runner/sandbox.js +1 -1
  45. package/dist/runner/storage.d.ts +181 -4
  46. package/dist/{runner-B41JEovO.d.ts → runner-BYG9ARAV.d.ts} +11 -6
  47. package/dist/runner.d.ts +9 -8
  48. package/dist/runner.js +12 -6
  49. package/package.json +2 -2
  50. package/dist/chunk-JIJHGB6H.js.map +0 -1
  51. package/dist/chunk-Q44U2CMM.js +0 -239
  52. package/dist/chunk-Q44U2CMM.js.map +0 -1
  53. package/dist/chunk-QEVKKJ7N.js.map +0 -1
  54. package/dist/chunk-ZU6ADDET.js.map +0 -1
  55. package/dist/events-D4xcDi53.d.ts +0 -69
  56. package/dist/storage-DCZE_hES.d.ts +0 -200
  57. package/dist/tool-errors-CygY1Nba.d.ts +0 -27
  58. package/dist/types-BPmsw-mF.d.ts +0 -80
@@ -1,239 +0,0 @@
1
- // src/logging/types.ts
2
- var HarnessLog = class {
3
- };
4
- var HarnessLogSink = class {
5
- };
6
-
7
- // src/logging/sinks/shared.ts
8
- var levelOrder = {
9
- silent: 0,
10
- error: 1,
11
- warn: 2,
12
- info: 3,
13
- debug: 4
14
- };
15
- function shouldWriteLog(recordLevel, configuredLevel) {
16
- const level = configuredLevel ?? "silent";
17
- return level !== "silent" && levelOrder[recordLevel] <= levelOrder[level];
18
- }
19
- function consoleMethod(level) {
20
- if (level === "error") return "error";
21
- if (level === "warn") return "warn";
22
- return "log";
23
- }
24
- function formatValue(value) {
25
- if (typeof value === "string") return value;
26
- if (typeof value === "number" || typeof value === "boolean") return String(value);
27
- if (value == null) return String(value);
28
- return JSON.stringify(value);
29
- }
30
-
31
- // src/logging/sinks/console.ts
32
- var ConsoleLogSink = class extends HarnessLogSink {
33
- format;
34
- level;
35
- target;
36
- constructor(options = {}) {
37
- super();
38
- this.format = options.format ?? "pretty";
39
- this.level = options.level;
40
- this.target = options.console ?? console;
41
- }
42
- write(record) {
43
- if (this.level && !shouldWriteLog(record.level, this.level)) return;
44
- const method = consoleMethod(record.level);
45
- if (this.format === "json") {
46
- this.target[method](JSON.stringify(record));
47
- return;
48
- }
49
- const fields = Object.entries(record.fields ?? {}).map(([key, value]) => `${key}=${formatValue(value)}`).join(" ");
50
- const context = [
51
- record.sessionId ? `session=${record.sessionId}` : void 0,
52
- record.runId ? `run=${record.runId}` : void 0,
53
- record.durationMs !== void 0 ? `durationMs=${record.durationMs}` : void 0
54
- ].filter(Boolean).join(" ");
55
- const suffix = [fields, context].filter(Boolean).join(" ");
56
- this.target[method](`[${record.level}] ${record.message}${suffix ? ` ${suffix}` : ""}`);
57
- }
58
- };
59
-
60
- // src/logging/sinks/memory.ts
61
- var MemoryLogSink = class extends HarnessLogSink {
62
- records = [];
63
- level;
64
- constructor(options = {}) {
65
- super();
66
- this.level = options.level;
67
- }
68
- write(record) {
69
- if (this.level && !shouldWriteLog(record.level, this.level)) return;
70
- this.records.push(record);
71
- }
72
- clear() {
73
- this.records.length = 0;
74
- }
75
- };
76
-
77
- // src/logging/redaction.ts
78
- var defaultRedactKeys = [
79
- "password",
80
- "token",
81
- "apiKey",
82
- "authorization",
83
- "secret",
84
- "cookie",
85
- "setCookie"
86
- ];
87
- function normalizeKey(key) {
88
- return key.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
89
- }
90
- function shouldRedactKey(key, keys) {
91
- const normalized = normalizeKey(key);
92
- return keys.some((candidate) => {
93
- const sensitive = normalizeKey(candidate);
94
- return normalized === sensitive || normalized.includes(sensitive);
95
- });
96
- }
97
- function redactError(error) {
98
- return {
99
- name: error.name,
100
- message: error.message,
101
- stack: error.stack
102
- };
103
- }
104
- function redactValue(value, config = {}, seen = /* @__PURE__ */ new WeakSet()) {
105
- const keys = config.keys ?? defaultRedactKeys;
106
- const replacement = config.replacement ?? "[redacted]";
107
- if (value instanceof Error) return redactError(value);
108
- if (value === null || value === void 0) return value;
109
- if (typeof value !== "object") return value;
110
- if (seen.has(value)) return "[circular]";
111
- seen.add(value);
112
- if (Array.isArray(value)) {
113
- return value.map((item) => redactValue(item, config, seen));
114
- }
115
- const output = {};
116
- for (const [key, item] of Object.entries(value)) {
117
- output[key] = shouldRedactKey(key, keys) ? replacement : redactValue(item, config, seen);
118
- }
119
- return output;
120
- }
121
- function summarizeValue(value, config = {}) {
122
- const keys = config.keys ?? defaultRedactKeys;
123
- const replacement = config.replacement ?? "[redacted]";
124
- const visit = (item, key) => {
125
- if (key && shouldRedactKey(key, keys)) return replacement;
126
- if (item instanceof Error) return { name: item.name, message: item.message };
127
- if (item === null) return "null";
128
- if (item === void 0) return "undefined";
129
- if (typeof item === "string") return `string(${item.length})`;
130
- if (typeof item === "number" || typeof item === "boolean") return item;
131
- if (typeof item === "bigint") return `${item.toString()}n`;
132
- if (typeof item === "symbol") return "symbol";
133
- if (typeof item === "function") return "function";
134
- if (Array.isArray(item)) return `array(${item.length})`;
135
- if (typeof item === "object") {
136
- const objectKeys = Object.keys(item).map((objectKey) => shouldRedactKey(objectKey, keys) ? replacement : objectKey);
137
- return `object(${objectKeys.slice(0, 8).join(",")}${objectKeys.length > 8 ? ",..." : ""})`;
138
- }
139
- return String(item);
140
- };
141
- if (value && typeof value === "object" && !Array.isArray(value) && !(value instanceof Error)) {
142
- const output = {};
143
- for (const [key, item] of Object.entries(value)) output[key] = visit(item, key);
144
- return output;
145
- }
146
- return visit(value);
147
- }
148
-
149
- // src/runtime/id.ts
150
- var sequence = 0;
151
- function randomId() {
152
- const cryptoValue = globalThis.crypto;
153
- if (cryptoValue?.randomUUID) return cryptoValue.randomUUID();
154
- sequence += 1;
155
- return `id_${Date.now().toString(36)}_${sequence.toString(36)}`;
156
- }
157
-
158
- // src/logging/normalize.ts
159
- function nowIso() {
160
- return (/* @__PURE__ */ new Date()).toISOString();
161
- }
162
- function plainObject(value) {
163
- if (!value || typeof value !== "object" || Array.isArray(value) || value instanceof Error) return void 0;
164
- return value;
165
- }
166
- function normalizeHarnessLog(logClass, fields, context = {}, redaction = {}) {
167
- const log = new logClass();
168
- const originalFields = log.redact ? log.redact(fields) : fields;
169
- const originalError = originalFields instanceof Error ? originalFields : originalFields && typeof originalFields === "object" && "error" in originalFields && originalFields.error instanceof Error ? originalFields.error : void 0;
170
- const redactedFields = redactValue(originalFields, redaction);
171
- const fieldsObject = plainObject(redactedFields);
172
- return {
173
- id: randomId(),
174
- at: nowIso(),
175
- level: log.levelFor?.(redactedFields) ?? log.level,
176
- category: log.category,
177
- type: logClass.name,
178
- message: log.message(redactedFields),
179
- sessionId: context.sessionId,
180
- runId: context.runId,
181
- turnId: context.turnId,
182
- modeId: context.modeId,
183
- branchId: context.branchId,
184
- source: context.source ?? { kind: "runtime" },
185
- correlationId: context.correlationId,
186
- causationId: context.causationId,
187
- spanId: context.spanId,
188
- parentSpanId: context.parentSpanId,
189
- durationMs: context.durationMs,
190
- fields: fieldsObject,
191
- error: originalError ? redactError(originalError) : void 0
192
- };
193
- }
194
-
195
- // src/logging/index.ts
196
- var AgentDebugLog = class extends HarnessLog {
197
- level = "debug";
198
- category = "agent";
199
- message(fields) {
200
- return fields.message;
201
- }
202
- };
203
- var AgentInfoLog = class extends HarnessLog {
204
- level = "info";
205
- category = "agent";
206
- message(fields) {
207
- return fields.message;
208
- }
209
- };
210
- var AgentWarnLog = class extends HarnessLog {
211
- level = "warn";
212
- category = "agent";
213
- message(fields) {
214
- return fields.message;
215
- }
216
- };
217
- var AgentErrorLog = class extends HarnessLog {
218
- level = "error";
219
- category = "agent";
220
- message(fields) {
221
- return fields.message;
222
- }
223
- };
224
-
225
- export {
226
- HarnessLog,
227
- HarnessLogSink,
228
- randomId,
229
- summarizeValue,
230
- normalizeHarnessLog,
231
- shouldWriteLog,
232
- ConsoleLogSink,
233
- MemoryLogSink,
234
- AgentDebugLog,
235
- AgentInfoLog,
236
- AgentWarnLog,
237
- AgentErrorLog
238
- };
239
- //# sourceMappingURL=chunk-Q44U2CMM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/logging/types.ts","../src/logging/sinks/shared.ts","../src/logging/sinks/console.ts","../src/logging/sinks/memory.ts","../src/logging/redaction.ts","../src/runtime/id.ts","../src/logging/normalize.ts","../src/logging/index.ts"],"sourcesContent":["export type HarnessLogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\nexport type HarnessLoggingLevel = \"silent\" | HarnessLogLevel;\n\nexport type HarnessLogCategory =\n | \"session\"\n | \"run\"\n | \"turn\"\n | \"context\"\n | \"model\"\n | \"tool\"\n | \"approval\"\n | \"snapshot\"\n | \"transcript\"\n | \"storage\"\n | \"agent\";\n\nexport type HarnessLogSourceKind =\n | \"runtime\"\n | \"model_provider\"\n | \"tool\"\n | \"hook\"\n | \"context_provider\"\n | \"mode\"\n | \"user\"\n | \"custom\";\n\nexport interface HarnessLogSource {\n kind: HarnessLogSourceKind;\n id?: string;\n type?: string;\n name?: string;\n label?: string;\n}\n\nexport interface HarnessLogError {\n name?: string;\n message: string;\n stack?: string;\n}\n\nexport interface HarnessLogRecord {\n id: string;\n at: string;\n level: HarnessLogLevel;\n category: HarnessLogCategory;\n type: string;\n message: string;\n sessionId?: string;\n runId?: string;\n turnId?: string;\n modeId?: string;\n branchId?: string;\n source: HarnessLogSource;\n correlationId?: string;\n causationId?: string;\n spanId?: string;\n parentSpanId?: string;\n durationMs?: number;\n fields?: Record<string, unknown>;\n error?: HarnessLogError;\n}\n\nexport abstract class HarnessLog<TFields = Record<string, unknown>> {\n abstract level: HarnessLogLevel;\n abstract category: HarnessLogCategory;\n abstract message(fields: TFields): string;\n levelFor?(fields: TFields): HarnessLogLevel;\n redact?(fields: TFields): TFields;\n}\n\nexport type HarnessLogClass<TFields = Record<string, unknown>> = new () => HarnessLog<TFields>;\n\nexport abstract class HarnessLogSink {\n abstract write(record: HarnessLogRecord): void | Promise<void>;\n flush?(): void | Promise<void>;\n close?(): void | Promise<void>;\n}\n\nexport interface HarnessLoggingConfig {\n level?: HarnessLoggingLevel;\n sinks?: HarnessLogSink[];\n format?: \"pretty\" | \"json\";\n modelDeltas?: \"none\" | \"summary\" | \"full\" | boolean;\n events?: boolean;\n redact?: {\n keys?: string[];\n replacement?: string;\n };\n}\n\nexport interface HarnessRedactionConfig {\n keys?: string[];\n replacement?: string;\n}\n\nexport interface HarnessLogContext {\n sessionId?: string;\n runId?: string;\n turnId?: string;\n modeId?: string;\n branchId?: string;\n source?: HarnessLogSource;\n correlationId?: string;\n causationId?: string;\n spanId?: string;\n parentSpanId?: string;\n durationMs?: number;\n}\n","import type { HarnessLogLevel, HarnessLoggingLevel } from \"../types.js\";\n\nconst levelOrder: Record<HarnessLoggingLevel, number> = {\n silent: 0,\n error: 1,\n warn: 2,\n info: 3,\n debug: 4,\n};\n\nexport function shouldWriteLog(recordLevel: HarnessLogLevel, configuredLevel: HarnessLoggingLevel | undefined): boolean {\n const level = configuredLevel ?? \"silent\";\n return level !== \"silent\" && levelOrder[recordLevel] <= levelOrder[level];\n}\n\nexport function consoleMethod(level: HarnessLogLevel): \"error\" | \"warn\" | \"log\" {\n if (level === \"error\") return \"error\";\n if (level === \"warn\") return \"warn\";\n return \"log\";\n}\n\nexport function formatValue(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n if (value == null) return String(value);\n return JSON.stringify(value);\n}\n","import { HarnessLogSink, type HarnessLogRecord, type HarnessLoggingLevel } from \"../types.js\";\nimport { consoleMethod, formatValue, shouldWriteLog } from \"./shared.js\";\n\nexport interface ConsoleLogSinkOptions {\n format?: \"pretty\" | \"json\";\n level?: HarnessLoggingLevel;\n console?: Pick<Console, \"log\" | \"warn\" | \"error\">;\n}\n\nexport class ConsoleLogSink extends HarnessLogSink {\n private readonly format: \"pretty\" | \"json\";\n private readonly level?: HarnessLoggingLevel;\n private readonly target: Pick<Console, \"log\" | \"warn\" | \"error\">;\n\n constructor(options: ConsoleLogSinkOptions = {}) {\n super();\n this.format = options.format ?? \"pretty\";\n this.level = options.level;\n this.target = options.console ?? console;\n }\n\n write(record: HarnessLogRecord): void {\n if (this.level && !shouldWriteLog(record.level, this.level)) return;\n const method = consoleMethod(record.level);\n if (this.format === \"json\") {\n this.target[method](JSON.stringify(record));\n return;\n }\n const fields = Object.entries(record.fields ?? {})\n .map(([key, value]) => `${key}=${formatValue(value)}`)\n .join(\" \");\n const context = [\n record.sessionId ? `session=${record.sessionId}` : undefined,\n record.runId ? `run=${record.runId}` : undefined,\n record.durationMs !== undefined ? `durationMs=${record.durationMs}` : undefined,\n ].filter(Boolean).join(\" \");\n const suffix = [fields, context].filter(Boolean).join(\" \");\n this.target[method](`[${record.level}] ${record.message}${suffix ? ` ${suffix}` : \"\"}`);\n }\n}\n","import { HarnessLogSink, type HarnessLogRecord, type HarnessLoggingLevel } from \"../types.js\";\nimport { shouldWriteLog } from \"./shared.js\";\n\nexport interface MemoryLogSinkOptions {\n level?: HarnessLoggingLevel;\n}\n\nexport class MemoryLogSink extends HarnessLogSink {\n readonly records: HarnessLogRecord[] = [];\n private readonly level?: HarnessLoggingLevel;\n\n constructor(options: MemoryLogSinkOptions = {}) {\n super();\n this.level = options.level;\n }\n\n write(record: HarnessLogRecord): void {\n if (this.level && !shouldWriteLog(record.level, this.level)) return;\n this.records.push(record);\n }\n\n clear(): void {\n this.records.length = 0;\n }\n}\n","import type { HarnessRedactionConfig } from \"./types.js\";\n\nexport const defaultRedactKeys = [\n \"password\",\n \"token\",\n \"apiKey\",\n \"authorization\",\n \"secret\",\n \"cookie\",\n \"setCookie\",\n];\n\nfunction normalizeKey(key: string): string {\n return key.replace(/[^a-zA-Z0-9]/g, \"\").toLowerCase();\n}\n\nexport function shouldRedactKey(key: string, keys: string[]): boolean {\n const normalized = normalizeKey(key);\n return keys.some((candidate) => {\n const sensitive = normalizeKey(candidate);\n return normalized === sensitive || normalized.includes(sensitive);\n });\n}\n\nexport function redactError(error: Error): { name?: string; message: string; stack?: string } {\n return {\n name: error.name,\n message: error.message,\n stack: error.stack,\n };\n}\n\nexport function redactValue(\n value: unknown,\n config: HarnessRedactionConfig = {},\n seen = new WeakSet<object>(),\n): unknown {\n const keys = config.keys ?? defaultRedactKeys;\n const replacement = config.replacement ?? \"[redacted]\";\n\n if (value instanceof Error) return redactError(value);\n if (value === null || value === undefined) return value;\n if (typeof value !== \"object\") return value;\n if (seen.has(value)) return \"[circular]\";\n seen.add(value);\n\n if (Array.isArray(value)) {\n return value.map((item) => redactValue(item, config, seen));\n }\n\n const output: Record<string, unknown> = {};\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n output[key] = shouldRedactKey(key, keys) ? replacement : redactValue(item, config, seen);\n }\n return output;\n}\n\nexport function summarizeValue(value: unknown, config: HarnessRedactionConfig = {}): unknown {\n const keys = config.keys ?? defaultRedactKeys;\n const replacement = config.replacement ?? \"[redacted]\";\n\n const visit = (item: unknown, key?: string): unknown => {\n if (key && shouldRedactKey(key, keys)) return replacement;\n if (item instanceof Error) return { name: item.name, message: item.message };\n if (item === null) return \"null\";\n if (item === undefined) return \"undefined\";\n if (typeof item === \"string\") return `string(${item.length})`;\n if (typeof item === \"number\" || typeof item === \"boolean\") return item;\n if (typeof item === \"bigint\") return `${item.toString()}n`;\n if (typeof item === \"symbol\") return \"symbol\";\n if (typeof item === \"function\") return \"function\";\n if (Array.isArray(item)) return `array(${item.length})`;\n if (typeof item === \"object\") {\n const objectKeys = Object.keys(item as Record<string, unknown>)\n .map((objectKey) => shouldRedactKey(objectKey, keys) ? replacement : objectKey);\n return `object(${objectKeys.slice(0, 8).join(\",\")}${objectKeys.length > 8 ? \",...\" : \"\"})`;\n }\n return String(item);\n };\n\n if (value && typeof value === \"object\" && !Array.isArray(value) && !(value instanceof Error)) {\n const output: Record<string, unknown> = {};\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) output[key] = visit(item, key);\n return output;\n }\n return visit(value);\n}\n","let sequence = 0;\n\nexport function randomId(): string {\n const cryptoValue = globalThis.crypto as { randomUUID?: () => string } | undefined;\n if (cryptoValue?.randomUUID) return cryptoValue.randomUUID();\n sequence += 1;\n return `id_${Date.now().toString(36)}_${sequence.toString(36)}`;\n}\n","import { randomId } from \"../runtime/id.js\";\nimport type {\n HarnessLogClass,\n HarnessLogContext,\n HarnessLogRecord,\n HarnessRedactionConfig,\n} from \"./types.js\";\nimport { redactError, redactValue } from \"./redaction.js\";\n\nfunction nowIso(): string {\n return new Date().toISOString();\n}\n\nfunction plainObject(value: unknown): Record<string, unknown> | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value) || value instanceof Error) return undefined;\n return value as Record<string, unknown>;\n}\n\nexport function normalizeHarnessLog<TFields>(\n logClass: HarnessLogClass<TFields>,\n fields: TFields,\n context: HarnessLogContext = {},\n redaction: HarnessRedactionConfig = {},\n): HarnessLogRecord {\n const log = new logClass();\n const originalFields = log.redact ? log.redact(fields) : fields;\n const originalError = originalFields instanceof Error\n ? originalFields\n : originalFields && typeof originalFields === \"object\" && \"error\" in originalFields && (originalFields as { error?: unknown }).error instanceof Error\n ? (originalFields as { error: Error }).error\n : undefined;\n const redactedFields = redactValue(originalFields, redaction) as TFields;\n const fieldsObject = plainObject(redactedFields);\n return {\n id: randomId(),\n at: nowIso(),\n level: log.levelFor?.(redactedFields) ?? log.level,\n category: log.category,\n type: logClass.name,\n message: log.message(redactedFields),\n sessionId: context.sessionId,\n runId: context.runId,\n turnId: context.turnId,\n modeId: context.modeId,\n branchId: context.branchId,\n source: context.source ?? { kind: \"runtime\" },\n correlationId: context.correlationId,\n causationId: context.causationId,\n spanId: context.spanId,\n parentSpanId: context.parentSpanId,\n durationMs: context.durationMs,\n fields: fieldsObject,\n error: originalError ? redactError(originalError) : undefined,\n };\n}\n","import { HarnessLog } from \"./types.js\";\n\nexport {\n HarnessLog,\n HarnessLogSink,\n type HarnessLogCategory,\n type HarnessLogClass,\n type HarnessLogContext,\n type HarnessLogError,\n type HarnessLogLevel,\n type HarnessLoggingConfig,\n type HarnessLoggingLevel,\n type HarnessLogRecord,\n type HarnessLogSource,\n type HarnessLogSourceKind,\n type HarnessRedactionConfig,\n} from \"./types.js\";\nexport {\n defaultRedactKeys,\n redactError,\n redactValue,\n shouldRedactKey,\n summarizeValue,\n} from \"./redaction.js\";\nexport { normalizeHarnessLog } from \"./normalize.js\";\nexport {\n ConsoleLogSink,\n MemoryLogSink,\n shouldWriteLog,\n type ConsoleLogSinkOptions,\n type MemoryLogSinkOptions,\n} from \"./sinks.js\";\n\nexport class AgentDebugLog extends HarnessLog<{ message: string }> {\n level = \"debug\" as const;\n category = \"agent\" as const;\n message(fields: { message: string }): string {\n return fields.message;\n }\n}\n\nexport class AgentInfoLog extends HarnessLog<{ message: string }> {\n level = \"info\" as const;\n category = \"agent\" as const;\n message(fields: { message: string }): string {\n return fields.message;\n }\n}\n\nexport class AgentWarnLog extends HarnessLog<{ message: string }> {\n level = \"warn\" as const;\n category = \"agent\" as const;\n message(fields: { message: string }): string {\n return fields.message;\n }\n}\n\nexport class AgentErrorLog extends HarnessLog<{ message: string; error?: unknown }> {\n level = \"error\" as const;\n category = \"agent\" as const;\n message(fields: { message: string }): string {\n return fields.message;\n }\n}\n"],"mappings":"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","names":[]}