@pinecall/agents 0.9.20

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 (292) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +121 -0
  3. package/dist/agent/accepts.d.ts +31 -0
  4. package/dist/agent/accepts.d.ts.map +1 -0
  5. package/dist/agent/accepts.js +27 -0
  6. package/dist/agent/accepts.js.map +1 -0
  7. package/dist/agent/agent.d.ts +151 -0
  8. package/dist/agent/agent.d.ts.map +1 -0
  9. package/dist/agent/agent.js +240 -0
  10. package/dist/agent/agent.js.map +1 -0
  11. package/dist/agent/authors.d.ts +12 -0
  12. package/dist/agent/authors.d.ts.map +1 -0
  13. package/dist/agent/authors.js +26 -0
  14. package/dist/agent/authors.js.map +1 -0
  15. package/dist/agent/decorators.d.ts +16 -0
  16. package/dist/agent/decorators.d.ts.map +1 -0
  17. package/dist/agent/decorators.js +43 -0
  18. package/dist/agent/decorators.js.map +1 -0
  19. package/dist/agent/docstrings.d.ts +35 -0
  20. package/dist/agent/docstrings.d.ts.map +1 -0
  21. package/dist/agent/docstrings.js +301 -0
  22. package/dist/agent/docstrings.js.map +1 -0
  23. package/dist/agent/knowledge.d.ts +9 -0
  24. package/dist/agent/knowledge.d.ts.map +1 -0
  25. package/dist/agent/knowledge.js +3 -0
  26. package/dist/agent/knowledge.js.map +1 -0
  27. package/dist/agent/lifecycle.d.ts +29 -0
  28. package/dist/agent/lifecycle.d.ts.map +1 -0
  29. package/dist/agent/lifecycle.js +9 -0
  30. package/dist/agent/lifecycle.js.map +1 -0
  31. package/dist/agent/searching.d.ts +7 -0
  32. package/dist/agent/searching.d.ts.map +1 -0
  33. package/dist/agent/searching.js +35 -0
  34. package/dist/agent/searching.js.map +1 -0
  35. package/dist/agent/stages.d.ts +23 -0
  36. package/dist/agent/stages.d.ts.map +1 -0
  37. package/dist/agent/stages.js +29 -0
  38. package/dist/agent/stages.js.map +1 -0
  39. package/dist/agent/state.d.ts +36 -0
  40. package/dist/agent/state.d.ts.map +1 -0
  41. package/dist/agent/state.js +93 -0
  42. package/dist/agent/state.js.map +1 -0
  43. package/dist/agent/tools.d.ts +61 -0
  44. package/dist/agent/tools.d.ts.map +1 -0
  45. package/dist/agent/tools.js +145 -0
  46. package/dist/agent/tools.js.map +1 -0
  47. package/dist/agent/view.d.ts +29 -0
  48. package/dist/agent/view.d.ts.map +1 -0
  49. package/dist/agent/view.js +29 -0
  50. package/dist/agent/view.js.map +1 -0
  51. package/dist/agent/visibility.d.ts +32 -0
  52. package/dist/agent/visibility.d.ts.map +1 -0
  53. package/dist/agent/visibility.js +77 -0
  54. package/dist/agent/visibility.js.map +1 -0
  55. package/dist/call/call.d.ts +137 -0
  56. package/dist/call/call.d.ts.map +1 -0
  57. package/dist/call/call.js +228 -0
  58. package/dist/call/call.js.map +1 -0
  59. package/dist/call/history.d.ts +28 -0
  60. package/dist/call/history.d.ts.map +1 -0
  61. package/dist/call/history.js +32 -0
  62. package/dist/call/history.js.map +1 -0
  63. package/dist/call/room.d.ts +56 -0
  64. package/dist/call/room.d.ts.map +1 -0
  65. package/dist/call/room.js +66 -0
  66. package/dist/call/room.js.map +1 -0
  67. package/dist/client/agent.d.ts +93 -0
  68. package/dist/client/agent.d.ts.map +1 -0
  69. package/dist/client/agent.js +230 -0
  70. package/dist/client/agent.js.map +1 -0
  71. package/dist/client/calls.d.ts +87 -0
  72. package/dist/client/calls.d.ts.map +1 -0
  73. package/dist/client/calls.js +180 -0
  74. package/dist/client/calls.js.map +1 -0
  75. package/dist/client/client.d.ts +112 -0
  76. package/dist/client/client.d.ts.map +1 -0
  77. package/dist/client/client.js +284 -0
  78. package/dist/client/client.js.map +1 -0
  79. package/dist/client/connection.d.ts +52 -0
  80. package/dist/client/connection.d.ts.map +1 -0
  81. package/dist/client/connection.js +157 -0
  82. package/dist/client/connection.js.map +1 -0
  83. package/dist/client/endpoints.d.ts +9 -0
  84. package/dist/client/endpoints.d.ts.map +1 -0
  85. package/dist/client/endpoints.js +25 -0
  86. package/dist/client/endpoints.js.map +1 -0
  87. package/dist/client/frames.d.ts +29 -0
  88. package/dist/client/frames.d.ts.map +1 -0
  89. package/dist/client/frames.js +51 -0
  90. package/dist/client/frames.js.map +1 -0
  91. package/dist/client/index.d.ts +18 -0
  92. package/dist/client/index.d.ts.map +1 -0
  93. package/dist/client/index.js +13 -0
  94. package/dist/client/index.js.map +1 -0
  95. package/dist/client/listeners.d.ts +35 -0
  96. package/dist/client/listeners.d.ts.map +1 -0
  97. package/dist/client/listeners.js +60 -0
  98. package/dist/client/listeners.js.map +1 -0
  99. package/dist/client/lost.d.ts +4 -0
  100. package/dist/client/lost.d.ts.map +1 -0
  101. package/dist/client/lost.js +8 -0
  102. package/dist/client/lost.js.map +1 -0
  103. package/dist/client/observe.d.ts +50 -0
  104. package/dist/client/observe.d.ts.map +1 -0
  105. package/dist/client/observe.js +125 -0
  106. package/dist/client/observe.js.map +1 -0
  107. package/dist/client/signed.d.ts +14 -0
  108. package/dist/client/signed.d.ts.map +1 -0
  109. package/dist/client/signed.js +18 -0
  110. package/dist/client/signed.js.map +1 -0
  111. package/dist/client/testing/gateway.d.ts +58 -0
  112. package/dist/client/testing/gateway.d.ts.map +1 -0
  113. package/dist/client/testing/gateway.js +175 -0
  114. package/dist/client/testing/gateway.js.map +1 -0
  115. package/dist/client/testing/index.d.ts +4 -0
  116. package/dist/client/testing/index.d.ts.map +1 -0
  117. package/dist/client/testing/index.js +4 -0
  118. package/dist/client/testing/index.js.map +1 -0
  119. package/dist/client/testing/log.d.ts +24 -0
  120. package/dist/client/testing/log.d.ts.map +1 -0
  121. package/dist/client/testing/log.js +106 -0
  122. package/dist/client/testing/log.js.map +1 -0
  123. package/dist/client/testing/loopback.d.ts +3 -0
  124. package/dist/client/testing/loopback.d.ts.map +1 -0
  125. package/dist/client/testing/loopback.js +3 -0
  126. package/dist/client/testing/loopback.js.map +1 -0
  127. package/dist/index.d.ts +23 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +27 -0
  130. package/dist/index.js.map +1 -0
  131. package/dist/runtime/connect.d.ts +42 -0
  132. package/dist/runtime/connect.d.ts.map +1 -0
  133. package/dist/runtime/connect.js +234 -0
  134. package/dist/runtime/connect.js.map +1 -0
  135. package/dist/runtime/dispatch.d.ts +32 -0
  136. package/dist/runtime/dispatch.d.ts.map +1 -0
  137. package/dist/runtime/dispatch.js +46 -0
  138. package/dist/runtime/dispatch.js.map +1 -0
  139. package/dist/runtime/environment.d.ts +7 -0
  140. package/dist/runtime/environment.d.ts.map +1 -0
  141. package/dist/runtime/environment.js +30 -0
  142. package/dist/runtime/environment.js.map +1 -0
  143. package/dist/runtime/recall.d.ts +9 -0
  144. package/dist/runtime/recall.d.ts.map +1 -0
  145. package/dist/runtime/recall.js +13 -0
  146. package/dist/runtime/recall.js.map +1 -0
  147. package/dist/runtime/run-tool.d.ts +18 -0
  148. package/dist/runtime/run-tool.d.ts.map +1 -0
  149. package/dist/runtime/run-tool.js +70 -0
  150. package/dist/runtime/run-tool.js.map +1 -0
  151. package/dist/serve/index.d.ts +5 -0
  152. package/dist/serve/index.d.ts.map +1 -0
  153. package/dist/serve/index.js +50 -0
  154. package/dist/serve/index.js.map +1 -0
  155. package/dist/serve/io.d.ts +14 -0
  156. package/dist/serve/io.d.ts.map +1 -0
  157. package/dist/serve/io.js +6 -0
  158. package/dist/serve/io.js.map +1 -0
  159. package/dist/serve/leaving.d.ts +12 -0
  160. package/dist/serve/leaving.d.ts.map +1 -0
  161. package/dist/serve/leaving.js +61 -0
  162. package/dist/serve/leaving.js.map +1 -0
  163. package/dist/serve/lines.d.ts +7 -0
  164. package/dist/serve/lines.d.ts.map +1 -0
  165. package/dist/serve/lines.js +25 -0
  166. package/dist/serve/lines.js.map +1 -0
  167. package/dist/serve/load.d.ts +26 -0
  168. package/dist/serve/load.d.ts.map +1 -0
  169. package/dist/serve/load.js +61 -0
  170. package/dist/serve/load.js.map +1 -0
  171. package/dist/serve/machine.d.ts +4 -0
  172. package/dist/serve/machine.d.ts.map +1 -0
  173. package/dist/serve/machine.js +33 -0
  174. package/dist/serve/machine.js.map +1 -0
  175. package/dist/serve/prompt.d.ts +7 -0
  176. package/dist/serve/prompt.d.ts.map +1 -0
  177. package/dist/serve/prompt.js +51 -0
  178. package/dist/serve/prompt.js.map +1 -0
  179. package/dist/serve/start.d.ts +7 -0
  180. package/dist/serve/start.d.ts.map +1 -0
  181. package/dist/serve/start.js +95 -0
  182. package/dist/serve/start.js.map +1 -0
  183. package/dist/serve/viewing.d.ts +17 -0
  184. package/dist/serve/viewing.d.ts.map +1 -0
  185. package/dist/serve/viewing.js +42 -0
  186. package/dist/serve/viewing.js.map +1 -0
  187. package/dist/views/built-in-rules.d.ts +9 -0
  188. package/dist/views/built-in-rules.d.ts.map +1 -0
  189. package/dist/views/built-in-rules.js +28 -0
  190. package/dist/views/built-in-rules.js.map +1 -0
  191. package/dist/views/components.d.ts +17 -0
  192. package/dist/views/components.d.ts.map +1 -0
  193. package/dist/views/components.js +33 -0
  194. package/dist/views/components.js.map +1 -0
  195. package/dist/views/jsx-dev-runtime.d.ts +3 -0
  196. package/dist/views/jsx-dev-runtime.d.ts.map +1 -0
  197. package/dist/views/jsx-dev-runtime.js +4 -0
  198. package/dist/views/jsx-dev-runtime.js.map +1 -0
  199. package/dist/views/jsx-runtime.d.ts +46 -0
  200. package/dist/views/jsx-runtime.d.ts.map +1 -0
  201. package/dist/views/jsx-runtime.js +63 -0
  202. package/dist/views/jsx-runtime.js.map +1 -0
  203. package/dist/views/layout.d.ts +19 -0
  204. package/dist/views/layout.d.ts.map +1 -0
  205. package/dist/views/layout.js +58 -0
  206. package/dist/views/layout.js.map +1 -0
  207. package/dist/views/nodes.d.ts +48 -0
  208. package/dist/views/nodes.d.ts.map +1 -0
  209. package/dist/views/nodes.js +45 -0
  210. package/dist/views/nodes.js.map +1 -0
  211. package/dist/views/panels.d.ts +17 -0
  212. package/dist/views/panels.d.ts.map +1 -0
  213. package/dist/views/panels.js +62 -0
  214. package/dist/views/panels.js.map +1 -0
  215. package/dist/views/render.d.ts +11 -0
  216. package/dist/views/render.d.ts.map +1 -0
  217. package/dist/views/render.js +19 -0
  218. package/dist/views/render.js.map +1 -0
  219. package/dist/wire/agent-config.d.ts +213 -0
  220. package/dist/wire/agent-config.d.ts.map +1 -0
  221. package/dist/wire/agent-config.js +126 -0
  222. package/dist/wire/agent-config.js.map +1 -0
  223. package/dist/wire/codec.d.ts +43 -0
  224. package/dist/wire/codec.d.ts.map +1 -0
  225. package/dist/wire/codec.js +51 -0
  226. package/dist/wire/codec.js.map +1 -0
  227. package/dist/wire/commands.d.ts +443 -0
  228. package/dist/wire/commands.d.ts.map +1 -0
  229. package/dist/wire/commands.js +203 -0
  230. package/dist/wire/commands.js.map +1 -0
  231. package/dist/wire/defs.d.ts +373 -0
  232. package/dist/wire/defs.d.ts.map +1 -0
  233. package/dist/wire/defs.js +212 -0
  234. package/dist/wire/defs.js.map +1 -0
  235. package/dist/wire/envelope.d.ts +29 -0
  236. package/dist/wire/envelope.d.ts.map +1 -0
  237. package/dist/wire/envelope.js +27 -0
  238. package/dist/wire/envelope.js.map +1 -0
  239. package/dist/wire/events-call.d.ts +446 -0
  240. package/dist/wire/events-call.d.ts.map +1 -0
  241. package/dist/wire/events-call.js +196 -0
  242. package/dist/wire/events-call.js.map +1 -0
  243. package/dist/wire/events.d.ts +946 -0
  244. package/dist/wire/events.d.ts.map +1 -0
  245. package/dist/wire/events.js +309 -0
  246. package/dist/wire/events.js.map +1 -0
  247. package/dist/wire/index.d.ts +19 -0
  248. package/dist/wire/index.d.ts.map +1 -0
  249. package/dist/wire/index.js +19 -0
  250. package/dist/wire/index.js.map +1 -0
  251. package/dist/wire/metrics.d.ts +366 -0
  252. package/dist/wire/metrics.d.ts.map +1 -0
  253. package/dist/wire/metrics.js +269 -0
  254. package/dist/wire/metrics.js.map +1 -0
  255. package/dist/wire/reduce.d.ts +10 -0
  256. package/dist/wire/reduce.d.ts.map +1 -0
  257. package/dist/wire/reduce.js +367 -0
  258. package/dist/wire/reduce.js.map +1 -0
  259. package/dist/wire/registry.d.ts +1789 -0
  260. package/dist/wire/registry.d.ts.map +1 -0
  261. package/dist/wire/registry.js +118 -0
  262. package/dist/wire/registry.js.map +1 -0
  263. package/dist/wire/rest-data.d.ts +170 -0
  264. package/dist/wire/rest-data.d.ts.map +1 -0
  265. package/dist/wire/rest-data.js +78 -0
  266. package/dist/wire/rest-data.js.map +1 -0
  267. package/dist/wire/rest-hosting.d.ts +74 -0
  268. package/dist/wire/rest-hosting.d.ts.map +1 -0
  269. package/dist/wire/rest-hosting.js +38 -0
  270. package/dist/wire/rest-hosting.js.map +1 -0
  271. package/dist/wire/rest-retrieval.d.ts +214 -0
  272. package/dist/wire/rest-retrieval.d.ts.map +1 -0
  273. package/dist/wire/rest-retrieval.js +161 -0
  274. package/dist/wire/rest-retrieval.js.map +1 -0
  275. package/dist/wire/rest.d.ts +786 -0
  276. package/dist/wire/rest.d.ts.map +1 -0
  277. package/dist/wire/rest.js +238 -0
  278. package/dist/wire/rest.js.map +1 -0
  279. package/dist/wire/room.d.ts +106 -0
  280. package/dist/wire/room.d.ts.map +1 -0
  281. package/dist/wire/room.js +73 -0
  282. package/dist/wire/room.js.map +1 -0
  283. package/dist/wire/state.d.ts +915 -0
  284. package/dist/wire/state.d.ts.map +1 -0
  285. package/dist/wire/state.js +189 -0
  286. package/dist/wire/state.js.map +1 -0
  287. package/dist/wire/verbs.d.ts +73 -0
  288. package/dist/wire/verbs.d.ts.map +1 -0
  289. package/dist/wire/verbs.js +50 -0
  290. package/dist/wire/verbs.js.map +1 -0
  291. package/package.json +74 -0
  292. package/tsconfig.tenant.json +24 -0
@@ -0,0 +1,48 @@
1
+ /** Render view JSX to a node tree the console draws (not DOM). */
2
+ import { type Child, type Component, type Props } from "./jsx-runtime.js";
3
+ /** Badge tone; the console maps it to colours. */
4
+ export type Tone = "neutral" | "good" | "warn" | "bad";
5
+ /**
6
+ * One node of a view. The set is closed and drawn by the console's own components, so tenant
7
+ * panels cannot inject styles or scripts.
8
+ */
9
+ export type ViewNode = {
10
+ tag: "panel";
11
+ title: string | null;
12
+ children: ViewNode[];
13
+ } | {
14
+ tag: "rows";
15
+ children: ViewNode[];
16
+ } | {
17
+ tag: "row";
18
+ label: string;
19
+ value: string;
20
+ } | {
21
+ tag: "stat";
22
+ label: string;
23
+ value: string;
24
+ } | {
25
+ tag: "table";
26
+ columns: string[];
27
+ rows: string[][];
28
+ } | {
29
+ tag: "badge";
30
+ tone: Tone;
31
+ text: string;
32
+ } | {
33
+ tag: "text";
34
+ text: string;
35
+ };
36
+ /** A panel component, with a builder for its node. */
37
+ export interface Panels extends Component {
38
+ /** Set on built-in panel tags; other functions are called as ordinary components. */
39
+ node?: (props: Props, children: ViewNode[]) => ViewNode | null;
40
+ }
41
+ /** Format a value for display; null, undefined and booleans become "". */
42
+ export declare function said(value: unknown): string;
43
+ /**
44
+ * Render a child to view nodes. Panel tags become nodes, other components are called, strings and
45
+ * numbers become text. Components inside the tree must be synchronous; only the view itself may be async.
46
+ */
47
+ export declare function renderToNodes(child: Child): ViewNode[];
48
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/views/nodes.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,OAAO,EAAY,KAAK,KAAK,EAAE,KAAK,SAAS,EAAgB,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAElG,kDAAkD;AAClD,MAAM,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;CAAE,GAC5D;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;CAAE,GACrC;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,GACrD;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC,sDAAsD;AACtD,MAAM,WAAW,MAAO,SAAQ,SAAS;IACvC,qFAAqF;IACrF,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,QAAQ,GAAG,IAAI,CAAC;CAChE;AAED,0EAA0E;AAC1E,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK3C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,CAMtD"}
@@ -0,0 +1,45 @@
1
+ /** Render view JSX to a node tree the console draws (not DOM). */
2
+ import { Fragment } from "./jsx-runtime.js";
3
+ /** Format a value for display; null, undefined and booleans become "". */
4
+ export function said(value) {
5
+ if (value === null || value === undefined || typeof value === "boolean")
6
+ return "";
7
+ if (typeof value === "number")
8
+ return String(value);
9
+ if (typeof value === "string")
10
+ return value;
11
+ return String(value);
12
+ }
13
+ /**
14
+ * Render a child to view nodes. Panel tags become nodes, other components are called, strings and
15
+ * numbers become text. Components inside the tree must be synchronous; only the view itself may be async.
16
+ */
17
+ export function renderToNodes(child) {
18
+ if (child === null || child === undefined || typeof child === "boolean")
19
+ return [];
20
+ if (typeof child === "string")
21
+ return child.trim() === "" ? [] : [{ tag: "text", text: child.trim() }];
22
+ if (typeof child === "number")
23
+ return [{ tag: "text", text: String(child) }];
24
+ if (Array.isArray(child))
25
+ return child.flatMap(renderToNodes);
26
+ return nodesOfElement(child);
27
+ }
28
+ function nodesOfElement(element) {
29
+ const { type, props } = element;
30
+ if (type === Fragment)
31
+ return renderToNodes(childrenOf(props));
32
+ if (typeof type === "function") {
33
+ const tag = type;
34
+ if (tag.node === undefined)
35
+ return renderToNodes(tag(props));
36
+ const node = tag.node(props, renderToNodes(childrenOf(props)));
37
+ return node === null ? [] : [node];
38
+ }
39
+ // Views have no intrinsic tags: a lowercase tag renders only its children.
40
+ return renderToNodes(childrenOf(props));
41
+ }
42
+ function childrenOf(props) {
43
+ return (props["children"] ?? null);
44
+ }
45
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/views/nodes.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,OAAO,EAAE,QAAQ,EAAwD,MAAM,kBAAkB,CAAC;AAwBlG,0EAA0E;AAC1E,MAAM,UAAU,IAAI,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvG,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9D,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB;IACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAChC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAc,CAAC;QAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,2EAA2E;IAE3E,OAAO,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,KAAY;IAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAU,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,17 @@
1
+ /** Panel components for views (`@pinecall/agents/panels`), drawn by the console. */
2
+ import { type Panels } from "./nodes.js";
3
+ /** A titled section; several stack vertically. */
4
+ export declare const Panel: Panels;
5
+ /** A list of labelled rows. */
6
+ export declare const Rows: Panels;
7
+ /** A labelled line, e.g. `Alta · 12 Mar 2024`. Value from `value` or the children. */
8
+ export declare const Row: Panels;
9
+ /** A prominent labelled number. */
10
+ export declare const Stat: Panels;
11
+ /** A table. Each of `rows` is an array in column order, or an object keyed by column name. */
12
+ export declare const Table: Panels;
13
+ /** A status badge with a `tone`: neutral, good, warn or bad. */
14
+ export declare const Badge: Panels;
15
+ /** A line of text. */
16
+ export declare const Text: Panels;
17
+ //# sourceMappingURL=panels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panels.d.ts","sourceRoot":"","sources":["../../src/views/panels.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAGpF,OAAO,EAAQ,KAAK,MAAM,EAA4B,MAAM,YAAY,CAAC;AAazE,kDAAkD;AAClD,eAAO,MAAM,KAAK,QAIf,CAAC;AAEJ,+BAA+B;AAC/B,eAAO,MAAM,IAAI,QAAiE,CAAC;AAEnF,sFAAsF;AACtF,eAAO,MAAM,GAAG,QAIb,CAAC;AAEJ,mCAAmC;AACnC,eAAO,MAAM,IAAI,QAAsG,CAAC;AAExH,8FAA8F;AAC9F,eAAO,MAAM,KAAK,QAIhB,CAAC;AAEH,gEAAgE;AAChE,eAAO,MAAM,KAAK,QAIf,CAAC;AAEJ,sBAAsB;AACtB,eAAO,MAAM,IAAI,QAGf,CAAC"}
@@ -0,0 +1,62 @@
1
+ /** Panel components for views (`@pinecall/agents/panels`), drawn by the console. */
2
+ import { said } from "./nodes.js";
3
+ // Calling the function body means the tag was used in a prompt; throw instead of leaking panel text.
4
+ const NOT_A_PROMPT = (tag) => `<${tag}> belongs to a view, not to a prompt: render() writes text, view() draws a panel`;
5
+ function tag(name, node) {
6
+ const component = () => {
7
+ throw new TypeError(NOT_A_PROMPT(name));
8
+ };
9
+ component.node = node;
10
+ return component;
11
+ }
12
+ /** A titled section; several stack vertically. */
13
+ export const Panel = tag("Panel", (props, children) => ({
14
+ tag: "panel",
15
+ title: props["title"] === undefined ? null : said(props["title"]),
16
+ children,
17
+ }));
18
+ /** A list of labelled rows. */
19
+ export const Rows = tag("Rows", (_props, children) => ({ tag: "rows", children }));
20
+ /** A labelled line, e.g. `Alta · 12 Mar 2024`. Value from `value` or the children. */
21
+ export const Row = tag("Row", (props, children) => ({
22
+ tag: "row",
23
+ label: said(props["label"]),
24
+ value: props["value"] === undefined ? textOf(children) : said(props["value"]),
25
+ }));
26
+ /** A prominent labelled number. */
27
+ export const Stat = tag("Stat", (props) => ({ tag: "stat", label: said(props["label"]), value: said(props["value"]) }));
28
+ /** A table. Each of `rows` is an array in column order, or an object keyed by column name. */
29
+ export const Table = tag("Table", (props) => {
30
+ const columns = Array.isArray(props["columns"]) ? props["columns"].map(said) : [];
31
+ const given = Array.isArray(props["rows"]) ? props["rows"] : [];
32
+ return { tag: "table", columns, rows: given.map((row) => cells(row, columns)) };
33
+ });
34
+ /** A status badge with a `tone`: neutral, good, warn or bad. */
35
+ export const Badge = tag("Badge", (props, children) => ({
36
+ tag: "badge",
37
+ tone: toneOf(props["tone"]),
38
+ text: props["text"] === undefined ? textOf(children) : said(props["text"]),
39
+ }));
40
+ /** A line of text. */
41
+ export const Text = tag("Text", (_props, children) => {
42
+ const text = textOf(children);
43
+ return text === "" ? null : { tag: "text", text };
44
+ });
45
+ const TONES = ["neutral", "good", "warn", "bad"];
46
+ function toneOf(given) {
47
+ return typeof given === "string" && TONES.includes(given) ? given : "neutral";
48
+ }
49
+ function cells(row, columns) {
50
+ if (Array.isArray(row))
51
+ return row.map(said);
52
+ if (row !== null && typeof row === "object")
53
+ return columns.map((column) => said(row[column]));
54
+ return [said(row)];
55
+ }
56
+ function textOf(children) {
57
+ return children
58
+ .map((node) => (node.tag === "text" ? node.text : ""))
59
+ .filter((text) => text !== "")
60
+ .join(" ");
61
+ }
62
+ //# sourceMappingURL=panels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panels.js","sourceRoot":"","sources":["../../src/views/panels.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAGpF,OAAO,EAAE,IAAI,EAAyC,MAAM,YAAY,CAAC;AAEzE,qGAAqG;AACrG,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,IAAI,GAAG,kFAAkF,CAAC;AAExI,SAAS,GAAG,CAAC,IAAY,EAAE,IAA6D;IACtF,MAAM,SAAS,GAAW,GAAG,EAAE;QAC7B,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtD,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjE,QAAQ;CACT,CAAC,CAAC,CAAC;AAEJ,+BAA+B;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAEnF,sFAAsF;AACtF,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClD,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CAC9E,CAAC,CAAC,CAAC;AAEJ,mCAAmC;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExH,8FAA8F;AAC9F,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;AAClF,CAAC,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtD,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAC3E,CAAC,CAAC,CAAC;AAEJ,sBAAsB;AACtB,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,MAAM,KAAK,GAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAElE,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,KAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAc,CAAC,CAAC,CAAC,SAAS,CAAC;AACjH,CAAC;AAED,SAAS,KAAK,CAAC,GAAY,EAAE,OAAiB;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAE,GAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5H,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,MAAM,CACf,QAAoB;IAClB,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACrD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;SAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Render the prompt as blocks for the runtime, or as a readable page. */
2
+ import { type PromptRegion } from "../wire/defs.js";
3
+ import type { Agent } from "../agent/agent.js";
4
+ import { type Blocks } from "./layout.js";
5
+ /** The agent's current prompt, block by block in send order. */
6
+ export declare function promptOf(agent: Agent): Blocks;
7
+ /** Section header for the printed prompt: the block name, with its region when given. */
8
+ export declare function headerFor(name: string, region?: PromptRegion): string;
9
+ /** The prompt as one readable page (static blocks, history, dynamic), as `--show-prompt` prints it. */
10
+ export declare function showPrompt(agent: Agent): string;
11
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/views/render.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAElD,gEAAgE;AAChE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE7C;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAErE;AAED,uGAAuG;AAEvG,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAO/C"}
@@ -0,0 +1,19 @@
1
+ /** Render the prompt as blocks for the runtime, or as a readable page. */
2
+ import {} from "../wire/defs.js";
3
+ import { layout } from "./layout.js";
4
+ /** The agent's current prompt, block by block in send order. */
5
+ export function promptOf(agent) {
6
+ return layout(agent);
7
+ }
8
+ /** Section header for the printed prompt: the block name, with its region when given. */
9
+ export function headerFor(name, region) {
10
+ return region === undefined ? `── ${name} ──` : `── ${name} (${region}) ──`;
11
+ }
12
+ /** The prompt as one readable page (static blocks, history, dynamic), as `--show-prompt` prints it. */
13
+ export function showPrompt(agent) {
14
+ const { blocks, history } = promptOf(agent);
15
+ const section = (name, text, region) => `${headerFor(name, region)}\n${text}`.trimEnd();
16
+ const of = (region) => blocks.filter((block) => block.region === region).map((block) => section(block.name, block.text, region));
17
+ return [...of("static"), section("history", history), ...of("dynamic")].join("\n\n");
18
+ }
19
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/views/render.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAqB,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAe,MAAM,aAAa,CAAC;AAElD,gEAAgE;AAChE,MAAM,UAAU,QAAQ,CAAC,KAAY;IACnC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,MAAqB;IAC3D,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,MAAM,MAAM,CAAC;AAC9E,CAAC;AAED,uGAAuG;AAEvG,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,MAAqB,EAAU,EAAE,CAC5E,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAClD,MAAM,EAAE,GAAG,CAAC,MAAoB,EAAY,EAAE,CAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5G,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvF,CAAC"}
@@ -0,0 +1,213 @@
1
+ /** An agent as its app declares it to the gateway: voice, models, turns, views, docs, memory. */
2
+ import { z } from "zod";
3
+ /** Which voice speaks for the agent: the name it was asked for, or the id the provider knows it by. */
4
+ export declare const VoiceConfigSchema: z.ZodObject<{
5
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
6
+ provider: z.ZodOptional<z.ZodNullable<z.ZodString>>;
7
+ model: z.ZodOptional<z.ZodNullable<z.ZodString>>;
8
+ voice_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
9
+ }, z.core.$strict>;
10
+ /** Which model does a job (the LLM, or the STT), and the one or two knobs worth turning. */
11
+ export declare const ModelConfigSchema: z.ZodObject<{
12
+ provider: z.ZodString;
13
+ model: z.ZodString;
14
+ temperature: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
15
+ }, z.core.$strict>;
16
+ export type ModelConfig = z.infer<typeof ModelConfigSchema>;
17
+ /** How the session decides that the caller has finished, and when the caller may interrupt. */
18
+ export declare const TurnConfigSchema: z.ZodObject<{
19
+ min_interruption_words: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
20
+ endpointing_ms: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
21
+ eot_threshold: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
22
+ eager_eot_threshold: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
23
+ }, z.core.$strict>;
24
+ /** How the voice says one word it would otherwise get wrong: a proper name, a brand, a street. */
25
+ export declare const PronunciationSchema: z.ZodObject<{
26
+ word: z.ZodString;
27
+ spoken: z.ZodString;
28
+ }, z.core.$strict>;
29
+ /**
30
+ * What the app declares about one field of its state: who may see it. A field never declared is
31
+ * tenant.
32
+ */
33
+ export declare const StateFieldSpecSchema: z.ZodObject<{
34
+ name: z.ZodString;
35
+ visibility: z.ZodEnum<{
36
+ pii: "pii";
37
+ public: "public";
38
+ tenant: "tenant";
39
+ }>;
40
+ }, z.core.$strict>;
41
+ /**
42
+ * The panel the agent draws beside a conversation: it is declared here so a console knows the
43
+ * agent has one before it asks for it, and draws its own about the contact when it has not. What
44
+ * the panel CONTAINS never comes this way — it is asked for a conversation at a time, through the
45
+ * view.render dev verb.
46
+ */
47
+ export declare const ViewSpecSchema: z.ZodObject<{
48
+ name: z.ZodString;
49
+ }, z.core.$strict>;
50
+ /**
51
+ * One outside event the agent accepts, and from whom. An event nobody declared is refused before
52
+ * it touches the log.
53
+ */
54
+ export declare const EventSpecSchema: z.ZodObject<{
55
+ name: z.ZodString;
56
+ from: z.ZodArray<z.ZodEnum<{
57
+ app: "app";
58
+ participant: "participant";
59
+ }>>;
60
+ }, z.core.$strict>;
61
+ /** One file of a base, as a push sends it: its path as the tenant keeps it, and its text. */
62
+ export declare const KnowledgeFileSchema: z.ZodObject<{
63
+ path: z.ZodString;
64
+ text: z.ZodString;
65
+ }, z.core.$strict>;
66
+ export type KnowledgeFile = z.infer<typeof KnowledgeFileSchema>;
67
+ /**
68
+ * The knowledge base the agent answers from, and how its chunks reach the model. It is named by
69
+ * the base it was pushed under, with PUT /v1/knowledge/{base}.
70
+ */
71
+ export declare const DocsConfigSchema: z.ZodObject<{
72
+ base: z.ZodString;
73
+ mode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
74
+ retrieved: "retrieved";
75
+ tool: "tool";
76
+ }>>>;
77
+ k: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
78
+ min_score: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
79
+ }, z.core.$strict>;
80
+ export type DocsConfig = z.infer<typeof DocsConfigSchema>;
81
+ /**
82
+ * How the agent opens a call, before the caller has said anything. Exactly one of the two, because
83
+ * there are only two ways to open one: `say` are the words themselves and `reply` is what the
84
+ * model is told before it finds its own. They are agent.say and agent.reply declared instead of
85
+ * called, so a class that opens every call the same way needs no onCall hook to do it, and an
86
+ * operator can turn the opening at the pipeline door without a deploy. Absent: nobody speaks until
87
+ * the caller does.
88
+ */
89
+ export declare const GreetingConfigSchema: z.ZodObject<{
90
+ say: z.ZodOptional<z.ZodNullable<z.ZodString>>;
91
+ reply: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ allow_interruptions: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
93
+ }, z.core.$strict>;
94
+ /**
95
+ * Whether the model may end the call itself. Declaring this is what puts livekit's own end_call
96
+ * tool in front of the model; a class that says nothing here cannot hang up, and the call ends
97
+ * when the caller does or when a supervisor says so. The tool is hidden while the agent is
98
+ * greeting, because a model that can hang up on its first turn eventually does.
99
+ */
100
+ export declare const HangupConfigSchema: z.ZodObject<{
101
+ when: z.ZodOptional<z.ZodNullable<z.ZodString>>;
102
+ }, z.core.$strict>;
103
+ /**
104
+ * What memory keeps about a contact across calls, and what it must never keep. Both lists are in
105
+ * the tenant's own words.
106
+ */
107
+ export declare const MemoryConfigSchema: z.ZodObject<{
108
+ remember: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
109
+ forget: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
110
+ }, z.core.$strict>;
111
+ /**
112
+ * What an app declares about its agent: the prompt's layout, the tools, whether it searches its
113
+ * bases itself, and who may see and send what. Every field is optional so a configure can change
114
+ * one thing. The environment — voice, models, language, greeting, hangup, turn, says, hears,
115
+ * knowledge, docs, memory — is the world's, set in the agent's settings, and no longer read off
116
+ * this declaration.
117
+ */
118
+ export declare const AgentConfigSchema: z.ZodObject<{
119
+ prompt: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
120
+ name: z.ZodString;
121
+ region: z.ZodEnum<{
122
+ dynamic: "dynamic";
123
+ static: "static";
124
+ }>;
125
+ }, z.core.$strict>>>>;
126
+ greeting: z.ZodOptional<z.ZodNullable<z.ZodObject<{
127
+ say: z.ZodOptional<z.ZodNullable<z.ZodString>>;
128
+ reply: z.ZodOptional<z.ZodNullable<z.ZodString>>;
129
+ allow_interruptions: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
130
+ }, z.core.$strict>>>;
131
+ voice: z.ZodOptional<z.ZodNullable<z.ZodObject<{
132
+ name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
133
+ provider: z.ZodOptional<z.ZodNullable<z.ZodString>>;
134
+ model: z.ZodOptional<z.ZodNullable<z.ZodString>>;
135
+ voice_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
136
+ }, z.core.$strict>>>;
137
+ llm: z.ZodOptional<z.ZodNullable<z.ZodObject<{
138
+ provider: z.ZodString;
139
+ model: z.ZodString;
140
+ temperature: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
141
+ }, z.core.$strict>>>;
142
+ stt: z.ZodOptional<z.ZodNullable<z.ZodObject<{
143
+ provider: z.ZodString;
144
+ model: z.ZodString;
145
+ temperature: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
146
+ }, z.core.$strict>>>;
147
+ turn: z.ZodOptional<z.ZodNullable<z.ZodObject<{
148
+ min_interruption_words: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
149
+ endpointing_ms: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
150
+ eot_threshold: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
151
+ eager_eot_threshold: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
152
+ }, z.core.$strict>>>;
153
+ says: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
154
+ word: z.ZodString;
155
+ spoken: z.ZodString;
156
+ }, z.core.$strict>>>>;
157
+ hears: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
158
+ knowledge: z.ZodOptional<z.ZodNullable<z.ZodObject<{
159
+ path: z.ZodString;
160
+ text: z.ZodString;
161
+ }, z.core.$strict>>>;
162
+ docs: z.ZodOptional<z.ZodNullable<z.ZodObject<{
163
+ base: z.ZodString;
164
+ mode: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
165
+ retrieved: "retrieved";
166
+ tool: "tool";
167
+ }>>>;
168
+ k: z.ZodOptional<z.ZodNullable<z.ZodInt>>;
169
+ min_score: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
170
+ }, z.core.$strict>>>;
171
+ memory: z.ZodOptional<z.ZodNullable<z.ZodObject<{
172
+ remember: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
173
+ forget: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
174
+ }, z.core.$strict>>>;
175
+ hangup: z.ZodOptional<z.ZodNullable<z.ZodObject<{
176
+ when: z.ZodOptional<z.ZodNullable<z.ZodString>>;
177
+ }, z.core.$strict>>>;
178
+ record: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
179
+ tools: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
180
+ name: z.ZodString;
181
+ description: z.ZodString;
182
+ parameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
183
+ side_effect: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
184
+ irreversible: "irreversible";
185
+ read: "read";
186
+ write: "write";
187
+ }>>>;
188
+ confirm: z.ZodOptional<z.ZodNullable<z.ZodString>>;
189
+ pii: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
190
+ timeout_s: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
191
+ }, z.core.$strict>>>>;
192
+ uses_knowledge: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
193
+ state_fields: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
194
+ name: z.ZodString;
195
+ visibility: z.ZodEnum<{
196
+ pii: "pii";
197
+ public: "public";
198
+ tenant: "tenant";
199
+ }>;
200
+ }, z.core.$strict>>>>;
201
+ view: z.ZodOptional<z.ZodNullable<z.ZodObject<{
202
+ name: z.ZodString;
203
+ }, z.core.$strict>>>;
204
+ events: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
205
+ name: z.ZodString;
206
+ from: z.ZodArray<z.ZodEnum<{
207
+ app: "app";
208
+ participant: "participant";
209
+ }>>;
210
+ }, z.core.$strict>>>>;
211
+ }, z.core.$strict>;
212
+ export type AgentConfig = z.infer<typeof AgentConfigSchema>;
213
+ //# sourceMappingURL=agent-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/wire/agent-config.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAEjG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,uGAAuG;AACvG,eAAO,MAAM,iBAAiB;;;;;kBAK5B,CAAC;AAEH,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB;;;;kBAI5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,+FAA+F;AAC/F,eAAO,MAAM,gBAAgB;;;;;kBAK3B,CAAC;AAEH,kGAAkG;AAClG,eAAO,MAAM,mBAAmB;;;kBAG9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;kBAG/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;kBAEzB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;kBAG1B,CAAC;AAEH,6FAA6F;AAC7F,eAAO,MAAM,mBAAmB;;;kBAG9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;kBAK3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB;;;;kBAI/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;kBAE7B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;kBAG7B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmB5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -0,0 +1,126 @@
1
+ /** An agent as its app declares it to the gateway: voice, models, turns, views, docs, memory. */
2
+ import { z } from "zod";
3
+ import { DocsModeSchema, EventSourceSchema, PromptBlockSpecSchema, ToolSpecSchema, VisibilitySchema, } from "./defs.js";
4
+ /** Which voice speaks for the agent: the name it was asked for, or the id the provider knows it by. */
5
+ export const VoiceConfigSchema = z.strictObject({
6
+ name: z.string().nullish(),
7
+ provider: z.string().nullish(),
8
+ model: z.string().nullish(),
9
+ voice_id: z.string().nullish(),
10
+ });
11
+ /** Which model does a job (the LLM, or the STT), and the one or two knobs worth turning. */
12
+ export const ModelConfigSchema = z.strictObject({
13
+ provider: z.string(),
14
+ model: z.string(),
15
+ temperature: z.number().nullish(),
16
+ });
17
+ /** How the session decides that the caller has finished, and when the caller may interrupt. */
18
+ export const TurnConfigSchema = z.strictObject({
19
+ min_interruption_words: z.int().nullish(),
20
+ endpointing_ms: z.int().nullish(),
21
+ eot_threshold: z.number().nullish(),
22
+ eager_eot_threshold: z.number().nullish(),
23
+ });
24
+ /** How the voice says one word it would otherwise get wrong: a proper name, a brand, a street. */
25
+ export const PronunciationSchema = z.strictObject({
26
+ word: z.string(),
27
+ spoken: z.string(),
28
+ });
29
+ /**
30
+ * What the app declares about one field of its state: who may see it. A field never declared is
31
+ * tenant.
32
+ */
33
+ export const StateFieldSpecSchema = z.strictObject({
34
+ name: z.string(),
35
+ visibility: VisibilitySchema,
36
+ });
37
+ /**
38
+ * The panel the agent draws beside a conversation: it is declared here so a console knows the
39
+ * agent has one before it asks for it, and draws its own about the contact when it has not. What
40
+ * the panel CONTAINS never comes this way — it is asked for a conversation at a time, through the
41
+ * view.render dev verb.
42
+ */
43
+ export const ViewSpecSchema = z.strictObject({
44
+ name: z.string(),
45
+ });
46
+ /**
47
+ * One outside event the agent accepts, and from whom. An event nobody declared is refused before
48
+ * it touches the log.
49
+ */
50
+ export const EventSpecSchema = z.strictObject({
51
+ name: z.string(),
52
+ from: z.array(EventSourceSchema),
53
+ });
54
+ /** One file of a base, as a push sends it: its path as the tenant keeps it, and its text. */
55
+ export const KnowledgeFileSchema = z.strictObject({
56
+ path: z.string(),
57
+ text: z.string(),
58
+ });
59
+ /**
60
+ * The knowledge base the agent answers from, and how its chunks reach the model. It is named by
61
+ * the base it was pushed under, with PUT /v1/knowledge/{base}.
62
+ */
63
+ export const DocsConfigSchema = z.strictObject({
64
+ base: z.string(),
65
+ mode: DocsModeSchema.nullish(),
66
+ k: z.int().nullish(),
67
+ min_score: z.number().nullish(),
68
+ });
69
+ /**
70
+ * How the agent opens a call, before the caller has said anything. Exactly one of the two, because
71
+ * there are only two ways to open one: `say` are the words themselves and `reply` is what the
72
+ * model is told before it finds its own. They are agent.say and agent.reply declared instead of
73
+ * called, so a class that opens every call the same way needs no onCall hook to do it, and an
74
+ * operator can turn the opening at the pipeline door without a deploy. Absent: nobody speaks until
75
+ * the caller does.
76
+ */
77
+ export const GreetingConfigSchema = z.strictObject({
78
+ say: z.string().nullish(),
79
+ reply: z.string().nullish(),
80
+ allow_interruptions: z.boolean().nullish(),
81
+ });
82
+ /**
83
+ * Whether the model may end the call itself. Declaring this is what puts livekit's own end_call
84
+ * tool in front of the model; a class that says nothing here cannot hang up, and the call ends
85
+ * when the caller does or when a supervisor says so. The tool is hidden while the agent is
86
+ * greeting, because a model that can hang up on its first turn eventually does.
87
+ */
88
+ export const HangupConfigSchema = z.strictObject({
89
+ when: z.string().nullish(),
90
+ });
91
+ /**
92
+ * What memory keeps about a contact across calls, and what it must never keep. Both lists are in
93
+ * the tenant's own words.
94
+ */
95
+ export const MemoryConfigSchema = z.strictObject({
96
+ remember: z.array(z.string()).nullish(),
97
+ forget: z.array(z.string()).nullish(),
98
+ });
99
+ /**
100
+ * What an app declares about its agent: the prompt's layout, the tools, whether it searches its
101
+ * bases itself, and who may see and send what. Every field is optional so a configure can change
102
+ * one thing. The environment — voice, models, language, greeting, hangup, turn, says, hears,
103
+ * knowledge, docs, memory — is the world's, set in the agent's settings, and no longer read off
104
+ * this declaration.
105
+ */
106
+ export const AgentConfigSchema = z.strictObject({
107
+ prompt: z.array(PromptBlockSpecSchema).nullish(),
108
+ greeting: GreetingConfigSchema.nullish(),
109
+ voice: VoiceConfigSchema.nullish(),
110
+ llm: ModelConfigSchema.nullish(),
111
+ stt: ModelConfigSchema.nullish(),
112
+ turn: TurnConfigSchema.nullish(),
113
+ says: z.array(PronunciationSchema).nullish(),
114
+ hears: z.array(z.string()).nullish(),
115
+ knowledge: KnowledgeFileSchema.nullish(),
116
+ docs: DocsConfigSchema.nullish(),
117
+ memory: MemoryConfigSchema.nullish(),
118
+ hangup: HangupConfigSchema.nullish(),
119
+ record: z.boolean().nullish(),
120
+ tools: z.array(ToolSpecSchema).nullish(),
121
+ uses_knowledge: z.boolean().nullish(),
122
+ state_fields: z.array(StateFieldSpecSchema).nullish(),
123
+ view: ViewSpecSchema.nullish(),
124
+ events: z.array(EventSpecSchema).nullish(),
125
+ });
126
+ //# sourceMappingURL=agent-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../../src/wire/agent-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /** An entry read as the event its type names, typed; and the one place a key is renamed. */
2
+ import { z } from "zod";
3
+ import { type Entry } from "./envelope.js";
4
+ import { COMMAND_SCHEMAS, type CommandType, EVENT_SCHEMAS, type EventType } from "./registry.js";
5
+ export declare class UnknownType extends Error {
6
+ readonly name = "UnknownType";
7
+ }
8
+ /** The data shape of one event type. */
9
+ export type EventData<K extends EventType> = z.infer<(typeof EVENT_SCHEMAS)[K]>;
10
+ /** One event, typed by its type: switch on `type` and `data` narrows with it. */
11
+ export type Event = {
12
+ [K in EventType]: {
13
+ type: K;
14
+ data: EventData<K>;
15
+ };
16
+ }[EventType];
17
+ /** The data shape of one command type. */
18
+ export type CommandData<K extends CommandType> = z.infer<(typeof COMMAND_SCHEMAS)[K]>;
19
+ /** One log line from decoded JSON. A bad shape throws. */
20
+ export declare function decodeEntry(raw: unknown): Entry;
21
+ /** The entry's data as the shape its type names; an unknown type or a bad shape throws. */
22
+ export declare function eventOf(entry: Entry): Event;
23
+ export declare function isEventType(type: string): type is EventType;
24
+ /** "llm_node_ttft" as a type becomes "llmNodeTtft". */
25
+ export type CamelCase<S extends string> = S extends `${infer Head}_${infer Tail}` ? `${Head}${Capitalize<CamelCase<Tail>>}` : S;
26
+ /** "llmNodeTtft" as a type becomes "llm_node_ttft". */
27
+ export type SnakeCase<S extends string> = S extends `${infer Head}${infer Tail}` ? Head extends Lowercase<Head> ? `${Head}${SnakeCase<Tail>}` : `_${Lowercase<Head>}${SnakeCase<Tail>}` : S;
28
+ /** A wire shape with every key camelCased, deep, except under the opaque keys. */
29
+ export type Camel<T> = T extends readonly (infer Item)[] ? Camel<Item>[] : T extends object ? {
30
+ [K in keyof T as K extends string ? CamelCase<K> : K]: K extends OpaqueKey ? T[K] : Camel<T[K]>;
31
+ } : T;
32
+ /** A camelCased shape back to the wire's keys, deep, except under the opaque keys. */
33
+ export type Snake<T> = T extends readonly (infer Item)[] ? Snake<Item>[] : T extends object ? {
34
+ [K in keyof T as K extends string ? SnakeCase<K> : K]: K extends OpaqueKey ? T[K] : Snake<T[K]>;
35
+ } : T;
36
+ /** The keys whose values belong to the app (its state, a tool's arguments, a map it named): never renamed below them. */
37
+ export declare const OPAQUE_KEYS: Set<string>;
38
+ export type OpaqueKey = "app_state" | "arguments" | "attributes" | "data" | "facts" | "input" | "metadata" | "output" | "parameters" | "prompt" | "result" | "state";
39
+ /** Rename every key from snake_case to camelCase, deep. Values are never touched. */
40
+ export declare function toCamel<T>(value: T): Camel<T>;
41
+ /** Rename every key from camelCase to snake_case, deep. Values are never touched. */
42
+ export declare function toSnake<T>(value: T): Snake<T>;
43
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/wire/codec.ts"],"names":[],"mappings":"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"}