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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/cli/agent.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,11 @@ export declare const group: Group;
6
6
  * the caller. Typing goes out as `{ text }`; everything that comes back is the call's own log,
7
7
  * printed as it lands. The tools run in this process, so a breakpoint in a @tool is reachable.
8
8
  *
9
- * This is `rails console`: it works with no `pinecall run` up and it works with three of them,
9
+ * This is `rails console`: it works with no `pinecall start` up and it works with three of them,
10
10
  * because the caller socket names THIS process's app id and the gateway serves the call from it.
11
11
  *
12
12
  * Named an agent instead, it mounts nothing and is only the caller's side: a written call at
13
- * whatever is holding that slug — your own `run` in the other terminal, or a colleague's. The
13
+ * whatever is holding that slug — your own `start` in the other terminal, or a colleague's. The
14
14
  * positional is a SLUG and `--file` is the file, because `--agent` meaning one thing in three
15
15
  * verbs and the other in six was a flag nobody could read.
16
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAU9G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AASzC,eAAO,MAAM,KAAK,EAAE,KAoBnB,CAAC;AASF;;;;;;;;;;;;GAYG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmEzD;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAc3F;AAoED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMnD"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAY9G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAQzC,eAAO,MAAM,KAAK,EAAE,KAoBnB,CAAC;AASF;;;;;;;;;;;;GAYG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwDzD;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAc3F;AAoED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMnD"}
package/dist/cli/chat.js CHANGED
@@ -1,31 +1,31 @@
1
1
  /** `pinecall chat [agent]`: this directory's agent in this process, or a written call at one already held. */
2
2
  import { createInterface } from "node:readline";
3
3
  import { parseArgs } from "node:util";
4
- import { Pinecall } from "../client/index.js";
4
+ import { signed } from "../client/signed.js";
5
5
  import WebSocket from "ws";
6
6
  import { mount } from "../runtime/connect.js";
7
+ import { pinecallFor } from "./client-for.js";
7
8
  import { theDoor } from "./env.js";
8
9
  import { load, mountOptions, notASlug } from "./load.js";
9
10
  import { AGENT_FLAG, oneHome } from "./home.js";
10
- import { cannotTell, ENV_FLAG, notThisWorld, standing } from "./world.js";
11
11
  import { BROKE, CALLER, lineFor } from "./view.js";
12
12
  import { firstState } from "./prompt.js";
13
13
  const PROMPT = `${CALLER} `;
14
14
  export const group = {
15
15
  purpose: "the app in this terminal's own process, and a prompt against it",
16
- usage: `usage: pinecall chat [agent] [--agent <name>] [--file agent.tsx] [--env production] [--as <contact>]
16
+ usage: `usage: pinecall chat [agent] [--agent <name>] [--file agent.tsx] [--prod] [--as <contact>]
17
17
  [--state file [--case n]] [--events]
18
18
 
19
19
  With nothing after it: the agent of this directory, mounted in THIS process, and a written
20
20
  caller against it. The tools run here, so a breakpoint in a @tool is reachable.
21
21
 
22
22
  With an agent's slug: a written call at the agent somebody is already holding — your own
23
- \`pinecall run\` in another terminal, or a colleague's. Nothing is mounted here, so --state,
23
+ \`pinecall start\` in another terminal, or a colleague's. Nothing is mounted here, so --state,
24
24
  which opens a call in a class this process built, is refused.
25
25
 
26
26
  --agent <name> which agent of a project of several, by its file's name or its slug
27
27
  --file <path> which class to mount, by its path
28
- --env <world> the world you believe this key opens; refused when it opens the other
28
+ --prod production's agent, if your org lets you act there; the sandbox otherwise
29
29
  --as <contact> who is calling: the id memory files this call under (a phone number, a customer id)
30
30
  --state file the state the call opens in — the same goldens file \`pinecall prompt\` reads
31
31
  --case n which case of that file, when it holds several
@@ -42,11 +42,11 @@ const NOT_YOURS_TO_OPEN = "--state opens a call in a class this process mounted,
42
42
  * the caller. Typing goes out as `{ text }`; everything that comes back is the call's own log,
43
43
  * printed as it lands. The tools run in this process, so a breakpoint in a @tool is reachable.
44
44
  *
45
- * This is `rails console`: it works with no `pinecall run` up and it works with three of them,
45
+ * This is `rails console`: it works with no `pinecall start` up and it works with three of them,
46
46
  * because the caller socket names THIS process's app id and the gateway serves the call from it.
47
47
  *
48
48
  * Named an agent instead, it mounts nothing and is only the caller's side: a written call at
49
- * whatever is holding that slug — your own `run` in the other terminal, or a colleague's. The
49
+ * whatever is holding that slug — your own `start` in the other terminal, or a colleague's. The
50
50
  * positional is a SLUG and `--file` is the file, because `--agent` meaning one thing in three
51
51
  * verbs and the other in six was a flag nobody could read.
52
52
  */
@@ -61,7 +61,6 @@ export async function run(argv) {
61
61
  file: { type: "string" },
62
62
  ...AGENT_FLAG,
63
63
  events: { type: "boolean", default: false },
64
- ...ENV_FLAG,
65
64
  },
66
65
  });
67
66
  const reach = positionals[0];
@@ -77,23 +76,12 @@ export async function run(argv) {
77
76
  const door = theDoor();
78
77
  if (door === undefined)
79
78
  return 2;
80
- try {
81
- const elsewhere = notThisWorld("chat", await standing(door), values.env);
82
- if (elsewhere !== undefined) {
83
- process.stderr.write(`${elsewhere}\n`);
84
- return 2;
85
- }
86
- }
87
- catch (failed) {
88
- process.stderr.write(`${cannotTell("chat", failed)}\n`);
89
- return 2;
90
- }
91
79
  const url = door.url;
92
80
  if (reach !== undefined) {
93
- return await talk(chatUrl(url, reach, undefined, values.as), door.apiKey, values.events === true);
81
+ return await talk(chatUrl(url, reach, undefined, values.as), door, values.events === true);
94
82
  }
95
83
  const loaded = await load((await oneHome("chat", values.file, values.agent)).file);
96
- const pc = new Pinecall({ url, apiKey: door.apiKey });
84
+ const pc = pinecallFor(door);
97
85
  // takesUnclaimed: false is the other half of the `?app=` below. Holding the agent is what makes
98
86
  // this a console; taking a call nobody named would make it a server, and a real phone call would
99
87
  // ring in this terminal. See the runtime's docs/decisions/dispatch.md: the registry is its.
@@ -114,7 +102,7 @@ export async function run(argv) {
114
102
  // The id exists only after the register the connect awaited, which is why it is read here
115
103
  // and not where the agent was mounted.
116
104
  const address = chatUrl(url, mounted.slug, mounted.agent.app, values.as);
117
- return await talk(address, door.apiKey, values.events === true);
105
+ return await talk(address, door, values.events === true);
118
106
  }
119
107
  finally {
120
108
  pc.close();
@@ -141,8 +129,8 @@ export function chatUrl(base, agent, app, contact) {
141
129
  // Every line typed is one turn; every frame received is one entry, printed as it lands. The key
142
130
  // travels as the upgrade's Authorization header, never in the URL, which is the only thing the
143
131
  // chat door accepts and the reason this socket is `ws` and not the runtime's global WebSocket.
144
- function talk(url, apiKey, events) {
145
- const socket = new WebSocket(url, { headers: { authorization: `Bearer ${apiKey}` } });
132
+ function talk(url, door, events) {
133
+ const socket = new WebSocket(url, { headers: signed(door.apiKey, door.world) });
146
134
  const lines = createInterface({ input: process.stdin, output: process.stdout, prompt: PROMPT });
147
135
  // An entry can land after the keyboard is gone — a piped stdin ends the moment it is read, and
148
136
  // the agent's greeting arrives after that — and readline throws on a prompt it has closed.
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** The SDK client a verb holds: the door's gateway, its key, and the world the command named. */
2
+ import { Pinecall } from "../client/client.js";
3
+ import type { Door } from "./testing/gateway.js";
4
+ /** A client for this door. A verb that opens no socket never imports this, and so never `ws`. */
5
+ export declare function pinecallFor(door: Door): Pinecall;
6
+ //# sourceMappingURL=client-for.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-for.d.ts","sourceRoot":"","sources":["../../src/cli/client-for.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAEhD"}
@@ -0,0 +1,7 @@
1
+ /** The SDK client a verb holds: the door's gateway, its key, and the world the command named. */
2
+ import { Pinecall } from "../client/client.js";
3
+ /** A client for this door. A verb that opens no socket never imports this, and so never `ws`. */
4
+ export function pinecallFor(door) {
5
+ return new Pinecall({ url: door.url, apiKey: door.apiKey, ...(door.world === undefined ? {} : { env: door.world }) });
6
+ }
7
+ //# sourceMappingURL=client-for.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-for.js","sourceRoot":"","sources":["../../src/cli/client-for.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,iGAAiG;AACjG,MAAM,UAAU,WAAW,CAAC,IAAU;IACpC,OAAO,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACxH,CAAC"}
@@ -1,4 +1,4 @@
1
- /** The one line `pinecall run` prints when the socket is up: who registered, where, and as whom. */
1
+ /** The one line `pinecall start` prints when the socket is up: who registered, where, and as whom. */
2
2
  import type { RouteInput } from "../client/index.js";
3
3
  export interface Connected {
4
4
  slug: string;
@@ -8,12 +8,12 @@ export interface Connected {
8
8
  /** Whose org took it, and which of the two worlds. Absent when the gateway would not say. */
9
9
  org?: string;
10
10
  env?: string;
11
- /** Which profile's key opened the door. Said because it is the thing that decides the two
12
- * above, and because it used to be decided by whatever was exported in the shell. */
11
+ /** Where the key that opened the door was read — the environment, or the project's .env. Said
12
+ * because it decides the two above, and because it used to be whatever the shell exported. */
13
13
  source?: string;
14
14
  }
15
15
  /**
16
- * The one line `pinecall run` prints when the socket is up.
16
+ * The one line `pinecall start` prints when the socket is up.
17
17
  *
18
18
  * It used to say the gateway and nothing else, and that cost an afternoon: a key exported in the
19
19
  * shell wins over the one `pinecall login` just kept, so an agent could register into another org
@@ -1 +1 @@
1
- {"version":3,"file":"connected.d.ts","sourceRoot":"","sources":["../../src/cli/connected.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6FAA6F;IAC7F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;yFACqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAStD;AAED,uGAAuG;AACvG,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAIlE"}
1
+ {"version":3,"file":"connected.d.ts","sourceRoot":"","sources":["../../src/cli/connected.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6FAA6F;IAC7F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;kGAC8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAStD;AAED,uGAAuG;AACvG,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAIlE"}
@@ -1,6 +1,6 @@
1
- /** The one line `pinecall run` prints when the socket is up: who registered, where, and as whom. */
1
+ /** The one line `pinecall start` prints when the socket is up: who registered, where, and as whom. */
2
2
  /**
3
- * The one line `pinecall run` prints when the socket is up.
3
+ * The one line `pinecall start` prints when the socket is up.
4
4
  *
5
5
  * It used to say the gateway and nothing else, and that cost an afternoon: a key exported in the
6
6
  * shell wins over the one `pinecall login` just kept, so an agent could register into another org
@@ -1 +1 @@
1
- {"version":3,"file":"connected.js","sourceRoot":"","sources":["../../src/cli/connected.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAiBpG;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,OAAO,CAAC,MAAgC;IACtD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CACzG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"connected.js","sourceRoot":"","sources":["../../src/cli/connected.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAiBtG;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,OAAO,CAAC,MAAgC;IACtD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CACzG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /** A project's `.env`: the nearest one up from where a verb runs, read as dotenv lines, and written by `link`. */
2
+ export declare const DOTENV = ".env";
3
+ /** The nearest `.env` from this directory up to the filesystem's root, or undefined when none. */
4
+ export declare function nearestDotenv(from: string): string | undefined;
5
+ /**
6
+ * The file's variables. The dotenv every tool agrees on and nothing more: `NAME=value`, a value in
7
+ * matching quotes is taken inside them, `export ` in front is allowed, and a line starting with `#`
8
+ * or holding no `=` says nothing.
9
+ */
10
+ export declare function readDotenv(file: string): Record<string, string>;
11
+ /**
12
+ * These variables written into the file: a line that names one is replaced where it stands, one
13
+ * that is not there yet goes at the end, and every other line — a comment, the app's own
14
+ * variables — is left exactly as it was. A file that does not exist is made readable by its owner
15
+ * alone, because what it holds is a key.
16
+ */
17
+ export declare function writeDotenv(file: string, values: Record<string, string>): void;
18
+ /**
19
+ * Whether git keeps this file out of a commit: a key committed is a key published. Git answers it
20
+ * — every `.gitignore` up to the repository's root, and the global one — so the answer is the one
21
+ * a commit would act on. Outside a repository, or with no git at all, nothing can commit it.
22
+ */
23
+ export declare function ignoredByGit(file: string): boolean;
24
+ //# sourceMappingURL=dotenv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dotenv.d.ts","sourceRoot":"","sources":["../../src/cli/dotenv.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAMlH,eAAO,MAAM,MAAM,SAAS,CAAC;AAE7B,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS/D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAY9E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIlD"}
@@ -0,0 +1,69 @@
1
+ /** A project's `.env`: the nearest one up from where a verb runs, read as dotenv lines, and written by `link`. */
2
+ import { spawnSync } from "node:child_process";
3
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
4
+ import { dirname, join } from "node:path";
5
+ export const DOTENV = ".env";
6
+ /** The nearest `.env` from this directory up to the filesystem's root, or undefined when none. */
7
+ export function nearestDotenv(from) {
8
+ for (let at = from;; at = dirname(at)) {
9
+ const file = join(at, DOTENV);
10
+ if (existsSync(file))
11
+ return file;
12
+ if (dirname(at) === at)
13
+ return undefined;
14
+ }
15
+ }
16
+ /**
17
+ * The file's variables. The dotenv every tool agrees on and nothing more: `NAME=value`, a value in
18
+ * matching quotes is taken inside them, `export ` in front is allowed, and a line starting with `#`
19
+ * or holding no `=` says nothing.
20
+ */
21
+ export function readDotenv(file) {
22
+ const found = {};
23
+ for (const raw of readFileSync(file, "utf8").split(/\r?\n/)) {
24
+ const line = raw.trim().replace(/^export\s+/, "");
25
+ const equals = line.indexOf("=");
26
+ if (line.startsWith("#") || equals <= 0)
27
+ continue;
28
+ found[line.slice(0, equals).trim()] = unquoted(line.slice(equals + 1).trim());
29
+ }
30
+ return found;
31
+ }
32
+ /**
33
+ * These variables written into the file: a line that names one is replaced where it stands, one
34
+ * that is not there yet goes at the end, and every other line — a comment, the app's own
35
+ * variables — is left exactly as it was. A file that does not exist is made readable by its owner
36
+ * alone, because what it holds is a key.
37
+ */
38
+ export function writeDotenv(file, values) {
39
+ const lines = existsSync(file) ? readFileSync(file, "utf8").replace(/\n$/, "").split("\n") : [];
40
+ const left = new Map(Object.entries(values));
41
+ const written = lines.map((line) => {
42
+ const name = line.trim().replace(/^export\s+/, "").split("=")[0]?.trim();
43
+ const value = name === undefined ? undefined : left.get(name);
44
+ if (name === undefined || value === undefined)
45
+ return line;
46
+ left.delete(name);
47
+ return `${name}=${value}`;
48
+ });
49
+ for (const [name, value] of left)
50
+ written.push(`${name}=${value}`);
51
+ writeFileSync(file, `${written.join("\n")}\n`, { mode: 0o600 });
52
+ }
53
+ /**
54
+ * Whether git keeps this file out of a commit: a key committed is a key published. Git answers it
55
+ * — every `.gitignore` up to the repository's root, and the global one — so the answer is the one
56
+ * a commit would act on. Outside a repository, or with no git at all, nothing can commit it.
57
+ */
58
+ export function ignoredByGit(file) {
59
+ const asked = spawnSync("git", ["check-ignore", "-q", file], { cwd: dirname(file), stdio: "ignore" });
60
+ // 0 ignored · 1 not ignored · 128 not a repository; an error is no git on this machine.
61
+ return asked.error !== undefined || asked.status !== 1;
62
+ }
63
+ function unquoted(value) {
64
+ const quote = value[0];
65
+ if ((quote === '"' || quote === "'") && value.length >= 2 && value.endsWith(quote))
66
+ return value.slice(1, -1);
67
+ return value;
68
+ }
69
+ //# sourceMappingURL=dotenv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dotenv.js","sourceRoot":"","sources":["../../src/cli/dotenv.ts"],"names":[],"mappings":"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"}
package/dist/cli/env.d.ts CHANGED
@@ -1,56 +1,40 @@
1
1
  /** Where the CLI is pointed and what opens the door: the one place that decides both, for every verb. */
2
- import { type ProjectOrg, type World } from "./profiles.js";
3
- /** Pinecall's own cloud: where every verb goes until `pinecall gateway <url>` says otherwise. */
2
+ import type { World } from "../client/signed.js";
3
+ /** Pinecall's own cloud: where every verb goes when nothing names another gateway. */
4
4
  export declare const CLOUD_URL = "https://box.pinecall.io";
5
- /** The gateway a developer runs on their own machine: what `pinecall gateway` is for. */
6
- export declare const OWN_BOX_URL = "http://localhost:8080";
7
- /** Where the key came from, so a verb can say it and a person can check it without grepping. */
8
- export type Source = "profile" | "none";
9
- /** What the resolution found: the gateway, the key if there is one, and where the key came from. */
5
+ /** The key a verb knocks with and the gateway it knocks at: the project's, as any app reads its own. */
6
+ export declare const KEY_VARIABLE = "PINECALL_KEY";
7
+ export declare const URL_VARIABLE = "PINECALL_URL";
8
+ /** What the resolution found: the gateway, the key if there is one, where it was read, the world asked. */
10
9
  export interface Found {
11
10
  url: string;
12
11
  apiKey: string | undefined;
13
- source: Source;
14
- /** The package.json that chose the profile, when one did: printed, so nobody wonders why. */
15
- project?: ProjectOrg;
16
- /** The profile's name, when a project chose it. */
17
- profile?: string;
18
- /** `production` when `--prod` asked for that world's key for this one command. */
12
+ /** Where the key was read: `the environment`, or the `.env` it came from, as a path from here. */
13
+ source: string;
14
+ /** `production` when `--prod` named that world for this one command. */
19
15
  world?: World;
20
16
  }
21
17
  /** A gateway with the key in hand: what a verb holds after `theDoor` answered. */
22
18
  export interface Open {
23
19
  url: string;
24
20
  apiKey: string;
25
- source: Source;
26
- project?: ProjectOrg;
27
- profile?: string;
21
+ source: string;
28
22
  world?: World;
29
23
  }
30
24
  /**
31
- * Which gateway and which key: one profile, and there is nothing else.
25
+ * Which gateway and which key: the project's, the way every app reads its own secrets.
32
26
  *
33
- * There used to be four files and three variables answering these two questions, in an order
34
- * nobody was ever told — and the one that won was the one you had not chosen. `pinecall login`
35
- * kept a key, an export from another project beat it, and a verb registered into another org in
36
- * another world with every line reading exactly the same.
37
- *
38
- * Now: the profile `--profile` names; else, inside a project whose package.json says
39
- * `"pinecall": { "org": "<slug>" }`, that org's profile; else the active one. `pinecall config`
40
- * prints which. A
41
- * machine with no browser writes one off stdin — `pinecall login --key-stdin` — so a key is never
42
- * in an environment every child process and every `ps` can read. `PINECALL_HOME` says where the
43
- * file is, and that is the only variable this file knows about.
27
+ * `PINECALL_KEY` and `PINECALL_URL` from the process's environment — a server's secrets, a CI job's
28
+ * — else from the nearest `.env` up from where the verb runs, which `pinecall link` wrote: each
29
+ * project folder is the org it was linked to, and nothing is switched. The gateway is the cloud's
30
+ * unless one of the two names another. v1's `PINECALL_API_KEY` is never read: a name another CLI on
31
+ * the same machine exports was how a key of the wrong org was once handed over in silence.
44
32
  */
45
- export declare function doorFrom(env?: NodeJS.ProcessEnv, home?: string, profile?: string | undefined, from?: string, world?: World | undefined): Found;
33
+ export declare function doorFrom(env?: NodeJS.ProcessEnv, from?: string, world?: World | undefined): Found;
46
34
  /** The gateway a verb knocks at, or nothing once it has said why it cannot: every verb's first act. */
47
- export declare function theDoor(env?: NodeJS.ProcessEnv, err?: NodeJS.WritableStream): Open | undefined;
48
- /** What to say when this machine holds no key: the verb that fixes it, and where it would go. */
49
- export declare function noKey(url: string): string;
50
- /** What to say when the project names an org this machine holds no profile of. */
51
- export declare function notThisOrg(project: ProjectOrg): string;
52
- /** What to say when `--prod` asked a profile for a production key it does not hold. */
53
- export declare function noProductionKey(profile: string): string;
54
- /** The first line a verb that connects prints: which gateway, and where its key was found. */
35
+ export declare function theDoor(env?: NodeJS.ProcessEnv, err?: NodeJS.WritableStream, from?: string): Open | undefined;
36
+ /** What to say when there is no key here: the verb that writes one. */
37
+ export declare const NO_KEY = "no PINECALL_KEY here: `pinecall link` in the project's folder writes it to .env (a server keeps it in its secrets)";
38
+ /** The first line a verb that connects prints: which gateway, where its key was read, and the world asked. */
55
39
  export declare function doorLine(door: Open): string;
56
40
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/cli/env.ts"],"names":[],"mappings":"AAAA,yGAAyG;AAGzG,OAAO,EAAuE,KAAK,UAAU,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjI,iGAAiG;AACjG,eAAO,MAAM,SAAS,4BAA4B,CAAC;AAEnD,yFAAyF;AACzF,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,gGAAgG;AAChG,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAExC,oGAAoG;AACpG,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,kFAAkF;AAClF,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CACtB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAA0B,EAChC,OAAO,GAAE,MAAM,GAAG,SAA8B,EAChD,IAAI,GAAE,MAAsB,EAC5B,KAAK,GAAE,KAAK,GAAG,SAA4B,GAC1C,KAAK,CAqBP;AAOD,uGAAuG;AACvG,wBAAgB,OAAO,CACrB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,GAAE,MAAM,CAAC,cAA+B,GAC1C,IAAI,GAAG,SAAS,CAYlB;AAED,iGAAiG;AACjG,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKzC;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAMtD;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,8FAA8F;AAC9F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAM3C"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/cli/env.ts"],"names":[],"mappings":"AAAA,yGAAyG;AAIzG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAIjD,sFAAsF;AACtF,eAAO,MAAM,SAAS,4BAA4B,CAAC;AAEnD,wGAAwG;AACxG,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,2GAA2G;AAC3G,MAAM,WAAW,KAAK;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,kFAAkF;AAClF,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAsB,EAC5B,KAAK,GAAE,KAAK,GAAG,SAA4B,GAC1C,KAAK,CAgBP;AAED,uGAAuG;AACvG,wBAAgB,OAAO,CACrB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,GAAE,MAAM,CAAC,cAA+B,EAC3C,IAAI,GAAE,MAAsB,GAC3B,IAAI,GAAG,SAAS,CAQlB;AAED,uEAAuE;AACvE,eAAO,MAAM,MAAM,uHACmG,CAAC;AAEvH,8GAA8G;AAC9G,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAG3C"}
package/dist/cli/env.js CHANGED
@@ -1,87 +1,54 @@
1
1
  /** Where the CLI is pointed and what opens the door: the one place that decides both, for every verb. */
2
- import { pinecallHome } from "./credentials.js";
3
- import { choose, chosenGateway, readConfig, theChosenProfile, theChosenWorld } from "./profiles.js";
4
- /** Pinecall's own cloud: where every verb goes until `pinecall gateway <url>` says otherwise. */
2
+ import { relative } from "node:path";
3
+ import { nearestDotenv, readDotenv } from "./dotenv.js";
4
+ import { theChosenWorld } from "./world.js";
5
+ /** Pinecall's own cloud: where every verb goes when nothing names another gateway. */
5
6
  export const CLOUD_URL = "https://box.pinecall.io";
6
- /** The gateway a developer runs on their own machine: what `pinecall gateway` is for. */
7
- export const OWN_BOX_URL = "http://localhost:8080";
7
+ /** The key a verb knocks with and the gateway it knocks at: the project's, as any app reads its own. */
8
+ export const KEY_VARIABLE = "PINECALL_KEY";
9
+ export const URL_VARIABLE = "PINECALL_URL";
8
10
  /**
9
- * Which gateway and which key: one profile, and there is nothing else.
11
+ * Which gateway and which key: the project's, the way every app reads its own secrets.
10
12
  *
11
- * There used to be four files and three variables answering these two questions, in an order
12
- * nobody was ever told — and the one that won was the one you had not chosen. `pinecall login`
13
- * kept a key, an export from another project beat it, and a verb registered into another org in
14
- * another world with every line reading exactly the same.
15
- *
16
- * Now: the profile `--profile` names; else, inside a project whose package.json says
17
- * `"pinecall": { "org": "<slug>" }`, that org's profile; else the active one. `pinecall config`
18
- * prints which. A
19
- * machine with no browser writes one off stdin — `pinecall login --key-stdin` — so a key is never
20
- * in an environment every child process and every `ps` can read. `PINECALL_HOME` says where the
21
- * file is, and that is the only variable this file knows about.
13
+ * `PINECALL_KEY` and `PINECALL_URL` from the process's environment — a server's secrets, a CI job's
14
+ * — else from the nearest `.env` up from where the verb runs, which `pinecall link` wrote: each
15
+ * project folder is the org it was linked to, and nothing is switched. The gateway is the cloud's
16
+ * unless one of the two names another. v1's `PINECALL_API_KEY` is never read: a name another CLI on
17
+ * the same machine exports was how a key of the wrong org was once handed over in silence.
22
18
  */
23
- export function doorFrom(env = process.env, home = pinecallHome(env), profile = theChosenProfile(), from = process.cwd(), world = theChosenWorld()) {
24
- const config = readConfig(home);
25
- const choice = choose(profile, config, from, world);
26
- const held = choice.name === undefined ? undefined : config.profiles[choice.name];
27
- // `--prod` takes the production key the login kept beside the sandbox one, for this command
28
- // only: the profile's key in hand is not touched, so the next command is in the sandbox again.
29
- const chosen = held === undefined || world === undefined ? held : { ...held, key: keyIn(held, world) };
30
- // A project that names an org this machine holds no profile of is refused, never handed the
31
- // active profile: that one is another org's, and running there is the accident this prevents.
32
- if (chosen === undefined && choice.project !== undefined) {
33
- return { url: chosenGateway(home) ?? CLOUD_URL, apiKey: undefined, source: "none", project: choice.project };
34
- }
35
- // No profile yet: the gateway is whichever this machine was pointed at, and the cloud until
36
- // somebody points it elsewhere. A localhost default sent every first verb at a box that is not
37
- // running, and the refusal read as the CLI being broken.
38
- if (chosen === undefined)
39
- return { url: chosenGateway(home) ?? CLOUD_URL, apiKey: undefined, source: "none" };
40
- const asked = world === undefined ? {} : { world, profile: choice.name };
41
- if (choice.project !== undefined) {
42
- return { url: chosen.url, apiKey: chosen.key, source: "profile", project: choice.project, ...asked, profile: choice.name };
19
+ export function doorFrom(env = process.env, from = process.cwd(), world = theChosenWorld()) {
20
+ const asked = world === undefined ? {} : { world };
21
+ const exported = env[KEY_VARIABLE];
22
+ if (exported !== undefined && exported !== "") {
23
+ return { url: env[URL_VARIABLE] ?? CLOUD_URL, apiKey: exported, source: "the environment", ...asked };
43
24
  }
44
- return { url: chosen.url, apiKey: chosen.key, source: "profile", ...asked };
45
- }
46
- /** A profile's key in one world: the one the login kept, or the one in hand when it opens that world. */
47
- function keyIn(profile, world) {
48
- return profile.keys?.[world] ?? (profile.env === world ? profile.key : "");
25
+ const file = nearestDotenv(from);
26
+ if (file === undefined)
27
+ return { url: env[URL_VARIABLE] ?? CLOUD_URL, apiKey: undefined, source: "nowhere", ...asked };
28
+ const values = readDotenv(file);
29
+ const key = values[KEY_VARIABLE];
30
+ return {
31
+ url: env[URL_VARIABLE] ?? values[URL_VARIABLE] ?? CLOUD_URL,
32
+ apiKey: key === "" ? undefined : key,
33
+ source: relative(from, file) || file,
34
+ ...asked,
35
+ };
49
36
  }
50
37
  /** The gateway a verb knocks at, or nothing once it has said why it cannot: every verb's first act. */
51
- export function theDoor(env = process.env, err = process.stderr) {
52
- const found = doorFrom(env);
38
+ export function theDoor(env = process.env, err = process.stderr, from = process.cwd()) {
39
+ const found = doorFrom(env, from);
53
40
  if (found.apiKey === undefined) {
54
- err.write(`${found.project === undefined ? noKey(found.url) : notThisOrg(found.project)}\n`);
55
- return undefined;
56
- }
57
- if (found.apiKey === "") {
58
- err.write(`${noProductionKey(found.profile ?? "this profile")}\n`);
41
+ err.write(`${NO_KEY}\n`);
59
42
  return undefined;
60
43
  }
61
44
  const { apiKey, ...rest } = found;
62
45
  return { ...rest, apiKey };
63
46
  }
64
- /** What to say when this machine holds no key: the verb that fixes it, and where it would go. */
65
- export function noKey(url) {
66
- return (`not signed in to ${url}: \`pinecall login\`, \`pinecall gateway <url>\` for another gateway,`
67
- + " or `pinecall use <profile>` for one already kept (`pinecall config` lists them)");
68
- }
69
- /** What to say when the project names an org this machine holds no profile of. */
70
- export function notThisOrg(project) {
71
- return (`this project is org ${project.org} (${project.file}), and this machine holds no profile of it:`
72
- + ` \`pinecall login\` as a member of ${project.org}, or \`--profile <name>\` for one already kept`
73
- + " (`pinecall config` lists them)");
74
- }
75
- /** What to say when `--prod` asked a profile for a production key it does not hold. */
76
- export function noProductionKey(profile) {
77
- return `--prod asks for ${profile}'s production key, and it holds none: \`pinecall login\` again keeps both worlds' keys`;
78
- }
79
- /** The first line a verb that connects prints: which gateway, and where its key was found. */
47
+ /** What to say when there is no key here: the verb that writes one. */
48
+ export const NO_KEY = "no PINECALL_KEY here: `pinecall link` in the project's folder writes it to .env (a server keeps it in its secrets)";
49
+ /** The first line a verb that connects prints: which gateway, where its key was read, and the world asked. */
80
50
  export function doorLine(door) {
81
51
  const world = door.world === undefined ? "" : ` · ${door.world} (--prod)`;
82
- if (door.project !== undefined) {
83
- return `gateway ${door.url} · key from profile ${door.profile ?? door.project.org} · org ${door.project.org} from ${door.project.file}${world}`;
84
- }
85
52
  return `gateway ${door.url} · key from ${door.source}${world}`;
86
53
  }
87
54
  //# sourceMappingURL=env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/cli/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/cli/env.ts"],"names":[],"mappings":"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"}