@kortyx/agent 0.27.0 → 0.29.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.29.0](https://github.com/kortyx-io/kortyx/compare/agent-v0.28.0...agent-v0.29.0) (2026-10-03)
4
+
5
+
6
+ ### Features
7
+
8
+ * **evals:** run conversation suites from Studio and CLI ([#251](https://github.com/kortyx-io/kortyx/issues/251)) ([e653c91](https://github.com/kortyx-io/kortyx/commit/e653c9188d2fad4da0c75e79d090a8dedb639b92))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @kortyx/runtime bumped to 0.21.5
16
+ * devDependencies
17
+ * @kortyx/hooks bumped to 0.30.1
18
+
19
+ ## [0.28.0](https://github.com/kortyx-io/kortyx/compare/agent-v0.27.0...agent-v0.28.0) (2026-09-30)
20
+
21
+
22
+ ### Features
23
+
24
+ * **hooks:** add realtime model-selected output contracts ([#249](https://github.com/kortyx-io/kortyx/issues/249)) ([ac52b47](https://github.com/kortyx-io/kortyx/commit/ac52b47151b64ce5be6ce6c7fd42d34a0fa8a76d))
25
+
26
+
27
+ ### Dependencies
28
+
29
+ * The following workspace dependencies were updated
30
+ * dependencies
31
+ * @kortyx/runtime bumped to 0.21.4
32
+ * @kortyx/stream bumped to 0.15.0
33
+ * devDependencies
34
+ * @kortyx/hooks bumped to 0.30.0
35
+
3
36
  ## [0.27.0](https://github.com/kortyx-io/kortyx/compare/agent-v0.26.2...agent-v0.27.0) (2026-09-23)
4
37
 
5
38
 
package/README.md CHANGED
@@ -22,6 +22,10 @@ npm install @kortyx/agent
22
22
  ## Key APIs
23
23
 
24
24
  - `createAgent(...)`
25
+ - `createEvals(...)`
26
+ - `defineSuite(...)`
27
+ - `createEvalJudge(...)`
28
+ - `createStudioEvalJudge(...)`
25
29
  - `createChatRouteHandler(...)`
26
30
  - `handleChatRequestBody(...)`
27
31
  - `parseChatRequestBody(...)`
@@ -57,8 +61,22 @@ const agent = createAgent({
57
61
  export const handleChat = createChatRouteHandler({ agent });
58
62
  ```
59
63
 
64
+ ## Tool evidence in evals
65
+
66
+ Enable `toolExecution: { emit: true }` on workflow `useReason` calls when eval
67
+ criteria rely on tool activity or retrieved facts. `createEvals` captures those
68
+ existing stream events and supplies them, along with the answer and previous
69
+ conversation steps, to the judge. See the conversation eval guide below for
70
+ examples and the capture boundary.
71
+
72
+ Use `createEvalJudge({ model })` to grade in the app, or
73
+ `await createStudioEvalJudge({ url, apiKey, environment })` to use the Studio
74
+ backend's configured judge. Both fit the same `createEvals({ ..., judge })`
75
+ slot. Provider credentials stay where the judge runs.
76
+
60
77
  ## Documentation
61
78
 
79
+ - [Conversation evals: SDK runner](https://github.com/kortyx-io/kortyx/blob/main/docs/evals/sdk-runner.md)
62
80
  - [Main package README](https://github.com/kortyx-io/kortyx/tree/main/packages/kortyx)
63
81
  - [Documentation](https://kortyx.io/docs)
64
82
  - [Package overview](https://kortyx.io/docs/reference/package-overview)
@@ -68,3 +86,12 @@ export const handleChat = createChatRouteHandler({ agent });
68
86
  ## License
69
87
 
70
88
  Apache-2.0. See [LICENSE](https://github.com/kortyx-io/kortyx/blob/main/LICENSE).
89
+
90
+ ## Conversation eval outputs
91
+
92
+ A step can require multiple completed structured output contracts with
93
+ `expect.outputs: [{ schemaId: "app.product-list" }, { schemaId: "app.product-summary", schemaVersion: "1" }]`.
94
+ Versions are optional. These deterministic checks run before semantic criteria
95
+ and only match finalized visible outputs from the current step. See the
96
+ [conversation eval guide](https://kortyx.io/docs/guides/conversation-evals) for
97
+ SDK setup, Studio execution and custom executor requirements.
package/dist/browser.d.ts CHANGED
@@ -1,2 +1,15 @@
1
- export { S as StreamChatFromRouteArgs, s as streamChatFromRoute } from './browser-EVWVR9BO.js';
2
- import '@kortyx/stream/browser';
1
+ import { StreamChunk } from '@kortyx/stream/browser';
2
+ import { C as ChatMessage } from './chat-message-D4EsFcr1.js';
3
+
4
+ interface StreamChatFromRouteArgs {
5
+ endpoint: string;
6
+ sessionId?: string | undefined;
7
+ clientTurnId?: string | undefined;
8
+ workflowId?: string | undefined;
9
+ messages: ChatMessage[];
10
+ fetchImpl?: typeof fetch;
11
+ headers?: Record<string, string> | undefined;
12
+ }
13
+ declare function streamChatFromRoute(args: StreamChatFromRouteArgs): AsyncGenerator<StreamChunk, void, void>;
14
+
15
+ export { type StreamChatFromRouteArgs, streamChatFromRoute };
@@ -0,0 +1,9 @@
1
+ type ChatMessage = {
2
+ role: "user" | "assistant" | "system";
3
+ content: string;
4
+ timestamp?: number | undefined;
5
+ id?: string | undefined;
6
+ metadata?: Record<string, unknown> | undefined;
7
+ };
8
+
9
+ export type { ChatMessage as C };