@datalayer/agent-runtimes 1.3.65 → 1.3.67

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.
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { memo, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { createContext, memo, useContext, useEffect, useMemo, useRef, useState, } from 'react';
3
3
  import { BaseEdge, EdgeLabelRenderer, Handle, Position, ReactFlow, } from '@xyflow/react';
4
4
  import '@xyflow/react/dist/base.css';
5
5
  import { Button, Label, Text } from '@primer/react';
@@ -21,9 +21,20 @@ const HANDLE = (size) => ({
21
21
  minHeight: 0,
22
22
  border: 0,
23
23
  });
24
+ /**
25
+ * The members as they are now, by id. Not in the nodes' data: a node whose
26
+ * object changes is taken by React Flow for a new one, measured again, and
27
+ * the edge is dropped until it is — the line vanished as the characters
28
+ * moved. The nodes stay the same objects; what they show is read from here.
29
+ */
30
+ const Members = createContext({});
24
31
  const MemberNode = memo(function MemberNode({ data, }) {
25
- const { member, side, size } = data;
32
+ const { id, side, size } = data;
33
+ const member = useContext(Members)[id];
26
34
  const stageRef = useRef(null);
35
+ if (!member) {
36
+ return null;
37
+ }
27
38
  const { persona } = member;
28
39
  return (_jsxs(Box
29
40
  // React Flow lets the pointer through a node that is neither dragged
@@ -123,7 +134,7 @@ export function A2ATeamGraph({ entry, peer, flow, connected, label = 'A2A', size
123
134
  selectable: false,
124
135
  // Above the edge and its label: a balloon overflows its node.
125
136
  zIndex: 10,
126
- data: { member: entry, side: 'left', size },
137
+ data: { id: entry.id, side: 'left', size },
127
138
  },
128
139
  {
129
140
  id: peer.id,
@@ -134,9 +145,10 @@ export function A2ATeamGraph({ entry, peer, flow, connected, label = 'A2A', size
134
145
  draggable: false,
135
146
  selectable: false,
136
147
  zIndex: 10,
137
- data: { member: peer, side: 'right', size },
148
+ data: { id: peer.id, side: 'right', size },
138
149
  },
139
- ], [entry, peer, size, memberHeight]);
150
+ ], [entry.id, peer.id, size, memberHeight]);
151
+ const members = useMemo(() => ({ [entry.id]: entry, [peer.id]: peer }), [entry, peer]);
140
152
  const words = flowWords(flow, entry.name, peer.name);
141
153
  const edges = useMemo(() => [
142
154
  {
@@ -185,6 +197,6 @@ export function A2ATeamGraph({ entry, peer, flow, connected, label = 'A2A', size
185
197
  overflow: 'hidden',
186
198
  clip: 'rect(0 0 0 0)',
187
199
  whiteSpace: 'nowrap',
188
- }, children: words }), _jsx(ReactFlow, { nodes: nodes, edges: edges, nodeTypes: NODE_TYPES, edgeTypes: EDGE_TYPES, viewport: viewport, nodesDraggable: false, nodesConnectable: false, nodesFocusable: false, edgesFocusable: false, elementsSelectable: false, deleteKeyCode: null, selectionKeyCode: null, multiSelectionKeyCode: null, panOnDrag: false, panOnScroll: false, zoomOnScroll: false, zoomOnPinch: false, zoomOnDoubleClick: false, preventScrolling: false, style: { overflow: 'visible', background: 'transparent' }, "aria-label": `${entry.name} and ${peer.name}, over A2A` })] }));
200
+ }, children: words }), _jsx(Members.Provider, { value: members, children: _jsx(ReactFlow, { nodes: nodes, edges: edges, nodeTypes: NODE_TYPES, edgeTypes: EDGE_TYPES, viewport: viewport, nodesDraggable: false, nodesConnectable: false, nodesFocusable: false, edgesFocusable: false, elementsSelectable: false, deleteKeyCode: null, selectionKeyCode: null, multiSelectionKeyCode: null, panOnDrag: false, panOnScroll: false, zoomOnScroll: false, zoomOnPinch: false, zoomOnDoubleClick: false, preventScrolling: false, style: { overflow: 'visible', background: 'transparent' }, "aria-label": `${entry.name} and ${peer.name}, over A2A` }) })] }));
189
201
  }
190
202
  export default A2ATeamGraph;
@@ -13,7 +13,8 @@
13
13
  * agent (http://127.0.0.1:8765);
14
14
  * - `?voiceModelsUrl=` — the browser's models, as pinned
15
15
  * (`scripts/voice/serve_store.py`, http://127.0.0.1:8770);
16
- * - `?speechUrl=` — ai-agents' speech service (http://127.0.0.1:4401).
16
+ * - `?speechUrl=` — Datalayer's speech service, datalayer-speech on r1
17
+ * (https://r1.datalayer.run), asked with the signed-in person's token.
17
18
  */
18
19
  import React from 'react';
19
20
  declare const VoiceChatExample: React.FC;
@@ -18,7 +18,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
18
  * agent (http://127.0.0.1:8765);
19
19
  * - `?voiceModelsUrl=` — the browser's models, as pinned
20
20
  * (`scripts/voice/serve_store.py`, http://127.0.0.1:8770);
21
- * - `?speechUrl=` — ai-agents' speech service (http://127.0.0.1:4401).
21
+ * - `?speechUrl=` — Datalayer's speech service, datalayer-speech on r1
22
+ * (https://r1.datalayer.run), asked with the signed-in person's token.
22
23
  */
23
24
  import { useMemo, useState } from 'react';
24
25
  import { Heading, Link, SegmentedControl, Text } from '@primer/react';
@@ -34,7 +35,7 @@ function fromAddress(name, otherwise) {
34
35
  }
35
36
  const SERVER = fromAddress('agentRuntimesUrl', 'http://127.0.0.1:8765');
36
37
  const MODELS = fromAddress('voiceModelsUrl', 'http://127.0.0.1:8770');
37
- const SPEECH = fromAddress('speechUrl', 'http://127.0.0.1:4401');
38
+ const SPEECH = fromAddress('speechUrl', 'https://r1.datalayer.run');
38
39
  /** The packages that hear, loaded the first time the microphone is used. */
39
40
  const ENGINES = {
40
41
  transformers: () => import('@huggingface/transformers'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datalayer/agent-runtimes",
3
- "version": "1.3.65",
3
+ "version": "1.3.67",
4
4
  "type": "module",
5
5
  "workspaces": [
6
6
  ".",