pinecall 0.4.0 → 0.5.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 (203) hide show
  1. package/README.md +14 -6
  2. package/dist/cli/agent-files.d.ts +6 -0
  3. package/dist/cli/agent-files.d.ts.map +1 -0
  4. package/dist/cli/agent-files.js +40 -0
  5. package/dist/cli/agent-files.js.map +1 -0
  6. package/dist/cli/agent-lines.d.ts +23 -0
  7. package/dist/cli/agent-lines.d.ts.map +1 -0
  8. package/dist/cli/agent-lines.js +109 -0
  9. package/dist/cli/agent-lines.js.map +1 -0
  10. package/dist/cli/agent-versions.d.ts +12 -0
  11. package/dist/cli/agent-versions.d.ts.map +1 -0
  12. package/dist/cli/agent-versions.js +70 -0
  13. package/dist/cli/agent-versions.js.map +1 -0
  14. package/dist/cli/agent.d.ts +77 -0
  15. package/dist/cli/agent.d.ts.map +1 -0
  16. package/dist/cli/agent.js +192 -0
  17. package/dist/cli/agent.js.map +1 -0
  18. package/dist/cli/chat.d.ts +2 -2
  19. package/dist/cli/chat.d.ts.map +1 -1
  20. package/dist/cli/chat.js +12 -24
  21. package/dist/cli/chat.js.map +1 -1
  22. package/dist/cli/client-for.d.ts +6 -0
  23. package/dist/cli/client-for.d.ts.map +1 -0
  24. package/dist/cli/client-for.js +7 -0
  25. package/dist/cli/client-for.js.map +1 -0
  26. package/dist/cli/connected.d.ts +4 -4
  27. package/dist/cli/connected.d.ts.map +1 -1
  28. package/dist/cli/connected.js +2 -2
  29. package/dist/cli/connected.js.map +1 -1
  30. package/dist/cli/dotenv.d.ts +24 -0
  31. package/dist/cli/dotenv.d.ts.map +1 -0
  32. package/dist/cli/dotenv.js +69 -0
  33. package/dist/cli/dotenv.js.map +1 -0
  34. package/dist/cli/env.d.ts +21 -37
  35. package/dist/cli/env.d.ts.map +1 -1
  36. package/dist/cli/env.js +35 -68
  37. package/dist/cli/env.js.map +1 -1
  38. package/dist/cli/eval.d.ts +2 -1
  39. package/dist/cli/eval.d.ts.map +1 -1
  40. package/dist/cli/eval.js +5 -4
  41. package/dist/cli/eval.js.map +1 -1
  42. package/dist/cli/groups.d.ts.map +1 -1
  43. package/dist/cli/groups.js +0 -1
  44. package/dist/cli/groups.js.map +1 -1
  45. package/dist/cli/index.d.ts.map +1 -1
  46. package/dist/cli/index.js +25 -30
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/lexicon.d.ts +14 -0
  49. package/dist/cli/lexicon.d.ts.map +1 -0
  50. package/dist/cli/lexicon.js +123 -0
  51. package/dist/cli/lexicon.js.map +1 -0
  52. package/dist/cli/line.js +6 -6
  53. package/dist/cli/line.js.map +1 -1
  54. package/dist/cli/linking.d.ts +13 -0
  55. package/dist/cli/linking.d.ts.map +1 -0
  56. package/dist/cli/linking.js +103 -0
  57. package/dist/cli/linking.js.map +1 -0
  58. package/dist/cli/load.js +1 -1
  59. package/dist/cli/load.js.map +1 -1
  60. package/dist/cli/login.d.ts +5 -11
  61. package/dist/cli/login.d.ts.map +1 -1
  62. package/dist/cli/login.js +31 -140
  63. package/dist/cli/login.js.map +1 -1
  64. package/dist/cli/memory-policy.d.ts +9 -0
  65. package/dist/cli/memory-policy.d.ts.map +1 -0
  66. package/dist/cli/memory-policy.js +79 -0
  67. package/dist/cli/memory-policy.js.map +1 -0
  68. package/dist/cli/memory.d.ts.map +1 -1
  69. package/dist/cli/memory.js +9 -1
  70. package/dist/cli/memory.js.map +1 -1
  71. package/dist/cli/pipeline.d.ts +2 -0
  72. package/dist/cli/pipeline.d.ts.map +1 -1
  73. package/dist/cli/pipeline.js +18 -76
  74. package/dist/cli/pipeline.js.map +1 -1
  75. package/dist/cli/serve/server.d.ts +1 -1
  76. package/dist/cli/serve/server.d.ts.map +1 -1
  77. package/dist/cli/serve/server.js +3 -2
  78. package/dist/cli/serve/server.js.map +1 -1
  79. package/dist/cli/serve/sidecar.js +1 -1
  80. package/dist/cli/serve/sidecar.js.map +1 -1
  81. package/dist/cli/serve.d.ts +1 -1
  82. package/dist/cli/serve.d.ts.map +1 -1
  83. package/dist/cli/serve.js +5 -5
  84. package/dist/cli/serve.js.map +1 -1
  85. package/dist/cli/signed-in.d.ts +36 -0
  86. package/dist/cli/signed-in.d.ts.map +1 -0
  87. package/dist/cli/signed-in.js +60 -0
  88. package/dist/cli/signed-in.js.map +1 -0
  89. package/dist/cli/simulate.d.ts.map +1 -1
  90. package/dist/cli/simulate.js +7 -6
  91. package/dist/cli/simulate.js.map +1 -1
  92. package/dist/cli/{run-console.d.ts → start-console.d.ts} +2 -2
  93. package/dist/cli/start-console.d.ts.map +1 -0
  94. package/dist/cli/{run-console.js → start-console.js} +3 -3
  95. package/dist/cli/start-console.js.map +1 -0
  96. package/dist/cli/{run-screens.d.ts → start-screens.d.ts} +2 -2
  97. package/dist/cli/start-screens.d.ts.map +1 -0
  98. package/dist/cli/{run-screens.js → start-screens.js} +3 -3
  99. package/dist/cli/start-screens.js.map +1 -0
  100. package/dist/cli/{run.d.ts → start.d.ts} +3 -3
  101. package/dist/cli/start.d.ts.map +1 -0
  102. package/dist/cli/{run.js → start.js} +31 -35
  103. package/dist/cli/start.js.map +1 -0
  104. package/dist/cli/supervise.d.ts +1 -1
  105. package/dist/cli/supervise.d.ts.map +1 -1
  106. package/dist/cli/supervise.js +1 -1
  107. package/dist/cli/supervise.js.map +1 -1
  108. package/dist/cli/testing/gateway.d.ts +3 -0
  109. package/dist/cli/testing/gateway.d.ts.map +1 -1
  110. package/dist/cli/testing/gateway.js +2 -4
  111. package/dist/cli/testing/gateway.js.map +1 -1
  112. package/dist/cli/tuned.d.ts +8 -0
  113. package/dist/cli/tuned.d.ts.map +1 -0
  114. package/dist/cli/tuned.js +66 -0
  115. package/dist/cli/tuned.js.map +1 -0
  116. package/dist/cli/ui/chatting.d.ts +1 -1
  117. package/dist/cli/ui/chatting.d.ts.map +1 -1
  118. package/dist/cli/ui/chatting.js +11 -10
  119. package/dist/cli/ui/chatting.js.map +1 -1
  120. package/dist/cli/ui/console/assets/{index-DhcpHPdk.js → index--8qx-Pi4.js} +16 -12
  121. package/dist/cli/ui/console/assets/index-DmN15Axn.css +1 -0
  122. package/dist/cli/ui/console/index.html +2 -2
  123. package/dist/cli/ui/doors.d.ts +2 -2
  124. package/dist/cli/ui/doors.d.ts.map +1 -1
  125. package/dist/cli/ui/doors.js +2 -2
  126. package/dist/cli/ui/doors.js.map +1 -1
  127. package/dist/cli/ui/drifting.d.ts +1 -1
  128. package/dist/cli/ui/drifting.js +1 -1
  129. package/dist/cli/ui/knowing.d.ts +1 -1
  130. package/dist/cli/ui/knowing.js +3 -3
  131. package/dist/cli/ui/knowing.js.map +1 -1
  132. package/dist/cli/ui/promoting.d.ts +1 -1
  133. package/dist/cli/ui/promoting.js +1 -1
  134. package/dist/cli/ui/remembering.d.ts +1 -1
  135. package/dist/cli/ui/remembering.js +3 -3
  136. package/dist/cli/ui/remembering.js.map +1 -1
  137. package/dist/cli/ui/reproducing.d.ts +1 -1
  138. package/dist/cli/ui/reproducing.js +1 -1
  139. package/dist/cli/ui/simulating.d.ts +1 -1
  140. package/dist/cli/ui/simulating.js +4 -4
  141. package/dist/cli/ui/simulating.js.map +1 -1
  142. package/dist/cli/ui/testing.d.ts +1 -1
  143. package/dist/cli/ui/testing.js +3 -3
  144. package/dist/cli/ui/testing.js.map +1 -1
  145. package/dist/cli/whoami.d.ts +6 -2
  146. package/dist/cli/whoami.d.ts.map +1 -1
  147. package/dist/cli/whoami.js +6 -5
  148. package/dist/cli/whoami.js.map +1 -1
  149. package/dist/cli/world.d.ts +14 -24
  150. package/dist/cli/world.d.ts.map +1 -1
  151. package/dist/cli/world.js +21 -36
  152. package/dist/cli/world.js.map +1 -1
  153. package/dist/client/agent.d.ts +1 -1
  154. package/dist/client/agent.js +2 -2
  155. package/dist/client/agent.js.map +1 -1
  156. package/dist/client/client.d.ts +9 -1
  157. package/dist/client/client.d.ts.map +1 -1
  158. package/dist/client/client.js +5 -2
  159. package/dist/client/client.js.map +1 -1
  160. package/dist/client/connection.d.ts +3 -0
  161. package/dist/client/connection.d.ts.map +1 -1
  162. package/dist/client/connection.js +2 -1
  163. package/dist/client/connection.js.map +1 -1
  164. package/dist/client/index.d.ts +1 -0
  165. package/dist/client/index.d.ts.map +1 -1
  166. package/dist/client/observe.d.ts +3 -0
  167. package/dist/client/observe.d.ts.map +1 -1
  168. package/dist/client/observe.js +2 -1
  169. package/dist/client/observe.js.map +1 -1
  170. package/dist/client/signed.d.ts +15 -0
  171. package/dist/client/signed.d.ts.map +1 -0
  172. package/dist/client/signed.js +19 -0
  173. package/dist/client/signed.js.map +1 -0
  174. package/dist/views/render.d.ts +1 -1
  175. package/dist/views/render.js +1 -1
  176. package/package.json +2 -2
  177. package/dist/cli/config.d.ts +0 -16
  178. package/dist/cli/config.d.ts.map +0 -1
  179. package/dist/cli/config.js +0 -125
  180. package/dist/cli/config.js.map +0 -1
  181. package/dist/cli/credentials.d.ts +0 -41
  182. package/dist/cli/credentials.d.ts.map +0 -1
  183. package/dist/cli/credentials.js +0 -98
  184. package/dist/cli/credentials.js.map +0 -1
  185. package/dist/cli/gateway.d.ts +0 -12
  186. package/dist/cli/gateway.d.ts.map +0 -1
  187. package/dist/cli/gateway.js +0 -67
  188. package/dist/cli/gateway.js.map +0 -1
  189. package/dist/cli/keys.d.ts +0 -28
  190. package/dist/cli/keys.d.ts.map +0 -1
  191. package/dist/cli/keys.js +0 -137
  192. package/dist/cli/keys.js.map +0 -1
  193. package/dist/cli/profiles.d.ts +0 -122
  194. package/dist/cli/profiles.d.ts.map +0 -1
  195. package/dist/cli/profiles.js +0 -312
  196. package/dist/cli/profiles.js.map +0 -1
  197. package/dist/cli/run-console.d.ts.map +0 -1
  198. package/dist/cli/run-console.js.map +0 -1
  199. package/dist/cli/run-screens.d.ts.map +0 -1
  200. package/dist/cli/run-screens.js.map +0 -1
  201. package/dist/cli/run.d.ts.map +0 -1
  202. package/dist/cli/run.js.map +0 -1
  203. package/dist/cli/ui/console/assets/index-iylvEP0_.css +0 -1
@@ -1,5 +1,6 @@
1
1
  /** `pinecall eval <call-id>`: ring 3 — one real call, re-evaluated by the runtime's code checks. */
2
2
  import type { Group } from "./groups.js";
3
+ import type { Door } from "./testing/gateway.js";
3
4
  /** One check's answer, as `POST /v1/evals/replay/{call}` writes it: three strings, no nesting. */
4
5
  export interface Verdict {
5
6
  check: string;
@@ -29,7 +30,7 @@ export declare function run(argv: string[], out?: NodeJS.WritableStream): Promis
29
30
  * every turn, which is why the request lives here rather than inside this verb's own argument
30
31
  * parsing: one door, one sentence when it refuses.
31
32
  */
32
- export declare function replayed(base: string, apiKey: string, call: string, said: Case): Promise<Answer>;
33
+ export declare function replayed(door: Door, call: string, said: Case): Promise<Answer>;
33
34
  /** The door this verb knocks at: the gateway's HTTP address and the call, nothing in a query. */
34
35
  export declare function replayUrl(base: string, call: string): string;
35
36
  /** The case as a person reads it: the call on top, then a line per check, aligned by name. */
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/cli/eval.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAMpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,kGAAkG;AAClG,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,4FAA4F;AAC5F,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,8FAA8F;AAC9F,MAAM,WAAW,IAAI;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,KAAK,EAAE,KAanB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,cAA+B,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBtG;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAStG;AAED,iGAAiG;AACjG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAQhD"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/cli/eval.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAOpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD,kGAAkG;AAClG,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,4FAA4F;AAC5F,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,8FAA8F;AAC9F,MAAM,WAAW,IAAI;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,KAAK,EAAE,KAanB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAM,CAAC,cAA+B,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBtG;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CASpF;AAED,iGAAiG;AACjG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAQhD"}
package/dist/cli/eval.js CHANGED
@@ -1,6 +1,7 @@
1
1
  /** `pinecall eval <call-id>`: ring 3 — one real call, re-evaluated by the runtime's code checks. */
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { parseArgs } from "node:util";
4
+ import { signed } from "../client/signed.js";
4
5
  import { theDoor } from "./env.js";
5
6
  export const group = {
6
7
  purpose: "ring 3: one real call, re-evaluated",
@@ -36,7 +37,7 @@ export async function run(argv, out = process.stdout) {
36
37
  return 2;
37
38
  let answer;
38
39
  try {
39
- answer = await replayed(door.url, door.apiKey, call, await theCase(values.policy));
40
+ answer = await replayed(door, call, await theCase(values.policy));
40
41
  }
41
42
  catch (refused) {
42
43
  process.stderr.write(`${refused instanceof Error ? refused.message : String(refused)}\n`);
@@ -50,10 +51,10 @@ export async function run(argv, out = process.stdout) {
50
51
  * every turn, which is why the request lives here rather than inside this verb's own argument
51
52
  * parsing: one door, one sentence when it refuses.
52
53
  */
53
- export async function replayed(base, apiKey, call, said) {
54
- const answered = await fetch(replayUrl(base, call), {
54
+ export async function replayed(door, call, said) {
55
+ const answered = await fetch(replayUrl(door.url, call), {
55
56
  method: "POST",
56
- headers: { authorization: `Bearer ${apiKey}`, "content-type": "application/json" },
57
+ headers: { ...signed(door.apiKey, door.world), "content-type": "application/json" },
57
58
  body: JSON.stringify(said),
58
59
  });
59
60
  const body = await answered.text();
@@ -1 +1 @@
1
- {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/cli/eval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/cli/eval.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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,CAQ1C,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"}
@@ -18,7 +18,6 @@ export const PLANNED = {
18
18
  costs: "what the calls cost, by agent, model or channel",
19
19
  call: "the agent dials a number, for real",
20
20
  tokens: "mint a browser token for a web call",
21
- agents: "list | show the agents this org has registered",
22
21
  deploy: "put this app on a box and keep it there",
23
22
  };
24
23
  /** The line a planned group prints instead of doing anything: the verb, and what it will be. */
@@ -1 +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"}
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,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"}
@@ -1 +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,CAiCpH;AAED,qGAAqG;AACrG,wBAAgB,KAAK,IAAI,MAAM,CAmC9B"}
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,CA2BpH;AAED,qGAAqG;AACrG,wBAAgB,KAAK,IAAI,MAAM,CAoC9B"}
package/dist/cli/index.js CHANGED
@@ -3,11 +3,11 @@
3
3
  import { realpathSync } from "node:fs";
4
4
  import { pathToFileURL } from "node:url";
5
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", "serve", "chat", "prompt", "test", "simulate", "eval", "sessions", "runs", "pipeline", "line", "numbers", "personas", "knowledge", "memory", "remember", "supervise", "keys", "providers", "callbacks", "login", "whoami", "gateway", "config", "use"];
6
+ import { withoutTheWorldFlag } from "./world.js";
7
+ // The order this table is written is the order the help prints: link, start and chat first,
8
+ // because they are what a person types on the first day, and the planned groups after, in the
9
+ // design's order. start is rails server and chat is rails console — see docs/decisions/tenant-cli.md.
10
+ const BUILT = ["link", "start", "serve", "chat", "prompt", "test", "simulate", "eval", "sessions", "runs", "agent", "lexicon", "pipeline", "line", "numbers", "personas", "knowledge", "memory", "remember", "supervise", "providers", "callbacks", "login", "whoami"];
11
11
  /** Everything `pinecall` answers to, built and planned alike, in the order help prints them. */
12
12
  export function groupNames() {
13
13
  return [...BUILT, ...Object.keys(PLANNED)];
@@ -21,9 +21,9 @@ export function builtNames() {
21
21
  * so a new group is one import and one line, never a branch inside a growing parser.
22
22
  */
23
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);
24
+ // `--prod` belongs to no group: it says which world this one command runs in, and every group
25
+ // would otherwise have to parse it. Out of argv here, before anybody sees it.
26
+ const [name, ...rest] = withoutTheWorldFlag(argv);
27
27
  if (name === undefined || name === "--help" || name === "-h" || name === "help") {
28
28
  out.write(usage());
29
29
  return name === undefined ? 2 : 0;
@@ -52,10 +52,12 @@ export async function main(argv, out = process.stdout, err = process.stderr) {
52
52
  }
53
53
  }
54
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.
55
+ // websocket client that `start` needs, and a stub must not pay for anything at all.
56
56
  export async function groupFor(name, out = process.stdout) {
57
- if (name === "run")
58
- return (await import("./run.js")).group;
57
+ if (name === "link")
58
+ return (await import("./linking.js")).group;
59
+ if (name === "start")
60
+ return (await import("./start.js")).group;
59
61
  if (name === "serve")
60
62
  return (await import("./serve.js")).group;
61
63
  if (name === "chat")
@@ -70,6 +72,10 @@ export async function groupFor(name, out = process.stdout) {
70
72
  return (await import("./eval.js")).group;
71
73
  if (name === "runs")
72
74
  return (await import("./runs/index.js")).group;
75
+ if (name === "agent")
76
+ return (await import("./agent.js")).group;
77
+ if (name === "lexicon")
78
+ return (await import("./lexicon.js")).group;
73
79
  if (name === "pipeline")
74
80
  return (await import("./pipeline.js")).group;
75
81
  if (name === "line")
@@ -86,8 +92,6 @@ export async function groupFor(name, out = process.stdout) {
86
92
  return (await import("./supervise.js")).group;
87
93
  if (name === "sessions")
88
94
  return (await import("./sessions.js")).group;
89
- if (name === "keys")
90
- return (await import("./keys.js")).group;
91
95
  if (name === "numbers")
92
96
  return (await import("./numbers.js")).group;
93
97
  if (name === "providers")
@@ -96,18 +100,8 @@ export async function groupFor(name, out = process.stdout) {
96
100
  return (await import("./callbacks.js")).group;
97
101
  if (name === "login")
98
102
  return (await import("./login.js")).group;
99
- if (name === "gateway")
100
- return (await import("./gateway.js")).group;
101
103
  if (name === "whoami")
102
104
  return (await import("./whoami.js")).group;
103
- if (name === "config")
104
- return (await import("./config.js")).group;
105
- // The same module under the word a person reaches for. `use` is `config <name>` and nothing
106
- // else — two verbs would be two places deciding what a profile is.
107
- if (name === "use") {
108
- const config = await import("./config.js");
109
- return { ...config.group, run: config.use };
110
- }
111
105
  const planned = PLANNED[name];
112
106
  return planned === undefined ? undefined : plannedGroup(name, planned, out);
113
107
  }
@@ -116,7 +110,8 @@ export function usage() {
116
110
  const lines = [
117
111
  "usage: pinecall <group> [args]",
118
112
  "",
119
- " run the app and its doors: the process you deploy",
113
+ " link this project's folder to one of your orgs: your key, in its .env",
114
+ " start the app and its doors: the process you deploy (--prod for production)",
120
115
  " serve the sandbox's console on this machine: your copies, http://localhost:4100",
121
116
  " chat the app in this terminal's own process, and a prompt against it",
122
117
  " prompt the exact prompt a state would produce, offline",
@@ -125,6 +120,8 @@ export function usage() {
125
120
  " eval ring 3: one real call, re-evaluated by the runtime's code checks",
126
121
  " sessions list | show a call's log, with what it cost and how it was judged",
127
122
  " runs list | show | diff the suites, promote a call, and watch the drift",
123
+ " agent what the org set over the class — yours, the team's, production's — set, history, rollback",
124
+ " lexicon the org's words: how the voice says them and what the ears must know",
128
125
  " pipeline what the agent hears, decides and speaks with, and the knobs over it",
129
126
  " line which phone is yours, and whose terminal anybody else's call rings in",
130
127
  " numbers list | import | move | drop the numbers the org answers at",
@@ -133,14 +130,12 @@ export function usage() {
133
130
  " memory what memory kept about a contact, forget it, and hold recall to a golden",
134
131
  " remember the goldens memory.remember is held to: what a call teaches, and what it never keeps",
135
132
  " supervise listen in on a live call: whisper, say, take the line, give it back, end",
136
- " keys issue | list | revoke the API keys this org's machines run on",
137
133
  " providers add | rm | list the provider keys this org brought of its own",
138
134
  " callbacks the numbers people left when every seat was taken: who to call back",
139
- " login sign in once; the key is kept as a profile in ~/.pinecall",
140
- " gateway which gateway this machine talks to: box.pinecall.io until you point it elsewhere",
141
- " config the gateways this machine knows, and which one the next verb goes to",
142
- " use another org of yours, or its other world: `pinecall use clinica production`",
143
- " whoami which gateway, which org, which world, and where this terminal's key came from",
135
+ " login sign this machine in through a browser; `link` asks for it when it is needed",
136
+ " whoami which gateway, which org, whether you act in production, and where the key came from",
137
+ "",
138
+ " --prod on any verb runs it in production, if your org lets you act there.",
144
139
  "",
145
140
  ];
146
141
  for (const [name, purpose] of Object.entries(PLANNED)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** `pinecall lexicon`: the org's words — how the voice says them, what the ears must know — versioned. */
2
+ import type { LexiconAnswer } from "@pinecall/protocol";
3
+ import type { Group } from "./groups.js";
4
+ export declare const group: Group;
5
+ /** What the verb can be told besides the argv: where to print, and which environment. Tests only. */
6
+ export interface Wording {
7
+ out?: NodeJS.WritableStream;
8
+ err?: NodeJS.WritableStream;
9
+ env?: NodeJS.ProcessEnv;
10
+ }
11
+ export declare function run(argv: string[], how?: Wording): Promise<number>;
12
+ /** The page: what the corner reads, then which version each corner is at. */
13
+ export declare function linesOf(answer: LexiconAnswer): string[];
14
+ //# sourceMappingURL=lexicon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexicon.d.ts","sourceRoot":"","sources":["../../src/cli/lexicon.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAI1G,OAAO,KAAK,EAAE,aAAa,EAA2C,MAAM,oBAAoB,CAAC;AAGjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAezC,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,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C5E;AA6CD,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAavD"}
@@ -0,0 +1,123 @@
1
+ /** `pinecall lexicon`: the org's words — how the voice says them, what the ears must know — versioned. */
2
+ import { parseArgs } from "node:util";
3
+ import { theDoor } from "./env.js";
4
+ import { dayAndTime } from "./knowledge.js";
5
+ import { asked } from "./testing/gateway.js";
6
+ import { refusal } from "./whoami.js";
7
+ const USAGE = [
8
+ "usage: pinecall lexicon [--json]",
9
+ " pinecall lexicon add <word> --say '…' [--team] [--note '…']",
10
+ " pinecall lexicon hear <word> [<word> …] [--team] [--note '…']",
11
+ " pinecall lexicon rm <word> [<word> …] [--team]",
12
+ " pinecall lexicon history [--team]",
13
+ ].join("\n");
14
+ const LEXICON = "/v1/lexicon";
15
+ export const group = {
16
+ purpose: "the org's words: how the voice says them and what the ears must know, shared by every agent",
17
+ usage: `${USAGE}
18
+
19
+ The lexicon is the org's and not one agent's: a brand, a surname, an acronym is the same word
20
+ whichever agent says it, and it is laid over every agent's own says and hears — the org's word
21
+ wins where both say the same one. add says how a word is spoken; hear names the words the ears
22
+ must know; rm takes words out of both. Whole and versioned like the settings: the corner is
23
+ yours (--team: the org's own), and a save over a corner that moved is told so.
24
+
25
+ A supervisor's or a manager's key opens this door: the person who hears a word said wrong forty
26
+ times a day fixes it, without a developer and without a deploy — with --prod, in production,
27
+ when their org lets them act there.`,
28
+ run,
29
+ };
30
+ export async function run(argv, how = {}) {
31
+ const out = how.out ?? process.stdout;
32
+ const err = how.err ?? process.stderr;
33
+ const { values, positionals } = parseArgs({
34
+ args: argv,
35
+ allowPositionals: true,
36
+ options: {
37
+ json: { type: "boolean", default: false },
38
+ team: { type: "boolean", default: false },
39
+ say: { type: "string" },
40
+ note: { type: "string" },
41
+ },
42
+ });
43
+ const door = theDoor(how.env ?? process.env, err);
44
+ if (door === undefined)
45
+ return 2;
46
+ const [verb, ...words] = positionals;
47
+ const team = values.team === true;
48
+ try {
49
+ if (verb === undefined)
50
+ return said(await asked(door, LEXICON), values.json === true, out);
51
+ if (verb === "add" && words[0] !== undefined && values.say !== undefined) {
52
+ return said(await changed(door, team, values.note, (words_) => ({ ...words_, said: { ...words_.said, [words[0]]: values.say } })), values.json === true, out);
53
+ }
54
+ if (verb === "hear" && words.length > 0) {
55
+ return said(await changed(door, team, values.note, (words_) => ({ ...words_, heard: [...new Set([...words_.heard, ...words])] })), values.json === true, out);
56
+ }
57
+ if (verb === "rm" && words.length > 0) {
58
+ return said(await changed(door, team, values.note, (words_) => ({
59
+ said: Object.fromEntries(Object.entries(words_.said).filter(([word]) => !words.includes(word))),
60
+ heard: words_.heard.filter((word) => !words.includes(word)),
61
+ })), values.json === true, out);
62
+ }
63
+ if (verb === "history")
64
+ return await history(door, team, out);
65
+ }
66
+ catch (refused) {
67
+ err.write(`${refusal(refused)}\n`);
68
+ return 1;
69
+ }
70
+ err.write(`${USAGE}\n`);
71
+ return 2;
72
+ }
73
+ function wordsOf(body) {
74
+ return { said: Object.fromEntries((body?.said ?? []).map((one) => [one.word, one.spoken])), heard: [...(body?.heard ?? [])] };
75
+ }
76
+ function bodyOf(words) {
77
+ return { said: Object.entries(words.said).map(([word, spoken]) => ({ word, spoken })), heard: words.heard };
78
+ }
79
+ // Read the corner's own row, change it, and send it whole with the version it was read at.
80
+ async function changed(door, team, note, change) {
81
+ const standing = await asked(door, LEXICON);
82
+ const row = team ? standing.team : (standing.yours ?? standing.team);
83
+ return await asked(door, LEXICON, {
84
+ method: "PUT",
85
+ body: { lexicon: bodyOf(change(wordsOf(row?.lexicon))), if_version: team ? (standing.team?.version ?? null) : (standing.yours?.version ?? null), note: note ?? null, team },
86
+ });
87
+ }
88
+ async function history(door, team, out) {
89
+ const kept = await asked(door, `${LEXICON}/history?team=${team}`);
90
+ out.write(`lexicon · ${kept.world} · ${kept.holder === "" ? "the org's own corner" : `corner ${kept.holder}`}\n`);
91
+ if (kept.rows.length === 0)
92
+ out.write(" nothing set yet\n");
93
+ for (const row of kept.rows)
94
+ out.write(` ${rowLine(row)} said ${row.lexicon.said.length} · heard ${row.lexicon.heard.length}\n`);
95
+ return 0;
96
+ }
97
+ function rowLine(row) {
98
+ const said = [`v${row.version}`, row.author, dayAndTime(row.set_at)];
99
+ if (row.note !== null)
100
+ said.push(`"${row.note}"`);
101
+ return said.join(" · ");
102
+ }
103
+ function said(answer, asJson, out) {
104
+ out.write(asJson ? `${JSON.stringify(answer)}\n` : `${linesOf(answer).join("\n")}\n`);
105
+ return 0;
106
+ }
107
+ /** The page: what the corner reads, then which version each corner is at. */
108
+ export function linesOf(answer) {
109
+ const read = answer.yours ?? answer.team;
110
+ const lines = [`lexicon · ${answer.world}${answer.yours === null ? "" : " · your corner"}`];
111
+ if (read === null)
112
+ lines.push(" nothing set: every agent says its own words");
113
+ else {
114
+ const spoken = read.lexicon.said.map((one) => `${one.word} → "${one.spoken}"`).join(" · ");
115
+ lines.push(` said ${spoken || "—"}`);
116
+ lines.push(` heard ${read.lexicon.heard.join(" · ") || "—"}`);
117
+ }
118
+ lines.push("");
119
+ const corners = [["yours", answer.yours], ["team", answer.team], ["production", answer.production]];
120
+ lines.push(` ${corners.map(([name, row]) => `${name}: ${row === null ? "nothing set" : rowLine(row)}`).join(" · ")}`);
121
+ return lines;
122
+ }
123
+ //# sourceMappingURL=lexicon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexicon.js","sourceRoot":"","sources":["../../src/cli/lexicon.ts"],"names":[],"mappings":"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"}
package/dist/cli/line.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /** `pinecall line`: whose terminal a call at this agent's number rings in, and the claim that takes it. */
2
- import { callsFrom as keptOnTheProfile } from "./profiles.js";
2
+ import { keepCalling } from "./signed-in.js";
3
3
  import { theDoor } from "./env.js";
4
4
  import { load } from "./load.js";
5
5
  import { oneHome } from "./home.js";
@@ -9,7 +9,7 @@ const USAGE = "usage: pinecall line [from <+number> | forget | claim | release]
9
9
  // A number exists once in a world, so it rings in one place. In production that place is the box
10
10
  // and there is nothing to decide; in the sandbox an org shares ONE number and three developers
11
11
  // may be running the same agent, so which terminal it rings in is claimed out loud. Alone nobody
12
- // claims anything — the first `pinecall run` takes it. See the runtime's docs/protocol/gateway-api.md.
12
+ // claims anything — the first `pinecall start` takes it. See the runtime's docs/protocol/gateway-api.md.
13
13
  export const group = {
14
14
  purpose: "which phone is yours, and whose terminal anybody else's call rings in",
15
15
  usage: `${USAGE}
@@ -21,7 +21,7 @@ export const group = {
21
21
  reaches your own agent — on the number your customers call, in production, as much as on a
22
22
  sandbox one: while you are running the agent your phone reaches your copy, and everybody else
23
23
  reaches production. No claim, no coordination, three of you testing at the same time. It is
24
- remembered for this gateway and re-sent by every \`pinecall run\`, each time it connects.
24
+ remembered for this gateway and re-sent by every \`pinecall start\`, each time it connects.
25
25
  \`forget\` undoes it.
26
26
 
27
27
  \`claim\` and \`release\` are the fallback, for a call from a number nobody said was theirs — a
@@ -47,13 +47,13 @@ export async function run(argv, out = process.stdout) {
47
47
  return 2;
48
48
  }
49
49
  const said = await callsFrom(door, number);
50
- keptOnTheProfile(number);
50
+ keepCalling(door.url, number);
51
51
  out.write(`${calling(said.calling)}\n`);
52
52
  return 0;
53
53
  }
54
54
  if (verb === "forget") {
55
55
  const said = await forgetCallsFrom(door);
56
- keptOnTheProfile(undefined);
56
+ keepCalling(door.url, undefined);
57
57
  out.write(`${forgotten(said.forgot)}\n`);
58
58
  return 0;
59
59
  }
@@ -118,7 +118,7 @@ const FROM = "/v1/line/from";
118
118
  */
119
119
  export function describing(said) {
120
120
  if (!said.held)
121
- return `nobody is answering ${said.agent}: start \`pinecall run\``;
121
+ return `nobody is answering ${said.agent}: run \`pinecall start\``;
122
122
  // Yours by number beats yours by line, and is said first: it is the one that needs no upkeep.
123
123
  const mine = said.calling.length > 0 ? `your calls from ${said.calling.join(", ")}` : undefined;
124
124
  if (said.yours) {
@@ -1 +1 @@
1
- {"version":3,"file":"line.js","sourceRoot":"","sources":["../../src/cli/line.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"line.js","sourceRoot":"","sources":["../../src/cli/line.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** `pinecall link`: this project's folder tied to one of your orgs — your key for it, written to its `.env`. */
2
+ import type { Group } from "./groups.js";
3
+ import { type Signing } from "./login.js";
4
+ export declare const group: Group;
5
+ /** What link can be told besides the argv. Tests only: where it writes, and how it asks. */
6
+ export interface Linking extends Signing {
7
+ from?: string;
8
+ /** Which of these orgs, when there are several and nobody said. A test answers instead of a person. */
9
+ choose?: (slugs: string[]) => Promise<string | undefined>;
10
+ }
11
+ /** Sign in if needed, pick the org, mint the key there, and write it into the project's `.env`. */
12
+ export declare function link(argv: string[], how?: Linking): Promise<number>;
13
+ //# sourceMappingURL=linking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linking.d.ts","sourceRoot":"","sources":["../../src/cli/linking.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAQhH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAO3D,eAAO,MAAM,KAAK,EAAE,KAgBnB,CAAC;AAWF,4FAA4F;AAC5F,MAAM,WAAW,OAAQ,SAAQ,OAAO;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uGAAuG;IACvG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC3D;AAED,mGAAmG;AACnG,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA2C7E"}
@@ -0,0 +1,103 @@
1
+ /** `pinecall link`: this project's folder tied to one of your orgs — your key for it, written to its `.env`. */
2
+ import { join } from "node:path";
3
+ import { createInterface } from "node:readline/promises";
4
+ import { parseArgs } from "node:util";
5
+ import { DOTENV, ignoredByGit, writeDotenv } from "./dotenv.js";
6
+ import { CLOUD_URL, KEY_VARIABLE, URL_VARIABLE } from "./env.js";
7
+ import { signedInThrough } from "./login.js";
8
+ import { pinecallHome, signedIn } from "./signed-in.js";
9
+ import { asked } from "./testing/gateway.js";
10
+ import { refusal } from "./whoami.js";
11
+ const USAGE = "usage: pinecall link [--org <slug>] [--gateway <url>]";
12
+ export const group = {
13
+ purpose: "this project's folder to one of your orgs: your key, in its .env",
14
+ usage: `${USAGE}
15
+
16
+ Run in the project's folder. Signs this machine in through a browser when it is not, asks
17
+ which of your orgs this project is — --org names it — and writes your key for that org into
18
+ ./.env as PINECALL_KEY (and PINECALL_URL when the gateway is not ${CLOUD_URL}). Every verb run
19
+ in this folder, or under it, reads it from there: a project of another org is another folder
20
+ with its own .env, and nothing is ever switched.
21
+
22
+ The key is yours: your role decides what it may do, and --prod reaches production while your
23
+ org lets you act there. A server does not link: a server's token from Tokens, in its secrets.
24
+
25
+ --org <slug> which org, when you belong to several and do not want to be asked
26
+ --gateway <url> another gateway than the one this machine last signed in to`,
27
+ run: link,
28
+ };
29
+ /** Sign in if needed, pick the org, mint the key there, and write it into the project's `.env`. */
30
+ export async function link(argv, how = {}) {
31
+ const out = how.out ?? process.stdout;
32
+ const err = how.err ?? process.stderr;
33
+ const { values } = parseArgs({
34
+ args: argv,
35
+ options: { org: { type: "string" }, gateway: { type: "string" } },
36
+ });
37
+ const home = pinecallHome(how.env ?? process.env);
38
+ const session = signedIn(values.gateway, home);
39
+ const url = session?.url ?? values.gateway ?? CLOUD_URL;
40
+ const key = session?.key ?? (await signedInThrough(url, how, out, err));
41
+ if (key === null)
42
+ return 1;
43
+ const door = { url, apiKey: key };
44
+ let orgs;
45
+ try {
46
+ orgs = (await asked(door, "/v1/login/orgs")).orgs.filter((org) => org.member !== false);
47
+ }
48
+ catch (refused) {
49
+ err.write(`${refusal(refused)}\n`);
50
+ return 1;
51
+ }
52
+ const chosen = await theOrg(orgs, values.org, how);
53
+ if (chosen === undefined) {
54
+ const slugs = orgs.map(slugOf);
55
+ err.write(`${values.org === undefined ? "which org is this project?" : `you are no member of ${values.org}:`} --org ${slugs.join(" | ")}\n`);
56
+ return 2;
57
+ }
58
+ let theirs;
59
+ try {
60
+ theirs = chosen.here ? key : (await asked(door, "/v1/login/org", { method: "POST", body: { org: chosen.org } })).key;
61
+ }
62
+ catch (refused) {
63
+ err.write(`${refusal(refused)}\n`);
64
+ return 1;
65
+ }
66
+ const file = join(how.from ?? process.cwd(), DOTENV);
67
+ const written = { [KEY_VARIABLE]: theirs };
68
+ if (url !== CLOUD_URL)
69
+ written[URL_VARIABLE] = url;
70
+ writeDotenv(file, written);
71
+ out.write(`▸ ${slugOf(chosen)} · ${Object.keys(written).join(" and ")} written to ${DOTENV}\n`);
72
+ // A key committed is a key published: said every time, until the project's .gitignore says so.
73
+ if (!ignoredByGit(file))
74
+ err.write(`git would commit ${DOTENV}: add it to .gitignore before a commit carries your key\n`);
75
+ return 0;
76
+ }
77
+ /** The org named, the only one there is, or the one the person picks; undefined when none fits. */
78
+ async function theOrg(orgs, named, how) {
79
+ if (named !== undefined)
80
+ return orgs.find((org) => org.slug === named || org.org === named);
81
+ if (orgs.length <= 1)
82
+ return orgs[0];
83
+ const picked = await (how.choose ?? askTheTerminal)(orgs.map(slugOf));
84
+ return orgs.find((org) => slugOf(org) === picked);
85
+ }
86
+ /** A numbered list on a terminal; nothing picked when there is no terminal to ask. */
87
+ async function askTheTerminal(slugs) {
88
+ if (process.stdin.isTTY !== true)
89
+ return undefined;
90
+ const asking = createInterface({ input: process.stdin, output: process.stdout });
91
+ try {
92
+ slugs.forEach((slug, at) => process.stdout.write(` ${at + 1}. ${slug}\n`));
93
+ const answer = (await asking.question("which org is this project? ")).trim();
94
+ return slugs[Number(answer) - 1] ?? slugs.find((slug) => slug === answer);
95
+ }
96
+ finally {
97
+ asking.close();
98
+ }
99
+ }
100
+ function slugOf(org) {
101
+ return org.slug ?? org.org;
102
+ }
103
+ //# sourceMappingURL=linking.js.map