@angflow/angular 0.0.14 → 0.0.17

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 (72) hide show
  1. package/dist/esm/lib/agent/agent-bridge.service.d.ts +91 -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 +935 -0
  4. package/dist/esm/lib/agent/agent-bridge.service.js.map +1 -0
  5. package/dist/esm/lib/agent/history.d.ts +45 -0
  6. package/dist/esm/lib/agent/history.d.ts.map +1 -0
  7. package/dist/esm/lib/agent/history.js +89 -0
  8. package/dist/esm/lib/agent/history.js.map +1 -0
  9. package/dist/esm/lib/agent/index.d.ts +8 -0
  10. package/dist/esm/lib/agent/index.d.ts.map +1 -0
  11. package/dist/esm/lib/agent/index.js +6 -0
  12. package/dist/esm/lib/agent/index.js.map +1 -0
  13. package/dist/esm/lib/agent/provide-agent-bridge.d.ts +47 -0
  14. package/dist/esm/lib/agent/provide-agent-bridge.d.ts.map +1 -0
  15. package/dist/esm/lib/agent/provide-agent-bridge.js +32 -0
  16. package/dist/esm/lib/agent/provide-agent-bridge.js.map +1 -0
  17. package/dist/esm/lib/agent/tool-schemas.d.ts +10 -0
  18. package/dist/esm/lib/agent/tool-schemas.d.ts.map +1 -0
  19. package/dist/esm/lib/agent/tool-schemas.js +635 -0
  20. package/dist/esm/lib/agent/tool-schemas.js.map +1 -0
  21. package/dist/esm/lib/agent/transports/websocket.d.ts +39 -0
  22. package/dist/esm/lib/agent/transports/websocket.d.ts.map +1 -0
  23. package/dist/esm/lib/agent/transports/websocket.js +95 -0
  24. package/dist/esm/lib/agent/transports/websocket.js.map +1 -0
  25. package/dist/esm/lib/agent/transports/window.d.ts +29 -0
  26. package/dist/esm/lib/agent/transports/window.d.ts.map +1 -0
  27. package/dist/esm/lib/agent/transports/window.js +73 -0
  28. package/dist/esm/lib/agent/transports/window.js.map +1 -0
  29. package/dist/esm/lib/agent/types.d.ts +66 -0
  30. package/dist/esm/lib/agent/types.d.ts.map +1 -0
  31. package/dist/esm/lib/agent/types.js +9 -0
  32. package/dist/esm/lib/agent/types.js.map +1 -0
  33. package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts +1 -1
  34. package/dist/esm/lib/components/handle/handle.component.d.ts.map +1 -1
  35. package/dist/esm/lib/components/handle/handle.component.js +25 -11
  36. package/dist/esm/lib/components/handle/handle.component.js.map +1 -1
  37. package/dist/esm/lib/components/nodes/default-node.component.js +4 -4
  38. package/dist/esm/lib/components/nodes/input-node.component.js +2 -2
  39. package/dist/esm/lib/components/nodes/output-node.component.js +2 -2
  40. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.d.ts +14 -0
  41. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.d.ts.map +1 -1
  42. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js +66 -19
  43. package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js.map +1 -1
  44. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts +12 -12
  45. package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts.map +1 -1
  46. package/dist/esm/lib/container/ng-flow/ng-flow.component.js +16 -16
  47. package/dist/esm/lib/container/ng-flow/ng-flow.component.js.map +1 -1
  48. package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts +2 -0
  49. package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts.map +1 -1
  50. package/dist/esm/lib/container/node-renderer/node-renderer.component.js +35 -10
  51. package/dist/esm/lib/container/node-renderer/node-renderer.component.js.map +1 -1
  52. package/dist/esm/lib/directives/drag.directive.d.ts.map +1 -1
  53. package/dist/esm/lib/directives/drag.directive.js +9 -1
  54. package/dist/esm/lib/directives/drag.directive.js.map +1 -1
  55. package/dist/esm/lib/public-api.d.ts +1 -0
  56. package/dist/esm/lib/public-api.d.ts.map +1 -1
  57. package/dist/esm/lib/public-api.js +2 -0
  58. package/dist/esm/lib/public-api.js.map +1 -1
  59. package/dist/esm/lib/services/flow-store.service.d.ts.map +1 -1
  60. package/dist/esm/lib/services/flow-store.service.js +5 -0
  61. package/dist/esm/lib/services/flow-store.service.js.map +1 -1
  62. package/dist/esm/lib/services/ng-flow.service.d.ts +24 -0
  63. package/dist/esm/lib/services/ng-flow.service.d.ts.map +1 -1
  64. package/dist/esm/lib/services/ng-flow.service.js +70 -29
  65. package/dist/esm/lib/services/ng-flow.service.js.map +1 -1
  66. package/dist/esm/lib/types/edges.d.ts +18 -5
  67. package/dist/esm/lib/types/edges.d.ts.map +1 -1
  68. package/dist/esm/lib/types/general.d.ts +10 -0
  69. package/dist/esm/lib/types/general.d.ts.map +1 -1
  70. package/dist/esm/lib/types/nodes.d.ts +2 -1
  71. package/dist/esm/lib/types/nodes.d.ts.map +1 -1
  72. package/package.json +2 -2
@@ -0,0 +1,39 @@
1
+ import type { AgentInbound, AgentOutbound, AgentResponse, AgentTransport } from '../types';
2
+ export interface WebSocketTransportOptions {
3
+ /** WS URL to dial. */
4
+ url: string;
5
+ /** Reconnect with exponential backoff on close. Defaults to `true`. */
6
+ reconnect?: boolean;
7
+ /** Initial reconnect delay in ms. Defaults to `1000`. */
8
+ initialReconnectDelayMs?: number;
9
+ /** Max reconnect delay in ms. Defaults to `30000`. */
10
+ maxReconnectDelayMs?: number;
11
+ /** Optional logger; defaults to no-op. */
12
+ onError?: (err: unknown) => void;
13
+ }
14
+ /**
15
+ * Browser→server WebSocket transport. The page dials `url`; whatever lives
16
+ * on the other end is expected to send `AgentInbound` frames and read
17
+ * `AgentOutbound` frames.
18
+ *
19
+ * Reconnects with exponential backoff on close unless `reconnect: false`.
20
+ */
21
+ export declare class WebSocketTransport implements AgentTransport {
22
+ private socket;
23
+ private handler;
24
+ private stopped;
25
+ private reconnectAttempts;
26
+ private reconnectTimer;
27
+ private readonly url;
28
+ private readonly reconnect;
29
+ private readonly initialDelay;
30
+ private readonly maxDelay;
31
+ private readonly onError;
32
+ constructor(options: WebSocketTransportOptions);
33
+ start(handler: (req: AgentInbound) => Promise<AgentResponse>): void;
34
+ send(frame: AgentOutbound): void;
35
+ stop(): void;
36
+ private connect;
37
+ private scheduleReconnect;
38
+ }
39
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../../../src/lib/agent/transports/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACf,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,yBAAyB;IACxC,sBAAsB;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAAgE;IAC/E,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,EAAE,yBAAyB;IAQ9C,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAKnE,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAUhC,IAAI,IAAI,IAAI;IAaZ,OAAO,CAAC,OAAO;IAsCf,OAAO,CAAC,iBAAiB;CAS1B"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Browser→server WebSocket transport. The page dials `url`; whatever lives
3
+ * on the other end is expected to send `AgentInbound` frames and read
4
+ * `AgentOutbound` frames.
5
+ *
6
+ * Reconnects with exponential backoff on close unless `reconnect: false`.
7
+ */
8
+ export class WebSocketTransport {
9
+ constructor(options) {
10
+ this.socket = null;
11
+ this.handler = null;
12
+ this.stopped = false;
13
+ this.reconnectAttempts = 0;
14
+ this.reconnectTimer = null;
15
+ this.url = options.url;
16
+ this.reconnect = options.reconnect ?? true;
17
+ this.initialDelay = options.initialReconnectDelayMs ?? 1000;
18
+ this.maxDelay = options.maxReconnectDelayMs ?? 30000;
19
+ this.onError = options.onError ?? (() => { });
20
+ }
21
+ start(handler) {
22
+ this.handler = handler;
23
+ this.connect();
24
+ }
25
+ send(frame) {
26
+ const sock = this.socket;
27
+ if (!sock || sock.readyState !== WebSocket.OPEN)
28
+ return;
29
+ try {
30
+ sock.send(JSON.stringify(frame));
31
+ }
32
+ catch (err) {
33
+ this.onError(err);
34
+ }
35
+ }
36
+ stop() {
37
+ this.stopped = true;
38
+ if (this.reconnectTimer) {
39
+ clearTimeout(this.reconnectTimer);
40
+ this.reconnectTimer = null;
41
+ }
42
+ if (this.socket) {
43
+ this.socket.close();
44
+ this.socket = null;
45
+ }
46
+ this.handler = null;
47
+ }
48
+ connect() {
49
+ if (this.stopped || typeof WebSocket === 'undefined')
50
+ return;
51
+ let sock;
52
+ try {
53
+ sock = new WebSocket(this.url);
54
+ }
55
+ catch (err) {
56
+ this.onError(err);
57
+ this.scheduleReconnect();
58
+ return;
59
+ }
60
+ this.socket = sock;
61
+ sock.addEventListener('open', () => {
62
+ this.reconnectAttempts = 0;
63
+ });
64
+ sock.addEventListener('message', async (msg) => {
65
+ if (!this.handler)
66
+ return;
67
+ let req;
68
+ try {
69
+ req = JSON.parse(typeof msg.data === 'string' ? msg.data : await msg.data.text());
70
+ }
71
+ catch (err) {
72
+ this.onError(err);
73
+ return;
74
+ }
75
+ const res = await this.handler(req);
76
+ this.send(res);
77
+ });
78
+ sock.addEventListener('error', (ev) => this.onError(ev));
79
+ sock.addEventListener('close', () => {
80
+ this.socket = null;
81
+ this.scheduleReconnect();
82
+ });
83
+ }
84
+ scheduleReconnect() {
85
+ if (this.stopped || !this.reconnect)
86
+ return;
87
+ const delay = Math.min(this.initialDelay * 2 ** this.reconnectAttempts, this.maxDelay);
88
+ this.reconnectAttempts += 1;
89
+ this.reconnectTimer = setTimeout(() => {
90
+ this.reconnectTimer = null;
91
+ this.connect();
92
+ }, delay);
93
+ }
94
+ }
95
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../../../src/lib/agent/transports/websocket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { AgentInbound, AgentOutbound, AgentResponse, AgentTransport } from '../types';
2
+ export interface WindowTransportOptions {
3
+ /**
4
+ * Property name to expose on `window`. Defaults to `'angflow'`. The shape
5
+ * is `window[namespace] = { callTool, subscribe, toolSchemas }`.
6
+ */
7
+ namespace?: string;
8
+ }
9
+ /**
10
+ * Transport that exposes a global `window.angflow` API. Useful for:
11
+ * - devtools console snippets (`await window.angflow.callTool('add_node', {...})`)
12
+ * - same-page agent harnesses (Playwright `page.evaluate`, browser extensions)
13
+ * - bridging to a custom transport you control (e.g. CDP, postMessage)
14
+ *
15
+ * It does NOT open a network port. For cross-process agents use
16
+ * `WebSocketTransport`.
17
+ */
18
+ export declare class WindowTransport implements AgentTransport {
19
+ private readonly namespace;
20
+ private subscribers;
21
+ private requestHandler;
22
+ private nextId;
23
+ constructor(options?: WindowTransportOptions);
24
+ start(handler: (req: AgentInbound) => Promise<AgentResponse>): void;
25
+ send(frame: AgentOutbound): void;
26
+ stop(): void;
27
+ private handleCallTool;
28
+ }
29
+ //# sourceMappingURL=window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../../../../src/lib/agent/transports/window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACf,MAAM,UAAU,CAAC;AAGlB,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAWD;;;;;;;;GAQG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,cAAc,CAAgE;IACtF,OAAO,CAAC,MAAM,CAAK;gBAEP,OAAO,GAAE,sBAA2B;IAIhD,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IA2BnE,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAahC,IAAI,IAAI,IAAI;YAQE,cAAc;CAW7B"}
@@ -0,0 +1,73 @@
1
+ import { AGENT_TOOL_SCHEMAS } from '../tool-schemas';
2
+ /**
3
+ * Transport that exposes a global `window.angflow` API. Useful for:
4
+ * - devtools console snippets (`await window.angflow.callTool('add_node', {...})`)
5
+ * - same-page agent harnesses (Playwright `page.evaluate`, browser extensions)
6
+ * - bridging to a custom transport you control (e.g. CDP, postMessage)
7
+ *
8
+ * It does NOT open a network port. For cross-process agents use
9
+ * `WebSocketTransport`.
10
+ */
11
+ export class WindowTransport {
12
+ constructor(options = {}) {
13
+ this.subscribers = new Set();
14
+ this.requestHandler = null;
15
+ this.nextId = 1;
16
+ this.namespace = options.namespace ?? 'angflow';
17
+ }
18
+ start(handler) {
19
+ this.requestHandler = handler;
20
+ if (typeof window === 'undefined')
21
+ return;
22
+ const winRec = window;
23
+ if (winRec[this.namespace] !== undefined) {
24
+ // Surface the collision so a second WindowTransport (or a host that
25
+ // already owns the namespace) doesn't silently lose its API.
26
+ // eslint-disable-next-line no-console
27
+ console.warn(`[angflow] WindowTransport: window.${this.namespace} is already set and will be overwritten. ` +
28
+ `Pass { namespace: '…' } to disambiguate.`);
29
+ }
30
+ const api = {
31
+ callTool: (method, params = {}) => this.handleCallTool(method, params),
32
+ subscribe: (h) => {
33
+ this.subscribers.add(h);
34
+ return () => this.subscribers.delete(h);
35
+ },
36
+ toolSchemas: AGENT_TOOL_SCHEMAS,
37
+ };
38
+ winRec[this.namespace] = api;
39
+ }
40
+ send(frame) {
41
+ // Only events get pushed to subscribers; responses are returned from callTool.
42
+ if ('event' in frame) {
43
+ for (const sub of this.subscribers) {
44
+ try {
45
+ sub(frame);
46
+ }
47
+ catch {
48
+ // Subscriber errors must not poison other subscribers.
49
+ }
50
+ }
51
+ }
52
+ }
53
+ stop() {
54
+ this.requestHandler = null;
55
+ this.subscribers.clear();
56
+ if (typeof window !== 'undefined') {
57
+ delete window[this.namespace];
58
+ }
59
+ }
60
+ async handleCallTool(method, params) {
61
+ if (!this.requestHandler)
62
+ throw new Error('Agent bridge not started');
63
+ const res = await this.requestHandler({ id: this.nextId++, method, params });
64
+ if ('error' in res) {
65
+ const err = new Error(res.error.message);
66
+ err.code = res.error.code;
67
+ err.data = res.error.data;
68
+ throw err;
69
+ }
70
+ return res.result;
71
+ }
72
+ }
73
+ //# sourceMappingURL=window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../../../../src/lib/agent/transports/window.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAmBrD;;;;;;;;GAQG;AACH,MAAM,OAAO,eAAe;IAM1B,YAAY,UAAkC,EAAE;QAJxC,gBAAW,GAAG,IAAI,GAAG,EAAgC,CAAC;QACtD,mBAAc,GAA2D,IAAI,CAAC;QAC9E,WAAM,GAAG,CAAC,CAAC;QAGjB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,OAAsD;QAC1D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,MAAM,GAAG,MAA4C,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACzC,oEAAoE;YACpE,6DAA6D;YAC7D,sCAAsC;YACtC,OAAO,CAAC,IAAI,CACV,qCAAqC,IAAI,CAAC,SAAS,2CAA2C;gBAC5F,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAqB;YAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;YACtE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACxB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,WAAW,EAAE,kBAAkB;SAChC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAoB;QACvB,+EAA+E;QAC/E,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,GAAG,CAAC,KAAK,CAAC,CAAC;gBACb,CAAC;gBAAC,MAAM,CAAC;oBACP,uDAAuD;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAQ,MAA6C,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,MAA+B;QAC1E,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAA8C,CAAC;YACtF,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1B,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Wire formats and transport contract for the agent bridge.
3
+ *
4
+ * The bridge speaks a small JSON-RPC-style protocol so a remote agent (an
5
+ * MCP server, a Playwright script, a browser extension, a console snippet)
6
+ * can call into `NgFlowService` and observe state changes uniformly.
7
+ */
8
+ /** A request from the agent to the bridge. `id` correlates the response. */
9
+ export interface AgentRequest {
10
+ id: number | string;
11
+ method: string;
12
+ params?: Record<string, unknown>;
13
+ }
14
+ /** A successful response to an `AgentRequest`. */
15
+ export interface AgentSuccessResponse {
16
+ id: number | string;
17
+ result: unknown;
18
+ }
19
+ /** An error response to an `AgentRequest`. */
20
+ export interface AgentErrorResponse {
21
+ id: number | string;
22
+ error: {
23
+ code: number;
24
+ message: string;
25
+ data?: unknown;
26
+ };
27
+ }
28
+ export type AgentResponse = AgentSuccessResponse | AgentErrorResponse;
29
+ /** A push-style event from the bridge to the agent (no id, no response expected). */
30
+ export interface AgentEvent {
31
+ event: string;
32
+ params?: Record<string, unknown>;
33
+ }
34
+ /** Frame sent from agent to bridge. */
35
+ export type AgentInbound = AgentRequest;
36
+ /** Frame sent from bridge to agent. */
37
+ export type AgentOutbound = AgentResponse | AgentEvent;
38
+ /**
39
+ * Transport contract: anything that can shuttle JSON frames between an
40
+ * external agent process and the in-browser bridge. The bridge calls
41
+ * `start(handler)` once; the transport invokes `handler` for every inbound
42
+ * frame and calls `send` for every outbound frame.
43
+ */
44
+ export interface AgentTransport {
45
+ /** Begin accepting incoming requests. Resolves once the transport is ready. */
46
+ start(handler: (req: AgentInbound) => Promise<AgentResponse>): void | Promise<void>;
47
+ /** Push an outbound frame (response or event) to the agent peer. */
48
+ send(frame: AgentOutbound): void;
49
+ /** Tear down resources; called when the bridge is destroyed. */
50
+ stop(): void;
51
+ }
52
+ /**
53
+ * Describes a single agent tool — name, human description, and a JSON Schema
54
+ * for params. Suitable for direct use as a Claude / OpenAI tool definition.
55
+ */
56
+ export interface AgentToolSchema {
57
+ name: string;
58
+ description: string;
59
+ inputSchema: {
60
+ type: 'object';
61
+ properties: Record<string, unknown>;
62
+ required?: string[];
63
+ additionalProperties?: boolean;
64
+ };
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,kDAAkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,8CAA8C;AAC9C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1D;AAED,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAEtE,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,uCAAuC;AACvC,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC;AAExC,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,oEAAoE;IACpE,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,gEAAgE;IAChE,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;CACH"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Wire formats and transport contract for the agent bridge.
3
+ *
4
+ * The bridge speaks a small JSON-RPC-style protocol so a remote agent (an
5
+ * MCP server, a Playwright script, a browser extension, a console snippet)
6
+ * can call into `NgFlowService` and observe state changes uniformly.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/agent/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -22,7 +22,7 @@ export declare class EdgeToolbarComponent {
22
22
  /** Horizontal alignment relative to (x, y). */
23
23
  readonly alignX: import("@angular/core").InputSignal<"center" | "left" | "right">;
24
24
  /** Vertical alignment relative to (x, y). */
25
- readonly alignY: import("@angular/core").InputSignal<"center" | "bottom" | "top">;
25
+ readonly alignY: import("@angular/core").InputSignal<"center" | "top" | "bottom">;
26
26
  /** Override visibility. Defaults to showing when the edge is selected. */
27
27
  readonly isVisible: import("@angular/core").InputSignal<boolean | undefined>;
28
28
  readonly shouldShow: import("@angular/core").Signal<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"handle.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/handle/handle.component.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,MAAM,EACN,SAAS,EAGV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAY,KAAK,UAAU,EAAE,KAAK,UAAU,EAAwB,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;;AAG9D;;;;;;;;;GASG;AACH,qBA2Ba,eAAgB,YAAW,MAAM,EAAE,SAAS;IACvD,QAAQ,CAAC,QAAQ,kBAAY;IAE7B,wFAAwF;IACxF,QAAQ,CAAC,IAAI,kDAAgC;IAC7C,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,gDAAiC;IAClD,4GAA4G;IAC5G,QAAQ,CAAC,QAAQ,qDAA+C;IAChE,iEAAiE;IACjE,QAAQ,CAAC,aAAa,+CAAe;IACrC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,+CAAe;IAC1C,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,+CAAe;IACxC,gHAAgH;IAChH,QAAQ,CAAC,iBAAiB,oDAAuB,UAAU,KAAK,OAAO,eAA0B;IACjG,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,+CAA6B;IAC1C,QAAQ,CAAC,QAAQ,+CAAgB;IAEjC,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,uDAA8C;IAEpE,QAAQ,CAAC,KAAK,oEAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmC;IAGtD,MAAM,EAAE,MAAM,CAAM;IAGpB,QAAQ,CAAC,MAAM,yCAA2F;IAE1G,OAAO,CAAC,YAAY,CAAS;gBAEY,MAAM,EAAE,MAAM,GAAG,IAAI;IAU9D,QAAQ,IAAI,IAAI;IAEhB,WAAW,IAAI,IAAI;IAQnB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI;IAiDrD,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;yCAxGrB,eAAe;2CAAf,eAAe;CAwJ3B"}
1
+ {"version":3,"file":"handle.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/components/handle/handle.component.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,MAAM,EACN,SAAS,EAGV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EAGR,KAAK,UAAU,EACf,KAAK,UAAU,EAGhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;;AAG9D;;;;;;;;;GASG;AACH,qBA2Ba,eAAgB,YAAW,MAAM,EAAE,SAAS;IACvD,QAAQ,CAAC,QAAQ,kBAAY;IAE7B,wFAAwF;IACxF,QAAQ,CAAC,IAAI,kDAAgC;IAC7C,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,gDAAiC;IAClD,4GAA4G;IAC5G,QAAQ,CAAC,QAAQ,qDAA+C;IAChE,iEAAiE;IACjE,QAAQ,CAAC,aAAa,+CAAe;IACrC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,+CAAe;IAC1C,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,+CAAe;IACxC,gHAAgH;IAChH,QAAQ,CAAC,iBAAiB,oDAAuB,UAAU,KAAK,OAAO,eAA0B;IACjG,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,+CAA6B;IAC1C,QAAQ,CAAC,QAAQ,+CAAgB;IAEjC,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,uDAA8C;IAEpE,QAAQ,CAAC,KAAK,oEAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAmC;IAGtD,MAAM,EAAE,MAAM,CAAM;IAGpB,QAAQ,CAAC,MAAM,yCAA2F;IAE1G,OAAO,CAAC,YAAY,CAAS;gBAEY,MAAM,EAAE,MAAM,GAAG,IAAI;IAU9D,QAAQ,IAAI,IAAI;IAEhB,WAAW,IAAI,IAAI;IAQnB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI;IAiDrD,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;yCAxGrB,eAAe;2CAAf,eAAe;CAsK3B"}
@@ -1,5 +1,5 @@
1
1
  import { Component, ChangeDetectionStrategy, input, output, inject, computed, effect, ElementRef, Optional, Inject, } from '@angular/core';
2
- import { Position, XYHandle } from '@angflow/system';
2
+ import { Position, XYHandle, getHostForElement, } from '@angflow/system';
3
3
  import { FlowStore } from '../../services/flow-store.service';
4
4
  import { NODE_ID } from '../../services/tokens';
5
5
  import * as i0 from "@angular/core";
@@ -108,6 +108,13 @@ export class HandleComponent {
108
108
  if (!store.connectOnClick())
109
109
  return;
110
110
  const startHandle = store.connectionClickStartHandle();
111
+ // To open a click-connect, this handle must be usable as a start.
112
+ // Once a start handle is recorded we no longer gate here — completion is
113
+ // validated via XYHandle.isValid below, which checks the target's
114
+ // `.connectable` / `.connectableend` classes (driven by isConnectable /
115
+ // isConnectableEnd inputs).
116
+ if (!startHandle && !this.isConnectableStart())
117
+ return;
111
118
  if (!startHandle) {
112
119
  // First click — store this handle as the start of the connection
113
120
  store.connectionClickStartHandle.set({
@@ -127,19 +134,26 @@ export class HandleComponent {
127
134
  });
128
135
  }
129
136
  else {
130
- // Second click — complete the connection
131
- const isSource = startHandle.type === 'source';
132
- const connection = {
133
- source: isSource ? startHandle.nodeId : this.nodeId,
134
- sourceHandle: isSource ? startHandle.handleId : this.handleId(),
135
- target: isSource ? this.nodeId : startHandle.nodeId,
136
- targetHandle: isSource ? this.handleId() : startHandle.handleId,
137
- };
138
- // Validate using per-handle or store-level validation
137
+ // Second click — validate target handle via XYHandle.isValid, which
138
+ // inspects the handle's CSS classes (`connectable`, `connectableend`)
139
+ // and the connection mode, then runs the user validator.
139
140
  const handleValidation = this.isValidConnection();
140
141
  const storeValidation = store.isValidConnection();
141
142
  const validationFn = handleValidation ?? storeValidation;
142
- if (!validationFn || validationFn(connection)) {
143
+ const doc = getHostForElement(event.target);
144
+ const { connection, isValid } = XYHandle.isValid(event, {
145
+ handle: { nodeId: this.nodeId, id: this.handleId(), type: this.type() },
146
+ connectionMode: store.connectionMode(),
147
+ fromNodeId: startHandle.nodeId,
148
+ fromHandleId: startHandle.handleId ?? null,
149
+ fromType: startHandle.type,
150
+ isValidConnection: validationFn,
151
+ doc,
152
+ lib: store.lib(),
153
+ flowId: store.rfId(),
154
+ nodeLookup: store.nodeLookup,
155
+ });
156
+ if (isValid && connection) {
143
157
  this.handleConnect.emit(connection);
144
158
  store.onConnect?.(connection);
145
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handle.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/handle/handle.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/handle/handle.component.ts"],"names":[],"mappings":"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"}
@@ -24,9 +24,9 @@ export class DefaultNodeComponent {
24
24
  }
25
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DefaultNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
26
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: DefaultNodeComponent, isStandalone: true, selector: "ng-flow-default-node", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, dragging: { classPropertyName: "dragging", publicName: "dragging", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isConnectable: { classPropertyName: "isConnectable", publicName: "isConnectable", isSignal: true, isRequired: false, transformFunction: null }, positionAbsoluteX: { classPropertyName: "positionAbsoluteX", publicName: "positionAbsoluteX", isSignal: true, isRequired: false, transformFunction: null }, positionAbsoluteY: { classPropertyName: "positionAbsoluteY", publicName: "positionAbsoluteY", isSignal: true, isRequired: false, transformFunction: null }, sourcePosition: { classPropertyName: "sourcePosition", publicName: "sourcePosition", isSignal: true, isRequired: false, transformFunction: null }, targetPosition: { classPropertyName: "targetPosition", publicName: "targetPosition", isSignal: true, isRequired: false, transformFunction: null }, dragHandle: { classPropertyName: "dragHandle", publicName: "dragHandle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
27
- <ng-flow-handle type="target" [position]="Position.Top" />
27
+ <ng-flow-handle type="target" [position]="Position.Top" [isConnectable]="isConnectable()" />
28
28
  <div>{{ data()?.label }}</div>
29
- <ng-flow-handle type="source" [position]="Position.Bottom" />
29
+ <ng-flow-handle type="source" [position]="Position.Bottom" [isConnectable]="isConnectable()" />
30
30
  `, isInline: true, dependencies: [{ kind: "component", type: HandleComponent, selector: "ng-flow-handle", inputs: ["type", "position", "id", "isConnectable", "isConnectableStart", "isConnectableEnd", "isValidConnection", "data", "floating"], outputs: ["onConnect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DefaultNodeComponent, decorators: [{
@@ -37,9 +37,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37
37
  imports: [HandleComponent],
38
38
  changeDetection: ChangeDetectionStrategy.OnPush,
39
39
  template: `
40
- <ng-flow-handle type="target" [position]="Position.Top" />
40
+ <ng-flow-handle type="target" [position]="Position.Top" [isConnectable]="isConnectable()" />
41
41
  <div>{{ data()?.label }}</div>
42
- <ng-flow-handle type="source" [position]="Position.Bottom" />
42
+ <ng-flow-handle type="source" [position]="Position.Bottom" [isConnectable]="isConnectable()" />
43
43
  `,
44
44
  }]
45
45
  }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], dragging: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragging", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], isConnectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isConnectable", required: false }] }], positionAbsoluteX: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteX", required: false }] }], positionAbsoluteY: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteY", required: false }] }], sourcePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourcePosition", required: false }] }], targetPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetPosition", required: false }] }], dragHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragHandle", required: false }] }] } });
@@ -25,7 +25,7 @@ export class InputNodeComponent {
25
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: InputNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
26
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: InputNodeComponent, isStandalone: true, selector: "ng-flow-input-node", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, dragging: { classPropertyName: "dragging", publicName: "dragging", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isConnectable: { classPropertyName: "isConnectable", publicName: "isConnectable", isSignal: true, isRequired: false, transformFunction: null }, positionAbsoluteX: { classPropertyName: "positionAbsoluteX", publicName: "positionAbsoluteX", isSignal: true, isRequired: false, transformFunction: null }, positionAbsoluteY: { classPropertyName: "positionAbsoluteY", publicName: "positionAbsoluteY", isSignal: true, isRequired: false, transformFunction: null }, sourcePosition: { classPropertyName: "sourcePosition", publicName: "sourcePosition", isSignal: true, isRequired: false, transformFunction: null }, targetPosition: { classPropertyName: "targetPosition", publicName: "targetPosition", isSignal: true, isRequired: false, transformFunction: null }, dragHandle: { classPropertyName: "dragHandle", publicName: "dragHandle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
27
27
  <div>{{ data()?.label }}</div>
28
- <ng-flow-handle type="source" [position]="Position.Bottom" />
28
+ <ng-flow-handle type="source" [position]="Position.Bottom" [isConnectable]="isConnectable()" />
29
29
  `, isInline: true, dependencies: [{ kind: "component", type: HandleComponent, selector: "ng-flow-handle", inputs: ["type", "position", "id", "isConnectable", "isConnectableStart", "isConnectableEnd", "isValidConnection", "data", "floating"], outputs: ["onConnect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
30
  }
31
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: InputNodeComponent, decorators: [{
@@ -37,7 +37,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37
37
  changeDetection: ChangeDetectionStrategy.OnPush,
38
38
  template: `
39
39
  <div>{{ data()?.label }}</div>
40
- <ng-flow-handle type="source" [position]="Position.Bottom" />
40
+ <ng-flow-handle type="source" [position]="Position.Bottom" [isConnectable]="isConnectable()" />
41
41
  `,
42
42
  }]
43
43
  }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], dragging: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragging", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], isConnectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isConnectable", required: false }] }], positionAbsoluteX: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteX", required: false }] }], positionAbsoluteY: [{ type: i0.Input, args: [{ isSignal: true, alias: "positionAbsoluteY", required: false }] }], sourcePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "sourcePosition", required: false }] }], targetPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetPosition", required: false }] }], dragHandle: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragHandle", required: false }] }] } });
@@ -24,7 +24,7 @@ export class OutputNodeComponent {
24
24
  }
25
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: OutputNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
26
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: OutputNodeComponent, isStandalone: true, selector: "ng-flow-output-node", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, dragging: { classPropertyName: "dragging", publicName: "dragging", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, isConnectable: { classPropertyName: "isConnectable", publicName: "isConnectable", isSignal: true, isRequired: false, transformFunction: null }, positionAbsoluteX: { classPropertyName: "positionAbsoluteX", publicName: "positionAbsoluteX", isSignal: true, isRequired: false, transformFunction: null }, positionAbsoluteY: { classPropertyName: "positionAbsoluteY", publicName: "positionAbsoluteY", isSignal: true, isRequired: false, transformFunction: null }, sourcePosition: { classPropertyName: "sourcePosition", publicName: "sourcePosition", isSignal: true, isRequired: false, transformFunction: null }, targetPosition: { classPropertyName: "targetPosition", publicName: "targetPosition", isSignal: true, isRequired: false, transformFunction: null }, dragHandle: { classPropertyName: "dragHandle", publicName: "dragHandle", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
27
- <ng-flow-handle type="target" [position]="Position.Top" />
27
+ <ng-flow-handle type="target" [position]="Position.Top" [isConnectable]="isConnectable()" />
28
28
  <div>{{ data()?.label }}</div>
29
29
  `, isInline: true, dependencies: [{ kind: "component", type: HandleComponent, selector: "ng-flow-handle", inputs: ["type", "position", "id", "isConnectable", "isConnectableStart", "isConnectableEnd", "isValidConnection", "data", "floating"], outputs: ["onConnect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
30
  }
@@ -36,7 +36,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
36
36
  imports: [HandleComponent],
37
37
  changeDetection: ChangeDetectionStrategy.OnPush,
38
38
  template: `
39
- <ng-flow-handle type="target" [position]="Position.Top" />
39
+ <ng-flow-handle type="target" [position]="Position.Top" [isConnectable]="isConnectable()" />
40
40
  <div>{{ data()?.label }}</div>
41
41
  `,
42
42
  }]
@@ -6,6 +6,10 @@ import * as i0 from "@angular/core";
6
6
  export declare class EdgeRendererComponent {
7
7
  readonly store: FlowStore<import("../../types").Node, Edge>;
8
8
  readonly reconnectRadius: import("@angular/core").InputSignal<number>;
9
+ /** Edge id whose reconnect anchor is currently hovered. Drives the `updating` style. */
10
+ readonly hoveredAnchorEdgeId: import("@angular/core").WritableSignal<string | null>;
11
+ /** Edge id currently being reconnected. The original path is hidden so the in-progress connection line is the only visible cue. */
12
+ readonly reconnectingEdgeId: import("@angular/core").WritableSignal<string | null>;
9
13
  readonly edgeClick: import("@angular/core").OutputEmitterRef<{
10
14
  event: MouseEvent;
11
15
  edge: Edge;
@@ -55,6 +59,15 @@ export declare class EdgeRendererComponent {
55
59
  getEdgeZIndex(edge: Edge): number;
56
60
  getEdgePath(ei: Record<string, unknown>): string;
57
61
  getEdgeComponent(type?: string): Type<unknown>;
62
+ private declaredInputsCache;
63
+ /**
64
+ * Filters `getEdgeInputs()` down to keys the custom edge component actually
65
+ * declares as inputs. Without this, ngComponentOutlet throws NG0303 once per
66
+ * undeclared key per render — components that only declare a subset (custom
67
+ * edges typically only need geometry, data, markerEnd) would spam errors.
68
+ */
69
+ getEdgeComponentInputs(edge: Edge, all: Record<string, unknown>): Record<string, unknown>;
70
+ private getDeclaredInputs;
58
71
  getEdgeInputs(edge: Edge): Record<string, any>;
59
72
  onEdgeEvent(event: MouseEvent, edge: Edge, eventType: string): void;
60
73
  onEdgeKeyDown(event: KeyboardEvent, edge: Edge): void;
@@ -67,6 +80,7 @@ export declare class EdgeRendererComponent {
67
80
  shiftY(y: number, shift: number, position: string): number;
68
81
  onReconnectSourceMouseDown(event: MouseEvent, edge: Edge): void;
69
82
  onReconnectTargetMouseDown(event: MouseEvent, edge: Edge): void;
83
+ onReconnectAnchorLeave(edgeId: string): void;
70
84
  private handleEdgeReconnect;
71
85
  private addMarker;
72
86
  private getMarkerUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"edge-renderer.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/container/edge-renderer/edge-renderer.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edge-renderer.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/container/edge-renderer/edge-renderer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,IAAI,EAEL,MAAM,eAAe,CAAC;AAEvB,OAAO,EAWL,KAAK,UAAU,EACf,KAAK,UAAU,EAEf,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAM9D,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;;AAanD,qBAiLa,qBAAqB;IAChC,QAAQ,CAAC,KAAK,8CAAqB;IAEnC,QAAQ,CAAC,eAAe,8CAAa;IAErC,wFAAwF;IACxF,QAAQ,CAAC,mBAAmB,wDAA+B;IAC3D,mIAAmI;IACnI,QAAQ,CAAC,kBAAkB,wDAA+B;IAE1D,QAAQ,CAAC,SAAS;eAAmB,UAAU;cAAQ,IAAI;OAAM;IACjE,QAAQ,CAAC,eAAe;eAAmB,UAAU;cAAQ,IAAI;OAAM;IACvE,QAAQ,CAAC,eAAe;eAAmB,UAAU;cAAQ,IAAI;OAAM;IACvE,QAAQ,CAAC,cAAc;eAAmB,UAAU;cAAQ,IAAI;OAAM;IACtE,QAAQ,CAAC,aAAa;eAAmB,UAAU;cAAQ,IAAI;OAAM;IACrE,QAAQ,CAAC,cAAc;eAAmB,UAAU;cAAQ,IAAI;OAAM;IACtE,QAAQ,CAAC,eAAe,iDAAwB;IAEhD,QAAQ,CAAC,SAAS;cAAkB,IAAI;oBAAc,UAAU;OAAM;IACtE,QAAQ,CAAC,cAAc;eAAmB,UAAU;cAAQ,IAAI;oBAAc,UAAU;OAAM;IAC9F,QAAQ,CAAC,YAAY;eAAmB,UAAU,GAAG,UAAU;cAAQ,IAAI;oBAAc,UAAU;yBAAmB,oBAAoB;OAAM;IAEhJ,QAAQ,CAAC,YAAY,yCAGlB;IAEH,QAAQ,CAAC,OAAO,4DAUb;IAEH,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAQpC,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAKlC,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAQnC,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IAM3C,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAOjC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAyBhD,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;IAK9C,OAAO,CAAC,mBAAmB,CAAoD;IAE/E;;;;;OAKG;IACH,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAMzF,OAAO,CAAC,iBAAiB;IAUzB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAyG9C,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA0BnE,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAUrD,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAM7B,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAInD,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAInD,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAKpC,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO;IAKxC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAM1D,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAM1D,0BAA0B,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAS/D,0BAA0B,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAS/D,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5C,OAAO,CAAC,mBAAmB;IAiD3B,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;yCA/XT,qBAAqB;2CAArB,qBAAqB;CAoYjC"}