@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.
- package/CHANGELOG.md +21 -0
- package/dist/browser-DxBPQjOI.d.ts +21 -0
- package/dist/browser.d.ts +2 -3
- package/dist/browser.js +44 -5
- package/dist/browser.js.map +1 -0
- package/dist/index.d.ts +136 -16
- package/dist/index.js +876 -22
- package/dist/index.js.map +1 -0
- package/package.json +6 -5
- package/dist/adapters/http-client.d.ts +0 -12
- package/dist/adapters/http-client.d.ts.map +0 -1
- package/dist/adapters/http-client.js +0 -16
- package/dist/adapters/http.d.ts +0 -17
- package/dist/adapters/http.d.ts.map +0 -1
- package/dist/adapters/http.js +0 -66
- package/dist/browser.d.ts.map +0 -1
- package/dist/chat/create-agent.d.ts +0 -33
- package/dist/chat/create-agent.d.ts.map +0 -1
- package/dist/chat/create-agent.js +0 -138
- package/dist/chat/process-chat.d.ts +0 -27
- package/dist/chat/process-chat.d.ts.map +0 -1
- package/dist/chat/process-chat.js +0 -87
- package/dist/index.d.ts.map +0 -1
- package/dist/interrupt/resume-handler.d.ts +0 -27
- package/dist/interrupt/resume-handler.d.ts.map +0 -1
- package/dist/interrupt/resume-handler.js +0 -102
- package/dist/orchestrator.d.ts +0 -22
- package/dist/orchestrator.d.ts.map +0 -1
- package/dist/orchestrator.js +0 -321
- package/dist/stream/transform-graph-stream-for-ui.d.ts +0 -9
- package/dist/stream/transform-graph-stream-for-ui.d.ts.map +0 -1
- package/dist/stream/transform-graph-stream-for-ui.js +0 -60
- package/dist/types/chat-message.d.ts +0 -8
- package/dist/types/chat-message.d.ts.map +0 -1
- package/dist/types/chat-message.js +0 -2
- package/dist/utils/extract-latest-message.d.ts +0 -3
- package/dist/utils/extract-latest-message.d.ts.map +0 -1
- 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
|
|
2
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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 };
|