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,17 @@
1
+ /** Every group of `pinecall <group>`: what it is for, and whether this tree has written it yet. */
2
+ /** What a group module owes the dispatcher: a one-line purpose and something that runs. */
3
+ export interface Group {
4
+ purpose: string;
5
+ /** What `pinecall <group> --help` prints under the purpose: the flags this group takes. */
6
+ usage?: string;
7
+ run(argv: string[]): Promise<number> | number;
8
+ }
9
+ /** The page `pinecall <group> --help` prints: what the group is for, and what it takes. */
10
+ export declare function helpFor(name: string, group: Group): string;
11
+ /** What each group the design declares is for, for the ones this tree has not written yet. */
12
+ export declare const PLANNED: Record<string, string>;
13
+ /** The line a planned group prints instead of doing anything: the verb, and what it will be. */
14
+ export declare function notBuiltYet(name: string, purpose: string): string;
15
+ /** A planned group as a runnable one: it says what it will be and leaves with a zero. */
16
+ export declare function plannedGroup(name: string, purpose: string, out: NodeJS.WritableStream): Group;
17
+ //# sourceMappingURL=groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/cli/groups.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,2FAA2F;AAC3F,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAC/C;AAED,2FAA2F;AAC3F,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAI1D;AAMD,8FAA8F;AAC9F,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAS1C,CAAC;AAEF,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,KAAK,CAQ7F"}
@@ -0,0 +1,38 @@
1
+ /** Every group of `pinecall <group>`: what it is for, and whether this tree has written it yet. */
2
+ /** The page `pinecall <group> --help` prints: what the group is for, and what it takes. */
3
+ export function helpFor(name, group) {
4
+ const said = [`pinecall ${name} — ${group.purpose}`];
5
+ if (group.usage !== undefined)
6
+ said.push("", group.usage.trimEnd());
7
+ return `${said.join("\n")}\n`;
8
+ }
9
+ // The design lists every verb of the tenant's CLI. Declaring the whole list here — not only what
10
+ // works — is the point: a person who types `pinecall supervise` is told what supervise WILL be
11
+ // instead of "unknown command", and this table is the one place that says which half of the CLI
12
+ // is still a design. A verb leaves it in the commit that writes it.
13
+ /** What each group the design declares is for, for the ones this tree has not written yet. */
14
+ export const PLANNED = {
15
+ new: "scaffold an app: agent.tsx, knowledge, lib, test, .env",
16
+ g: "generate a tool, a component, a golden, a persona, a channel",
17
+ observe: "the agent log as it happens, with a persistent cursor",
18
+ costs: "what the calls cost, by agent, model or channel",
19
+ call: "the agent dials a number, for real",
20
+ tokens: "mint a browser token for a web call",
21
+ agents: "list | show the agents this org has registered",
22
+ deploy: "put this app on a box and keep it there",
23
+ };
24
+ /** The line a planned group prints instead of doing anything: the verb, and what it will be. */
25
+ export function notBuiltYet(name, purpose) {
26
+ return `${name} is not built yet: ${purpose}`;
27
+ }
28
+ /** A planned group as a runnable one: it says what it will be and leaves with a zero. */
29
+ export function plannedGroup(name, purpose, out) {
30
+ return {
31
+ purpose,
32
+ run() {
33
+ out.write(`${notBuiltYet(name, purpose)}\n`);
34
+ return 0;
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/cli/groups.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAUnG,2FAA2F;AAC3F,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAY;IAChD,MAAM,IAAI,GAAG,CAAC,YAAY,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,CAAC;AAED,iGAAiG;AACjG,+FAA+F;AAC/F,gGAAgG;AAChG,oEAAoE;AACpE,8FAA8F;AAC9F,MAAM,CAAC,MAAM,OAAO,GAA2B;IAC7C,GAAG,EAAE,wDAAwD;IAC7D,CAAC,EAAE,8DAA8D;IACjE,OAAO,EAAE,uDAAuD;IAChE,KAAK,EAAE,iDAAiD;IACxD,IAAI,EAAE,oCAAoC;IAC1C,MAAM,EAAE,qCAAqC;IAC7C,MAAM,EAAE,gDAAgD;IACxD,MAAM,EAAE,yCAAyC;CAClD,CAAC;AAEF,gGAAgG;AAChG,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAe;IACvD,OAAO,GAAG,IAAI,sBAAsB,OAAO,EAAE,CAAC;AAChD,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAe,EAAE,GAA0B;IACpF,OAAO;QACL,OAAO;QACP,GAAG;YACD,GAAG,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,CAAC;QACX,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /** `pinecall <group> [args]`: the tenant's CLI. One module per group, one purpose line each. */
3
+ import { type Group } from "./groups.js";
4
+ /** Everything `pinecall` answers to, built and planned alike, in the order help prints them. */
5
+ export declare function groupNames(): string[];
6
+ /** The ones that are written: what a person may actually run, and what owes a help page. */
7
+ export declare function builtNames(): string[];
8
+ /**
9
+ * Run one invocation. The group owns its own flags — this file only picks which module reads them,
10
+ * so a new group is one import and one line, never a branch inside a growing parser.
11
+ */
12
+ export declare function main(argv: string[], out?: NodeJS.WritableStream, err?: NodeJS.WritableStream): Promise<number>;
13
+ export declare function groupFor(name: string, out?: NodeJS.WritableStream): Promise<Group | undefined>;
14
+ /** The whole CLI on one screen: a CLI this small can show every group rather than one usage line. */
15
+ export declare function usage(): string;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,gGAAgG;AAKhG,OAAO,EAAkC,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAQzE,gGAAgG;AAChG,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED,4FAA4F;AAC5F,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED;;;GAGG;AACH,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,GAAE,MAAM,CAAC,cAA+B,EAC3C,GAAG,GAAE,MAAM,CAAC,cAA+B,GAC1C,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAID,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,cAA+B,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAgCpH;AAED,qGAAqG;AACrG,wBAAgB,KAAK,IAAI,MAAM,CAkC9B"}
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env node
2
+ /** `pinecall <group> [args]`: the tenant's CLI. One module per group, one purpose line each. */
3
+ import { realpathSync } from "node:fs";
4
+ import { pathToFileURL } from "node:url";
5
+ import { helpFor, PLANNED, plannedGroup } from "./groups.js";
6
+ import { withoutTheProfileFlag } from "./profiles.js";
7
+ // The order this table is written is the order the help prints: run and chat first, because
8
+ // they are what a person types on the first day, and the planned groups after, in the design's
9
+ // order. run is rails server and chat is rails console — see docs/decisions/tenant-cli.md.
10
+ const BUILT = ["run", "chat", "prompt", "test", "simulate", "eval", "sessions", "runs", "pipeline", "line", "numbers", "personas", "knowledge", "memory", "remember", "supervise", "keys", "providers", "callbacks", "signup", "login", "whoami", "config", "use"];
11
+ /** Everything `pinecall` answers to, built and planned alike, in the order help prints them. */
12
+ export function groupNames() {
13
+ return [...BUILT, ...Object.keys(PLANNED)];
14
+ }
15
+ /** The ones that are written: what a person may actually run, and what owes a help page. */
16
+ export function builtNames() {
17
+ return [...BUILT];
18
+ }
19
+ /**
20
+ * Run one invocation. The group owns its own flags — this file only picks which module reads them,
21
+ * so a new group is one import and one line, never a branch inside a growing parser.
22
+ */
23
+ export async function main(argv, out = process.stdout, err = process.stderr) {
24
+ // `--profile <name>` belongs to no group: it says which gateway this one command goes to, and
25
+ // every group would otherwise have to parse it. Out of argv here, before anybody sees it.
26
+ const [name, ...rest] = withoutTheProfileFlag(argv);
27
+ if (name === undefined || name === "--help" || name === "-h" || name === "help") {
28
+ out.write(usage());
29
+ return name === undefined ? 2 : 0;
30
+ }
31
+ const group = await groupFor(name, out);
32
+ if (group === undefined) {
33
+ err.write(`pinecall: no such group: ${name}\n\n${usage()}`);
34
+ return 2;
35
+ }
36
+ // A group's flags are the group's own, so its help is too: the dispatcher only knows to ask.
37
+ if (rest[0] === "--help" || rest[0] === "-h") {
38
+ out.write(helpFor(name, group));
39
+ return 0;
40
+ }
41
+ // What a verb throws is an answer, not a crash: a gateway that refused the socket, a key the org
42
+ // does not have, an app file that does not compile. One line with the message, and the exit code
43
+ // says it failed — a node stack trace on stderr tells the person nothing they can act on. The
44
+ // message is read here rather than through the sdk's `asError`, so that importing this file
45
+ // still costs no websocket client: `pinecall prompt` must pay for nothing it does not use.
46
+ try {
47
+ return await group.run(rest);
48
+ }
49
+ catch (failed) {
50
+ err.write(`pinecall: ${failed instanceof Error ? failed.message : String(failed)}\n`);
51
+ return 1;
52
+ }
53
+ }
54
+ // A built group is imported only when it is asked for: `pinecall prompt` must not pay for the
55
+ // websocket client that `run` needs, and a stub must not pay for anything at all.
56
+ export async function groupFor(name, out = process.stdout) {
57
+ if (name === "run")
58
+ return (await import("./run.js")).group;
59
+ if (name === "chat")
60
+ return (await import("./chat.js")).group;
61
+ if (name === "prompt")
62
+ return (await import("./prompt.js")).group;
63
+ if (name === "test")
64
+ return (await import("./test.js")).group;
65
+ if (name === "simulate")
66
+ return (await import("./simulate.js")).group;
67
+ if (name === "eval")
68
+ return (await import("./eval.js")).group;
69
+ if (name === "runs")
70
+ return (await import("./runs/index.js")).group;
71
+ if (name === "pipeline")
72
+ return (await import("./pipeline.js")).group;
73
+ if (name === "line")
74
+ return (await import("./line.js")).group;
75
+ if (name === "personas")
76
+ return (await import("./personas.js")).group;
77
+ if (name === "knowledge")
78
+ return (await import("./knowledge.js")).group;
79
+ if (name === "memory")
80
+ return (await import("./memory.js")).group;
81
+ if (name === "remember")
82
+ return (await import("./remember.js")).group;
83
+ if (name === "supervise")
84
+ return (await import("./supervise.js")).group;
85
+ if (name === "sessions")
86
+ return (await import("./sessions.js")).group;
87
+ if (name === "keys")
88
+ return (await import("./keys.js")).group;
89
+ if (name === "numbers")
90
+ return (await import("./numbers.js")).group;
91
+ if (name === "providers")
92
+ return (await import("./providers.js")).group;
93
+ if (name === "callbacks")
94
+ return (await import("./callbacks.js")).group;
95
+ if (name === "signup")
96
+ return (await import("./signup.js")).group;
97
+ if (name === "login")
98
+ return (await import("./login.js")).group;
99
+ if (name === "whoami")
100
+ return (await import("./whoami.js")).group;
101
+ if (name === "config")
102
+ return (await import("./config.js")).group;
103
+ // The same module under the word a person reaches for. `use` is `config <name>` and nothing
104
+ // else — two verbs would be two places deciding what a profile is.
105
+ if (name === "use") {
106
+ const config = await import("./config.js");
107
+ return { ...config.group, run: config.use };
108
+ }
109
+ const planned = PLANNED[name];
110
+ return planned === undefined ? undefined : plannedGroup(name, planned, out);
111
+ }
112
+ /** The whole CLI on one screen: a CLI this small can show every group rather than one usage line. */
113
+ export function usage() {
114
+ const lines = [
115
+ "usage: pinecall <group> [args]",
116
+ "",
117
+ " run the app and its doors: the process you deploy",
118
+ " chat the app in this terminal's own process, and a prompt against it",
119
+ " prompt the exact prompt a state would produce, offline",
120
+ " test ring 1: the goldens, through the app in this terminal's own process",
121
+ " simulate one persona calls the agent, live, with the checks resolving as they land",
122
+ " eval ring 3: one real call, re-evaluated by the runtime's code checks",
123
+ " sessions list | show a call's log, with what it cost and how it was judged",
124
+ " runs list | show | diff the suites, promote a call, and watch the drift",
125
+ " pipeline what the agent hears, decides and speaks with, and the knobs over it",
126
+ " line whose terminal a call at the org's shared sandbox number rings in",
127
+ " numbers list | import | move | drop the numbers the org answers at",
128
+ " personas list | show | try the synthetic callers in test/personas",
129
+ " knowledge push | list | drop the knowledge base the agent answers from",
130
+ " memory what memory kept about a contact, forget it, and hold recall to a golden",
131
+ " remember the goldens memory.remember is held to: what a call teaches, and what it never keeps",
132
+ " supervise listen in on a live call: whisper, say, take the line, give it back, end",
133
+ " keys issue | list | revoke the API keys this org's machines run on",
134
+ " providers add | rm | list the provider keys this org brought of its own",
135
+ " callbacks the numbers people left when every seat was taken: who to call back",
136
+ " signup make an org on Pinecall's cloud and keep its first key",
137
+ " login sign in to a gateway once; the key is kept as a profile in ~/.pinecall",
138
+ " config the gateways this machine knows, and which one the next verb goes to",
139
+ " use point the next verb at another gateway: `pinecall use box`",
140
+ " whoami which gateway, which org, which world, and where this terminal's key came from",
141
+ "",
142
+ ];
143
+ for (const [name, purpose] of Object.entries(PLANNED)) {
144
+ lines.push(` ${name.padEnd(10)}${purpose} — not built yet`);
145
+ }
146
+ return `${lines.join("\n")}\n`;
147
+ }
148
+ /**
149
+ * Is this file the process? argv[1] is whatever the shell typed — and for `pinecall` that is the
150
+ * bin link a package manager wrote inside node_modules, a symlink into the package, while
151
+ * import.meta.url is the real file it points at. Comparing the two as strings said no, and the CLI
152
+ * exited 0 having done nothing at all. Both sides are resolved before they are compared.
153
+ */
154
+ function isEntry() {
155
+ const entry = process.argv[1];
156
+ if (entry === undefined)
157
+ return false;
158
+ try {
159
+ return import.meta.url === pathToFileURL(realpathSync(entry)).href;
160
+ }
161
+ catch {
162
+ return false;
163
+ }
164
+ }
165
+ // Only when this file is the process, so a test may import main() without the process exiting.
166
+ if (isEntry()) {
167
+ process.exitCode = await main(process.argv.slice(2));
168
+ }
169
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /** `pinecall keys issue | list | revoke`: the API keys this org's machines run on, shown once. */
2
+ import type { Group } from "./groups.js";
3
+ export declare const group: Group;
4
+ /** What the verb can be told besides the argv: where to print, and which environment. */
5
+ export interface Issuing {
6
+ out?: NodeJS.WritableStream;
7
+ err?: NodeJS.WritableStream;
8
+ env?: NodeJS.ProcessEnv;
9
+ }
10
+ /** One row of the listing, as the gateway answers it: the fingerprint, and never the key. */
11
+ interface Listed {
12
+ fingerprint: string;
13
+ label: string | null;
14
+ env: string;
15
+ scopes: string[];
16
+ subject: string | null;
17
+ name: string | null;
18
+ created_at: string;
19
+ revoked_at: string | null;
20
+ }
21
+ /** Read the sub-verb and do it: one key minted, the org's keys listed, or one stopped. */
22
+ export declare function run(argv: string[], how?: Issuing): Promise<number>;
23
+ /** The fingerprint as the listing prints it: enough to tell two keys apart, short enough to read. */
24
+ export declare function shortened(fingerprint: string): string;
25
+ /** One row as a terminal reads it: what it is, where it opens, whose it is, and its standing. */
26
+ export declare function aLine(row: Listed): string;
27
+ export {};
28
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/cli/keys.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAKlG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAsBzC,eAAO,MAAM,KAAK,EAAE,KAkBnB,CAAC;AAEF,yFAAyF;AACzF,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,6FAA6F;AAC7F,UAAU,MAAM;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAWD,0FAA0F;AAC1F,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAgB5E;AA8ED,qGAAqG;AACrG,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErD;AAID,iGAAiG;AACjG,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIzC"}
@@ -0,0 +1,137 @@
1
+ /** `pinecall keys issue | list | revoke`: the API keys this org's machines run on, shown once. */
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 keys issue --label "<what it is for>" [--env production|sandbox] [--scope <scope>]…
7
+ pinecall keys list
8
+ pinecall keys revoke <fingerprint>`;
9
+ // The doors, on this terminal's own key. An org issues its own: the operator's /v1/ops/orgs door
10
+ // is the box's way in and a tenant never holds its key. runtime docs/protocol/gateway-api.md §7.
11
+ const KEYS = "/v1/keys";
12
+ // The one sentence that matters here. It is printed under every key issued, because the table
13
+ // keeps the sha256 and no door, here or anywhere, reads one back.
14
+ const PRINTED_ONCE = "copy it now: the gateway keeps the fingerprint, and the key is never shown again";
15
+ // What a key with no label is in the listing. The column is still a column.
16
+ const NO_LABEL = "—";
17
+ const REVOKED = "revoked";
18
+ const LIVE = "live";
19
+ export const group = {
20
+ purpose: "issue | list | revoke the API keys this org's machines run on",
21
+ usage: `${USAGE}
22
+
23
+ A key issued here is a MACHINE's: a server, a CI job, a box. It names nobody — people get
24
+ keys by logging in — and it holds \`app\` in production unless --scope says otherwise, which
25
+ is the shape a deployment has. Your own key does not hold \`app\` in production: a deployed
26
+ agent is held by the process somebody put on a box, not by whoever is logged in.
27
+
28
+ So this is the last step before a deploy: issue one, put it in the box's environment as
29
+ \`pinecall login --key-stdin\`, and that \`pinecall run\` is the one that answers your numbers.
30
+
31
+ issue prints the key once and never again. list prints fingerprints, labels, worlds, whose
32
+ each is and whether it is revoked — never a key. revoke takes a fingerprint as list prints it:
33
+ the first twelve characters, or more of them when two keys share those. The row and its history
34
+ stay, so the calls it wrote stay readable. A key may not issue a scope
35
+ it does not itself open.`,
36
+ run,
37
+ };
38
+ /** Read the sub-verb and do it: one key minted, the org's keys listed, or one stopped. */
39
+ export async function run(argv, how = {}) {
40
+ const out = how.out ?? process.stdout;
41
+ const err = how.err ?? process.stderr;
42
+ const verb = argv[0];
43
+ const door = theDoor(how.env ?? process.env, err);
44
+ if (door === undefined)
45
+ return 1;
46
+ try {
47
+ if (verb === "issue")
48
+ return await issue(argv.slice(1), door, out, err);
49
+ if (verb === "list")
50
+ return await list(door, out);
51
+ if (verb === "revoke")
52
+ return await revoke(argv[1], door, out, err);
53
+ }
54
+ catch (refused) {
55
+ err.write(`${refusal(refused)}\n`);
56
+ return 1;
57
+ }
58
+ err.write(`${USAGE}\n`);
59
+ return 2;
60
+ }
61
+ /** Mint one, print it once, and say what it opens — so the next paste is into the right box. */
62
+ async function issue(argv, door, out, err) {
63
+ const { values } = parseArgs({
64
+ args: argv,
65
+ options: {
66
+ label: { type: "string" },
67
+ env: { type: "string" },
68
+ scope: { type: "string", multiple: true },
69
+ },
70
+ });
71
+ if (values.label === undefined) {
72
+ err.write(`${USAGE}\n`);
73
+ err.write("missing: --label, because a key you can tell apart is a key you will revoke\n");
74
+ return 2;
75
+ }
76
+ const body = { label: values.label };
77
+ if (values.env !== undefined)
78
+ body["env"] = values.env;
79
+ if (values.scope !== undefined)
80
+ body["scopes"] = values.scope;
81
+ const made = await asked(door, KEYS, { method: "POST", body });
82
+ out.write(`${made.key}\n`);
83
+ out.write(` ${made.env} · ${made.label ?? NO_LABEL} · ${made.scopes.join(" · ")}\n`);
84
+ out.write(` ${PRINTED_ONCE}\n`);
85
+ return 0;
86
+ }
87
+ /** Every key of the org, oldest first, as fingerprints — the word `revoke` takes. */
88
+ async function list(door, out) {
89
+ const rows = await asked(door, KEYS);
90
+ if (rows.length === 0) {
91
+ out.write("no key of this org: `pinecall keys issue --label \"…\"` mints the first\n");
92
+ return 0;
93
+ }
94
+ for (const row of rows)
95
+ out.write(`${aLine(row)}\n`);
96
+ return 0;
97
+ }
98
+ // The listing prints the first twelve characters, because a full sha256 is unreadable in a
99
+ // column — so the word a person copies off the screen is NOT the word the door takes, and
100
+ // `pinecall keys revoke <what list printed>` answered 404 for every key there was. The door stays
101
+ // strict, and this resolves what was typed against the org's own rows before it knocks.
102
+ const NO_SUCH_FINGERPRINT = "no key of this org begins with {said}: `pinecall keys list` prints them";
103
+ const TWO_KEYS = "{said} names more than one key: {which}";
104
+ /** Stop one key. A fingerprint that is not this org's is the 404 a stranger's is. */
105
+ async function revoke(said, door, out, err) {
106
+ if (said === undefined) {
107
+ err.write(`${USAGE}\n`);
108
+ return 2;
109
+ }
110
+ const rows = await asked(door, KEYS);
111
+ const found = rows.filter((row) => row.fingerprint.startsWith(said));
112
+ if (found.length === 0) {
113
+ err.write(`${NO_SUCH_FINGERPRINT.replace("{said}", said)}\n`);
114
+ return 1;
115
+ }
116
+ if (found.length > 1) {
117
+ const which = found.map((row) => shortened(row.fingerprint)).join(" · ");
118
+ err.write(`${TWO_KEYS.replace("{said}", said).replace("{which}", which)}\n`);
119
+ return 1;
120
+ }
121
+ const whole = found[0].fingerprint;
122
+ await asked(door, `${KEYS}/${encodeURIComponent(whole)}/revoke`, { method: "POST" });
123
+ out.write(`revoked ${shortened(whole)}\n`);
124
+ return 0;
125
+ }
126
+ /** The fingerprint as the listing prints it: enough to tell two keys apart, short enough to read. */
127
+ export function shortened(fingerprint) {
128
+ return fingerprint.slice(0, FINGERPRINT_CHARS);
129
+ }
130
+ const FINGERPRINT_CHARS = 12;
131
+ /** One row as a terminal reads it: what it is, where it opens, whose it is, and its standing. */
132
+ export function aLine(row) {
133
+ const whose = row.name ?? (row.subject === null ? "a machine" : row.subject);
134
+ const standing = row.revoked_at === null ? LIVE : REVOKED;
135
+ return `${shortened(row.fingerprint)} ${row.env.padEnd(11)} ${(row.label ?? NO_LABEL).padEnd(20)} ${whose.padEnd(14)} ${standing}`;
136
+ }
137
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/cli/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /** `pinecall knowledge push | list | drop | eval`: the base the agent answers from, and what a golden says of it. */
2
+ import type { KnowledgeFile, KnowledgePushed, KnowledgeScore } from "@pinecall/protocol";
3
+ import type { Group } from "./groups.js";
4
+ import { type Door } from "./testing/gateway.js";
5
+ /** Where a base is refused before a byte is sent: the three sentences both doors say. */
6
+ export declare const NO_DIRECTORY: (directory: string) => string;
7
+ export declare const NO_MARKDOWN: (directory: string) => string;
8
+ export declare const NO_GOLDEN: (golden: string) => string;
9
+ export declare const AN_EMPTY_GOLDEN: (golden: string) => string;
10
+ export declare const DEFAULT_GOLDEN = "knowledge/golden.json";
11
+ export declare const DEFAULT_DIR = "knowledge/docs";
12
+ export declare const group: Group;
13
+ /** What the verb can be told besides the argv: where to print, and which environment. Tests only. */
14
+ export interface Pushing {
15
+ out?: NodeJS.WritableStream;
16
+ err?: NodeJS.WritableStream;
17
+ env?: NodeJS.ProcessEnv;
18
+ }
19
+ /** Read the sub-verb and do it: the folder to the gateway, the list off it, or one base gone. */
20
+ export declare function run(argv: string[], how?: Pushing): Promise<number>;
21
+ /** The folder, sent whole: the base is replaced and never merged. Both doors push through here. */
22
+ export declare function pushedTo(door: Door, base: string, files: KnowledgeFile[]): Promise<KnowledgePushed>;
23
+ /** Every question of a golden asked of the base, and the two figures code computed from it. */
24
+ export declare function scoredOn(door: Door, base: string, questions: unknown[], k: number | undefined): Promise<KnowledgeScore>;
25
+ /** The questions a golden file holds, or nothing at all when it holds none. */
26
+ export declare function theQuestionsIn(golden: string): unknown[] | null;
27
+ /** What a golden prints: the two figures on one line, then a line per question the base missed. */
28
+ export declare function scoreLines(score: KnowledgeScore): string[];
29
+ /** The one line a push prints: the base, what was sent, what it became, and how long it took. */
30
+ export declare function pushedLine(pushed: KnowledgePushed, files: number): string;
31
+ /** Every *.md under a directory, its subdirectories included, as the wire carries a file: its path relative to the directory, and its text. */
32
+ export declare function markdownUnder(directory: string): KnowledgeFile[];
33
+ /** Unix seconds as a person reads them: the day and the minute, in UTC, no fractions. */
34
+ export declare function dayAndTime(seconds: number): string;
35
+ //# sourceMappingURL=knowledge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/cli/knowledge.ts"],"names":[],"mappings":"AAAA,qHAAqH;AAMrH,OAAO,KAAK,EAAE,aAAa,EAAiB,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIxG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAQxD,yFAAyF;AACzF,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,MAAkD,CAAC;AACpG,eAAO,MAAM,WAAW,cAAe,MAAM,KAAG,MAAuD,CAAC;AACxG,eAAO,MAAM,SAAS,WAAY,MAAM,KAAG,MAAkE,CAAC;AAC9G,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,MAC2B,CAAC;AAI7E,eAAO,MAAM,cAAc,0BAA0B,CAAC;AAItD,eAAO,MAAM,WAAW,mBAAmB,CAAC;AAE5C,eAAO,MAAM,KAAK,EAAE,KAcnB,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,iGAAiG;AACjG,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB5E;AA2ED,mGAAmG;AACnG,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAKzG;AAED,+FAA+F;AAC/F,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,EAAE,EACpB,CAAC,EAAE,MAAM,GAAG,SAAS,GACpB,OAAO,CAAC,cAAc,CAAC,CAKzB;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,CAG/D;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,EAAE,CAW1D;AAED,iGAAiG;AACjG,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,+IAA+I;AAC/I,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE,CAQhE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD"}