@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 CHANGED
@@ -1,40 +1,196 @@
1
1
  # @ariaflowagents/cf-agent
2
2
 
3
- Cloudflare Agents base class for hosting AriaFlow Runtime on Durable Objects.
3
+ Cloudflare Durable Object base classes for hosting AriaFlow on the edge.
4
4
 
5
- ## Why Cloudflare Agents
5
+ ## Two Primitive Classes
6
6
 
7
- - Batteries-included state with automatic client sync and embedded SQLite.
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
- ## Usage
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
- ```ts
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 support: AgentConfig = {
20
- id: 'support',
21
- name: 'Support',
22
- systemPrompt: 'You help users with support questions.',
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
- agents: [support],
27
- defaultAgentId: 'support',
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
- ## Notes
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
- - `createRuntimeConfig()` is called once on startup and should return a `Runtime`
36
- or a `HarnessConfig` used to build one.
37
- - The base class streams AriaFlow parts over WebSockets and syncs `activeAgentId`
38
- into Agent state on handoffs.
39
- - `GET /info` is handled in `onRequest` for simple metadata.
40
- - `CloudflareSQLiteStore` is exported from this package for custom session wiring.
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;IAmBxB,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
+ {"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 type { AriaFlowChatPayload, AriaFlowRuntimeFactory } from './AriaFlowChatAgent.js';
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
@@ -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,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC"}
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
@@ -1,3 +1,4 @@
1
1
  export { AriaFlowChatAgent } from './AriaFlowChatAgent.js';
2
+ export { AriaFlowFlowAgent } from './AriaFlowFlowAgent.js';
2
3
  export { CloudflareSQLiteStore } from './stores/CloudflareSQLiteStore.js';
3
4
  //# 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,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,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.1.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.1.0",
18
+ "@ariaflowagents/core": "^0.2.0",
19
19
  "agents": "^0.3.5"
20
20
  },
21
21
  "devDependencies": {