@veilio-inc/cli 0.6.0 → 0.7.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 (60) hide show
  1. package/README.md +63 -24
  2. package/dist/args.d.ts +25 -10
  3. package/dist/args.d.ts.map +1 -1
  4. package/dist/args.js +112 -87
  5. package/dist/args.js.map +1 -1
  6. package/dist/client/index.d.ts +1 -0
  7. package/dist/client/index.d.ts.map +1 -1
  8. package/dist/client/index.js +1 -0
  9. package/dist/client/index.js.map +1 -1
  10. package/dist/client/maps.d.ts +8 -0
  11. package/dist/client/maps.d.ts.map +1 -1
  12. package/dist/client/maps.js +125 -29
  13. package/dist/client/maps.js.map +1 -1
  14. package/dist/client/project-scope.d.ts +87 -0
  15. package/dist/client/project-scope.d.ts.map +1 -0
  16. package/dist/client/project-scope.js +132 -0
  17. package/dist/client/project-scope.js.map +1 -0
  18. package/dist/client/projects.d.ts +31 -1
  19. package/dist/client/projects.d.ts.map +1 -1
  20. package/dist/client/projects.js +71 -10
  21. package/dist/client/projects.js.map +1 -1
  22. package/dist/client/status.d.ts +2 -0
  23. package/dist/client/status.d.ts.map +1 -1
  24. package/dist/client/status.js +16 -7
  25. package/dist/client/status.js.map +1 -1
  26. package/dist/client/wording.d.ts +4 -1
  27. package/dist/client/wording.d.ts.map +1 -1
  28. package/dist/client/wording.js +28 -6
  29. package/dist/client/wording.js.map +1 -1
  30. package/dist/cloud-commands.d.ts +4 -2
  31. package/dist/cloud-commands.d.ts.map +1 -1
  32. package/dist/cloud-commands.js +31 -25
  33. package/dist/cloud-commands.js.map +1 -1
  34. package/dist/cloud.d.ts +1 -1
  35. package/dist/cloud.d.ts.map +1 -1
  36. package/dist/cloud.js +2 -2
  37. package/dist/cloud.js.map +1 -1
  38. package/dist/commands.d.ts +14 -1
  39. package/dist/commands.d.ts.map +1 -1
  40. package/dist/commands.js +12 -59
  41. package/dist/commands.js.map +1 -1
  42. package/dist/credential.d.ts.map +1 -1
  43. package/dist/credential.js +6 -1
  44. package/dist/credential.js.map +1 -1
  45. package/dist/flags.d.ts +211 -0
  46. package/dist/flags.d.ts.map +1 -0
  47. package/dist/flags.js +410 -0
  48. package/dist/flags.js.map +1 -0
  49. package/dist/index.d.ts +6 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +27 -13
  52. package/dist/index.js.map +1 -1
  53. package/dist/team-namespace.d.ts +37 -2
  54. package/dist/team-namespace.d.ts.map +1 -1
  55. package/dist/team-namespace.js +20 -4
  56. package/dist/team-namespace.js.map +1 -1
  57. package/dist/third-party.d.ts.map +1 -1
  58. package/dist/third-party.js +10 -3
  59. package/dist/third-party.js.map +1 -1
  60. package/package.json +2 -2
package/README.md CHANGED
@@ -31,7 +31,7 @@ signed-in `scrub` offline, `veilio logout` first.
31
31
  | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
32
32
  | `scrub [files...]` | Mask identifiers, redact credentials. Reads stdin when given no file. |
33
33
  | `restore [files...]` | Swap placeholders back, strip AI-generated noise. Signed in, also a teammate's placeholders — see below. Names anything it could not restore; `--strict` writes nothing if a placeholder would be left. |
34
- | `scan [files...]` | Detect credentials only. Never rewrites. Exits 1 on findings. |
34
+ | `scan [files...]` | Detect credentials only. Never rewrites. Exits 1 on a credential; with `--strict`, on any finding. |
35
35
  | `map` | Show the symbol map (`--clear` to wipe it). |
36
36
 
37
37
  ## Cloud sync (Individual plan and above)
@@ -88,6 +88,23 @@ chooses the one this sign-in works in: listing, pushing, updating and
88
88
  `scrub --team` then use that project's team maps only, and the MCP server uses
89
89
  the same choice. With none chosen, team maps of every project are used.
90
90
 
91
+ **`VEILIO_PROJECT`.** Set to a project's name or id, it overrides the stored
92
+ choice for that process only, and is never written down. That is what a CI job
93
+ needs: a runner starts clean, with no `projects use` behind it.
94
+
95
+ ```sh
96
+ VEILIO_PROJECT=billing veilio scrub src/ledger.ts
97
+ ```
98
+
99
+ The order is `VEILIO_PROJECT`, then the stored choice, then none. An empty
100
+ value counts as unset. A value that names no project your team works in, or a
101
+ name two projects share, is refused, naming the value: nothing falls back to
102
+ the stored choice or the default, and `scrub` and `restore` refuse rather than
103
+ number from the local map. Lines that name the project say so, as in "team maps
104
+ of project billing (from VEILIO_PROJECT)". `veilio projects` marks the one the
105
+ variable picked, and `veilio projects use` still stores a choice, but warns that
106
+ the variable overrides it in that shell. Signed out, it changes nothing.
107
+
91
108
  **The personal-maps key.** `veilio vault unlock` asks for the vault passphrase
92
109
  once and keeps, on this machine, only a key that opens personal maps - not the
93
110
  passphrase, not the vault key, which also unlocks your team keys. The first time,
@@ -143,8 +160,8 @@ with the real names:
143
160
  own map, not against a team namespace of four hundred entries.
144
161
 
145
162
  The map commands are clients of `GET /api/maps`, `GET /api/maps/:id`,
146
- `POST /api/maps` and `PATCH /api/maps/:id` — the exact same routes the browser uses, behind the exact
147
- same entitlement check. There is no CLI-shaped API and nothing here can reach
163
+ `POST /api/maps`, `PATCH /api/maps/:id` and `DELETE /api/maps/:id` — the exact
164
+ same routes the browser uses, behind the exact same entitlement check. There is no CLI-shaped API and nothing here can reach
148
165
  a plan feature the web app couldn't.
149
166
 
150
167
  ## Options
@@ -152,31 +169,55 @@ a plan feature the web app couldn't.
152
169
  ```
153
170
  -l, --language <lang> auto (default), typescript, python, go, java, csharp,
154
171
  rust, ruby, php, c, sql
172
+ For: scrub
155
173
  -s, --secrets <policy> redact (default) | warn | off
174
+ For: scrub
156
175
  -p, --preamble Prepend the downstream-AI note and placeholder legend
176
+ For: scrub
157
177
  -m, --map <path> Use a specific map file
158
- --json Machine-readable output (scan, map)
178
+ For: scrub, restore, map, maps pull, maps push, maps
179
+ update
180
+ --json Machine-readable output
181
+ For: scan, map
159
182
  --strict scan: also fail on advisory findings. restore: write
160
183
  nothing and exit 1 if a placeholder would be left
161
- --keep-docs restore: keep JSDoc blocks the model wrote
184
+ For: scan, restore
185
+ --keep-docs Keep JSDoc blocks the model wrote
186
+ For: restore
187
+ --clear Wipe the symbol map
188
+ For: map
162
189
  -f, --force Allow a map write that would drop existing entries
163
- --days <n> vault unlock, team unlock: keep the key for n days
164
- (1 to 30; 7 by default)
165
- --allow-drop maps update: allow dropping entries the Cloud map has
166
- and the local map does not
167
- --device login: sign in through a browser instead of typing a
168
- password here. Required for an SSO-bound account, and
169
- used automatically when the instance asks for a CAPTCHA
190
+ For: scrub, maps pull
170
191
  --team scrub: number new placeholders out of the team's
171
192
  shared allocation, for a map you intend to publish.
172
193
  maps push: publish as the team's shared map
194
+ For: scrub, maps push
195
+ --days <n> Keep the key for n days (1 to 30; 7 by default)
196
+ For: team unlock, vault unlock
197
+ --allow-drop Allow dropping entries the Cloud map has and the local
198
+ map does not
199
+ For: maps update
173
200
  -q, --quiet Suppress the all-clear summary (findings always show)
174
- --instance <url> login: the Veilio instance to sign in to. Defaults to
175
- the public Cloud; https required (localhost excepted)
201
+ For: scrub, restore, scan
202
+ --device Sign in through a browser instead of typing a password
203
+ here. Required for an SSO-bound account, and used
204
+ automatically when the instance asks for a CAPTCHA
205
+ For: login
206
+ --instance <url> The Veilio instance to sign in to. Defaults to the
207
+ public Cloud; https required (localhost excepted)
208
+ For: login
176
209
  -h, --help Show this help
177
210
  -v, --version Show the version
178
211
  ```
179
212
 
213
+ Each command takes only the options listed for it. A flag on a command it
214
+ does not belong to is refused with exit code 2, and the error lists the
215
+ options that command does take. Given `--days 3`, `scrub` stops with
216
+ `--days is not an option for scrub. Options for scrub: …`. Flags may come
217
+ before the command and are checked against it. `--help` anywhere on the line
218
+ shows that command's help and exits 0; `--help` and `--version` work with any
219
+ command.
220
+
180
221
  `restore --strict` is for pipelines that write the restored text somewhere: if a
181
222
  placeholder would be left in it — one the AI invented, one whose shape it changed
182
223
  (`__fn__1`), one the team's maps disagree on, or one the team's maps could not be
@@ -237,6 +278,10 @@ git diff --cached | veilio scan || {
237
278
 
238
279
  Redacted credentials are **not** in the map. `restore` cannot bring them back, by construction.
239
280
 
281
+ ## Every file is judged strictly
282
+
283
+ `scrub` and `scan` read every file as real source, test, fixture and example files included: a weak password in a secret position (`PGPASSWORD=Summer24`, `mysql -pSummer24`, the password in a URL, an auth header) is redacted wherever it is. The MCP server and the Claude Code guard do the same. A committed fixture cannot be told from a copy of `.env` in `tests/` safely enough to leave its passwords in place, so no Veilio client tries.
284
+
240
285
  ## In CI
241
286
 
242
287
  ### GitHub Action
@@ -268,17 +313,11 @@ contain the credential it is reporting.
268
313
 
269
314
  ### Pre-commit
270
315
 
271
- Via the [pre-commit framework](https://pre-commit.com):
272
-
273
- ```yaml
274
- repos:
275
- - repo: https://github.com/veilio-inc/veilio
276
- rev: v0.1.0
277
- hooks:
278
- - id: veilio-scan
279
- ```
316
+ The [pre-commit framework](https://pre-commit.com) is not supported yet. This
317
+ repository has no `.pre-commit-hooks.yaml`, so there is no `veilio-scan` hook
318
+ to name, and no `v*` tag to pin it to.
280
319
 
281
- Or a plain git hook:
320
+ Use a plain git hook:
282
321
 
283
322
  ```bash
284
323
  cp packages/cli/hooks/pre-commit .git/hooks/pre-commit
package/dist/args.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import { type LanguageOption } from '@veilio-inc/engine';
2
2
  import type { SecretPolicy } from '@veilio-inc/engine';
3
- export type Command = 'scrub' | 'restore' | 'scan' | 'map' | 'login' | 'logout' | 'whoami' | 'maps' | 'team' | 'vault' | 'projects' | 'rules' | 'help' | 'version';
3
+ import { type ActionOf, type CommandWord } from './flags.js';
4
+ /** A top-level command word (from the command table), or what a flag asks
5
+ * for when no command does work: `help` or `version`. */
6
+ export type Command = CommandWord | 'help' | 'version';
4
7
  export interface ParsedArgs {
5
8
  command: Command;
6
9
  /** Positional file paths. Empty means read stdin (or, for `scan`, error). */
@@ -49,7 +52,7 @@ export interface ParsedArgs {
49
52
  * reads like they are the same thing. `maps <verb>` keeps the cloud surface
50
53
  * visibly separate from the offline one.
51
54
  */
52
- mapsAction: 'list' | 'pull' | 'push' | 'update' | 'rm' | null;
55
+ mapsAction: ActionOf<'maps'> | null;
53
56
  /**
54
57
  * `maps update --allow-drop`: let an update remove entries the Cloud map
55
58
  * holds and the local map does not (spec 052 FR-005). Its own flag rather
@@ -64,20 +67,20 @@ export interface ParsedArgs {
64
67
  * not say what it unlocks, and what it unlocks is specifically the team's
65
68
  * keys rather than the account or the local store.
66
69
  */
67
- teamAction: 'unlock' | 'lock' | null;
70
+ teamAction: ActionOf<'team'> | null;
68
71
  /**
69
72
  * `vault unlock` / `vault lock` (spec 052): the personal-maps key, kept on
70
73
  * this machine so personal maps open without a passphrase - for the MCP
71
74
  * server above all. `vault`, not `team`: it is the account's own key.
72
75
  */
73
- vaultAction: 'unlock' | 'lock' | null;
76
+ vaultAction: ActionOf<'vault'> | null;
74
77
  /** `vault unlock --days N`, `team unlock --days N`: how long the unlock
75
78
  * lasts. Null: the default, 7 days. */
76
79
  days: number | null;
77
80
  /** `projects` (or `projects list`) and `projects use <name|id>`. */
78
- projectsAction: 'list' | 'use' | null;
81
+ projectsAction: ActionOf<'projects'> | null;
79
82
  /** `rules pull`. */
80
- rulesAction: 'pull' | null;
83
+ rulesAction: ActionOf<'rules'> | null;
81
84
  /**
82
85
  * Base URL of the Veilio instance to sign in to. Null means the public Cloud.
83
86
  *
@@ -86,15 +89,27 @@ export interface ParsedArgs {
86
89
  * host while still holding the first one's token.
87
90
  */
88
91
  instance: string | null;
92
+ /**
93
+ * What `--help` was asked about: a command key (`maps pull`), a group with no
94
+ * action (`maps`), or null for the general help. Set only when `command` is
95
+ * `help`.
96
+ */
97
+ helpTopic: string | null;
89
98
  }
90
99
  export declare class UsageError extends Error {
100
+ /** The command the error is about, when there is one: the CLI then prints
101
+ * `veilio scrub: …` rather than `veilio: …`. */
102
+ readonly command: string | undefined;
103
+ /** Print the general help with the error: a line of flags and no command. */
104
+ readonly showHelp: boolean;
105
+ constructor(message: string, command?: string, showHelp?: boolean);
91
106
  }
92
107
  /**
93
- * The commands that reach the network. Named here so the split is one list
94
- * rather than a condition repeated at each call site — and so that adding a
95
- * command without deciding which side of the line it falls on is a compile
96
- * error rather than an accident.
108
+ * The commands that reach the network, from the command table. Adding a
109
+ * command to the table means deciding which side of the line it is on.
97
110
  */
98
111
  export declare const CLOUD_COMMANDS: Set<Command>;
112
+ /** `maps needs an action — list, pull, push, update or rm.` */
113
+ export declare function needsAction(word: string): string;
99
114
  export declare function parseArgs(argv: readonly string[]): ParsedArgs;
100
115
  //# sourceMappingURL=args.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,MAAM,OAAO,GACf,OAAO,GACP,SAAS,GACT,MAAM,GACN,KAAK,GACL,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,OAAO,GACP,UAAU,GACV,OAAO,GACP,MAAM,GACN,SAAS,CAAA;AAEb,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,cAAc,CAAA;IACxB,OAAO,EAAE,YAAY,CAAA;IACrB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,qDAAqD;IACrD,KAAK,EAAE,OAAO,CAAA;IACd,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAA;IACf,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAA;IACjB,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAA;IACd;;;;;;;OAOG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;OAOG;IACH,IAAI,EAAE,OAAO,CAAA;IACb;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAA;IAC7D;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAA;IAElB;;;;;;OAMG;IACH,UAAU,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAA;IACpC;;;;OAIG;IACH,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAA;IACrC;4CACwC;IACxC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,oEAAoE;IACpE,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAA;IACrC,oBAAoB;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAE1B;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAmBxC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,cASzB,CAAA;AAWF,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAiN7D"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAUL,KAAK,QAAQ,EAEb,KAAK,WAAW,EACjB,MAAM,YAAY,CAAA;AAEnB;0DAC0D;AAC1D,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;AAEtD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,cAAc,CAAA;IACxB,OAAO,EAAE,YAAY,CAAA;IACrB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAA;IACjB,uCAAuC;IACvC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAA;IACb,qDAAqD;IACrD,KAAK,EAAE,OAAO,CAAA;IACd,qCAAqC;IACrC,KAAK,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAA;IACf,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAA;IACjB,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAA;IACd;;;;;;;OAOG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;;;;;;OAOG;IACH,IAAI,EAAE,OAAO,CAAA;IACb;;;;;;;OAOG;IACH,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACnC;;;;;OAKG;IACH,SAAS,EAAE,OAAO,CAAA;IAElB;;;;;;OAMG;IACH,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IACnC;;;;OAIG;IACH,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IACrC;4CACwC;IACxC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,oEAAoE;IACpE,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;IAC3C,oBAAoB;IACpB,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAA;IAErC;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAEvB;;;;OAIG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,qBAAa,UAAW,SAAQ,KAAK;IACnC;qDACiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;gBAEd,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,UAAQ;CAKhE;AA0BD;;;GAGG;AACH,eAAO,MAAM,cAAc,cAE1B,CAAA;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAYD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAwN7D"}
package/dist/args.js CHANGED
@@ -2,40 +2,46 @@
2
2
  // privacy invariant (an audited supply chain is the point), and a CLI that
3
3
  // wraps it should not undo that for the sake of flag parsing.
4
4
  import { LANGUAGES } from '@veilio-inc/engine';
5
+ import { COMMAND_SPECS, COMMAND_WORDS, actionList, actionsOf, belongsTo, flagFor, flagsOf, runsBare, spell, } from './flags.js';
5
6
  export class UsageError extends Error {
7
+ /** The command the error is about, when there is one: the CLI then prints
8
+ * `veilio scrub: …` rather than `veilio: …`. */
9
+ command;
10
+ /** Print the general help with the error: a line of flags and no command. */
11
+ showHelp;
12
+ constructor(message, command, showHelp = false) {
13
+ super(message);
14
+ this.command = command;
15
+ this.showHelp = showHelp;
16
+ }
17
+ }
18
+ /** The one wording for a flag a command does not take, known or not: it
19
+ * names the command and lists the options it does take. */
20
+ function refusedFlag(spelling, command, known) {
21
+ const options = flagsOf(command);
22
+ const what = known
23
+ ? `${spelling} is not an option for ${command}.`
24
+ : `unknown option ${spelling}.`;
25
+ return new UsageError(`${what} Options for ${command}: ${options.map(spell).join(', ')}.`, command);
6
26
  }
7
- const COMMANDS = new Set([
8
- 'scrub',
9
- 'restore',
10
- 'scan',
11
- 'map',
12
- 'login',
13
- 'logout',
14
- 'whoami',
15
- 'maps',
16
- 'team',
17
- 'vault',
18
- 'projects',
19
- 'rules',
20
- 'help',
21
- 'version',
22
- ]);
27
+ const COMMANDS = new Set(COMMAND_WORDS);
28
+ /** Where each group keeps its action in ParsedArgs. */
29
+ const ACTION_FIELD = {
30
+ maps: 'mapsAction',
31
+ team: 'teamAction',
32
+ vault: 'vaultAction',
33
+ projects: 'projectsAction',
34
+ rules: 'rulesAction',
35
+ };
23
36
  /**
24
- * The commands that reach the network. Named here so the split is one list
25
- * rather than a condition repeated at each call site — and so that adding a
26
- * command without deciding which side of the line it falls on is a compile
27
- * error rather than an accident.
37
+ * The commands that reach the network, from the command table. Adding a
38
+ * command to the table means deciding which side of the line it is on.
28
39
  */
29
- export const CLOUD_COMMANDS = new Set([
30
- 'login',
31
- 'logout',
32
- 'whoami',
33
- 'maps',
34
- 'team',
35
- 'vault',
36
- 'projects',
37
- 'rules',
38
- ]);
40
+ export const CLOUD_COMMANDS = new Set(COMMAND_SPECS.filter((c) => c.cloud).map((c) => c.key.split(' ')[0]));
41
+ /** `maps needs an action — list, pull, push, update or rm.` */
42
+ export function needsAction(word) {
43
+ return `${word} needs an action — ${actionList(word)}.`;
44
+ }
39
45
  const SECRET_POLICIES = new Set(['redact', 'warn', 'off']);
40
46
  const LANGUAGE_VALUES = new Set([...LANGUAGES, 'auto']);
41
47
  function requireValue(flag, value) {
@@ -68,76 +74,92 @@ export function parseArgs(argv) {
68
74
  projectsAction: null,
69
75
  days: null,
70
76
  rulesAction: null,
77
+ helpTopic: null,
71
78
  };
72
79
  if (argv.length === 0)
73
80
  return parsed;
74
- let i = 0;
75
- const first = argv[0];
76
- if (!first.startsWith('-')) {
77
- if (!COMMANDS.has(first)) {
78
- throw new UsageError(`unknown command "${first}"`);
81
+ // The command is the first word that is neither a flag nor a flag's value,
82
+ // wherever it sits: `veilio -q scrub a.ts` and `veilio --json scan x` are
83
+ // read as `scrub -q a.ts` and `scan --json x`, and checked the same way.
84
+ const taken = new Set();
85
+ let commandAt = -1;
86
+ for (let j = 0; j < argv.length; j++) {
87
+ const arg = argv[j];
88
+ if (arg.startsWith('-') && arg !== '-') {
89
+ if (flagFor(arg)?.value !== undefined)
90
+ j++;
91
+ continue;
79
92
  }
80
- parsed.command = first;
81
- i = 1;
82
- // `maps` takes a verb. Read here rather than as a positional later, so that
83
- // `veilio maps pull abc` does not treat `pull` as a file to anonymize.
84
- if (parsed.command === 'maps') {
85
- const verb = argv[1];
86
- if (verb !== undefined && !verb.startsWith('-')) {
87
- if (verb !== 'list' &&
88
- verb !== 'pull' &&
89
- verb !== 'push' &&
90
- verb !== 'update' &&
91
- verb !== 'rm') {
92
- throw new UsageError(`unknown maps action "${verb}" — expected list, pull, push, update or rm`);
93
- }
94
- parsed.mapsAction = verb;
95
- i = 2;
96
- }
93
+ commandAt = j;
94
+ break;
95
+ }
96
+ const wantsHelp = argv.some((a) => a === '--help' || a === '-h');
97
+ const word = commandAt === -1 ? null : argv[commandAt];
98
+ // `--help` anywhere on the line wins, before anything else can refuse it:
99
+ // `veilio scrub --days 3 -h` shows scrub's help, not an error.
100
+ if (wantsHelp) {
101
+ parsed.command = 'help';
102
+ if (word !== null && COMMANDS.has(word)) {
103
+ const verb = argv[commandAt + 1];
104
+ parsed.helpTopic =
105
+ verb !== undefined && actionsOf(word).includes(verb) ? `${word} ${verb}` : word;
97
106
  }
98
- if (parsed.command === 'team') {
99
- const verb = argv[1];
107
+ return parsed;
108
+ }
109
+ let key = null;
110
+ if (word !== null) {
111
+ if (!COMMANDS.has(word))
112
+ throw new UsageError(`unknown command "${word}"`);
113
+ parsed.command = word;
114
+ taken.add(commandAt);
115
+ // A group takes a verb. Read here rather than as a positional later, so
116
+ // that `veilio maps pull abc` does not treat `pull` as a file.
117
+ const actions = actionsOf(word);
118
+ if (actions.length > 0) {
119
+ const verb = argv[commandAt + 1];
100
120
  if (verb !== undefined && !verb.startsWith('-')) {
101
- if (verb !== 'unlock' && verb !== 'lock') {
102
- throw new UsageError(`unknown team action "${verb}" — expected unlock or lock`);
121
+ if (!actions.includes(verb)) {
122
+ throw new UsageError(`unknown ${word} action "${verb}" — expected ${actionList(word)}`);
103
123
  }
104
- parsed.teamAction = verb;
105
- i = 2;
124
+ const field = ACTION_FIELD[word];
125
+ parsed[field] = verb;
126
+ taken.add(commandAt + 1);
127
+ key = `${word} ${verb}`;
106
128
  }
107
- }
108
- if (parsed.command === 'vault') {
109
- const verb = argv[1];
110
- if (verb !== undefined && !verb.startsWith('-')) {
111
- if (verb !== 'unlock' && verb !== 'lock') {
112
- throw new UsageError(`unknown vault action "${verb}" — expected unlock or lock`);
113
- }
114
- parsed.vaultAction = verb;
115
- i = 2;
129
+ else if (runsBare(word)) {
130
+ key = word;
116
131
  }
117
- }
118
- if (parsed.command === 'projects') {
119
- const verb = argv[1];
120
- if (verb !== undefined && !verb.startsWith('-')) {
121
- if (verb !== 'list' && verb !== 'use') {
122
- throw new UsageError(`unknown projects action "${verb}" — expected list or use`);
123
- }
124
- parsed.projectsAction = verb;
125
- i = 2;
132
+ else {
133
+ // `veilio maps` alone has nothing to run, whatever flags follow.
134
+ throw new UsageError(needsAction(word));
126
135
  }
127
136
  }
128
- if (parsed.command === 'rules') {
129
- const verb = argv[1];
130
- if (verb !== undefined && !verb.startsWith('-')) {
131
- if (verb !== 'pull') {
132
- throw new UsageError(`unknown rules action "${verb}" — expected pull`);
133
- }
134
- parsed.rulesAction = verb;
135
- i = 2;
136
- }
137
+ else {
138
+ key = word;
137
139
  }
138
140
  }
139
- for (; i < argv.length; i++) {
141
+ // A line of flags and no command. --help and --version answer on their
142
+ // own; any other known flag has no command to belong to.
143
+ let commandless = null;
144
+ for (let i = 0; i < argv.length; i++) {
145
+ if (taken.has(i))
146
+ continue;
140
147
  const arg = argv[i];
148
+ if (arg.startsWith('-') && arg !== '-') {
149
+ const flag = flagFor(arg);
150
+ if (key !== null && !flag) {
151
+ throw refusedFlag(arg, key, false);
152
+ }
153
+ else if (key !== null && flag && !belongsTo(flag, key)) {
154
+ // A flag that exists but is not this command's is refused, not
155
+ // ignored. `veilio scrub --days 3` used to run with `--days` doing
156
+ // nothing.
157
+ throw refusedFlag(arg, key, true);
158
+ }
159
+ else if (key === null && flag && flag.commands !== 'all') {
160
+ commandless ??= arg;
161
+ }
162
+ }
141
163
  switch (arg) {
142
164
  case '-h':
143
165
  case '--help':
@@ -189,13 +211,13 @@ export function parseArgs(argv) {
189
211
  case '--keep-docs':
190
212
  parsed.keepDocs = true;
191
213
  break;
192
- case '-f':
193
214
  case '--team':
194
215
  parsed.team = true;
195
216
  break;
196
217
  case '--device':
197
218
  parsed.device = true;
198
219
  break;
220
+ case '-f':
199
221
  case '--force':
200
222
  parsed.force = true;
201
223
  break;
@@ -237,6 +259,9 @@ export function parseArgs(argv) {
237
259
  parsed.files.push(arg);
238
260
  }
239
261
  }
262
+ if (commandless !== null) {
263
+ throw new UsageError(`${commandless} needs a command`, undefined, true);
264
+ }
240
265
  return parsed;
241
266
  }
242
267
  //# sourceMappingURL=args.js.map
package/dist/args.js.map CHANGED
@@ -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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"}
@@ -4,5 +4,6 @@ export * from './maps.js';
4
4
  export * from './keys.js';
5
5
  export * from './projects.js';
6
6
  export * from './status.js';
7
+ export * from './project-scope.js';
7
8
  export { personalMapsKeyExpiry, personalMapsKeyPath, readPersonalMapsKey, removePersonalMapsKey, } from './personal-maps-key.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AACpF,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AACpF,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA"}
@@ -8,5 +8,6 @@ export * from './maps.js';
8
8
  export * from './keys.js';
9
9
  export * from './projects.js';
10
10
  export * from './status.js';
11
+ export * from './project-scope.js';
11
12
  export { personalMapsKeyExpiry, personalMapsKeyPath, readPersonalMapsKey, removePersonalMapsKey, } from './personal-maps-key.js';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,6DAA6D;AAE7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAA;AACpF,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,6DAA6D;AAE7D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAA;AACpF,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,wBAAwB,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { type Env } from './project-scope.js';
1
2
  import { type Outcome } from './wording.js';
2
3
  export interface ClientContext {
3
4
  /** Home directory the credential and unlocked keys live under. */
@@ -8,6 +9,11 @@ export interface ClientContext {
8
9
  * opens personal maps with the personal-maps key or not at all (FR-011).
9
10
  */
10
11
  passphrase?: () => Promise<string>;
12
+ /**
13
+ * Where `VEILIO_PROJECT` is read from (FR-012a). Undefined: this process's
14
+ * environment. The MCP server passes its own; tests pass theirs.
15
+ */
16
+ env?: Env;
11
17
  }
12
18
  export interface ListedMap {
13
19
  id: string;
@@ -23,6 +29,8 @@ export declare function listCloudMaps(ctx: ClientContext): Promise<Outcome<{
23
29
  maps: ListedMap[];
24
30
  teamId: string | null;
25
31
  project: string | null;
32
+ /** VEILIO_PROJECT chose `project`: `projects use` does not change it here. */
33
+ projectFromEnv: boolean;
26
34
  }>>;
27
35
  export declare function pullCloudMap(ctx: ClientContext, id: string | null, opts: {
28
36
  mapPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../src/client/maps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maps.d.ts","sourceRoot":"","sources":["../../src/client/maps.ts"],"names":[],"mappings":"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"}