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,151 @@
1
+ /** `pinecall runs drift`: each judge's held-rate over two windows of call.score, and the delta. */
2
+ import { entriesOf, theSessions } from "../testing/gateway.js";
3
+ import { theScoreIn } from "./candidate.js";
4
+ /** How many of an agent's newest calls drift reads. 200 is the sessions door's own ceiling. */
5
+ export const A_WINDOW_OF_CALLS = 200;
6
+ /** How many points a judge may drop before the night fails. Written 10 or -10, it is the drop. */
7
+ export const THRESHOLD = 10;
8
+ /** How many broken calls a drift names. Three: enough to see a pattern, short enough to read. */
9
+ const NAMED = 3;
10
+ /**
11
+ * The verb: read the agent's calls, split them into the two windows, count the verdicts the log
12
+ * already carries, and fail when a judge fell further than the threshold allows.
13
+ */
14
+ export async function drifted(door, asked, out) {
15
+ const drift = await theDrift(door, asked);
16
+ out.write(`${linesOf(asked, drift).join("\n")}\n`);
17
+ return drift.worst !== null && drift.worst < -Math.abs(asked.threshold) ? 1 : 0;
18
+ }
19
+ /** The two windows read and counted. Both doors — the verb and the console's — come through here. */
20
+ export async function theDrift(door, asked) {
21
+ const sessions = await theSessions(door, asked.agent, asked.limit);
22
+ const now = await judgedIn(door, finishedBetween(sessions, asked.now - asked.window, asked.now));
23
+ const opened = asked.now - asked.baseline;
24
+ const before = await judgedIn(door, finishedBetween(sessions, opened, asked.now - asked.window));
25
+ return driftOf(now, before);
26
+ }
27
+ /** The calls that ended inside a window, newest first. A live call has not been judged yet. */
28
+ export function finishedBetween(sessions, from, to) {
29
+ const inside = sessions.filter((line) => !line.live && line.ended_at !== null && line.ended_at > from && line.ended_at <= to);
30
+ return inside.sort((one, other) => (other.ended_at ?? 0) - (one.ended_at ?? 0));
31
+ }
32
+ /**
33
+ * Each judge's held-rate in each window and the points between them. Nothing here is computed that
34
+ * the log does not carry: a held-rate is a count of the verdicts written into `call.score`.
35
+ */
36
+ export function driftOf(now, before) {
37
+ const [judgedNow, judgedBefore] = [now.filter(wasJudged), before.filter(wasJudged)];
38
+ const judges = [...new Set([...judgedNow, ...judgedBefore].flatMap(namesIn))].sort();
39
+ const rows = judges.map((judge) => rowFor(judge, judgedNow, judgedBefore));
40
+ const deltas = rows.map((row) => row.delta).filter((delta) => delta !== null);
41
+ return {
42
+ judges: rows,
43
+ notJudged: { now: now.length - judgedNow.length, before: before.length - judgedBefore.length },
44
+ broke: brokenIn(judgedNow),
45
+ worst: deltas.length > 0 ? Math.min(...deltas) : null,
46
+ };
47
+ }
48
+ /** The reading as a person gets it: the two windows on top, a row per judge, then what broke. */
49
+ export function linesOf(asked, drift) {
50
+ const width = Math.max(1, ...drift.judges.map((row) => row.judge.length));
51
+ const lines = [
52
+ `${asked.agent} drift the last ${secondsAs(asked.window)} against the ${secondsAs(asked.baseline)} before it`,
53
+ ...drift.judges.map((row) => rowAs(row, width)),
54
+ ` ${drift.notJudged.now} not judged in the window, ${drift.notJudged.before} in the baseline`,
55
+ ];
56
+ if (drift.broke.length > 0) {
57
+ lines.push(` the ${drift.broke.length} most recent broken call(s):`);
58
+ for (const broke of drift.broke) {
59
+ lines.push(` ${broke.call} ${broke.judge} seq ${broke.seqs.join(", ")} ${broke.reason}`);
60
+ }
61
+ }
62
+ return lines;
63
+ }
64
+ /** Each call's `call.score`, read one narrow page at a time from the end of its own log. */
65
+ async function judgedIn(door, sessions) {
66
+ const judged = [];
67
+ for (const line of sessions) {
68
+ // The terminal entry is the last seq the log reached, so a cursor one below it reads the
69
+ // verdict and nothing else — a drift over two hundred calls is two hundred one-entry pages.
70
+ const entries = await entriesOf(door, line.call, {
71
+ after: Math.max(0, line.last_seq - 1),
72
+ types: ["call.score"],
73
+ limit: 4,
74
+ });
75
+ judged.push({ call: line.call, at: line.ended_at ?? 0, score: theScoreIn(entries) });
76
+ }
77
+ return judged;
78
+ }
79
+ // `passed` absent means nobody answered, which is a third thing and not a failure
80
+ // (the runtime's docs/decisions/scoring.md). Such a call is counted apart and is in neither
81
+ // window's arithmetic.
82
+ function wasJudged(judged) {
83
+ return judged.score !== null && judged.score.passed !== null && judged.score.passed !== undefined;
84
+ }
85
+ function namesIn(judged) {
86
+ return (judged.score?.judges ?? []).map((judgment) => judgment.name);
87
+ }
88
+ function rowFor(judge, now, before) {
89
+ const [held, was] = [rateOf(judge, now), rateOf(judge, before)];
90
+ const delta = held !== null && was !== null ? held.percent - was.percent : null;
91
+ return { judge, before: was, now: held, delta };
92
+ }
93
+ // Held over settled: a `deferred` or a `skipped` verdict is a question nobody answered, and
94
+ // counting it as a failure would read as a judge that looked and disliked what it saw.
95
+ function rateOf(judge, judged) {
96
+ const verdicts = judged
97
+ .flatMap((one) => one.score?.judges ?? [])
98
+ .filter((judgment) => judgment.name === judge)
99
+ .map((judgment) => judgment.verdict);
100
+ const settled = verdicts.filter((verdict) => verdict === "held" || verdict === "broken").length;
101
+ if (settled === 0)
102
+ return null;
103
+ const held = verdicts.filter((verdict) => verdict === "held").length;
104
+ return { held, settled, percent: (held / settled) * 100 };
105
+ }
106
+ // Newest first, because a regression is read from the last call backwards; the calls arrive in
107
+ // that order already, so this only cuts the list at three.
108
+ function brokenIn(judged) {
109
+ const broke = [];
110
+ for (const one of judged) {
111
+ const faults = (one.score?.judges ?? []).filter((judgment) => judgment.verdict === "broken");
112
+ if (faults.length === 0)
113
+ continue;
114
+ if (broke.some((named) => named.call === one.call))
115
+ continue;
116
+ for (const fault of faults) {
117
+ broke.push({ call: one.call, judge: fault.name, seqs: fault.evidence.seqs, reason: fault.reason });
118
+ }
119
+ if (new Set(broke.map((named) => named.call)).size >= NAMED)
120
+ break;
121
+ }
122
+ return broke;
123
+ }
124
+ function rowAs(row, width) {
125
+ const delta = row.delta === null ? " —" : `${row.delta >= 0 ? "+" : ""}${row.delta.toFixed(1)}`;
126
+ return ` ${row.judge.padEnd(width)} ${percentAs(row.before)} → ${percentAs(row.now)} ${delta.padStart(6)} points ${countsAs(row)}`;
127
+ }
128
+ function percentAs(rate) {
129
+ return (rate === null ? "—" : `${rate.percent.toFixed(1)}%`).padStart(6);
130
+ }
131
+ function countsAs(row) {
132
+ const said = (rate) => (rate === null ? "nothing" : `${rate.held}/${rate.settled}`);
133
+ return `(${said(row.now)} held, was ${said(row.before)})`;
134
+ }
135
+ /** A window as a person writes one: `90m`, `24h`, `7d`. Null when it is not one of those. */
136
+ export function secondsOf(said) {
137
+ const written = /^(\d+)([smhd])$/.exec(said);
138
+ if (written === null)
139
+ return null;
140
+ const sizes = { s: 1, m: 60, h: 3600, d: 86400 };
141
+ return Number(written[1]) * (sizes[written[2] ?? "s"] ?? 1);
142
+ }
143
+ // The window as it was typed, for the header. Whole days and hours read better than 604800 s.
144
+ function secondsAs(seconds) {
145
+ for (const [unit, size] of [["d", 86400], ["h", 3600], ["m", 60]]) {
146
+ if (seconds % size === 0)
147
+ return `${seconds / size}${unit}`;
148
+ }
149
+ return `${seconds}s`;
150
+ }
151
+ //# sourceMappingURL=drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../../src/cli/runs/drift.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** `pinecall runs list | show | diff | promote | drift`: what this gateway ran, and what changed. */
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=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/runs/index.ts"],"names":[],"mappings":"AAAA,qGAAqG;AAKrG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAa1C,eAAO,MAAM,KAAK,EAAE,KAWnB,CAAC;AAKF,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,cAA+B,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCtG"}
@@ -0,0 +1,99 @@
1
+ /** `pinecall runs list | show | diff | promote | drift`: what this gateway ran, and what changed. */
2
+ import { parseArgs } from "node:util";
3
+ import { theDoor } from "../env.js";
4
+ import { CANDIDATES, promoted } from "./candidate.js";
5
+ import { A_WINDOW_OF_CALLS, drifted, secondsOf, THRESHOLD } from "./drift.js";
6
+ import { DEFAULT_LIMIT, diffed, listed, shown } from "./suites.js";
7
+ const USAGE = [
8
+ "usage: pinecall runs list [--limit n] | show <id> | diff <a> <b>",
9
+ " pinecall runs promote <call-id> [--name x] [--out test/candidates] [--from-seq n]",
10
+ " pinecall runs drift --agent <slug> [--window 7d] [--baseline 30d] [--threshold 10]",
11
+ "",
12
+ ].join("\n");
13
+ export const group = {
14
+ purpose: "the runs this gateway has done: list, show, diff, promote a call, watch the drift",
15
+ usage: `${USAGE} list one line per run, newest first: when, which agent, how much held
16
+ show one run as \`pinecall test\` printed it when it happened
17
+ diff what moved between two runs, golden by golden
18
+ promote one real call written down as a golden CANDIDATE in test/candidates, with an expect
19
+ derived from what the judges answered. --from-seq cuts the call: the state as it stood
20
+ there, and every caller turn after it
21
+ drift each judge's held-rate over two windows of finished calls, and the points between
22
+ them. Exits 1 when a judge fell further than --threshold allows`,
23
+ run,
24
+ };
25
+ /** What a window has to be, said once, because two flags are refused by the same sentence. */
26
+ const NOT_A_WINDOW = "a window is a number and one of s, m, h, d — 90m, 24h, 7d";
27
+ export async function run(argv, out = process.stdout) {
28
+ const { values, positionals } = parseArgs({
29
+ args: argv,
30
+ allowPositionals: true,
31
+ options: {
32
+ limit: { type: "string" },
33
+ json: { type: "boolean", default: false },
34
+ "from-seq": { type: "string" },
35
+ name: { type: "string" },
36
+ out: { type: "string" },
37
+ agent: { type: "string" },
38
+ window: { type: "string" },
39
+ baseline: { type: "string" },
40
+ threshold: { type: "string" },
41
+ },
42
+ });
43
+ const door = theDoor();
44
+ if (door === undefined)
45
+ return 2;
46
+ const [verb, ...rest] = positionals;
47
+ const asJson = values.json === true;
48
+ if (verb === "list")
49
+ return await listed(door, Number(values.limit ?? DEFAULT_LIMIT), asJson, out);
50
+ if (verb === "show" && rest[0] !== undefined)
51
+ return await shown(door, rest[0], asJson, out);
52
+ if (verb === "diff" && rest[1] !== undefined)
53
+ return await diffed(door, rest[0], rest[1], out);
54
+ if (verb === "promote" && rest[0] !== undefined) {
55
+ const wanted = {
56
+ out: values.out ?? CANDIDATES,
57
+ fromSeq: seqOf(values["from-seq"]),
58
+ ...(values.name === undefined ? {} : { name: values.name }),
59
+ };
60
+ return await promoted(door, rest[0], wanted, out);
61
+ }
62
+ if (verb === "drift")
63
+ return await theDrift(door, values, out);
64
+ process.stderr.write(USAGE);
65
+ return 2;
66
+ }
67
+ /** The drift verb's own flags: whose calls, the two windows, and how far a judge may fall. */
68
+ async function theDrift(door, values, out) {
69
+ if (values.agent === undefined) {
70
+ process.stderr.write(`pinecall runs drift needs the agent it watches: --agent <slug>\n`);
71
+ return 2;
72
+ }
73
+ const [window, baseline] = [secondsOf(values.window ?? "7d"), secondsOf(values.baseline ?? "30d")];
74
+ if (window === null || baseline === null) {
75
+ process.stderr.write(`${NOT_A_WINDOW}\n`);
76
+ return 2;
77
+ }
78
+ // The two windows are disjoint on purpose: a baseline that contained the window would dilute
79
+ // the very drop this verb exists to name.
80
+ if (baseline <= window) {
81
+ process.stderr.write(`the baseline has to be longer than the window: it is the time BEFORE it\n`);
82
+ return 2;
83
+ }
84
+ const asked = {
85
+ agent: values.agent,
86
+ window,
87
+ baseline,
88
+ threshold: Number(values.threshold ?? THRESHOLD),
89
+ limit: Number(values.limit ?? A_WINDOW_OF_CALLS),
90
+ now: Date.now() / 1000,
91
+ };
92
+ return await drifted(door, asked, out);
93
+ }
94
+ // Seq 0 is before the call said anything, so a promote with no cut starts at the very beginning —
95
+ // which is the whole call, replayed.
96
+ function seqOf(said) {
97
+ return said === undefined ? 0 : Number(said);
98
+ }
99
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/runs/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** The suites this gateway has run, read back: one line each, one whole, and what moved between two. */
2
+ import { type Door, type EvalRun } from "../testing/gateway.js";
3
+ /** How many runs `list` prints when nobody said: one screen of them, newest first. */
4
+ export declare const DEFAULT_LIMIT = 20;
5
+ /** One line per run, newest first: when, which agent, how it went, and how much of it held. */
6
+ export declare function listed(door: Door, limit: number, asJson: boolean, out: NodeJS.WritableStream): Promise<number>;
7
+ /** One run, printed the way `pinecall test` printed it when it happened. */
8
+ export declare function shown(door: Door, id: string, asJson: boolean, out: NodeJS.WritableStream): Promise<number>;
9
+ /**
10
+ * What moved between two runs, graph by graph. Only the cells that changed are printed: a diff of
11
+ * two green runs is empty on purpose, and the one line that is not empty is the regression.
12
+ */
13
+ export declare function diffed(door: Door, before: string, after: string, out: NodeJS.WritableStream): Promise<number>;
14
+ /** Every graph whose answer is not what it was, named as it moved. */
15
+ export declare function movedBetween(was: EvalRun, now: EvalRun): string[];
16
+ //# sourceMappingURL=suites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suites.d.ts","sourceRoot":"","sources":["../../../src/cli/runs/suites.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAExG,OAAO,EAA8B,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAK5F,sFAAsF;AACtF,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,+FAA+F;AAC/F,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,MAAM,CAAC,cAAc,GACzB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,4EAA4E;AAC5E,wBAAsB,KAAK,CACzB,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,EACf,GAAG,EAAE,MAAM,CAAC,cAAc,GACzB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,CAAC,cAAc,GACzB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAcjE"}
@@ -0,0 +1,63 @@
1
+ /** The suites this gateway has run, read back: one line each, one whole, and what moved between two. */
2
+ import { entriesOf, oneRun, theRuns } from "../testing/gateway.js";
3
+ import { mediansOf } from "../testing/latency.js";
4
+ import { DECLARED, reportOf } from "../testing/matrix.js";
5
+ import { reasonOf } from "../testing/score.js";
6
+ /** How many runs `list` prints when nobody said: one screen of them, newest first. */
7
+ export const DEFAULT_LIMIT = 20;
8
+ /** One line per run, newest first: when, which agent, how it went, and how much of it held. */
9
+ export async function listed(door, limit, asJson, out) {
10
+ const runs = await theRuns(door, limit);
11
+ if (asJson) {
12
+ out.write(`${JSON.stringify({ runs })}\n`);
13
+ return 0;
14
+ }
15
+ out.write(`${runs.map(lineOf).join("\n")}\n`);
16
+ return 0;
17
+ }
18
+ /** One run, printed the way `pinecall test` printed it when it happened. */
19
+ export async function shown(door, id, asJson, out) {
20
+ const run = await oneRun(door, id);
21
+ if (asJson) {
22
+ out.write(`${JSON.stringify(run)}\n`);
23
+ return 0;
24
+ }
25
+ const latencies = {};
26
+ for (const opened of run.calls)
27
+ latencies[opened.call] = mediansOf(await entriesOf(door, opened.call));
28
+ out.write(`${reportOf(run, latencies, DECLARED).join("\n")}\n`);
29
+ return run.matrix !== null && run.matrix.failures.length > 0 ? 1 : 0;
30
+ }
31
+ /**
32
+ * What moved between two runs, graph by graph. Only the cells that changed are printed: a diff of
33
+ * two green runs is empty on purpose, and the one line that is not empty is the regression.
34
+ */
35
+ export async function diffed(door, before, after, out) {
36
+ const [was, now] = [await oneRun(door, before), await oneRun(door, after)];
37
+ const moved = movedBetween(was, now);
38
+ out.write(`${[`${before} → ${after}`, ...(moved.length > 0 ? moved : [" nothing moved"])].join("\n")}\n`);
39
+ return moved.some((line) => line.includes("held → broken")) ? 1 : 0;
40
+ }
41
+ /** Every graph whose answer is not what it was, named as it moved. */
42
+ export function movedBetween(was, now) {
43
+ const lines = [];
44
+ for (const cell of now.matrix?.runs ?? []) {
45
+ const before = was.matrix?.runs.find((one) => one.model === cell.model && one.golden === cell.golden);
46
+ for (const score of cell.scores) {
47
+ const older = before?.scores.find((one) => one.metric === score.metric);
48
+ if (older === undefined || older.passed === score.passed)
49
+ continue;
50
+ const way = older.passed ? "held → broken" : "broken → held";
51
+ lines.push(` ${cell.golden} ${score.metric} ${way} ${reasonOf(score)}`);
52
+ }
53
+ }
54
+ return lines;
55
+ }
56
+ // One run on one line: the id first, because the next thing a person types is `runs show <id>`.
57
+ function lineOf(run) {
58
+ const when = new Date(run.started_at * 1000).toISOString().slice(0, 19).replace("T", " ");
59
+ const cells = run.matrix?.runs.length ?? run.calls.length;
60
+ const broken = new Set((run.matrix?.failures ?? []).map((one) => `${one.model} ${one.golden}`)).size;
61
+ return `${run.id} ${when} ${run.agent.padEnd(16)} ${run.status.padEnd(7)} ${cells - broken}/${cells}`;
62
+ }
63
+ //# sourceMappingURL=suites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suites.js","sourceRoot":"","sources":["../../../src/cli/runs/suites.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /** What this terminal is asked for: a secret with nothing echoed, a word in the open, or a line of stdin. */
2
+ /**
3
+ * One line typed with nothing echoed.
4
+ *
5
+ * A key on the screen is a key in the scrollback, in a screen share and in whatever recorded the
6
+ * terminal. readline echoes what it reads through one method, so muting is overriding that method
7
+ * rather than putting the terminal in raw mode and reading bytes.
8
+ */
9
+ export declare function typedInSilence(prompt: string, out: NodeJS.WritableStream): Promise<string>;
10
+ /** One line typed in the open: an org, an email — anything that is not a secret. */
11
+ export declare function typedAloud(prompt: string, out: NodeJS.WritableStream): Promise<string>;
12
+ /** Whether anybody is at this terminal. With nobody, a prompt returns "" the instant it is made,
13
+ * and a verb that asked has to say THAT rather than "nothing was typed" — which reads as though
14
+ * the person had pressed enter. */
15
+ export declare function nobodyIsTyping(): boolean;
16
+ /** The script's way in: one line, no terminal, nothing asked. `echo $KEY | pinecall keys add …`. */
17
+ export declare function aLineOfStdin(): Promise<string>;
18
+ //# sourceMappingURL=secret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret.d.ts","sourceRoot":"","sources":["../../src/cli/secret.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAI7G;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhG;AAED,oFAAoF;AACpF,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5F;AAED;;mCAEmC;AACnC,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,oGAAoG;AACpG,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAOpD"}
@@ -0,0 +1,41 @@
1
+ /** What this terminal is asked for: a secret with nothing echoed, a word in the open, or a line of stdin. */
2
+ import { createInterface } from "node:readline";
3
+ /**
4
+ * One line typed with nothing echoed.
5
+ *
6
+ * A key on the screen is a key in the scrollback, in a screen share and in whatever recorded the
7
+ * terminal. readline echoes what it reads through one method, so muting is overriding that method
8
+ * rather than putting the terminal in raw mode and reading bytes.
9
+ */
10
+ export async function typedInSilence(prompt, out) {
11
+ const reading = createInterface({ input: process.stdin, output: out, terminal: true });
12
+ reading._writeToOutput = () => { };
13
+ out.write(prompt);
14
+ const secret = await new Promise((typed) => reading.question("", typed));
15
+ reading.close();
16
+ out.write("\n");
17
+ return secret;
18
+ }
19
+ /** One line typed in the open: an org, an email — anything that is not a secret. */
20
+ export async function typedAloud(prompt, out) {
21
+ const reading = createInterface({ input: process.stdin, output: out, terminal: true });
22
+ const said = await new Promise((typed) => reading.question(prompt, typed));
23
+ reading.close();
24
+ return said;
25
+ }
26
+ /** Whether anybody is at this terminal. With nobody, a prompt returns "" the instant it is made,
27
+ * and a verb that asked has to say THAT rather than "nothing was typed" — which reads as though
28
+ * the person had pressed enter. */
29
+ export function nobodyIsTyping() {
30
+ return process.stdin.isTTY !== true;
31
+ }
32
+ /** The script's way in: one line, no terminal, nothing asked. `echo $KEY | pinecall keys add …`. */
33
+ export async function aLineOfStdin() {
34
+ const reading = createInterface({ input: process.stdin });
35
+ for await (const line of reading) {
36
+ reading.close();
37
+ return line;
38
+ }
39
+ return "";
40
+ }
41
+ //# sourceMappingURL=secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret.js","sourceRoot":"","sources":["../../src/cli/secret.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAE7G,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,GAA0B;IAC7E,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,OAA6D,CAAC,cAAc,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACzF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClB,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,GAA0B;IACzE,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACnF,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;mCAEmC;AACnC,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;AACtC,CAAC;AAED,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** `pinecall sessions [call]`: the calls this gateway has run, and what one of them came to. */
2
+ import type { Cost, SessionLine } from "@pinecall/protocol";
3
+ import type { Group } from "./groups.js";
4
+ export declare const group: Group;
5
+ /** What the verb can be told besides the argv: where to print, and which environment. Tests only. */
6
+ export interface Running {
7
+ out?: NodeJS.WritableStream;
8
+ err?: NodeJS.WritableStream;
9
+ env?: NodeJS.ProcessEnv;
10
+ }
11
+ export declare function run(argv: string[], how?: Running): Promise<number>;
12
+ /** One call as a row of the list: what it was, how long, why it ended, what it cost, what came of it. */
13
+ export declare function lineOf(one: SessionLine): string;
14
+ /** The score as a person reads it: the verdict, then one line per judge, the broken ones with why. */
15
+ export declare function scoreLines(score: Record<string, unknown> | undefined): string[];
16
+ export declare function onOneLine(said: string | null | undefined, width?: number): string;
17
+ /** Seconds as a person says them: `2m 14s`, and under a minute just the seconds. */
18
+ export declare function seconds(total: number): string;
19
+ /** What a call cost, in the currency the log priced it in. A call nobody priced says so with a dash. */
20
+ export declare function money(cost: Cost | null | undefined): string;
21
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/cli/sessions.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAIhG,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAqBzC,eAAO,MAAM,KAAK,EAAE,KAYnB,CAAC;AAEF,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,CAoB5E;AA6BD,yGAAyG;AACzG,wBAAgB,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAK/C;AAmBD,sGAAsG;AACtG,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,EAAE,CAwB/E;AAmCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,SAAK,GAAG,MAAM,CAG7E;AAQD,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wGAAwG;AACxG,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAG3D"}