@coldtea/pr-lens-cli 0.4.0 → 0.5.1

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.
package/README.md CHANGED
@@ -110,14 +110,15 @@ The map is a snapshot, not a source of truth. Nothing reads it back into the pip
110
110
  pr-lens canvas push
111
111
  ```
112
112
 
113
- Puts the document on prlens.dev as a canvas: a page anyone with the link can read, and an SVG a README can embed.
113
+ Puts the document on prlens.dev as a canvas: a page anyone you share it with can read, and an SVG a README can embed.
114
114
 
115
- `push` sends the JSON document, never an SVG; the app draws it. The default is `.pr-lens/drawn.graph.json`, the document `render` drew, so what the page shows is what the diagrams show. The first push of a file mints a canvas and every push after that updates the same one, matched by the path it came from. `--canvas <id|name>` picks a different one and `--name` says what to call a new one; the document's title is the default. It prints three links:
115
+ `push` sends the JSON document, never an SVG; the app draws it. The default is `.pr-lens/drawn.graph.json`, the document `render` drew, so what the page shows is what the diagrams show. The first push of a file mints a canvas and every push after that updates the same one, matched by the path it came from. `--canvas <id|name>` picks a different one and `--name` says what to call a new one; the document's title is the default. It prints the view link, the embed, and the way to take it down again:
116
116
 
117
117
  ```
118
118
  ✓ https://prlens.dev/c/{id} — rev 1 · 4 diagrams
119
- edit link, keep it to yourself: https://prlens.dev/c/{id}#w=…
119
+ unlisted: anyone you share it with can open it, no sign-in needed
120
120
  README embed: https://prlens.dev/c/{id}.svg
121
+ remove: pr-lens canvas delete
121
122
  ```
122
123
 
123
124
  The view link is the one to share. The edit link is the same page with the write token in the fragment, and anyone holding it can push over your canvas, so it stays with you. The embed is the hero diagram as an SVG, for a README or a wiki.
@@ -128,11 +129,15 @@ A canvas plays the document's walkthrough when it carries one. The app checks th
128
129
 
129
130
  `rotate` mints a new write token and retires the old one. Use it when an edit link has leaked. The CLI saves the new token before it sends the request, so if the connection drops, the next command finishes the rotation instead of losing the token. The token lives in `.pr-lens/canvas.json`, keyed by canvas id, and git ignores it. Lose that file and the canvas is still readable by everyone; pushing to it again needs the token, which the edit link still carries.
130
131
 
132
+ `delete` removes the hosted canvas: the document, every revision of it, and the images drawn from it, at once and for good. It needs the write token, like `push`. The local graph and SVG files stay where they are.
133
+
134
+ A canvas is a labelled map of a system, so before pushing one it is fair to ask where it goes. The short answer: it can be opened by anyone you share it with and nobody else, it is never listed or indexed, it is kept in the EU until you delete it, and nothing is done with it beyond drawing the page. The long answer, with every company that touches it and the region each runs in, is the [privacy policy](https://prlens.dev/privacy).
135
+
131
136
  Registry writes take a lock at `.pr-lens/canvas.json.lock`. The CLI never removes another command's lock. If a command dies and leaves one behind, the error names its process id and you remove the file yourself.
132
137
 
133
138
  The CLI refuses to write the registry where git could commit it. If a checkout tracks `.pr-lens/canvas.json` or un-ignores `.pr-lens/`, the command fails with `CANVAS_REGISTRY_EXPOSED` and writes nothing.
134
139
 
135
- `--api` points at another PR Lens app, or set `PR_LENS_API_URL`.
140
+ `--api` points at another PR Lens app, or set `PR_LENS_API_URL`. The protocol between the CLI and the app is five routes and one error envelope, written up in [the canvas API contract](https://github.com/coldteadotai/pr-lens/blob/main/docs/canvas-api.md) so a private server can answer it and documents stay on your network.
136
141
 
137
142
  ## Corrections
138
143
 
@@ -1,5 +1,5 @@
1
- import { type GraphDoc } from "@coldtea/pr-lens-schema";
2
1
  import { z } from "zod";
2
+ import { type GraphDoc } from "@coldtea/pr-lens-schema";
3
3
  declare const Minted: z.ZodObject<{
4
4
  id: z.ZodString;
5
5
  writeToken: z.ZodString;
@@ -61,5 +61,9 @@ export declare const pushCanvas: (api: string, id: string, token: string, rev: n
61
61
  export declare const verifyWriteToken: (api: string, id: string, token: string) => Promise<boolean>;
62
62
  /** The caller mints the next token, so a lost answer can be asked for again. */
63
63
  export declare const rotateCanvas: (api: string, id: string, token: string, nextToken: string) => Promise<Rotated>;
64
+ export declare const deleteCanvas: (api: string, id: string, token: string) => Promise<{
65
+ id: string;
66
+ deleted: true;
67
+ }>;
64
68
  export {};
65
69
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/canvas/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,QAAA,MAAM,MAAM;;;;;;;iBAOV,CAAC;AAEH,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;iBAOX,CAAC;AAEH,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;iBAOV,CAAC;AAEH,QAAA,MAAM,OAAO;;;iBAAoD,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG;IAChE,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAkLF,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CACwB,CAAC;AAEhF,eAAO,MAAM,WAAW,QACjB,MAAM,MACP,MAAM,KACT,OAAO,CAAC,OAAO,CAgBjB,CAAC;AAEF,eAAO,MAAM,UAAU,QAChB,MAAM,MACP,MAAM,SACH,MAAM,OACR,MAAM,YACD,QAAQ,KACjB,OAAO,CAAC,MAAM,CAYd,CAAC;AAEJ,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,QACtB,MAAM,MACP,MAAM,SACH,MAAM,KACZ,OAAO,CAAC,OAAO,CAQf,CAAC;AAEJ,gFAAgF;AAChF,eAAO,MAAM,YAAY,QAClB,MAAM,MACP,MAAM,SACH,MAAM,aACF,MAAM,KAChB,OAAO,CAAC,OAAO,CAWf,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/canvas/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AAmBjC,QAAA,MAAM,MAAM;;;;;;;iBAOV,CAAC;AAEH,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;;iBAOX,CAAC;AAEH,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;iBAOV,CAAC;AAEH,QAAA,MAAM,OAAO;;;iBAAoD,CAAC;AAElE,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG;IAChE,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAkLF,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CACwB,CAAC;AAEhF,eAAO,MAAM,WAAW,QACjB,MAAM,MACP,MAAM,KACT,OAAO,CAAC,OAAO,CAgBjB,CAAC;AAEF,eAAO,MAAM,UAAU,QAChB,MAAM,MACP,MAAM,SACH,MAAM,OACR,MAAM,YACD,QAAQ,KACjB,OAAO,CAAC,MAAM,CAYd,CAAC;AAEJ,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,QACtB,MAAM,MACP,MAAM,SACH,MAAM,KACZ,OAAO,CAAC,OAAO,CAQf,CAAC;AAEJ,gFAAgF;AAChF,eAAO,MAAM,YAAY,QAClB,MAAM,MACP,MAAM,SACH,MAAM,aACF,MAAM,KAChB,OAAO,CAAC,OAAO,CAWf,CAAC;AAEJ,eAAO,MAAM,YAAY,QAClB,MAAM,MACP,MAAM,SACH,MAAM,KACZ,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAKrC,CAAC"}
@@ -1,7 +1,7 @@
1
- import { assertNever, safeParseGraphDoc, } from "@coldtea/pr-lens-schema";
2
1
  import { z } from "zod";
3
- import { PrLensCliError } from "../errors.js";
2
+ import { assertNever, safeParseGraphDoc, } from "@coldtea/pr-lens-schema";
4
3
  import { CLI_VERSION } from "../version.js";
4
+ import { PrLensCliError } from "../errors.js";
5
5
  const REQUEST_TIMEOUT_MS = 60_000;
6
6
  const Tile = z.object({
7
7
  id: z.string(),
@@ -172,4 +172,5 @@ export const rotateCanvas = (api, id, token, nextToken) => call(api, {
172
172
  token,
173
173
  body: { writeToken: nextToken },
174
174
  }, Rotated);
175
+ export const deleteCanvas = (api, id, token) => call(api, { method: "DELETE", path: canvasPath(id), canvas: id, token }, z.object({ id: z.literal(id), deleted: z.literal(true) }));
175
176
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/canvas/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/canvas/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Terminal } from "../terminal.js";
2
+ export declare const deleteCommand: (args: readonly string[], terminal: Terminal, env: Record<string, string | undefined>) => Promise<void>;
3
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/canvas/delete.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,eAAO,MAAM,aAAa,SAClB,SAAS,MAAM,EAAE,YACb,QAAQ,OACb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACtC,OAAO,CAAC,IAAI,CA2Bd,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { deleteCanvas } from "./api.js";
2
+ import { usageError } from "../errors.js";
3
+ import { parseOptions, readString } from "../args.js";
4
+ import { selectCanvas, readRegistry, updateRegistry } from "./registry.js";
5
+ import { readApi, requireWriteToken, settlePendingRotation } from "./write.js";
6
+ export const deleteCommand = async (args, terminal, env) => {
7
+ const { values, positionals } = parseOptions(args, {
8
+ canvas: { type: "string" },
9
+ api: { type: "string" },
10
+ });
11
+ if (positionals.length > 0)
12
+ throw usageError(`delete takes no positional arguments, got ${positionals.join(" ")}`);
13
+ const api = readApi(values.api, env);
14
+ const registry = await readRegistry();
15
+ const ref = readString(values.canvas, "canvas");
16
+ const selected = selectCanvas(registry, ref);
17
+ const target = await settlePendingRotation(api, selected, terminal);
18
+ await deleteCanvas(api, target.id, requireWriteToken(target));
19
+ await updateRegistry((current) => {
20
+ if (current.canvases[target.id]?.api === api)
21
+ delete current.canvases[target.id];
22
+ }, terminal);
23
+ terminal.out(`✓ deleted ${target.id} from ${api}; local graph and SVG files kept`);
24
+ };
25
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/canvas/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,IAAuB,EACvB,QAAkB,EAClB,GAAuC,EACxB,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE;QACjD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACxB,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACxB,MAAM,UAAU,CACd,6CAA6C,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;IAEJ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IAEtC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,MAAM,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,GAAG;YAC1C,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACb,QAAQ,CAAC,GAAG,CACV,aAAa,MAAM,CAAC,EAAE,SAAS,GAAG,kCAAkC,CACrE,CAAC;AACJ,CAAC,CAAC"}
@@ -41,5 +41,6 @@ export declare const sourceKey: (path: string) => string;
41
41
  export declare const findCanvas: (registry: CanvasRegistry, ref: string) => Registered;
42
42
  export declare const findBySource: (registry: CanvasRegistry, path: string) => Registered | undefined;
43
43
  export declare const onlyCanvas: (registry: CanvasRegistry) => Registered;
44
+ export declare const selectCanvas: (registry: CanvasRegistry, ref: string | undefined) => Registered;
44
45
  export {};
45
46
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/canvas/registry.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,kEAAkE;AAClE,eAAO,MAAM,aAAa,QAAqC,CAAC;AAMhE,eAAO,MAAM,UAAU,UAAW,MAAM,KAAG,OAAgC,CAAC;AAE5E,eAAO,MAAM,cAAc,QAAO,MACK,CAAC;AAExC,QAAA,MAAM,KAAK;;;;;;;iBAUT,CAAC;AAEH,QAAA,MAAM,QAAQ;;;;;;;;;iBAEZ,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAChD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAQ5D,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,cAAc,CAc3D,CAAC;AAkGF,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,aAAoB,QAAQ,KAAG,OAAO,CAAC,IAAI,CAGzE,CAAC;AAWF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,SAC7B,MAAM,KACX,OAAO,CAAC,OAAO,CA6BjB,CAAC;AAEF,eAAO,MAAM,aAAa,aACd,cAAc,YACd,QAAQ,KACjB,OAAO,CAAC,IAAI,CAGd,CAAC;AAyHF,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,GAAU,CAAC,QAChC,MAAM,OAAO,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,CAAC,CAwCX,CAAC;AAEF,eAAO,MAAM,cAAc,WACjB,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,YAChC,QAAQ,KACjB,OAAO,CAAC,cAAc,CAMrB,CAAC;AAEL,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,MACD,CAAC;AAUzC,eAAO,MAAM,UAAU,aACX,cAAc,OACnB,MAAM,KACV,UAoBF,CAAC;AAEF,eAAO,MAAM,YAAY,aACb,cAAc,QAClB,MAAM,KACX,UAAU,GAAG,SAaf,CAAC;AAEF,eAAO,MAAM,UAAU,aAAc,cAAc,KAAG,UAiBrD,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/canvas/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,kEAAkE;AAClE,eAAO,MAAM,aAAa,QAAqC,CAAC;AAMhE,eAAO,MAAM,UAAU,UAAW,MAAM,KAAG,OAAgC,CAAC;AAE5E,eAAO,MAAM,cAAc,QAAO,MACK,CAAC;AAExC,QAAA,MAAM,KAAK;;;;;;;iBAUT,CAAC;AAEH,QAAA,MAAM,QAAQ;;;;;;;;;iBAEZ,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;AAChD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AACtD,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAQ5D,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,cAAc,CAc3D,CAAC;AAkGF,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,aAAoB,QAAQ,KAAG,OAAO,CAAC,IAAI,CAGzE,CAAC;AAWF,yFAAyF;AACzF,eAAO,MAAM,wBAAwB,SAC7B,MAAM,KACX,OAAO,CAAC,OAAO,CA6BjB,CAAC;AAEF,eAAO,MAAM,aAAa,aACd,cAAc,YACd,QAAQ,KACjB,OAAO,CAAC,IAAI,CAGd,CAAC;AAyHF,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,GAAU,CAAC,QAChC,MAAM,OAAO,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,CAAC,CAwCX,CAAC;AAEF,eAAO,MAAM,cAAc,WACjB,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,YAChC,QAAQ,KACjB,OAAO,CAAC,cAAc,CAMrB,CAAC;AAEL,eAAO,MAAM,SAAS,SAAU,MAAM,KAAG,MACD,CAAC;AAUzC,eAAO,MAAM,UAAU,aACX,cAAc,OACnB,MAAM,KACV,UAoBF,CAAC;AAEF,eAAO,MAAM,YAAY,aACb,cAAc,QAClB,MAAM,KACX,UAAU,GAAG,SAaf,CAAC;AAEF,eAAO,MAAM,UAAU,aAAc,cAAc,KAAG,UAiBrD,CAAC;AAEF,eAAO,MAAM,YAAY,aACb,cAAc,OACnB,MAAM,GAAG,SAAS,KACtB,UACmE,CAAC"}
@@ -1,9 +1,9 @@
1
- import { access, link, lstat, stat, mkdir, unlink, realpath, readFile, writeFile, } from "node:fs/promises";
2
1
  import { z } from "zod";
2
+ import { access, link, lstat, stat, mkdir, unlink, realpath, readFile, writeFile, } from "node:fs/promises";
3
3
  import { randomBytes } from "node:crypto";
4
+ import { assertNever } from "@coldtea/pr-lens-schema";
4
5
  import { setTimeout as sleep } from "node:timers/promises";
5
6
  import { basename, dirname, join, relative, resolve } from "node:path";
6
- import { assertNever } from "@coldtea/pr-lens-schema";
7
7
  import { git } from "../git.js";
8
8
  import { PrLensCliError, usageError } from "../errors.js";
9
9
  import { prepareWorkspace, WORKSPACE_DIR } from "../workspace.js";
@@ -306,4 +306,5 @@ export const onlyCanvas = (registry) => {
306
306
  throw unregistered(`${all.length} canvases in ${REGISTRY_PATH}`, `pass --canvas <id|name>: ${all.map(describe).join(", ")}`);
307
307
  return only;
308
308
  };
309
+ export const selectCanvas = (registry, ref) => ref === undefined ? onlyCanvas(registry) : findCanvas(registry, ref);
309
310
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/canvas/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/canvas/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Terminal } from "../terminal.js";
2
+ import { type Registered } from "./registry.js";
3
+ export declare const DEFAULT_API = "https://prlens.dev";
4
+ export declare const API_ENV = "PR_LENS_API_URL";
5
+ export declare const readApi: (value: unknown, env: Record<string, string | undefined>) => string;
6
+ /** Another app's 404 says nothing about this entry, so it must not change it. */
7
+ export declare const requireSameApi: (api: string, { id, entry }: Registered) => void;
8
+ export declare const requireWriteToken: ({ id, entry }: Registered) => string;
9
+ /** Asking again with the same pair is safe: the app answers "rotated" once the token is on record. */
10
+ export declare const settleRotation: (api: string, { id, entry }: Registered, nextToken: string, terminal: Terminal) => Promise<{
11
+ registered: Registered;
12
+ editUrl: string;
13
+ }>;
14
+ export declare const settlePendingRotation: (api: string, registered: Registered, terminal: Terminal) => Promise<Registered>;
15
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/canvas/write.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhE,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,OAAO,oBAAoB,CAAC;AAEzC,eAAO,MAAM,OAAO,UACX,OAAO,OACT,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACtC,MAQF,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,cAAc,QACpB,MAAM,iBACI,UAAU,KACxB,IAOF,CAAC;AAEF,eAAO,MAAM,iBAAiB,kBAAmB,UAAU,KAAG,MAO7D,CAAC;AAcF,sGAAsG;AACtG,eAAO,MAAM,cAAc,QACpB,MAAM,iBACI,UAAU,aACd,MAAM,YACP,QAAQ,KACjB,OAAO,CAAC;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAoDrD,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAC3B,MAAM,cACC,UAAU,YACZ,QAAQ,KACjB,OAAO,CAAC,UAAU,CAOpB,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { readString } from "../args.js";
2
+ import { rotateCanvas } from "./api.js";
3
+ import { PrLensCliError, usageError } from "../errors.js";
4
+ import { updateRegistry } from "./registry.js";
5
+ export const DEFAULT_API = "https://prlens.dev";
6
+ export const API_ENV = "PR_LENS_API_URL";
7
+ export const readApi = (value, env) => {
8
+ const api = readString(value, "api") ?? env[API_ENV] ?? DEFAULT_API;
9
+ try {
10
+ new URL(api);
11
+ }
12
+ catch {
13
+ throw usageError(`--api needs a URL, got ${JSON.stringify(api)}`);
14
+ }
15
+ return api.replace(/\/+$/, "");
16
+ };
17
+ /** Another app's 404 says nothing about this entry, so it must not change it. */
18
+ export const requireSameApi = (api, { id, entry }) => {
19
+ if (entry.api === api)
20
+ return;
21
+ throw new PrLensCliError("CANVAS_UNREGISTERED", `${id} is registered against ${entry.api}, not ${api}`, `pass --api ${entry.api}, or push the document without --canvas to mint a canvas here`);
22
+ };
23
+ export const requireWriteToken = ({ id, entry }) => {
24
+ if (entry.writeToken !== undefined)
25
+ return entry.writeToken;
26
+ throw new PrLensCliError("CANVAS_UNREGISTERED", `this checkout can read ${id} but holds no write token for it`, "pull its edit link, the one with #w= at the end, and the token comes with it");
27
+ };
28
+ const unfinishedRotation = (error) => new PrLensCliError(error.code, `${error.message}; the rotation is not finished`, [
29
+ error.details,
30
+ "run pr-lens canvas rotate again to finish it: the new token is kept until the app confirms it",
31
+ ]
32
+ .filter((line) => line !== undefined && line !== "")
33
+ .join("\n"));
34
+ /** Asking again with the same pair is safe: the app answers "rotated" once the token is on record. */
35
+ export const settleRotation = async (api, { id, entry }, nextToken, terminal) => {
36
+ const rotated = await rotateCanvas(api, id, requireWriteToken({ id, entry }), nextToken).catch(async (error) => {
37
+ if (!(error instanceof PrLensCliError))
38
+ throw error;
39
+ if (error.code !== "CANVAS_UNKNOWN")
40
+ throw unfinishedRotation(error);
41
+ // Final: a pending token that was current would have been answered
42
+ // "rotated". Drop it now, or a token imported later would carry it out.
43
+ await updateRegistry((registry) => {
44
+ const current = registry.canvases[id];
45
+ if (current === undefined ||
46
+ current.pending !== nextToken ||
47
+ current.api !== api)
48
+ return;
49
+ registry.canvases[id] = { ...current, pending: undefined };
50
+ }, terminal);
51
+ throw new PrLensCliError(error.code, `${error.message}; the pending rotation was dropped`, error.details);
52
+ });
53
+ // A different token pending by now belongs to a later rotation.
54
+ await updateRegistry((registry) => {
55
+ const current = registry.canvases[id];
56
+ if (current === undefined ||
57
+ current.pending !== nextToken ||
58
+ current.api !== api)
59
+ return;
60
+ registry.canvases[id] = {
61
+ ...current,
62
+ writeToken: nextToken,
63
+ pending: undefined,
64
+ };
65
+ }, terminal);
66
+ return {
67
+ registered: {
68
+ id,
69
+ entry: { ...entry, writeToken: nextToken, pending: undefined },
70
+ },
71
+ editUrl: rotated.editUrl,
72
+ };
73
+ };
74
+ export const settlePendingRotation = async (api, registered, terminal) => {
75
+ requireSameApi(api, registered);
76
+ requireWriteToken(registered);
77
+ const pending = registered.entry.pending;
78
+ return pending === undefined
79
+ ? registered
80
+ : (await settleRotation(api, registered, pending, terminal)).registered;
81
+ };
82
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/canvas/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAC;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAChD,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,KAAc,EACd,GAAuC,EAC/B,EAAE;IACV,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC;IACpE,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,EAAE,EAAE,EAAE,KAAK,EAAc,EACnB,EAAE;IACR,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO;IAC9B,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,GAAG,EAAE,0BAA0B,KAAK,CAAC,GAAG,SAAS,GAAG,EAAE,EACtD,cAAc,KAAK,CAAC,GAAG,+DAA+D,CACvF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAc,EAAU,EAAE;IACrE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5D,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,0BAA0B,EAAE,kCAAkC,EAC9D,8EAA8E,CAC/E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAqB,EAAkB,EAAE,CACnE,IAAI,cAAc,CAChB,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,OAAO,gCAAgC,EAChD;IACE,KAAK,CAAC,OAAO;IACb,+FAA+F;CAChG;KACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;KACnD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;AAEJ,sGAAsG;AACtG,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,GAAW,EACX,EAAE,EAAE,EAAE,KAAK,EAAc,EACzB,SAAiB,EACjB,QAAkB,EACoC,EAAE;IACxD,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,GAAG,EACH,EAAE,EACF,iBAAiB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAChC,SAAS,CACV,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAC/B,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC;YAAE,MAAM,KAAK,CAAC;QACpD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAErE,mEAAmE;QACnE,wEAAwE;QACxE,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtC,IACE,OAAO,KAAK,SAAS;gBACrB,OAAO,CAAC,OAAO,KAAK,SAAS;gBAC7B,OAAO,CAAC,GAAG,KAAK,GAAG;gBAEnB,OAAO;YACT,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC7D,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,OAAO,oCAAoC,EACpD,KAAK,CAAC,OAAO,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,IACE,OAAO,KAAK,SAAS;YACrB,OAAO,CAAC,OAAO,KAAK,SAAS;YAC7B,OAAO,CAAC,GAAG,KAAK,GAAG;YAEnB,OAAO;QACT,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;YACtB,GAAG,OAAO;YACV,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEb,OAAO;QACL,UAAU,EAAE;YACV,EAAE;YACF,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;SAC/D;QACD,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EACxC,GAAW,EACX,UAAsB,EACtB,QAAkB,EACG,EAAE;IACvB,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IACzC,OAAO,OAAO,KAAK,SAAS;QAC1B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AAC5E,CAAC,CAAC"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmF9C,eAAO,MAAM,GAAG,SACR,SAAS,MAAM,EAAE,YACb,QAAQ,OACb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACtC,OAAO,CAAC,MAAM,CA0ChB,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmF9C,eAAO,MAAM,GAAG,SACR,SAAS,MAAM,EAAE,YACb,QAAQ,OACb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACtC,OAAO,CAAC,MAAM,CA0ChB,CAAC"}
package/dist/cli.js CHANGED
@@ -17,7 +17,7 @@ const HELP = `pr-lens — review what actually matters
17
17
  pr-lens comment --graph --manifest the pull request comment, as markdown
18
18
  pr-lens validate <file...> any PR Lens document, checked against the contract
19
19
  pr-lens export <graph.json> the merged state, as a map worth committing
20
- pr-lens canvas push | pull | rotate that document, kept on prlens.dev as a page and an embed
20
+ pr-lens canvas push | pull | rotate | delete that document, kept on prlens.dev as a page and an embed
21
21
  pr-lens skill diagram instructions for coding agents
22
22
 
23
23
  pr-lens <command> --help what a command takes
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/commands/canvas.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAc/C,eAAO,MAAM,KAAK,QAmBgF,CAAC;AAgdnG,eAAO,MAAM,aAAa,SAClB,SAAS,MAAM,EAAE,YACb,QAAQ,OACb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACtC,OAAO,CAAC,IAAI,CAiBd,CAAC"}
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/commands/canvas.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAgB/C,eAAO,MAAM,KAAK,QAsBgF,CAAC;AAiWnG,eAAO,MAAM,aAAa,SAClB,SAAS,MAAM,EAAE,YACb,QAAQ,OACb,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACtC,OAAO,CAAC,IAAI,CAmBd,CAAC"}
@@ -1,21 +1,21 @@
1
1
  import { assertNever } from "@coldtea/pr-lens-schema";
2
- import { parseOptions, readString } from "../args.js";
3
- import { fetchCanvas, mintCanvas, pushCanvas, rotateCanvas, verifyWriteToken, } from "../canvas/api.js";
4
- import { ensureRegistryHome, findBySource, findCanvas, isCanvasId, mintWriteToken, onlyCanvas, isReservedRegistryTarget, readRegistry, REGISTRY_PATH, sourceKey, updateRegistry, withRegistryLock, writeRegistry, } from "../canvas/registry.js";
5
- import { readGraphDoc } from "../document.js";
6
- import { PrLensCliError, usageError } from "../errors.js";
2
+ import { fetchCanvas, mintCanvas, pushCanvas, verifyWriteToken, } from "../canvas/api.js";
3
+ import { ensureRegistryHome, findBySource, findCanvas, isCanvasId, mintWriteToken, selectCanvas, isReservedRegistryTarget, readRegistry, REGISTRY_PATH, sourceKey, updateRegistry, withRegistryLock, writeRegistry, } from "../canvas/registry.js";
7
4
  import { writeJsonFile } from "../io.js";
5
+ import { readGraphDoc } from "../document.js";
8
6
  import { WORKSPACE_DIR } from "../workspace.js";
9
- const DEFAULT_API = "https://prlens.dev";
10
- const API_ENV = "PR_LENS_API_URL";
7
+ import { deleteCommand } from "../canvas/delete.js";
8
+ import { parseOptions, readString } from "../args.js";
9
+ import { PrLensCliError, usageError } from "../errors.js";
10
+ import { DEFAULT_API, API_ENV, readApi, requireSameApi, requireWriteToken, settleRotation, settlePendingRotation } from "../canvas/write.js";
11
11
  const DEFAULT_SOURCE = `${WORKSPACE_DIR}/drawn.graph.json`;
12
12
  const DEFAULT_OUT = `${WORKSPACE_DIR}/graph.json`;
13
- const SUBCOMMANDS = ["push", "pull", "rotate"];
13
+ const SUBCOMMANDS = ["push", "pull", "rotate", "delete"];
14
14
  const isSubcommand = (value) => SUBCOMMANDS.some((subcommand) => subcommand === value);
15
- export const USAGE = `pr-lens canvas <push | pull | rotate> [options]
15
+ export const USAGE = `pr-lens canvas <push | pull | rotate | delete> [options]
16
16
 
17
- Keeps a graph document on the PR Lens app as a canvas: a page anyone with the
18
- link can read, and an SVG a README can embed. The write token lands in
17
+ Keeps a graph document on the PR Lens app as a canvas: a page anyone you share
18
+ it with can read, and an SVG a README can embed. The write token lands in
19
19
  ${REGISTRY_PATH}, which git ignores; the edit link carries the same token
20
20
  in its fragment, so share the view link and keep the edit link to yourself.
21
21
 
@@ -31,17 +31,10 @@ in its fragment, so share the view link and keep the edit link to yourself.
31
31
  pr-lens canvas rotate mint a new write token; the old edit link stops working
32
32
  --canvas <id|name> which canvas (default the checkout's only canvas)
33
33
 
34
+ pr-lens canvas delete permanently delete the hosted canvas; keep local graph and SVG files
35
+ --canvas <id|name> which canvas (default the checkout's only canvas)
36
+
34
37
  --api <url> the PR Lens app (default $${API_ENV}, else ${DEFAULT_API})`;
35
- const readApi = (value, env) => {
36
- const api = readString(value, "api") ?? env[API_ENV] ?? DEFAULT_API;
37
- try {
38
- new URL(api);
39
- }
40
- catch {
41
- throw usageError(`--api needs a URL, got ${JSON.stringify(api)}`);
42
- }
43
- return api.replace(/\/+$/, "");
44
- };
45
38
  const TOKEN_SHAPE = /^[A-Za-z0-9_-]{22}$/;
46
39
  /** Pulling an edit link is how a checkout that never pushed a canvas gets its token. */
47
40
  const readCanvasRef = (value) => {
@@ -65,64 +58,7 @@ const readCanvasRef = (value) => {
65
58
  throw usageError(`${value} carries something after #w= that is not a write token`, "an edit link ends in #w= and 22 characters");
66
59
  return { id, origin: url.origin, writeToken };
67
60
  };
68
- /** Another app's 404 says nothing about this entry, so it must not change it. */
69
- const requireSameApi = (api, { id, entry }) => {
70
- if (entry.api === api)
71
- return;
72
- throw new PrLensCliError("CANVAS_UNREGISTERED", `${id} is registered against ${entry.api}, not ${api}`, `pass --api ${entry.api}, or push the document without --canvas to mint a canvas here`);
73
- };
74
- const requireWriteToken = ({ id, entry }) => {
75
- if (entry.writeToken !== undefined)
76
- return entry.writeToken;
77
- throw new PrLensCliError("CANVAS_UNREGISTERED", `this checkout can read ${id} but holds no write token for it`, "pull its edit link, the one with #w= at the end, and the token comes with it");
78
- };
79
61
  const countDiagrams = (count) => `${count} ${count === 1 ? "diagram" : "diagrams"}`;
80
- const unfinishedRotation = (error) => new PrLensCliError(error.code, `${error.message}; the rotation is not finished`, [
81
- error.details,
82
- "run pr-lens canvas rotate again to finish it: the new token is kept until the app confirms it",
83
- ]
84
- .filter((line) => line !== undefined && line !== "")
85
- .join("\n"));
86
- /** Asking again with the same pair is safe: the app answers "rotated" once the token is on record. */
87
- const settleRotation = async (api, { id, entry }, nextToken, terminal) => {
88
- const rotated = await rotateCanvas(api, id, requireWriteToken({ id, entry }), nextToken).catch(async (error) => {
89
- if (!(error instanceof PrLensCliError))
90
- throw error;
91
- if (error.code !== "CANVAS_UNKNOWN")
92
- throw unfinishedRotation(error);
93
- // Final: a pending token that was current would have been answered
94
- // "rotated". Drop it now, or a token imported later would carry it out.
95
- await updateRegistry((registry) => {
96
- const current = registry.canvases[id];
97
- if (current === undefined ||
98
- current.pending !== nextToken ||
99
- current.api !== api)
100
- return;
101
- registry.canvases[id] = { ...current, pending: undefined };
102
- }, terminal);
103
- throw new PrLensCliError(error.code, `${error.message}; the pending rotation was dropped`, error.details);
104
- });
105
- // A different token pending by now belongs to a later rotation.
106
- await updateRegistry((registry) => {
107
- const current = registry.canvases[id];
108
- if (current === undefined ||
109
- current.pending !== nextToken ||
110
- current.api !== api)
111
- return;
112
- registry.canvases[id] = {
113
- ...current,
114
- writeToken: nextToken,
115
- pending: undefined,
116
- };
117
- }, terminal);
118
- return {
119
- registered: {
120
- id,
121
- entry: { ...entry, writeToken: nextToken, pending: undefined },
122
- },
123
- editUrl: rotated.editUrl,
124
- };
125
- };
126
62
  /**
127
63
  * Decided under the lock. A token that changes hands drops a pending
128
64
  * rotation, which was the old holder's business; the same token keeps it.
@@ -223,11 +159,7 @@ const push = async (args, terminal, env) => {
223
159
  }
224
160
  return { id: minted.id, entry };
225
161
  }));
226
- requireSameApi(api, registered);
227
- const pending = registered.entry.pending;
228
- const target = pending === undefined
229
- ? registered
230
- : (await settleRotation(api, registered, pending, terminal)).registered;
162
+ const target = await settlePendingRotation(api, registered, terminal);
231
163
  const pushed = await pushCanvas(api, target.id, requireWriteToken(target), target.entry.rev, document);
232
164
  await updateRegistry((current) => {
233
165
  current.canvases[target.id] = {
@@ -237,8 +169,9 @@ const push = async (args, terminal, env) => {
237
169
  };
238
170
  }, terminal);
239
171
  terminal.out(`✓ ${pushed.viewUrl} — rev ${pushed.rev} · ${countDiagrams(pushed.tiles.length)}`);
240
- terminal.out(` edit link, keep it to yourself: ${pushed.editUrl}`);
172
+ terminal.out(" unlisted: anyone you share it with can open it, no sign-in needed");
241
173
  terminal.out(` README embed: ${pushed.embedUrl}`);
174
+ terminal.out(" remove: pr-lens canvas delete");
242
175
  };
243
176
  const pull = async (args, terminal, env) => {
244
177
  const { values, positionals } = parseOptions(args, {
@@ -254,9 +187,7 @@ const pull = async (args, terminal, env) => {
254
187
  const { id, origin, writeToken } = positional !== undefined
255
188
  ? readCanvasRef(positional)
256
189
  : {
257
- ...(ref === undefined
258
- ? onlyCanvas(registry)
259
- : findCanvas(registry, ref)),
190
+ ...selectCanvas(registry, ref),
260
191
  origin: undefined,
261
192
  writeToken: undefined,
262
193
  };
@@ -312,7 +243,7 @@ const rotate = async (args, terminal, env) => {
312
243
  await ensureRegistryHome(terminal);
313
244
  const registry = await readRegistry();
314
245
  const ref = readString(values.canvas, "canvas");
315
- const { id } = ref === undefined ? onlyCanvas(registry) : findCanvas(registry, ref);
246
+ const { id } = selectCanvas(registry, ref);
316
247
  // Saved before the request, so a lost answer cannot lose it; chosen under
317
248
  // the lock, so two rotations at once finish the same one.
318
249
  let pending;
@@ -341,7 +272,7 @@ const rotate = async (args, terminal, env) => {
341
272
  export const canvasCommand = async (args, terminal, env) => {
342
273
  const [name, ...rest] = args;
343
274
  if (name === undefined)
344
- throw usageError("canvas needs a subcommand: push, pull or rotate");
275
+ throw usageError("canvas needs a subcommand: push, pull, rotate or delete");
345
276
  if (!isSubcommand(name))
346
277
  throw usageError(`unknown canvas subcommand ${JSON.stringify(name)}`);
347
278
  switch (name) {
@@ -349,6 +280,8 @@ export const canvasCommand = async (args, terminal, env) => {
349
280
  return push(rest, terminal, env);
350
281
  case "pull":
351
282
  return pull(rest, terminal, env);
283
+ case "delete":
284
+ return deleteCommand(rest, terminal, env);
352
285
  case "rotate":
353
286
  return rotate(rest, terminal, env);
354
287
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/commands/canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,EACV,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,aAAa,GAId,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,OAAO,GAAG,iBAAiB,CAAC;AAClC,MAAM,cAAc,GAAG,GAAG,aAAa,mBAAmB,CAAC;AAC3D,MAAM,WAAW,GAAG,GAAG,aAAa,aAAa,CAAC;AAElD,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAU,CAAC;AAGxD,MAAM,YAAY,GAAG,CAAC,KAAa,EAAuB,EAAE,CAC1D,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,KAAK,GAAG;;;;EAInB,aAAa;;;oEAGqD,cAAc;;;;;;;oEAOd,WAAW;;;;;mEAKZ,OAAO,UAAU,WAAW,GAAG,CAAC;AAEnG,MAAM,OAAO,GAAG,CACd,KAAc,EACd,GAAuC,EAC/B,EAAE;IACV,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC;IACpE,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC;AAQF,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C,wFAAwF;AACxF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAa,EAAE;IACjD,IAAI,UAAU,CAAC,KAAK,CAAC;QACnB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAEjE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;QAChB,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,UAAU,CACd,6CAA6C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,MAAM,UAAU,CAAC,GAAG,KAAK,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;IAE5E,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;IAClD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3D,MAAM,UAAU,CACd,GAAG,KAAK,wDAAwD,EAChE,4CAA4C,CAC7C,CAAC;IACJ,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;AAChD,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAc,EAAQ,EAAE;IACtE,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;QAAE,OAAO;IAC9B,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,GAAG,EAAE,0BAA0B,KAAK,CAAC,GAAG,SAAS,GAAG,EAAE,EACtD,cAAc,KAAK,CAAC,GAAG,+DAA+D,CACvF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAc,EAAU,EAAE;IAC9D,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC;IAC5D,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,0BAA0B,EAAE,kCAAkC,EAC9D,8EAA8E,CAC/E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAC9C,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;AAErD,MAAM,kBAAkB,GAAG,CAAC,KAAqB,EAAkB,EAAE,CACnE,IAAI,cAAc,CAChB,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,OAAO,gCAAgC,EAChD;IACE,KAAK,CAAC,OAAO;IACb,+FAA+F;CAChG;KACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC;KACnD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;AAEJ,sGAAsG;AACtG,MAAM,cAAc,GAAG,KAAK,EAC1B,GAAW,EACX,EAAE,EAAE,EAAE,KAAK,EAAc,EACzB,SAAiB,EACjB,QAAkB,EACoC,EAAE;IACxD,MAAM,OAAO,GAAG,MAAM,YAAY,CAChC,GAAG,EACH,EAAE,EACF,iBAAiB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAChC,SAAS,CACV,CAAC,KAAK,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAC/B,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC;YAAE,MAAM,KAAK,CAAC;QACpD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAErE,mEAAmE;QACnE,wEAAwE;QACxE,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACtC,IACE,OAAO,KAAK,SAAS;gBACrB,OAAO,CAAC,OAAO,KAAK,SAAS;gBAC7B,OAAO,CAAC,GAAG,KAAK,GAAG;gBAEnB,OAAO;YACT,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC7D,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,MAAM,IAAI,cAAc,CACtB,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,OAAO,oCAAoC,EACpD,KAAK,CAAC,OAAO,CACd,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,IACE,OAAO,KAAK,SAAS;YACrB,OAAO,CAAC,OAAO,KAAK,SAAS;YAC7B,OAAO,CAAC,GAAG,KAAK,GAAG;YAEnB,OAAO;QACT,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;YACtB,GAAG,OAAO;YACV,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEb,OAAO;QACL,UAAU,EAAE;YACV,EAAE;YACF,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;SAC/D;QACD,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC,CAAC;AAgBF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,OAAuB,EAAE,IAAgB,EAAY,EAAE;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;QAAE,OAAO,WAAW,CAAC;IAEtE,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;IACvD,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,IAAI,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,UAAU,CAAC;IAEpE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;IAErD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;QAC1B,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE;QACnD,MAAM,EACJ,KAAK,EAAE,MAAM;YACb,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACnD,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC;KAC1C,CAAC;IAEF,OAAO,OAAO;QACZ,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS;YACzB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM;gBAC7C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,MAAM,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,QAAkB,EAClB,EAAU,EACV,QAAkB,EACZ,EAAE;IACR,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU;YACb,QAAQ,CAAC,GAAG,CAAC,qCAAqC,aAAa,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,KAAK,SAAS;YACZ,QAAQ,CAAC,GAAG,CACV,2CAA2C,EAAE,+BAA+B,CAC7E,CAAC;YACF,OAAO;QACT,KAAK,WAAW;YACd,QAAQ,CAAC,GAAG,CACV,KAAK,aAAa,4EAA4E,CAC/F,CAAC;YACF,OAAO;QACT,KAAK,WAAW;YACd,QAAQ,CAAC,GAAG,CACV,KAAK,EAAE,yCAAyC,aAAa,gCAAgC,CAC9F,CAAC;YACF,OAAO;QACT,KAAK,MAAM;YACT,OAAO;QACT;YACE,OAAO,WAAW,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,EAChB,IAAuB,EACvB,QAAkB,EAClB,GAAuC,EACxB,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE;QACjD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACxB,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACxB,MAAM,UAAU,CACd,sCAAsC,WAAW,CAAC,MAAM,EAAE,CAC3D,CAAC;IAEJ,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IAEtC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,KAAK,GACT,GAAG,KAAK,SAAS;QACf,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;QAChC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEhC,MAAM,UAAU,GACd,KAAK;QACL,qEAAqE;QACrE,8BAA8B;QAC9B,CAAC,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;YACrC,MAAM,SAAS,GACb,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,IAAI,SAAS,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YAE9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,KAAK,GAAgB;gBACzB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK;gBACvD,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;gBACzB,GAAG;gBACH,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;YACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,gFAAgF;gBAChF,IAAI,CAAC,CAAC,KAAK,YAAY,cAAc,CAAC;oBAAE,MAAM,KAAK,CAAC;gBACpD,MAAM,IAAI,cAAc,CACtB,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,OAAO,oDAAoD,EACpE;oBACE,6CAA6C,MAAM,CAAC,OAAO,EAAE;oBAC7D,qEAAqE;oBACrE,KAAK,CAAC,OAAO,IAAI,EAAE;iBACpB;qBACE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;qBAC7B,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC,CAAC;IAEN,cAAc,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IACzC,MAAM,MAAM,GACV,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;IAE5E,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,GAAG,EACH,MAAM,CAAC,EAAE,EACT,iBAAiB,CAAC,MAAM,CAAC,EACzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAChB,QAAQ,CACT,CAAC;IAEF,MAAM,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;YAC5B,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;YAChD,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC;YACzB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC;IACJ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEb,QAAQ,CAAC,GAAG,CACV,KAAK,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAClF,CAAC;IACF,QAAQ,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,EAChB,IAAuB,EACvB,QAAkB,EAClB,GAAuC,EACxB,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE;QACjD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACnC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACxB,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACxB,MAAM,UAAU,CACd,wCAAwC,WAAW,CAAC,MAAM,EAAE,CAC7D,CAAC;IAEJ,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAEjC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAC9B,UAAU,KAAK,SAAS;QACtB,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC;QAC3B,CAAC,CAAC;YACE,GAAG,CAAC,GAAG,KAAK,SAAS;gBACnB,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACtB,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9B,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,SAAS;SACtB,CAAC;IAER,uDAAuD;IACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/C,MAAM,GAAG,GACP,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAC5C,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC;IACzD,IAAI,MAAM,wBAAwB,CAAC,GAAG,CAAC;QACrC,MAAM,UAAU,CACd,GAAG,GAAG,qEAAqE,CAC5E,CAAC;IAEJ,sEAAsE;IACtE,+DAA+D;IAC/D,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC;IACpD,MAAM,MAAM,GACV,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAE5E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAClE,mFAAmF;QACnF,IACE,KAAK,YAAY,cAAc;YAC/B,KAAK,CAAC,IAAI,KAAK,gBAAgB;YAC/B,MAAM;YAEN,OAAO,SAAS,CAAC;QACnB,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtE,MAAM,OAAO,GAA2B,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC7D,MAAM,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE;YACrC,GAAG;YACH,EAAE;YACF,OAAO,EACL,OAAO,KAAK,SAAS;gBACnB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;YACzD,GAAG;YACH,UAAU;YACV,SAAS;YACT,MAAM;SACP,CAAC,CAAC;IACL,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEb,QAAQ,CAAC,GAAG,CACV,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,KAAK,EAAE,+BAA+B;QACxC,CAAC,CAAC,KAAK,GAAG,UAAU,OAAO,CAAC,GAAG,OAAO,OAAO,CAAC,OAAO,EAAE,CAC1D,CAAC;IACF,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,KAAK,EAClB,IAAuB,EACvB,QAAkB,EAClB,GAAuC,EACxB,EAAE;IACjB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE;QACjD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACxB,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACxB,MAAM,UAAU,CACd,6CAA6C,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;IAEJ,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,EAAE,EAAE,EAAE,GACV,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEvE,0EAA0E;IAC1E,0DAA0D;IAC1D,IAAI,OAA+B,CAAC;IACpC,MAAM,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,uEAAuE;QACvE,8DAA8D;QAC9D,cAAc,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACnC,iBAAiB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,OAAO,GAAG;YACR,EAAE;YACF,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,cAAc,EAAE,EAAE;SAChE,CAAC;QACF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IACvC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACb,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS;QAC9D,MAAM,IAAI,cAAc,CACtB,qBAAqB,EACrB,GAAG,EAAE,oBAAoB,aAAa,EAAE,CACzC,CAAC;IAEJ,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CACtC,GAAG,EACH,OAAO,EACP,OAAO,CAAC,KAAK,CAAC,OAAO,EACrB,QAAQ,CACT,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACf,QAAQ,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;IAC7D,QAAQ,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,IAAuB,EACvB,QAAkB,EAClB,GAAuC,EACxB,EAAE;IACjB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,IAAI,IAAI,KAAK,SAAS;QACpB,MAAM,UAAU,CAAC,iDAAiD,CAAC,CAAC;IACtE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACrB,MAAM,UAAU,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnC,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACrC;YACE,OAAO,WAAW,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"canvas.js","sourceRoot":"","sources":["../../src/commands/canvas.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /** Recorded on every document this CLI produces, as the generator's version. */
2
- export declare const CLI_VERSION = "0.4.0";
2
+ export declare const CLI_VERSION = "0.5.1";
3
3
  export declare const GENERATOR_NAME = "pr-lens-cli";
4
4
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /** Recorded on every document this CLI produces, as the generator's version. */
2
- export const CLI_VERSION = "0.4.0";
2
+ export const CLI_VERSION = "0.5.1";
3
3
  export const GENERATOR_NAME = "pr-lens-cli";
4
4
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coldtea/pr-lens-cli",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "The PR Lens command line: turn a pull request diff into a schema-valid graph with your own model key, render it, and compose the comment.",
5
5
  "license": "MIT",
6
6
  "author": "Coldtea AI",
@@ -40,8 +40,8 @@
40
40
  "dependencies": {
41
41
  "yaml": "^2.8.1",
42
42
  "zod": "^4.4.3",
43
- "@coldtea/pr-lens-schema": "^0.2.0",
44
- "@coldtea/pr-lens-renderer": "^0.2.0"
43
+ "@coldtea/pr-lens-renderer": "^0.2.4",
44
+ "@coldtea/pr-lens-schema": "^0.2.1"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^20.19.0",
package/src/canvas/api.ts CHANGED
@@ -1,11 +1,12 @@
1
+ import { z } from "zod";
1
2
  import {
2
3
  assertNever,
3
4
  safeParseGraphDoc,
4
5
  type GraphDoc,
5
6
  } from "@coldtea/pr-lens-schema";
6
- import { z } from "zod";
7
- import { PrLensCliError } from "../errors.js";
7
+
8
8
  import { CLI_VERSION } from "../version.js";
9
+ import { PrLensCliError } from "../errors.js";
9
10
 
10
11
  const REQUEST_TIMEOUT_MS = 60_000;
11
12
 
@@ -87,7 +88,7 @@ const Refusal = z.discriminatedUnion("code", [
87
88
  ]);
88
89
 
89
90
  type Request = {
90
- method: "GET" | "POST" | "PUT";
91
+ method: "GET" | "POST" | "PUT" | "DELETE";
91
92
  path: string;
92
93
  /** Undefined when minting, so a 404 there is not blamed on a canvas. */
93
94
  canvas: string | undefined;
@@ -310,3 +311,14 @@ export const rotateCanvas = (
310
311
  },
311
312
  Rotated,
312
313
  );
314
+
315
+ export const deleteCanvas = (
316
+ api: string,
317
+ id: string,
318
+ token: string,
319
+ ): Promise<{ id: string; deleted: true }> =>
320
+ call(
321
+ api,
322
+ { method: "DELETE", path: canvasPath(id), canvas: id, token },
323
+ z.object({ id: z.literal(id), deleted: z.literal(true) }),
324
+ );
@@ -0,0 +1,39 @@
1
+ import { deleteCanvas } from "./api.js";
2
+ import { usageError } from "../errors.js";
3
+ import type { Terminal } from "../terminal.js";
4
+ import { parseOptions, readString } from "../args.js";
5
+ import { selectCanvas, readRegistry, updateRegistry } from "./registry.js";
6
+ import { readApi, requireWriteToken, settlePendingRotation } from "./write.js";
7
+
8
+ export const deleteCommand = async (
9
+ args: readonly string[],
10
+ terminal: Terminal,
11
+ env: Record<string, string | undefined>,
12
+ ): Promise<void> => {
13
+ const { values, positionals } = parseOptions(args, {
14
+ canvas: { type: "string" },
15
+ api: { type: "string" },
16
+ });
17
+ if (positionals.length > 0)
18
+ throw usageError(
19
+ `delete takes no positional arguments, got ${positionals.join(" ")}`,
20
+ );
21
+
22
+ const api = readApi(values.api, env);
23
+
24
+ const registry = await readRegistry();
25
+
26
+ const ref = readString(values.canvas, "canvas");
27
+ const selected = selectCanvas(registry, ref);
28
+
29
+ const target = await settlePendingRotation(api, selected, terminal);
30
+ await deleteCanvas(api, target.id, requireWriteToken(target));
31
+
32
+ await updateRegistry((current) => {
33
+ if (current.canvases[target.id]?.api === api)
34
+ delete current.canvases[target.id];
35
+ }, terminal);
36
+ terminal.out(
37
+ `✓ deleted ${target.id} from ${api}; local graph and SVG files kept`,
38
+ );
39
+ };
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import {
2
3
  access,
3
4
  link,
@@ -9,14 +10,12 @@ import {
9
10
  readFile,
10
11
  writeFile,
11
12
  } from "node:fs/promises";
12
- import { z } from "zod";
13
13
  import type { Stats } from "node:fs";
14
14
  import { randomBytes } from "node:crypto";
15
+ import { assertNever } from "@coldtea/pr-lens-schema";
15
16
  import { setTimeout as sleep } from "node:timers/promises";
16
17
  import { basename, dirname, join, relative, resolve } from "node:path";
17
18
 
18
- import { assertNever } from "@coldtea/pr-lens-schema";
19
-
20
19
  import { git } from "../git.js";
21
20
  import type { Terminal } from "../terminal.js";
22
21
  import { PrLensCliError, usageError } from "../errors.js";
@@ -477,3 +476,9 @@ export const onlyCanvas = (registry: CanvasRegistry): Registered => {
477
476
 
478
477
  return only;
479
478
  };
479
+
480
+ export const selectCanvas = (
481
+ registry: CanvasRegistry,
482
+ ref: string | undefined,
483
+ ): Registered =>
484
+ ref === undefined ? onlyCanvas(registry) : findCanvas(registry, ref);
@@ -0,0 +1,128 @@
1
+ import { readString } from "../args.js";
2
+ import { rotateCanvas } from "./api.js";
3
+ import type { Terminal } from "../terminal.js";
4
+ import { PrLensCliError, usageError } from "../errors.js";
5
+ import { updateRegistry, type Registered } from "./registry.js";
6
+
7
+ export const DEFAULT_API = "https://prlens.dev";
8
+ export const API_ENV = "PR_LENS_API_URL";
9
+
10
+ export const readApi = (
11
+ value: unknown,
12
+ env: Record<string, string | undefined>,
13
+ ): string => {
14
+ const api = readString(value, "api") ?? env[API_ENV] ?? DEFAULT_API;
15
+ try {
16
+ new URL(api);
17
+ } catch {
18
+ throw usageError(`--api needs a URL, got ${JSON.stringify(api)}`);
19
+ }
20
+ return api.replace(/\/+$/, "");
21
+ };
22
+
23
+ /** Another app's 404 says nothing about this entry, so it must not change it. */
24
+ export const requireSameApi = (
25
+ api: string,
26
+ { id, entry }: Registered,
27
+ ): void => {
28
+ if (entry.api === api) return;
29
+ throw new PrLensCliError(
30
+ "CANVAS_UNREGISTERED",
31
+ `${id} is registered against ${entry.api}, not ${api}`,
32
+ `pass --api ${entry.api}, or push the document without --canvas to mint a canvas here`,
33
+ );
34
+ };
35
+
36
+ export const requireWriteToken = ({ id, entry }: Registered): string => {
37
+ if (entry.writeToken !== undefined) return entry.writeToken;
38
+ throw new PrLensCliError(
39
+ "CANVAS_UNREGISTERED",
40
+ `this checkout can read ${id} but holds no write token for it`,
41
+ "pull its edit link, the one with #w= at the end, and the token comes with it",
42
+ );
43
+ };
44
+
45
+ const unfinishedRotation = (error: PrLensCliError): PrLensCliError =>
46
+ new PrLensCliError(
47
+ error.code,
48
+ `${error.message}; the rotation is not finished`,
49
+ [
50
+ error.details,
51
+ "run pr-lens canvas rotate again to finish it: the new token is kept until the app confirms it",
52
+ ]
53
+ .filter((line) => line !== undefined && line !== "")
54
+ .join("\n"),
55
+ );
56
+
57
+ /** Asking again with the same pair is safe: the app answers "rotated" once the token is on record. */
58
+ export const settleRotation = async (
59
+ api: string,
60
+ { id, entry }: Registered,
61
+ nextToken: string,
62
+ terminal: Terminal,
63
+ ): Promise<{ registered: Registered; editUrl: string }> => {
64
+ const rotated = await rotateCanvas(
65
+ api,
66
+ id,
67
+ requireWriteToken({ id, entry }),
68
+ nextToken,
69
+ ).catch(async (error: unknown) => {
70
+ if (!(error instanceof PrLensCliError)) throw error;
71
+ if (error.code !== "CANVAS_UNKNOWN") throw unfinishedRotation(error);
72
+
73
+ // Final: a pending token that was current would have been answered
74
+ // "rotated". Drop it now, or a token imported later would carry it out.
75
+ await updateRegistry((registry) => {
76
+ const current = registry.canvases[id];
77
+ if (
78
+ current === undefined ||
79
+ current.pending !== nextToken ||
80
+ current.api !== api
81
+ )
82
+ return;
83
+ registry.canvases[id] = { ...current, pending: undefined };
84
+ }, terminal);
85
+ throw new PrLensCliError(
86
+ error.code,
87
+ `${error.message}; the pending rotation was dropped`,
88
+ error.details,
89
+ );
90
+ });
91
+
92
+ // A different token pending by now belongs to a later rotation.
93
+ await updateRegistry((registry) => {
94
+ const current = registry.canvases[id];
95
+ if (
96
+ current === undefined ||
97
+ current.pending !== nextToken ||
98
+ current.api !== api
99
+ )
100
+ return;
101
+ registry.canvases[id] = {
102
+ ...current,
103
+ writeToken: nextToken,
104
+ pending: undefined,
105
+ };
106
+ }, terminal);
107
+
108
+ return {
109
+ registered: {
110
+ id,
111
+ entry: { ...entry, writeToken: nextToken, pending: undefined },
112
+ },
113
+ editUrl: rotated.editUrl,
114
+ };
115
+ };
116
+
117
+ export const settlePendingRotation = async (
118
+ api: string,
119
+ registered: Registered,
120
+ terminal: Terminal,
121
+ ): Promise<Registered> => {
122
+ requireSameApi(api, registered);
123
+ requireWriteToken(registered);
124
+ const pending = registered.entry.pending;
125
+ return pending === undefined
126
+ ? registered
127
+ : (await settleRotation(api, registered, pending, terminal)).registered;
128
+ };
package/src/cli.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { assertNever } from "@coldtea/pr-lens-schema";
2
+
2
3
  import { CLI_VERSION } from "./version.js";
3
4
  import type { Terminal } from "./terminal.js";
4
5
  import { formatError, PrLensCliError } from "./errors.js";
@@ -23,7 +24,7 @@ const HELP = `pr-lens — review what actually matters
23
24
  pr-lens comment --graph --manifest the pull request comment, as markdown
24
25
  pr-lens validate <file...> any PR Lens document, checked against the contract
25
26
  pr-lens export <graph.json> the merged state, as a map worth committing
26
- pr-lens canvas push | pull | rotate that document, kept on prlens.dev as a page and an embed
27
+ pr-lens canvas push | pull | rotate | delete that document, kept on prlens.dev as a page and an embed
27
28
  pr-lens skill diagram instructions for coding agents
28
29
 
29
30
  pr-lens <command> --help what a command takes
@@ -1,10 +1,9 @@
1
1
  import { assertNever } from "@coldtea/pr-lens-schema";
2
- import { parseOptions, readString } from "../args.js";
2
+
3
3
  import {
4
4
  fetchCanvas,
5
5
  mintCanvas,
6
6
  pushCanvas,
7
- rotateCanvas,
8
7
  verifyWriteToken,
9
8
  } from "../canvas/api.js";
10
9
  import {
@@ -13,7 +12,7 @@ import {
13
12
  findCanvas,
14
13
  isCanvasId,
15
14
  mintWriteToken,
16
- onlyCanvas,
15
+ selectCanvas,
17
16
  isReservedRegistryTarget,
18
17
  readRegistry,
19
18
  REGISTRY_PATH,
@@ -25,27 +24,28 @@ import {
25
24
  type CanvasRegistry,
26
25
  type Registered,
27
26
  } from "../canvas/registry.js";
28
- import { readGraphDoc } from "../document.js";
29
- import { PrLensCliError, usageError } from "../errors.js";
30
27
  import { writeJsonFile } from "../io.js";
28
+ import { readGraphDoc } from "../document.js";
31
29
  import type { Terminal } from "../terminal.js";
32
30
  import { WORKSPACE_DIR } from "../workspace.js";
31
+ import { deleteCommand } from "../canvas/delete.js";
32
+ import { parseOptions, readString } from "../args.js";
33
+ import { PrLensCliError, usageError } from "../errors.js";
34
+ import { DEFAULT_API, API_ENV, readApi, requireSameApi, requireWriteToken, settleRotation, settlePendingRotation } from "../canvas/write.js";
33
35
 
34
- const DEFAULT_API = "https://prlens.dev";
35
- const API_ENV = "PR_LENS_API_URL";
36
36
  const DEFAULT_SOURCE = `${WORKSPACE_DIR}/drawn.graph.json`;
37
37
  const DEFAULT_OUT = `${WORKSPACE_DIR}/graph.json`;
38
38
 
39
- const SUBCOMMANDS = ["push", "pull", "rotate"] as const;
39
+ const SUBCOMMANDS = ["push", "pull", "rotate", "delete"] as const;
40
40
  type Subcommand = (typeof SUBCOMMANDS)[number];
41
41
 
42
42
  const isSubcommand = (value: string): value is Subcommand =>
43
43
  SUBCOMMANDS.some((subcommand) => subcommand === value);
44
44
 
45
- export const USAGE = `pr-lens canvas <push | pull | rotate> [options]
45
+ export const USAGE = `pr-lens canvas <push | pull | rotate | delete> [options]
46
46
 
47
- Keeps a graph document on the PR Lens app as a canvas: a page anyone with the
48
- link can read, and an SVG a README can embed. The write token lands in
47
+ Keeps a graph document on the PR Lens app as a canvas: a page anyone you share
48
+ it with can read, and an SVG a README can embed. The write token lands in
49
49
  ${REGISTRY_PATH}, which git ignores; the edit link carries the same token
50
50
  in its fragment, so share the view link and keep the edit link to yourself.
51
51
 
@@ -61,20 +61,10 @@ in its fragment, so share the view link and keep the edit link to yourself.
61
61
  pr-lens canvas rotate mint a new write token; the old edit link stops working
62
62
  --canvas <id|name> which canvas (default the checkout's only canvas)
63
63
 
64
- --api <url> the PR Lens app (default $${API_ENV}, else ${DEFAULT_API})`;
64
+ pr-lens canvas delete permanently delete the hosted canvas; keep local graph and SVG files
65
+ --canvas <id|name> which canvas (default the checkout's only canvas)
65
66
 
66
- const readApi = (
67
- value: unknown,
68
- env: Record<string, string | undefined>,
69
- ): string => {
70
- const api = readString(value, "api") ?? env[API_ENV] ?? DEFAULT_API;
71
- try {
72
- new URL(api);
73
- } catch {
74
- throw usageError(`--api needs a URL, got ${JSON.stringify(api)}`);
75
- }
76
- return api.replace(/\/+$/, "");
77
- };
67
+ --api <url> the PR Lens app (default $${API_ENV}, else ${DEFAULT_API})`;
78
68
 
79
69
  type CanvasRef = {
80
70
  id: string;
@@ -114,100 +104,9 @@ const readCanvasRef = (value: string): CanvasRef => {
114
104
  return { id, origin: url.origin, writeToken };
115
105
  };
116
106
 
117
- /** Another app's 404 says nothing about this entry, so it must not change it. */
118
- const requireSameApi = (api: string, { id, entry }: Registered): void => {
119
- if (entry.api === api) return;
120
- throw new PrLensCliError(
121
- "CANVAS_UNREGISTERED",
122
- `${id} is registered against ${entry.api}, not ${api}`,
123
- `pass --api ${entry.api}, or push the document without --canvas to mint a canvas here`,
124
- );
125
- };
126
-
127
- const requireWriteToken = ({ id, entry }: Registered): string => {
128
- if (entry.writeToken !== undefined) return entry.writeToken;
129
- throw new PrLensCliError(
130
- "CANVAS_UNREGISTERED",
131
- `this checkout can read ${id} but holds no write token for it`,
132
- "pull its edit link, the one with #w= at the end, and the token comes with it",
133
- );
134
- };
135
-
136
107
  const countDiagrams = (count: number): string =>
137
108
  `${count} ${count === 1 ? "diagram" : "diagrams"}`;
138
109
 
139
- const unfinishedRotation = (error: PrLensCliError): PrLensCliError =>
140
- new PrLensCliError(
141
- error.code,
142
- `${error.message}; the rotation is not finished`,
143
- [
144
- error.details,
145
- "run pr-lens canvas rotate again to finish it: the new token is kept until the app confirms it",
146
- ]
147
- .filter((line) => line !== undefined && line !== "")
148
- .join("\n"),
149
- );
150
-
151
- /** Asking again with the same pair is safe: the app answers "rotated" once the token is on record. */
152
- const settleRotation = async (
153
- api: string,
154
- { id, entry }: Registered,
155
- nextToken: string,
156
- terminal: Terminal,
157
- ): Promise<{ registered: Registered; editUrl: string }> => {
158
- const rotated = await rotateCanvas(
159
- api,
160
- id,
161
- requireWriteToken({ id, entry }),
162
- nextToken,
163
- ).catch(async (error: unknown) => {
164
- if (!(error instanceof PrLensCliError)) throw error;
165
- if (error.code !== "CANVAS_UNKNOWN") throw unfinishedRotation(error);
166
-
167
- // Final: a pending token that was current would have been answered
168
- // "rotated". Drop it now, or a token imported later would carry it out.
169
- await updateRegistry((registry) => {
170
- const current = registry.canvases[id];
171
- if (
172
- current === undefined ||
173
- current.pending !== nextToken ||
174
- current.api !== api
175
- )
176
- return;
177
- registry.canvases[id] = { ...current, pending: undefined };
178
- }, terminal);
179
- throw new PrLensCliError(
180
- error.code,
181
- `${error.message}; the pending rotation was dropped`,
182
- error.details,
183
- );
184
- });
185
-
186
- // A different token pending by now belongs to a later rotation.
187
- await updateRegistry((registry) => {
188
- const current = registry.canvases[id];
189
- if (
190
- current === undefined ||
191
- current.pending !== nextToken ||
192
- current.api !== api
193
- )
194
- return;
195
- registry.canvases[id] = {
196
- ...current,
197
- writeToken: nextToken,
198
- pending: undefined,
199
- };
200
- }, terminal);
201
-
202
- return {
203
- registered: {
204
- id,
205
- entry: { ...entry, writeToken: nextToken, pending: undefined },
206
- },
207
- editUrl: rotated.editUrl,
208
- };
209
- };
210
-
211
110
  type Recorded = "imported" | "kept" | "overtaken" | "refused" | "elsewhere";
212
111
 
213
112
  type PullRecord = {
@@ -355,12 +254,7 @@ const push = async (
355
254
  return { id: minted.id, entry };
356
255
  }));
357
256
 
358
- requireSameApi(api, registered);
359
- const pending = registered.entry.pending;
360
- const target =
361
- pending === undefined
362
- ? registered
363
- : (await settleRotation(api, registered, pending, terminal)).registered;
257
+ const target = await settlePendingRotation(api, registered, terminal);
364
258
 
365
259
  const pushed = await pushCanvas(
366
260
  api,
@@ -381,8 +275,9 @@ const push = async (
381
275
  terminal.out(
382
276
  `✓ ${pushed.viewUrl} — rev ${pushed.rev} · ${countDiagrams(pushed.tiles.length)}`,
383
277
  );
384
- terminal.out(` edit link, keep it to yourself: ${pushed.editUrl}`);
278
+ terminal.out(" unlisted: anyone you share it with can open it, no sign-in needed");
385
279
  terminal.out(` README embed: ${pushed.embedUrl}`);
280
+ terminal.out(" remove: pr-lens canvas delete");
386
281
  };
387
282
 
388
283
  const pull = async (
@@ -408,9 +303,7 @@ const pull = async (
408
303
  positional !== undefined
409
304
  ? readCanvasRef(positional)
410
305
  : {
411
- ...(ref === undefined
412
- ? onlyCanvas(registry)
413
- : findCanvas(registry, ref)),
306
+ ...selectCanvas(registry, ref),
414
307
  origin: undefined,
415
308
  writeToken: undefined,
416
309
  };
@@ -487,8 +380,7 @@ const rotate = async (
487
380
  await ensureRegistryHome(terminal);
488
381
  const registry = await readRegistry();
489
382
  const ref = readString(values.canvas, "canvas");
490
- const { id } =
491
- ref === undefined ? onlyCanvas(registry) : findCanvas(registry, ref);
383
+ const { id } = selectCanvas(registry, ref);
492
384
 
493
385
  // Saved before the request, so a lost answer cannot lose it; chosen under
494
386
  // the lock, so two rotations at once finish the same one.
@@ -532,7 +424,7 @@ export const canvasCommand = async (
532
424
  ): Promise<void> => {
533
425
  const [name, ...rest] = args;
534
426
  if (name === undefined)
535
- throw usageError("canvas needs a subcommand: push, pull or rotate");
427
+ throw usageError("canvas needs a subcommand: push, pull, rotate or delete");
536
428
  if (!isSubcommand(name))
537
429
  throw usageError(`unknown canvas subcommand ${JSON.stringify(name)}`);
538
430
 
@@ -541,6 +433,8 @@ export const canvasCommand = async (
541
433
  return push(rest, terminal, env);
542
434
  case "pull":
543
435
  return pull(rest, terminal, env);
436
+ case "delete":
437
+ return deleteCommand(rest, terminal, env);
544
438
  case "rotate":
545
439
  return rotate(rest, terminal, env);
546
440
  default:
package/src/version.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  /** Recorded on every document this CLI produces, as the generator's version. */
2
- export const CLI_VERSION = "0.4.0";
2
+ export const CLI_VERSION = "0.5.1";
3
3
 
4
4
  export const GENERATOR_NAME = "pr-lens-cli";