kortyx 0.15.0 → 0.18.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,61 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.18.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.17.0...kortyx-v0.18.0) (2026-09-11)
4
+
5
+
6
+ ### Features
7
+
8
+ * complete client responses while workflows continue in background ([#165](https://github.com/kortyx-io/kortyx/issues/165)) ([a8a08cd](https://github.com/kortyx-io/kortyx/commit/a8a08cd1e9533e4b44efa4af54a2d2cec54431ae))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @kortyx/agent bumped to 0.19.0
16
+ * @kortyx/cli bumped to 0.5.3
17
+ * @kortyx/hooks bumped to 0.22.0
18
+ * @kortyx/runtime bumped to 0.15.0
19
+
20
+ ## [0.17.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.16.0...kortyx-v0.17.0) (2026-09-10)
21
+
22
+
23
+ ### Features
24
+
25
+ * **runtime:** add shared execution limits and checkpoint continuation ([#163](https://github.com/kortyx-io/kortyx/issues/163)) ([e22232c](https://github.com/kortyx-io/kortyx/commit/e22232c059fae4f7df1bd36423902bd365887942))
26
+
27
+
28
+ ### Dependencies
29
+
30
+ * The following workspace dependencies were updated
31
+ * dependencies
32
+ * @kortyx/agent bumped to 0.18.0
33
+ * @kortyx/cli bumped to 0.5.2
34
+ * @kortyx/core bumped to 0.8.0
35
+ * @kortyx/hooks bumped to 0.21.0
36
+ * @kortyx/runtime bumped to 0.14.0
37
+ * @kortyx/stream bumped to 0.11.0
38
+
39
+ ## [0.16.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.15.0...kortyx-v0.16.0) (2026-09-10)
40
+
41
+
42
+ ### Features
43
+
44
+ * cancel workflow trees and reflect cancellation in Studio ([#161](https://github.com/kortyx-io/kortyx/issues/161)) ([699ad18](https://github.com/kortyx-io/kortyx/commit/699ad18905955c6340c3d85b9fae7f0bffd00a0d))
45
+ * execute and resume workflows without chat transport ([#159](https://github.com/kortyx-io/kortyx/issues/159)) ([6decb17](https://github.com/kortyx-io/kortyx/commit/6decb1714fedc021ac9e125b6ed9f75475ed928a))
46
+
47
+
48
+ ### Dependencies
49
+
50
+ * The following workspace dependencies were updated
51
+ * dependencies
52
+ * @kortyx/agent bumped to 0.17.0
53
+ * @kortyx/cli bumped to 0.5.1
54
+ * @kortyx/core bumped to 0.7.0
55
+ * @kortyx/hooks bumped to 0.20.0
56
+ * @kortyx/runtime bumped to 0.13.0
57
+ * @kortyx/stream bumped to 0.10.0
58
+
3
59
  ## [0.15.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.14.1...kortyx-v0.15.0) (2026-09-09)
4
60
 
5
61
 
package/README.md CHANGED
@@ -247,7 +247,7 @@ const agent = createAgent({ workflows, telemetry });
247
247
 
248
248
  Delivery is best-effort and non-blocking: events receive idempotent IDs, are batched in a bounded in-memory queue, and transient network/429/5xx failures retry with exponential backoff and jitter. Use `telemetry.flush()` during graceful shutdown; inspect `getDroppedEventCount()` and `getPermanentDeliveryFailureCount()` for delivery health. Prompt and output content is excluded by default. Enable only the sides you intend to persist with `captureContent: true` or `{ input: true, output: true }`.
249
249
 
250
- `interrupt.expired` is intentionally API-derived from the durable `expiresAt` sent in `interrupt.created`; the SDK does not run an unreliable local TTL timer. `run.cancelled` remains reserved until Kortyx exposes a real cancellation operation. A client disconnect is not a cancellation event.
250
+ `interrupt.expired` is intentionally API-derived from the durable `expiresAt` sent in `interrupt.created`; the SDK does not run an unreliable local TTL timer. `run.cancelled` records aborted active executions. Forward `request.signal` in custom routes; `createChatRouteHandler` forwards it automatically. Children, models and tools inherit the live signal. Use `useAbortSignal()` for custom node I/O.
251
251
 
252
252
  Interrupt telemetry keeps structural fields (`kind`, `interactionMode`,
253
253
  `optionCount`, `schemaId`, and `schemaVersion`) even when content capture is
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { Agent, AgentProcessOptions, ChatRequestBody, CheckpointRequestBody, CreateAgentArgs, StreamChatFromRouteArgs, createAgent, createChatRouteHandler, createCheckpointRouteHandler, handleChatRequestBody, handleCheckpointRequestBody, parseChatRequestBody, parseCheckpointRequestBody, streamChatFromRoute } from '@kortyx/agent';
2
- export { GraphState, NodeConfig, NodeContext, NodeFn, NodeHandler, NodeResult, RuntimeEnvelope, WorkflowDefinition, WorkflowId, defineWorkflow, loadWorkflow, validateWorkflow } from '@kortyx/core';
3
- export { EnsureWorkflowTopologyRequest, EnsureWorkflowTopologyResponse, KortyxTelemetryConfig, KortyxTelemetryContentCapture, KortyxTelemetryCorrelation, KortyxTelemetryEvent, KortyxTelemetryEventType, KortyxTelemetryPrompt, KortyxTelemetryReporter, KortyxTelemetryService, KortyxTraceAdapter, KortyxTraceMetadata, UseInterruptArgs, UseReasonArgs, UseReasonResult, UseReasonStep, UseReasonToolExecution, UseStructuredDataArgs, WorkflowCallError, createWorkflowHooks, useInterrupt, useNodeState, useReason, useRuntimeContext, useStructuredData, useWorkflow, useWorkflowState } from '@kortyx/hooks';
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';
2
+ export { ExecutionLimit, ExecutionLimitReached, ExecutionLimits, GraphState, NodeConfig, NodeContext, NodeFn, NodeHandler, NodeResult, RuntimeEnvelope, WorkflowDefinition, WorkflowId, defineWorkflow, loadWorkflow, validateWorkflow } from '@kortyx/core';
3
+ export { CompleteResponseOptions, EnsureWorkflowTopologyRequest, EnsureWorkflowTopologyResponse, KortyxTelemetryConfig, KortyxTelemetryContentCapture, KortyxTelemetryCorrelation, KortyxTelemetryEvent, KortyxTelemetryEventType, KortyxTelemetryPrompt, KortyxTelemetryReporter, KortyxTelemetryService, KortyxTraceAdapter, KortyxTraceMetadata, UseInterruptArgs, UseReasonArgs, UseReasonResult, UseReasonStep, UseReasonToolExecution, UseStructuredDataArgs, WorkflowCallError, completeResponse, createWorkflowHooks, useAbortSignal, useInterrupt, useNodeState, useReason, useRuntimeContext, useStructuredData, useWorkflow, useWorkflowState } from '@kortyx/hooks';
4
4
  export { CreateMCPClientArgs, MCPClient, McpToolsArgs, McpTransportConfig, createMCPClient } from '@kortyx/mcp';
5
5
  export * from '@kortyx/providers';
6
6
  export { WorkflowRegistry, clearRegisteredNodes, createFileWorkflowRegistry, createFrameworkAdapterFromEnv, createInMemoryFrameworkAdapter, createInMemoryWorkflowRegistry, createRedisFrameworkAdapter, getRegisteredNode, listRegisteredNodes, registerNode } from '@kortyx/runtime';
package/dist/index.js CHANGED
@@ -20,11 +20,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ ExecutionRequestError: () => import_agent.ExecutionRequestError,
23
24
  WorkflowCallError: () => import_hooks.WorkflowCallError,
24
25
  applyStructuredChunk: () => import_stream.applyStructuredChunk,
25
26
  clearRegisteredNodes: () => import_runtime.clearRegisteredNodes,
26
27
  collectBufferedStream: () => import_stream.collectBufferedStream,
27
28
  collectStream: () => import_stream.collectStream,
29
+ completeResponse: () => import_hooks.completeResponse,
28
30
  consumeStream: () => import_stream.consumeStream,
29
31
  createAgent: () => import_agent.createAgent,
30
32
  createChatRouteHandler: () => import_agent.createChatRouteHandler,
@@ -52,6 +54,7 @@ __export(index_exports, {
52
54
  streamChatFromRoute: () => import_agent.streamChatFromRoute,
53
55
  summarizeStreamChunks: () => import_stream.summarizeStreamChunks,
54
56
  toSSE: () => import_stream.toSSE,
57
+ useAbortSignal: () => import_hooks.useAbortSignal,
55
58
  useInterrupt: () => import_hooks.useInterrupt,
56
59
  useNodeState: () => import_hooks.useNodeState,
57
60
  useReason: () => import_hooks.useReason,
@@ -71,11 +74,13 @@ var import_runtime = require("@kortyx/runtime");
71
74
  var import_stream = require("@kortyx/stream");
72
75
  // Annotate the CommonJS export names for ESM import in node:
73
76
  0 && (module.exports = {
77
+ ExecutionRequestError,
74
78
  WorkflowCallError,
75
79
  applyStructuredChunk,
76
80
  clearRegisteredNodes,
77
81
  collectBufferedStream,
78
82
  collectStream,
83
+ completeResponse,
79
84
  consumeStream,
80
85
  createAgent,
81
86
  createChatRouteHandler,
@@ -103,6 +108,7 @@ var import_stream = require("@kortyx/stream");
103
108
  streamChatFromRoute,
104
109
  summarizeStreamChunks,
105
110
  toSSE,
111
+ useAbortSignal,
106
112
  useInterrupt,
107
113
  useNodeState,
108
114
  useReason,
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 StreamChatFromRouteArgs,\n} from \"@kortyx/agent\";\nexport {\n createAgent,\n createChatRouteHandler,\n createCheckpointRouteHandler,\n handleChatRequestBody,\n handleCheckpointRequestBody,\n parseChatRequestBody,\n parseCheckpointRequestBody,\n streamChatFromRoute,\n} from \"@kortyx/agent\";\nexport type {\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 createWorkflowHooks,\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;AAWA,mBASO;AAYP,kBAA+D;AAqB/D,mBAUO;AAOP,iBAAgC;AAChC,0BAAc,8BAvEd;AAyEA,qBAUO;AASP,oBAWO;","names":[]}
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 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;AAuBA,mBAUO;AAeP,kBAA+D;AAqB/D,mBAaO;AAOP,iBAAgC;AAChC,0BAAc,8BA1Fd;AA4FA,qBAUO;AASP,oBAWO;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kortyx",
3
- "version": "0.15.0",
3
+ "version": "0.18.0",
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.16.0",
47
- "@kortyx/cli": "0.5.0",
48
- "@kortyx/core": "0.6.0",
49
- "@kortyx/hooks": "0.19.0",
46
+ "@kortyx/agent": "0.19.0",
47
+ "@kortyx/cli": "0.5.3",
48
+ "@kortyx/core": "0.8.0",
49
+ "@kortyx/hooks": "0.22.0",
50
50
  "@kortyx/mcp": "0.2.0",
51
- "@kortyx/providers": "0.5.0",
52
- "@kortyx/runtime": "0.12.0",
51
+ "@kortyx/stream": "0.11.0",
53
52
  "@kortyx/utils": "0.2.6",
54
- "@kortyx/stream": "0.9.0"
53
+ "@kortyx/runtime": "0.15.0",
54
+ "@kortyx/providers": "0.5.0"
55
55
  },
56
56
  "devDependencies": {
57
57
  "turbo": "2.6.1",