@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
package/dist/index.js CHANGED
@@ -4,21 +4,23 @@ import {
4
4
  HarnessSessionPhase,
5
5
  HarnessSessionStoreImpl,
6
6
  createHarnessSession,
7
- createHarnessSessionStore,
8
- createToolErrorPayload
9
- } from "./chunk-QEVKKJ7N.js";
7
+ createHarnessSessionStore
8
+ } from "./chunk-BLLQSHQI.js";
10
9
  import {
11
10
  HarnessModelProviderRegistry,
12
11
  modelProviderId,
13
12
  parseModelRef
14
13
  } from "./chunk-Q73WH5D7.js";
15
- import "./chunk-Q44U2CMM.js";
14
+ import {
15
+ normalizeHarnessError,
16
+ sanitizeHarnessError
17
+ } from "./chunk-2NQ3JL7K.js";
16
18
  import {
17
19
  HarnessSandbox,
18
20
  HarnessSandboxSession,
19
21
  NoopSandbox,
20
22
  NoopSandboxSession
21
- } from "./chunk-ZU6ADDET.js";
23
+ } from "./chunk-IWHCNKHK.js";
22
24
  import {
23
25
  HarnessRunStorage,
24
26
  HarnessRunStore,
@@ -32,6 +34,10 @@ import {
32
34
  import {
33
35
  defineAgent
34
36
  } from "./chunk-RRWJUHJG.js";
37
+ import {
38
+ createToolErrorPayload,
39
+ createToolErrorResult
40
+ } from "./chunk-NCSQEUQC.js";
35
41
  import {
36
42
  ContextReadyEvent,
37
43
  ErrorEvent,
@@ -41,7 +47,9 @@ import {
41
47
  ModeChangedEvent,
42
48
  ModelAfterEvent,
43
49
  ModelBeforeEvent,
50
+ RunAbortedEvent,
44
51
  RunEndEvent,
52
+ RunFailedEvent,
45
53
  RunStartEvent,
46
54
  SnapshotCreatedEvent,
47
55
  SnapshotDeletedEvent,
@@ -54,7 +62,7 @@ import {
54
62
  TurnEndEvent,
55
63
  TurnStartEvent,
56
64
  runtimeEventClasses
57
- } from "./chunk-JIJHGB6H.js";
65
+ } from "./chunk-3QOAFCCZ.js";
58
66
  import {
59
67
  ArraySchema,
60
68
  BooleanSchema,
@@ -93,7 +101,7 @@ import {
93
101
  systemRole,
94
102
  toolRole,
95
103
  userRole
96
- } from "./chunk-B4Q6CPYO.js";
104
+ } from "./chunk-TCHZYK5Y.js";
97
105
  export {
98
106
  AgentSessionRunner,
99
107
  ArraySchema,
@@ -140,7 +148,9 @@ export {
140
148
  OptionalSchema,
141
149
  RecordSchema,
142
150
  RoleTargets,
151
+ RunAbortedEvent,
143
152
  RunEndEvent,
153
+ RunFailedEvent,
144
154
  RunStartEvent,
145
155
  Schema,
146
156
  SchemaError,
@@ -163,13 +173,16 @@ export {
163
173
  createHarnessSession,
164
174
  createHarnessSessionStore,
165
175
  createToolErrorPayload,
176
+ createToolErrorResult,
166
177
  defineAgent,
167
178
  formatSchemaPath,
168
179
  modelProviderId,
180
+ normalizeHarnessError,
169
181
  normalizeSchema,
170
182
  parseModelRef,
171
183
  runtimeEventClasses,
172
184
  s,
185
+ sanitizeHarnessError,
173
186
  schemaIssuesFromError,
174
187
  systemRole,
175
188
  toolRole,
@@ -0,0 +1,23 @@
1
+ import { e as HarnessErrorShape } from './errors-hpkW3tfR.js';
2
+
3
+ interface ToolCallMetric {
4
+ name: string;
5
+ count: number;
6
+ errorCount: number;
7
+ totalDurationMs: number;
8
+ }
9
+ interface RunMetrics {
10
+ startedAt: string;
11
+ completedAt?: string;
12
+ durationMs: number;
13
+ turnCount: number;
14
+ messageCount: number;
15
+ eventCount: number;
16
+ toolCallCount: number;
17
+ finalMode?: string;
18
+ tools: Record<string, ToolCallMetric>;
19
+ errors: HarnessErrorShape[];
20
+ usage?: unknown;
21
+ }
22
+
23
+ export type { RunMetrics as R, ToolCallMetric as T };
@@ -1,9 +1,10 @@
1
- import { H as HarnessEvent, a as HarnessEventClass, b as HarnessEventEmitOptions, e as HarnessEventRecord, J as JsonObject } from './events-D4xcDi53.js';
2
- import { h as AgentMessage, v as AgentToolDefinition, w as AgentToolResult, M as ContextSnapshot, S as HarnessModeSelector, Q as HarnessMode, s as AgentSharedStateDefinition, a4 as ToolApprovalRequest, a2 as ToolApprovalDecision, q as AgentRuntimeLogger } from './context-BfpLqV11.js';
1
+ import { f as HarnessEvent, g as HarnessEventClass, h as HarnessEventEmitOptions, k as HarnessEventRecord, J as JsonObject, c as HarnessErrorPolicy } from './errors-hpkW3tfR.js';
2
+ import { h as AgentMessage, v as AgentToolDefinition, w as AgentToolResult, M as ContextSnapshot, a2 as HarnessModeSelector, a0 as HarnessMode, s as AgentSharedStateDefinition, ah as ToolApprovalRequest, af as ToolApprovalDecision, q as AgentRuntimeLogger } from './context-Bz9C_rL9.js';
3
3
  import { b as HarnessRoleDefinition, c as HarnessRoleSelector } from './role-BN6KhQxx.js';
4
4
  import { HarnessSandbox } from './runner/sandbox.js';
5
- import { h as RunMetrics, c as HarnessSessionStorage, H as HarnessRunStorage } from './storage-DCZE_hES.js';
6
- import { H as HarnessHook } from './hook-CfBbhUQf.js';
5
+ import { HarnessSessionStorage, HarnessRunStorage } from './runner/storage.js';
6
+ import { H as HarnessHook } from './hook-DD7uuzE3.js';
7
+ import { R as RunMetrics } from './metrics-DMN8bfY6.js';
7
8
 
8
9
  interface ModelProviderRunInput {
9
10
  runId: string;
@@ -114,6 +115,7 @@ interface AgentSessionRunnerOptions {
114
115
  resources?: JsonObject;
115
116
  approveTool?(request: ToolApprovalRequest): boolean | ToolApprovalDecision | Promise<boolean | ToolApprovalDecision>;
116
117
  logger?: AgentRuntimeLogger;
118
+ errorPolicy?: HarnessErrorPolicy;
117
119
  }
118
120
  interface AgentRunResult {
119
121
  runId: string;
@@ -1,9 +1,9 @@
1
- export { T as ToolApprovalHandle } from '../approval-D_G2w-fW.js';
2
- export { a2 as ToolApprovalDecision, a3 as ToolApprovalMode, a4 as ToolApprovalRequest } from '../context-BfpLqV11.js';
3
- import '../model-provider-Ch7tzk1x.js';
4
- import '../events-D4xcDi53.js';
1
+ export { T as ToolApprovalHandle } from '../approval-7e8HD-35.js';
2
+ export { af as ToolApprovalDecision, ag as ToolApprovalMode, ah as ToolApprovalRequest } from '../context-Bz9C_rL9.js';
3
+ import '../model-provider-DGkLQJWP.js';
4
+ import '../errors-hpkW3tfR.js';
5
5
  import '../role-BN6KhQxx.js';
6
6
  import './sandbox.js';
7
- import '../storage-DCZE_hES.js';
8
- import '../hook-CfBbhUQf.js';
9
- import '../types-BPmsw-mF.js';
7
+ import './storage.js';
8
+ import '../metrics-DMN8bfY6.js';
9
+ import '../hook-DD7uuzE3.js';
@@ -1,3 +1,4 @@
1
- export { H as HarnessEvent, a as HarnessEventClass, b as HarnessEventEmitOptions, d as HarnessEventQuery, e as HarnessEventRecord, f as HarnessEventSource } from '../events-D4xcDi53.js';
2
- export { C as ContextReadyEvent, E as ErrorEvent, M as MessageDeltaEvent, a as MessageEndEvent, b as MessageStartEvent, c as ModeChangedEvent, d as ModelAfterEvent, e as ModelBeforeEvent, R as RunEndEvent, f as RunStartEvent, S as SnapshotCreatedEvent, g as SnapshotDeletedEvent, h as SnapshotRestoredEvent, T as ToolApprovalRequestedEvent, i as ToolApprovalResolvedEvent, j as ToolEndEvent, k as ToolStartEvent, l as TranscriptCursorChangedEvent, m as TurnEndEvent, n as TurnStartEvent } from '../event-CKV4EeZ3.js';
1
+ export { f as HarnessEvent, g as HarnessEventClass, h as HarnessEventEmitOptions, j as HarnessEventQuery, k as HarnessEventRecord, l as HarnessEventSource } from '../errors-hpkW3tfR.js';
2
+ export { C as ContextReadyEvent, E as ErrorEvent, M as MessageDeltaEvent, a as MessageEndEvent, b as MessageStartEvent, c as ModeChangedEvent, d as ModelAfterEvent, e as ModelBeforeEvent, R as RunAbortedEvent, f as RunEndEvent, g as RunFailedEvent, h as RunStartEvent, S as SnapshotCreatedEvent, i as SnapshotDeletedEvent, j as SnapshotRestoredEvent, T as ToolApprovalRequestedEvent, k as ToolApprovalResolvedEvent, l as ToolEndEvent, m as ToolStartEvent, n as TranscriptCursorChangedEvent, o as TurnEndEvent, p as TurnStartEvent } from '../event-DMBY-R6h.js';
3
+ import '../metrics-DMN8bfY6.js';
3
4
  import '../schema.js';
@@ -7,7 +7,9 @@ import {
7
7
  ModeChangedEvent,
8
8
  ModelAfterEvent,
9
9
  ModelBeforeEvent,
10
+ RunAbortedEvent,
10
11
  RunEndEvent,
12
+ RunFailedEvent,
11
13
  RunStartEvent,
12
14
  SnapshotCreatedEvent,
13
15
  SnapshotDeletedEvent,
@@ -19,11 +21,11 @@ import {
19
21
  TranscriptCursorChangedEvent,
20
22
  TurnEndEvent,
21
23
  TurnStartEvent
22
- } from "../chunk-JIJHGB6H.js";
24
+ } from "../chunk-3QOAFCCZ.js";
23
25
  import "../chunk-OBKS4AJR.js";
24
26
  import {
25
27
  HarnessEvent
26
- } from "../chunk-B4Q6CPYO.js";
28
+ } from "../chunk-TCHZYK5Y.js";
27
29
  export {
28
30
  ContextReadyEvent,
29
31
  ErrorEvent,
@@ -34,7 +36,9 @@ export {
34
36
  ModeChangedEvent,
35
37
  ModelAfterEvent,
36
38
  ModelBeforeEvent,
39
+ RunAbortedEvent,
37
40
  RunEndEvent,
41
+ RunFailedEvent,
38
42
  RunStartEvent,
39
43
  SnapshotCreatedEvent,
40
44
  SnapshotDeletedEvent,
@@ -1,6 +1,10 @@
1
- import { g as HarnessLogSink, k as HarnessLoggingLevel, f as HarnessLogRecord, e as HarnessLogLevel } from '../types-BPmsw-mF.js';
2
- export { H as HarnessLog, a as HarnessLogCategory, b as HarnessLogClass, c as HarnessLogContext, d as HarnessLogError, h as HarnessLogSource, i as HarnessLogSourceKind, j as HarnessLoggingConfig, l as HarnessRedactionConfig } from '../types-BPmsw-mF.js';
3
- export { T as ToolErrorCode, a as ToolErrorPayload, b as ToolInvalidField } from '../tool-errors-CygY1Nba.js';
1
+ import { X as HarnessLogSink, $ as HarnessLoggingLevel, W as HarnessLogRecord, V as HarnessLogLevel } from '../context-Bz9C_rL9.js';
2
+ export { Q as HarnessLog, R as HarnessLogCategory, S as HarnessLogClass, T as HarnessLogContext, U as HarnessLogError, Y as HarnessLogSource, Z as HarnessLogSourceKind, _ as HarnessLoggingConfig, a4 as HarnessRedactionConfig } from '../context-Bz9C_rL9.js';
3
+ export { H as HarnessErrorCategory, a as HarnessErrorCode, b as HarnessErrorContext, c as HarnessErrorPolicy, d as HarnessErrorSeverity, e as HarnessErrorShape, m as HarnessRetryPolicy } from '../errors-hpkW3tfR.js';
4
+ export { n as normalizeHarnessError, s as sanitizeHarnessError } from '../errors-DHHy8V3O.js';
5
+ export { ToolErrorCode, ToolErrorPayload, ToolInvalidField, createToolErrorPayload, createToolErrorResult } from '../agent/tool.js';
6
+ import '../role-BN6KhQxx.js';
7
+ import './sandbox.js';
4
8
 
5
9
  interface ConsoleLogSinkOptions {
6
10
  format?: "pretty" | "json";
@@ -3,13 +3,23 @@ import {
3
3
  HarnessLog,
4
4
  HarnessLogSink,
5
5
  MemoryLogSink,
6
+ normalizeHarnessError,
7
+ sanitizeHarnessError,
6
8
  shouldWriteLog
7
- } from "../chunk-Q44U2CMM.js";
9
+ } from "../chunk-2NQ3JL7K.js";
10
+ import {
11
+ createToolErrorPayload,
12
+ createToolErrorResult
13
+ } from "../chunk-NCSQEUQC.js";
8
14
  export {
9
15
  ConsoleLogSink,
10
16
  HarnessLog,
11
17
  HarnessLogSink,
12
18
  MemoryLogSink,
19
+ createToolErrorPayload,
20
+ createToolErrorResult,
21
+ normalizeHarnessError,
22
+ sanitizeHarnessError,
13
23
  shouldWriteLog
14
24
  };
15
25
  //# sourceMappingURL=logging.js.map
@@ -1,8 +1,8 @@
1
- export { H as HarnessModelProvider, d as HarnessModelProviderRegistry, M as ModelInfo, e as ModelProviderInfo, f as ModelProviderPreparedContext, g as ModelProviderRunInput, h as ModelProviderRunResult, R as ResolvedModelProvider, m as modelProviderId, p as parseModelRef } from '../model-provider-Ch7tzk1x.js';
2
- import '../events-D4xcDi53.js';
3
- import '../context-BfpLqV11.js';
1
+ export { H as HarnessModelProvider, d as HarnessModelProviderRegistry, M as ModelInfo, e as ModelProviderInfo, f as ModelProviderPreparedContext, g as ModelProviderRunInput, h as ModelProviderRunResult, R as ResolvedModelProvider, m as modelProviderId, p as parseModelRef } from '../model-provider-DGkLQJWP.js';
2
+ import '../errors-hpkW3tfR.js';
3
+ import '../context-Bz9C_rL9.js';
4
4
  import '../role-BN6KhQxx.js';
5
- import '../types-BPmsw-mF.js';
6
5
  import './sandbox.js';
7
- import '../storage-DCZE_hES.js';
8
- import '../hook-CfBbhUQf.js';
6
+ import './storage.js';
7
+ import '../metrics-DMN8bfY6.js';
8
+ import '../hook-DD7uuzE3.js';
@@ -21,16 +21,26 @@ interface SandboxExecResult {
21
21
  durationMs: number;
22
22
  timedOut?: boolean;
23
23
  }
24
+ type SandboxCloseReason = "close" | "delete";
25
+ interface SandboxCloseInput {
26
+ reason: SandboxCloseReason;
27
+ }
28
+ interface SandboxDestroyInput {
29
+ sessionId: string;
30
+ agentKey?: string;
31
+ workDir?: string;
32
+ }
24
33
  declare abstract class HarnessSandbox {
25
34
  abstract readonly id: string;
26
35
  label?: string;
27
36
  abstract open(input: HarnessSandboxOpenInput): Promise<HarnessSandboxSession> | HarnessSandboxSession;
37
+ destroy?(input: SandboxDestroyInput): Promise<void> | void;
28
38
  }
29
39
  declare abstract class HarnessSandboxSession {
30
40
  abstract readonly id: string;
31
41
  abstract readonly workDir: string;
32
42
  abstract exec(input: SandboxExecInput): Promise<SandboxExecResult>;
33
- close?(): Promise<void>;
43
+ close?(input?: SandboxCloseInput): Promise<void> | void;
34
44
  }
35
45
  declare class NoopSandbox extends HarnessSandbox {
36
46
  readonly id = "noop";
@@ -44,4 +54,4 @@ declare class NoopSandboxSession extends HarnessSandboxSession {
44
54
  exec(input: SandboxExecInput): Promise<SandboxExecResult>;
45
55
  }
46
56
 
47
- export { HarnessSandbox, type HarnessSandboxOpenInput, HarnessSandboxSession, NoopSandbox, NoopSandboxSession, type SandboxExecInput, type SandboxExecResult };
57
+ export { HarnessSandbox, type HarnessSandboxOpenInput, HarnessSandboxSession, NoopSandbox, NoopSandboxSession, type SandboxCloseInput, type SandboxCloseReason, type SandboxDestroyInput, type SandboxExecInput, type SandboxExecResult };
@@ -3,7 +3,7 @@ import {
3
3
  HarnessSandboxSession,
4
4
  NoopSandbox,
5
5
  NoopSandboxSession
6
- } from "../chunk-ZU6ADDET.js";
6
+ } from "../chunk-IWHCNKHK.js";
7
7
  export {
8
8
  HarnessSandbox,
9
9
  HarnessSandboxSession,
@@ -1,6 +1,183 @@
1
- export { C as CreateStoredRunInput, a as CreateStoredSessionInput, H as HarnessRunStorage, b as HarnessRunStore, c as HarnessSessionStorage, d as HarnessSessionSummary, M as MemoryRunStorage, e as MemoryRunStore, f as MemorySessionStorage, N as NoopRunStorage, g as NoopRunStore, O as OpenRunStoreInput, R as RunCursorState, S as SessionListQuery, i as SessionListResult, j as StoredRunSummary, k as TouchStoredSessionInput } from '../storage-DCZE_hES.js';
2
- import '../events-D4xcDi53.js';
3
- import '../context-BfpLqV11.js';
1
+ import { k as HarnessEventRecord, E as EventCursor } from '../errors-hpkW3tfR.js';
2
+ import { h as AgentMessage, a5 as HarnessSnapshot, ao as TranscriptCursor, an as TranscriptBranch, M as ContextSnapshot } from '../context-Bz9C_rL9.js';
3
+ import { R as RunMetrics } from '../metrics-DMN8bfY6.js';
4
4
  import '../role-BN6KhQxx.js';
5
- import '../types-BPmsw-mF.js';
6
5
  import './sandbox.js';
6
+
7
+ interface RunCursorState {
8
+ transcriptCursor: TranscriptCursor;
9
+ eventCursor: EventCursor;
10
+ branches?: TranscriptBranch[];
11
+ }
12
+ interface OpenRunStoreInput {
13
+ runId: string;
14
+ sessionId: string;
15
+ agentKey: string;
16
+ outputDir?: string;
17
+ }
18
+ interface HarnessSessionSummary {
19
+ sessionId: string;
20
+ agentKey: string;
21
+ createdAt: string;
22
+ lastActiveAt: string;
23
+ mode: string;
24
+ latestRunId?: string;
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ interface SessionListQuery {
28
+ agentKey?: string;
29
+ active?: boolean;
30
+ limit?: number;
31
+ cursor?: string;
32
+ }
33
+ interface SessionListResult {
34
+ items: HarnessSessionSummary[];
35
+ nextCursor?: string;
36
+ }
37
+ interface StoredRunSummary {
38
+ runId: string;
39
+ sessionId: string;
40
+ agentKey: string;
41
+ createdAt: string;
42
+ mode: string;
43
+ outputDir?: string;
44
+ metadata?: Record<string, unknown>;
45
+ }
46
+ interface CreateStoredSessionInput {
47
+ sessionId: string;
48
+ agentKey: string;
49
+ createdAt?: string;
50
+ lastActiveAt?: string;
51
+ mode: string;
52
+ latestRunId?: string;
53
+ metadata?: Record<string, unknown>;
54
+ }
55
+ interface TouchStoredSessionInput {
56
+ sessionId: string;
57
+ lastActiveAt?: string;
58
+ mode?: string;
59
+ latestRunId?: string;
60
+ metadata?: Record<string, unknown>;
61
+ }
62
+ interface CreateStoredRunInput {
63
+ runId: string;
64
+ sessionId: string;
65
+ agentKey: string;
66
+ createdAt?: string;
67
+ mode: string;
68
+ outputDir?: string;
69
+ metadata?: Record<string, unknown>;
70
+ }
71
+ declare abstract class HarnessRunStorage {
72
+ abstract readonly id: string;
73
+ label?: string;
74
+ abstract openRun(input: OpenRunStoreInput): Promise<HarnessRunStore> | HarnessRunStore;
75
+ }
76
+ declare abstract class HarnessSessionStorage {
77
+ abstract readonly id: string;
78
+ label?: string;
79
+ init?(): Promise<void> | void;
80
+ abstract createSession(input: CreateStoredSessionInput): Promise<HarnessSessionSummary> | HarnessSessionSummary;
81
+ abstract getSession(sessionId: string): Promise<HarnessSessionSummary | undefined> | HarnessSessionSummary | undefined;
82
+ abstract listSessions(query?: SessionListQuery): Promise<SessionListResult> | SessionListResult;
83
+ abstract touchSession(input: TouchStoredSessionInput): Promise<void> | void;
84
+ abstract deleteSession(sessionId: string): Promise<boolean> | boolean;
85
+ abstract createRun(input: CreateStoredRunInput): Promise<StoredRunSummary> | StoredRunSummary;
86
+ abstract getLatestRun(sessionId: string): Promise<StoredRunSummary | undefined> | StoredRunSummary | undefined;
87
+ abstract listRuns(sessionId: string): Promise<StoredRunSummary[]> | StoredRunSummary[];
88
+ abstract openRun(input: OpenRunStoreInput): Promise<HarnessRunStore> | HarnessRunStore;
89
+ }
90
+ declare abstract class HarnessRunStore {
91
+ abstract readonly runId: string;
92
+ readonly outputDir?: string;
93
+ readonly runDir?: string;
94
+ abstract init(): Promise<void> | void;
95
+ abstract recordEvent(event: HarnessEventRecord): Promise<void> | void;
96
+ abstract loadEvents(): Promise<HarnessEventRecord[]> | HarnessEventRecord[];
97
+ abstract saveTranscript(messages: AgentMessage[]): Promise<void> | void;
98
+ abstract loadTranscript(): Promise<AgentMessage[]> | AgentMessage[];
99
+ abstract saveMetrics(metrics: RunMetrics): Promise<void> | void;
100
+ abstract saveSnapshot(snapshot: HarnessSnapshot): Promise<void> | void;
101
+ abstract loadSnapshots(): Promise<HarnessSnapshot[]> | HarnessSnapshot[];
102
+ abstract deleteSnapshot(id: string): Promise<void> | void;
103
+ abstract saveCursors(cursors: RunCursorState): Promise<void> | void;
104
+ abstract loadCursors(): Promise<RunCursorState | undefined> | RunCursorState | undefined;
105
+ abstract saveContextSnapshot(snapshot: ContextSnapshot): Promise<void> | void;
106
+ abstract loadContextSnapshots(): Promise<ContextSnapshot[]> | ContextSnapshot[];
107
+ close?(): Promise<void>;
108
+ }
109
+ declare class NoopRunStorage extends HarnessRunStorage {
110
+ readonly id = "noop";
111
+ label: string;
112
+ openRun(input: OpenRunStoreInput): HarnessRunStore;
113
+ }
114
+ declare class NoopRunStore extends HarnessRunStore {
115
+ readonly runId: string;
116
+ readonly outputDir: undefined;
117
+ readonly runDir: undefined;
118
+ constructor(runId: string);
119
+ init(): void;
120
+ recordEvent(_event: HarnessEventRecord): void;
121
+ loadEvents(): HarnessEventRecord[];
122
+ saveTranscript(_messages: AgentMessage[]): void;
123
+ loadTranscript(): AgentMessage[];
124
+ saveMetrics(_metrics: RunMetrics): void;
125
+ saveSnapshot(_snapshot: HarnessSnapshot): void;
126
+ loadSnapshots(): HarnessSnapshot[];
127
+ deleteSnapshot(_id: string): void;
128
+ saveCursors(_cursors: RunCursorState): void;
129
+ loadCursors(): RunCursorState | undefined;
130
+ saveContextSnapshot(_snapshot: ContextSnapshot): void;
131
+ loadContextSnapshots(): ContextSnapshot[];
132
+ }
133
+ interface MemoryRunState {
134
+ events: HarnessEventRecord[];
135
+ transcript: AgentMessage[];
136
+ metrics?: RunMetrics;
137
+ snapshots: Map<string, HarnessSnapshot>;
138
+ cursors?: RunCursorState;
139
+ contextSnapshots: Map<string, ContextSnapshot>;
140
+ }
141
+ declare class MemoryRunStorage extends HarnessRunStorage {
142
+ readonly id = "memory";
143
+ label: string;
144
+ private readonly runs;
145
+ openRun(input: OpenRunStoreInput): HarnessRunStore;
146
+ }
147
+ declare class MemorySessionStorage extends HarnessSessionStorage {
148
+ readonly id = "memory-session";
149
+ label: string;
150
+ private readonly sessions;
151
+ private readonly runStates;
152
+ createSession(input: CreateStoredSessionInput): HarnessSessionSummary;
153
+ getSession(sessionId: string): HarnessSessionSummary | undefined;
154
+ listSessions(query?: SessionListQuery): SessionListResult;
155
+ touchSession(input: TouchStoredSessionInput): void;
156
+ deleteSession(sessionId: string): boolean;
157
+ createRun(input: CreateStoredRunInput): StoredRunSummary;
158
+ getLatestRun(sessionId: string): StoredRunSummary | undefined;
159
+ listRuns(sessionId: string): StoredRunSummary[];
160
+ openRun(input: OpenRunStoreInput): HarnessRunStore;
161
+ }
162
+ declare class MemoryRunStore extends HarnessRunStore {
163
+ readonly runId: string;
164
+ private readonly state;
165
+ readonly outputDir: undefined;
166
+ readonly runDir: undefined;
167
+ constructor(runId: string, state: MemoryRunState);
168
+ init(): void;
169
+ recordEvent(event: HarnessEventRecord): void;
170
+ loadEvents(): HarnessEventRecord[];
171
+ saveTranscript(messages: AgentMessage[]): void;
172
+ loadTranscript(): AgentMessage[];
173
+ saveMetrics(metrics: RunMetrics): void;
174
+ saveSnapshot(snapshot: HarnessSnapshot): void;
175
+ loadSnapshots(): HarnessSnapshot[];
176
+ deleteSnapshot(id: string): void;
177
+ saveCursors(cursors: RunCursorState): void;
178
+ loadCursors(): RunCursorState | undefined;
179
+ saveContextSnapshot(snapshot: ContextSnapshot): void;
180
+ loadContextSnapshots(): ContextSnapshot[];
181
+ }
182
+
183
+ export { type CreateStoredRunInput, type CreateStoredSessionInput, HarnessRunStorage, HarnessRunStore, HarnessSessionStorage, type HarnessSessionSummary, MemoryRunStorage, MemoryRunStore, MemorySessionStorage, NoopRunStorage, NoopRunStore, type OpenRunStoreInput, type RunCursorState, type SessionListQuery, type SessionListResult, type StoredRunSummary, type TouchStoredSessionInput };
@@ -1,8 +1,10 @@
1
- import { d as HarnessEventQuery, e as HarnessEventRecord, H as HarnessEvent, a as HarnessEventClass } from './events-D4xcDi53.js';
2
- import { a0 as HarnessTranscriptSession, X as HarnessSnapshotSession, S as HarnessModeSelector, r as AgentSharedState, M as ContextSnapshot } from './context-BfpLqV11.js';
3
- import { f as HarnessSession, b as HarnessAppConfig, p as HarnessUserInput, S as SendOptions, q as SendResult, r as StreamOptions, e as HarnessRunStream, j as HarnessSessionStatus, a as HarnessAgentManifest, T as ToolApprovalHandle, h as HarnessSessionListener, g as HarnessSessionEventListener, W as WaitForEventOptions, k as HarnessSessionStore, m as HarnessSessionStoreListener } from './approval-D_G2w-fW.js';
4
- import { A as AgentDefinition } from './model-provider-Ch7tzk1x.js';
5
- import { d as HarnessSessionSummary, S as SessionListQuery, i as SessionListResult } from './storage-DCZE_hES.js';
1
+ import { j as HarnessEventQuery, k as HarnessEventRecord, f as HarnessEvent, g as HarnessEventClass } from './errors-hpkW3tfR.js';
2
+ import { ad as HarnessTranscriptSession, a8 as HarnessSnapshotSession, a2 as HarnessModeSelector, r as AgentSharedState, M as ContextSnapshot } from './context-Bz9C_rL9.js';
3
+ import { e as HarnessSession, b as HarnessAppConfig, o as HarnessUserInput, S as SendOptions, p as SendResult, q as StreamOptions, d as HarnessRunStream, i as HarnessSessionStatus, a as HarnessAgentManifest, T as ToolApprovalHandle, g as HarnessSessionListener, f as HarnessSessionEventListener, W as WaitForEventOptions, j as HarnessSessionStore, l as HarnessSessionStoreListener } from './approval-7e8HD-35.js';
4
+ import { A as AgentDefinition } from './model-provider-DGkLQJWP.js';
5
+ import { SandboxCloseInput } from './runner/sandbox.js';
6
+ import { HarnessSessionSummary, SessionListQuery, SessionListResult } from './runner/storage.js';
7
+ import './errors-DHHy8V3O.js';
6
8
 
7
9
  interface CreateHarnessSessionInternalOptions {
8
10
  sessionId?: string;
@@ -50,7 +52,7 @@ declare class HarnessSessionImpl implements HarnessSession {
50
52
  on(listener: HarnessSessionListener): () => void;
51
53
  onEvent<TPayload, TEvent extends HarnessEvent<TPayload>>(eventClass: HarnessEventClass<TPayload, TEvent>, listener: HarnessSessionEventListener<TEvent>): () => void;
52
54
  waitForEvent<TPayload, TEvent extends HarnessEvent<TPayload>>(eventClass: HarnessEventClass<TPayload, TEvent>, options?: WaitForEventOptions): Promise<TEvent>;
53
- close(): Promise<void>;
55
+ close(input?: SandboxCloseInput): Promise<void>;
54
56
  hydrate(): Promise<void>;
55
57
  private notify;
56
58
  private notifyStatus;
@@ -59,6 +61,7 @@ declare class HarnessSessionImpl implements HarnessSession {
59
61
  private resolveModeSelector;
60
62
  private requestToolApproval;
61
63
  private cancelActiveRun;
64
+ private closeAfterFatal;
62
65
  }
63
66
  declare function createHarnessSession(config: HarnessAppConfig, options?: CreateHarnessSessionInternalOptions): Promise<HarnessSession>;
64
67
 
@@ -67,6 +70,7 @@ declare class HarnessSessionStoreImpl implements HarnessSessionStore {
67
70
  private readonly sessions;
68
71
  private readonly unsubscriptions;
69
72
  private readonly latestRunIds;
73
+ private readonly sessionSandboxes;
70
74
  private readonly listeners;
71
75
  private readonly storage;
72
76
  private closed;
@@ -88,6 +92,7 @@ declare class HarnessSessionStoreImpl implements HarnessSessionStore {
88
92
  getAgentManifest(sessionId: string): HarnessAgentManifest | undefined;
89
93
  on(listener: HarnessSessionStoreListener): () => void;
90
94
  private notify;
95
+ private closeTrackedSession;
91
96
  }
92
97
  declare function createHarnessSessionStore(config: HarnessAppConfig): Promise<HarnessSessionStore>;
93
98
 
package/dist/runner.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- export { c as createHarnessSession, b as createHarnessSessionStore } from './runner-B41JEovO.js';
2
- export { a as HarnessAgentManifest, b as HarnessAppConfig, e as HarnessRunStream, f as HarnessSession, g as HarnessSessionEventListener, h as HarnessSessionListener, i as HarnessSessionPhase, j as HarnessSessionStatus, k as HarnessSessionStore, l as HarnessSessionStoreEvent, m as HarnessSessionStoreListener, o as HarnessStreamEvent, p as HarnessUserInput, S as SendOptions, q as SendResult, r as StreamOptions, W as WaitForEventOptions } from './approval-D_G2w-fW.js';
3
- export { E as EventCursor } from './events-D4xcDi53.js';
4
- export { U as HarnessSnapshot, V as HarnessSnapshotCreator, W as HarnessSnapshotInput, X as HarnessSnapshotSession, Y as HarnessSnapshotSummary, a0 as HarnessTranscriptSession, aa as TranscriptBranch, ab as TranscriptCursor, ac as TranscriptQuery, ad as TranscriptSeekTarget } from './context-BfpLqV11.js';
5
- export { d as HarnessSessionSummary, S as SessionListQuery, i as SessionListResult } from './storage-DCZE_hES.js';
6
- import './model-provider-Ch7tzk1x.js';
1
+ export { c as createHarnessSession, b as createHarnessSessionStore } from './runner-BYG9ARAV.js';
2
+ export { a as HarnessAgentManifest, b as HarnessAppConfig, d as HarnessRunStream, e as HarnessSession, f as HarnessSessionEventListener, g as HarnessSessionListener, h as HarnessSessionPhase, i as HarnessSessionStatus, j as HarnessSessionStore, k as HarnessSessionStoreEvent, l as HarnessSessionStoreListener, n as HarnessStreamEvent, o as HarnessUserInput, S as SendOptions, p as SendResult, q as StreamOptions, W as WaitForEventOptions } from './approval-7e8HD-35.js';
3
+ export { E as EventCursor, H as HarnessErrorCategory, a as HarnessErrorCode, b as HarnessErrorContext, c as HarnessErrorPolicy, d as HarnessErrorSeverity, e as HarnessErrorShape, m as HarnessRetryPolicy } from './errors-hpkW3tfR.js';
4
+ export { a5 as HarnessSnapshot, a6 as HarnessSnapshotCreator, a7 as HarnessSnapshotInput, a8 as HarnessSnapshotSession, a9 as HarnessSnapshotSummary, ad as HarnessTranscriptSession, an as TranscriptBranch, ao as TranscriptCursor, ap as TranscriptQuery, aq as TranscriptSeekTarget } from './context-Bz9C_rL9.js';
5
+ export { HarnessSessionSummary, SessionListQuery, SessionListResult } from './runner/storage.js';
6
+ export { n as normalizeHarnessError, s as sanitizeHarnessError } from './errors-DHHy8V3O.js';
7
+ import './model-provider-DGkLQJWP.js';
7
8
  import './role-BN6KhQxx.js';
8
9
  import './runner/sandbox.js';
9
- import './hook-CfBbhUQf.js';
10
- import './types-BPmsw-mF.js';
10
+ import './hook-DD7uuzE3.js';
11
+ import './metrics-DMN8bfY6.js';
package/dist/runner.js CHANGED
@@ -2,17 +2,23 @@ import {
2
2
  HarnessSessionPhase,
3
3
  createHarnessSession,
4
4
  createHarnessSessionStore
5
- } from "./chunk-QEVKKJ7N.js";
5
+ } from "./chunk-BLLQSHQI.js";
6
6
  import "./chunk-Q73WH5D7.js";
7
- import "./chunk-Q44U2CMM.js";
8
- import "./chunk-ZU6ADDET.js";
7
+ import {
8
+ normalizeHarnessError,
9
+ sanitizeHarnessError
10
+ } from "./chunk-2NQ3JL7K.js";
11
+ import "./chunk-IWHCNKHK.js";
9
12
  import "./chunk-ONYDIU4X.js";
10
- import "./chunk-JIJHGB6H.js";
13
+ import "./chunk-NCSQEUQC.js";
14
+ import "./chunk-3QOAFCCZ.js";
11
15
  import "./chunk-OBKS4AJR.js";
12
- import "./chunk-B4Q6CPYO.js";
16
+ import "./chunk-TCHZYK5Y.js";
13
17
  export {
14
18
  HarnessSessionPhase,
15
19
  createHarnessSession,
16
- createHarnessSessionStore
20
+ createHarnessSessionStore,
21
+ normalizeHarnessError,
22
+ sanitizeHarnessError
17
23
  };
18
24
  //# sourceMappingURL=runner.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harness-kernel/core",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "Pure runtime contracts and session kernel for Harness Kernel.",
6
6
  "license": "Apache-2.0",
@@ -103,7 +103,7 @@
103
103
  "scripts": {
104
104
  "build": "tsup",
105
105
  "typecheck": "tsc --noEmit",
106
- "test": "tsx src/schema/schema.test.ts && tsx src/runtime/events-schema.test.ts && tsx src/engine/provider-registry.test.ts && tsx src/session/model-resolution.test.ts && tsx src/session/tool-approval.test.ts && tsx src/session/session-store.test.ts && tsx src/boundaries.test.ts"
106
+ "test": "tsx src/schema/schema.test.ts && tsx src/runtime/errors.test.ts && tsx src/runtime/events-schema.test.ts && tsx src/logging/normalize.test.ts && tsx src/engine/provider-registry.test.ts && tsx src/session/model-resolution.test.ts && tsx src/session/tool-approval.test.ts && tsx src/session/session-store.test.ts && tsx src/session/queue.test.ts && tsx src/session/error-policy.test.ts && tsx src/boundaries.test.ts"
107
107
  },
108
108
  "devDependencies": {
109
109
  "zod": "^4.4.3"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/runtime/events.ts"],"sourcesContent":["import { HarnessEvent } from \"./types.js\";\nimport { s } from \"../schema/index.js\";\n\nexport class RunStartEvent extends HarnessEvent<{\n agentKey: string;\n modeId: string;\n workDir: string;\n outputDir?: string;\n}> {\n static override type = \"run:start\";\n static override schema = s.object({\n agentKey: s.string().min(1),\n modeId: s.string().min(1),\n workDir: s.string(),\n outputDir: s.string().optional(),\n });\n}\n\nexport class TurnStartEvent extends HarnessEvent<{\n turnId: string;\n input: string;\n}> {\n static override type = \"turn:start\";\n static override schema = s.object({\n turnId: s.string().min(1),\n input: s.string(),\n });\n}\n\nexport class ContextReadyEvent extends HarnessEvent<{\n snapshotId: string;\n providerCount: number;\n contributionCount: number;\n}> {\n static override type = \"context:ready\";\n static override schema = s.object({\n snapshotId: s.string().min(1),\n providerCount: s.number().int().min(0),\n contributionCount: s.number().int().min(0),\n });\n}\n\nexport class ModelBeforeEvent extends HarnessEvent<{\n model: string;\n messageCount: number;\n}> {\n static override type = \"model:before\";\n static override schema = s.object({\n model: s.string().min(1),\n messageCount: s.number().int().min(0),\n });\n}\n\nexport class ModelAfterEvent extends HarnessEvent<{\n model: string;\n content: string;\n usage?: unknown;\n finishReason?: string;\n}> {\n static override type = \"model:after\";\n static override schema = s.object({\n model: s.string().min(1),\n content: s.string(),\n usage: s.unknown().optional(),\n finishReason: s.string().optional(),\n });\n}\n\nexport class ToolStartEvent extends HarnessEvent<{\n id: string;\n name: string;\n args: unknown;\n}> {\n static override type = \"tool:start\";\n static override schema = s.object({\n id: s.string().min(1),\n name: s.string().min(1),\n args: s.unknown(),\n });\n}\n\nexport class ToolEndEvent extends HarnessEvent<{\n id: string;\n name: string;\n durationMs: number;\n result: unknown;\n}> {\n static override type = \"tool:end\";\n static override schema = s.object({\n id: s.string().min(1),\n name: s.string().min(1),\n durationMs: s.number().min(0),\n result: s.unknown(),\n });\n}\n\nexport class TurnEndEvent extends HarnessEvent<{\n turnId: string;\n finalAnswer: string;\n}> {\n static override type = \"turn:end\";\n static override schema = s.object({\n turnId: s.string().min(1),\n finalAnswer: s.string(),\n });\n}\n\nexport class RunEndEvent extends HarnessEvent<{\n metrics: unknown;\n finalAnswer: string;\n}> {\n static override type = \"run:end\";\n static override schema = s.object({\n metrics: s.unknown(),\n finalAnswer: s.string(),\n });\n}\n\nexport class ErrorEvent extends HarnessEvent<{\n message: string;\n recoverable?: boolean;\n details?: unknown;\n}> {\n static override type = \"error\";\n static override schema = s.object({\n message: s.string(),\n recoverable: s.boolean().optional(),\n details: s.unknown().optional(),\n });\n}\n\nexport class MessageStartEvent extends HarnessEvent<{\n role: string;\n}> {\n static override type = \"message:start\";\n static override schema = s.object({\n role: s.string().min(1),\n });\n}\n\nexport class MessageDeltaEvent extends HarnessEvent<{\n role: \"assistant\";\n text: string;\n}> {\n static override type = \"message:delta\";\n static override schema = s.object({\n role: s.literal(\"assistant\"),\n text: s.string(),\n });\n}\n\nexport class MessageEndEvent extends HarnessEvent<{\n message: unknown;\n}> {\n static override type = \"message:end\";\n static override schema = s.object({\n message: s.unknown(),\n });\n}\n\nexport class ToolApprovalRequestedEvent extends HarnessEvent<{\n id: string;\n name: string;\n args: unknown;\n modeId?: string;\n risk?: string;\n permissions?: unknown[];\n}> {\n static override type = \"tool:approval_requested\";\n static override schema = s.object({\n id: s.string().min(1),\n name: s.string().min(1),\n args: s.unknown(),\n modeId: s.string().optional(),\n risk: s.string().optional(),\n permissions: s.array(s.unknown()).optional(),\n });\n}\n\nexport class ToolApprovalResolvedEvent extends HarnessEvent<{\n id: string;\n name: string;\n args: unknown;\n decision: \"approved\" | \"denied\";\n modeId?: string;\n}> {\n static override type = \"tool:approval_resolved\";\n static override schema = s.object({\n id: s.string().min(1),\n name: s.string().min(1),\n args: s.unknown(),\n decision: s.enum([\"approved\", \"denied\"] as const),\n modeId: s.string().optional(),\n });\n}\n\nexport class ModeChangedEvent extends HarnessEvent<{\n previousMode: string;\n mode: string;\n input?: unknown;\n}> {\n static override type = \"mode:changed\";\n static override schema = s.object({\n previousMode: s.string().min(1),\n mode: s.string().min(1),\n input: s.unknown().optional(),\n });\n}\n\nexport class SnapshotCreatedEvent extends HarnessEvent<{\n snapshot: unknown;\n}> {\n static override type = \"snapshot:created\";\n static override schema = s.object({\n snapshot: s.unknown(),\n });\n}\n\nexport class SnapshotRestoredEvent extends HarnessEvent<{\n snapshot: unknown;\n}> {\n static override type = \"snapshot:restored\";\n static override schema = s.object({\n snapshot: s.unknown(),\n });\n}\n\nexport class SnapshotDeletedEvent extends HarnessEvent<{\n snapshot: unknown;\n}> {\n static override type = \"snapshot:deleted\";\n static override schema = s.object({\n snapshot: s.unknown(),\n });\n}\n\nexport class TranscriptCursorChangedEvent extends HarnessEvent<{\n previousCursor: unknown;\n cursor: unknown;\n}> {\n static override type = \"transcript:cursor_changed\";\n static override schema = s.object({\n previousCursor: s.unknown(),\n cursor: s.unknown(),\n });\n}\n\nexport const runtimeEventClasses = [\n RunStartEvent,\n TurnStartEvent,\n ContextReadyEvent,\n ModelBeforeEvent,\n ModelAfterEvent,\n ToolStartEvent,\n ToolEndEvent,\n TurnEndEvent,\n RunEndEvent,\n ErrorEvent,\n MessageStartEvent,\n MessageDeltaEvent,\n MessageEndEvent,\n ToolApprovalRequestedEvent,\n ToolApprovalResolvedEvent,\n ModeChangedEvent,\n SnapshotCreatedEvent,\n SnapshotRestoredEvent,\n SnapshotDeletedEvent,\n TranscriptCursorChangedEvent,\n];\n"],"mappings":";;;;;;;;AAGO,IAAM,gBAAN,cAA4B,aAKhC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IAC1B,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACxB,SAAS,EAAE,OAAO;AAAA,IAClB,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AACH;AAEO,IAAM,iBAAN,cAA6B,aAGjC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACxB,OAAO,EAAE,OAAO;AAAA,EAClB,CAAC;AACH;AAEO,IAAM,oBAAN,cAAgC,aAIpC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IAC5B,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,IACrC,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EAC3C,CAAC;AACH;AAEO,IAAM,mBAAN,cAA+B,aAGnC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACvB,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;AAAA,EACtC,CAAC;AACH;AAEO,IAAM,kBAAN,cAA8B,aAKlC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACvB,SAAS,EAAE,OAAO;AAAA,IAClB,OAAO,EAAE,QAAQ,EAAE,SAAS;AAAA,IAC5B,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,CAAC;AACH;AAEO,IAAM,iBAAN,cAA6B,aAIjC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,MAAM,EAAE,QAAQ;AAAA,EAClB,CAAC;AACH;AAEO,IAAM,eAAN,cAA2B,aAK/B;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IAC5B,QAAQ,EAAE,QAAQ;AAAA,EACpB,CAAC;AACH;AAEO,IAAM,eAAN,cAA2B,aAG/B;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACxB,aAAa,EAAE,OAAO;AAAA,EACxB,CAAC;AACH;AAEO,IAAM,cAAN,cAA0B,aAG9B;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,SAAS,EAAE,QAAQ;AAAA,IACnB,aAAa,EAAE,OAAO;AAAA,EACxB,CAAC;AACH;AAEO,IAAM,aAAN,cAAyB,aAI7B;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,SAAS,EAAE,OAAO;AAAA,IAClB,aAAa,EAAE,QAAQ,EAAE,SAAS;AAAA,IAClC,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,CAAC;AACH;AAEO,IAAM,oBAAN,cAAgC,aAEpC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,CAAC;AACH;AAEO,IAAM,oBAAN,cAAgC,aAGpC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,MAAM,EAAE,QAAQ,WAAW;AAAA,IAC3B,MAAM,EAAE,OAAO;AAAA,EACjB,CAAC;AACH;AAEO,IAAM,kBAAN,cAA8B,aAElC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,SAAS,EAAE,QAAQ;AAAA,EACrB,CAAC;AACH;AAEO,IAAM,6BAAN,cAAyC,aAO7C;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,MAAM,EAAE,QAAQ;AAAA,IAChB,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EAC7C,CAAC;AACH;AAEO,IAAM,4BAAN,cAAwC,aAM5C;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,MAAM,EAAE,QAAQ;AAAA,IAChB,UAAU,EAAE,KAAK,CAAC,YAAY,QAAQ,CAAU;AAAA,IAChD,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,CAAC;AACH;AAEO,IAAM,mBAAN,cAA+B,aAInC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IAC9B,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,OAAO,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,CAAC;AACH;AAEO,IAAM,uBAAN,cAAmC,aAEvC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,UAAU,EAAE,QAAQ;AAAA,EACtB,CAAC;AACH;AAEO,IAAM,wBAAN,cAAoC,aAExC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,UAAU,EAAE,QAAQ;AAAA,EACtB,CAAC;AACH;AAEO,IAAM,uBAAN,cAAmC,aAEvC;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,UAAU,EAAE,QAAQ;AAAA,EACtB,CAAC;AACH;AAEO,IAAM,+BAAN,cAA2C,aAG/C;AAAA,EACD,OAAgB,OAAO;AAAA,EACvB,OAAgB,SAAS,EAAE,OAAO;AAAA,IAChC,gBAAgB,EAAE,QAAQ;AAAA,IAC1B,QAAQ,EAAE,QAAQ;AAAA,EACpB,CAAC;AACH;AAEO,IAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;","names":[]}