@tessar/core 0.1.0-alpha.0 → 0.1.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 (147) hide show
  1. package/README.md +168 -31
  2. package/dist/agent.d.ts +37 -87
  3. package/dist/agent.js +101 -1116
  4. package/dist/agent.js.map +1 -1
  5. package/dist/controller.d.ts +13 -4
  6. package/dist/controller.js +184 -19
  7. package/dist/controller.js.map +1 -1
  8. package/dist/engine/call.d.ts +8 -0
  9. package/dist/engine/call.js +136 -0
  10. package/dist/engine/call.js.map +1 -0
  11. package/dist/engine/checkpoint.d.ts +11 -0
  12. package/dist/engine/checkpoint.js +187 -0
  13. package/dist/engine/checkpoint.js.map +1 -0
  14. package/dist/engine/delivery.js +6 -13
  15. package/dist/engine/delivery.js.map +1 -1
  16. package/dist/engine/execution.d.ts +5 -0
  17. package/dist/engine/execution.js +292 -0
  18. package/dist/engine/execution.js.map +1 -0
  19. package/dist/engine/frame.d.ts +77 -0
  20. package/dist/engine/frame.js +83 -0
  21. package/dist/engine/frame.js.map +1 -0
  22. package/dist/engine/hooks.d.ts +4 -0
  23. package/dist/engine/hooks.js +138 -0
  24. package/dist/engine/hooks.js.map +1 -0
  25. package/dist/engine/interrupt.d.ts +1 -1
  26. package/dist/engine/lineage.d.ts +1 -1
  27. package/dist/engine/recovery.d.ts +1 -2
  28. package/dist/engine/recovery.js +4 -2
  29. package/dist/engine/recovery.js.map +1 -1
  30. package/dist/engine/resume.d.ts +12 -1
  31. package/dist/engine/resume.js +189 -0
  32. package/dist/engine/resume.js.map +1 -1
  33. package/dist/engine/runtime.d.ts +16 -0
  34. package/dist/engine/runtime.js +29 -0
  35. package/dist/engine/runtime.js.map +1 -0
  36. package/dist/engine/services.d.ts +3 -0
  37. package/dist/engine/services.js +125 -0
  38. package/dist/engine/services.js.map +1 -0
  39. package/dist/engine/tool-executor.d.ts +8 -2
  40. package/dist/engine/tool-executor.js +266 -3
  41. package/dist/engine/tool-executor.js.map +1 -1
  42. package/dist/engine/tracked-effects.js +5 -6
  43. package/dist/engine/tracked-effects.js.map +1 -1
  44. package/dist/errors.js +24 -9
  45. package/dist/errors.js.map +1 -1
  46. package/dist/events/definition.d.ts +2 -0
  47. package/dist/events/definition.js +2 -0
  48. package/dist/events/definition.js.map +1 -1
  49. package/dist/events/dispatcher.d.ts +1 -1
  50. package/dist/events/dispatcher.js +35 -4
  51. package/dist/events/dispatcher.js.map +1 -1
  52. package/dist/events/observer.d.ts +3 -0
  53. package/dist/events/observer.js +13 -0
  54. package/dist/events/observer.js.map +1 -0
  55. package/dist/events/{catalog.d.ts → type.d.ts} +170 -47
  56. package/dist/events/type.js +175 -0
  57. package/dist/events/type.js.map +1 -0
  58. package/dist/identity.d.ts +1 -0
  59. package/dist/identity.js +23 -0
  60. package/dist/identity.js.map +1 -0
  61. package/dist/index.d.ts +4 -2
  62. package/dist/index.js +4 -2
  63. package/dist/index.js.map +1 -1
  64. package/dist/instructions/instruction.d.ts +2 -0
  65. package/dist/instructions/instruction.js +10 -3
  66. package/dist/instructions/instruction.js.map +1 -1
  67. package/dist/loop.d.ts +5 -5
  68. package/dist/loop.js +44 -204
  69. package/dist/loop.js.map +1 -1
  70. package/dist/messages/codec.js +4 -2
  71. package/dist/messages/codec.js.map +1 -1
  72. package/dist/messages/message.d.ts +2 -3
  73. package/dist/messages/message.js +3 -3
  74. package/dist/messages/message.js.map +1 -1
  75. package/dist/models/contract.d.ts +15 -0
  76. package/dist/models/options.d.ts +3 -0
  77. package/dist/models/options.js +13 -0
  78. package/dist/models/options.js.map +1 -0
  79. package/dist/models/registry.d.ts +2 -0
  80. package/dist/models/registry.js +18 -1
  81. package/dist/models/registry.js.map +1 -1
  82. package/dist/models/resolver.d.ts +4 -2
  83. package/dist/models/resolver.js +9 -4
  84. package/dist/models/resolver.js.map +1 -1
  85. package/dist/models/stream.d.ts +6 -0
  86. package/dist/models/stream.js +61 -2
  87. package/dist/models/stream.js.map +1 -1
  88. package/dist/plugins/context.d.ts +27 -2
  89. package/dist/plugins/host.d.ts +5 -1
  90. package/dist/plugins/host.js +33 -11
  91. package/dist/plugins/host.js.map +1 -1
  92. package/dist/plugins/registry.d.ts +1 -1
  93. package/dist/plugins/registry.js +18 -10
  94. package/dist/plugins/registry.js.map +1 -1
  95. package/dist/session.d.ts +16 -6
  96. package/dist/session.js +126 -55
  97. package/dist/session.js.map +1 -1
  98. package/dist/state/commit.d.ts +5 -0
  99. package/dist/state/commit.js +50 -5
  100. package/dist/state/commit.js.map +1 -1
  101. package/dist/state/fork.js +27 -6
  102. package/dist/state/fork.js.map +1 -1
  103. package/dist/state/memory-backend.js +307 -38
  104. package/dist/state/memory-backend.js.map +1 -1
  105. package/dist/state/plugin-state.js +73 -18
  106. package/dist/state/plugin-state.js.map +1 -1
  107. package/dist/state/queries.d.ts +14 -14
  108. package/dist/state/queries.js +150 -48
  109. package/dist/state/queries.js.map +1 -1
  110. package/dist/state/schema.d.ts +47 -6
  111. package/dist/state/schema.js +9 -1
  112. package/dist/state/schema.js.map +1 -1
  113. package/dist/state/scope.js +3 -2
  114. package/dist/state/scope.js.map +1 -1
  115. package/dist/state/sessions.d.ts +2 -0
  116. package/dist/state/sessions.js +21 -0
  117. package/dist/state/sessions.js.map +1 -0
  118. package/dist/state/storage-ports.d.ts +16 -2
  119. package/dist/state/threads.d.ts +1 -0
  120. package/dist/state/threads.js +77 -12
  121. package/dist/state/threads.js.map +1 -1
  122. package/dist/testing/harness.d.ts +2 -1
  123. package/dist/testing/harness.js +6 -4
  124. package/dist/testing/harness.js.map +1 -1
  125. package/dist/testing/scripted-provider.d.ts +1 -0
  126. package/dist/testing/scripted-provider.js +7 -0
  127. package/dist/testing/scripted-provider.js.map +1 -1
  128. package/dist/testing/storage-conformance.js +111 -0
  129. package/dist/testing/storage-conformance.js.map +1 -1
  130. package/dist/thread.d.ts +4 -2
  131. package/dist/thread.js +14 -6
  132. package/dist/thread.js.map +1 -1
  133. package/dist/tools/tool.d.ts +11 -12
  134. package/dist/tools/tool.js +27 -10
  135. package/dist/tools/tool.js.map +1 -1
  136. package/dist/trace/records.d.ts +11 -6
  137. package/dist/trace/records.js +28 -1
  138. package/dist/trace/records.js.map +1 -1
  139. package/package.json +7 -1
  140. package/dist/events/catalog.js +0 -89
  141. package/dist/events/catalog.js.map +0 -1
  142. package/dist/models/cache.d.ts +0 -12
  143. package/dist/models/cache.js +0 -17
  144. package/dist/models/cache.js.map +0 -1
  145. package/dist/session-events.d.ts +0 -60
  146. package/dist/session-events.js +0 -14
  147. package/dist/session-events.js.map +0 -1
@@ -1,27 +1,44 @@
1
- import { requireId } from "../errors.js";
2
- import { immutable } from "../json.js";
3
- import { normalizeContent } from "../messages/message.js";
1
+ import { z } from "zod";
2
+ import { fail, requireId } from "../errors.js";
3
+ import { assertJson, immutable, } from "../json.js";
4
+ import { ToolMessage } from "../messages/message.js";
4
5
  export class Tool {
5
6
  name;
6
7
  description;
7
- input;
8
+ schema;
9
+ jsonSchema;
8
10
  execute;
9
11
  recovery;
10
12
  constructor(definition) {
11
13
  this.name = requireId(definition.name, "tool name");
12
14
  this.description = definition.description;
13
- this.input = definition.input;
14
- this.execute = definition.execute;
15
+ this.schema = definition.schema;
16
+ // Zod attaches a non-enumerable Standard Schema validator; keep only JSON.
17
+ this.jsonSchema = immutable(JSON.parse(JSON.stringify(z.toJSONSchema(definition.schema, { io: "input" }))));
18
+ this.execute = async (input, context) => normalizeToolOutput(await definition.execute(input, context));
15
19
  this.recovery = definition.recovery;
16
20
  }
17
21
  }
18
22
  export function createTool(definition) {
19
23
  return new Tool(definition);
20
24
  }
21
- export function toolResult(content, metadata) {
22
- return immutable({
23
- content: normalizeContent(content),
24
- ...(metadata ? { metadata } : {}),
25
+ /** @internal Normalize developer results and bind runtime correlation. */
26
+ export function normalizeToolOutput(value, toolCallId) {
27
+ if (!(value instanceof ToolMessage)) {
28
+ if (value === undefined)
29
+ fail("InvalidToolResult", "Tool execute must return a result");
30
+ assertJson(value);
31
+ value = new ToolMessage(typeof value === "string" ? value : [{ type: "data", data: value }]);
32
+ }
33
+ if (toolCallId === undefined || value.toolCallId === toolCallId)
34
+ return value;
35
+ if (value.toolCallId !== undefined)
36
+ fail("InvalidMessage", "Tool result belongs to a different tool call");
37
+ return new ToolMessage(value.content, {
38
+ id: value.id,
39
+ metadata: value.metadata,
40
+ providerState: value.providerState,
41
+ toolCallId,
25
42
  });
26
43
  }
27
44
  //# sourceMappingURL=tool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAmC,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAmC1D,MAAM,OAAO,IAAI;IACN,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,KAAK,CAAqB;IAC1B,OAAO,CAA+B;IACtC,QAAQ,CAAmB;IACpC,YAAY,UAA6B;QACvC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACtC,CAAC;CACF;AACD,MAAM,UAAU,UAAU,CAAI,UAA6B;IACzD,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AACD,MAAM,UAAU,UAAU,CACxB,OAAwC,EACxC,QAAqB;IAErB,OAAO,SAAS,CAAC;QACf,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tools/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,SAAS,GAGV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAiCrD,MAAM,OAAO,IAAI;IACN,IAAI,CAAS;IACb,WAAW,CAAS;IACpB,MAAM,CAAe;IACrB,UAAU,CAAa;IACvB,OAAO,CAGU;IACjB,QAAQ,CAAmB;IACpC,YAAY,UAA6B;QACvC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,2EAA2E;QAC3E,IAAI,CAAC,UAAU,GAAG,SAAS,CACzB,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CACnE,CACY,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACtC,mBAAmB,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IACtC,CAAC;CACF;AACD,MAAM,UAAU,UAAU,CAAI,UAA6B;IACzD,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AACD,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CACjC,KAAiB,EACjB,UAAmB;IAEnB,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS;YACrB,IAAI,CAAC,mBAAmB,EAAE,mCAAmC,CAAC,CAAC;QACjE,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,GAAG,IAAI,WAAW,CACrB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CACpE,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAChC,IAAI,CAAC,gBAAgB,EAAE,8CAA8C,CAAC,CAAC;IACzE,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;QACpC,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU;KACX,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +1,14 @@
1
1
  import type { ErrorInfo } from "../errors.js";
2
- import type { JsonObject } from "../json.js";
3
- import type { ToolResult } from "../tools/tool.js";
4
- import type { ModelUsage, UsageSummary } from "./usage.js";
2
+ import type { JsonObject, Clock, IdGenerator } from "../json.js";
3
+ import type { MessageData } from "../messages/message.js";
4
+ import { type ModelUsage, type UsageSummary } from "./usage.js";
5
+ import type { Checkpoint } from "../state/schema.js";
6
+ import type { ModelRef } from "../models/contract.js";
7
+ /** @internal Creates a record only within an active turn. */
8
+ export declare function createModelAttempt(context: {
9
+ ids: IdGenerator;
10
+ clock: Clock;
11
+ }, checkpoint: Checkpoint, model: ModelRef, purpose: ModelAttemptRecord["purpose"], parentToolExecutionId?: string | null): ModelAttemptRecord;
5
12
  export type StreamStatus = "pending" | "running" | "suspended" | "interrupted" | "completed" | "stopped" | "failed" | "cancelled";
6
13
  export interface StreamRecord {
7
14
  outputMessageIds: readonly string[];
@@ -49,7 +56,6 @@ export interface ModelAttemptRecord {
49
56
  providerRequestId: string | null;
50
57
  responseMessageId: string | null;
51
58
  contextRevision: number;
52
- requestSnapshotRef: string | null;
53
59
  startedAt: string;
54
60
  firstOutputAt: string | null;
55
61
  endedAt: string | null;
@@ -78,8 +84,7 @@ export interface ToolExecutionRecord {
78
84
  endedAt: string | null;
79
85
  durationMs: number | null;
80
86
  resultMessageId: string | null;
81
- resultRef: string | null;
82
- result: ToolResult | null;
87
+ result: MessageData | null;
83
88
  error: ErrorInfo | null;
84
89
  idempotencyKey: string | null;
85
90
  }
@@ -1,2 +1,29 @@
1
- export {};
1
+ import { normalizeUsage } from "./usage.js";
2
+ /** @internal Creates a record only within an active turn. */
3
+ export function createModelAttempt(context, checkpoint, model, purpose, parentToolExecutionId = null) {
4
+ return {
5
+ id: context.ids.next("attempt"),
6
+ turnId: checkpoint.execution.turnId,
7
+ streamId: checkpoint.execution.streamId,
8
+ scope: checkpoint.state.scope,
9
+ callId: context.ids.next("call"),
10
+ attemptIndex: 0,
11
+ purpose,
12
+ parentToolExecutionId,
13
+ providerId: model.providerId,
14
+ modelId: model.modelId,
15
+ providerRequestId: null,
16
+ responseMessageId: null,
17
+ contextRevision: checkpoint.revision,
18
+ startedAt: context.clock.now(),
19
+ firstOutputAt: null,
20
+ endedAt: null,
21
+ durationMs: null,
22
+ timeToFirstOutputMs: null,
23
+ status: "running",
24
+ finishReason: null,
25
+ error: null,
26
+ usage: normalizeUsage({}),
27
+ };
28
+ }
2
29
  //# sourceMappingURL=records.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/trace/records.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/trace/records.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAsC,MAAM,YAAY,CAAC;AAIhF,6DAA6D;AAC7D,MAAM,UAAU,kBAAkB,CAChC,OAA2C,EAC3C,UAAsB,EACtB,KAAe,EACf,OAAsC,EACtC,qBAAqB,GAAkB,IAAI;IAE3C,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/B,MAAM,EAAE,UAAU,CAAC,SAAU,CAAC,MAAO;QACrC,QAAQ,EAAE,UAAU,CAAC,SAAU,CAAC,QAAQ;QACxC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK;QAC7B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,YAAY,EAAE,CAAC;QACf,OAAO;QACP,qBAAqB;QACrB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,iBAAiB,EAAE,IAAI;QACvB,iBAAiB,EAAE,IAAI;QACvB,eAAe,EAAE,UAAU,CAAC,QAAQ;QACpC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;QAC9B,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;QAChB,mBAAmB,EAAE,IAAI;QACzB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tessar/core",
3
- "version": "0.1.0-alpha.0",
3
+ "version": "0.1.0",
4
4
  "description": "Minimal agent execution, sessions, hooks, state and checkpoints.",
5
5
  "type": "module",
6
6
  "engines": {
@@ -37,6 +37,12 @@
37
37
  "dist",
38
38
  "src/models/catalog.LICENSE"
39
39
  ],
40
+ "devDependencies": {
41
+ "zod": "^4.6.7"
42
+ },
43
+ "peerDependencies": {
44
+ "zod": "^4.6.7"
45
+ },
40
46
  "scripts": {
41
47
  "build": "tsc -p tsconfig.json",
42
48
  "typecheck": "tsc --noEmit -p tsconfig.json"
@@ -1,89 +0,0 @@
1
- export const AgentEvents = {
2
- Diagnostic: "diagnostic",
3
- Ready: "ready",
4
- Shutdown: "shutdown",
5
- ThreadPrepare: "thread.prepare",
6
- ThreadStarted: "thread.started",
7
- ThreadBeforeShutdown: "thread.before-shutdown",
8
- ThreadShutdown: "thread.shutdown",
9
- ThreadUpdated: "thread.updated",
10
- InputPrepare: "input.prepare",
11
- InputReceived: "input.received",
12
- BeforeStream: "stream.before",
13
- StreamStarted: "stream.started",
14
- StreamBeforeEnd: "stream.before-end",
15
- StreamEnd: "stream.end",
16
- StreamError: "stream.error",
17
- StreamSuspended: "stream.suspended",
18
- StreamResumed: "stream.resumed",
19
- TurnStart: "turn.start",
20
- TurnEnd: "turn.end",
21
- TurnDecision: "turn.decision",
22
- ContextPrepare: "context.prepare",
23
- ToolsSelect: "tools.select",
24
- ModelSelect: "model.select",
25
- ModelRequest: "model.request",
26
- ModelStart: "model.start",
27
- ModelEnd: "model.end",
28
- ModelResponse: "model.response",
29
- ModelUsage: "model.usage",
30
- ModelError: "model.error",
31
- ModelRecover: "model.recover",
32
- MessagePrepare: "message.prepare",
33
- MessageBeforeCommit: "message.before-commit",
34
- MessageDelta: "message.delta",
35
- MessageCommitted: "message.committed",
36
- ToolPrepare: "tool.prepare",
37
- BeforeTool: "tool.before",
38
- ToolStart: "tool.start",
39
- ToolUpdate: "tool.update",
40
- ToolEnd: "tool.end",
41
- ToolError: "tool.error",
42
- ToolResult: "tool.result",
43
- StreamCancel: "stream.cancel",
44
- CheckpointCommitted: "checkpoint.committed",
45
- };
46
- /** Dispatch behavior is internal metadata; public event identifiers are strings. */
47
- export const hookKinds = Object.freeze({
48
- shutdown: "barrier",
49
- "thread.prepare": "transformation",
50
- "thread.before-shutdown": "barrier",
51
- "session.before-close": "barrier",
52
- "input.prepare": "transformation",
53
- "stream.before": "decision",
54
- "stream.before-end": "barrier",
55
- "turn.decision": "decision",
56
- "context.prepare": "transformation",
57
- "tools.select": "transformation",
58
- "model.select": "decision",
59
- "model.request": "transformation",
60
- "model.response": "transformation",
61
- "model.recover": "decision",
62
- "message.prepare": "transformation",
63
- "message.before-commit": "barrier",
64
- "tool.prepare": "transformation",
65
- "tool.before": "decision",
66
- "tool.result": "transformation",
67
- });
68
- export const ToolDecision = {
69
- allow: () => ({ decision: "allow" }),
70
- deny: (reason) => ({ decision: "deny", reason }),
71
- };
72
- export const TurnDecision = {
73
- continue: () => ({ decision: "continue" }),
74
- stop: (reason) => ({ decision: "stop", reason }),
75
- };
76
- export const InputDecision = {
77
- continue: (messages) => ({
78
- messages,
79
- }),
80
- handled: (outcome) => ({
81
- messages: [],
82
- handled: outcome,
83
- }),
84
- reject: (error) => ({
85
- messages: [],
86
- rejected: error,
87
- }),
88
- };
89
- //# sourceMappingURL=catalog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/events/catalog.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import type { ModelProfile } from "./profile.js";
2
- export declare const PROFILE_TTL_MS: number;
3
- export declare class ProfileCache {
4
- private readonly values;
5
- key(provider: string, model: string, endpoint: string, partition: string): string;
6
- get(key: string): {
7
- profile: ModelProfile;
8
- fetchedAt: number;
9
- } | undefined;
10
- set(key: string, profile: ModelProfile, fetchedAt: number): void;
11
- clear(): void;
12
- }
@@ -1,17 +0,0 @@
1
- export const PROFILE_TTL_MS = 24 * 60 * 60 * 1000;
2
- export class ProfileCache {
3
- values = new Map();
4
- key(provider, model, endpoint, partition) {
5
- return JSON.stringify([provider, model, endpoint, partition]);
6
- }
7
- get(key) {
8
- return this.values.get(key);
9
- }
10
- set(key, profile, fetchedAt) {
11
- this.values.set(key, { profile, fetchedAt });
12
- }
13
- clear() {
14
- this.values.clear();
15
- }
16
- }
17
- //# sourceMappingURL=cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/models/cache.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAClD,MAAM,OAAO,YAAY;IACN,MAAM,GAAG,IAAI,GAAG,EAG9B,CAAC;IACJ,GAAG,CACD,QAAgB,EAChB,KAAa,EACb,QAAgB,EAChB,SAAiB;QAEjB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,GAAG,CAAC,GAAW,EAAE,OAAqB,EAAE,SAAiB;QACvD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
@@ -1,60 +0,0 @@
1
- import type { ModelRef } from "./models/contract.js";
2
- export interface QueuedInputReceipt {
3
- id: string;
4
- threadId: string;
5
- }
6
- export interface ExecutionReceipt {
7
- streamId: string;
8
- threadId: string;
9
- }
10
- export declare const SessionEvents: {
11
- readonly Created: "session.created";
12
- readonly ModelChanged: "session.model-changed";
13
- readonly ThreadCreated: "session.thread-created";
14
- readonly ThreadSwitched: "session.thread-switched";
15
- readonly ThreadRenamed: "session.thread-renamed";
16
- readonly ThreadForked: "session.thread-forked";
17
- readonly ThreadDeleted: "session.thread-deleted";
18
- readonly InputQueued: "session.input-queued";
19
- readonly InputDiscarded: "session.input-discarded";
20
- readonly BeforeClose: "session.before-close";
21
- readonly Closed: "session.closed";
22
- };
23
- declare module "./events/definition.js" {
24
- interface EventMap {
25
- "session.created": HookSpec<{
26
- model: ModelRef;
27
- }>;
28
- "session.model-changed": HookSpec<{
29
- previous: ModelRef;
30
- model: ModelRef;
31
- }>;
32
- "session.thread-created": HookSpec<{
33
- threadId: string;
34
- }>;
35
- "session.thread-switched": HookSpec<{
36
- previousThreadId: string | null;
37
- threadId: string;
38
- }>;
39
- "session.thread-renamed": HookSpec<{
40
- threadId: string;
41
- title: string;
42
- }>;
43
- "session.thread-forked": HookSpec<{
44
- sourceThreadId: string;
45
- threadId: string;
46
- }>;
47
- "session.thread-deleted": HookSpec<{
48
- threadId: string;
49
- }>;
50
- "session.input-queued": HookSpec<{
51
- receipt: QueuedInputReceipt;
52
- }>;
53
- "session.input-discarded": HookSpec<{
54
- receipt: QueuedInputReceipt;
55
- cause: string;
56
- }>;
57
- "session.before-close": HookSpec<{}>;
58
- "session.closed": HookSpec<{}>;
59
- }
60
- }
@@ -1,14 +0,0 @@
1
- export const SessionEvents = {
2
- Created: "session.created",
3
- ModelChanged: "session.model-changed",
4
- ThreadCreated: "session.thread-created",
5
- ThreadSwitched: "session.thread-switched",
6
- ThreadRenamed: "session.thread-renamed",
7
- ThreadForked: "session.thread-forked",
8
- ThreadDeleted: "session.thread-deleted",
9
- InputQueued: "session.input-queued",
10
- InputDiscarded: "session.input-discarded",
11
- BeforeClose: "session.before-close",
12
- Closed: "session.closed",
13
- };
14
- //# sourceMappingURL=session-events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-events.js","sourceRoot":"","sources":["../src/session-events.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,iBAAiB;IAC1B,YAAY,EAAE,uBAAuB;IACrC,aAAa,EAAE,wBAAwB;IACvC,cAAc,EAAE,yBAAyB;IACzC,aAAa,EAAE,wBAAwB;IACvC,YAAY,EAAE,uBAAuB;IACrC,aAAa,EAAE,wBAAwB;IACvC,WAAW,EAAE,sBAAsB;IACnC,cAAc,EAAE,yBAAyB;IACzC,WAAW,EAAE,sBAAsB;IACnC,MAAM,EAAE,gBAAgB;CAChB,CAAC"}