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,347 @@
1
+ /** `pinecall run [agent.tsx]`: the app registered and answering — the process you deploy. */
2
+ import { parseArgs } from "node:util";
3
+ import { Pinecall } from "../client/index.js";
4
+ import { showPrompt } from "../views/render.js";
5
+ import { mount } from "../runtime/connect.js";
6
+ import { showMachine } from "./machine.js";
7
+ import { theDoor } from "./env.js";
8
+ import { callsFrom, describing, theLine } from "./line.js";
9
+ import { connectedLine, doorsOf } from "./connected.js";
10
+ import { cannotTell, ENV_FLAG, notThisWorld, standing } from "./world.js";
11
+ import { orgOf } from "./whoami.js";
12
+ import { callingFrom } from "./profiles.js";
13
+ import { instanceFor, load, mountOptions } from "./load.js";
14
+ import { asked, Refused } from "./testing/gateway.js";
15
+ import { chattingFrom } from "./ui/chatting.js";
16
+ import { devHandler, ownVerbs } from "./ui/doors.js";
17
+ import { driftingFrom } from "./ui/drifting.js";
18
+ import { knowingFrom } from "./ui/knowing.js";
19
+ import { promotingFrom } from "./ui/promoting.js";
20
+ import { rememberingFrom } from "./ui/remembering.js";
21
+ import { reproducingFrom } from "./ui/reproducing.js";
22
+ import { simulatingFrom } from "./ui/simulating.js";
23
+ import { testingFrom } from "./ui/testing.js";
24
+ import { absorb, draw, screenFor } from "./view.js";
25
+ // Ten frames a second. The terminal view is a person watching a conversation, and a person cannot read
26
+ // faster than that; redrawing on every entry would repaint the whole screen several times inside
27
+ // one turn and make the transcript flicker while somebody is trying to read it.
28
+ const FRAME_MS = 100;
29
+ const CLEAR = "";
30
+ const KEYS = "keys: p pause · c clear · e events · s prompt · q quit";
31
+ export const group = {
32
+ purpose: "the app and its doors: the process you deploy",
33
+ usage: `usage: pinecall run [agent.tsx] [--env production] [--ui] [--events] [--show-prompt]
34
+
35
+ With nothing after it: the agent registered on the gateway, one line per log entry on stdout,
36
+ no port bound and no page served: the gateway serves the console, and this prints its URL with a
37
+ one-use code that signs the browser in. It answers that console for this directory.
38
+
39
+ --env <world> say which world you believe this key opens, and be refused if it opens the
40
+ other. Nothing said is the sandbox; a deployment types --env production
41
+ --show-prompt the prompt a fresh instance would produce, then exit. No key, no gateway
42
+ --events one JSON line per log entry instead of the lines, for a pipe
43
+ --ui the full-screen terminal view; keys: p pause · c clear · e events · s prompt · q quit`,
44
+ run,
45
+ };
46
+ /**
47
+ * Load the agent, mount it, connect, and stay up until the process is signalled.
48
+ *
49
+ * This is the verb that goes under pm2 and into a container, and it is the same process in
50
+ * the sandbox and in production: it runs the agent, binds no port and serves no page. What a
51
+ * person looks at is `--ui` in this terminal, or the log over the gateway's API.
52
+ * See docs/decisions/tenant-cli.md.
53
+ */
54
+ export async function run(argv) {
55
+ const { values, positionals } = parseArgs({
56
+ args: argv,
57
+ allowPositionals: true,
58
+ options: {
59
+ "show-prompt": { type: "boolean", default: false },
60
+ events: { type: "boolean", default: false },
61
+ ui: { type: "boolean", default: false },
62
+ ...ENV_FLAG,
63
+ },
64
+ });
65
+ const loaded = await load(positionals[0]);
66
+ // What the `s` key and --show-prompt both print: the prompt the model would read, and under it
67
+ // the stage this instance is in with the tools that stage shows.
68
+ const promptPage = (agent) => `${showPrompt(agent)}\n\n${showMachine(agent)}`;
69
+ // --show-prompt never connects: it is the question "what would the model read at the start of a
70
+ // call", and answering it must not need a gateway, a key or a network.
71
+ if (values["show-prompt"] === true) {
72
+ process.stdout.write(`${promptPage(instanceFor(loaded))}\n`);
73
+ return 0;
74
+ }
75
+ const door = theDoor();
76
+ if (door === undefined)
77
+ return 2;
78
+ // Before the socket and not after it. This used to be asked once the agent was already
79
+ // registered, which makes a line REPORTING where it landed rather than a say in it: the world a
80
+ // key opens is the one thing this verb must not be wrong about, and it is the same one request
81
+ // either way. See docs/decisions/tenant-cli.md.
82
+ let who;
83
+ try {
84
+ who = await standing(door);
85
+ }
86
+ catch (failed) {
87
+ process.stderr.write(`${cannotTell("run", failed)}\n`);
88
+ return 2;
89
+ }
90
+ const elsewhere = notThisWorld("run", who, values.env);
91
+ if (elsewhere !== undefined) {
92
+ process.stderr.write(`${elsewhere}\n`);
93
+ return 2;
94
+ }
95
+ const url = door.url;
96
+ const pc = new Pinecall({ url, apiKey: door.apiKey });
97
+ // Whoever opens the app socket closes it. Left open it keeps this process alive after the
98
+ // signal has been read — a plain `kill` on `pinecall run` did nothing until this landed —
99
+ // and the gateway holds the slug until it shuts.
100
+ // What a console may ask of THIS process through the gateway, because the answer is a file of
101
+ // this directory or the class in it: a written call, the personas and a simulation, the goldens
102
+ // and a suite, the knowledge folder, the memory goldens, a candidate, drift, a reproduction.
103
+ // The lines they print land here, in the terminal that typed `run`, as the verbs would print
104
+ // them. Registered before connect, so the first dev.request finds a handler.
105
+ let chatting;
106
+ try {
107
+ const mounted = mount(loaded.ctor, mountOptions(loaded, pc));
108
+ chatting = chattingFrom(door, mounted.slug, process.stdout);
109
+ mounted.agent.onDev(devHandler(ownVerbs({
110
+ simulating: simulatingFrom(door, mounted.slug, process.stdout),
111
+ testing: testingFrom(door, mounted.slug, process.stdout),
112
+ chatting,
113
+ knowing: knowingFrom(door, mounted.slug),
114
+ remembering: rememberingFrom(door, mounted.slug),
115
+ promoting: promotingFrom(door, mounted.slug, process.stdout),
116
+ drifting: driftingFrom(door),
117
+ reproducing: reproducingFrom(),
118
+ })));
119
+ // --events is a pipe into another program: it prints nothing but its JSON.
120
+ if (values.events === true)
121
+ return await stream(pc, mounted.agent.onAny.bind(mounted.agent));
122
+ if (values.ui !== true) {
123
+ const doors = doorsOf(mounted.options.routes);
124
+ const line = connectedLine({
125
+ slug: mounted.slug,
126
+ url,
127
+ tools: mounted.options.tools?.length ?? 0,
128
+ doors,
129
+ org: orgOf(who),
130
+ env: who.env,
131
+ source: door.source,
132
+ });
133
+ return await plain(pc, mounted.agent.onAny.bind(mounted.agent), mounted.slug, url, line, () => onceUp(door, mounted.slug, rings(mounted.options.routes)));
134
+ }
135
+ // Which call the `s` key renders: the newest one, so the prompt on screen is the prompt of the
136
+ // conversation on screen. With no call up it is a fresh instance — the same page --show-prompt gives.
137
+ let newest;
138
+ mounted.agent.onAny((_event, call) => {
139
+ if (call !== null)
140
+ newest = call.id;
141
+ });
142
+ const watching = {
143
+ slug: mounted.slug,
144
+ url,
145
+ prompt: () => promptPage(instanceOf(mounted, newest) ?? instanceFor(loaded)),
146
+ };
147
+ return await live(pc, mounted.agent.onAny.bind(mounted.agent), watching);
148
+ }
149
+ finally {
150
+ await chatting?.close();
151
+ pc.close();
152
+ }
153
+ }
154
+ // What a gateway answers for a path no router of its declared.
155
+ const NO_SUCH_DOOR = 404;
156
+ // The console is the gateway's page at `/a/<agent>`, and it holds a key of its own — never this
157
+ // process's. So this process mints a one-use code standing for its key (five minutes, once) and
158
+ // prints the URL that carries it; the page spends it for a key of the tab's own. A gateway that
159
+ // refuses the code is one line, and the app runs on.
160
+ /** Where the console of this agent is, with the code that signs the browser in. */
161
+ export function consoleUrl(gateway, slug, code) {
162
+ return `${gateway.replace(/\/$/, "")}/a/${encodeURIComponent(slug)}?login=${encodeURIComponent(code)}`;
163
+ }
164
+ // A 404 at this door means the gateway has no such door, which means it is OLDER than this CLI —
165
+ // a long-running dev gateway is the usual way to meet it, since nothing restarts one for you. A
166
+ // status is not a thing a person can act on, so the sentence says the cause and the fix instead.
167
+ const OLDER_GATEWAY = "this gateway has no login-code door, so it is older than this CLI. Restart it: it serves the console too, and that will be stale as well.";
168
+ /** Why the console line has no URL in it, in words that name the next move. */
169
+ export function whyNoConsole(refused) {
170
+ if (refused instanceof Refused) {
171
+ return refused.status === NO_SUCH_DOOR ? OLDER_GATEWAY : `the gateway answered ${refused.status}`;
172
+ }
173
+ return refused instanceof Error ? refused.message : String(refused);
174
+ }
175
+ // What is only true once the socket is up: the console's URL, and — when the agent answers at a
176
+ // number — whose terminal that number rings in. Both are asked of the gateway, and neither is
177
+ // worth failing the run over: a gateway that refuses says so on its own line and the app runs on.
178
+ async function onceUp(door, slug, rings) {
179
+ const said = [await consoleLine(door, slug)];
180
+ if (rings) {
181
+ // The gateway keeps whose phone is whose beside its live table and not in a row, because it
182
+ // is only meaningful next to a socket. So every connect says it again: a restarted gateway,
183
+ // or one this terminal has never told, learns it here rather than routing the person's own
184
+ // test call into a colleague's terminal.
185
+ await sayWhoCallsFromHere(door);
186
+ said.push(await lineLine(door, slug));
187
+ }
188
+ return said;
189
+ }
190
+ /** Re-send the phone `pinecall line from` remembered for this gateway. Silent: it is upkeep. */
191
+ async function sayWhoCallsFromHere(door) {
192
+ const kept = callingFrom();
193
+ if (kept === undefined)
194
+ return;
195
+ try {
196
+ await callsFrom(door, kept);
197
+ }
198
+ catch {
199
+ // A gateway too old for the door, or a key that opens no `app` here: neither is worth a line
200
+ // in front of a person who did not ask for one. `pinecall line` says the truth when they do.
201
+ }
202
+ }
203
+ /** Whether this agent answers at a number at all: with no number there is no ring to land. */
204
+ export function rings(routes) {
205
+ return (routes ?? []).some((route) => route.number !== null && route.number !== undefined);
206
+ }
207
+ // A number exists once in a world: in production the box answers it, and in the sandbox the org
208
+ // shares one and it rings where it was claimed. Printed here because the moment a second
209
+ // developer starts is the moment they need to know they did NOT take the calls.
210
+ async function lineLine(door, slug) {
211
+ try {
212
+ return `line ${describing(await theLine(door, slug))}`;
213
+ }
214
+ catch (refused) {
215
+ return `line not available: ${whyNoConsole(refused)}`;
216
+ }
217
+ }
218
+ async function consoleLine(door, slug) {
219
+ try {
220
+ const minted = await asked(door, "/v1/login/codes", { method: "POST", body: {} });
221
+ return `console ${consoleUrl(door.url, slug, minted.code)} (opens within five minutes, once)`;
222
+ }
223
+ catch (refused) {
224
+ return `console not available: ${whyNoConsole(refused)}`;
225
+ }
226
+ }
227
+ function instanceOf(mounted, call) {
228
+ return call === undefined ? undefined : mounted.instanceOf(call);
229
+ }
230
+ // --events is the view for a program: one JSON line per entry, nothing else on stdout, so a
231
+ // `pinecall run --events | jq` is a first-class way to watch a call.
232
+ async function stream(pc, listen) {
233
+ listen((event) => process.stdout.write(`${JSON.stringify(event)}\n`));
234
+ await pc.connect();
235
+ await forever();
236
+ return 0;
237
+ }
238
+ // The default: the same lines the view would have grown, appended, with nothing that moves
239
+ // the cursor. It is what a process manager captures and what `docker logs` shows.
240
+ async function plain(pc, listen, slug, url, connected, after) {
241
+ let screen = screenFor(slug, url);
242
+ listen((event) => {
243
+ const before = screen;
244
+ screen = absorb(screen, event);
245
+ for (const line of newLines(before, screen))
246
+ process.stdout.write(`${line}\n`);
247
+ });
248
+ // After the socket is up and not before it: the line says the gateway took this agent, and a
249
+ // gateway that refused it must leave its own refusal as the last thing on the screen.
250
+ await pc.connect();
251
+ process.stdout.write(`${connected}\n`);
252
+ for (const said of await after())
253
+ process.stdout.write(`${said}\n`);
254
+ await forever();
255
+ return 0;
256
+ }
257
+ // What one event added, so the plain log prints the line the view would have grown and not the
258
+ // whole view again. Only the two panels a person follows in a log grow line by line.
259
+ function newLines(before, after) {
260
+ const lines = [];
261
+ for (const line of after.transcript.slice(before.transcript.length))
262
+ lines.push(`${line.mark} ${line.text}`);
263
+ for (const line of after.tools.slice(before.tools.length))
264
+ lines.push(`${line.mark} ${line.text}`);
265
+ for (const metric of after.metrics.slice(before.metrics.length))
266
+ lines.push(`metrics ${metric}`);
267
+ if (after.changed !== before.changed && after.changed.length > 0) {
268
+ lines.push(`state ${after.changed.join(", ")}`);
269
+ }
270
+ return lines;
271
+ }
272
+ /** The full-screen terminal view: absorb every event, and repaint at most ten times a second. */
273
+ async function live(pc, listen, watching) {
274
+ let screen = screenFor(watching.slug, watching.url);
275
+ let paused = false;
276
+ let raw = false;
277
+ let dirty = true;
278
+ let prompt;
279
+ const paint = () => {
280
+ if (paused || !dirty)
281
+ return;
282
+ dirty = false;
283
+ const rows = process.stdout.rows ?? 40;
284
+ const columns = process.stdout.columns ?? 100;
285
+ const page = prompt ?? draw(screen, rows - 3, columns, raw);
286
+ process.stdout.write(`${CLEAR}${page}\n\n${KEYS}\n`);
287
+ };
288
+ listen((event) => {
289
+ screen = absorb(screen, event);
290
+ dirty = true;
291
+ });
292
+ // The repaint starts only once the socket is up. Started before it, a refused connection leaves
293
+ // it running: nothing reaches the clearInterval below, the timer holds the process open, and it
294
+ // wipes the screen ten times a second over the one line that says what went wrong.
295
+ await pc.connect();
296
+ const timer = setInterval(paint, FRAME_MS);
297
+ paint();
298
+ await new Promise((done) => {
299
+ const stop = onKey((key) => {
300
+ if (key === "q" || key === "\u0003") {
301
+ stop();
302
+ done();
303
+ return;
304
+ }
305
+ if (key === "p")
306
+ paused = !paused;
307
+ if (key === "c")
308
+ screen = screenFor(watching.slug, watching.url);
309
+ if (key === "e")
310
+ raw = !raw;
311
+ // s shows the prompt the model would read right now, and the stage that decided its tools:
312
+ // the live instance when a call is up, and a fresh one otherwise, as --show-prompt prints.
313
+ if (key === "s")
314
+ prompt = prompt === undefined ? watching.prompt() : undefined;
315
+ dirty = true;
316
+ });
317
+ });
318
+ clearInterval(timer);
319
+ process.stdout.write(CLEAR);
320
+ return 0;
321
+ }
322
+ // Raw mode is how a single keypress arrives without an enter; a terminal that has no tty (a pipe,
323
+ // CI) simply never sends one, and the view still draws.
324
+ function onKey(handle) {
325
+ const input = process.stdin;
326
+ if (!input.isTTY)
327
+ return () => undefined;
328
+ input.setRawMode(true);
329
+ input.resume();
330
+ input.setEncoding("utf8");
331
+ const listener = (chunk) => handle(chunk);
332
+ input.on("data", listener);
333
+ return () => {
334
+ input.off("data", listener);
335
+ input.setRawMode(false);
336
+ input.pause();
337
+ };
338
+ }
339
+ // The verb ends when the process is signalled, not when a promise settles: it registers an
340
+ // agent and then has nothing left to do but stay reachable.
341
+ function forever() {
342
+ return new Promise((done) => {
343
+ process.once("SIGINT", () => done());
344
+ process.once("SIGTERM", () => done());
345
+ });
346
+ }
347
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /** `pinecall runs promote`: one real call written down as a golden candidate, from its own verdicts. */
2
+ import type { CallScore } from "@pinecall/protocol";
3
+ import { type Door, type Entry } from "../testing/gateway.js";
4
+ import type { Expect, Golden } from "../testing/goldens.js";
5
+ /** Where a call promoted to a golden lands: beside the goldens, in a folder a person reviews. */
6
+ export declare const CANDIDATES = "test/candidates";
7
+ /** What promote was asked for: what to call it, where to put it, and where to cut the call. */
8
+ export interface Promotion {
9
+ name?: string;
10
+ out: string;
11
+ fromSeq: number;
12
+ }
13
+ /** What to say about a call nobody judged: there is no verdict, so there is nothing to derive. */
14
+ export declare const NOT_JUDGED = "was not judged, so there is no verdict to write an expect from";
15
+ /**
16
+ * What a broken consent writes, and what is still the person's to decide. `expect.not` is judged
17
+ * on WORDS and would go green on the very break the call was promoted for; `expect.not_tools` is
18
+ * judged on the log, so the tool that ran unasked goes there. The ORDER rule stays the runtime's.
19
+ */
20
+ export declare const CONSENT_BANS_THE_TOOL = "consent broke, so the tool that ran unasked is in expect.not_tools: keep it only if this call must never call it at all \u2014 the order itself is the runtime's own policy over state and input";
21
+ /**
22
+ * A real call as a golden candidate: the state it was in, the words the caller said from there,
23
+ * and an `expect` derived from what the judges answered at hang-up. It is a CANDIDATE — it carries
24
+ * `promoted_from` and a person edits it before it counts as a golden.
25
+ */
26
+ export declare function promoted(door: Door, call: string, wanted: Promotion, out: NodeJS.WritableStream, err?: NodeJS.WritableStream): Promise<number>;
27
+ /** A promoted call: the file it landed in, the golden itself, and what is still a person's to decide. */
28
+ export interface Written {
29
+ path: string;
30
+ candidate: Golden;
31
+ notes: string[];
32
+ }
33
+ /** The one place a call becomes a file. The verb prints what comes back; the console links to it. */
34
+ export declare function promotedTo(door: Door, call: string, wanted: Promotion): Promise<Written>;
35
+ /** What a promotion prints: where it landed, how much of the call it took, and the notes on it. */
36
+ export declare function linesOf(written: Written, fromSeq: number): string[];
37
+ /**
38
+ * The golden a call reduces to: the state as it stood at `fromSeq`, every caller turn after it,
39
+ * and what the judges said the call owed. `state.changed` carries the whole state, so folding is
40
+ * taking the last one below the cut.
41
+ */
42
+ export declare function candidateOf(call: string, entries: Entry[], fromSeq: number, score: CallScore, name?: string): Golden;
43
+ /**
44
+ * What the call owed, read off its own verdicts. A broken `grounded` and a broken `consent` each
45
+ * have an `expect` field of their own; every other judge is a sentence a person writes, and a
46
+ * candidate says so on stdout rather than inventing a field for it.
47
+ */
48
+ export declare function expectOf(score: CallScore, entries: Entry[]): Expect;
49
+ /** The `call.score` a sealed log ends on, or null when this call carries none at all. */
50
+ export declare function theScoreIn(entries: Entry[]): CallScore | null;
51
+ //# sourceMappingURL=candidate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate.d.ts","sourceRoot":"","sources":["../../../src/cli/runs/candidate.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAKxG,OAAO,KAAK,EAAE,SAAS,EAAY,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAa,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE5D,iGAAiG;AACjG,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C,+FAA+F;AAC/F,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,kGAAkG;AAClG,eAAO,MAAM,UAAU,mEAAmE,CAAC;AAE3F;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,qMAC6J,CAAC;AAEhM;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,CAAC,cAAc,EAC1B,GAAG,GAAE,MAAM,CAAC,cAA+B,GAC1C,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,yGAAyG;AACzG,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,qGAAqG;AACrG,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAY9F;AAED,mGAAmG;AACnG,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,KAAK,EAAE,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAaR;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAUnE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,IAAI,CAG7D"}
@@ -0,0 +1,127 @@
1
+ /** `pinecall runs promote`: one real call written down as a golden candidate, from its own verdicts. */
2
+ import { mkdir, writeFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { entriesOf } from "../testing/gateway.js";
5
+ /** Where a call promoted to a golden lands: beside the goldens, in a folder a person reviews. */
6
+ export const CANDIDATES = "test/candidates";
7
+ /** What to say about a call nobody judged: there is no verdict, so there is nothing to derive. */
8
+ export const NOT_JUDGED = "was not judged, so there is no verdict to write an expect from";
9
+ /**
10
+ * What a broken consent writes, and what is still the person's to decide. `expect.not` is judged
11
+ * on WORDS and would go green on the very break the call was promoted for; `expect.not_tools` is
12
+ * judged on the log, so the tool that ran unasked goes there. The ORDER rule stays the runtime's.
13
+ */
14
+ export const CONSENT_BANS_THE_TOOL = "consent broke, so the tool that ran unasked is in expect.not_tools: keep it only if this call must never call it at all — the order itself is the runtime's own policy over state and input";
15
+ /**
16
+ * A real call as a golden candidate: the state it was in, the words the caller said from there,
17
+ * and an `expect` derived from what the judges answered at hang-up. It is a CANDIDATE — it carries
18
+ * `promoted_from` and a person edits it before it counts as a golden.
19
+ */
20
+ export async function promoted(door, call, wanted, out, err = process.stderr) {
21
+ let written;
22
+ try {
23
+ written = await promotedTo(door, call, wanted);
24
+ }
25
+ catch (refused) {
26
+ err.write(`${refused instanceof Error ? refused.message : String(refused)}\n`);
27
+ return 1;
28
+ }
29
+ out.write(`${linesOf(written, wanted.fromSeq).join("\n")}\n`);
30
+ return 0;
31
+ }
32
+ /** The one place a call becomes a file. The verb prints what comes back; the console links to it. */
33
+ export async function promotedTo(door, call, wanted) {
34
+ const entries = await entriesOf(door, call);
35
+ if (entries.length === 0)
36
+ throw new Error(`no log for call ${call} on this gateway`);
37
+ const score = theScoreIn(entries);
38
+ if (score === null || score.passed === null || score.passed === undefined) {
39
+ throw new Error(`${call} ${NOT_JUDGED}: ${whyNobodyJudged(score)}`);
40
+ }
41
+ const candidate = candidateOf(call, entries, wanted.fromSeq, score, wanted.name);
42
+ await mkdir(wanted.out, { recursive: true });
43
+ const path = join(wanted.out, `${candidate.name}.json`);
44
+ await writeFile(path, `${JSON.stringify(candidate, null, 2)}\n`, "utf8");
45
+ return { path, candidate, notes: notesOn(score, candidate.expect ?? {}) };
46
+ }
47
+ /** What a promotion prints: where it landed, how much of the call it took, and the notes on it. */
48
+ export function linesOf(written, fromSeq) {
49
+ return [`${written.path} ${written.candidate.input.length} caller turn(s) from seq ${fromSeq}`, ...written.notes];
50
+ }
51
+ /**
52
+ * The golden a call reduces to: the state as it stood at `fromSeq`, every caller turn after it,
53
+ * and what the judges said the call owed. `state.changed` carries the whole state, so folding is
54
+ * taking the last one below the cut.
55
+ */
56
+ export function candidateOf(call, entries, fromSeq, score, name) {
57
+ const state = entries
58
+ .filter((entry) => entry.type === "state.changed" && entry.seq <= fromSeq)
59
+ .at(-1)?.data["state"];
60
+ return {
61
+ name: name ?? call,
62
+ promoted_from: call,
63
+ ...(typeof state === "object" && state !== null ? { state: state } : {}),
64
+ input: entries
65
+ .filter((entry) => entry.type === "turn.user" && entry.seq > fromSeq)
66
+ .map((entry) => String(entry.data["text"] ?? "")),
67
+ expect: expectOf(score, entries),
68
+ };
69
+ }
70
+ /**
71
+ * What the call owed, read off its own verdicts. A broken `grounded` and a broken `consent` each
72
+ * have an `expect` field of their own; every other judge is a sentence a person writes, and a
73
+ * candidate says so on stdout rather than inventing a field for it.
74
+ */
75
+ export function expectOf(score, entries) {
76
+ const expect = {};
77
+ for (const judgment of broken(score)) {
78
+ if (judgment.name === "grounded")
79
+ expect.grounded = true;
80
+ if (judgment.name === "consent") {
81
+ const banned = toolsAt(judgment.evidence.seqs, entries);
82
+ if (banned.length > 0)
83
+ expect.not_tools = banned;
84
+ }
85
+ }
86
+ return expect;
87
+ }
88
+ /** The `call.score` a sealed log ends on, or null when this call carries none at all. */
89
+ export function theScoreIn(entries) {
90
+ const found = entries.filter((entry) => entry.type === "call.score").at(-1);
91
+ return found === undefined ? null : found.data;
92
+ }
93
+ // Every judge that answered broken, in the order the entry wrote them.
94
+ function broken(score) {
95
+ return score.judges.filter((judgment) => judgment.verdict === "broken");
96
+ }
97
+ // The tool a judgment's own seqs point at. Consent names two entries — the call and the
98
+ // confirmation that came too late — and only one of them is a `tool.call`, so the type is what
99
+ // picks it rather than the order the sentence happened to write them in.
100
+ function toolsAt(seqs, entries) {
101
+ const named = entries
102
+ .filter((entry) => entry.type === "tool.call" && seqs.includes(entry.seq))
103
+ .map((entry) => String(entry.data["name"] ?? ""));
104
+ return [...new Set(named.filter((name) => name !== ""))];
105
+ }
106
+ // What the person who opens the candidate has to decide, said here so the file stays a golden and
107
+ // never grows a field for prose. A judge no `expect` field can carry is named with its reason and
108
+ // nothing else — and consent says what it DID write, so nobody keeps a ban they never read.
109
+ function notesOn(score, expect) {
110
+ const notes = [];
111
+ for (const judgment of broken(score)) {
112
+ notes.push(` ${judgment.name} broke: ${judgment.reason}`);
113
+ }
114
+ if (expect.not_tools !== undefined)
115
+ notes.push(` ${CONSENT_BANS_THE_TOOL}`);
116
+ if (notes.length === 0)
117
+ notes.push(" nothing broke: write what this call must keep doing");
118
+ return notes;
119
+ }
120
+ // A call with no `call.score` at all was never judged and never said why — an older log, or a box
121
+ // with no judges that predates ring 4. The entry's own sentence is preferred whenever there is one.
122
+ function whyNobodyJudged(score) {
123
+ if (score === null)
124
+ return "its log carries no call.score at all";
125
+ return score.not_judged ?? "the entry says nothing about why";
126
+ }
127
+ //# sourceMappingURL=candidate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate.js","sourceRoot":"","sources":["../../../src/cli/runs/candidate.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAExG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,SAAS,EAAyB,MAAM,uBAAuB,CAAC;AAGzE,iGAAiG;AACjG,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAS5C,kGAAkG;AAClG,MAAM,CAAC,MAAM,UAAU,GAAG,gEAAgE,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,6LAA6L,CAAC;AAEhM;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAU,EACV,IAAY,EACZ,MAAiB,EACjB,GAA0B,EAC1B,GAAG,GAA0B,OAAO,CAAC,MAAM;IAE3C,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC;AASD,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAU,EAAE,IAAY,EAAE,MAAiB;IAC1E,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,UAAU,KAAK,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;IACxD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,OAAO,CAAC,OAAgB,EAAE,OAAe;IACvD,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,4BAA4B,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AACrH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,OAAgB,EAChB,OAAe,EACf,KAAgB,EAChB,IAAa;IAEb,MAAM,KAAK,GAAG,OAAO;SAClB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC;SACzE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,KAAK,EAAE,OAAO;aACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;aACpE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;KACjC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAgB,EAAE,OAAgB;IACzD,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,KAAK,CAAC,IAA6B,CAAC;AAC3E,CAAC;AAED,uEAAuE;AACvE,SAAS,MAAM,CAAC,KAAgB;IAC9B,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,wFAAwF;AACxF,+FAA+F;AAC/F,yEAAyE;AACzE,SAAS,OAAO,CAAC,IAAc,EAAE,OAAgB;IAC/C,MAAM,KAAK,GAAG,OAAO;SAClB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACzE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,kGAAkG;AAClG,kGAAkG;AAClG,4FAA4F;AAC5F,SAAS,OAAO,CAAC,KAAgB,EAAE,MAAc;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,WAAW,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,qBAAqB,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IAC5F,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kGAAkG;AAClG,oGAAoG;AACpG,SAAS,eAAe,CAAC,KAAuB;IAC9C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,sCAAsC,CAAC;IAClE,OAAO,KAAK,CAAC,UAAU,IAAI,kCAAkC,CAAC;AAChE,CAAC"}
@@ -0,0 +1,75 @@
1
+ /** `pinecall runs drift`: each judge's held-rate over two windows of call.score, and the delta. */
2
+ import type { CallScore, SessionLine } from "@pinecall/protocol";
3
+ import { type Door } from "../testing/gateway.js";
4
+ /** How many of an agent's newest calls drift reads. 200 is the sessions door's own ceiling. */
5
+ export declare 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 declare const THRESHOLD = 10;
8
+ /** One finished call and what the judges said about it: the pair every count here is made of. */
9
+ export interface Judged {
10
+ call: string;
11
+ /** When the call ended, unix seconds. It is what puts a call in one window or the other. */
12
+ at: number;
13
+ score: CallScore | null;
14
+ }
15
+ /** One judge's standing in one window: how many verdicts settled, and how many of them held. */
16
+ export interface Rate {
17
+ held: number;
18
+ settled: number;
19
+ percent: number;
20
+ }
21
+ /** One judge across the two windows: where it stood, where it stands, and the points between. */
22
+ export interface JudgeDrift {
23
+ judge: string;
24
+ before: Rate | null;
25
+ now: Rate | null;
26
+ /** Points, now minus before. Null when either window settled nothing: silence is not a delta. */
27
+ delta: number | null;
28
+ }
29
+ /** One broken verdict, as a reader opens the log at it: the call, the judge, the seqs, the why. */
30
+ export interface Broke {
31
+ call: string;
32
+ judge: string;
33
+ seqs: number[];
34
+ reason: string;
35
+ }
36
+ /** The whole reading: a row per judge, what nobody judged, and the newest calls that broke. */
37
+ export interface Drift {
38
+ judges: JudgeDrift[];
39
+ notJudged: {
40
+ now: number;
41
+ before: number;
42
+ };
43
+ broke: Broke[];
44
+ /** The steepest drop any judge took, or null when nothing could be compared at all. */
45
+ worst: number | null;
46
+ }
47
+ /** What drift was asked for: whose calls, over which two windows, and how far a judge may fall. */
48
+ export interface Asked {
49
+ agent: string;
50
+ window: number;
51
+ baseline: number;
52
+ threshold: number;
53
+ limit: number;
54
+ /** Now, in unix seconds. A parameter so a test can stand at a fixed moment. */
55
+ now: number;
56
+ }
57
+ /**
58
+ * The verb: read the agent's calls, split them into the two windows, count the verdicts the log
59
+ * already carries, and fail when a judge fell further than the threshold allows.
60
+ */
61
+ export declare function drifted(door: Door, asked: Asked, out: NodeJS.WritableStream): Promise<number>;
62
+ /** The two windows read and counted. Both doors — the verb and the console's — come through here. */
63
+ export declare function theDrift(door: Door, asked: Asked): Promise<Drift>;
64
+ /** The calls that ended inside a window, newest first. A live call has not been judged yet. */
65
+ export declare function finishedBetween(sessions: SessionLine[], from: number, to: number): SessionLine[];
66
+ /**
67
+ * Each judge's held-rate in each window and the points between them. Nothing here is computed that
68
+ * the log does not carry: a held-rate is a count of the verdicts written into `call.score`.
69
+ */
70
+ export declare function driftOf(now: Judged[], before: Judged[]): Drift;
71
+ /** The reading as a person gets it: the two windows on top, a row per judge, then what broke. */
72
+ export declare function linesOf(asked: Asked, drift: Drift): string[];
73
+ /** A window as a person writes one: `90m`, `24h`, `7d`. Null when it is not one of those. */
74
+ export declare function secondsOf(said: string): number | null;
75
+ //# sourceMappingURL=drift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../../src/cli/runs/drift.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAA0B,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG1E,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,kGAAkG;AAClG,eAAO,MAAM,SAAS,KAAK,CAAC;AAK5B,iGAAiG;AACjG,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAED,gGAAgG;AAChG,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iGAAiG;AACjG,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;IACjB,iGAAiG;IACjG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,mGAAmG;AACnG,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+FAA+F;AAC/F,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,uFAAuF;IACvF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,mGAAmG;AACnG,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAInG;AAED,qGAAqG;AACrG,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAMvE;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,EAAE,CAKhG;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAW9D;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAc5D;AA8ED,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrD"}