kortyx 0.14.0 → 0.17.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,71 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.17.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.16.0...kortyx-v0.17.0) (2026-09-10)
4
+
5
+
6
+ ### Features
7
+
8
+ * **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))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @kortyx/agent bumped to 0.18.0
16
+ * @kortyx/cli bumped to 0.5.2
17
+ * @kortyx/core bumped to 0.8.0
18
+ * @kortyx/hooks bumped to 0.21.0
19
+ * @kortyx/runtime bumped to 0.14.0
20
+ * @kortyx/stream bumped to 0.11.0
21
+
22
+ ## [0.16.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.15.0...kortyx-v0.16.0) (2026-09-10)
23
+
24
+
25
+ ### Features
26
+
27
+ * 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))
28
+ * 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))
29
+
30
+
31
+ ### Dependencies
32
+
33
+ * The following workspace dependencies were updated
34
+ * dependencies
35
+ * @kortyx/agent bumped to 0.17.0
36
+ * @kortyx/cli bumped to 0.5.1
37
+ * @kortyx/core bumped to 0.7.0
38
+ * @kortyx/hooks bumped to 0.20.0
39
+ * @kortyx/runtime bumped to 0.13.0
40
+ * @kortyx/stream bumped to 0.10.0
41
+
42
+ ## [0.15.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.14.1...kortyx-v0.15.0) (2026-09-09)
43
+
44
+
45
+ ### Features
46
+
47
+ * add resumable child workflows and Studio inspection ([#157](https://github.com/kortyx-io/kortyx/issues/157)) ([542ba29](https://github.com/kortyx-io/kortyx/commit/542ba29b3b57217e6e5d98c1b409bbec5ce3261f))
48
+
49
+
50
+ ### Dependencies
51
+
52
+ * The following workspace dependencies were updated
53
+ * dependencies
54
+ * @kortyx/agent bumped to 0.16.0
55
+ * @kortyx/cli bumped to 0.5.0
56
+ * @kortyx/core bumped to 0.6.0
57
+ * @kortyx/hooks bumped to 0.19.0
58
+ * @kortyx/runtime bumped to 0.12.0
59
+
60
+ ## [0.14.1](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.14.0...kortyx-v0.14.1) (2026-08-31)
61
+
62
+
63
+ ### Dependencies
64
+
65
+ * The following workspace dependencies were updated
66
+ * dependencies
67
+ * @kortyx/cli bumped to 0.4.0
68
+
3
69
  ## [0.14.0](https://github.com/kortyx-io/kortyx/compare/kortyx-v0.13.0...kortyx-v0.14.0) (2026-08-02)
4
70
 
5
71
 
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, useInterrupt, useNodeState, useReason, useRuntimeContext, useStructuredData, useWorkflowState } from '@kortyx/hooks';
1
+ export { Agent, AgentProcessOptions, ChatRequestBody, CheckpointRequestBody, CreateAgentArgs, ExecutableWorkflow, ExecuteOptions, ExecutionInfo, ExecutionInterrupt, ExecutionRequestError, ExecutionResult, 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 { EnsureWorkflowTopologyRequest, EnsureWorkflowTopologyResponse, KortyxTelemetryConfig, KortyxTelemetryContentCapture, KortyxTelemetryCorrelation, KortyxTelemetryEvent, KortyxTelemetryEventType, KortyxTelemetryPrompt, KortyxTelemetryReporter, KortyxTelemetryService, KortyxTraceAdapter, KortyxTraceMetadata, UseInterruptArgs, UseReasonArgs, UseReasonResult, UseReasonStep, UseReasonToolExecution, UseStructuredDataArgs, WorkflowCallError, 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,6 +20,8 @@ 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,
24
+ WorkflowCallError: () => import_hooks.WorkflowCallError,
23
25
  applyStructuredChunk: () => import_stream.applyStructuredChunk,
24
26
  clearRegisteredNodes: () => import_runtime.clearRegisteredNodes,
25
27
  collectBufferedStream: () => import_stream.collectBufferedStream,
@@ -36,6 +38,7 @@ __export(index_exports, {
36
38
  createRedisFrameworkAdapter: () => import_runtime.createRedisFrameworkAdapter,
37
39
  createStreamResponse: () => import_stream.createStreamResponse,
38
40
  createStructuredStreamAccumulator: () => import_stream.createStructuredStreamAccumulator,
41
+ createWorkflowHooks: () => import_hooks.createWorkflowHooks,
39
42
  defineWorkflow: () => import_core.defineWorkflow,
40
43
  getRegisteredNode: () => import_runtime.getRegisteredNode,
41
44
  handleChatRequestBody: () => import_agent.handleChatRequestBody,
@@ -50,11 +53,13 @@ __export(index_exports, {
50
53
  streamChatFromRoute: () => import_agent.streamChatFromRoute,
51
54
  summarizeStreamChunks: () => import_stream.summarizeStreamChunks,
52
55
  toSSE: () => import_stream.toSSE,
56
+ useAbortSignal: () => import_hooks.useAbortSignal,
53
57
  useInterrupt: () => import_hooks.useInterrupt,
54
58
  useNodeState: () => import_hooks.useNodeState,
55
59
  useReason: () => import_hooks.useReason,
56
60
  useRuntimeContext: () => import_hooks.useRuntimeContext,
57
61
  useStructuredData: () => import_hooks.useStructuredData,
62
+ useWorkflow: () => import_hooks.useWorkflow,
58
63
  useWorkflowState: () => import_hooks.useWorkflowState,
59
64
  validateWorkflow: () => import_core.validateWorkflow
60
65
  });
@@ -68,6 +73,8 @@ var import_runtime = require("@kortyx/runtime");
68
73
  var import_stream = require("@kortyx/stream");
69
74
  // Annotate the CommonJS export names for ESM import in node:
70
75
  0 && (module.exports = {
76
+ ExecutionRequestError,
77
+ WorkflowCallError,
71
78
  applyStructuredChunk,
72
79
  clearRegisteredNodes,
73
80
  collectBufferedStream,
@@ -84,6 +91,7 @@ var import_stream = require("@kortyx/stream");
84
91
  createRedisFrameworkAdapter,
85
92
  createStreamResponse,
86
93
  createStructuredStreamAccumulator,
94
+ createWorkflowHooks,
87
95
  defineWorkflow,
88
96
  getRegisteredNode,
89
97
  handleChatRequestBody,
@@ -98,11 +106,13 @@ var import_stream = require("@kortyx/stream");
98
106
  streamChatFromRoute,
99
107
  summarizeStreamChunks,
100
108
  toSSE,
109
+ useAbortSignal,
101
110
  useInterrupt,
102
111
  useNodeState,
103
112
  useReason,
104
113
  useRuntimeContext,
105
114
  useStructuredData,
115
+ useWorkflow,
106
116
  useWorkflowState,
107
117
  validateWorkflow,
108
118
  ...require("@kortyx/providers")
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 useInterrupt,\n useNodeState,\n useReason,\n useRuntimeContext,\n useStructuredData,\n useWorkflowState,\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;AAWA,mBASO;AAYP,kBAA+D;AAqB/D,mBAOO;AAOP,iBAAgC;AAChC,0BAAc,8BApEd;AAsEA,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 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 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;AAmBA,mBAUO;AAeP,kBAA+D;AAqB/D,mBAWO;AAOP,iBAAgC;AAChC,0BAAc,8BApFd;AAsFA,qBAUO;AASP,oBAWO;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kortyx",
3
- "version": "0.14.0",
3
+ "version": "0.17.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,14 +43,14 @@
43
43
  "CHANGELOG.md"
44
44
  ],
45
45
  "dependencies": {
46
- "@kortyx/agent": "0.15.0",
47
- "@kortyx/cli": "0.3.0",
48
- "@kortyx/hooks": "0.18.0",
49
- "@kortyx/core": "0.5.3",
46
+ "@kortyx/cli": "0.5.2",
47
+ "@kortyx/agent": "0.18.0",
48
+ "@kortyx/core": "0.8.0",
49
+ "@kortyx/hooks": "0.21.0",
50
50
  "@kortyx/mcp": "0.2.0",
51
51
  "@kortyx/providers": "0.5.0",
52
- "@kortyx/stream": "0.9.0",
53
- "@kortyx/runtime": "0.11.1",
52
+ "@kortyx/runtime": "0.14.0",
53
+ "@kortyx/stream": "0.11.0",
54
54
  "@kortyx/utils": "0.2.6"
55
55
  },
56
56
  "devDependencies": {