@ariaflowagents/cf-agent 0.7.0 → 0.8.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/README.md +436 -135
- package/dist/AriaFlowAgent.d.ts +109 -0
- package/dist/AriaFlowAgent.d.ts.map +1 -0
- package/dist/AriaFlowAgent.js +170 -0
- package/dist/AriaFlowAgent.js.map +1 -0
- package/dist/BridgeSessionStore.d.ts +37 -0
- package/dist/BridgeSessionStore.d.ts.map +1 -0
- package/dist/BridgeSessionStore.js +120 -0
- package/dist/BridgeSessionStore.js.map +1 -0
- package/dist/OrchestrationStore.d.ts +25 -0
- package/dist/OrchestrationStore.d.ts.map +1 -0
- package/dist/OrchestrationStore.js +63 -0
- package/dist/OrchestrationStore.js.map +1 -0
- package/dist/StreamAdapter.d.ts +19 -0
- package/dist/StreamAdapter.d.ts.map +1 -0
- package/dist/StreamAdapter.js +205 -0
- package/dist/StreamAdapter.js.map +1 -0
- package/dist/index.d.ts +33 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -3
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +37 -27
- package/dist/AriaFlowChatAgent.d.ts +0 -24
- package/dist/AriaFlowChatAgent.d.ts.map +0 -1
- package/dist/AriaFlowChatAgent.js +0 -153
- package/dist/AriaFlowChatAgent.js.map +0 -1
- package/dist/AriaFlowFlowAgent.d.ts +0 -88
- package/dist/AriaFlowFlowAgent.d.ts.map +0 -1
- package/dist/AriaFlowFlowAgent.js +0 -185
- package/dist/AriaFlowFlowAgent.js.map +0 -1
- package/dist/stores/CloudflareSQLiteStore.d.ts +0 -12
- package/dist/stores/CloudflareSQLiteStore.d.ts.map +0 -1
- package/dist/stores/CloudflareSQLiteStore.js +0 -99
- package/dist/stores/CloudflareSQLiteStore.js.map +0 -1
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { DEFAULT_STREAM_CONFIG } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert AriaFlow's HarnessStreamPart generator into an SSE Response
|
|
4
|
+
* that CF's AIChatAgent._reply() can parse.
|
|
5
|
+
*
|
|
6
|
+
* CF's _streamSSEReply reads lines in the format:
|
|
7
|
+
* data: {"type":"text-start"}\n\n
|
|
8
|
+
* data: {"type":"text-delta","delta":"Hello"}\n\n
|
|
9
|
+
* data: {"type":"tool-input-available","toolCallId":"...","toolName":"...","input":{...}}\n\n
|
|
10
|
+
* data: {"type":"tool-output-available","toolCallId":"...","output":{...}}\n\n
|
|
11
|
+
* data: {"type":"data-handoff","data":{...}}\n\n
|
|
12
|
+
* data: {"type":"text-end"}\n\n
|
|
13
|
+
*
|
|
14
|
+
* CF's applyChunkToParts() then builds UIMessage parts from these chunks.
|
|
15
|
+
* CF handles persistence, broadcasting, and resumability.
|
|
16
|
+
*/
|
|
17
|
+
export function createSSEResponse(stream, config = DEFAULT_STREAM_CONFIG) {
|
|
18
|
+
const encoder = new TextEncoder();
|
|
19
|
+
let textStarted = false;
|
|
20
|
+
const body = new ReadableStream({
|
|
21
|
+
async start(controller) {
|
|
22
|
+
try {
|
|
23
|
+
for await (const part of stream) {
|
|
24
|
+
const lines = convertToSSELines(part, config, textStarted);
|
|
25
|
+
for (const line of lines) {
|
|
26
|
+
// Track whether we've emitted text-start
|
|
27
|
+
if (line.includes('"text-start"'))
|
|
28
|
+
textStarted = true;
|
|
29
|
+
if (line.includes('"text-end"'))
|
|
30
|
+
textStarted = false;
|
|
31
|
+
controller.enqueue(encoder.encode(line));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Ensure text is closed if still open
|
|
35
|
+
if (textStarted) {
|
|
36
|
+
controller.enqueue(encoder.encode(`data: ${JSON.stringify({ type: 'text-end' })}\n\n`));
|
|
37
|
+
}
|
|
38
|
+
controller.close();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
controller.error(err);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
return new Response(body, {
|
|
46
|
+
headers: {
|
|
47
|
+
'Content-Type': 'text/event-stream',
|
|
48
|
+
'Cache-Control': 'no-cache',
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert a single HarnessStreamPart to SSE data lines.
|
|
54
|
+
* Returns 0+ formatted SSE lines ("data: {...}\n\n").
|
|
55
|
+
*/
|
|
56
|
+
function convertToSSELines(part, config, textStarted) {
|
|
57
|
+
const lines = [];
|
|
58
|
+
const sse = (obj) => `data: ${JSON.stringify(obj)}\n\n`;
|
|
59
|
+
switch (part.type) {
|
|
60
|
+
case 'text-delta': {
|
|
61
|
+
// Emit text-start on first text chunk
|
|
62
|
+
if (!textStarted) {
|
|
63
|
+
lines.push(sse({ type: 'text-start' }));
|
|
64
|
+
}
|
|
65
|
+
lines.push(sse({ type: 'text-delta', delta: part.text }));
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case 'tool-call': {
|
|
69
|
+
// Close text before tool if open
|
|
70
|
+
if (textStarted) {
|
|
71
|
+
lines.push(sse({ type: 'text-end' }));
|
|
72
|
+
}
|
|
73
|
+
// CF expects tool-input-available with toolCallId, toolName, input
|
|
74
|
+
lines.push(sse({
|
|
75
|
+
type: 'tool-input-available',
|
|
76
|
+
toolCallId: part.toolCallId,
|
|
77
|
+
toolName: part.toolName,
|
|
78
|
+
input: part.args,
|
|
79
|
+
}));
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case 'tool-result': {
|
|
83
|
+
lines.push(sse({
|
|
84
|
+
type: 'tool-output-available',
|
|
85
|
+
toolCallId: part.toolCallId,
|
|
86
|
+
output: part.result,
|
|
87
|
+
}));
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
case 'tool-error': {
|
|
91
|
+
lines.push(sse({
|
|
92
|
+
type: 'tool-output-error',
|
|
93
|
+
toolCallId: part.toolCallId,
|
|
94
|
+
errorText: part.error,
|
|
95
|
+
}));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
case 'handoff': {
|
|
99
|
+
if (!config.includeHandoffs)
|
|
100
|
+
break;
|
|
101
|
+
lines.push(sse({
|
|
102
|
+
type: 'data-handoff',
|
|
103
|
+
data: {
|
|
104
|
+
from: part.from,
|
|
105
|
+
to: part.to,
|
|
106
|
+
reason: part.reason,
|
|
107
|
+
},
|
|
108
|
+
}));
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
case 'node-enter': {
|
|
112
|
+
if (!config.includeFlowEvents)
|
|
113
|
+
break;
|
|
114
|
+
lines.push(sse({
|
|
115
|
+
type: 'data-flow-node',
|
|
116
|
+
data: { node: part.nodeName, event: 'enter' },
|
|
117
|
+
}));
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
case 'node-exit': {
|
|
121
|
+
if (!config.includeFlowEvents)
|
|
122
|
+
break;
|
|
123
|
+
lines.push(sse({
|
|
124
|
+
type: 'data-flow-node',
|
|
125
|
+
data: { node: part.nodeName, event: 'exit' },
|
|
126
|
+
}));
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'flow-transition': {
|
|
130
|
+
if (!config.includeFlowEvents)
|
|
131
|
+
break;
|
|
132
|
+
lines.push(sse({
|
|
133
|
+
type: 'data-flow-transition',
|
|
134
|
+
data: { from: part.from, to: part.to },
|
|
135
|
+
}));
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
case 'flow-end': {
|
|
139
|
+
if (!config.includeFlowEvents)
|
|
140
|
+
break;
|
|
141
|
+
lines.push(sse({
|
|
142
|
+
type: 'data-flow-end',
|
|
143
|
+
data: { reason: part.reason },
|
|
144
|
+
}));
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
case 'tripwire': {
|
|
148
|
+
if (!config.includeTripwires)
|
|
149
|
+
break;
|
|
150
|
+
lines.push(sse({
|
|
151
|
+
type: 'data-tripwire',
|
|
152
|
+
data: {
|
|
153
|
+
phase: part.phase,
|
|
154
|
+
processorId: part.processorId,
|
|
155
|
+
reason: part.reason,
|
|
156
|
+
message: part.message,
|
|
157
|
+
},
|
|
158
|
+
}));
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
case 'step-start': {
|
|
162
|
+
lines.push(sse({ type: 'step-start' }));
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
case 'error': {
|
|
166
|
+
lines.push(sse({
|
|
167
|
+
type: 'data-error',
|
|
168
|
+
data: { error: part.error },
|
|
169
|
+
}));
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
case 'suggested-questions': {
|
|
173
|
+
lines.push(sse({
|
|
174
|
+
type: 'data-suggestions',
|
|
175
|
+
data: { suggestions: part.suggestions },
|
|
176
|
+
}));
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case 'done':
|
|
180
|
+
// CF handles stream completion via ReadableStream close.
|
|
181
|
+
// The 'done' event is AriaFlow-internal. Don't emit it.
|
|
182
|
+
break;
|
|
183
|
+
// These are AriaFlow-internal lifecycle events. CF doesn't need them.
|
|
184
|
+
case 'input':
|
|
185
|
+
case 'turn-end':
|
|
186
|
+
case 'step-end':
|
|
187
|
+
case 'agent-start':
|
|
188
|
+
case 'agent-end':
|
|
189
|
+
case 'context-compacted':
|
|
190
|
+
case 'result-evicted':
|
|
191
|
+
case 'interrupted':
|
|
192
|
+
case 'tool-start':
|
|
193
|
+
case 'tool-done':
|
|
194
|
+
break;
|
|
195
|
+
case 'custom': {
|
|
196
|
+
lines.push(sse({
|
|
197
|
+
type: `data-${part.name}`,
|
|
198
|
+
data: part.data,
|
|
199
|
+
}));
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return lines;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=StreamAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StreamAdapter.js","sourceRoot":"","sources":["../src/StreamAdapter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @ariaflowagents/cf-agent
|
|
3
|
+
*
|
|
4
|
+
* Run AriaFlow agents on Cloudflare Durable Objects.
|
|
5
|
+
*
|
|
6
|
+
* Extends CF's AIChatAgent -- CF owns messages, persistence, WebSocket,
|
|
7
|
+
* and stream resumability. AriaFlow owns agent orchestration.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { AriaFlowAgent } from '@ariaflowagents/cf-agent';
|
|
12
|
+
*
|
|
13
|
+
* class MyAgent extends AriaFlowAgent<Env> {
|
|
14
|
+
* protected getAgents() {
|
|
15
|
+
* return [{
|
|
16
|
+
* id: 'support',
|
|
17
|
+
* name: 'Support',
|
|
18
|
+
* type: 'llm',
|
|
19
|
+
* model: openai('gpt-4o', { apiKey: this.env.OPENAI_API_KEY }),
|
|
20
|
+
* prompt: 'You are a helpful support agent.',
|
|
21
|
+
* }];
|
|
22
|
+
* }
|
|
23
|
+
* protected getDefaultAgentId() { return 'support'; }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export { AriaFlowAgent } from './AriaFlowAgent.js';
|
|
28
|
+
export { BridgeSessionStore } from './BridgeSessionStore.js';
|
|
29
|
+
export { OrchestrationStore } from './OrchestrationStore.js';
|
|
30
|
+
export { createSSEResponse } from './StreamAdapter.js';
|
|
31
|
+
export type { StreamAdapterConfig, OrchestrationState, SqlExecutor, } from './types.js';
|
|
32
|
+
export { DEFAULT_STREAM_CONFIG } from './types.js';
|
|
33
|
+
export type { HarnessConfig, HarnessHooks, HarnessStreamPart, Session, } from '@ariaflowagents/core';
|
|
6
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,YAAY,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,OAAO,GACR,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @ariaflowagents/cf-agent
|
|
3
|
+
*
|
|
4
|
+
* Run AriaFlow agents on Cloudflare Durable Objects.
|
|
5
|
+
*
|
|
6
|
+
* Extends CF's AIChatAgent -- CF owns messages, persistence, WebSocket,
|
|
7
|
+
* and stream resumability. AriaFlow owns agent orchestration.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { AriaFlowAgent } from '@ariaflowagents/cf-agent';
|
|
12
|
+
*
|
|
13
|
+
* class MyAgent extends AriaFlowAgent<Env> {
|
|
14
|
+
* protected getAgents() {
|
|
15
|
+
* return [{
|
|
16
|
+
* id: 'support',
|
|
17
|
+
* name: 'Support',
|
|
18
|
+
* type: 'llm',
|
|
19
|
+
* model: openai('gpt-4o', { apiKey: this.env.OPENAI_API_KEY }),
|
|
20
|
+
* prompt: 'You are a helpful support agent.',
|
|
21
|
+
* }];
|
|
22
|
+
* }
|
|
23
|
+
* protected getDefaultAgentId() { return 'support'; }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export { AriaFlowAgent } from './AriaFlowAgent.js';
|
|
28
|
+
export { BridgeSessionStore } from './BridgeSessionStore.js';
|
|
29
|
+
export { OrchestrationStore } from './OrchestrationStore.js';
|
|
30
|
+
export { createSSEResponse } from './StreamAdapter.js';
|
|
31
|
+
export { DEFAULT_STREAM_CONFIG } from './types.js';
|
|
4
32
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAQvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL executor type matching Cloudflare's Durable Object sql binding.
|
|
3
|
+
*/
|
|
4
|
+
export type SqlExecutor = (strings: TemplateStringsArray, ...values: unknown[]) => {
|
|
5
|
+
toArray(): unknown[];
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Orchestration state persisted separately from CF messages.
|
|
9
|
+
* This is everything AriaFlow needs beyond message history --
|
|
10
|
+
* CF owns messages, AriaFlow owns agent state.
|
|
11
|
+
*/
|
|
12
|
+
export interface OrchestrationState {
|
|
13
|
+
currentAgent: string;
|
|
14
|
+
workingMemory: Record<string, unknown>;
|
|
15
|
+
agentStates: Record<string, unknown>;
|
|
16
|
+
handoffHistory: Array<{
|
|
17
|
+
from: string;
|
|
18
|
+
to: string;
|
|
19
|
+
reason: string;
|
|
20
|
+
timestamp: string;
|
|
21
|
+
}>;
|
|
22
|
+
state?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Configuration for the stream adapter.
|
|
26
|
+
* Controls which AriaFlow events are forwarded to CF as data parts.
|
|
27
|
+
*/
|
|
28
|
+
export interface StreamAdapterConfig {
|
|
29
|
+
/** Include handoff events as data-handoff parts. Default: true. */
|
|
30
|
+
includeHandoffs: boolean;
|
|
31
|
+
/** Include flow node/transition events as data-flow-* parts. Default: true. */
|
|
32
|
+
includeFlowEvents: boolean;
|
|
33
|
+
/** Include tripwire events as data-tripwire parts. Default: true. */
|
|
34
|
+
includeTripwires: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare const DEFAULT_STREAM_CONFIG: StreamAdapterConfig;
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,OAAO,EAAE,KACjB;IAAE,OAAO,IAAI,OAAO,EAAE,CAAA;CAAE,CAAC;AAE9B;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,cAAc,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,eAAe,EAAE,OAAO,CAAC;IACzB,+EAA+E;IAC/E,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,eAAO,MAAM,qBAAqB,EAAE,mBAInC,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,qBAAqB,GAAwB;IACxD,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;CACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,52 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ariaflowagents/cf-agent",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"description": "AriaFlow agent integration for Cloudflare Workers with AIChatAgent",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"
|
|
11
|
-
"
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"dev": "tsc --watch",
|
|
20
|
+
"test": "vitest",
|
|
21
|
+
"typecheck": "tsc --noEmit",
|
|
22
|
+
"clean": "rm -rf dist"
|
|
23
|
+
},
|
|
14
24
|
"dependencies": {
|
|
15
|
-
"
|
|
16
|
-
"@
|
|
25
|
+
"@ariaflowagents/core": "workspace:*",
|
|
26
|
+
"@cloudflare/ai-chat": "^0.1.8",
|
|
27
|
+
"ai": "^6.0.90"
|
|
17
28
|
},
|
|
18
29
|
"peerDependencies": {
|
|
19
|
-
"
|
|
20
|
-
"
|
|
30
|
+
"agents": "^0.7.6",
|
|
31
|
+
"zod": "^3.0.0"
|
|
21
32
|
},
|
|
22
33
|
"devDependencies": {
|
|
23
|
-
"@
|
|
24
|
-
"@types
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"esbuild": "^0.27.2",
|
|
28
|
-
"typescript": "^5.3.0"
|
|
34
|
+
"@cloudflare/vitest-pool-workers": "^0.5.0",
|
|
35
|
+
"@cloudflare/workers-types": "^4.20250214.0",
|
|
36
|
+
"typescript": "^5.7.0",
|
|
37
|
+
"vitest": "^2.0.0"
|
|
29
38
|
},
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"clean": "rm -rf dist",
|
|
33
|
-
"prepublishOnly": "npm run build"
|
|
34
|
-
},
|
|
35
|
-
"publishConfig": {
|
|
36
|
-
"access": "public"
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20"
|
|
37
41
|
},
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
+
"keywords": [
|
|
43
|
+
"ariaflow",
|
|
44
|
+
"ai",
|
|
45
|
+
"agents",
|
|
46
|
+
"cloudflare",
|
|
47
|
+
"durable-objects",
|
|
48
|
+
"chat",
|
|
49
|
+
"conversational-ai"
|
|
50
|
+
],
|
|
51
|
+
"license": "MIT"
|
|
42
52
|
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Agent, type Connection, type WSMessage } from 'agents';
|
|
2
|
-
import { Runtime, type HarnessConfig, type HarnessHooks, type HarnessStreamPart } from '@ariaflowagents/core';
|
|
3
|
-
export type AriaFlowRuntimeFactory = HarnessConfig | Runtime;
|
|
4
|
-
export type AriaFlowChatPayload = {
|
|
5
|
-
type?: string;
|
|
6
|
-
text?: string;
|
|
7
|
-
message?: string;
|
|
8
|
-
content?: string;
|
|
9
|
-
sessionId?: string;
|
|
10
|
-
userId?: string;
|
|
11
|
-
};
|
|
12
|
-
export declare abstract class AriaFlowChatAgent<Env = unknown, State = unknown> extends Agent<Env, State> {
|
|
13
|
-
protected runtime: Runtime;
|
|
14
|
-
abstract createRuntimeConfig(): Promise<AriaFlowRuntimeFactory> | AriaFlowRuntimeFactory;
|
|
15
|
-
protected getContextId(): string | null;
|
|
16
|
-
protected getSessionId(_connection: Connection, _payload: AriaFlowChatPayload): string;
|
|
17
|
-
protected getHooks(): HarnessHooks;
|
|
18
|
-
protected shouldBroadcast(): boolean;
|
|
19
|
-
protected sendPart(connection: Connection, part: HarnessStreamPart): void;
|
|
20
|
-
onStart(): Promise<void>;
|
|
21
|
-
onMessage(connection: Connection, message: WSMessage): Promise<void>;
|
|
22
|
-
onRequest(request: Request): Promise<Response>;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=AriaFlowChatAgent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AriaFlowChatAgent.d.ts","sourceRoot":"","sources":["../src/AriaFlowChatAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9G,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA6DF,8BAAsB,iBAAiB,CAAC,GAAG,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,CAAE,SAAQ,KAAK,CACnF,GAAG,EACH,KAAK,CACN;IACC,SAAS,CAAC,OAAO,EAAG,OAAO,CAAC;IAE5B,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,sBAAsB,CAAC,GAAG,sBAAsB;IAExF,SAAS,CAAC,YAAY,IAAI,MAAM,GAAG,IAAI;IAKvC,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAItF,SAAS,CAAC,QAAQ,IAAI,YAAY;IA0BlC,SAAS,CAAC,eAAe,IAAI,OAAO;IAIpC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAYnE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBxB,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCpE,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAYrD"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { Agent } from 'agents';
|
|
2
|
-
import { Runtime } from '@ariaflowagents/core';
|
|
3
|
-
import { CloudflareSQLiteStore } from './stores/CloudflareSQLiteStore.js';
|
|
4
|
-
const mergeHooks = (base, extra) => {
|
|
5
|
-
if (!base)
|
|
6
|
-
return extra ?? {};
|
|
7
|
-
if (!extra)
|
|
8
|
-
return base;
|
|
9
|
-
const merged = { ...base };
|
|
10
|
-
for (const [key, hook] of Object.entries(extra)) {
|
|
11
|
-
const hookKey = key;
|
|
12
|
-
const existing = merged[hookKey];
|
|
13
|
-
if (!hook)
|
|
14
|
-
continue;
|
|
15
|
-
if (existing) {
|
|
16
|
-
merged[hookKey] = (async (...args) => {
|
|
17
|
-
await existing(...args);
|
|
18
|
-
await hook(...args);
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
merged[hookKey] = hook;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return merged;
|
|
26
|
-
};
|
|
27
|
-
const coerceToString = (message) => {
|
|
28
|
-
if (typeof message === 'string') {
|
|
29
|
-
return message;
|
|
30
|
-
}
|
|
31
|
-
if (message instanceof ArrayBuffer) {
|
|
32
|
-
return new TextDecoder().decode(message);
|
|
33
|
-
}
|
|
34
|
-
if (ArrayBuffer.isView(message)) {
|
|
35
|
-
return new TextDecoder().decode(message.buffer);
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
};
|
|
39
|
-
const parsePayload = (raw) => {
|
|
40
|
-
const asString = coerceToString(raw);
|
|
41
|
-
if (!asString)
|
|
42
|
-
return null;
|
|
43
|
-
try {
|
|
44
|
-
return JSON.parse(asString);
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return { text: asString };
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
export class AriaFlowChatAgent extends Agent {
|
|
51
|
-
runtime;
|
|
52
|
-
getContextId() {
|
|
53
|
-
const ctx = this.ctx;
|
|
54
|
-
return ctx?.id?.toString?.() ?? null;
|
|
55
|
-
}
|
|
56
|
-
getSessionId(_connection, _payload) {
|
|
57
|
-
return _payload.sessionId ?? this.getContextId() ?? _connection.id;
|
|
58
|
-
}
|
|
59
|
-
getHooks() {
|
|
60
|
-
return {
|
|
61
|
-
onHandoff: async (_context, _from, to, reason) => {
|
|
62
|
-
if (this.setState) {
|
|
63
|
-
const state = this.state;
|
|
64
|
-
this.setState({
|
|
65
|
-
...state,
|
|
66
|
-
activeAgentId: to,
|
|
67
|
-
lastHandoffReason: reason,
|
|
68
|
-
updatedAt: Date.now(),
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
onAgentStart: async (_context, agentId) => {
|
|
73
|
-
if (this.setState) {
|
|
74
|
-
const state = this.state;
|
|
75
|
-
this.setState({
|
|
76
|
-
...state,
|
|
77
|
-
activeAgentId: agentId,
|
|
78
|
-
updatedAt: Date.now(),
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
shouldBroadcast() {
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
sendPart(connection, part) {
|
|
88
|
-
const payload = JSON.stringify(part);
|
|
89
|
-
const broadcaster = this;
|
|
90
|
-
if (this.shouldBroadcast() && typeof broadcaster.broadcast === 'function') {
|
|
91
|
-
broadcaster.broadcast(payload);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
connection.send(payload);
|
|
95
|
-
}
|
|
96
|
-
async onStart() {
|
|
97
|
-
await super.onStart();
|
|
98
|
-
const config = await this.createRuntimeConfig();
|
|
99
|
-
if (config instanceof Runtime) {
|
|
100
|
-
this.runtime = config;
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
const hooks = mergeHooks(config.hooks, this.getHooks());
|
|
104
|
-
const sessionStore = config.sessionStore ?? new CloudflareSQLiteStore(this.sql.bind(this));
|
|
105
|
-
this.runtime = new Runtime({
|
|
106
|
-
...config,
|
|
107
|
-
hooks,
|
|
108
|
-
sessionStore,
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
async onMessage(connection, message) {
|
|
112
|
-
const payload = parsePayload(message);
|
|
113
|
-
if (!payload)
|
|
114
|
-
return;
|
|
115
|
-
if (payload.type === 'ping') {
|
|
116
|
-
connection.send(JSON.stringify({ type: 'pong' }));
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const input = payload.text ?? payload.message ?? payload.content;
|
|
120
|
-
if (typeof input !== 'string' || !input.trim()) {
|
|
121
|
-
connection.send(JSON.stringify({ type: 'error', error: 'Message content required' }));
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
const sessionId = this.getSessionId(connection, payload);
|
|
125
|
-
try {
|
|
126
|
-
for await (const part of this.runtime.stream({
|
|
127
|
-
input,
|
|
128
|
-
sessionId,
|
|
129
|
-
userId: payload.userId,
|
|
130
|
-
})) {
|
|
131
|
-
this.sendPart(connection, part);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
connection.send(JSON.stringify({
|
|
136
|
-
type: 'error',
|
|
137
|
-
error: error.message,
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
async onRequest(request) {
|
|
142
|
-
const url = new URL(request.url);
|
|
143
|
-
if (url.pathname.endsWith('/info')) {
|
|
144
|
-
return Response.json({
|
|
145
|
-
agentId: this.getContextId(),
|
|
146
|
-
runtimeReady: Boolean(this.runtime),
|
|
147
|
-
timestamp: Date.now(),
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
return super.onRequest(request);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
//# sourceMappingURL=AriaFlowChatAgent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AriaFlowChatAgent.js","sourceRoot":"","sources":["../src/AriaFlowChatAgent.ts"],"names":[],"mappings":"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"}
|