pinecall 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +134 -0
  3. package/dist/agent/accepts.d.ts +32 -0
  4. package/dist/agent/accepts.d.ts.map +1 -0
  5. package/dist/agent/accepts.js +28 -0
  6. package/dist/agent/accepts.js.map +1 -0
  7. package/dist/agent/agent.d.ts +189 -0
  8. package/dist/agent/agent.d.ts.map +1 -0
  9. package/dist/agent/agent.js +262 -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 +28 -0
  14. package/dist/agent/authors.js.map +1 -0
  15. package/dist/agent/decorators.d.ts +22 -0
  16. package/dist/agent/decorators.d.ts.map +1 -0
  17. package/dist/agent/decorators.js +49 -0
  18. package/dist/agent/decorators.js.map +1 -0
  19. package/dist/agent/docstrings.d.ts +43 -0
  20. package/dist/agent/docstrings.d.ts.map +1 -0
  21. package/dist/agent/docstrings.js +311 -0
  22. package/dist/agent/docstrings.js.map +1 -0
  23. package/dist/agent/lifecycle.d.ts +29 -0
  24. package/dist/agent/lifecycle.d.ts.map +1 -0
  25. package/dist/agent/lifecycle.js +11 -0
  26. package/dist/agent/lifecycle.js.map +1 -0
  27. package/dist/agent/stages.d.ts +28 -0
  28. package/dist/agent/stages.d.ts.map +1 -0
  29. package/dist/agent/stages.js +32 -0
  30. package/dist/agent/stages.js.map +1 -0
  31. package/dist/agent/state.d.ts +43 -0
  32. package/dist/agent/state.d.ts.map +1 -0
  33. package/dist/agent/state.js +104 -0
  34. package/dist/agent/state.js.map +1 -0
  35. package/dist/agent/tools.d.ts +66 -0
  36. package/dist/agent/tools.d.ts.map +1 -0
  37. package/dist/agent/tools.js +148 -0
  38. package/dist/agent/tools.js.map +1 -0
  39. package/dist/agent/visibility.d.ts +40 -0
  40. package/dist/agent/visibility.d.ts.map +1 -0
  41. package/dist/agent/visibility.js +89 -0
  42. package/dist/agent/visibility.js.map +1 -0
  43. package/dist/call/call.d.ts +55 -0
  44. package/dist/call/call.d.ts.map +1 -0
  45. package/dist/call/call.js +108 -0
  46. package/dist/call/call.js.map +1 -0
  47. package/dist/call/history.d.ts +34 -0
  48. package/dist/call/history.d.ts.map +1 -0
  49. package/dist/call/history.js +38 -0
  50. package/dist/call/history.js.map +1 -0
  51. package/dist/call/room.d.ts +58 -0
  52. package/dist/call/room.d.ts.map +1 -0
  53. package/dist/call/room.js +68 -0
  54. package/dist/call/room.js.map +1 -0
  55. package/dist/cli/browser.d.ts +8 -0
  56. package/dist/cli/browser.d.ts.map +1 -0
  57. package/dist/cli/browser.js +27 -0
  58. package/dist/cli/browser.js.map +1 -0
  59. package/dist/cli/callbacks.d.ts +26 -0
  60. package/dist/cli/callbacks.d.ts.map +1 -0
  61. package/dist/cli/callbacks.js +68 -0
  62. package/dist/cli/callbacks.js.map +1 -0
  63. package/dist/cli/chat.d.ts +21 -0
  64. package/dist/cli/chat.d.ts.map +1 -0
  65. package/dist/cli/chat.js +214 -0
  66. package/dist/cli/chat.js.map +1 -0
  67. package/dist/cli/config.d.ts +16 -0
  68. package/dist/cli/config.d.ts.map +1 -0
  69. package/dist/cli/config.js +94 -0
  70. package/dist/cli/config.js.map +1 -0
  71. package/dist/cli/connected.d.ts +30 -0
  72. package/dist/cli/connected.d.ts.map +1 -0
  73. package/dist/cli/connected.js +32 -0
  74. package/dist/cli/connected.js.map +1 -0
  75. package/dist/cli/credentials.d.ts +41 -0
  76. package/dist/cli/credentials.d.ts.map +1 -0
  77. package/dist/cli/credentials.js +98 -0
  78. package/dist/cli/credentials.js.map +1 -0
  79. package/dist/cli/ear.d.ts +3 -0
  80. package/dist/cli/ear.d.ts.map +1 -0
  81. package/dist/cli/ear.js +59 -0
  82. package/dist/cli/ear.js.map +1 -0
  83. package/dist/cli/env.d.ts +40 -0
  84. package/dist/cli/env.d.ts.map +1 -0
  85. package/dist/cli/env.js +45 -0
  86. package/dist/cli/env.js.map +1 -0
  87. package/dist/cli/eval.d.ts +37 -0
  88. package/dist/cli/eval.d.ts.map +1 -0
  89. package/dist/cli/eval.js +83 -0
  90. package/dist/cli/eval.js.map +1 -0
  91. package/dist/cli/groups.d.ts +17 -0
  92. package/dist/cli/groups.d.ts.map +1 -0
  93. package/dist/cli/groups.js +38 -0
  94. package/dist/cli/groups.js.map +1 -0
  95. package/dist/cli/index.d.ts +16 -0
  96. package/dist/cli/index.d.ts.map +1 -0
  97. package/dist/cli/index.js +169 -0
  98. package/dist/cli/index.js.map +1 -0
  99. package/dist/cli/keys.d.ts +28 -0
  100. package/dist/cli/keys.d.ts.map +1 -0
  101. package/dist/cli/keys.js +137 -0
  102. package/dist/cli/keys.js.map +1 -0
  103. package/dist/cli/knowledge.d.ts +35 -0
  104. package/dist/cli/knowledge.d.ts.map +1 -0
  105. package/dist/cli/knowledge.js +174 -0
  106. package/dist/cli/knowledge.js.map +1 -0
  107. package/dist/cli/line.d.ts +33 -0
  108. package/dist/cli/line.d.ts.map +1 -0
  109. package/dist/cli/line.js +134 -0
  110. package/dist/cli/line.js.map +1 -0
  111. package/dist/cli/listening.d.ts +38 -0
  112. package/dist/cli/listening.d.ts.map +1 -0
  113. package/dist/cli/listening.js +124 -0
  114. package/dist/cli/listening.js.map +1 -0
  115. package/dist/cli/load.d.ts +38 -0
  116. package/dist/cli/load.d.ts.map +1 -0
  117. package/dist/cli/load.js +99 -0
  118. package/dist/cli/load.js.map +1 -0
  119. package/dist/cli/login.d.ts +30 -0
  120. package/dist/cli/login.d.ts.map +1 -0
  121. package/dist/cli/login.js +158 -0
  122. package/dist/cli/login.js.map +1 -0
  123. package/dist/cli/machine.d.ts +8 -0
  124. package/dist/cli/machine.d.ts.map +1 -0
  125. package/dist/cli/machine.js +41 -0
  126. package/dist/cli/machine.js.map +1 -0
  127. package/dist/cli/memory.d.ts +26 -0
  128. package/dist/cli/memory.d.ts.map +1 -0
  129. package/dist/cli/memory.js +148 -0
  130. package/dist/cli/memory.js.map +1 -0
  131. package/dist/cli/numbers.d.ts +25 -0
  132. package/dist/cli/numbers.d.ts.map +1 -0
  133. package/dist/cli/numbers.js +132 -0
  134. package/dist/cli/numbers.js.map +1 -0
  135. package/dist/cli/personas.d.ts +5 -0
  136. package/dist/cli/personas.d.ts.map +1 -0
  137. package/dist/cli/personas.js +94 -0
  138. package/dist/cli/personas.js.map +1 -0
  139. package/dist/cli/pipeline.d.ts +52 -0
  140. package/dist/cli/pipeline.d.ts.map +1 -0
  141. package/dist/cli/pipeline.js +184 -0
  142. package/dist/cli/pipeline.js.map +1 -0
  143. package/dist/cli/profiles.d.ts +70 -0
  144. package/dist/cli/profiles.d.ts.map +1 -0
  145. package/dist/cli/profiles.js +210 -0
  146. package/dist/cli/profiles.js.map +1 -0
  147. package/dist/cli/prompt.d.ts +20 -0
  148. package/dist/cli/prompt.d.ts.map +1 -0
  149. package/dist/cli/prompt.js +58 -0
  150. package/dist/cli/prompt.js.map +1 -0
  151. package/dist/cli/providers.d.ts +14 -0
  152. package/dist/cli/providers.d.ts.map +1 -0
  153. package/dist/cli/providers.js +116 -0
  154. package/dist/cli/providers.js.map +1 -0
  155. package/dist/cli/remember.d.ts +29 -0
  156. package/dist/cli/remember.d.ts.map +1 -0
  157. package/dist/cli/remember.js +112 -0
  158. package/dist/cli/remember.js.map +1 -0
  159. package/dist/cli/run.d.ts +20 -0
  160. package/dist/cli/run.d.ts.map +1 -0
  161. package/dist/cli/run.js +347 -0
  162. package/dist/cli/run.js.map +1 -0
  163. package/dist/cli/runs/candidate.d.ts +51 -0
  164. package/dist/cli/runs/candidate.d.ts.map +1 -0
  165. package/dist/cli/runs/candidate.js +127 -0
  166. package/dist/cli/runs/candidate.js.map +1 -0
  167. package/dist/cli/runs/drift.d.ts +75 -0
  168. package/dist/cli/runs/drift.d.ts.map +1 -0
  169. package/dist/cli/runs/drift.js +151 -0
  170. package/dist/cli/runs/drift.js.map +1 -0
  171. package/dist/cli/runs/index.d.ts +5 -0
  172. package/dist/cli/runs/index.d.ts.map +1 -0
  173. package/dist/cli/runs/index.js +99 -0
  174. package/dist/cli/runs/index.js.map +1 -0
  175. package/dist/cli/runs/suites.d.ts +16 -0
  176. package/dist/cli/runs/suites.d.ts.map +1 -0
  177. package/dist/cli/runs/suites.js +63 -0
  178. package/dist/cli/runs/suites.js.map +1 -0
  179. package/dist/cli/secret.d.ts +18 -0
  180. package/dist/cli/secret.d.ts.map +1 -0
  181. package/dist/cli/secret.js +41 -0
  182. package/dist/cli/secret.js.map +1 -0
  183. package/dist/cli/sessions.d.ts +21 -0
  184. package/dist/cli/sessions.d.ts.map +1 -0
  185. package/dist/cli/sessions.js +174 -0
  186. package/dist/cli/sessions.js.map +1 -0
  187. package/dist/cli/signup.d.ts +25 -0
  188. package/dist/cli/signup.d.ts.map +1 -0
  189. package/dist/cli/signup.js +122 -0
  190. package/dist/cli/signup.js.map +1 -0
  191. package/dist/cli/simulate.d.ts +45 -0
  192. package/dist/cli/simulate.d.ts.map +1 -0
  193. package/dist/cli/simulate.js +320 -0
  194. package/dist/cli/simulate.js.map +1 -0
  195. package/dist/cli/supervise.d.ts +18 -0
  196. package/dist/cli/supervise.d.ts.map +1 -0
  197. package/dist/cli/supervise.js +134 -0
  198. package/dist/cli/supervise.js.map +1 -0
  199. package/dist/cli/test.d.ts +12 -0
  200. package/dist/cli/test.d.ts.map +1 -0
  201. package/dist/cli/test.js +128 -0
  202. package/dist/cli/test.js.map +1 -0
  203. package/dist/cli/testing/caller.d.ts +28 -0
  204. package/dist/cli/testing/caller.d.ts.map +1 -0
  205. package/dist/cli/testing/caller.js +30 -0
  206. package/dist/cli/testing/caller.js.map +1 -0
  207. package/dist/cli/testing/gateway.d.ts +172 -0
  208. package/dist/cli/testing/gateway.d.ts.map +1 -0
  209. package/dist/cli/testing/gateway.js +96 -0
  210. package/dist/cli/testing/gateway.js.map +1 -0
  211. package/dist/cli/testing/goldens.d.ts +61 -0
  212. package/dist/cli/testing/goldens.d.ts.map +1 -0
  213. package/dist/cli/testing/goldens.js +54 -0
  214. package/dist/cli/testing/goldens.js.map +1 -0
  215. package/dist/cli/testing/latency.d.ts +15 -0
  216. package/dist/cli/testing/latency.d.ts.map +1 -0
  217. package/dist/cli/testing/latency.js +44 -0
  218. package/dist/cli/testing/latency.js.map +1 -0
  219. package/dist/cli/testing/matrix.d.ts +12 -0
  220. package/dist/cli/testing/matrix.d.ts.map +1 -0
  221. package/dist/cli/testing/matrix.js +103 -0
  222. package/dist/cli/testing/matrix.js.map +1 -0
  223. package/dist/cli/testing/progress.d.ts +26 -0
  224. package/dist/cli/testing/progress.d.ts.map +1 -0
  225. package/dist/cli/testing/progress.js +185 -0
  226. package/dist/cli/testing/progress.js.map +1 -0
  227. package/dist/cli/testing/reproduction.d.ts +19 -0
  228. package/dist/cli/testing/reproduction.d.ts.map +1 -0
  229. package/dist/cli/testing/reproduction.js +65 -0
  230. package/dist/cli/testing/reproduction.js.map +1 -0
  231. package/dist/cli/testing/score.d.ts +11 -0
  232. package/dist/cli/testing/score.d.ts.map +1 -0
  233. package/dist/cli/testing/score.js +54 -0
  234. package/dist/cli/testing/score.js.map +1 -0
  235. package/dist/cli/testing/seeding.d.ts +32 -0
  236. package/dist/cli/testing/seeding.d.ts.map +1 -0
  237. package/dist/cli/testing/seeding.js +44 -0
  238. package/dist/cli/testing/seeding.js.map +1 -0
  239. package/dist/cli/testing/suite.d.ts +40 -0
  240. package/dist/cli/testing/suite.d.ts.map +1 -0
  241. package/dist/cli/testing/suite.js +103 -0
  242. package/dist/cli/testing/suite.js.map +1 -0
  243. package/dist/cli/testing/voice.d.ts +37 -0
  244. package/dist/cli/testing/voice.d.ts.map +1 -0
  245. package/dist/cli/testing/voice.js +53 -0
  246. package/dist/cli/testing/voice.js.map +1 -0
  247. package/dist/cli/ui/admin/assets/index-C3WMXdfL.css +1 -0
  248. package/dist/cli/ui/admin/assets/index-DR1mxoAh.js +58 -0
  249. package/dist/cli/ui/admin/index.html +20 -0
  250. package/dist/cli/ui/asked.d.ts +16 -0
  251. package/dist/cli/ui/asked.d.ts.map +1 -0
  252. package/dist/cli/ui/asked.js +53 -0
  253. package/dist/cli/ui/asked.js.map +1 -0
  254. package/dist/cli/ui/browser.d.ts +10 -0
  255. package/dist/cli/ui/browser.d.ts.map +1 -0
  256. package/dist/cli/ui/browser.js +30 -0
  257. package/dist/cli/ui/browser.js.map +1 -0
  258. package/dist/cli/ui/chatting.d.ts +62 -0
  259. package/dist/cli/ui/chatting.d.ts.map +1 -0
  260. package/dist/cli/ui/chatting.js +171 -0
  261. package/dist/cli/ui/chatting.js.map +1 -0
  262. package/dist/cli/ui/console/assets/index-DCTnou52.css +1 -0
  263. package/dist/cli/ui/console/assets/index-dOcE4usU.js +99 -0
  264. package/dist/cli/ui/console/index.html +20 -0
  265. package/dist/cli/ui/console/logo-mark.png +0 -0
  266. package/dist/cli/ui/doors.d.ts +37 -0
  267. package/dist/cli/ui/doors.d.ts.map +1 -0
  268. package/dist/cli/ui/doors.js +70 -0
  269. package/dist/cli/ui/doors.js.map +1 -0
  270. package/dist/cli/ui/drifting.d.ts +23 -0
  271. package/dist/cli/ui/drifting.d.ts.map +1 -0
  272. package/dist/cli/ui/drifting.js +33 -0
  273. package/dist/cli/ui/drifting.js.map +1 -0
  274. package/dist/cli/ui/index.d.ts +15 -0
  275. package/dist/cli/ui/index.d.ts.map +1 -0
  276. package/dist/cli/ui/index.js +117 -0
  277. package/dist/cli/ui/index.js.map +1 -0
  278. package/dist/cli/ui/knowing.d.ts +36 -0
  279. package/dist/cli/ui/knowing.d.ts.map +1 -0
  280. package/dist/cli/ui/knowing.js +86 -0
  281. package/dist/cli/ui/knowing.js.map +1 -0
  282. package/dist/cli/ui/promoting.d.ts +26 -0
  283. package/dist/cli/ui/promoting.d.ts.map +1 -0
  284. package/dist/cli/ui/promoting.js +44 -0
  285. package/dist/cli/ui/promoting.js.map +1 -0
  286. package/dist/cli/ui/refusal.d.ts +18 -0
  287. package/dist/cli/ui/refusal.d.ts.map +1 -0
  288. package/dist/cli/ui/refusal.js +26 -0
  289. package/dist/cli/ui/refusal.js.map +1 -0
  290. package/dist/cli/ui/refused.d.ts +8 -0
  291. package/dist/cli/ui/refused.d.ts.map +1 -0
  292. package/dist/cli/ui/refused.js +11 -0
  293. package/dist/cli/ui/refused.js.map +1 -0
  294. package/dist/cli/ui/remembering.d.ts +38 -0
  295. package/dist/cli/ui/remembering.d.ts.map +1 -0
  296. package/dist/cli/ui/remembering.js +87 -0
  297. package/dist/cli/ui/remembering.js.map +1 -0
  298. package/dist/cli/ui/reproducing.d.ts +23 -0
  299. package/dist/cli/ui/reproducing.d.ts.map +1 -0
  300. package/dist/cli/ui/reproducing.js +52 -0
  301. package/dist/cli/ui/reproducing.js.map +1 -0
  302. package/dist/cli/ui/server.d.ts +22 -0
  303. package/dist/cli/ui/server.d.ts.map +1 -0
  304. package/dist/cli/ui/server.js +211 -0
  305. package/dist/cli/ui/server.js.map +1 -0
  306. package/dist/cli/ui/simulating.d.ts +47 -0
  307. package/dist/cli/ui/simulating.d.ts.map +1 -0
  308. package/dist/cli/ui/simulating.js +86 -0
  309. package/dist/cli/ui/simulating.js.map +1 -0
  310. package/dist/cli/ui/testing.d.ts +49 -0
  311. package/dist/cli/ui/testing.d.ts.map +1 -0
  312. package/dist/cli/ui/testing.js +104 -0
  313. package/dist/cli/ui/testing.js.map +1 -0
  314. package/dist/cli/view.d.ts +43 -0
  315. package/dist/cli/view.d.ts.map +1 -0
  316. package/dist/cli/view.js +137 -0
  317. package/dist/cli/view.js.map +1 -0
  318. package/dist/cli/whoami.d.ts +37 -0
  319. package/dist/cli/whoami.d.ts.map +1 -0
  320. package/dist/cli/whoami.js +78 -0
  321. package/dist/cli/whoami.js.map +1 -0
  322. package/dist/cli/world.d.ts +33 -0
  323. package/dist/cli/world.d.ts.map +1 -0
  324. package/dist/cli/world.js +48 -0
  325. package/dist/cli/world.js.map +1 -0
  326. package/dist/client/agent.d.ts +87 -0
  327. package/dist/client/agent.d.ts.map +1 -0
  328. package/dist/client/agent.js +209 -0
  329. package/dist/client/agent.js.map +1 -0
  330. package/dist/client/calls.d.ts +77 -0
  331. package/dist/client/calls.d.ts.map +1 -0
  332. package/dist/client/calls.js +153 -0
  333. package/dist/client/calls.js.map +1 -0
  334. package/dist/client/client.d.ts +58 -0
  335. package/dist/client/client.d.ts.map +1 -0
  336. package/dist/client/client.js +146 -0
  337. package/dist/client/client.js.map +1 -0
  338. package/dist/client/connection.d.ts +47 -0
  339. package/dist/client/connection.d.ts.map +1 -0
  340. package/dist/client/connection.js +141 -0
  341. package/dist/client/connection.js.map +1 -0
  342. package/dist/client/endpoints.d.ts +7 -0
  343. package/dist/client/endpoints.d.ts.map +1 -0
  344. package/dist/client/endpoints.js +21 -0
  345. package/dist/client/endpoints.js.map +1 -0
  346. package/dist/client/frames.d.ts +24 -0
  347. package/dist/client/frames.d.ts.map +1 -0
  348. package/dist/client/frames.js +49 -0
  349. package/dist/client/frames.js.map +1 -0
  350. package/dist/client/index.d.ts +15 -0
  351. package/dist/client/index.d.ts.map +1 -0
  352. package/dist/client/index.js +14 -0
  353. package/dist/client/index.js.map +1 -0
  354. package/dist/client/listeners.d.ts +36 -0
  355. package/dist/client/listeners.d.ts.map +1 -0
  356. package/dist/client/listeners.js +61 -0
  357. package/dist/client/listeners.js.map +1 -0
  358. package/dist/client/observe.d.ts +44 -0
  359. package/dist/client/observe.d.ts.map +1 -0
  360. package/dist/client/observe.js +122 -0
  361. package/dist/client/observe.js.map +1 -0
  362. package/dist/client/testing/gateway.d.ts +39 -0
  363. package/dist/client/testing/gateway.d.ts.map +1 -0
  364. package/dist/client/testing/gateway.js +129 -0
  365. package/dist/client/testing/gateway.js.map +1 -0
  366. package/dist/client/testing/index.d.ts +4 -0
  367. package/dist/client/testing/index.d.ts.map +1 -0
  368. package/dist/client/testing/index.js +4 -0
  369. package/dist/client/testing/index.js.map +1 -0
  370. package/dist/client/testing/log.d.ts +26 -0
  371. package/dist/client/testing/log.d.ts.map +1 -0
  372. package/dist/client/testing/log.js +111 -0
  373. package/dist/client/testing/log.js.map +1 -0
  374. package/dist/client/testing/loopback.d.ts +3 -0
  375. package/dist/client/testing/loopback.d.ts.map +1 -0
  376. package/dist/client/testing/loopback.js +3 -0
  377. package/dist/client/testing/loopback.js.map +1 -0
  378. package/dist/index.d.ts +22 -0
  379. package/dist/index.d.ts.map +1 -0
  380. package/dist/index.js +35 -0
  381. package/dist/index.js.map +1 -0
  382. package/dist/runtime/channels.d.ts +16 -0
  383. package/dist/runtime/channels.d.ts.map +1 -0
  384. package/dist/runtime/channels.js +30 -0
  385. package/dist/runtime/channels.js.map +1 -0
  386. package/dist/runtime/connect.d.ts +51 -0
  387. package/dist/runtime/connect.d.ts.map +1 -0
  388. package/dist/runtime/connect.js +284 -0
  389. package/dist/runtime/connect.js.map +1 -0
  390. package/dist/runtime/dispatch.d.ts +37 -0
  391. package/dist/runtime/dispatch.d.ts.map +1 -0
  392. package/dist/runtime/dispatch.js +52 -0
  393. package/dist/runtime/dispatch.js.map +1 -0
  394. package/dist/runtime/grounding.d.ts +15 -0
  395. package/dist/runtime/grounding.d.ts.map +1 -0
  396. package/dist/runtime/grounding.js +72 -0
  397. package/dist/runtime/grounding.js.map +1 -0
  398. package/dist/runtime/recall.d.ts +10 -0
  399. package/dist/runtime/recall.d.ts.map +1 -0
  400. package/dist/runtime/recall.js +13 -0
  401. package/dist/runtime/recall.js.map +1 -0
  402. package/dist/runtime/run-tool.d.ts +26 -0
  403. package/dist/runtime/run-tool.d.ts.map +1 -0
  404. package/dist/runtime/run-tool.js +82 -0
  405. package/dist/runtime/run-tool.js.map +1 -0
  406. package/dist/views/components.d.ts +17 -0
  407. package/dist/views/components.d.ts.map +1 -0
  408. package/dist/views/components.js +33 -0
  409. package/dist/views/components.js.map +1 -0
  410. package/dist/views/jsx-dev-runtime.d.ts +3 -0
  411. package/dist/views/jsx-dev-runtime.d.ts.map +1 -0
  412. package/dist/views/jsx-dev-runtime.js +5 -0
  413. package/dist/views/jsx-dev-runtime.js.map +1 -0
  414. package/dist/views/jsx-runtime.d.ts +49 -0
  415. package/dist/views/jsx-runtime.d.ts.map +1 -0
  416. package/dist/views/jsx-runtime.js +67 -0
  417. package/dist/views/jsx-runtime.js.map +1 -0
  418. package/dist/views/lang.d.ts +17 -0
  419. package/dist/views/lang.d.ts.map +1 -0
  420. package/dist/views/lang.js +46 -0
  421. package/dist/views/lang.js.map +1 -0
  422. package/dist/views/layout.d.ts +19 -0
  423. package/dist/views/layout.d.ts.map +1 -0
  424. package/dist/views/layout.js +62 -0
  425. package/dist/views/layout.js.map +1 -0
  426. package/dist/views/render.d.ts +19 -0
  427. package/dist/views/render.d.ts.map +1 -0
  428. package/dist/views/render.js +26 -0
  429. package/dist/views/render.js.map +1 -0
  430. package/package.json +76 -0
  431. package/tsconfig.tenant.json +24 -0
@@ -0,0 +1,132 @@
1
+ /** `pinecall numbers list | import | move | drop`: which number reaches which agent, in which world. */
2
+ import { parseArgs } from "node:util";
3
+ import { theDoor } from "./env.js";
4
+ import { asked } from "./testing/gateway.js";
5
+ import { refusal } from "./whoami.js";
6
+ const USAGE = `usage: pinecall numbers list
7
+ pinecall numbers import <+34…> --agent <slug> [--channel phone|whatsapp] [--dry-run]
8
+ pinecall numbers move <+34…> --env <production|sandbox>
9
+ pinecall numbers drop <+34…>`;
10
+ const NUMBERS = "/v1/numbers";
11
+ // A door the org answers at, and which table put it there: an operator typed it, or the class
12
+ // declared it in its `routes`. Only the first is a row, and only a row can be moved or dropped.
13
+ const AN_OPERATORS = "operator";
14
+ export const group = {
15
+ purpose: "list | import | move | drop the numbers the org answers at",
16
+ usage: `${USAGE}
17
+
18
+ A number exists once in a world and reaches one agent. \`list\` shows the key's world only,
19
+ because that is the world this key works in; \`move\` is the one verb that crosses, and it is
20
+ what makes a staging run cost nothing — point the org's real number at the sandbox for an
21
+ afternoon, try the new agent on it, and move it back. The carrier is untouched either way: a
22
+ call arrives at this box whichever world answers it.
23
+
24
+ \`import\` takes a number the org's carrier account already owns and points it here: the
25
+ carrier's trunk, the SFU's trunk, the route — \`--dry-run\` prints those steps and writes
26
+ nothing. \`drop\` forgets the route and takes the number off the SFU trunk; the carrier account
27
+ keeps it, so nobody is un-bought by a typo.`,
28
+ run,
29
+ };
30
+ export async function run(argv, how = {}) {
31
+ const out = how.out ?? process.stdout;
32
+ const err = how.err ?? process.stderr;
33
+ const verb = argv[0] ?? "list";
34
+ const door = theDoor(how.env ?? process.env, err);
35
+ if (door === undefined)
36
+ return 1;
37
+ try {
38
+ if (verb === "list")
39
+ return await list(door, out);
40
+ if (verb === "import")
41
+ return await brought(argv.slice(1), door, out, err);
42
+ if (verb === "move")
43
+ return await moved(argv.slice(1), door, out, err);
44
+ if (verb === "drop")
45
+ return await dropped(argv[1], door, out, err);
46
+ }
47
+ catch (refused) {
48
+ err.write(`${refusal(refused)}\n`);
49
+ return 1;
50
+ }
51
+ err.write(`${USAGE}\n`);
52
+ return 2;
53
+ }
54
+ /** Every door the org answers at in this key's world, one line each. */
55
+ async function list(door, out) {
56
+ const doors = await asked(door, NUMBERS);
57
+ if (doors.length === 0) {
58
+ out.write("no number answers in this world: `pinecall numbers import <+34…> --agent <slug>`\n");
59
+ return 0;
60
+ }
61
+ for (const one of doors)
62
+ out.write(`${aLine(one)}\n`);
63
+ return 0;
64
+ }
65
+ /** One door as a person reads it: the number, whose it is, where, and who put it there. */
66
+ export function aLine(one) {
67
+ const said = [one.route.number ?? "—", one.route.channel, `→ ${one.route.agent}`, one.route.env];
68
+ if (one.source !== AN_OPERATORS)
69
+ said.push(`declared by the app`);
70
+ else if (one.route.managed)
71
+ said.push("bought here");
72
+ return said.join(" · ");
73
+ }
74
+ /** A number the carrier already owns, pointed at this box and at one agent. */
75
+ async function brought(argv, door, out, err) {
76
+ const { values, positionals } = parseArgs({
77
+ args: argv,
78
+ allowPositionals: true,
79
+ options: { agent: { type: "string" }, channel: { type: "string" }, "dry-run": { type: "boolean", default: false } },
80
+ });
81
+ const number = positionals[0];
82
+ if (number === undefined || values.agent === undefined) {
83
+ err.write(`${USAGE}\n a number and the --agent that answers it\n`);
84
+ return 2;
85
+ }
86
+ const body = { number, agent: values.agent };
87
+ if (values.channel !== undefined)
88
+ body["channel"] = values.channel;
89
+ const path = values["dry-run"] === true ? `${NUMBERS}?dry_run=true` : NUMBERS;
90
+ const done = await asked(door, path, { method: "POST", body });
91
+ for (const step of done.steps)
92
+ out.write(` ${step}\n`);
93
+ if (done.dry_run)
94
+ out.write(" nothing written: drop --dry-run to do it\n");
95
+ return 0;
96
+ }
97
+ /**
98
+ * The one verb that crosses the two worlds.
99
+ *
100
+ * An org buys ONE number, so a team that wants to try a new agent on the real line has nowhere to
101
+ * try it: a second number is a second bill, and a third world would be a third of everything. The
102
+ * row says which world answers, and this moves the row. Moving it back is the same verb.
103
+ */
104
+ async function moved(argv, door, out, err) {
105
+ const { values, positionals } = parseArgs({ args: argv, allowPositionals: true, options: { env: { type: "string" } } });
106
+ const number = positionals[0];
107
+ if (number === undefined || values.env === undefined) {
108
+ err.write(`${USAGE}\n a number and the --env it should answer in\n`);
109
+ return 2;
110
+ }
111
+ const answer = await asked(door, `${NUMBERS}/${encodeURIComponent(number)}/env`, {
112
+ method: "PUT",
113
+ body: { env: values.env },
114
+ });
115
+ if (!answer.moved) {
116
+ out.write(`${answer.said ?? `${number} is already in ${answer.route.env}`}\n`);
117
+ return 0;
118
+ }
119
+ out.write(`${number} · ${answer.from} → ${answer.route.env} · → ${answer.route.agent}\n`);
120
+ return 0;
121
+ }
122
+ /** The route gone and the number off this org's SFU trunk. The carrier account keeps the number. */
123
+ async function dropped(number, door, out, err) {
124
+ if (number === undefined) {
125
+ err.write(`${USAGE}\n which number to forget\n`);
126
+ return 2;
127
+ }
128
+ await asked(door, `${NUMBERS}/${encodeURIComponent(number)}`, { method: "DELETE" });
129
+ out.write(`${number} answers nothing here now. Your carrier still owns it.\n`);
130
+ return 0;
131
+ }
132
+ //# sourceMappingURL=numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../src/cli/numbers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** `pinecall personas list | show <n> | try <n>`: the synthetic callers this app is tested with. */
2
+ import type { Group } from "./groups.js";
3
+ export declare const group: Group;
4
+ export declare function run(argv: string[], out?: NodeJS.WritableStream): Promise<number>;
5
+ //# sourceMappingURL=personas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../../src/cli/personas.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAIpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAMzC,eAAO,MAAM,KAAK,EAAE,KAanB,CAAC;AAMF,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,cAA+B,GAAG,OAAO,CAAC,MAAM,CAAC,CActG"}
@@ -0,0 +1,94 @@
1
+ /** `pinecall personas list | show <n> | try <n>`: the synthetic callers this app is tested with. */
2
+ import { parseArgs } from "node:util";
3
+ import { aSimulation, TURNS } from "./simulate.js";
4
+ import { NO_PERSONAS, personaNamed, personasIn } from "./testing/caller.js";
5
+ const USAGE = "usage: pinecall personas list | show <name> | try <name> [--file agent.tsx]\n";
6
+ export const group = {
7
+ purpose: "list | show | try the synthetic callers in test/personas",
8
+ usage: `${USAGE}
9
+ A persona is a caller a model plays: a goal, a style, the facts they may state about
10
+ themselves, and the state the call opens in. One file per caller under test/personas,
11
+ default-exporting one.
12
+
13
+ list every caller of this directory, with the goal each one pursues
14
+ show <name> that caller whole, facts and all
15
+ try <name> one improvised line from them, through the gateway's caller door — the same
16
+ door \`pinecall simulate\` asks for every turn. Needs a key
17
+ --file <path> which class to read the personas beside, when there is more than one`,
18
+ run,
19
+ };
20
+ // A caller with no facts of their own is not broken — they are somebody who will invent nothing,
21
+ // which is what the model playing them is told. `show` says so rather than printing an empty block.
22
+ const NO_FACTS = "(no facts: this caller may state nothing about themselves)";
23
+ export async function run(argv, out = process.stdout) {
24
+ const { values, positionals } = parseArgs({
25
+ args: argv,
26
+ allowPositionals: true,
27
+ options: { file: { type: "string" }, json: { type: "boolean", default: false } },
28
+ });
29
+ const [verb, name] = positionals;
30
+ if (verb === "list")
31
+ return await listed(values.json === true, out);
32
+ if (verb === "show" && name !== undefined)
33
+ return await shown(name, values.json === true, out);
34
+ // `try` runs the caller against the class, because reading a persona tells you who they are and
35
+ // only a call tells you how they land. It is `simulate` without the judge — one implementation.
36
+ if (verb === "try" && name !== undefined)
37
+ return await tried(name, values.file, out);
38
+ process.stderr.write(USAGE);
39
+ return 2;
40
+ }
41
+ /** One line per caller: the name a verb takes, and the goal it is written to pursue. */
42
+ async function listed(asJson, out) {
43
+ const personas = await personasIn();
44
+ if (personas.length === 0) {
45
+ process.stderr.write(`${NO_PERSONAS}\n`);
46
+ return 2;
47
+ }
48
+ if (asJson)
49
+ out.write(`${JSON.stringify({ personas })}\n`);
50
+ else
51
+ out.write(`${personas.map(oneLine).join("\n")}\n`);
52
+ return 0;
53
+ }
54
+ /** One caller whole: how they talk, and every fact about themselves they are allowed to state. */
55
+ async function shown(name, asJson, out) {
56
+ const persona = await personaNamed(name);
57
+ if (persona === undefined) {
58
+ process.stderr.write(`no persona called ${name}: ${NO_PERSONAS}\n`);
59
+ return 2;
60
+ }
61
+ if (asJson)
62
+ out.write(`${JSON.stringify(persona)}\n`);
63
+ else
64
+ out.write(`${linesOf(persona).join("\n")}\n`);
65
+ return 0;
66
+ }
67
+ /** The lines `show` prints: the caller, the goal, the style, and every fact they may state. */
68
+ function linesOf(persona) {
69
+ const facts = Object.entries(persona.facts ?? {});
70
+ return [
71
+ `${persona.name} · ${persona.goal}`,
72
+ ` ${persona.style}`,
73
+ ...(facts.length === 0 ? [` ${NO_FACTS}`] : facts.map(([name, value]) => ` ${name}: ${String(value)}`)),
74
+ ];
75
+ }
76
+ async function tried(name, agentFile, out) {
77
+ const persona = await personaNamed(name);
78
+ if (persona === undefined) {
79
+ process.stderr.write(`no persona called ${name}: ${NO_PERSONAS}\n`);
80
+ return 2;
81
+ }
82
+ const said = await aSimulation(persona, {
83
+ agentFile,
84
+ judge: false,
85
+ voice: false,
86
+ turns: TURNS,
87
+ out,
88
+ });
89
+ return said === undefined ? 2 : 0;
90
+ }
91
+ function oneLine(persona) {
92
+ return `${persona.name.padEnd(12)} ${persona.style.padEnd(46)} ${persona.goal}`;
93
+ }
94
+ //# sourceMappingURL=personas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/cli/personas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /** `pinecall pipeline`: what an agent hears, decides and speaks with, and the knobs an operator turns. */
2
+ import type { Group } from "./groups.js";
3
+ export declare const group: Group;
4
+ /** One leg of the three: which vendor runs it, which model, and the one knob worth showing. */
5
+ interface Stage {
6
+ vendor: string;
7
+ model: string | null;
8
+ voice_id: string | null;
9
+ language: string | null;
10
+ }
11
+ /** The six knobs. A knob left out of a PUT is not overridden at all. */
12
+ interface Overridden {
13
+ voice: string | null;
14
+ tts: string | null;
15
+ tts_model: string | null;
16
+ stt: string | null;
17
+ llm: string | null;
18
+ greeting: string | null;
19
+ }
20
+ /** One latency over the agent's recent calls, under livekit's own name for it. */
21
+ interface Measured {
22
+ name: string;
23
+ seconds: number;
24
+ turns: number;
25
+ }
26
+ /** What the pipeline door answers: the legs, the opening, what is turned, and what it cost. */
27
+ interface Report {
28
+ agent: string;
29
+ hears: Stage;
30
+ decides: Stage;
31
+ speaks: Stage;
32
+ greeting: {
33
+ say: string | null;
34
+ reply: string | null;
35
+ } | null;
36
+ overrides: Overridden;
37
+ voices: string[];
38
+ calls: number;
39
+ medians: Measured[];
40
+ unavailable_reasons: Record<string, string>;
41
+ }
42
+ /** What the verb can be told besides the argv: where to print, and which environment. Tests only. */
43
+ export interface Turning {
44
+ out?: NodeJS.WritableStream;
45
+ err?: NodeJS.WritableStream;
46
+ env?: NodeJS.ProcessEnv;
47
+ }
48
+ export declare function run(argv: string[], how?: Turning): Promise<number>;
49
+ /** The whole screen as a page of text: the three legs, the opening, the medians, what is turned. */
50
+ export declare function linesOf(report: Report): string[];
51
+ export {};
52
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/cli/pipeline.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAK1G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAWzC,eAAO,MAAM,KAAK,EAAE,KAoBnB,CAAC;AAEF,+FAA+F;AAC/F,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wEAAwE;AACxE,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,kFAAkF;AAClF,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+FAA+F;AAC/F,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE;QAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,SAAS,EAAE,UAAU,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAYD,qGAAqG;AACrG,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C5E;AA2DD,oGAAoG;AACpG,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBhD"}
@@ -0,0 +1,184 @@
1
+ /** `pinecall pipeline`: what an agent hears, decides and speaks with, and the knobs an operator turns. */
2
+ import { parseArgs } from "node:util";
3
+ import { theDoor } from "./env.js";
4
+ import { agentOfThisDirectory, notASlug } from "./load.js";
5
+ import { asked } from "./testing/gateway.js";
6
+ import { refusal } from "./whoami.js";
7
+ const USAGE = [
8
+ "usage: pinecall pipeline [--agent <slug>] [--json]",
9
+ " pinecall pipeline set [--stt x] [--llm x] [--tts x] [--voice x] [--tts-model x] [--greeting '…']",
10
+ " pinecall pipeline clear [stt|llm|tts|voice|tts-model|greeting …]",
11
+ ].join("\n");
12
+ export const group = {
13
+ purpose: "what the agent hears, decides and speaks with, and the six knobs an operator turns",
14
+ usage: `${USAGE}
15
+
16
+ With nothing after it: the three legs of the pipeline as the NEXT call would be built — the
17
+ vendor, the model and the one knob worth showing — what the class declared as its opening, the
18
+ medians livekit measured over the agent's recent calls, and which of the six knobs is turned.
19
+
20
+ set turns a knob for every call from the next one, held by the gateway and not by a deploy. A
21
+ model knob reads three ways: \`--llm anthropic/claude-haiku-4-5\` names both, \`--llm cartesia\`
22
+ names a VENDOR and keeps that vendor's own default model, and \`--llm claude-haiku-4-5\` keeps
23
+ whichever vendor is in use. \`--tts\` is the vendor that speaks, and the voice beside it is then
24
+ that vendor's own id. A knob nobody names here is left exactly as it stands.
25
+
26
+ clear gives a knob back to what the app declared. With no name it gives back all six. There is
27
+ no blank value: an empty voice once silenced a whole line of calls, and the door refuses one.
28
+
29
+ \`pinecall providers\` lists every vendor a knob may name and what each one still wants; the same
30
+ six knobs are the console's Pipeline screen, over the same two doors.`,
31
+ run,
32
+ };
33
+ /** The knob as it is typed, and the knob as the wire carries it. One table, both directions. */
34
+ const KNOBS = {
35
+ stt: "stt",
36
+ llm: "llm",
37
+ tts: "tts",
38
+ voice: "voice",
39
+ "tts-model": "tts_model",
40
+ greeting: "greeting",
41
+ };
42
+ export async function run(argv, how = {}) {
43
+ const out = how.out ?? process.stdout;
44
+ const err = how.err ?? process.stderr;
45
+ const { values, positionals } = parseArgs({
46
+ args: argv,
47
+ allowPositionals: true,
48
+ options: {
49
+ agent: { type: "string" },
50
+ json: { type: "boolean", default: false },
51
+ stt: { type: "string" },
52
+ llm: { type: "string" },
53
+ tts: { type: "string" },
54
+ voice: { type: "string" },
55
+ "tts-model": { type: "string" },
56
+ greeting: { type: "string" },
57
+ },
58
+ });
59
+ const door = theDoor(how.env ?? process.env, err);
60
+ if (door === undefined)
61
+ return 2;
62
+ const aFile = notASlug(values.agent);
63
+ if (aFile !== undefined) {
64
+ err.write(`${aFile}\n`);
65
+ return 2;
66
+ }
67
+ const agent = values.agent ?? (await agentOfThisDirectory());
68
+ if (agent === null || agent === undefined) {
69
+ err.write(`${USAGE}\n name the agent, or run this beside an agent file\n`);
70
+ return 2;
71
+ }
72
+ const [verb, ...named] = positionals;
73
+ try {
74
+ if (verb === undefined)
75
+ return said(await read(door, agent), values.json === true, out);
76
+ if (verb === "set")
77
+ return said(await turned(door, agent, asKnobs(values)), values.json === true, out);
78
+ if (verb === "clear")
79
+ return said(await cleared(door, agent, named), values.json === true, out);
80
+ }
81
+ catch (refused) {
82
+ // The gateway's own sentence: it is the one that knows this build's vendors and this build's
83
+ // voices, and a knob refused here says which of the six it was and what it may be.
84
+ err.write(`${refusal(refused)}\n`);
85
+ return 1;
86
+ }
87
+ err.write(`${USAGE}\n`);
88
+ return 2;
89
+ }
90
+ // ── the two doors ───────────────────────────────────────────────────────────────
91
+ async function read(door, agent) {
92
+ return await asked(door, `${pathFor(agent)}`);
93
+ }
94
+ // The door takes the WHOLE set, so a knob nobody named on this command line is read back and sent
95
+ // again: `set --llm x` twice in a row must not quietly give the voice back to the class.
96
+ async function turned(door, agent, wanted) {
97
+ const standing = (await read(door, agent)).overrides;
98
+ return await asked(door, `${pathFor(agent)}/overrides`, {
99
+ method: "PUT",
100
+ body: { ...held(standing), ...wanted },
101
+ });
102
+ }
103
+ async function cleared(door, agent, named) {
104
+ const unknown = named.filter((name) => KNOBS[name] === undefined);
105
+ if (unknown.length > 0)
106
+ throw new Error(`no knob called ${unknown.join(", ")}: ${Object.keys(KNOBS).join(" · ")}`);
107
+ // No name at all is every knob at once: the whole set left out is how the door says "as declared".
108
+ if (named.length === 0)
109
+ return await asked(door, `${pathFor(agent)}/overrides`, { method: "PUT", body: {} });
110
+ const keeping = held((await read(door, agent)).overrides);
111
+ for (const name of named)
112
+ delete keeping[KNOBS[name]];
113
+ return await asked(door, `${pathFor(agent)}/overrides`, { method: "PUT", body: keeping });
114
+ }
115
+ /** What is turned right now, as a body the door takes: a knob nobody turned is not a field at all. */
116
+ function held(standing) {
117
+ const body = {};
118
+ for (const knob of Object.values(KNOBS)) {
119
+ const value = standing[knob];
120
+ if (typeof value === "string" && value !== "")
121
+ body[knob] = value;
122
+ }
123
+ return body;
124
+ }
125
+ /** The knobs this command line named, under the names the wire uses. */
126
+ function asKnobs(values) {
127
+ const wanted = {};
128
+ for (const [typed, knob] of Object.entries(KNOBS)) {
129
+ const value = values[typed];
130
+ if (typeof value === "string")
131
+ wanted[knob] = value;
132
+ }
133
+ return wanted;
134
+ }
135
+ function pathFor(agent) {
136
+ return `/v1/agents/${encodeURIComponent(agent)}/pipeline`;
137
+ }
138
+ // ── what a person reads ─────────────────────────────────────────────────────────
139
+ function said(report, asJson, out) {
140
+ out.write(asJson ? `${JSON.stringify(report)}\n` : `${linesOf(report).join("\n")}\n`);
141
+ return 0;
142
+ }
143
+ /** The whole screen as a page of text: the three legs, the opening, the medians, what is turned. */
144
+ export function linesOf(report) {
145
+ const calls = `${report.calls} call${report.calls === 1 ? "" : "s"}`;
146
+ const lines = [`${report.agent} · ${calls}`, ""];
147
+ lines.push(` hears ${stageLine(report.hears)}${turnedAt(report, "stt")}`);
148
+ lines.push(` decides ${stageLine(report.decides)}${turnedAt(report, "llm")}`);
149
+ lines.push(` speaks ${stageLine(report.speaks)}${turnedAt(report, "tts", "voice", "tts_model")}`);
150
+ const opening = openingLine(report);
151
+ if (opening !== "")
152
+ lines.push("", ` greeting ${opening}${turnedAt(report, "greeting")}`);
153
+ if (report.medians.length > 0) {
154
+ lines.push("", ` ${report.medians.map((one) => `${one.name} ${one.seconds.toFixed(2)}s`).join(" · ")}`);
155
+ }
156
+ const off = Object.entries(report.unavailable_reasons);
157
+ if (off.length > 0) {
158
+ lines.push("");
159
+ for (const [vendor, why] of off)
160
+ lines.push(` ${vendor} is not available here: ${why}`);
161
+ }
162
+ return lines;
163
+ }
164
+ /** One leg on one line: the vendor, then whichever of the model, the voice and the language it has. */
165
+ function stageLine(stage) {
166
+ const said = [stage.vendor, stage.model, stage.voice_id, stage.language];
167
+ return said.filter((word) => typeof word === "string" && word !== "").join(" · ");
168
+ }
169
+ /** The opening the next call is built with: the words, or that the class improvises them. */
170
+ function openingLine(report) {
171
+ const greeting = report.greeting;
172
+ if (greeting === null)
173
+ return "";
174
+ if (greeting.say !== null && greeting.say !== "")
175
+ return `"${greeting.say}"`;
176
+ return `the class improvises: ${greeting.reply ?? ""}`;
177
+ }
178
+ // A turned knob is marked where it shows, and never silently: an operator reading this page has to
179
+ // be able to tell what the app declared from what somebody turned last night.
180
+ function turnedAt(report, ...knobs) {
181
+ const turned = knobs.filter((knob) => typeof report.overrides[knob] === "string" && report.overrides[knob] !== "");
182
+ return turned.length === 0 ? "" : ` ← turned: ${turned.join(", ")}`;
183
+ }
184
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/cli/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /** ~/.pinecall/config.json: the gateways this machine knows, by name, and which one is in hand. */
2
+ /** One gateway this machine can reach: where it is, what opens it, and whose org that key names. */
3
+ export interface Profile {
4
+ url: string;
5
+ key: string;
6
+ /** The org the key belongs to, as `whoami` last said it. A label, never a check. */
7
+ org?: string;
8
+ /** The world it opens, likewise: printed, never trusted over what the gateway says. */
9
+ env?: string;
10
+ /** The phone this person calls FROM, so a ring in the sandbox reaches their own agent. */
11
+ calling?: string;
12
+ }
13
+ /** The file: every profile by name, and the one a verb uses when nobody names another. */
14
+ export interface Config {
15
+ active?: string;
16
+ profiles: Record<string, Profile>;
17
+ }
18
+ /**
19
+ * Every profile this machine has, and which is active.
20
+ *
21
+ * There were four files and three variables answering two questions — which gateway, and which
22
+ * key — with a precedence nobody was ever told. This is the one file. The one it replaces is
23
+ * read ONCE, here, and written into it: `~/.pinecall/credentials`, which `pinecall login` kept a
24
+ * row per gateway in. It is not deleted — v1's CLI still reads it on this same machine — and it is
25
+ * not read again once this file exists. The third source, `~/.pinecall/dev`, went with the dev key
26
+ * that wrote it: a local gateway runs the same Postgres and the same issued keys a box does.
27
+ */
28
+ export declare function readConfig(home?: string): Config;
29
+ /**
30
+ * Take `--profile <name>` out of an invocation's argv, and remember it.
31
+ *
32
+ * Returns what is left, so the group sees only its own flags. `--profile=<name>` too, because
33
+ * both spellings are what a person types and only one of them working is a footgun.
34
+ */
35
+ export declare function withoutTheProfileFlag(argv: readonly string[]): string[];
36
+ /** The profile this invocation named, when it named one. */
37
+ export declare function theChosenProfile(): string | undefined;
38
+ /** The profile a verb runs on: the one named, or the active one, or nothing at all. */
39
+ export declare function profileFor(named: string | undefined, home?: string): Profile | undefined;
40
+ /** Which profile is in hand, for a line that says where a verb is about to go. */
41
+ export declare function activeName(home?: string): string | undefined;
42
+ /** Keep one profile and make it the active one: what `pinecall login` does when it has a key. */
43
+ export declare function writeProfile(name: string, profile: Profile, home?: string): void;
44
+ /** Make a profile that is already there the active one. False when there is no such name. */
45
+ export declare function activate(name: string, home?: string): boolean;
46
+ /**
47
+ * Forget a gateway. False when there is no such name, so a typo is never silence.
48
+ *
49
+ * A profile is a key in a file, and a key that opens nothing is worse than none: somebody will
50
+ * trust it tomorrow and read the refusal as the gateway's fault. This is the only way to take one
51
+ * out, and it takes the active mark with it rather than leaving it pointing at a row that is gone.
52
+ */
53
+ export declare function forget(name: string, home?: string): boolean;
54
+ /** The phone this person calls FROM at the gateway in hand, so a ring reaches their own agent. */
55
+ export declare function callingFrom(home?: string): string | undefined;
56
+ /** Say which phone is yours here, or take it back. False when there is no profile to write it on. */
57
+ export declare function callsFrom(number: string | undefined, home?: string): boolean;
58
+ /** Change one field of a profile without touching its key: what `line from` writes. */
59
+ export declare function amend(name: string, fields: Partial<Profile>, home?: string, whole?: boolean): boolean;
60
+ /**
61
+ * What to call a profile for this gateway: the host's first label, and `local` for a loopback.
62
+ *
63
+ * A name is for a person to type — `pinecall use box` — so it is short and it is theirs to
64
+ * override with `--as`. A second gateway that would take a name already spoken for gets a number,
65
+ * because silently repointing a name is how somebody deploys to the wrong box.
66
+ */
67
+ export declare function nameFor(url: string, config: Config): string;
68
+ /** Whichever profile points at this gateway, by name, when one does. */
69
+ export declare function nameOfGateway(url: string, config: Config): string | undefined;
70
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/cli/profiles.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAanG,oGAAoG;AACpG,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0FAA0F;AAC1F,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAuB,GAAG,MAAM,CAEhE;AA+BD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAcvE;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,MAAuB,GAAG,OAAO,GAAG,SAAS,CAIxG;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAuB,GAAG,MAAM,GAAG,SAAS,CAE5E;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,GAAE,MAAuB,GAAG,IAAI,CAKhG;AAED,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAuB,GAAG,OAAO,CAM7E;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAuB,GAAG,OAAO,CAO3E;AAED,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAuB,GAAG,MAAM,GAAG,SAAS,CAE7E;AAED,qGAAqG;AACrG,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,MAAuB,GAAG,OAAO,CAM5F;AAED,uFAAuF;AACvF,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EACxB,IAAI,GAAE,MAAuB,EAC7B,KAAK,UAAQ,GACZ,OAAO,CAQT;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG7E"}