@kortyx/agent 0.4.1 → 0.5.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,29 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.5.1](https://github.com/kortyx-io/kortyx/compare/agent-v0.5.0...agent-v0.5.1) (2026-02-17)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **build:** align package tsconfig with shared lib baseline ([48d2b57](https://github.com/kortyx-io/kortyx/commit/48d2b5765fefbb5fcbbe548e749e7b5f51b450b9))
9
+ * **build:** wire tsup for publishable packages ([e7b1b5c](https://github.com/kortyx-io/kortyx/commit/e7b1b5c28af55becffc137233dd92d8953d7cb8e))
10
+ * **dev:** restore tsc watch flow for local workspace ([4305823](https://github.com/kortyx-io/kortyx/commit/430582372cad466bf28af554042aa11bdb8bf027))
11
+
12
+ ## [0.5.0](https://github.com/kortyx-io/kortyx/compare/agent-v0.4.1...agent-v0.5.0) (2026-02-17)
13
+
14
+
15
+ ### Features
16
+
17
+ * **agent:** strict createAgent and unify useReason streaming ([6725f97](https://github.com/kortyx-io/kortyx/commit/6725f976fc32083fb7d2590f1353d16a99afb46f))
18
+ * **kortyx:** add browser-safe chat streaming adapters ([c7eb98e](https://github.com/kortyx-io/kortyx/commit/c7eb98e06781a708c79f143ba725efb69d35709e))
19
+ * make createAgent strict/declarative and split providers ([1d252f2](https://github.com/kortyx-io/kortyx/commit/1d252f2dcd51622f821715c0fffb13733aeb3cae))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **agent:** remove eager provider registration guard ([8da4059](https://github.com/kortyx-io/kortyx/commit/8da40592d55bb31800a4d85edcd49795ddf09a29))
25
+ * **agent:** simplify stream transformer and interrupt orchestration ([d0b5847](https://github.com/kortyx-io/kortyx/commit/d0b58475e139e070fd9ca1a68b71395642ac32d5))
26
+
3
27
  ## [0.4.1](https://github.com/kortyx-io/kortyx/compare/agent-v0.4.0...agent-v0.4.1) (2026-02-15)
4
28
 
5
29
 
@@ -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 };
@@ -0,0 +1,2 @@
1
+ export { S as StreamChatFromRouteArgs, s as streamChatFromRoute } from './browser-DxBPQjOI.js';
2
+ import '@kortyx/stream/browser';
@@ -0,0 +1,44 @@
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,12 +1,136 @@
1
- export type { CreateAgentArgs } from "./chat/create-agent";
2
- export { createAgent } from "./chat/create-agent";
3
- export type { ProcessChatArgs } from "./chat/process-chat";
4
- export { processChat } from "./chat/process-chat";
5
- export type { ApplyResumeSelection, ResumeMeta, } from "./interrupt/resume-handler";
6
- export { parseResumeMeta, tryPrepareResumeStream, } from "./interrupt/resume-handler";
7
- export type { CompiledGraphLike, OrchestrateArgs, SaveMemoryFn, SelectWorkflowFn, } from "./orchestrator";
8
- export { orchestrateGraphStream } from "./orchestrator";
9
- export { transformGraphStreamForUI } from "./stream/transform-graph-stream-for-ui";
10
- export type { ChatMessage } from "./types/chat-message";
11
- export { extractLatestUserMessage } from "./utils/extract-latest-message";
12
- //# 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 };