@kortyx/agent 0.5.0 → 0.6.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 (38) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/browser-DxBPQjOI.d.ts +21 -0
  3. package/dist/browser.d.ts +2 -3
  4. package/dist/browser.js +44 -5
  5. package/dist/browser.js.map +1 -0
  6. package/dist/index.d.ts +136 -16
  7. package/dist/index.js +876 -22
  8. package/dist/index.js.map +1 -0
  9. package/package.json +6 -5
  10. package/dist/adapters/http-client.d.ts +0 -12
  11. package/dist/adapters/http-client.d.ts.map +0 -1
  12. package/dist/adapters/http-client.js +0 -16
  13. package/dist/adapters/http.d.ts +0 -17
  14. package/dist/adapters/http.d.ts.map +0 -1
  15. package/dist/adapters/http.js +0 -66
  16. package/dist/browser.d.ts.map +0 -1
  17. package/dist/chat/create-agent.d.ts +0 -33
  18. package/dist/chat/create-agent.d.ts.map +0 -1
  19. package/dist/chat/create-agent.js +0 -138
  20. package/dist/chat/process-chat.d.ts +0 -27
  21. package/dist/chat/process-chat.d.ts.map +0 -1
  22. package/dist/chat/process-chat.js +0 -87
  23. package/dist/index.d.ts.map +0 -1
  24. package/dist/interrupt/resume-handler.d.ts +0 -27
  25. package/dist/interrupt/resume-handler.d.ts.map +0 -1
  26. package/dist/interrupt/resume-handler.js +0 -102
  27. package/dist/orchestrator.d.ts +0 -22
  28. package/dist/orchestrator.d.ts.map +0 -1
  29. package/dist/orchestrator.js +0 -321
  30. package/dist/stream/transform-graph-stream-for-ui.d.ts +0 -9
  31. package/dist/stream/transform-graph-stream-for-ui.d.ts.map +0 -1
  32. package/dist/stream/transform-graph-stream-for-ui.js +0 -60
  33. package/dist/types/chat-message.d.ts +0 -8
  34. package/dist/types/chat-message.d.ts.map +0 -1
  35. package/dist/types/chat-message.js +0 -2
  36. package/dist/utils/extract-latest-message.d.ts +0 -3
  37. package/dist/utils/extract-latest-message.d.ts.map +0 -1
  38. package/dist/utils/extract-latest-message.js +0 -14
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.0](https://github.com/kortyx-io/kortyx/compare/agent-v0.5.1...agent-v0.6.0) (2026-02-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * **hooks:** consolidate reason+interrupt contracts ([4716a4d](https://github.com/kortyx-io/kortyx/commit/4716a4d4739b4a71b7c6e84717c830cd9ff625a6))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **hooks:** stabilize useReason interrupt resume and split internals ([fa24712](https://github.com/kortyx-io/kortyx/commit/fa247129f160d129cdf2c05f0a48a2236ea71bb8))
14
+
15
+ ## [0.5.1](https://github.com/kortyx-io/kortyx/compare/agent-v0.5.0...agent-v0.5.1) (2026-02-17)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **build:** align package tsconfig with shared lib baseline ([48d2b57](https://github.com/kortyx-io/kortyx/commit/48d2b5765fefbb5fcbbe548e749e7b5f51b450b9))
21
+ * **build:** wire tsup for publishable packages ([e7b1b5c](https://github.com/kortyx-io/kortyx/commit/e7b1b5c28af55becffc137233dd92d8953d7cb8e))
22
+ * **dev:** restore tsc watch flow for local workspace ([4305823](https://github.com/kortyx-io/kortyx/commit/430582372cad466bf28af554042aa11bdb8bf027))
23
+
3
24
  ## [0.5.0](https://github.com/kortyx-io/kortyx/compare/agent-v0.4.1...agent-v0.5.0) (2026-02-17)
4
25
 
5
26
 
@@ -0,0 +1,21 @@
1
+ import { StreamChunk } from '@kortyx/stream/browser';
2
+
3
+ type ChatMessage = {
4
+ role: "user" | "assistant" | "system";
5
+ content: string;
6
+ timestamp?: number | undefined;
7
+ id?: string | undefined;
8
+ metadata?: Record<string, unknown> | undefined;
9
+ };
10
+
11
+ interface StreamChatFromRouteArgs {
12
+ endpoint: string;
13
+ sessionId: string;
14
+ workflowId?: string | undefined;
15
+ messages: ChatMessage[];
16
+ fetchImpl?: typeof fetch;
17
+ headers?: Record<string, string> | undefined;
18
+ }
19
+ declare function streamChatFromRoute(args: StreamChatFromRouteArgs): AsyncGenerator<StreamChunk, void, void>;
20
+
21
+ export { type ChatMessage as C, type StreamChatFromRouteArgs as S, streamChatFromRoute as s };
package/dist/browser.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export type { StreamChatFromRouteArgs } from "./adapters/http-client";
2
- export { streamChatFromRoute } from "./adapters/http-client";
3
- //# sourceMappingURL=browser.d.ts.map
1
+ export { S as StreamChatFromRouteArgs, s as streamChatFromRoute } from './browser-DxBPQjOI.js';
2
+ import '@kortyx/stream/browser';
package/dist/browser.js CHANGED
@@ -1,5 +1,44 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.streamChatFromRoute = void 0;
4
- var http_client_1 = require("./adapters/http-client");
5
- Object.defineProperty(exports, "streamChatFromRoute", { enumerable: true, get: function () { return http_client_1.streamChatFromRoute; } });
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/browser.ts
20
+ var browser_exports = {};
21
+ __export(browser_exports, {
22
+ streamChatFromRoute: () => streamChatFromRoute
23
+ });
24
+ module.exports = __toCommonJS(browser_exports);
25
+
26
+ // src/adapters/http-client.ts
27
+ var import_browser = require("@kortyx/stream/browser");
28
+ async function* streamChatFromRoute(args) {
29
+ yield* (0, import_browser.streamFromRoute)({
30
+ endpoint: args.endpoint,
31
+ ...args.fetchImpl ? { fetchImpl: args.fetchImpl } : {},
32
+ ...args.headers ? { headers: args.headers } : {},
33
+ body: {
34
+ sessionId: args.sessionId,
35
+ ...args.workflowId ? { workflowId: args.workflowId } : {},
36
+ messages: args.messages
37
+ }
38
+ });
39
+ }
40
+ // Annotate the CommonJS export names for ESM import in node:
41
+ 0 && (module.exports = {
42
+ streamChatFromRoute
43
+ });
44
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/browser.ts","../src/adapters/http-client.ts"],"sourcesContent":["// Browser-safe exports for client bundles.\n// Keep this file free of Node-only imports (fs, path, etc).\n\nexport type { StreamChatFromRouteArgs } from \"./adapters/http-client\";\nexport { streamChatFromRoute } from \"./adapters/http-client\";\n","import { type StreamChunk, streamFromRoute } from \"@kortyx/stream/browser\";\nimport type { ChatMessage } from \"../types/chat-message\";\n\nexport interface StreamChatFromRouteArgs {\n endpoint: string;\n sessionId: string;\n workflowId?: string | undefined;\n messages: ChatMessage[];\n fetchImpl?: typeof fetch;\n headers?: Record<string, string> | undefined;\n}\n\nexport async function* streamChatFromRoute(\n args: StreamChatFromRouteArgs,\n): AsyncGenerator<StreamChunk, void, void> {\n yield* streamFromRoute({\n endpoint: args.endpoint,\n ...(args.fetchImpl ? { fetchImpl: args.fetchImpl } : {}),\n ...(args.headers ? { headers: args.headers } : {}),\n body: {\n sessionId: args.sessionId,\n ...(args.workflowId ? { workflowId: args.workflowId } : {}),\n messages: args.messages,\n },\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,qBAAkD;AAYlD,gBAAuB,oBACrB,MACyC;AACzC,aAAO,gCAAgB;AAAA,IACrB,UAAU,KAAK;AAAA,IACf,GAAI,KAAK,YAAY,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;AAAA,IACtD,GAAI,KAAK,UAAU,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;AAAA,IAChD,MAAM;AAAA,MACJ,WAAW,KAAK;AAAA,MAChB,GAAI,KAAK,aAAa,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;AAAA,MACzD,UAAU,KAAK;AAAA,IACjB;AAAA,EACF,CAAC;AACH;","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,16 +1,136 @@
1
- export type { ChatRequestBody } from "./adapters/http";
2
- export { createChatRouteHandler, parseChatRequestBody, processChatRequestBody, } from "./adapters/http";
3
- export type { StreamChatFromRouteArgs } from "./adapters/http-client";
4
- export { streamChatFromRoute } from "./adapters/http-client";
5
- export type { Agent, AgentMemoryConfig, AgentProcessOptions, AgentSessionConfig, CreateAgentArgs, } from "./chat/create-agent";
6
- export { createAgent } from "./chat/create-agent";
7
- export type { ProcessChatArgs } from "./chat/process-chat";
8
- export { processChat } from "./chat/process-chat";
9
- export type { ApplyResumeSelection, ResumeMeta, } from "./interrupt/resume-handler";
10
- export { parseResumeMeta, tryPrepareResumeStream, } from "./interrupt/resume-handler";
11
- export type { CompiledGraphLike, OrchestrateArgs, SaveMemoryFn, SelectWorkflowFn, } from "./orchestrator";
12
- export { orchestrateGraphStream } from "./orchestrator";
13
- export { transformGraphStreamForUI } from "./stream/transform-graph-stream-for-ui";
14
- export type { ChatMessage } from "./types/chat-message";
15
- export { extractLatestUserMessage } from "./utils/extract-latest-message";
16
- //# sourceMappingURL=index.d.ts.map
1
+ import { WorkflowDefinition, GraphState } from '@kortyx/core';
2
+ import { GetProviderFn } from '@kortyx/providers';
3
+ import { WorkflowRegistry, FrameworkAdapter, PendingRequestRecord } from '@kortyx/runtime';
4
+ import { C as ChatMessage } from './browser-DxBPQjOI.js';
5
+ export { S as StreamChatFromRouteArgs, s as streamChatFromRoute } from './browser-DxBPQjOI.js';
6
+ import { MemoryAdapter } from '@kortyx/memory';
7
+ import { StreamChunk } from '@kortyx/stream';
8
+ import { StreamEvent } from '@langchain/core/tracers/log_stream';
9
+ import '@kortyx/stream/browser';
10
+
11
+ interface AgentSessionConfig {
12
+ id?: string | undefined;
13
+ }
14
+ interface AgentMemoryConfig {
15
+ enabled?: boolean | undefined;
16
+ namespace?: string | undefined;
17
+ ttlMs?: number | undefined;
18
+ }
19
+ interface AgentProcessOptions {
20
+ sessionId?: string | undefined;
21
+ workflowId?: string | undefined;
22
+ workflow?: string | undefined;
23
+ }
24
+ interface CreateAgentArgs {
25
+ getProvider?: GetProviderFn | undefined;
26
+ workflows?: WorkflowDefinition[];
27
+ workflowsDir?: string;
28
+ workflowRegistry?: WorkflowRegistry;
29
+ fallbackWorkflowId?: string;
30
+ defaultWorkflowId?: string;
31
+ frameworkAdapter?: FrameworkAdapter;
32
+ session?: AgentSessionConfig;
33
+ memory?: AgentMemoryConfig;
34
+ }
35
+ interface Agent {
36
+ processChat: (messages: ChatMessage[], options?: AgentProcessOptions) => Promise<Response>;
37
+ }
38
+ declare function createAgent(args: CreateAgentArgs): Agent;
39
+
40
+ type ChatRequestBody = {
41
+ sessionId: string;
42
+ workflowId?: string | undefined;
43
+ messages: ChatMessage[];
44
+ };
45
+ declare function parseChatRequestBody(value: unknown): ChatRequestBody;
46
+ declare function processChatRequestBody(args: {
47
+ agent: Agent;
48
+ body: ChatRequestBody;
49
+ }): Promise<Response>;
50
+ declare function createChatRouteHandler(args: {
51
+ agent: Agent;
52
+ errorStatus?: number | undefined;
53
+ }): (request: Request) => Promise<Response>;
54
+
55
+ type SelectWorkflowFn = (workflowId: string) => Promise<WorkflowDefinition>;
56
+ type SaveMemoryFn = (sessionId: string, state: GraphState) => Promise<void>;
57
+ interface CompiledGraphLike {
58
+ config?: Record<string, unknown>;
59
+ streamEvents: (state: GraphState, options?: {
60
+ version?: string;
61
+ configurable?: Record<string, unknown>;
62
+ }) => AsyncIterable<unknown> | AsyncGenerator<unknown>;
63
+ }
64
+ interface OrchestrateArgs {
65
+ sessionId?: string;
66
+ runId: string;
67
+ graph: CompiledGraphLike;
68
+ state: GraphState;
69
+ config: Record<string, unknown>;
70
+ selectWorkflow: SelectWorkflowFn;
71
+ frameworkAdapter?: FrameworkAdapter;
72
+ }
73
+ /**
74
+ * Orchestrates LangGraph execution with mid-stream transitions emitted via
75
+ * ctx.emit("transition", ...).
76
+ */
77
+ declare function orchestrateGraphStream({ sessionId, runId, graph, state, config, selectWorkflow, frameworkAdapter, }: OrchestrateArgs): Promise<NodeJS.ReadableStream>;
78
+
79
+ interface ResumeMeta {
80
+ token: string;
81
+ requestId: string;
82
+ selected: string[];
83
+ cancel?: boolean;
84
+ }
85
+ type ApplyResumeSelection = (args: {
86
+ pending: PendingRequestRecord;
87
+ selected: string[];
88
+ }) => Record<string, unknown> | null | undefined;
89
+ declare function parseResumeMeta(msg: ChatMessage | undefined): ResumeMeta | null;
90
+ interface TryResumeArgs {
91
+ lastMessage: ChatMessage | undefined;
92
+ sessionId: string;
93
+ config: Record<string, unknown>;
94
+ selectWorkflow: SelectWorkflowFn;
95
+ defaultWorkflowId?: string;
96
+ applyResumeSelection?: ApplyResumeSelection;
97
+ frameworkAdapter?: FrameworkAdapter;
98
+ }
99
+ declare function tryPrepareResumeStream({ lastMessage, sessionId, config, selectWorkflow, defaultWorkflowId, applyResumeSelection, frameworkAdapter, }: TryResumeArgs): Promise<AsyncIterable<StreamChunk> | null>;
100
+
101
+ interface RuntimeConfig {
102
+ session?: {
103
+ id?: string;
104
+ };
105
+ [key: string]: unknown;
106
+ }
107
+ interface ProcessChatArgs<Options> {
108
+ messages: ChatMessage[];
109
+ options?: Options | undefined;
110
+ sessionId?: string;
111
+ defaultWorkflowId?: string;
112
+ loadRuntimeConfig: (options?: Options) => RuntimeConfig | Promise<RuntimeConfig>;
113
+ selectWorkflow?: SelectWorkflowFn;
114
+ workflowRegistry?: WorkflowRegistry;
115
+ frameworkAdapter?: FrameworkAdapter;
116
+ getProvider: GetProviderFn;
117
+ memoryAdapter?: MemoryAdapter;
118
+ applyResumeSelection?: ApplyResumeSelection;
119
+ }
120
+ declare function processChat<Options = unknown>({ messages, options, sessionId, defaultWorkflowId, loadRuntimeConfig, selectWorkflow, workflowRegistry, frameworkAdapter, getProvider, memoryAdapter, applyResumeSelection, }: ProcessChatArgs<Options>): Promise<Response>;
121
+
122
+ interface TransformOptions {
123
+ debug?: boolean;
124
+ emitStatus?: boolean;
125
+ }
126
+ /**
127
+ * Transforms LangGraph's astream_events into standardized UI chunks.
128
+ * Runtime emits (`message`, `structured_data`, `interrupt`, `transition`) are
129
+ * forwarded directly by the orchestrator, so this transformer only handles
130
+ * graph lifecycle + completion signals.
131
+ */
132
+ declare function transformGraphStreamForUI(stream: AsyncIterable<StreamEvent>, options?: TransformOptions): AsyncGenerator<StreamChunk>;
133
+
134
+ declare function extractLatestUserMessage(messages: ChatMessage[]): string;
135
+
136
+ export { type Agent, type AgentMemoryConfig, type AgentProcessOptions, type AgentSessionConfig, type ApplyResumeSelection, ChatMessage, type ChatRequestBody, type CompiledGraphLike, type CreateAgentArgs, type OrchestrateArgs, type ProcessChatArgs, type ResumeMeta, type SaveMemoryFn, type SelectWorkflowFn, createAgent, createChatRouteHandler, extractLatestUserMessage, orchestrateGraphStream, parseChatRequestBody, parseResumeMeta, processChat, processChatRequestBody, transformGraphStreamForUI, tryPrepareResumeStream };