pinecall 0.3.1 → 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 (228) 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 +23 -23
  35. package/dist/cli/env.d.ts.map +1 -1
  36. package/dist/cli/env.js +40 -34
  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 -33
  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-DTMBzpRG.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/console/pinecall-logo.png +0 -0
  124. package/dist/cli/ui/console/pinecall-mark.png +0 -0
  125. package/dist/cli/ui/doors.d.ts +2 -2
  126. package/dist/cli/ui/doors.d.ts.map +1 -1
  127. package/dist/cli/ui/doors.js +2 -2
  128. package/dist/cli/ui/doors.js.map +1 -1
  129. package/dist/cli/ui/drifting.d.ts +1 -1
  130. package/dist/cli/ui/drifting.js +1 -1
  131. package/dist/cli/ui/knowing.d.ts +1 -1
  132. package/dist/cli/ui/knowing.js +3 -3
  133. package/dist/cli/ui/knowing.js.map +1 -1
  134. package/dist/cli/ui/promoting.d.ts +1 -1
  135. package/dist/cli/ui/promoting.js +1 -1
  136. package/dist/cli/ui/remembering.d.ts +1 -1
  137. package/dist/cli/ui/remembering.js +3 -3
  138. package/dist/cli/ui/remembering.js.map +1 -1
  139. package/dist/cli/ui/reproducing.d.ts +1 -1
  140. package/dist/cli/ui/reproducing.js +1 -1
  141. package/dist/cli/ui/simulating.d.ts +1 -1
  142. package/dist/cli/ui/simulating.js +4 -4
  143. package/dist/cli/ui/simulating.js.map +1 -1
  144. package/dist/cli/ui/testing.d.ts +1 -1
  145. package/dist/cli/ui/testing.js +3 -3
  146. package/dist/cli/ui/testing.js.map +1 -1
  147. package/dist/cli/whoami.d.ts +6 -2
  148. package/dist/cli/whoami.d.ts.map +1 -1
  149. package/dist/cli/whoami.js +6 -5
  150. package/dist/cli/whoami.js.map +1 -1
  151. package/dist/cli/world.d.ts +14 -24
  152. package/dist/cli/world.d.ts.map +1 -1
  153. package/dist/cli/world.js +21 -35
  154. package/dist/cli/world.js.map +1 -1
  155. package/dist/client/agent.d.ts +1 -1
  156. package/dist/client/agent.js +2 -2
  157. package/dist/client/agent.js.map +1 -1
  158. package/dist/client/client.d.ts +9 -1
  159. package/dist/client/client.d.ts.map +1 -1
  160. package/dist/client/client.js +5 -2
  161. package/dist/client/client.js.map +1 -1
  162. package/dist/client/connection.d.ts +3 -0
  163. package/dist/client/connection.d.ts.map +1 -1
  164. package/dist/client/connection.js +2 -1
  165. package/dist/client/connection.js.map +1 -1
  166. package/dist/client/index.d.ts +1 -0
  167. package/dist/client/index.d.ts.map +1 -1
  168. package/dist/client/observe.d.ts +3 -0
  169. package/dist/client/observe.d.ts.map +1 -1
  170. package/dist/client/observe.js +2 -1
  171. package/dist/client/observe.js.map +1 -1
  172. package/dist/client/signed.d.ts +15 -0
  173. package/dist/client/signed.d.ts.map +1 -0
  174. package/dist/client/signed.js +19 -0
  175. package/dist/client/signed.js.map +1 -0
  176. package/dist/views/render.d.ts +1 -1
  177. package/dist/views/render.js +1 -1
  178. package/package.json +2 -2
  179. package/dist/cli/config.d.ts +0 -16
  180. package/dist/cli/config.d.ts.map +0 -1
  181. package/dist/cli/config.js +0 -117
  182. package/dist/cli/config.js.map +0 -1
  183. package/dist/cli/credentials.d.ts +0 -41
  184. package/dist/cli/credentials.d.ts.map +0 -1
  185. package/dist/cli/credentials.js +0 -98
  186. package/dist/cli/credentials.js.map +0 -1
  187. package/dist/cli/gateway.d.ts +0 -12
  188. package/dist/cli/gateway.d.ts.map +0 -1
  189. package/dist/cli/gateway.js +0 -63
  190. package/dist/cli/gateway.js.map +0 -1
  191. package/dist/cli/keys.d.ts +0 -28
  192. package/dist/cli/keys.d.ts.map +0 -1
  193. package/dist/cli/keys.js +0 -137
  194. package/dist/cli/keys.js.map +0 -1
  195. package/dist/cli/profiles.d.ts +0 -92
  196. package/dist/cli/profiles.d.ts.map +0 -1
  197. package/dist/cli/profiles.js +0 -246
  198. package/dist/cli/profiles.js.map +0 -1
  199. package/dist/cli/run-console.d.ts.map +0 -1
  200. package/dist/cli/run-console.js.map +0 -1
  201. package/dist/cli/run-screens.d.ts.map +0 -1
  202. package/dist/cli/run-screens.js.map +0 -1
  203. package/dist/cli/run.d.ts.map +0 -1
  204. package/dist/cli/run.js.map +0 -1
  205. package/dist/cli/signup.d.ts +0 -25
  206. package/dist/cli/signup.d.ts.map +0 -1
  207. package/dist/cli/signup.js +0 -126
  208. package/dist/cli/signup.js.map +0 -1
  209. package/dist/cli/ui/admin/assets/index-BlHXSYVz.css +0 -1
  210. package/dist/cli/ui/admin/assets/index-BpdIOuyO.js +0 -58
  211. package/dist/cli/ui/admin/index.html +0 -20
  212. package/dist/cli/ui/browser.d.ts +0 -10
  213. package/dist/cli/ui/browser.d.ts.map +0 -1
  214. package/dist/cli/ui/browser.js +0 -30
  215. package/dist/cli/ui/browser.js.map +0 -1
  216. package/dist/cli/ui/console/assets/index-C7LdwphQ.css +0 -1
  217. package/dist/cli/ui/index.d.ts +0 -15
  218. package/dist/cli/ui/index.d.ts.map +0 -1
  219. package/dist/cli/ui/index.js +0 -117
  220. package/dist/cli/ui/index.js.map +0 -1
  221. package/dist/cli/ui/refused.d.ts +0 -8
  222. package/dist/cli/ui/refused.d.ts.map +0 -1
  223. package/dist/cli/ui/refused.js +0 -11
  224. package/dist/cli/ui/refused.js.map +0 -1
  225. package/dist/cli/ui/server.d.ts +0 -22
  226. package/dist/cli/ui/server.d.ts.map +0 -1
  227. package/dist/cli/ui/server.js +0 -211
  228. package/dist/cli/ui/server.js.map +0 -1
@@ -1,92 +0,0 @@
1
- /** ~/.pinecall/config.json: the gateways this machine knows, by name, and which one is in hand. */
2
- /** The two worlds of an org, as a profile names them. */
3
- export type World = "sandbox" | "production";
4
- /** The same person's key in each world of one org, as the login minted them. */
5
- export type Keys = Partial<Record<World, string>>;
6
- /** One org on one gateway: where it is, the keys that open it, and which world is in hand. */
7
- export interface Profile {
8
- url: string;
9
- /** The key every verb uses: the one of the world `env` names. */
10
- key: string;
11
- /** Both worlds' keys, so moving between them is `pinecall use` and never a second login. */
12
- keys?: Keys;
13
- /** The org the key belongs to, as `whoami` last said it. A label, never a check. */
14
- org?: string;
15
- /** The world it opens, likewise: printed, never trusted over what the gateway says. */
16
- env?: string;
17
- /** The phone this person calls FROM, so a ring in the sandbox reaches their own agent. */
18
- calling?: string;
19
- }
20
- /** The file: every profile by name, the one a verb uses when nobody names another, and the gateway this machine was pointed at. */
21
- export interface Config {
22
- active?: string;
23
- /** Where `pinecall login` goes when nobody names a URL: `pinecall gateway <url>` writes it. */
24
- gateway?: string;
25
- profiles: Record<string, Profile>;
26
- }
27
- /**
28
- * Every profile this machine has, and which is active.
29
- *
30
- * There were four files and three variables answering two questions — which gateway, and which
31
- * key — with a precedence nobody was ever told. This is the one file. The one it replaces is
32
- * read ONCE, here, and written into it: `~/.pinecall/credentials`, which `pinecall login` kept a
33
- * row per gateway in. It is not deleted — v1's CLI still reads it on this same machine — and it is
34
- * not read again once this file exists. The third source, `~/.pinecall/dev`, went with the dev key
35
- * that wrote it: a local gateway runs the same Postgres and the same issued keys a box does.
36
- */
37
- export declare function readConfig(home?: string): Config;
38
- /**
39
- * Take `--profile <name>` out of an invocation's argv, and remember it.
40
- *
41
- * Returns what is left, so the group sees only its own flags. `--profile=<name>` too, because
42
- * both spellings are what a person types and only one of them working is a footgun.
43
- */
44
- export declare function withoutTheProfileFlag(argv: readonly string[]): string[];
45
- /** The profile this invocation named, when it named one. */
46
- export declare function theChosenProfile(): string | undefined;
47
- /** The profile a verb runs on: the one named, or the active one, or nothing at all. */
48
- export declare function profileFor(named: string | undefined, home?: string): Profile | undefined;
49
- /** The gateway this machine was pointed at, or nothing — and then it is the cloud's. */
50
- export declare function chosenGateway(home?: string): string | undefined;
51
- /** Point this machine at a gateway, so `pinecall login` and every verb with no key go there. */
52
- export declare function chooseGateway(url: string, home?: string): void;
53
- /** Which profile is in hand, for a line that says where a verb is about to go. */
54
- export declare function activeName(home?: string): string | undefined;
55
- /** Keep one profile and make it the active one: what `pinecall login` does when it has a key. */
56
- export declare function writeProfile(name: string, profile: Profile, home?: string): void;
57
- /** Make a profile that is already there the active one. False when there is no such name. */
58
- export declare function activate(name: string, home?: string): boolean;
59
- /**
60
- * Move a profile to one of its worlds, with the key the login already minted for it.
61
- *
62
- * A person holds a key in each world of an org, and used to hold only the sandbox one: looking at
63
- * production from a terminal meant a second profile nobody knew how to make.
64
- */
65
- export declare function inWorld(name: string, world: World, home?: string): "moved" | "unknown" | "nokey";
66
- /** A name for an org's profile: its slug, and the gateway's host beside it when another gateway took the slug. */
67
- export declare function nameForOrg(slug: string, url: string, config: Config): string;
68
- /**
69
- * Forget a gateway. False when there is no such name, so a typo is never silence.
70
- *
71
- * A profile is a key in a file, and a key that opens nothing is worse than none: somebody will
72
- * trust it tomorrow and read the refusal as the gateway's fault. This is the only way to take one
73
- * out, and it takes the active mark with it rather than leaving it pointing at a row that is gone.
74
- */
75
- export declare function forget(name: string, home?: string): boolean;
76
- /** The phone this person calls FROM at the gateway in hand, so a ring reaches their own agent. */
77
- export declare function callingFrom(home?: string): string | undefined;
78
- /** Say which phone is yours here, or take it back. False when there is no profile to write it on. */
79
- export declare function callsFrom(number: string | undefined, home?: string): boolean;
80
- /** Change one field of a profile without touching its key: what `line from` writes. */
81
- export declare function amend(name: string, fields: Partial<Profile>, home?: string, whole?: boolean): boolean;
82
- /**
83
- * What to call a profile for this gateway: the host's first label, and `local` for a loopback.
84
- *
85
- * A name is for a person to type — `pinecall use box` — so it is short and it is theirs to
86
- * override with `--as`. A second gateway that would take a name already spoken for gets a number,
87
- * because silently repointing a name is how somebody deploys to the wrong box.
88
- */
89
- export declare function nameFor(url: string, config: Config): string;
90
- /** Whichever profile points at this gateway, by name, when one does. */
91
- export declare function nameOfGateway(url: string, config: Config): string | undefined;
92
- //# sourceMappingURL=profiles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/cli/profiles.ts"],"names":[],"mappings":"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"}
@@ -1,246 +0,0 @@
1
- /** ~/.pinecall/config.json: the gateways this machine knows, by name, and which one is in hand. */
2
- import { chmodSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { normalised, pinecallHome, readCredentials } from "./credentials.js";
5
- // The directory is a person's and the file holds keys: 0700 and 0600, as the old two were.
6
- const DIRECTORY_MODE = 0o700;
7
- const FILE_MODE = 0o600;
8
- const CONFIG = "config.json";
9
- /**
10
- * Every profile this machine has, and which is active.
11
- *
12
- * There were four files and three variables answering two questions — which gateway, and which
13
- * key — with a precedence nobody was ever told. This is the one file. The one it replaces is
14
- * read ONCE, here, and written into it: `~/.pinecall/credentials`, which `pinecall login` kept a
15
- * row per gateway in. It is not deleted — v1's CLI still reads it on this same machine — and it is
16
- * not read again once this file exists. The third source, `~/.pinecall/dev`, went with the dev key
17
- * that wrote it: a local gateway runs the same Postgres and the same issued keys a box does.
18
- */
19
- export function readConfig(home = pinecallHome()) {
20
- return parsedConfig(home) ?? migrated(home);
21
- }
22
- /**
23
- * `~/.pinecall/credentials`, folded in once and written down, the first time there is no config.
24
- *
25
- * A one-time thing on purpose: after this, `config.json` is the file, and the old one is left on
26
- * disk untouched because v1's CLI on this same machine still reads it.
27
- */
28
- function migrated(home) {
29
- const config = { profiles: {} };
30
- for (const [url, row] of Object.entries(readCredentials(home).gateways)) {
31
- config.profiles[nameFor(url, config)] = {
32
- url,
33
- key: row.api_key,
34
- ...(row.org === undefined ? {} : { org: row.org }),
35
- ...(row.calling === undefined ? {} : { calling: row.calling }),
36
- };
37
- }
38
- const [only, ...rest] = Object.keys(config.profiles);
39
- // One gateway is not a choice: a person who logged in to exactly one should never name it.
40
- if (only !== undefined && rest.length === 0)
41
- config.active = only;
42
- if (only !== undefined)
43
- writeConfig(config, home);
44
- return config;
45
- }
46
- // What `--profile <name>` said, for this one invocation. It is read out of argv once, by the
47
- // dispatcher, before any group sees its flags — twenty verbs each parsing the same flag is twenty
48
- // places for it to be missing from. Set once at startup and never again: a parsed argument that
49
- // happens to live in a module, not state anything changes while a verb runs.
50
- let chosen;
51
- /**
52
- * Take `--profile <name>` out of an invocation's argv, and remember it.
53
- *
54
- * Returns what is left, so the group sees only its own flags. `--profile=<name>` too, because
55
- * both spellings are what a person types and only one of them working is a footgun.
56
- */
57
- export function withoutTheProfileFlag(argv) {
58
- const rest = [];
59
- for (let at = 0; at < argv.length; at += 1) {
60
- const word = argv[at];
61
- if (word === "--profile") {
62
- chosen = argv[at + 1];
63
- at += 1;
64
- }
65
- else if (word.startsWith("--profile=")) {
66
- chosen = word.slice("--profile=".length);
67
- }
68
- else {
69
- rest.push(word);
70
- }
71
- }
72
- return rest;
73
- }
74
- /** The profile this invocation named, when it named one. */
75
- export function theChosenProfile() {
76
- return chosen;
77
- }
78
- /** The profile a verb runs on: the one named, or the active one, or nothing at all. */
79
- export function profileFor(named, home = pinecallHome()) {
80
- const config = readConfig(home);
81
- const name = named ?? config.active;
82
- return name === undefined ? undefined : config.profiles[name];
83
- }
84
- /** The gateway this machine was pointed at, or nothing — and then it is the cloud's. */
85
- export function chosenGateway(home = pinecallHome()) {
86
- return readConfig(home).gateway;
87
- }
88
- /** Point this machine at a gateway, so `pinecall login` and every verb with no key go there. */
89
- export function chooseGateway(url, home = pinecallHome()) {
90
- writeConfig({ ...readConfig(home), gateway: url }, home);
91
- }
92
- /** Which profile is in hand, for a line that says where a verb is about to go. */
93
- export function activeName(home = pinecallHome()) {
94
- return readConfig(home).active;
95
- }
96
- /** Keep one profile and make it the active one: what `pinecall login` does when it has a key. */
97
- export function writeProfile(name, profile, home = pinecallHome()) {
98
- const config = readConfig(home);
99
- config.profiles[name] = profile;
100
- config.active = name;
101
- writeConfig(config, home);
102
- }
103
- /** Make a profile that is already there the active one. False when there is no such name. */
104
- export function activate(name, home = pinecallHome()) {
105
- const config = readConfig(home);
106
- if (config.profiles[name] === undefined)
107
- return false;
108
- config.active = name;
109
- writeConfig(config, home);
110
- return true;
111
- }
112
- /**
113
- * Move a profile to one of its worlds, with the key the login already minted for it.
114
- *
115
- * A person holds a key in each world of an org, and used to hold only the sandbox one: looking at
116
- * production from a terminal meant a second profile nobody knew how to make.
117
- */
118
- export function inWorld(name, world, home = pinecallHome()) {
119
- const config = readConfig(home);
120
- const profile = config.profiles[name];
121
- if (profile === undefined)
122
- return "unknown";
123
- const key = profile.keys?.[world];
124
- if (key === undefined)
125
- return "nokey";
126
- config.profiles[name] = { ...profile, key, env: world };
127
- config.active = name;
128
- writeConfig(config, home);
129
- return "moved";
130
- }
131
- /** A name for an org's profile: its slug, and the gateway's host beside it when another gateway took the slug. */
132
- export function nameForOrg(slug, url, config) {
133
- const held = config.profiles[slug];
134
- if (held === undefined || normalised(held.url) === normalised(url))
135
- return slug;
136
- return `${slug}@${new URL(url).host}`;
137
- }
138
- /**
139
- * Forget a gateway. False when there is no such name, so a typo is never silence.
140
- *
141
- * A profile is a key in a file, and a key that opens nothing is worse than none: somebody will
142
- * trust it tomorrow and read the refusal as the gateway's fault. This is the only way to take one
143
- * out, and it takes the active mark with it rather than leaving it pointing at a row that is gone.
144
- */
145
- export function forget(name, home = pinecallHome()) {
146
- const config = readConfig(home);
147
- if (config.profiles[name] === undefined)
148
- return false;
149
- const { [name]: _gone, ...left } = config.profiles;
150
- const active = config.active === name ? undefined : config.active;
151
- writeConfig({ ...(active === undefined ? {} : { active }), profiles: left }, home);
152
- return true;
153
- }
154
- /** The phone this person calls FROM at the gateway in hand, so a ring reaches their own agent. */
155
- export function callingFrom(home = pinecallHome()) {
156
- return profileFor(theChosenProfile(), home)?.calling;
157
- }
158
- /** Say which phone is yours here, or take it back. False when there is no profile to write it on. */
159
- export function callsFrom(number, home = pinecallHome()) {
160
- const config = readConfig(home);
161
- const name = theChosenProfile() ?? config.active;
162
- if (name === undefined || config.profiles[name] === undefined)
163
- return false;
164
- const { calling: _was, ...rest } = config.profiles[name];
165
- return amend(name, number === undefined ? rest : { ...rest, calling: number }, home, true);
166
- }
167
- /** Change one field of a profile without touching its key: what `line from` writes. */
168
- export function amend(name, fields, home = pinecallHome(), whole = false) {
169
- const config = readConfig(home);
170
- const profile = config.profiles[name];
171
- if (profile === undefined)
172
- return false;
173
- // `whole` is how a field is REMOVED: merging cannot unset one, and `line forget` has to.
174
- config.profiles[name] = whole ? { ...fields } : { ...profile, ...fields };
175
- writeConfig(config, home);
176
- return true;
177
- }
178
- /**
179
- * What to call a profile for this gateway: the host's first label, and `local` for a loopback.
180
- *
181
- * A name is for a person to type — `pinecall use box` — so it is short and it is theirs to
182
- * override with `--as`. A second gateway that would take a name already spoken for gets a number,
183
- * because silently repointing a name is how somebody deploys to the wrong box.
184
- */
185
- export function nameFor(url, config) {
186
- const wanted = defaultName(url);
187
- const taken = (name) => config.profiles[name] !== undefined && normalised(config.profiles[name].url) !== normalised(url);
188
- if (!taken(wanted))
189
- return wanted;
190
- for (let at = 2;; at += 1) {
191
- if (!taken(`${wanted}-${at}`))
192
- return `${wanted}-${at}`;
193
- }
194
- }
195
- /** Whichever profile points at this gateway, by name, when one does. */
196
- export function nameOfGateway(url, config) {
197
- const wanted = normalised(url);
198
- return Object.keys(config.profiles).find((name) => normalised(config.profiles[name].url) === wanted);
199
- }
200
- function defaultName(url) {
201
- try {
202
- const host = new URL(url).hostname;
203
- if (host === "localhost" || host === "127.0.0.1" || host === "::1")
204
- return "local";
205
- return host.split(".")[0] ?? host;
206
- }
207
- catch {
208
- return "gateway";
209
- }
210
- }
211
- function parsedConfig(home) {
212
- const read = readJson(home);
213
- if (read === undefined)
214
- return undefined;
215
- const profiles = read["profiles"];
216
- if (typeof profiles !== "object" || profiles === null || Array.isArray(profiles))
217
- return undefined;
218
- const config = { profiles: profiles };
219
- if (typeof read["active"] === "string")
220
- config.active = read["active"];
221
- if (typeof read["gateway"] === "string")
222
- config.gateway = read["gateway"];
223
- return config;
224
- }
225
- // A missing file, an unreadable one and a broken one are all the same answer: nothing. A config
226
- // nobody can parse must not stop a verb from saying it has no profile — that sentence is the fix.
227
- function readJson(home) {
228
- try {
229
- const read = JSON.parse(readFileSync(join(home, CONFIG), "utf8"));
230
- return typeof read === "object" && read !== null && !Array.isArray(read)
231
- ? read
232
- : undefined;
233
- }
234
- catch {
235
- return undefined;
236
- }
237
- }
238
- function writeConfig(config, home) {
239
- mkdirSync(home, { recursive: true, mode: DIRECTORY_MODE });
240
- const path = join(home, CONFIG);
241
- writeFileSync(path, `${JSON.stringify(config, null, 2)}\n`, { mode: FILE_MODE });
242
- // writeFileSync's mode applies only when it creates the file: one already there kept what it
243
- // had, including a mode an editor widened.
244
- chmodSync(path, FILE_MODE);
245
- }
246
- //# sourceMappingURL=profiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/cli/profiles.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE7E,2FAA2F;AAC3F,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,SAAS,GAAG,KAAK,CAAC;AAExB,MAAM,MAAM,GAAG,aAAa,CAAC;AA+B7B;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,IAAI,GAAW,YAAY,EAAE;IACtD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG;YACtC,GAAG;YACH,GAAG,EAAE,GAAG,CAAC,OAAO;YAChB,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAClD,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;SAC/D,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrD,2FAA2F;IAC3F,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IAClE,IAAI,IAAI,KAAK,SAAS;QAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,6FAA6F;AAC7F,kGAAkG;AAClG,gGAAgG;AAChG,6EAA6E;AAC7E,IAAI,MAA0B,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAuB;IAC3D,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAE,CAAC;QACvB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACtB,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,UAAU,CAAC,KAAyB,EAAE,IAAI,GAAW,YAAY,EAAE;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;IACpC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,IAAI,GAAW,YAAY,EAAE;IACzD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAClC,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAI,GAAW,YAAY,EAAE;IACtE,WAAW,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,IAAI,GAAW,YAAY,EAAE;IACtD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,OAAgB,EAAE,IAAI,GAAW,YAAY,EAAE;IACxF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAChC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAI,GAAW,YAAY,EAAE;IAClE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,KAAY,EAAE,IAAI,GAAW,YAAY,EAAE;IAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACxD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kHAAkH;AAClH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,GAAW,EAAE,MAAc;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChF,OAAO,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,IAAI,GAAW,YAAY,EAAE;IAChE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAClE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,WAAW,CAAC,IAAI,GAAW,YAAY,EAAE;IACvD,OAAO,UAAU,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC;AACvD,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,SAAS,CAAC,MAA0B,EAAE,IAAI,GAAW,YAAY,EAAE;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,gBAAgB,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC;IACjD,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5E,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,MAAwB,EACxB,IAAI,GAAW,YAAY,EAAE,EAC7B,KAAK,GAAG,KAAK;IAEb,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,yFAAyF;IACzF,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,EAAE,GAAG,MAAM,EAAc,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;IACvF,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,MAAc;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAW,EAAE,CACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;IACnG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAClC,KAAK,IAAI,EAAE,GAAG,CAAC,GAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC;YAAE,OAAO,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,MAAc;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACnC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,OAAO,CAAC;QACnF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACnG,MAAM,MAAM,GAAW,EAAE,QAAQ,EAAE,QAAmC,EAAE,CAAC;IACzE,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gGAAgG;AAChG,kGAAkG;AAClG,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACtE,CAAC,CAAE,IAAgC;YACnC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,IAAY;IAC/C,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACjF,6FAA6F;IAC7F,2CAA2C;IAC3C,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-console.d.ts","sourceRoot":"","sources":["../../src/cli/run-console.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,OAAO,EAAkB,KAAK,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAKjE,oFAAoF;AACpF,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,4FAA4F;AAC5F,eAAO,MAAM,OAAO,YAAY,CAAC;AAMjC,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,mGAAmG;AACnG,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;AAQD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAKrD;AAKD,iFAAiF;AACjF,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS1F"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-console.js","sourceRoot":"","sources":["../../src/cli/run-console.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAa,MAAM,sBAAsB,CAAC;AAEjE,+DAA+D;AAC/D,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,oFAAoF;AACpF,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAE/B,4FAA4F;AAC5F,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC;AAEjC,oGAAoG;AACpG,iGAAiG;AACjG,+FAA+F;AAC/F,0DAA0D;AAC1D,6FAA6F;AAC7F,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAY,EAAE,IAAY;IACpE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,UAAU,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AACzG,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,IAAY;IACpD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,iGAAiG;AACjG,gGAAgG;AAChG,iGAAiG;AACjG,MAAM,aAAa,GACjB,2IAA2I,CAAC;AAE9I,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC;IACpG,CAAC;IACD,OAAO,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,+FAA+F;AAC/F,8FAA8F;AAC9F,sBAAsB;AACtB,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,IAAY,EAAE,KAAa;IACvE,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,gFAAgF,CAAC;IAC/G,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,YAAY,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAmB,IAAI,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpG,OAAO,YAAY,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC;IACnG,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC;QACjB,OAAO,2BAA2B,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-screens.d.ts","sourceRoot":"","sources":["../../src/cli/run-screens.ts"],"names":[],"mappings":"AAAA,oHAAoH;AAEpH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAW/D,0FAA0F;AAC1F,MAAM,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAK3E,wBAAsB,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1E;AAED,iGAAiG;AACjG,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAChC;AAKD,wBAAsB,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBvF;AAeD,iGAAiG;AACjG,wBAAsB,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CA8C5F;AAED,gGAAgG;AAChG,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,IAAI,MAAM,CAAC;CAClB;AAqBD,wBAAgB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAKvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-screens.js","sourceRoot":"","sources":["../../src/cli/run-screens.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAI7F,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAO/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAuBzC,eAAO,MAAM,KAAK,EAAE,KAmBnB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqLzD;AAeD,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAElD;AAcD,8FAA8F;AAC9F,wBAAgB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAAG,OAAO,CAE/D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /** `pinecall signup`: an org on Pinecall's cloud, made here, and its first key kept like a login's. */
2
- import type { Group } from "./groups.js";
3
- /** What the gateway answers a sign-up: the key once, whose it is, and the way into the console. */
4
- interface SignedUp {
5
- key: string;
6
- org: string;
7
- slug: string;
8
- name: string | null;
9
- code: string;
10
- }
11
- export declare const group: Group;
12
- /** What signup can be told besides the argv: where to print, and how the password arrives. Tests only. */
13
- export interface Making {
14
- out?: NodeJS.WritableStream;
15
- err?: NodeJS.WritableStream;
16
- env?: NodeJS.ProcessEnv;
17
- /** How the password is obtained. A test hands one in rather than driving a terminal. */
18
- password?: () => Promise<string>;
19
- }
20
- /** Read what the org will be, make it at the gateway, and keep the key it answers. */
21
- export declare function signup(argv: string[], how?: Making): Promise<number>;
22
- /** The one line that says what now exists and that this terminal is holding its key. */
23
- export declare function madeLine(made: SignedUp, url: string): string;
24
- export {};
25
- //# sourceMappingURL=signup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../src/cli/signup.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAMvG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAmCzC,mGAAmG;AACnG,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,KAAK,EAAE,KAkBnB,CAAC;AAEF,0GAA0G;AAC1G,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,sFAAsF;AACtF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAkD9E;AAoBD,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5D"}
@@ -1,126 +0,0 @@
1
- /** `pinecall signup`: an org on Pinecall's cloud, made here, and its first key kept like a login's. */
2
- import { parseArgs } from "node:util";
3
- import { pinecallHome, writeGateway } from "./credentials.js";
4
- import { CLOUD_URL } from "./env.js";
5
- import { aLineOfStdin, typedInSilence } from "./secret.js";
6
- import { asked, discovered } from "./testing/gateway.js";
7
- import { refusal } from "./whoami.js";
8
- const USAGE = `usage: pinecall signup [<gateway-url>] --org <slug> --email <you@…> --person "<your name>"
9
- [--name "<Org Name>"] [--password-stdin]`;
10
- // Asked for, never echoed, never a flag: a password on a command line is a password in the
11
- // shell's history. The same rule `login` holds its key to.
12
- // The rule is the GATEWAY's, and it says so at `/.well-known/pinecall`: a prompt with a number of
13
- // its own refused what the box would have taken, and a person read it as their password being bad.
14
- const PROMPT = (least) => (least > 0 ? `Password (${least} characters at least): ` : "Password: ");
15
- // The door a stranger knocks at, and what it answers: the one shape a key travels in, plus the
16
- // org's slug, the member and a one-use code for a browser. runtime docs/protocol/people.md.
17
- const SIGNUP = "/v1/signup";
18
- // The same person's key in the other world. The sign-up answers a production one — every door of
19
- // the org, and not `app`, because a deployed agent is held by a machine — and a terminal is a
20
- // laptop: what it keeps is the sandbox key, which is the world `pinecall run` answers in.
21
- const THE_OTHER_WORLD = "/v1/login/env";
22
- const SANDBOX = "sandbox";
23
- // Said when the second world could not be minted: the org exists and the production key is kept,
24
- // so nothing is lost, but `run` will be refused until the person holds a sandbox key.
25
- const ONE_WORLD_ONLY = (url) => `kept the production key: ${url} would not mint a sandbox one, and \`pinecall run\` needs it`;
26
- // Whether that door is open here is the gateway's own fact, asked before anything else: a person
27
- // should not type a password for a door that will refuse it. The gateway's refusal names the
28
- // setting; this says the same thing before the typing rather than after.
29
- const SHUT = (url) => `${url} takes no sign-ups: its operator opens them with PINECALL_SIGNUP, or makes the org and invites you — then \`pinecall login ${url}\``;
30
- export const group = {
31
- purpose: "make an org on Pinecall's cloud and keep its first key",
32
- usage: `${USAGE}
33
-
34
- Makes the org with you as its admin. What it may do is whatever the people who run that
35
- gateway decided for a new one: on a box of your own, everything; on a hosted one, its trial.
36
- The gateway is ${CLOUD_URL} unless another is named. The password is asked for without
37
- echoing it, or read from one line of stdin with --password-stdin.
38
-
39
- What this terminal keeps is the SANDBOX key, in ~/.pinecall/credentials (0600) under that
40
- gateway, so \`pinecall run\` and \`pinecall chat\` work straight after and nothing has to be
41
- exported: a laptop is where things are written. The console link it prints signs the browser
42
- in to production, which is where the org's numbers, people and usage are. What answers a
43
- production number is a key issued for a machine — \`pinecall keys issue\` — and never a laptop.
44
-
45
- A gateway that is a box of its own takes no sign-up and says so: there, an operator makes the
46
- org and invites you, and you arrive with \`pinecall login\`.`,
47
- run: signup,
48
- };
49
- /** Read what the org will be, make it at the gateway, and keep the key it answers. */
50
- export async function signup(argv, how = {}) {
51
- const out = how.out ?? process.stdout;
52
- const err = how.err ?? process.stderr;
53
- const { values, positionals } = parseArgs({
54
- args: argv,
55
- allowPositionals: true,
56
- options: {
57
- org: { type: "string" },
58
- name: { type: "string" },
59
- email: { type: "string" },
60
- person: { type: "string" },
61
- "password-stdin": { type: "boolean", default: false },
62
- },
63
- });
64
- const url = positionals[0] ?? CLOUD_URL;
65
- const missing = ["org", "email", "person"].filter((one) => values[one] === undefined);
66
- if (missing.length > 0) {
67
- err.write(`${USAGE}\n`);
68
- err.write(`missing: ${missing.map((one) => `--${one}`).join(" ")}\n`);
69
- return 2;
70
- }
71
- const says = await discovered(url);
72
- if (!says.signup) {
73
- err.write(`${SHUT(url)}\n`);
74
- return 1;
75
- }
76
- const typed = how.password ?? (values["password-stdin"] === true ? aLineOfStdin : () => typedInSilence(PROMPT(says.min_password), out));
77
- const password = (await typed()).trim();
78
- if (password === "") {
79
- err.write("no password was typed: nothing was made\n");
80
- return 2;
81
- }
82
- let made;
83
- try {
84
- // No key opens this door: it is the one that mints the first one.
85
- made = await asked({ url, apiKey: "" }, SIGNUP, {
86
- method: "POST",
87
- body: { org: values.org, name: values.name, email: values.email, person: values.person, password, device: "cli" },
88
- });
89
- }
90
- catch (refused) {
91
- err.write(`${refusal(refused)}\n`);
92
- return 1;
93
- }
94
- const environment = how.env ?? process.env;
95
- const laptop = await theSandboxKey(url, made.key);
96
- if (laptop === undefined)
97
- err.write(`${ONE_WORLD_ONLY(url)}\n`);
98
- writeGateway(url, { api_key: laptop ?? made.key, org: made.org }, pinecallHome(environment));
99
- out.write(`${madeLine(made, url)}\n`);
100
- out.write(`console ${url.replace(/\/$/, "")}/?login=${encodeURIComponent(made.code)} (opens within five minutes, once)\n`);
101
- return 0;
102
- }
103
- /**
104
- * The sandbox key, or nothing at all.
105
- *
106
- * A refusal here is not the sign-up failing: the org is made and its production key is in hand.
107
- * So it is answered as an absence and said on stderr, rather than thrown over an org that exists.
108
- */
109
- async function theSandboxKey(url, key) {
110
- try {
111
- const minted = await asked({ url, apiKey: key }, THE_OTHER_WORLD, {
112
- method: "POST",
113
- body: { env: SANDBOX },
114
- });
115
- return minted.key;
116
- }
117
- catch {
118
- return undefined;
119
- }
120
- }
121
- /** The one line that says what now exists and that this terminal is holding its key. */
122
- export function madeLine(made, url) {
123
- const who = made.name === null ? "its admin" : made.name;
124
- return `created org ${made.slug} on ${url} — signed in as ${who}, sandbox key kept in ~/.pinecall/credentials`;
125
- }
126
- //# sourceMappingURL=signup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signup.js","sourceRoot":"","sources":["../../src/cli/signup.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,KAAK,GAAG;gEACkD,CAAC;AAEjE,2FAA2F;AAC3F,2DAA2D;AAC3D,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,yBAAyB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAEnH,+FAA+F;AAC/F,4FAA4F;AAC5F,MAAM,MAAM,GAAG,YAAY,CAAC;AAE5B,iGAAiG;AACjG,8FAA8F;AAC9F,0FAA0F;AAC1F,MAAM,eAAe,GAAG,eAAe,CAAC;AACxC,MAAM,OAAO,GAAG,SAAS,CAAC;AAE1B,iGAAiG;AACjG,sFAAsF;AACtF,MAAM,cAAc,GAAG,CAAC,GAAW,EAAU,EAAE,CAC7C,4BAA4B,GAAG,8DAA8D,CAAC;AAEhG,iGAAiG;AACjG,6FAA6F;AAC7F,yEAAyE;AACzE,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE,CACnC,GAAG,GAAG,8HAA8H,GAAG,IAAI,CAAC;AAW9I,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,OAAO,EAAE,wDAAwD;IACjE,KAAK,EAAE,GAAG,KAAK;;;;mBAIE,SAAS;;;;;;;;;;+DAUmC;IAC7D,GAAG,EAAE,MAAM;CACZ,CAAC;AAWF,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc,EAAE,GAAG,GAAW,EAAE;IAC3D,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE;YACP,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;SACtD;KACF,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IACxC,MAAM,OAAO,GAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IACjG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACxB,GAAG,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACxI,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACH,kEAAkE;QAClE,IAAI,GAAG,MAAM,KAAK,CAAW,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;SAClH,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,SAAS;QAAE,GAAG,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChE,YAAY,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7F,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC9H,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,GAAW;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAkB,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE;YACjF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;SACvB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,QAAQ,CAAC,IAAc,EAAE,GAAW;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzD,OAAO,eAAe,IAAI,CAAC,IAAI,OAAO,GAAG,mBAAmB,GAAG,+CAA+C,CAAC;AACjH,CAAC"}
@@ -1 +0,0 @@
1
- :root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ground:#0d0d0f;--panel:#101013;--panel-2:#16161a;--panel-3:#202028;--edge:#24242a;--edge-strong:#24242a;--edge-soft:#1c1c22;--ink:#ececec;--ink-2:#c9c9d0;--ink-soft:#8b8b93;--ink-faint:#5c5c66;--accent:#f0569a;--accent-soft:#1a1217;--accent-line:#3a2130;--on-accent:#fff;--ok:#7fae86;--warn:#cfae7e;--face:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--face-fixed:"IBM Plex Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--sunk:#0a0a0c;--hover:#1a1a20;--selected:#202028;--step:8px;--rail:204px;--head:50px;--radius:4px;--radius-control:5px;--radius-panel:8px}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ground:#f6f6f4;--panel:#fff;--panel-2:#fbfbf9;--panel-3:#eaeae6;--edge:#e3e3de;--edge-strong:#e3e3de;--edge-soft:#ededea;--ink:#17171a;--ink-2:#3e3e45;--ink-soft:#74747c;--ink-faint:#a4a4ac;--accent:#c92572;--accent-soft:#fdf1f6;--accent-line:#f0cfdf;--ok:#3d7a4c;--warn:#8a6a2c;--sunk:#f1f1ee;--hover:#f1f1ee;--selected:#eaeae6}.page{min-width:0;max-width:1040px;padding:26px 28px 34px}.page-wide{max-width:1320px}.page-eyebrow{color:var(--ink-faint);font-family:var(--face-fixed);letter-spacing:.06em;text-transform:uppercase;font-size:10.5px}.page-title{letter-spacing:-.01em;margin:4px 0 0;font-size:20px;font-weight:500}.page-title-fixed{font-family:var(--face-fixed);letter-spacing:0}.page-lede{color:var(--ink-soft);text-wrap:pretty;max-width:68ch;margin:6px 0 0;font-size:14px}.section{margin-top:22px}.section-title{color:var(--ink-faint);font-family:var(--face-fixed);letter-spacing:.06em;text-transform:uppercase;margin:0 0 10px;font-size:10.5px;font-weight:400}.note{color:var(--ink-faint);font-family:var(--face-fixed);text-wrap:pretty;margin:14px 0 0;font-size:11px}.note+.panel{margin-top:14px}.note-warn{color:var(--accent)}.panel{background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius-panel);overflow:hidden}.panel-head{border-bottom:1px solid var(--edge);justify-content:space-between;align-items:baseline;gap:12px;padding:10px 14px;display:flex}.panel-title{color:var(--ink-faint);font-family:var(--face-fixed);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:10.5px;font-weight:400}.panel-body{padding:12px 14px;font-size:13px}.grid{gap:14px;display:grid}.grid-3{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.badge{color:var(--ink-faint);font-family:var(--face-fixed);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;font-size:10.5px}.badge-live{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius);color:var(--accent);padding:1px 6px}.mono{font-family:var(--face-fixed);font-size:.92em}.dim{color:var(--ink-soft)}.faint{color:var(--ink-faint)}.accent{color:var(--accent)}.table-wrap{background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius-panel);overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{border-bottom:1px solid var(--edge);color:var(--ink-faint);font-family:var(--face-fixed);letter-spacing:.06em;text-align:left;text-transform:uppercase;white-space:nowrap;padding:9px 16px;font-size:10.5px;font-weight:400}.table td{border-bottom:1px solid var(--edge-soft);vertical-align:baseline;padding:11px 16px}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover td{background:var(--hover)}.table td.num,.table th.num{font-family:var(--face-fixed);font-variant-numeric:tabular-nums;text-align:right;font-size:11.5px}.table td.id{font-family:var(--face-fixed);font-size:12px}.table td.id .link{color:var(--accent);font-size:12px}tr.is-open td{background:var(--selected)}.kv{border-collapse:collapse;width:100%}.kv td{font-family:var(--face-fixed);padding:4px 0;font-size:11.5px}.kv-key{color:var(--ink-soft)}.kv-val{color:var(--ink-2);font-variant-numeric:tabular-nums;text-align:right}.chips{flex-wrap:wrap;gap:5px 7px;display:flex}.chip{border:1px solid var(--edge);border-radius:var(--radius);color:var(--ink-2);font-family:var(--face-fixed);align-items:baseline;gap:4px;padding:1px 5px;font-size:10.5px;display:inline-flex}.chip-key{color:var(--ink-soft)}.chip-val{color:var(--ink-2);font-variant-numeric:tabular-nums}.tabs{background:var(--sunk);border:1px solid var(--edge);border-radius:var(--radius-control);height:28px;margin-top:22px;display:inline-flex;overflow:hidden}.tab{border:none;border-right:1px solid var(--edge);color:var(--ink-soft);cursor:pointer;font-family:var(--face-fixed);background:0 0;height:100%;padding:0 10px;font-size:11.5px}.tab:last-child{border-right:none}.tab:hover{color:var(--ink)}.tab:focus-visible{outline-offset:-2px}.tab.is-active{background:var(--selected);color:var(--ink)}.button{border:1px solid var(--edge);border-radius:var(--radius-control);color:var(--ink-2);cursor:pointer;white-space:nowrap;background:0 0;align-items:center;gap:7px;height:28px;padding:0 10px;font-size:12.5px;display:inline-flex}.button:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}.button:disabled{cursor:default;opacity:.4}.button-accent{background:var(--accent);border-color:var(--accent);color:var(--on-accent);height:30px;padding:0 14px;font-weight:500}.button-accent:hover:not(:disabled){border-color:var(--accent);color:var(--on-accent)}.input{background:var(--sunk);border:1px solid var(--edge);border-radius:var(--radius-control);color:var(--ink-2);min-width:0;padding:5px 8px;font-size:12.5px}.input:focus{color:var(--ink)}.input::placeholder{color:var(--ink-faint)}.link{color:var(--ink-soft);cursor:pointer;font-family:var(--face-fixed);background:0 0;border:none;padding:0;font-size:11.5px}.link:hover{color:var(--accent)}.empty{max-width:72ch;padding-top:8px}.empty-title{margin:0;font-size:15px;font-weight:500}.empty-body{color:var(--ink-soft);text-wrap:pretty;margin:8px 0 0;font-size:13.5px;line-height:1.6}.way{background:var(--ground);justify-content:center;align-items:center;min-height:100%;padding:32px 20px;display:flex}.way-card{background:var(--panel);border:1px solid var(--edge);border-radius:var(--radius-panel);flex-direction:column;width:100%;max-width:25rem;padding:28px 28px 24px;display:flex}.way-mark{color:var(--ink-faint);font-family:var(--face-fixed);letter-spacing:.02em;align-items:baseline;gap:6px;margin-bottom:20px;font-size:11.5px;display:flex}.way-mark b{color:var(--ink);font-weight:500}.way-title{color:var(--ink);letter-spacing:-.015em;margin:0 0 6px;font-size:20px;font-weight:500}.way-lede{color:var(--ink-soft);text-wrap:pretty;margin:0 0 22px;font-size:13.5px;line-height:1.55}.way-fields{flex-direction:column;gap:14px;display:flex}.way-field{flex-direction:column;gap:6px;display:flex}.way-label{color:var(--ink-2);font-size:12px;font-weight:500}.way-label span{color:var(--ink-faint);font-family:var(--face-fixed);margin-left:6px;font-size:11px;font-weight:400}.way-input{background:var(--sunk);border:1px solid var(--ink-faint);border-radius:var(--radius-control);color:var(--ink);font-family:var(--face);width:100%;height:38px;padding:0 11px;font-size:14px}.way-input:focus{border-color:var(--accent);outline:none}.way-input::placeholder{color:var(--ink-faint)}.way-go{background:var(--ink);border:1px solid var(--ink);border-radius:var(--radius-control);color:var(--ground);cursor:pointer;font-family:var(--face);justify-content:center;align-items:center;width:100%;height:38px;margin-top:22px;font-size:14px;font-weight:500;display:inline-flex}.way-go:hover:not(:disabled){opacity:.9}.way-go:disabled{cursor:not-allowed;opacity:.4}.way-refused{border-left:2px solid var(--accent);color:var(--ink-2);text-wrap:pretty;margin:18px 0 0;padding-left:10px;font-size:13px;line-height:1.5}.way-else{border-top:1px solid var(--edge-soft);color:var(--ink-soft);text-wrap:pretty;flex-direction:column;gap:8px;margin-top:24px;padding-top:18px;font-size:12.5px;line-height:1.5;display:flex}.way-else p{margin:0}.way-else code{color:var(--ink-2);font-family:var(--face-fixed);font-size:12px}.way-world{align-self:flex-start;height:30px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--ground);color:var(--ink);font-family:var(--face);-webkit-font-smoothing:antialiased;font-size:15px;font-weight:400;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}:focus-visible{outline:1px solid var(--accent);outline-offset:2px}::selection{background:var(--accent-line)}.fixed{font-family:var(--face-fixed);font-size:12px}@keyframes pulse{0%,to{opacity:.35}50%{opacity:1}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--panel-3);border:3px solid var(--ground);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}.shell{flex-direction:column;height:100%;display:flex}.shell-head{background:var(--panel);border-bottom:1px solid var(--edge);min-height:var(--head);flex-wrap:wrap;flex:none;align-items:center;gap:18px;padding:0 16px;display:flex}.shell-body{grid-template-columns:minmax(0, var(--rail)) minmax(0, 1fr);flex:1;min-height:0;display:grid}.shell-rail{background:var(--panel-2);border-right:1px solid var(--edge);flex-direction:column;min-width:0;display:flex;overflow-y:auto}.shell-screen{flex-direction:column;min-width:0;display:flex;overflow:auto}.brand{flex:none;align-items:center;gap:9px;display:flex}.brand-mark{height:18px;display:block}.brand-name{letter-spacing:-.01em;font-size:12.5px}.brand-sep{color:var(--ink-faint)}.brand-kind{color:var(--ink-soft)}.head-crumbs{color:var(--ink-soft);align-items:center;gap:7px;min-width:0;display:flex}.head-crumbs b{color:var(--ink);font-weight:500}.head-sep{color:var(--ink-faint)}.head-right{flex-wrap:wrap;align-items:center;gap:14px;margin-left:auto;display:flex}.head-whose{color:var(--ink-soft);font-size:11.5px}.theme-toggle,.head-leave{border:1px solid var(--edge);color:var(--ink-soft);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:7px;height:26px;padding:0 9px;font-size:11px;display:inline-flex}.theme-toggle:hover,.head-leave:hover{border-color:var(--ink);color:var(--ink)}.theme-dot{background:var(--ink);border-radius:50%;width:8px;height:8px;display:block}.rail-group{padding:14px 12px 6px}.rail-label{color:var(--ink-faint);letter-spacing:.06em;text-transform:uppercase;margin:0 0 8px;padding:0 9px;font-size:10.5px}.rail-links{flex-direction:column;gap:1px;display:flex}.rail-link{color:var(--ink-soft);border-left:2px solid #0000;border-radius:0 5px 5px 0;justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;font-size:13.5px;display:flex}.rail-link:hover{background:var(--hover)}.rail-link-here{background:var(--selected);border-left-color:var(--accent);color:var(--ink)}.rail-hint{color:var(--ink-faint);font-size:10px}.rail-none{color:var(--ink-faint);padding:4px 9px;font-size:12px}.rail-agent{flex-direction:column;display:flex}.rail-agent-name{justify-content:flex-start;font-size:12.5px}.rail-agent-dot{background:var(--ok);border-radius:50%;flex:none;width:6px;height:6px}.rail-agent-here .rail-agent-name{color:var(--ink)}.rail-sub{border-left:1px solid var(--edge);flex-direction:column;gap:1px;margin:2px 0 6px 14px;padding-left:2px;display:flex}.rail-sub .rail-link{padding:5px 9px;font-size:13px}.rail-foot{border-top:1px solid var(--edge);color:var(--ink-soft);margin-top:auto;padding:14px 21px 16px;font-size:10.5px;line-height:1.8}.rail-foot-line{color:var(--ink-faint)}.nothing{color:var(--ink-faint);font-family:var(--face-fixed);text-wrap:pretty;max-width:64ch;margin:0;font-size:11.5px}.nothing .fixed{color:var(--ink-2);font-size:inherit}.workers{margin:22px 0 0;padding:0;list-style:none}.worker{border-bottom:1px solid var(--edge-soft);grid-template-columns:minmax(0,1fr) 110px 120px 110px auto;align-items:baseline;gap:14px;padding:10px 16px;display:grid}.worker:last-child{border-bottom:none}.worker-quiet{opacity:.55}.worker-load{color:var(--ink-soft);font-size:11.5px}.worker-standing{color:var(--ink-faint);font-size:10.5px}@media (width<=860px){.worker{grid-template-columns:minmax(0,1fr) auto}}.tenants{margin:22px 0 0;padding:0;list-style:none}.tenant{border-bottom:1px solid var(--edge-soft);grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:baseline;gap:16px;padding:11px 16px;display:grid}.tenant:last-child{border-bottom:none}.tenant:hover{background:var(--hover)}.tenant-id{color:var(--ink-soft);font-size:12px}.tenant-make{margin-top:22px}.tenant-make-form{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:10px;padding:14px;display:grid}.limits{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 16px;padding:14px 16px;display:grid}.limit{flex-direction:column;gap:4px;display:flex}.limit-name{color:var(--ink-soft);font-size:11px}.limit-held{color:var(--ink-faint);font-size:10.5px}.limit-input{width:100%}.limits-save{align-items:center;gap:12px;padding:0 16px 14px;display:flex}.of-the-org-panel{margin-top:22px}.of-the-org-empty{padding:0 16px 14px}.of-the-org-note{padding:0 16px 12px}.of-the-org{margin:0;padding:0;list-style:none}.of-the-org li{border-bottom:1px solid var(--edge-soft);grid-template-columns:minmax(0,1fr) 110px minmax(0,1fr) auto;align-items:baseline;gap:14px;padding:9px 16px;display:grid}.of-the-org li:last-child{border-bottom:none}.gone{opacity:.55}@media (width<=760px){.tenant,.tenant-make-form,.of-the-org li{grid-template-columns:minmax(0,1fr)}}.doors-pick{flex-wrap:wrap;align-items:center;gap:10px;margin-top:22px;display:flex}.doors{margin:22px 0 0;padding:0;list-style:none}.door{border-bottom:1px solid var(--edge-soft);grid-template-columns:minmax(0,1.2fr) 90px minmax(0,1fr) 110px;align-items:baseline;gap:14px;padding:10px 16px;display:grid}.door:last-child{border-bottom:none}.door-source{color:var(--ink-faint);font-size:10.5px}@media (width<=760px){.door{grid-template-columns:minmax(0,1fr)}}.consumed{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:22px;display:grid}.consumed-org{padding:14px 16px}.consumed-name{margin:0 0 8px;font-size:13px}.consumed-figure{color:var(--ink-soft);font-size:11.5px}.metered{border-collapse:collapse;width:100%;font-size:12px}.metered th{border-bottom:1px solid var(--edge);color:var(--ink-faint);letter-spacing:.05em;text-align:left;text-transform:uppercase;padding:8px 10px;font-size:10.5px;font-weight:500}.metered td{border-bottom:1px solid var(--edge-soft);white-space:nowrap;padding:7px 10px}.metered tr:last-child td{border-bottom:none}.metered-scroll{margin-top:22px;overflow-x:auto}.metered-more{align-items:center;gap:12px;padding:12px 16px;display:flex}