@w6w/cli 0.9.15 → 0.9.23

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 (62) hide show
  1. package/README.md +29 -14
  2. package/dist/bin/w6w.js +4 -0
  3. package/dist/bin/w6w.js.map +1 -1
  4. package/dist/mod.d.ts +20 -2
  5. package/dist/mod.d.ts.map +1 -1
  6. package/dist/mod.js +25 -13
  7. package/dist/mod.js.map +1 -1
  8. package/dist/src/args.d.ts +8 -1
  9. package/dist/src/args.d.ts.map +1 -1
  10. package/dist/src/args.js +15 -3
  11. package/dist/src/args.js.map +1 -1
  12. package/dist/src/client.d.ts +51 -4
  13. package/dist/src/client.d.ts.map +1 -1
  14. package/dist/src/client.js +83 -30
  15. package/dist/src/client.js.map +1 -1
  16. package/dist/src/commands/agents-studio.d.ts +24 -0
  17. package/dist/src/commands/agents-studio.d.ts.map +1 -0
  18. package/dist/src/commands/agents-studio.js +431 -0
  19. package/dist/src/commands/agents-studio.js.map +1 -0
  20. package/dist/src/commands/assets.d.ts +47 -0
  21. package/dist/src/commands/assets.d.ts.map +1 -0
  22. package/dist/src/commands/assets.js +412 -0
  23. package/dist/src/commands/assets.js.map +1 -0
  24. package/dist/src/commands/auth.d.ts +24 -0
  25. package/dist/src/commands/auth.d.ts.map +1 -0
  26. package/dist/src/commands/auth.js +112 -0
  27. package/dist/src/commands/auth.js.map +1 -0
  28. package/dist/src/commands/config.d.ts +21 -0
  29. package/dist/src/commands/config.d.ts.map +1 -0
  30. package/dist/src/commands/config.js +73 -0
  31. package/dist/src/commands/config.js.map +1 -0
  32. package/dist/src/commands/connections.d.ts +1 -1
  33. package/dist/src/commands/connections.d.ts.map +1 -1
  34. package/dist/src/commands/connections.js +27 -2
  35. package/dist/src/commands/connections.js.map +1 -1
  36. package/dist/src/commands/index.d.ts +6 -0
  37. package/dist/src/commands/index.d.ts.map +1 -1
  38. package/dist/src/commands/index.js +18 -0
  39. package/dist/src/commands/index.js.map +1 -1
  40. package/dist/src/commands/ls.d.ts +21 -0
  41. package/dist/src/commands/ls.d.ts.map +1 -0
  42. package/dist/src/commands/ls.js +53 -0
  43. package/dist/src/commands/ls.js.map +1 -0
  44. package/dist/src/commands/models.d.ts +16 -0
  45. package/dist/src/commands/models.d.ts.map +1 -0
  46. package/dist/src/commands/models.js +126 -0
  47. package/dist/src/commands/models.js.map +1 -0
  48. package/dist/src/commands/vars.d.ts.map +1 -1
  49. package/dist/src/commands/vars.js +2 -2
  50. package/dist/src/commands/vars.js.map +1 -1
  51. package/dist/src/config-store.d.ts +86 -0
  52. package/dist/src/config-store.d.ts.map +1 -0
  53. package/dist/src/config-store.js +129 -0
  54. package/dist/src/config-store.js.map +1 -0
  55. package/dist/src/help.generated.d.ts.map +1 -1
  56. package/dist/src/help.generated.js +2723 -105
  57. package/dist/src/help.generated.js.map +1 -1
  58. package/dist/src/store-fs.d.ts +34 -0
  59. package/dist/src/store-fs.d.ts.map +1 -0
  60. package/dist/src/store-fs.js +151 -0
  61. package/dist/src/store-fs.js.map +1 -0
  62. package/package.json +2 -2
package/README.md CHANGED
@@ -23,18 +23,32 @@ released together. A given version means the same set of operations in every lan
23
23
 
24
24
  ## Configuration
25
25
 
26
- Two environment variables:
26
+ With nothing configured, `w6w` talks to **`https://api.w6w.io`**. Save a token once and later
27
+ commands use it:
27
28
 
28
- | Variable | Meaning | Required |
29
- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
30
- | `W6W_BASE_URL` | The **origin** of your w6w server, e.g. `https://api.example.com`. The API is served at the root of that host, so nothing is appended — and a stale `/api` suffix from `0.1.x` must be dropped. | Yes |
31
- | `W6W_TOKEN` | Your API token, sent as `Authorization: Bearer <token>` on every request. | Yes |
29
+ ```bash
30
+ printf '%s' "$W6W_TOKEN" | w6w auth login - # preferred: keeps the token out of shell history
31
+ w6w auth login <token> # also works, but the token lands in history and `ps`
32
+ w6w auth status # base URL, where it came from, masked token
33
+ w6w auth logout
34
+ w6w config get-base-url # effective base URL and its source
35
+ w6w config set-base-url https://w6w.example.com # save it (tokens are per host: auth login again)
36
+ ```
37
+
38
+ The token is stored per user (`~/.config/w6w/config.json`, or `$XDG_CONFIG_HOME/w6w/…`;
39
+ `%APPDATA%\w6w\…` on Windows), mode `0600`, and **bound to the base URL it was saved for** — it is
40
+ never sent to another host. Two environment variables and two flags override it:
41
+
42
+ | Variable | Meaning | Required |
43
+ | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
44
+ | `W6W_BASE_URL` | The **origin** of your w6w server, e.g. `https://api.example.com`. Defaults to `https://api.w6w.io`. The API is served at the root of that host, so nothing is appended — and a stale `/api` suffix from `0.1.x` must be dropped. | No |
45
+ | `W6W_TOKEN` | Your API token, sent as `Authorization: Bearer <token>` on every request. Not needed after `w6w auth login`. | No |
32
46
 
33
- Both have a flag equivalent, and **a flag always wins over the environment**: `--base-url <url>` and
34
- `--token <token>`.
47
+ Both have a flag equivalent, and **a flag always wins over the environment, which wins over the
48
+ stored config**: `--base-url <url>` and `--token <token>`.
35
49
 
36
50
  ```bash
37
- export W6W_BASE_URL=https://api.example.com
51
+ export W6W_BASE_URL=https://api.example.com # only for a self-hosted server
38
52
  export W6W_TOKEN=…
39
53
  w6w workflows list
40
54
  ```
@@ -48,6 +62,7 @@ server reachable, which is exactly when people need them most.
48
62
  w6w me # who am I, and which CLI version is this? (alias: info)
49
63
 
50
64
  # Discover what you can run — a `conn_…`, `wf_…`, `fn_…` or `ep_…` id.
65
+ w6w ls workflows # also: ls integrations | functions | endpoints (endpoints is unstable)
51
66
  w6w connections list # short forms: `w6w conn ls`, `w6w wf ls`, `w6w docs ls`
52
67
  w6w workflows list
53
68
  w6w functions list
@@ -108,12 +123,12 @@ root help and exits `0`.
108
123
 
109
124
  ## Exit codes
110
125
 
111
- | Code | Meaning |
112
- | ---- | -------------------------------------------------------------------------------------------------------- |
113
- | `0` | Success — including help, and including a _queued_ or _running_ workflow |
114
- | `1` | Usage or configuration error — unknown command, missing argument, bad flag or JSON, no base URL or token |
115
- | `2` | API error — 4xx/5xx from the server, including auth failure, or the server could not be reached |
116
- | `3` | Run failure — `--wait` returned a run with status `failed` |
126
+ | Code | Meaning |
127
+ | ---- | ------------------------------------------------------------------------------------------------------------------- |
128
+ | `0` | Success — including help, and including a _queued_ or _running_ workflow |
129
+ | `1` | Usage or configuration error — unknown command, missing argument, bad flag or JSON, no token, an empty `--base-url` |
130
+ | `2` | API error — 4xx/5xx from the server, including auth failure, or the server could not be reached |
131
+ | `3` | Run failure — `--wait` returned a run with status `failed` |
117
132
 
118
133
  Code `3` exists so `w6w workflows run --wait` is usable in CI without parsing stdout. Keeping it
119
134
  distinct from `2` matters: a failed workflow and an unreachable API demand opposite responses, and a
package/dist/bin/w6w.js CHANGED
@@ -21,6 +21,7 @@
21
21
  import { main } from "../mod.js";
22
22
  import { COMMANDS } from "../src/commands/index.js";
23
23
  import { systemRuntime } from "../src/runtime.js";
24
+ import { fsConfigStore, readStdin, stdinIsTerminal } from "../src/store-fs.js";
24
25
  /**
25
26
  * The commands this build can run.
26
27
  *
@@ -53,6 +54,9 @@ const code = await main(runtime.args, runtime, {
53
54
  env: runtime.env,
54
55
  isTty: stdoutIsTerminal(),
55
56
  commands,
57
+ // The only place the real file store and real stdin are constructed.
58
+ store: fsConfigStore(runtime.env),
59
+ stdin: { isTerminal: stdinIsTerminal, read: readStdin },
56
60
  });
57
61
  runtime.exit(code);
58
62
  //# sourceMappingURL=w6w.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"w6w.js","sourceRoot":"","sources":["../../bin/w6w.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAoB,QAAQ,CAAC;AAE3C;;;;;;;;;GASG;AACH,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,UAGZ,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,IAAI,IAAI,EAAE,UAAU;QAAE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;IAC7C,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,KAAK,EAAE,gBAAgB,EAAE;IACzB,QAAQ;CACT,CAAC,CAAC;AACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"w6w.js","sourceRoot":"","sources":["../../bin/w6w.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAoB,QAAQ,CAAC;AAE3C;;;;;;;;;GASG;AACH,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,UAGZ,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,IAAI,IAAI,EAAE,UAAU;QAAE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;IAC7C,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,KAAK,EAAE,gBAAgB,EAAE;IACzB,QAAQ;IACR,qEAAqE;IACrE,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC,KAAK,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE;CACxD,CAAC,CAAC;AACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
package/dist/mod.d.ts CHANGED
@@ -27,14 +27,17 @@
27
27
  */
28
28
  import type { Invocation } from "./src/args.ts";
29
29
  import type { EnvReader } from "./src/client.ts";
30
+ import type { ConfigStore, StdinSource, StoredConfig } from "./src/config-store.ts";
30
31
  import type { Output } from "./src/output.ts";
31
32
  import type { HelpCommand } from "./src/help.generated.ts";
32
33
  import type { CliIo } from "./src/runtime.ts";
33
34
  import type { FetchLike, W6WClient } from "@w6w/sdk";
34
35
  export { parse } from "./src/args.ts";
35
36
  export type { FlagSpec, GlobalOptions, Invocation, ParseOptions, ParseResult } from "./src/args.ts";
36
- export { createClient, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV } from "./src/client.ts";
37
- export type { ClientOptions, EnvReader } from "./src/client.ts";
37
+ export { createClient, DEFAULT_BASE_URL, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV, resolveSettings, } from "./src/client.ts";
38
+ export type { ClientOptions, EnvReader, ResolvedSettings, Source } from "./src/client.ts";
39
+ export { configPath, loadConfig, NO_CONFIG, NO_STDIN, NO_STORE, parseConfig, serializeConfig, } from "./src/config-store.ts";
40
+ export type { ConfigStore, StdinSource, StoredConfig } from "./src/config-store.ts";
38
41
  export { createOutput, ENV_NO_COLOR, useColor } from "./src/output.ts";
39
42
  export type { Output, OutputOptions, Styles } from "./src/output.ts";
40
43
  export { EXIT_API_ERROR, EXIT_RUN_FAILURE, EXIT_SUCCESS, EXIT_USAGE, exitCodeFor, } from "./src/exit.ts";
@@ -79,6 +82,14 @@ export interface CommandContext {
79
82
  * @throws {ConfigError} When the base URL or token is missing or unusable.
80
83
  */
81
84
  client(): W6WClient;
85
+ /** The environment seam this invocation runs with. */
86
+ readonly env: EnvReader;
87
+ /** The stored per-user config, read once before the handler runs (nothing stored by default). */
88
+ readonly stored: StoredConfig;
89
+ /** Where the config is persisted. Only the `auth` and `config` commands write through it. */
90
+ readonly store: ConfigStore;
91
+ /** Standard input, for `auth login -`. */
92
+ readonly stdin: StdinSource;
82
93
  }
83
94
  /**
84
95
  * One command's implementation.
@@ -108,6 +119,13 @@ export interface CliOptions {
108
119
  isTty?: boolean;
109
120
  /** The commands that are wired up. Defaults to none. */
110
121
  commands?: CommandRegistry;
122
+ /**
123
+ * The per-user config store. Defaults to {@linkcode NO_STORE}: nothing stored,
124
+ * no file I/O. Only `bin/w6w.ts` wires the real one.
125
+ */
126
+ store?: ConfigStore;
127
+ /** Standard input. Defaults to {@linkcode NO_STDIN}: a terminal, never read. */
128
+ stdin?: StdinSource;
111
129
  }
112
130
  /**
113
131
  * Runs a command line and returns its exit code. The whole CLI.
package/dist/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"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"}
package/dist/mod.js CHANGED
@@ -27,12 +27,14 @@
27
27
  */
28
28
  import { GLOBAL_FLAG_SPECS, parse } from "./src/args.js";
29
29
  import { createClient, NO_ENV } from "./src/client.js";
30
+ import { loadConfig, NO_STDIN, NO_STORE } from "./src/config-store.js";
30
31
  import { createOutput } from "./src/output.js";
31
32
  import { EXIT_SUCCESS, EXIT_USAGE, exitCodeFor } from "./src/exit.js";
32
33
  import { renderCommandHelp, renderGroupHelp, renderHelp, renderRootHelp, resolve, } from "./src/help.js";
33
34
  import { HELP_TREE } from "./src/help.generated.js";
34
35
  export { parse } from "./src/args.js";
35
- export { createClient, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV } from "./src/client.js";
36
+ export { createClient, DEFAULT_BASE_URL, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV, resolveSettings, } from "./src/client.js";
37
+ export { configPath, loadConfig, NO_CONFIG, NO_STDIN, NO_STORE, parseConfig, serializeConfig, } from "./src/config-store.js";
36
38
  export { createOutput, ENV_NO_COLOR, useColor } from "./src/output.js";
37
39
  export { EXIT_API_ERROR, EXIT_RUN_FAILURE, EXIT_SUCCESS, EXIT_USAGE, exitCodeFor, } from "./src/exit.js";
38
40
  export { renderCommandHelp, renderGroupHelp, renderHelp, renderRootHelp, resolve, } from "./src/help.js";
@@ -51,7 +53,7 @@ export { COMMAND_PATHS, EXIT_CODES, GLOBAL_FLAGS, HELP_TREE } from "./src/help.g
51
53
  * The explicit `: string` annotation is required, not decorative: JSR publishes
52
54
  * this file as TypeScript source and rejects inferred public types.
53
55
  */
54
- export const VERSION = "0.9.15";
56
+ export const VERSION = "0.9.23";
55
57
  /** `w6w help <command>` is accepted as an alias for `w6w <command> --help`. */
56
58
  const HELP_COMMAND = "help";
57
59
  /**
@@ -213,18 +215,28 @@ async function dispatch(routed, io, options) {
213
215
  // Built on demand and remembered: a command that never asks for the API never
214
216
  // needs a token, and one that asks twice gets one client, not two.
215
217
  let client = null;
216
- const context = {
217
- command: routed.command,
218
- invocation: routed.invocation,
219
- out,
220
- client: () => {
221
- if (client === null) {
222
- client = createClient(globals, options.env ?? NO_ENV, { fetch: options.fetch });
223
- }
224
- return client;
225
- },
226
- };
218
+ const env = options.env ?? NO_ENV;
219
+ const store = options.store ?? NO_STORE;
227
220
  try {
221
+ // Read once, before any handler: every dispatched command sees the same
222
+ // stored config, `createClient` stays synchronous, and a malformed file fails
223
+ // the command up front (help and `--version` never reach this point).
224
+ const stored = await loadConfig(store);
225
+ const context = {
226
+ command: routed.command,
227
+ invocation: routed.invocation,
228
+ out,
229
+ env,
230
+ stored,
231
+ store,
232
+ stdin: options.stdin ?? NO_STDIN,
233
+ client: () => {
234
+ if (client === null) {
235
+ client = createClient(globals, env, { fetch: options.fetch, stored });
236
+ }
237
+ return client;
238
+ },
239
+ };
228
240
  return (await handler(context)) ?? EXIT_SUCCESS;
229
241
  }
230
242
  catch (error) {
package/dist/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,8 @@ export interface Invocation {
50
50
  globals: GlobalOptions;
51
51
  /** Non-global flags, keyed by camelCased name. Empty unless `flags` was passed. */
52
52
  options: Record<string, string | boolean>;
53
+ /** Every value of a repeatable flag (see {@linkcode REPEATABLE_FLAGS}), in order, by camelCased name. */
54
+ lists?: Record<string, string[]>;
53
55
  }
54
56
  /** What `parse()` returns: a parsed command line, or a usage error to report. */
55
57
  export type ParseResult = {
@@ -67,6 +69,11 @@ export interface ParseOptions {
67
69
  /** The command paths that exist. Defaults to the generated contract's. */
68
70
  commands?: readonly (readonly string[])[];
69
71
  }
72
+ /**
73
+ * Flags that may be given more than once. Their values accumulate in
74
+ * `Invocation.lists`; `options` still holds the last one, as for every flag.
75
+ */
76
+ export declare const REPEATABLE_FLAGS: ReadonlySet<string>;
70
77
  /**
71
78
  * Short spellings for a group name — pure typing convenience, not a second
72
79
  * command. `w6w conn list` and `w6w connections list` resolve to the exact same
@@ -87,7 +94,7 @@ export declare const SUBCOMMAND_ALIASES: Record<string, string>;
87
94
  *
88
95
  * Accepted forms: `--flag`, `--flag value`, `--flag=value`, a short alias
89
96
  * (`-h`, `-v`), and `--` to end flag parsing. A repeated flag keeps the last
90
- * value. An unknown flag, a missing value, or a value handed to a boolean flag
97
+ * value (a repeatable one also accumulates all of them). An unknown flag, a missing value, or a value handed to a boolean flag
91
98
  * are all reported as usage errors.
92
99
  */
93
100
  export declare function parse(argv: string[], options?: ParseOptions): ParseResult;
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAIrC,CAAC;AAEJ,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC3C;AAED,iFAAiF;AACjF,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEtD,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAC3C;AAmCD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAErD,CAAC;AAuBF;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CA6E7E"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAIrC,CAAC;AAEJ,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC1C,yGAAyG;IACzG,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAClC;AAED,iFAAiF;AACjF,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEtD,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAuB,CAAC;AAmCzE;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAErD,CAAC;AAuBF;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CAmF7E"}
package/dist/src/args.js CHANGED
@@ -26,6 +26,11 @@ export const GLOBAL_FLAG_SPECS = GLOBAL_FLAGS.map((flag) => ({
26
26
  alias: flag.alias,
27
27
  type: flag.type,
28
28
  }));
29
+ /**
30
+ * Flags that may be given more than once. Their values accumulate in
31
+ * `Invocation.lists`; `options` still holds the last one, as for every flag.
32
+ */
33
+ export const REPEATABLE_FLAGS = new Set(["--stop"]);
29
34
  /** `--base-url` → `baseUrl`. */
30
35
  function optionKey(flagName) {
31
36
  return flagName.replace(/^--/, "").replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
@@ -99,7 +104,7 @@ function normalizeAliases(operands) {
99
104
  *
100
105
  * Accepted forms: `--flag`, `--flag value`, `--flag=value`, a short alias
101
106
  * (`-h`, `-v`), and `--` to end flag parsing. A repeated flag keeps the last
102
- * value. An unknown flag, a missing value, or a value handed to a boolean flag
107
+ * value (a repeatable one also accumulates all of them). An unknown flag, a missing value, or a value handed to a boolean flag
103
108
  * are all reported as usage errors.
104
109
  */
105
110
  export function parse(argv, options = {}) {
@@ -108,6 +113,12 @@ export function parse(argv, options = {}) {
108
113
  const byName = new Map(specs.map((spec) => [spec.name, spec]));
109
114
  const byAlias = new Map(specs.filter((spec) => spec.alias).map((spec) => [spec.alias, spec]));
110
115
  const values = {};
116
+ const lists = {};
117
+ const record = (name, value) => {
118
+ values[optionKey(name)] = value;
119
+ if (REPEATABLE_FLAGS.has(name))
120
+ (lists[optionKey(name)] ??= []).push(value);
121
+ };
111
122
  const operands = [];
112
123
  const fail = (message) => ({
113
124
  ok: false,
@@ -137,14 +148,14 @@ export function parse(argv, options = {}) {
137
148
  continue;
138
149
  }
139
150
  if (inlineValue !== null) {
140
- values[optionKey(spec.name)] = inlineValue;
151
+ record(spec.name, inlineValue);
141
152
  continue;
142
153
  }
143
154
  const next = argv[i + 1];
144
155
  if (next === undefined || (next.startsWith("-") && next !== "-")) {
145
156
  return fail(`flag ${spec.name} requires a value`);
146
157
  }
147
- values[optionKey(spec.name)] = next;
158
+ record(spec.name, next);
148
159
  i++;
149
160
  }
150
161
  const { command, positionals } = splitCommand(normalizeAliases(operands), commands);
@@ -168,6 +179,7 @@ export function parse(argv, options = {}) {
168
179
  help: values.help === true,
169
180
  },
170
181
  options: extras,
182
+ lists,
171
183
  },
172
184
  };
173
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,16 @@
9
9
  * has a flag which outranks the environment variable.
10
10
  *
11
11
  * ```
12
- * CLI flag (--base-url / --token) > environment variable > nothing (an error)
12
+ * base URL CLI flag (--base-url) > W6W_BASE_URL > stored `baseUrl` > DEFAULT_BASE_URL
13
+ * token CLI flag (--token) > W6W_TOKEN > the stored token for the resolved base URL
13
14
  * ```
14
15
  *
16
+ * The stored tier is the per-user config `w6w auth login` writes (see
17
+ * `src/config-store.ts`). A stored token is **bound to the base URL it was saved
18
+ * for**: it is looked up by the canonical resolved base URL, exact match only, so
19
+ * pointing `--base-url` or `W6W_BASE_URL` at another host can never send it
20
+ * there. That is the trust boundary of this module.
21
+ *
15
22
  * The resolved values are passed to the SDK **explicitly**, and the SDK is never
16
23
  * left to read the environment on the CLI's behalf. That is a mechanism choice,
17
24
  * not a stylistic one: the CLI has to be able to say *which* source it was
@@ -25,6 +32,11 @@
25
32
  */
26
33
  import { type FetchLike, W6WClient } from "@w6w/sdk";
27
34
  import type { GlobalOptions } from "./args.ts";
35
+ import { type StoredConfig } from "./config-store.ts";
36
+ /** The API every command targets unless told otherwise. Equals endpoints.json `defaultBaseUrl`. */
37
+ export declare const DEFAULT_BASE_URL = "https://api.w6w.io";
38
+ /** Where a resolved setting came from. */
39
+ export type Source = "flag" | "env" | "config" | "default";
28
40
  /**
29
41
  * Reads one environment variable, or `undefined` where the host has none.
30
42
  *
@@ -43,8 +55,8 @@ export declare const NO_ENV: EnvReader;
43
55
  * Read an environment variable, treating a blank value as **absent**.
44
56
  *
45
57
  * `W6W_BASE_URL=`, `W6W_BASE_URL=" "` and an unset `W6W_BASE_URL` are the same
46
- * thing: all three fall through the precedence chain to the next source, and
47
- * ultimately to a usage error naming both sources.
58
+ * thing: all three fall through the precedence chain to the next source (the
59
+ * stored base URL, then the default).
48
60
  *
49
61
  * The check is a trim-and-emptiness test and deliberately **not** a nullish
50
62
  * coalesce. `??` does not convert `""`, so a set-but-empty variable would
@@ -64,6 +76,17 @@ export declare const NO_ENV: EnvReader;
64
76
  * @returns The value, or `undefined` when it is unset or blank.
65
77
  */
66
78
  export declare function envValue(env: EnvReader, name: string): string | undefined;
79
+ /**
80
+ * Characters that cannot be carried in an HTTP header value: the C0 controls,
81
+ * `DEL`, and anything above the single-byte range.
82
+ *
83
+ * A token is normally opaque ASCII, so this rejects almost nothing real — except
84
+ * the one thing that happens constantly, which is a trailing newline on a token
85
+ * read out of a file (`W6W_TOKEN=$(cat token.txt)`). Left unchecked that reaches
86
+ * the header builder and comes back as a bare `TypeError` from outside anyone's
87
+ * error model: a stack trace, for a typo.
88
+ */
89
+ export declare function isUnsendable(token: string): boolean;
67
90
  /** Anything the caller wants to hand the client beyond the global flags. */
68
91
  export interface ClientOptions {
69
92
  /**
@@ -73,7 +96,31 @@ export interface ClientOptions {
73
96
  fetch?: FetchLike;
74
97
  /** Default project id for the project-scoped operations. */
75
98
  project?: string;
99
+ /** The stored per-user config, already read. Defaults to nothing stored. */
100
+ stored?: StoredConfig;
101
+ }
102
+ /** The base URL and token one invocation resolves to, with where each came from. */
103
+ export interface ResolvedSettings {
104
+ /** Canonical (the SDK's join: trailing slashes stripped); also the `hosts` key. */
105
+ readonly baseUrl: string;
106
+ readonly baseUrlSource: Source;
107
+ /** Absent when no source holds a token for {@linkcode baseUrl}. */
108
+ readonly token?: string;
109
+ readonly tokenSource?: Source;
76
110
  }
111
+ /**
112
+ * The one resolver. `createClient` and every `auth` command use it, so what
113
+ * `auth status` reports is what a command will do.
114
+ *
115
+ * Base URL: flag (given, even empty) > env (blank = absent) > stored `baseUrl` >
116
+ * {@linkcode DEFAULT_BASE_URL}, validated, then canonicalised once. Token: flag >
117
+ * env > `stored.hosts[<canonical base URL>]` — exact key only.
118
+ *
119
+ * @throws {ConfigError} When the base URL is blank-by-flag, relative, or not http(s),
120
+ * or a resolved token cannot be sent in a header. A *missing* token is not an
121
+ * error here; `createClient` raises that.
122
+ */
123
+ export declare function resolveSettings(globals: GlobalOptions, env?: EnvReader, stored?: StoredConfig): ResolvedSettings;
77
124
  /**
78
125
  * Build the API client for one invocation.
79
126
  *
@@ -83,7 +130,7 @@ export interface ClientOptions {
83
130
  *
84
131
  * @param globals - The parsed global flags.
85
132
  * @param env - The environment seam. Defaults to an empty environment.
86
- * @param options - Transport and default project.
133
+ * @param options - Transport, default project and the stored config.
87
134
  * @returns A configured client.
88
135
  * @throws {ConfigError} When the base URL or token is missing or unusable — a usage error.
89
136
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAe,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAE7D,qFAAqF;AACrF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,uFAAuF;AACvF,eAAO,MAAM,MAAM,EAAE,SAA2B,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIzE;AAkGD,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,SAAkB,EACvB,OAAO,GAAE,aAAkB,GAC1B,SAAS,CA8BX"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAe,KAAK,SAAS,EAAe,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,0CAA0C;AAC1C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAE7D,qFAAqF;AACrF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,uFAAuF;AACvF,eAAO,MAAM,MAAM,EAAE,SAA2B,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIzE;AAqDD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnD;AAcD,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,SAAkB,EACvB,MAAM,GAAE,YAAwB,GAC/B,gBAAgB,CAgDlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,SAAkB,EACvB,OAAO,GAAE,aAAkB,GAC1B,SAAS,CAqBX"}