@angflow/angular 0.0.14 → 0.0.15

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.
Files changed (45) hide show
  1. package/dist/esm/lib/agent/agent-bridge.service.d.ts +70 -0
  2. package/dist/esm/lib/agent/agent-bridge.service.d.ts.map +1 -0
  3. package/dist/esm/lib/agent/agent-bridge.service.js +331 -0
  4. package/dist/esm/lib/agent/agent-bridge.service.js.map +1 -0
  5. package/dist/esm/lib/agent/index.d.ts +7 -0
  6. package/dist/esm/lib/agent/index.d.ts.map +1 -0
  7. package/dist/esm/lib/agent/index.js +6 -0
  8. package/dist/esm/lib/agent/index.js.map +1 -0
  9. package/dist/esm/lib/agent/provide-agent-bridge.d.ts +27 -0
  10. package/dist/esm/lib/agent/provide-agent-bridge.d.ts.map +1 -0
  11. package/dist/esm/lib/agent/provide-agent-bridge.js +27 -0
  12. package/dist/esm/lib/agent/provide-agent-bridge.js.map +1 -0
  13. package/dist/esm/lib/agent/tool-schemas.d.ts +10 -0
  14. package/dist/esm/lib/agent/tool-schemas.d.ts.map +1 -0
  15. package/dist/esm/lib/agent/tool-schemas.js +234 -0
  16. package/dist/esm/lib/agent/tool-schemas.js.map +1 -0
  17. package/dist/esm/lib/agent/transports/websocket.d.ts +39 -0
  18. package/dist/esm/lib/agent/transports/websocket.d.ts.map +1 -0
  19. package/dist/esm/lib/agent/transports/websocket.js +95 -0
  20. package/dist/esm/lib/agent/transports/websocket.js.map +1 -0
  21. package/dist/esm/lib/agent/transports/window.d.ts +29 -0
  22. package/dist/esm/lib/agent/transports/window.d.ts.map +1 -0
  23. package/dist/esm/lib/agent/transports/window.js +65 -0
  24. package/dist/esm/lib/agent/transports/window.js.map +1 -0
  25. package/dist/esm/lib/agent/types.d.ts +66 -0
  26. package/dist/esm/lib/agent/types.d.ts.map +1 -0
  27. package/dist/esm/lib/agent/types.js +9 -0
  28. package/dist/esm/lib/agent/types.js.map +1 -0
  29. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts +2 -2
  30. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts +11 -11
  31. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts.map +1 -1
  32. package/dist/esm/lib/container/ng-flow/ng-flow.component.js +14 -14
  33. package/dist/esm/lib/container/ng-flow/ng-flow.component.js.map +1 -1
  34. package/dist/esm/lib/public-api.d.ts +1 -0
  35. package/dist/esm/lib/public-api.d.ts.map +1 -1
  36. package/dist/esm/lib/public-api.js +2 -0
  37. package/dist/esm/lib/public-api.js.map +1 -1
  38. package/dist/esm/lib/services/ng-flow.service.d.ts.map +1 -1
  39. package/dist/esm/lib/services/ng-flow.service.js +32 -30
  40. package/dist/esm/lib/services/ng-flow.service.js.map +1 -1
  41. package/dist/esm/lib/types/edges.d.ts +6 -5
  42. package/dist/esm/lib/types/edges.d.ts.map +1 -1
  43. package/dist/esm/lib/types/nodes.d.ts +10 -1
  44. package/dist/esm/lib/types/nodes.d.ts.map +1 -1
  45. package/package.json +2 -2
@@ -0,0 +1,70 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import type { NgFlowService } from '../services/ng-flow.service';
3
+ import type { AgentTransport } from './types';
4
+ import * as i0 from "@angular/core";
5
+ /** Provider token holding the user-supplied transport(s). */
6
+ export declare const AGENT_TRANSPORTS: InjectionToken<AgentTransport[]>;
7
+ /**
8
+ * Routes JSON-RPC requests from one or more transports to registered
9
+ * `NgFlowService` instances, and pushes change events back to the agent.
10
+ *
11
+ * Provide via {@link provideAgentBridge}; register a flow by calling
12
+ * `register(id, ngFlowService)` from `(init)` on `<ng-flow>`.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // appConfig.ts
17
+ * providers: [
18
+ * provideAgentBridge({
19
+ * transports: [new WindowTransport({ namespace: 'angflow' })],
20
+ * }),
21
+ * ]
22
+ *
23
+ * // some-component.ts
24
+ * bridge = inject(AngflowAgentBridge);
25
+ *
26
+ * onInit(flow: NgFlowService) {
27
+ * this.bridge.register('main', flow);
28
+ * }
29
+ * ```
30
+ */
31
+ export declare class AngflowAgentBridge {
32
+ /** Schemas for every exposed tool — feed straight to a Claude / OpenAI tools array. */
33
+ readonly toolSchemas: import("./types").AgentToolSchema[];
34
+ private readonly flows;
35
+ private readonly transports;
36
+ private readonly handlers;
37
+ private readonly injector;
38
+ private started;
39
+ /** Bumped every time a flow registers/unregisters. Useful for diagnostics. */
40
+ readonly registeredFlows: import("@angular/core").WritableSignal<string[]>;
41
+ constructor(transports: AgentTransport[] | null);
42
+ /**
43
+ * Register a flow under `id`. The bridge subscribes to its `nodes`,
44
+ * `edges`, and `viewport` signals and emits change events to all
45
+ * transports.
46
+ *
47
+ * Returns a disposer; if not called manually, registration leaks until
48
+ * the bridge itself is torn down. In Angular components, call from
49
+ * `(init)` on `<ng-flow>` and pair with `OnDestroy`.
50
+ */
51
+ register(id: string, flow: NgFlowService): () => void;
52
+ unregister(id: string): void;
53
+ /** Look up a registered flow. */
54
+ getFlow(id: string): NgFlowService | undefined;
55
+ /**
56
+ * Invoke a tool directly without going through a transport. Useful for
57
+ * in-process callers (tests, devtools snippets, Angular components that
58
+ * want to share the same dispatch logic).
59
+ */
60
+ callTool(method: string, params?: Record<string, unknown>): Promise<unknown>;
61
+ private start;
62
+ private dispatch;
63
+ private emit;
64
+ private resolveFlow;
65
+ private watchFlow;
66
+ private installHandlers;
67
+ static ɵfac: i0.ɵɵFactoryDeclaration<AngflowAgentBridge, [{ optional: true; }]>;
68
+ static ɵprov: i0.ɵɵInjectableDeclaration<AngflowAgentBridge>;
69
+ }
70
+ //# sourceMappingURL=agent-bridge.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-bridge.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/agent/agent-bridge.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAQf,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAGV,cAAc,EAEf,MAAM,SAAS,CAAC;;AAEjB,6DAA6D;AAC7D,eAAO,MAAM,gBAAgB,kCAAiE,CAAC;AAiB/F;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,kBAAkB;IAC7B,uFAAuF;IACvF,QAAQ,CAAC,WAAW,sCAAsB;IAE1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAS;IAExB,8EAA8E;IAC9E,QAAQ,CAAC,eAAe,mDAAwB;gBAGR,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI;IAO3E;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,IAAI;IAarD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS5B,iCAAiC;IACjC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI9C;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IActF,OAAO,CAAC,KAAK;YAQC,QAAQ;IAkCtB,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,eAAe;yCAvLZ,kBAAkB;6CAAlB,kBAAkB;CAmR9B"}
@@ -0,0 +1,331 @@
1
+ import { Inject, Injectable, InjectionToken, Injector, Optional, effect, inject, runInInjectionContext, signal, } from '@angular/core';
2
+ import { AGENT_TOOL_SCHEMAS } from './tool-schemas';
3
+ import * as i0 from "@angular/core";
4
+ /** Provider token holding the user-supplied transport(s). */
5
+ export const AGENT_TRANSPORTS = new InjectionToken('AngflowAgentTransports');
6
+ const ERROR_INVALID_PARAMS = -32602;
7
+ const ERROR_METHOD_NOT_FOUND = -32601;
8
+ const ERROR_FLOW_NOT_FOUND = -32000;
9
+ const ERROR_INTERNAL = -32603;
10
+ /**
11
+ * Routes JSON-RPC requests from one or more transports to registered
12
+ * `NgFlowService` instances, and pushes change events back to the agent.
13
+ *
14
+ * Provide via {@link provideAgentBridge}; register a flow by calling
15
+ * `register(id, ngFlowService)` from `(init)` on `<ng-flow>`.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * // appConfig.ts
20
+ * providers: [
21
+ * provideAgentBridge({
22
+ * transports: [new WindowTransport({ namespace: 'angflow' })],
23
+ * }),
24
+ * ]
25
+ *
26
+ * // some-component.ts
27
+ * bridge = inject(AngflowAgentBridge);
28
+ *
29
+ * onInit(flow: NgFlowService) {
30
+ * this.bridge.register('main', flow);
31
+ * }
32
+ * ```
33
+ */
34
+ export class AngflowAgentBridge {
35
+ constructor(transports) {
36
+ /** Schemas for every exposed tool — feed straight to a Claude / OpenAI tools array. */
37
+ this.toolSchemas = AGENT_TOOL_SCHEMAS;
38
+ this.flows = new Map();
39
+ this.handlers = new Map();
40
+ this.injector = inject(Injector);
41
+ this.started = false;
42
+ /** Bumped every time a flow registers/unregisters. Useful for diagnostics. */
43
+ this.registeredFlows = signal([], ...(ngDevMode ? [{ debugName: "registeredFlows" }] : /* istanbul ignore next */ []));
44
+ this.transports = transports ?? [];
45
+ this.installHandlers();
46
+ this.start();
47
+ }
48
+ /**
49
+ * Register a flow under `id`. The bridge subscribes to its `nodes`,
50
+ * `edges`, and `viewport` signals and emits change events to all
51
+ * transports.
52
+ *
53
+ * Returns a disposer; if not called manually, registration leaks until
54
+ * the bridge itself is torn down. In Angular components, call from
55
+ * `(init)` on `<ng-flow>` and pair with `OnDestroy`.
56
+ */
57
+ register(id, flow) {
58
+ if (this.flows.has(id)) {
59
+ this.flows.get(id).watcher.destroy();
60
+ }
61
+ const watcher = this.watchFlow(id, flow);
62
+ this.flows.set(id, { service: flow, watcher });
63
+ this.registeredFlows.set(Array.from(this.flows.keys()));
64
+ this.emit({ event: 'flow.registered', params: { flowId: id } });
65
+ return () => this.unregister(id);
66
+ }
67
+ unregister(id) {
68
+ const entry = this.flows.get(id);
69
+ if (!entry)
70
+ return;
71
+ entry.watcher.destroy();
72
+ this.flows.delete(id);
73
+ this.registeredFlows.set(Array.from(this.flows.keys()));
74
+ this.emit({ event: 'flow.unregistered', params: { flowId: id } });
75
+ }
76
+ /** Look up a registered flow. */
77
+ getFlow(id) {
78
+ return this.flows.get(id)?.service;
79
+ }
80
+ /**
81
+ * Invoke a tool directly without going through a transport. Useful for
82
+ * in-process callers (tests, devtools snippets, Angular components that
83
+ * want to share the same dispatch logic).
84
+ */
85
+ async callTool(method, params = {}) {
86
+ const handler = this.handlers.get(method);
87
+ if (!handler) {
88
+ throw new Error(`Unknown tool: ${method}`);
89
+ }
90
+ if (method === 'list_flows') {
91
+ return handler(null, params);
92
+ }
93
+ const flow = this.resolveFlow(params['flowId']);
94
+ return handler(flow, params);
95
+ }
96
+ // ── Internals ────────────────────────────────────────────────────────
97
+ start() {
98
+ if (this.started)
99
+ return;
100
+ this.started = true;
101
+ for (const t of this.transports) {
102
+ void t.start((req) => this.dispatch(req));
103
+ }
104
+ }
105
+ async dispatch(req) {
106
+ const handler = this.handlers.get(req.method);
107
+ if (!handler) {
108
+ return {
109
+ id: req.id,
110
+ error: { code: ERROR_METHOD_NOT_FOUND, message: `Unknown method: ${req.method}` },
111
+ };
112
+ }
113
+ try {
114
+ const params = req.params ?? {};
115
+ if (req.method === 'list_flows') {
116
+ const result = await handler(null, params);
117
+ return { id: req.id, result };
118
+ }
119
+ const flow = this.resolveFlow(params['flowId']);
120
+ const result = await handler(flow, params);
121
+ return { id: req.id, result: result ?? null };
122
+ }
123
+ catch (err) {
124
+ if (err instanceof FlowNotFoundError) {
125
+ return { id: req.id, error: { code: ERROR_FLOW_NOT_FOUND, message: err.message } };
126
+ }
127
+ if (err instanceof InvalidParamsError) {
128
+ return { id: req.id, error: { code: ERROR_INVALID_PARAMS, message: err.message } };
129
+ }
130
+ return {
131
+ id: req.id,
132
+ error: {
133
+ code: ERROR_INTERNAL,
134
+ message: err instanceof Error ? err.message : String(err),
135
+ },
136
+ };
137
+ }
138
+ }
139
+ emit(evt) {
140
+ for (const t of this.transports) {
141
+ try {
142
+ t.send(evt);
143
+ }
144
+ catch {
145
+ // Transport errors are isolated per-transport; never let one break the bridge.
146
+ }
147
+ }
148
+ }
149
+ resolveFlow(rawId) {
150
+ if (typeof rawId === 'string' && rawId.length > 0) {
151
+ const entry = this.flows.get(rawId);
152
+ if (!entry)
153
+ throw new FlowNotFoundError(`No flow registered with id "${rawId}"`);
154
+ return entry.service;
155
+ }
156
+ if (this.flows.size === 0) {
157
+ throw new FlowNotFoundError('No flows are registered with the agent bridge.');
158
+ }
159
+ if (this.flows.size > 1) {
160
+ throw new InvalidParamsError(`Multiple flows registered (${Array.from(this.flows.keys()).join(', ')}); pass flowId to disambiguate.`);
161
+ }
162
+ return this.flows.values().next().value.service;
163
+ }
164
+ watchFlow(id, flow) {
165
+ let pending = false;
166
+ let lastSignature = '';
167
+ return runInInjectionContext(this.injector, () => effect(() => {
168
+ // Touch every signal we want to broadcast so the effect re-runs on change.
169
+ flow.nodes();
170
+ flow.edges();
171
+ flow.viewport();
172
+ flow.selectedNodes();
173
+ flow.selectedEdges();
174
+ if (pending)
175
+ return;
176
+ pending = true;
177
+ queueMicrotask(() => {
178
+ pending = false;
179
+ // Re-read on flush so coalesced bursts see the latest state.
180
+ const params = {
181
+ flowId: id,
182
+ nodes: flow.getNodes(),
183
+ edges: flow.getEdges(),
184
+ viewport: flow.getViewport(),
185
+ selection: {
186
+ nodeIds: flow.selectedNodes().map((n) => n.id),
187
+ edgeIds: flow.selectedEdges().map((e) => e.id),
188
+ },
189
+ };
190
+ // Suppress duplicate emissions when controlled-mode round-trips bounce
191
+ // the same state through the store twice. Cheap signature: ids + counts.
192
+ const sig = signatureOf(params);
193
+ if (sig === lastSignature)
194
+ return;
195
+ lastSignature = sig;
196
+ this.emit({ event: 'flow.state', params });
197
+ });
198
+ }));
199
+ }
200
+ installHandlers() {
201
+ this.handlers.set('list_flows', () => Array.from(this.flows.keys()));
202
+ this.handlers.set('get_state', (flow) => ({
203
+ nodes: flow.getNodes(),
204
+ edges: flow.getEdges(),
205
+ viewport: flow.getViewport(),
206
+ }));
207
+ this.handlers.set('get_nodes', (flow) => flow.getNodes());
208
+ this.handlers.set('get_edges', (flow) => flow.getEdges());
209
+ this.handlers.set('get_node', (flow, params) => {
210
+ const id = requireString(params, 'id');
211
+ return flow.getNode(id) ?? null;
212
+ });
213
+ this.handlers.set('get_edge', (flow, params) => {
214
+ const id = requireString(params, 'id');
215
+ return flow.getEdge(id) ?? null;
216
+ });
217
+ this.handlers.set('add_node', (flow, params) => {
218
+ const node = requireObject(params, 'node');
219
+ flow.addNodes(node);
220
+ return flow.getNode(node.id) ?? null;
221
+ });
222
+ this.handlers.set('add_edge', (flow, params) => {
223
+ const edge = requireObject(params, 'edge');
224
+ flow.addEdges(edge);
225
+ return flow.getEdge(edge.id) ?? null;
226
+ });
227
+ this.handlers.set('update_node', (flow, params) => {
228
+ const id = requireString(params, 'id');
229
+ const patch = requireObject(params, 'patch');
230
+ flow.updateNode(id, patch);
231
+ return flow.getNode(id) ?? null;
232
+ });
233
+ this.handlers.set('update_edge', (flow, params) => {
234
+ const id = requireString(params, 'id');
235
+ const patch = requireObject(params, 'patch');
236
+ flow.updateEdge(id, patch);
237
+ return flow.getEdge(id) ?? null;
238
+ });
239
+ this.handlers.set('delete_elements', async (flow, params) => {
240
+ const nodeIds = optionalStringArray(params, 'nodeIds');
241
+ const edgeIds = optionalStringArray(params, 'edgeIds');
242
+ const result = await flow.deleteElements({
243
+ nodes: nodeIds?.map((id) => ({ id })) ?? [],
244
+ edges: edgeIds?.map((id) => ({ id })) ?? [],
245
+ });
246
+ return {
247
+ deletedNodeIds: result.deletedNodes.map((n) => n.id),
248
+ deletedEdgeIds: result.deletedEdges.map((e) => e.id),
249
+ };
250
+ });
251
+ this.handlers.set('set_nodes', (flow, params) => {
252
+ const nodes = requireArray(params, 'nodes');
253
+ flow.setNodes(nodes);
254
+ });
255
+ this.handlers.set('set_edges', (flow, params) => {
256
+ const edges = requireArray(params, 'edges');
257
+ flow.setEdges(edges);
258
+ });
259
+ this.handlers.set('fit_view', (flow, params) => {
260
+ const padding = typeof params['padding'] === 'number' ? params['padding'] : undefined;
261
+ const duration = typeof params['duration'] === 'number' ? params['duration'] : undefined;
262
+ const nodeIds = optionalStringArray(params, 'nodeIds');
263
+ const nodes = nodeIds
264
+ ? nodeIds
265
+ .map((id) => flow.getNode(id))
266
+ .filter((n) => !!n)
267
+ .map((n) => ({ id: n.id }))
268
+ : undefined;
269
+ return flow.fitView({ padding, duration, nodes });
270
+ });
271
+ this.handlers.set('set_viewport', (flow, params) => {
272
+ const viewport = requireObject(params, 'viewport');
273
+ const duration = typeof params['duration'] === 'number' ? params['duration'] : undefined;
274
+ flow.setViewport(viewport, { duration });
275
+ });
276
+ this.handlers.set('get_viewport', (flow) => flow.getViewport());
277
+ }
278
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AngflowAgentBridge, deps: [{ token: AGENT_TRANSPORTS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
279
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AngflowAgentBridge, providedIn: 'root' }); }
280
+ }
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: AngflowAgentBridge, decorators: [{
282
+ type: Injectable,
283
+ args: [{ providedIn: 'root' }]
284
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
285
+ type: Optional
286
+ }, {
287
+ type: Inject,
288
+ args: [AGENT_TRANSPORTS]
289
+ }] }] });
290
+ class FlowNotFoundError extends Error {
291
+ }
292
+ class InvalidParamsError extends Error {
293
+ }
294
+ function signatureOf(params) {
295
+ const n = params.nodes
296
+ .map((n) => `${n.id}:${n.position.x},${n.position.y}:${n.measured?.width ?? '-'}x${n.measured?.height ?? '-'}`)
297
+ .join('|');
298
+ const e = params.edges.map((e) => `${e.id}:${e.source}>${e.target}`).join('|');
299
+ const v = `${params.viewport.x},${params.viewport.y},${params.viewport.zoom}`;
300
+ const s = `${params.selection.nodeIds.join(',')}/${params.selection.edgeIds.join(',')}`;
301
+ return `${n}#${e}#${v}#${s}`;
302
+ }
303
+ function requireString(params, key) {
304
+ const value = params[key];
305
+ if (typeof value !== 'string')
306
+ throw new InvalidParamsError(`Param "${key}" must be a string.`);
307
+ return value;
308
+ }
309
+ function requireObject(params, key) {
310
+ const value = params[key];
311
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
312
+ throw new InvalidParamsError(`Param "${key}" must be an object.`);
313
+ }
314
+ return value;
315
+ }
316
+ function requireArray(params, key) {
317
+ const value = params[key];
318
+ if (!Array.isArray(value))
319
+ throw new InvalidParamsError(`Param "${key}" must be an array.`);
320
+ return value;
321
+ }
322
+ function optionalStringArray(params, key) {
323
+ const value = params[key];
324
+ if (value == null)
325
+ return undefined;
326
+ if (!Array.isArray(value) || value.some((v) => typeof v !== 'string')) {
327
+ throw new InvalidParamsError(`Param "${key}" must be an array of strings.`);
328
+ }
329
+ return value;
330
+ }
331
+ //# sourceMappingURL=agent-bridge.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-bridge.service.js","sourceRoot":"","sources":["../../../../src/lib/agent/agent-bridge.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { AngflowAgentBridge } from './agent-bridge.service';
2
+ export { provideAgentBridge, type AgentBridgeConfig } from './provide-agent-bridge';
3
+ export { AGENT_TOOL_SCHEMAS } from './tool-schemas';
4
+ export { WindowTransport, type WindowTransportOptions } from './transports/window';
5
+ export { WebSocketTransport, type WebSocketTransportOptions } from './transports/websocket';
6
+ export type { AgentRequest, AgentResponse, AgentSuccessResponse, AgentErrorResponse, AgentEvent, AgentInbound, AgentOutbound, AgentTransport, AgentToolSchema, } from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EACV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { AngflowAgentBridge } from './agent-bridge.service';
2
+ export { provideAgentBridge } from './provide-agent-bridge';
3
+ export { AGENT_TOOL_SCHEMAS } from './tool-schemas';
4
+ export { WindowTransport } from './transports/window';
5
+ export { WebSocketTransport } from './transports/websocket';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAA0B,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,eAAe,EAA+B,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAkC,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type EnvironmentProviders } from '@angular/core';
2
+ import type { AgentTransport } from './types';
3
+ export interface AgentBridgeConfig {
4
+ /** Transports the bridge should attach to. Order doesn't matter. */
5
+ transports: AgentTransport[];
6
+ }
7
+ /**
8
+ * Register the agent bridge for an Angular app. Add to your `appConfig`
9
+ * providers alongside `provideRouter` etc., then attach `<ng-flow>`
10
+ * instances by calling `bridge.register(id, $event)` from `(init)`.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * // app.config.ts
15
+ * import { provideAgentBridge, WindowTransport } from '@angflow/angular';
16
+ *
17
+ * export const appConfig: ApplicationConfig = {
18
+ * providers: [
19
+ * provideAgentBridge({
20
+ * transports: [new WindowTransport()],
21
+ * }),
22
+ * ],
23
+ * };
24
+ * ```
25
+ */
26
+ export declare function provideAgentBridge(config: AgentBridgeConfig): EnvironmentProviders;
27
+ //# sourceMappingURL=provide-agent-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provide-agent-bridge.d.ts","sourceRoot":"","sources":["../../../../src/lib/agent/provide-agent-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAA4B,MAAM,eAAe,CAAC;AAEpF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB,CAIlF"}
@@ -0,0 +1,27 @@
1
+ import { makeEnvironmentProviders } from '@angular/core';
2
+ import { AGENT_TRANSPORTS } from './agent-bridge.service';
3
+ /**
4
+ * Register the agent bridge for an Angular app. Add to your `appConfig`
5
+ * providers alongside `provideRouter` etc., then attach `<ng-flow>`
6
+ * instances by calling `bridge.register(id, $event)` from `(init)`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * // app.config.ts
11
+ * import { provideAgentBridge, WindowTransport } from '@angflow/angular';
12
+ *
13
+ * export const appConfig: ApplicationConfig = {
14
+ * providers: [
15
+ * provideAgentBridge({
16
+ * transports: [new WindowTransport()],
17
+ * }),
18
+ * ],
19
+ * };
20
+ * ```
21
+ */
22
+ export function provideAgentBridge(config) {
23
+ return makeEnvironmentProviders([
24
+ { provide: AGENT_TRANSPORTS, useValue: config.transports },
25
+ ]);
26
+ }
27
+ //# sourceMappingURL=provide-agent-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provide-agent-bridge.js","sourceRoot":"","sources":["../../../../src/lib/agent/provide-agent-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAQ1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC1D,OAAO,wBAAwB,CAAC;QAC9B,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;KAC3D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { AgentToolSchema } from './types';
2
+ /**
3
+ * Canonical list of tools the agent bridge exposes. Pass this array straight
4
+ * to an LLM tool-use API (Anthropic `tools`, OpenAI `tools`) or use it to
5
+ * generate an MCP server.
6
+ *
7
+ * Every `name` here matches a method registered in `AngflowAgentBridge`.
8
+ */
9
+ export declare const AGENT_TOOL_SCHEMAS: AgentToolSchema[];
10
+ //# sourceMappingURL=tool-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../../../src/lib/agent/tool-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAsO/C,CAAC"}