kortyx 0.19.0 → 0.20.1

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,43 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.20.1](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.20.0...kortyx-v0.20.1) (2026-09-14)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * The following workspace dependencies were updated
9
+ * dependencies
10
+ * @kortyx/agent bumped to 0.22.1
11
+ * @kortyx/cli bumped to 0.7.0
12
+ * @kortyx/hooks bumped to 0.25.1
13
+ * @kortyx/runtime bumped to 0.17.1
14
+
15
+ ## [0.20.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.19.0...kortyx-v0.20.0) (2026-09-14)
16
+
17
+
18
+ ### ⚠ BREAKING CHANGES
19
+
20
+ * **errors:** public failure messages and default HTTP statuses change; malformed streams fail explicitly, provider error classes are shared, and retry helpers exclude control flow. Existing calls and legacy records remain supported. See the error-contract migration and release notes.
21
+
22
+ ### Features
23
+
24
+ * **errors:** harden failure contracts across execution and recovery ([#175](https://github.com/kortyx-io/kortyx/issues/175)) ([d231e36](https://github.com/kortyx-io/kortyx/commit/d231e364259a4f23fc3675d8783fde5ba338416e))
25
+
26
+
27
+ ### Dependencies
28
+
29
+ * The following workspace dependencies were updated
30
+ * dependencies
31
+ * @kortyx/agent bumped to 0.22.0
32
+ * @kortyx/cli bumped to 0.6.0
33
+ * @kortyx/core bumped to 0.9.0
34
+ * @kortyx/hooks bumped to 0.25.0
35
+ * @kortyx/mcp bumped to 0.2.3
36
+ * @kortyx/providers bumped to 0.7.0
37
+ * @kortyx/runtime bumped to 0.17.0
38
+ * @kortyx/stream bumped to 0.12.0
39
+ * @kortyx/utils bumped to 0.3.0
40
+
3
41
  ## [0.19.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.18.2...kortyx-v0.19.0) (2026-09-11)
4
42
 
5
43
 
package/README.md CHANGED
@@ -258,3 +258,7 @@ are never emitted.
258
258
  ## License
259
259
 
260
260
  Apache-2.0. See [LICENSE](https://github.com/kortyx-io/kortyx/blob/main/LICENSE).
261
+
262
+ ## Error handling
263
+
264
+ Use `serializeFailure` for safe structured diagnostics and `DomainError` for explicitly approved domain details that must survive child checkpoint restore. Cancellation, execution limits and human interrupts remain control flow. Applications own retry and schema correction policy. See the [error handling guide](../../apps/website/src/docs/v0/03-guides/08-error-handling.md).
package/dist/browser.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from '@kortyx/core/errors';
1
2
  export { StreamChatFromRouteArgs, streamChatFromRoute } from '@kortyx/agent/browser';
2
3
  export { ConsumeStreamHandlers, StreamChunk, StreamFromRouteArgs, StructuredDataChunk, StructuredStreamAccumulator, StructuredStreamState, applyStructuredChunk, consumeStream, createStructuredStreamAccumulator, readStream, reduceStructuredChunks, streamFromRoute } from '@kortyx/stream/browser';
3
4
  import '@kortyx/agent';
package/dist/browser.js CHANGED
@@ -14,6 +14,7 @@ var __copyProps = (to, from, except, desc) => {
14
14
  }
15
15
  return to;
16
16
  };
17
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
17
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
19
 
19
20
  // src/browser.ts
@@ -28,6 +29,7 @@ __export(browser_exports, {
28
29
  streamFromRoute: () => import_browser2.streamFromRoute
29
30
  });
30
31
  module.exports = __toCommonJS(browser_exports);
32
+ __reExport(browser_exports, require("@kortyx/core/errors"), module.exports);
31
33
  var import_browser = require("@kortyx/agent/browser");
32
34
  var import_browser2 = require("@kortyx/stream/browser");
33
35
  // Annotate the CommonJS export names for ESM import in node:
@@ -38,6 +40,7 @@ var import_browser2 = require("@kortyx/stream/browser");
38
40
  readStream,
39
41
  reduceStructuredChunks,
40
42
  streamChatFromRoute,
41
- streamFromRoute
43
+ streamFromRoute,
44
+ ...require("@kortyx/core/errors")
42
45
  });
43
46
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/browser.ts"],"sourcesContent":["// Browser-safe exports for client bundles (e.g. Next.js Client Components).\n// Keep this file free of Node-only imports (fs, path, etc).\n\nexport type { StreamChatFromRouteArgs } from \"@kortyx/agent/browser\";\nexport { streamChatFromRoute } from \"@kortyx/agent/browser\";\nexport type {\n ConsumeStreamHandlers,\n StreamChunk,\n StreamFromRouteArgs,\n StructuredDataChunk,\n StructuredStreamAccumulator,\n StructuredStreamState,\n} from \"@kortyx/stream/browser\";\nexport {\n applyStructuredChunk,\n consumeStream,\n createStructuredStreamAccumulator,\n readStream,\n reduceStructuredChunks,\n streamFromRoute,\n} from \"@kortyx/stream/browser\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,qBAAoC;AASpC,IAAAA,kBAOO;","names":["import_browser"]}
1
+ {"version":3,"sources":["../src/browser.ts"],"sourcesContent":["export * from \"@kortyx/core/errors\";\n// Browser-safe exports for client bundles (e.g. Next.js Client Components).\n// Keep this file free of Node-only imports (fs, path, etc).\n\nexport type { StreamChatFromRouteArgs } from \"@kortyx/agent/browser\";\nexport { streamChatFromRoute } from \"@kortyx/agent/browser\";\nexport type {\n ConsumeStreamHandlers,\n StreamChunk,\n StreamFromRouteArgs,\n StructuredDataChunk,\n StructuredStreamAccumulator,\n StructuredStreamState,\n} from \"@kortyx/stream/browser\";\nexport {\n applyStructuredChunk,\n consumeStream,\n createStructuredStreamAccumulator,\n readStream,\n reduceStructuredChunks,\n streamFromRoute,\n} from \"@kortyx/stream/browser\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAAc,gCAAd;AAKA,qBAAoC;AASpC,IAAAA,kBAOO;","names":["import_browser"]}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export { Agent, AgentProcessOptions, ChatRequestBody, CheckpointRequestBody, CreateAgentArgs, ExecutableWorkflow, ExecuteOptions, ExecutionInfo, ExecutionInterrupt, ExecutionRequestError, ExecutionResult, InterruptScope, ListInterruptsOptions, PendingInterrupt, ResumableInterrupt, ResumeHandle, ResumeOptions, ResumeResponse, StreamChatFromRouteArgs, createAgent, createChatRouteHandler, createCheckpointRouteHandler, handleChatRequestBody, handleCheckpointRequestBody, parseChatRequestBody, parseCheckpointRequestBody, streamChatFromRoute } from '@kortyx/agent';
1
+ export * from '@kortyx/core/errors';
2
+ export { Agent, AgentProcessOptions, ChatRequestBody, CheckpointRequestBody, CreateAgentArgs, ExecutableWorkflow, ExecuteOptions, ExecutionInfo, ExecutionInterrupt, ExecutionRequestError, ExecutionResult, InterruptScope, ListInterruptsOptions, PendingInterrupt, ResumableInterrupt, ResumeHandle, ResumeOptions, ResumeResponse, StreamChatFromRouteArgs, createAgent, createChatRouteHandler, createCheckpointRouteHandler, createFailureResponse, handleChatRequestBody, handleCheckpointRequestBody, parseChatRequestBody, parseCheckpointRequestBody, readRequestJson, streamChatFromRoute } from '@kortyx/agent';
2
3
  export { ExecutionLimit, ExecutionLimitReached, ExecutionLimits, GraphState, NodeConfig, NodeContext, NodeFn, NodeHandler, NodeResult, RuntimeEnvelope, WorkflowDefinition, WorkflowId, defineWorkflow, loadWorkflow, validateWorkflow } from '@kortyx/core';
3
4
  export { CompleteResponseOptions, EnsureWorkflowTopologyRequest, EnsureWorkflowTopologyResponse, KortyxTelemetryConfig, KortyxTelemetryContentCapture, KortyxTelemetryCorrelation, KortyxTelemetryEvent, KortyxTelemetryEventType, KortyxTelemetryPrompt, KortyxTelemetryReporter, KortyxTelemetryService, KortyxTraceAdapter, KortyxTraceMetadata, ParallelError, UseInterruptArgs, UseReasonArgs, UseReasonResult, UseReasonStep, UseReasonToolExecution, UseStructuredDataArgs, WorkflowCallError, completeResponse, createWorkflowHooks, parallel, useAbortSignal, useInterrupt, useNodeState, useReason, useRuntimeContext, useStructuredData, useWorkflow, useWorkflowState } from '@kortyx/hooks';
4
5
  export { CreateMCPClientArgs, MCPClient, McpToolsArgs, McpTransportConfig, createMCPClient } from '@kortyx/mcp';
package/dist/index.js CHANGED
@@ -32,6 +32,7 @@ __export(index_exports, {
32
32
  createAgent: () => import_agent.createAgent,
33
33
  createChatRouteHandler: () => import_agent.createChatRouteHandler,
34
34
  createCheckpointRouteHandler: () => import_agent.createCheckpointRouteHandler,
35
+ createFailureResponse: () => import_agent.createFailureResponse,
35
36
  createFileWorkflowRegistry: () => import_runtime.createFileWorkflowRegistry,
36
37
  createFrameworkAdapterFromEnv: () => import_runtime.createFrameworkAdapterFromEnv,
37
38
  createInMemoryFrameworkAdapter: () => import_runtime.createInMemoryFrameworkAdapter,
@@ -50,6 +51,7 @@ __export(index_exports, {
50
51
  parallel: () => import_hooks.parallel,
51
52
  parseChatRequestBody: () => import_agent.parseChatRequestBody,
52
53
  parseCheckpointRequestBody: () => import_agent.parseCheckpointRequestBody,
54
+ readRequestJson: () => import_agent.readRequestJson,
53
55
  readStream: () => import_stream.readStream,
54
56
  reduceStructuredChunks: () => import_stream.reduceStructuredChunks,
55
57
  registerNode: () => import_runtime.registerNode,
@@ -67,6 +69,7 @@ __export(index_exports, {
67
69
  validateWorkflow: () => import_core.validateWorkflow
68
70
  });
69
71
  module.exports = __toCommonJS(index_exports);
72
+ __reExport(index_exports, require("@kortyx/core/errors"), module.exports);
70
73
  var import_agent = require("@kortyx/agent");
71
74
  var import_core = require("@kortyx/core");
72
75
  var import_hooks = require("@kortyx/hooks");
@@ -88,6 +91,7 @@ var import_stream = require("@kortyx/stream");
88
91
  createAgent,
89
92
  createChatRouteHandler,
90
93
  createCheckpointRouteHandler,
94
+ createFailureResponse,
91
95
  createFileWorkflowRegistry,
92
96
  createFrameworkAdapterFromEnv,
93
97
  createInMemoryFrameworkAdapter,
@@ -106,6 +110,7 @@ var import_stream = require("@kortyx/stream");
106
110
  parallel,
107
111
  parseChatRequestBody,
108
112
  parseCheckpointRequestBody,
113
+ readRequestJson,
109
114
  readStream,
110
115
  reduceStructuredChunks,
111
116
  registerNode,
@@ -121,6 +126,7 @@ var import_stream = require("@kortyx/stream");
121
126
  useWorkflow,
122
127
  useWorkflowState,
123
128
  validateWorkflow,
129
+ ...require("@kortyx/core/errors"),
124
130
  ...require("@kortyx/providers")
125
131
  });
126
132
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// release-test: 2026-01-22\n// Public DX surface for the Kortyx framework.\n\nexport type {\n Agent,\n AgentProcessOptions,\n ChatRequestBody,\n CheckpointRequestBody,\n CreateAgentArgs,\n ExecutableWorkflow,\n ExecuteOptions,\n ExecutionInfo,\n ExecutionInterrupt,\n ExecutionResult,\n InterruptScope,\n ListInterruptsOptions,\n PendingInterrupt,\n ResumableInterrupt,\n ResumeHandle,\n ResumeOptions,\n ResumeResponse,\n StreamChatFromRouteArgs,\n} from \"@kortyx/agent\";\nexport {\n createAgent,\n createChatRouteHandler,\n createCheckpointRouteHandler,\n ExecutionRequestError,\n handleChatRequestBody,\n handleCheckpointRequestBody,\n parseChatRequestBody,\n parseCheckpointRequestBody,\n streamChatFromRoute,\n} from \"@kortyx/agent\";\nexport type {\n ExecutionLimit,\n ExecutionLimitReached,\n ExecutionLimits,\n GraphState,\n NodeConfig,\n NodeContext,\n NodeFn,\n NodeHandler,\n NodeResult,\n RuntimeEnvelope,\n WorkflowDefinition,\n WorkflowId,\n} from \"@kortyx/core\";\nexport { defineWorkflow, loadWorkflow, validateWorkflow } from \"@kortyx/core\";\nexport type {\n EnsureWorkflowTopologyRequest,\n EnsureWorkflowTopologyResponse,\n KortyxTelemetryConfig,\n KortyxTelemetryContentCapture,\n KortyxTelemetryCorrelation,\n KortyxTelemetryEvent,\n KortyxTelemetryEventType,\n KortyxTelemetryPrompt,\n KortyxTelemetryReporter,\n KortyxTelemetryService,\n KortyxTraceAdapter,\n KortyxTraceMetadata,\n UseInterruptArgs,\n UseReasonArgs,\n UseReasonResult,\n UseReasonStep,\n UseReasonToolExecution,\n UseStructuredDataArgs,\n} from \"@kortyx/hooks\";\nexport {\n type CompleteResponseOptions,\n completeResponse,\n createWorkflowHooks,\n ParallelError,\n parallel,\n useAbortSignal,\n useInterrupt,\n useNodeState,\n useReason,\n useRuntimeContext,\n useStructuredData,\n useWorkflow,\n useWorkflowState,\n WorkflowCallError,\n} from \"@kortyx/hooks\";\nexport type {\n CreateMCPClientArgs,\n MCPClient,\n McpToolsArgs,\n McpTransportConfig,\n} from \"@kortyx/mcp\";\nexport { createMCPClient } from \"@kortyx/mcp\";\nexport * from \"@kortyx/providers\";\nexport type { WorkflowRegistry } from \"@kortyx/runtime\";\nexport {\n clearRegisteredNodes,\n createFileWorkflowRegistry,\n createFrameworkAdapterFromEnv,\n createInMemoryFrameworkAdapter,\n createInMemoryWorkflowRegistry,\n createRedisFrameworkAdapter,\n getRegisteredNode,\n listRegisteredNodes,\n registerNode,\n} from \"@kortyx/runtime\";\nexport type {\n BufferedStreamResult,\n ConsumeStreamHandlers,\n StreamChunk,\n StructuredDataChunk,\n StructuredStreamAccumulator,\n StructuredStreamState,\n} from \"@kortyx/stream\";\nexport {\n applyStructuredChunk,\n collectBufferedStream,\n collectStream,\n consumeStream,\n createStreamResponse,\n createStructuredStreamAccumulator,\n readStream,\n reduceStructuredChunks,\n summarizeStreamChunks,\n toSSE,\n} from \"@kortyx/stream\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBA,mBAUO;AAeP,kBAA+D;AAqB/D,mBAeO;AAOP,iBAAgC;AAChC,0BAAc,8BA5Fd;AA8FA,qBAUO;AASP,oBAWO;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"@kortyx/core/errors\";\n// release-test: 2026-01-22\n// Public DX surface for the Kortyx framework.\n\nexport type {\n Agent,\n AgentProcessOptions,\n ChatRequestBody,\n CheckpointRequestBody,\n CreateAgentArgs,\n ExecutableWorkflow,\n ExecuteOptions,\n ExecutionInfo,\n ExecutionInterrupt,\n ExecutionResult,\n InterruptScope,\n ListInterruptsOptions,\n PendingInterrupt,\n ResumableInterrupt,\n ResumeHandle,\n ResumeOptions,\n ResumeResponse,\n StreamChatFromRouteArgs,\n} from \"@kortyx/agent\";\nexport {\n createAgent,\n createChatRouteHandler,\n createCheckpointRouteHandler,\n createFailureResponse,\n ExecutionRequestError,\n handleChatRequestBody,\n handleCheckpointRequestBody,\n parseChatRequestBody,\n parseCheckpointRequestBody,\n readRequestJson,\n streamChatFromRoute,\n} from \"@kortyx/agent\";\nexport type {\n ExecutionLimit,\n ExecutionLimitReached,\n ExecutionLimits,\n GraphState,\n NodeConfig,\n NodeContext,\n NodeFn,\n NodeHandler,\n NodeResult,\n RuntimeEnvelope,\n WorkflowDefinition,\n WorkflowId,\n} from \"@kortyx/core\";\nexport { defineWorkflow, loadWorkflow, validateWorkflow } from \"@kortyx/core\";\nexport type {\n EnsureWorkflowTopologyRequest,\n EnsureWorkflowTopologyResponse,\n KortyxTelemetryConfig,\n KortyxTelemetryContentCapture,\n KortyxTelemetryCorrelation,\n KortyxTelemetryEvent,\n KortyxTelemetryEventType,\n KortyxTelemetryPrompt,\n KortyxTelemetryReporter,\n KortyxTelemetryService,\n KortyxTraceAdapter,\n KortyxTraceMetadata,\n UseInterruptArgs,\n UseReasonArgs,\n UseReasonResult,\n UseReasonStep,\n UseReasonToolExecution,\n UseStructuredDataArgs,\n} from \"@kortyx/hooks\";\nexport {\n type CompleteResponseOptions,\n completeResponse,\n createWorkflowHooks,\n ParallelError,\n parallel,\n useAbortSignal,\n useInterrupt,\n useNodeState,\n useReason,\n useRuntimeContext,\n useStructuredData,\n useWorkflow,\n useWorkflowState,\n WorkflowCallError,\n} from \"@kortyx/hooks\";\nexport type {\n CreateMCPClientArgs,\n MCPClient,\n McpToolsArgs,\n McpTransportConfig,\n} from \"@kortyx/mcp\";\nexport { createMCPClient } from \"@kortyx/mcp\";\nexport * from \"@kortyx/providers\";\nexport type { WorkflowRegistry } from \"@kortyx/runtime\";\nexport {\n clearRegisteredNodes,\n createFileWorkflowRegistry,\n createFrameworkAdapterFromEnv,\n createInMemoryFrameworkAdapter,\n createInMemoryWorkflowRegistry,\n createRedisFrameworkAdapter,\n getRegisteredNode,\n listRegisteredNodes,\n registerNode,\n} from \"@kortyx/runtime\";\nexport type {\n BufferedStreamResult,\n ConsumeStreamHandlers,\n StreamChunk,\n StructuredDataChunk,\n StructuredStreamAccumulator,\n StructuredStreamState,\n} from \"@kortyx/stream\";\nexport {\n applyStructuredChunk,\n collectBufferedStream,\n collectStream,\n consumeStream,\n createStreamResponse,\n createStructuredStreamAccumulator,\n readStream,\n reduceStructuredChunks,\n summarizeStreamChunks,\n toSSE,\n} from \"@kortyx/stream\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,gCAAd;AAwBA,mBAYO;AAeP,kBAA+D;AAqB/D,mBAeO;AAOP,iBAAgC;AAChC,0BAAc,8BA/Fd;AAiGA,qBAUO;AASP,oBAWO;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kortyx",
3
- "version": "0.19.0",
3
+ "version": "0.20.1",
4
4
  "private": false,
5
5
  "description": "TypeScript framework for production AI agents with explicit workflows, provider-agnostic models, streaming, interrupts, and runtime persistence.",
6
6
  "keywords": [
@@ -43,15 +43,15 @@
43
43
  "CHANGELOG.md"
44
44
  ],
45
45
  "dependencies": {
46
- "@kortyx/agent": "0.21.0",
47
- "@kortyx/cli": "0.5.6",
48
- "@kortyx/hooks": "0.24.0",
49
- "@kortyx/core": "0.8.0",
50
- "@kortyx/mcp": "0.2.2",
51
- "@kortyx/providers": "0.6.1",
52
- "@kortyx/runtime": "0.16.0",
53
- "@kortyx/utils": "0.2.6",
54
- "@kortyx/stream": "0.11.0"
46
+ "@kortyx/agent": "0.22.1",
47
+ "@kortyx/cli": "0.7.0",
48
+ "@kortyx/core": "0.9.0",
49
+ "@kortyx/hooks": "0.25.1",
50
+ "@kortyx/mcp": "0.2.3",
51
+ "@kortyx/runtime": "0.17.1",
52
+ "@kortyx/stream": "0.12.0",
53
+ "@kortyx/providers": "0.7.0",
54
+ "@kortyx/utils": "0.3.0"
55
55
  },
56
56
  "devDependencies": {
57
57
  "turbo": "2.6.1",