@ariaflowagents/cf-agent 0.1.0 → 0.2.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/README.md +176 -20
- package/dist/AriaFlowChatAgent.d.ts.map +1 -1
- package/dist/AriaFlowChatAgent.js +1 -1
- package/dist/AriaFlowChatAgent.js.map +1 -1
- package/dist/AriaFlowFlowAgent.d.ts +87 -0
- package/dist/AriaFlowFlowAgent.d.ts.map +1 -0
- package/dist/AriaFlowFlowAgent.js +175 -0
- package/dist/AriaFlowFlowAgent.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,40 +1,196 @@
|
|
|
1
1
|
# @ariaflowagents/cf-agent
|
|
2
2
|
|
|
3
|
-
Cloudflare
|
|
3
|
+
Cloudflare Durable Object base classes for hosting AriaFlow on the edge.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Two Primitive Classes
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- Real-time WebSockets for streaming agent updates.
|
|
9
|
-
- Extensible edge runtime with Durable Objects for global, low-latency sessions.
|
|
7
|
+
This package provides **two separate base classes** for different use cases:
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
| Class | Use When | Config Returns |
|
|
10
|
+
|-------|----------|----------------|
|
|
11
|
+
| `AriaFlowChatAgent` | Multi-agent systems with handoffs | `HarnessConfig` or `Runtime` |
|
|
12
|
+
| `AriaFlowFlowAgent` | Structured single-flow conversations | `AriaFlowFlowConfig` or `AgentFlowManager` |
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## AriaFlowChatAgent - Multi-Agent Runtime
|
|
17
|
+
|
|
18
|
+
Use for **multi-agent systems** where agents can hand off to each other.
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
14
21
|
import { AriaFlowChatAgent } from '@ariaflowagents/cf-agent';
|
|
15
22
|
import { Runtime, type AgentConfig } from '@ariaflowagents/core';
|
|
16
23
|
|
|
17
24
|
export class SupportAgent extends AriaFlowChatAgent {
|
|
18
25
|
async createRuntimeConfig() {
|
|
19
|
-
const
|
|
20
|
-
id: '
|
|
21
|
-
name: '
|
|
22
|
-
|
|
26
|
+
const triage: AgentConfig = {
|
|
27
|
+
id: 'triage',
|
|
28
|
+
name: 'Triage',
|
|
29
|
+
type: 'triage',
|
|
30
|
+
systemPrompt: 'Route customers to specialists.',
|
|
31
|
+
routes: [
|
|
32
|
+
{ agentId: 'orders', description: 'Order questions' },
|
|
33
|
+
{ agentId: 'billing', description: 'Billing questions' },
|
|
34
|
+
],
|
|
23
35
|
};
|
|
24
36
|
|
|
37
|
+
const orders: AgentConfig = {
|
|
38
|
+
id: 'orders',
|
|
39
|
+
name: 'Orders',
|
|
40
|
+
type: 'llm',
|
|
41
|
+
systemPrompt: 'Help with order questions.',
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
agents: [triage, orders],
|
|
46
|
+
defaultAgentId: 'triage',
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**State (Runtime mode):**
|
|
53
|
+
```typescript
|
|
54
|
+
state = {
|
|
55
|
+
activeAgentId: 'orders', // Current agent
|
|
56
|
+
lastHandoffReason: 'Order inquiry',
|
|
57
|
+
updatedAt: 1234567890,
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## AriaFlowFlowAgent - Structured Flow
|
|
64
|
+
|
|
65
|
+
Use for **structured, multi-step flows** with guided conversations.
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
import { AriaFlowFlowAgent } from '@ariaflowagents/cf-agent';
|
|
69
|
+
import { AriaFlowFlowConfig } from '@ariaflowagents/cf-agent';
|
|
70
|
+
import { tool } from 'ai';
|
|
71
|
+
import { z } from 'zod';
|
|
72
|
+
import { createFlowTransition } from '@ariaflowagents/core';
|
|
73
|
+
|
|
74
|
+
export class ReservationAgent extends AriaFlowFlowAgent {
|
|
75
|
+
async createFlowConfig(): Promise<AriaFlowFlowConfig> {
|
|
25
76
|
return {
|
|
26
|
-
|
|
27
|
-
|
|
77
|
+
initialNode: 'greeting',
|
|
78
|
+
model: this.env.AI as any,
|
|
79
|
+
defaultRolePrompt: 'You are a reservation assistant.',
|
|
80
|
+
nodes: [
|
|
81
|
+
{
|
|
82
|
+
name: 'greeting',
|
|
83
|
+
taskPrompt: 'Greet warmly and ask for party size.',
|
|
84
|
+
tools: {
|
|
85
|
+
collect_party_size: tool({
|
|
86
|
+
description: 'Record party size',
|
|
87
|
+
inputSchema: z.object({
|
|
88
|
+
partySize: z.number().min(1).max(20)
|
|
89
|
+
}),
|
|
90
|
+
execute: async ({ partySize }) =>
|
|
91
|
+
createFlowTransition('collect_date', { partySize }),
|
|
92
|
+
}),
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'collect_date',
|
|
97
|
+
taskPrompt: 'Ask for reservation date.',
|
|
98
|
+
},
|
|
99
|
+
],
|
|
28
100
|
};
|
|
29
101
|
}
|
|
30
102
|
}
|
|
31
103
|
```
|
|
32
104
|
|
|
33
|
-
|
|
105
|
+
**State (Flow mode):**
|
|
106
|
+
```typescript
|
|
107
|
+
state = {
|
|
108
|
+
currentNode: 'collect_date', // Current node
|
|
109
|
+
nodeHistory: ['greeting', 'collect_party_size', 'collect_date'],
|
|
110
|
+
updatedAt: 1234567890,
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Context Strategies
|
|
117
|
+
|
|
118
|
+
Control conversation history behavior:
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
{
|
|
122
|
+
name: 'confirmation',
|
|
123
|
+
taskPrompt: 'Confirm details.',
|
|
124
|
+
contextStrategy: {
|
|
125
|
+
strategy: 'reset_with_summary' // Summarize instead of full history
|
|
126
|
+
},
|
|
127
|
+
}
|
|
128
|
+
```
|
|
34
129
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
130
|
+
| Strategy | Behavior |
|
|
131
|
+
|----------|----------|
|
|
132
|
+
| `append` | Keep all messages (default) |
|
|
133
|
+
| `reset` | Clear messages on node entry |
|
|
134
|
+
| `reset_with_summary` | Summarize and replace messages |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Endpoints (Both Classes)
|
|
139
|
+
|
|
140
|
+
| Endpoint | Returns |
|
|
141
|
+
|----------|---------|
|
|
142
|
+
| `GET /info` | Agent metadata, mode, readiness |
|
|
143
|
+
| `GET /state` | Full agent state |
|
|
144
|
+
| `WS /` | WebSocket for streaming |
|
|
145
|
+
|
|
146
|
+
**AriaFlowFlowAgent additional:**
|
|
147
|
+
| `GET /flow-state` | Flow-specific state (currentNode, nodeHistory, collectedData) |
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Quick Reference
|
|
152
|
+
|
|
153
|
+
| Question | Answer |
|
|
154
|
+
|----------|--------|
|
|
155
|
+
| Need multiple agents with handoffs? | Use `AriaFlowChatAgent` |
|
|
156
|
+
| Need structured step-by-step flow? | Use `AriaFlowFlowAgent` |
|
|
157
|
+
| State persists? | Yes, via Durable Object storage |
|
|
158
|
+
| WebSocket streaming? | Yes, automatic |
|
|
159
|
+
| Can switch modes? | No - choose the right class for your use case |
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Example: Cloudflare Worker
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// Runtime Mode (Multi-Agent)
|
|
167
|
+
import { AriaFlowChatAgent } from '@ariaflowagents/cf-agent';
|
|
168
|
+
|
|
169
|
+
export class MyAgent extends AriaFlowChatAgent {
|
|
170
|
+
async createRuntimeConfig() {
|
|
171
|
+
return {
|
|
172
|
+
agents: [{ id: 'assistant', name: 'Assistant', systemPrompt: 'Helpful.' }],
|
|
173
|
+
defaultAgentId: 'assistant',
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// OR Flow Mode (Single Flow)
|
|
179
|
+
import { AriaFlowFlowAgent } from '@ariaflowagents/cf-agent';
|
|
180
|
+
|
|
181
|
+
export class MyFlowAgent extends AriaFlowFlowAgent {
|
|
182
|
+
async createFlowConfig() {
|
|
183
|
+
return {
|
|
184
|
+
initialNode: 'greeting',
|
|
185
|
+
model: this.env.AI as any,
|
|
186
|
+
nodes: [{ name: 'greeting', taskPrompt: 'Hi!' }],
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export default {
|
|
192
|
+
async fetch(request: Request, env: Env): Promise<Response> {
|
|
193
|
+
return MyAgent.fetch(request, env); // or MyFlowAgent
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
```
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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"}
|
|
@@ -101,7 +101,7 @@ export class AriaFlowChatAgent extends Agent {
|
|
|
101
101
|
return;
|
|
102
102
|
}
|
|
103
103
|
const hooks = mergeHooks(config.hooks, this.getHooks());
|
|
104
|
-
const sessionStore = config.sessionStore ?? new CloudflareSQLiteStore(this.sql);
|
|
104
|
+
const sessionStore = config.sessionStore ?? new CloudflareSQLiteStore(this.sql.bind(this));
|
|
105
105
|
this.runtime = new Runtime({
|
|
106
106
|
...config,
|
|
107
107
|
hooks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AriaFlowChatAgent.js","sourceRoot":"","sources":["../src/AriaFlowChatAgent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AriaFlowChatAgent.js","sourceRoot":"","sources":["../src/AriaFlowChatAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Agent, type Connection, type WSMessage } from 'agents';
|
|
2
|
+
import { AgentFlowManager, type FlowContext, type FlowStreamPart, type FlowHooks, type ToolSet } from '@ariaflowagents/core';
|
|
3
|
+
import type { LanguageModel } from 'ai';
|
|
4
|
+
export interface AriaFlowFlowConfig {
|
|
5
|
+
initialNode: string;
|
|
6
|
+
model: LanguageModel;
|
|
7
|
+
defaultRolePrompt?: string;
|
|
8
|
+
nodes: readonly FlowNodeConfig[];
|
|
9
|
+
hooks?: FlowHooks;
|
|
10
|
+
globalTools?: ToolSet;
|
|
11
|
+
defaultContextStrategy?: ContextStrategyConfig;
|
|
12
|
+
}
|
|
13
|
+
export interface FlowNodeConfig {
|
|
14
|
+
name: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
rolePrompt?: string;
|
|
17
|
+
taskPrompt: string;
|
|
18
|
+
tools?: ToolSet;
|
|
19
|
+
preActions?: FlowAction[];
|
|
20
|
+
postActions?: FlowAction[];
|
|
21
|
+
contextStrategy?: ContextStrategyConfig;
|
|
22
|
+
autoRespond?: boolean;
|
|
23
|
+
maxTurns?: number;
|
|
24
|
+
}
|
|
25
|
+
export type FlowAction = {
|
|
26
|
+
type: 'say';
|
|
27
|
+
text: string;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'end';
|
|
30
|
+
message?: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'function';
|
|
33
|
+
handler: FlowActionHandler;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'delay';
|
|
36
|
+
ms: number;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'emit';
|
|
39
|
+
event: string;
|
|
40
|
+
data?: unknown;
|
|
41
|
+
};
|
|
42
|
+
export type FlowActionHandler = (context: FlowContext) => Promise<void>;
|
|
43
|
+
export interface ContextStrategyConfig {
|
|
44
|
+
strategy: 'append' | 'reset' | 'reset_with_summary';
|
|
45
|
+
summaryPrompt?: string;
|
|
46
|
+
summaryMaxTokens?: number;
|
|
47
|
+
}
|
|
48
|
+
export type AriaFlowFlowFactory = AgentFlowManager | AriaFlowFlowConfig;
|
|
49
|
+
export type AriaFlowFlowPayload = {
|
|
50
|
+
type?: string;
|
|
51
|
+
text?: string;
|
|
52
|
+
message?: string;
|
|
53
|
+
content?: string;
|
|
54
|
+
sessionId?: string;
|
|
55
|
+
userId?: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* AriaFlowFlowAgent - Cloudflare Durable Object for AgentFlowManager
|
|
59
|
+
*
|
|
60
|
+
* Use this when you need a structured, multi-step conversation flow.
|
|
61
|
+
*
|
|
62
|
+
* Features:
|
|
63
|
+
* - Node-based conversation flow
|
|
64
|
+
* - Tools that drive transitions via createFlowTransition()
|
|
65
|
+
* - Flow hooks for observability
|
|
66
|
+
* - Context strategies (append, reset, reset_with_summary)
|
|
67
|
+
* - State persistence
|
|
68
|
+
*/
|
|
69
|
+
export declare abstract class AriaFlowFlowAgent<Env = unknown, State = unknown> extends Agent<Env, State> {
|
|
70
|
+
protected flowManager: AgentFlowManager;
|
|
71
|
+
/**
|
|
72
|
+
* Create the flow configuration.
|
|
73
|
+
*
|
|
74
|
+
* Returns:
|
|
75
|
+
* - AgentFlowManager - Direct instance (for custom initialization)
|
|
76
|
+
* - AriaFlowFlowConfig - Config to build AgentFlowManager (recommended)
|
|
77
|
+
*/
|
|
78
|
+
abstract createFlowConfig(): Promise<AriaFlowFlowFactory> | AriaFlowFlowFactory;
|
|
79
|
+
protected getContextId(): string | null;
|
|
80
|
+
protected getFlowHooks(): FlowHooks;
|
|
81
|
+
protected shouldBroadcast(): boolean;
|
|
82
|
+
protected sendPart(connection: Connection, part: FlowStreamPart): void;
|
|
83
|
+
onStart(): Promise<void>;
|
|
84
|
+
onMessage(connection: Connection, message: WSMessage): Promise<void>;
|
|
85
|
+
onRequest(request: Request): Promise<Response>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=AriaFlowFlowAgent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AriaFlowFlowAgent.d.ts","sourceRoot":"","sources":["../src/AriaFlowFlowAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Agent } from 'agents';
|
|
2
|
+
import { AgentFlowManager, } from '@ariaflowagents/core';
|
|
3
|
+
const mergeFlowHooks = (base, extra) => {
|
|
4
|
+
if (!base)
|
|
5
|
+
return extra ?? {};
|
|
6
|
+
if (!extra)
|
|
7
|
+
return base;
|
|
8
|
+
const merged = { ...base };
|
|
9
|
+
for (const [key, hook] of Object.entries(extra)) {
|
|
10
|
+
const hookKey = key;
|
|
11
|
+
const existing = merged[hookKey];
|
|
12
|
+
if (!hook)
|
|
13
|
+
continue;
|
|
14
|
+
if (existing) {
|
|
15
|
+
merged[hookKey] = (async (...args) => {
|
|
16
|
+
await existing(...args);
|
|
17
|
+
await hook(...args);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
merged[hookKey] = hook;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return merged;
|
|
25
|
+
};
|
|
26
|
+
const coerceToString = (message) => {
|
|
27
|
+
if (typeof message === 'string') {
|
|
28
|
+
return message;
|
|
29
|
+
}
|
|
30
|
+
if (message instanceof ArrayBuffer) {
|
|
31
|
+
return new TextDecoder().decode(message);
|
|
32
|
+
}
|
|
33
|
+
if (ArrayBuffer.isView(message)) {
|
|
34
|
+
return new TextDecoder().decode(message.buffer);
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
};
|
|
38
|
+
const parsePayload = (raw) => {
|
|
39
|
+
const asString = coerceToString(raw);
|
|
40
|
+
if (!asString)
|
|
41
|
+
return null;
|
|
42
|
+
try {
|
|
43
|
+
return JSON.parse(asString);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return { text: asString };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
// ═══════════════════════════════════════════════════════════════
|
|
50
|
+
// AriaFlowFlowAgent - For Structured Flows
|
|
51
|
+
// ═══════════════════════════════════════════════════════════════
|
|
52
|
+
/**
|
|
53
|
+
* AriaFlowFlowAgent - Cloudflare Durable Object for AgentFlowManager
|
|
54
|
+
*
|
|
55
|
+
* Use this when you need a structured, multi-step conversation flow.
|
|
56
|
+
*
|
|
57
|
+
* Features:
|
|
58
|
+
* - Node-based conversation flow
|
|
59
|
+
* - Tools that drive transitions via createFlowTransition()
|
|
60
|
+
* - Flow hooks for observability
|
|
61
|
+
* - Context strategies (append, reset, reset_with_summary)
|
|
62
|
+
* - State persistence
|
|
63
|
+
*/
|
|
64
|
+
export class AriaFlowFlowAgent extends Agent {
|
|
65
|
+
flowManager;
|
|
66
|
+
getContextId() {
|
|
67
|
+
const ctx = this.ctx;
|
|
68
|
+
return ctx?.id?.toString?.() ?? null;
|
|
69
|
+
}
|
|
70
|
+
getFlowHooks() {
|
|
71
|
+
return {
|
|
72
|
+
onNodeEnter: async (_context, node) => {
|
|
73
|
+
if (this.setState) {
|
|
74
|
+
const state = this.state;
|
|
75
|
+
this.setState({
|
|
76
|
+
...state,
|
|
77
|
+
currentNode: node.name ?? 'unknown',
|
|
78
|
+
updatedAt: Date.now(),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
onTransition: async (_context, _from, to, _data) => {
|
|
83
|
+
if (this.setState) {
|
|
84
|
+
const state = this.state;
|
|
85
|
+
const nodeHistory = state.nodeHistory ?? [];
|
|
86
|
+
this.setState({
|
|
87
|
+
...state,
|
|
88
|
+
currentNode: to,
|
|
89
|
+
nodeHistory: [...nodeHistory, to],
|
|
90
|
+
updatedAt: Date.now(),
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
shouldBroadcast() {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
sendPart(connection, part) {
|
|
100
|
+
const payload = JSON.stringify(part);
|
|
101
|
+
const broadcaster = this;
|
|
102
|
+
if (this.shouldBroadcast() && typeof broadcaster.broadcast === 'function') {
|
|
103
|
+
broadcaster.broadcast(payload);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
connection.send(payload);
|
|
107
|
+
}
|
|
108
|
+
async onStart() {
|
|
109
|
+
await super.onStart();
|
|
110
|
+
const config = await this.createFlowConfig();
|
|
111
|
+
// Direct AgentFlowManager instance
|
|
112
|
+
if (config instanceof AgentFlowManager) {
|
|
113
|
+
this.flowManager = config;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Config object - build AgentFlowManager
|
|
117
|
+
if ('nodes' in config && 'initialNode' in config) {
|
|
118
|
+
const hooks = mergeFlowHooks(config.hooks, this.getFlowHooks());
|
|
119
|
+
this.flowManager = new AgentFlowManager({
|
|
120
|
+
...config,
|
|
121
|
+
hooks,
|
|
122
|
+
}, this.getContextId() ?? 'flow-agent');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
throw new Error('Invalid flow configuration. Must be AgentFlowManager or AriaFlowFlowConfig');
|
|
126
|
+
}
|
|
127
|
+
async onMessage(connection, message) {
|
|
128
|
+
const payload = parsePayload(message);
|
|
129
|
+
if (!payload)
|
|
130
|
+
return;
|
|
131
|
+
if (payload.type === 'ping') {
|
|
132
|
+
connection.send(JSON.stringify({ type: 'pong' }));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const input = payload.text ?? payload.message ?? payload.content;
|
|
136
|
+
if (typeof input !== 'string' || !input.trim()) {
|
|
137
|
+
connection.send(JSON.stringify({ type: 'error', error: 'Message content required' }));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
for await (const part of this.flowManager.process(input)) {
|
|
142
|
+
this.sendPart(connection, part);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
connection.send(JSON.stringify({
|
|
147
|
+
type: 'error',
|
|
148
|
+
error: error.message,
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async onRequest(request) {
|
|
153
|
+
const url = new URL(request.url);
|
|
154
|
+
if (url.pathname.endsWith('/info')) {
|
|
155
|
+
return Response.json({
|
|
156
|
+
agentId: this.getContextId(),
|
|
157
|
+
flowManagerReady: true,
|
|
158
|
+
currentNode: this.flowManager.currentNodeName,
|
|
159
|
+
nodeHistory: this.flowManager.nodeHistory,
|
|
160
|
+
hasEnded: this.flowManager.hasEnded,
|
|
161
|
+
timestamp: Date.now(),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
if (url.pathname.endsWith('/flow-state')) {
|
|
165
|
+
return Response.json({
|
|
166
|
+
currentNode: this.flowManager.currentNodeName,
|
|
167
|
+
nodeHistory: this.flowManager.nodeHistory,
|
|
168
|
+
collectedData: this.flowManager.collectedData,
|
|
169
|
+
hasEnded: this.flowManager.hasEnded,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
return super.onRequest(request);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=AriaFlowFlowAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AriaFlowFlowAgent.js","sourceRoot":"","sources":["../src/AriaFlowFlowAgent.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { AriaFlowChatAgent } from './AriaFlowChatAgent.js';
|
|
2
|
-
export
|
|
2
|
+
export { AriaFlowFlowAgent } from './AriaFlowFlowAgent.js';
|
|
3
|
+
export type { AriaFlowChatPayload, AriaFlowRuntimeFactory, } from './AriaFlowChatAgent.js';
|
|
4
|
+
export type { AriaFlowFlowPayload, AriaFlowFlowFactory, AriaFlowFlowConfig, FlowNodeConfig, FlowAction, ContextStrategyConfig, } from './AriaFlowFlowAgent.js';
|
|
3
5
|
export { CloudflareSQLiteStore } from './stores/CloudflareSQLiteStore.js';
|
|
4
6
|
//# 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,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EACV,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAa3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ariaflowagents/cf-agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Cloudflare Agents base class for hosting AriaFlow Runtime on Durable Objects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"agents": "^0.3.5"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"@ariaflowagents/core": "^0.
|
|
18
|
+
"@ariaflowagents/core": "^0.2.0",
|
|
19
19
|
"agents": "^0.3.5"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|