@page-scanner/cli 0.2.0 → 0.2.2
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 +6 -1
- package/dist/bin.js +1 -1
- package/dist/cli/args.d.ts +9 -3
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +35 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +27 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/format.d.ts +1 -1
- package/dist/daemon/client.d.ts +32 -2
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +63 -8
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/rpc-server.js +2 -2
- package/dist/daemon/run.d.ts +6 -0
- package/dist/daemon/run.d.ts.map +1 -1
- package/dist/daemon/run.js +12 -6
- package/dist/daemon/run.js.map +1 -1
- package/dist/daemon/self.d.ts +20 -0
- package/dist/daemon/self.d.ts.map +1 -1
- package/dist/daemon/self.js +22 -0
- package/dist/daemon/self.js.map +1 -1
- package/dist/daemon/state.js +1 -1
- package/dist/daemon/state.js.map +1 -1
- package/dist/diff/image.js +1 -1
- package/dist/diff/image.js.map +1 -1
- package/dist/diff/png.d.ts +1 -1
- package/dist/diff/png.d.ts.map +1 -1
- package/dist/diff/png.js +4 -4
- package/dist/diff/png.js.map +1 -1
- package/dist/diff/text.js +4 -4
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts +24 -0
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +45 -2
- package/dist/output.js.map +1 -1
- package/dist/verify.d.ts +31 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +115 -0
- package/dist/verify.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/daemon/run.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* The daemon process: the bridge listener plus its RPC control surface.
|
|
3
3
|
*
|
|
4
4
|
* `page-scanner serve` runs it in the foreground; `serve --daemon` is what
|
|
5
|
-
* `connectDaemon` spawns behind a command that needed one. Both end up here
|
|
5
|
+
* `connectDaemon` spawns behind a command that needed one. Both end up here,
|
|
6
|
+
* and so does `startDaemonInProcess`, for a host that refuses the spawn.
|
|
6
7
|
*/
|
|
7
8
|
import { randomBytes } from 'node:crypto';
|
|
8
9
|
import { readConfig } from '../config.js';
|
|
@@ -29,6 +30,7 @@ function idleMinutesFrom(explicit) {
|
|
|
29
30
|
*/
|
|
30
31
|
export async function runDaemon(options = {}) {
|
|
31
32
|
const log = options.log ?? ((message) => process.stderr.write(`${message}\n`));
|
|
33
|
+
const handleSignals = options.handleSignals ?? true;
|
|
32
34
|
const existing = readDaemonState();
|
|
33
35
|
if (existing) {
|
|
34
36
|
log(`page-scanner is already running (pid ${existing.pid}, rpc port ${existing.rpcPort}).`);
|
|
@@ -65,14 +67,16 @@ export async function runDaemon(options = {}) {
|
|
|
65
67
|
});
|
|
66
68
|
// Assigned as each one comes up, so a shutdown arriving between two awaits
|
|
67
69
|
// tears down whatever exists rather than tripping over a binding that is not
|
|
68
|
-
//
|
|
70
|
+
// initialized yet.
|
|
69
71
|
let rpc = null;
|
|
70
72
|
let idleTimer = null;
|
|
71
73
|
const shutdown = async () => {
|
|
72
74
|
if (idleTimer)
|
|
73
75
|
clearInterval(idleTimer);
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
if (handleSignals) {
|
|
77
|
+
process.off('SIGINT', stop);
|
|
78
|
+
process.off('SIGTERM', stop);
|
|
79
|
+
}
|
|
76
80
|
if (rpc)
|
|
77
81
|
await rpc.close();
|
|
78
82
|
await bridge.close();
|
|
@@ -122,8 +126,10 @@ export async function runDaemon(options = {}) {
|
|
|
122
126
|
}, IDLE_CHECK_INTERVAL_MS)
|
|
123
127
|
: null;
|
|
124
128
|
idleTimer?.unref();
|
|
125
|
-
|
|
126
|
-
|
|
129
|
+
if (handleSignals) {
|
|
130
|
+
process.on('SIGINT', stop);
|
|
131
|
+
process.on('SIGTERM', stop);
|
|
132
|
+
}
|
|
127
133
|
await stopped;
|
|
128
134
|
}
|
|
129
135
|
//# sourceMappingURL=run.js.map
|
package/dist/daemon/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/daemon/run.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/daemon/run.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/self.d.ts
CHANGED
|
@@ -20,4 +20,24 @@ export declare function packageEntry(moduleUrl?: string): string | undefined;
|
|
|
20
20
|
* bundled path where there is no bin at all.
|
|
21
21
|
*/
|
|
22
22
|
export declare function selfCommand(argv?: string[], execPath?: string, findEntry?: () => string | undefined): SelfCommand;
|
|
23
|
+
/**
|
|
24
|
+
* Whether this process can run its own CLI again as a child at all.
|
|
25
|
+
*
|
|
26
|
+
* Not inside an Electron utility process, which is where Claude Desktop runs
|
|
27
|
+
* an installed `.mcpb` when its built-in Node.js satisfies the manifest (the
|
|
28
|
+
* default). `process.execPath` there is the app's own helper executable, not
|
|
29
|
+
* Node, and the host wraps `child_process` to refuse spawning any executable
|
|
30
|
+
* of the app: the spawn errors, the daemon never starts, and every tool call
|
|
31
|
+
* used to fail with "the daemon did not come up within 5s". Seen on macOS and
|
|
32
|
+
* Windows 11 with page-scanner-mcp 0.3.0; the refusal is in Claude Desktop's
|
|
33
|
+
* `mcp-runtime/nodeHost.js` and is not platform-specific.
|
|
34
|
+
* `ELECTRON_RUN_AS_NODE` does not help: the helper refuses to start without
|
|
35
|
+
* `--type` either way.
|
|
36
|
+
*
|
|
37
|
+
* `process.parentPort` exists only in a utility process, so a plain Node, and
|
|
38
|
+
* an Electron binary run as Node by an editor, still spawn as before.
|
|
39
|
+
* @param versions defaults to process.versions, injectable for tests.
|
|
40
|
+
* @param hasParentPort defaults to whether process.parentPort exists.
|
|
41
|
+
*/
|
|
42
|
+
export declare function canSpawnSelf(versions?: NodeJS.ProcessVersions, hasParentPort?: boolean): boolean;
|
|
23
43
|
//# sourceMappingURL=self.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self.d.ts","sourceRoot":"","sources":["../../src/daemon/self.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAkB,GAAG,MAAM,GAAG,SAAS,CAW5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,IAAI,GAAE,MAAM,EAAiB,EAC7B,QAAQ,SAAmB,EAC3B,SAAS,GAAE,MAAM,MAAM,GAAG,SAAwB,GACjD,WAAW,CAkBb"}
|
|
1
|
+
{"version":3,"file":"self.d.ts","sourceRoot":"","sources":["../../src/daemon/self.ts"],"names":[],"mappings":"AAmCA,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,SAAkB,GAAG,MAAM,GAAG,SAAS,CAW5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,IAAI,GAAE,MAAM,EAAiB,EAC7B,QAAQ,SAAmB,EAC3B,SAAS,GAAE,MAAM,MAAM,GAAG,SAAwB,GACjD,WAAW,CAkBb;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,GAAE,MAAM,CAAC,eAAkC,EACnD,aAAa,UAA0B,GACtC,OAAO,CAET"}
|
package/dist/daemon/self.js
CHANGED
|
@@ -73,4 +73,26 @@ export function selfCommand(argv = process.argv, execPath = process.execPath, fi
|
|
|
73
73
|
}
|
|
74
74
|
return { command: execPath, args: [script] };
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Whether this process can run its own CLI again as a child at all.
|
|
78
|
+
*
|
|
79
|
+
* Not inside an Electron utility process, which is where Claude Desktop runs
|
|
80
|
+
* an installed `.mcpb` when its built-in Node.js satisfies the manifest (the
|
|
81
|
+
* default). `process.execPath` there is the app's own helper executable, not
|
|
82
|
+
* Node, and the host wraps `child_process` to refuse spawning any executable
|
|
83
|
+
* of the app: the spawn errors, the daemon never starts, and every tool call
|
|
84
|
+
* used to fail with "the daemon did not come up within 5s". Seen on macOS and
|
|
85
|
+
* Windows 11 with page-scanner-mcp 0.3.0; the refusal is in Claude Desktop's
|
|
86
|
+
* `mcp-runtime/nodeHost.js` and is not platform-specific.
|
|
87
|
+
* `ELECTRON_RUN_AS_NODE` does not help: the helper refuses to start without
|
|
88
|
+
* `--type` either way.
|
|
89
|
+
*
|
|
90
|
+
* `process.parentPort` exists only in a utility process, so a plain Node, and
|
|
91
|
+
* an Electron binary run as Node by an editor, still spawn as before.
|
|
92
|
+
* @param versions defaults to process.versions, injectable for tests.
|
|
93
|
+
* @param hasParentPort defaults to whether process.parentPort exists.
|
|
94
|
+
*/
|
|
95
|
+
export function canSpawnSelf(versions = process.versions, hasParentPort = 'parentPort' in process) {
|
|
96
|
+
return versions.electron === undefined || !hasParentPort;
|
|
97
|
+
}
|
|
76
98
|
//# sourceMappingURL=self.js.map
|
package/dist/daemon/self.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../src/daemon/self.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;IACtD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,OAAiB,OAAO,CAAC,IAAI,EAC7B,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,YAAsC,YAAY;IAElD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAErE,4EAA4E;IAC5E,mCAAmC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1C,2EAA2E;QAC3E,0EAA0E;QAC1E,eAAe;QACf,MAAM,IAAI,gBAAgB,CACxB,eAAe,EACf,qGAAqG,EACrG,gHAAgH,CACjH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/C,CAAC"}
|
|
1
|
+
{"version":3,"file":"self.js","sourceRoot":"","sources":["../../src/daemon/self.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAShD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;IACtD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,OAAiB,OAAO,CAAC,IAAI,EAC7B,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAC3B,YAAsC,YAAY;IAElD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAErE,4EAA4E;IAC5E,mCAAmC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1C,2EAA2E;QAC3E,0EAA0E;QAC1E,eAAe;QACf,MAAM,IAAI,gBAAgB,CACxB,eAAe,EACf,qGAAqG,EACrG,gHAAgH,CACjH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAC1B,WAAmC,OAAO,CAAC,QAAQ,EACnD,aAAa,GAAG,YAAY,IAAI,OAAO;IAEvC,OAAO,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC;AAC3D,CAAC"}
|
package/dist/daemon/state.js
CHANGED
|
@@ -58,7 +58,7 @@ export function readDaemonState() {
|
|
|
58
58
|
if (typeof startedAt !== 'number' || !Number.isFinite(startedAt))
|
|
59
59
|
return null;
|
|
60
60
|
// The liveness check comes last so a malformed file is rejected on its own
|
|
61
|
-
// terms rather than by
|
|
61
|
+
// terms rather than by signaling whatever the garbage in `pid` points at.
|
|
62
62
|
if (!processAlive(pid))
|
|
63
63
|
return null;
|
|
64
64
|
return { pid, rpcPort, secret, bridgePort, version, startedAt };
|
package/dist/daemon/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/daemon/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAezC,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,mGAAmG;AACnG,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAC7F,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAiC,CAAC;IAEjD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACxE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9E,2EAA2E;IAC3E,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/daemon/state.ts"],"names":[],"mappings":"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"}
|
package/dist/diff/image.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const CELL = 8;
|
|
2
2
|
export const TOLERANCE = 48;
|
|
3
3
|
export const MERGE_GAP = 16;
|
|
4
|
-
/** The outline's
|
|
4
|
+
/** The outline's color and width, and how far it sits outside its region. */
|
|
5
5
|
const OUTLINE = [230, 40, 40, 255];
|
|
6
6
|
const OUTLINE_WIDTH = 3;
|
|
7
7
|
const OUTLINE_MARGIN = 3;
|
package/dist/diff/image.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/diff/image.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AACtB,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/diff/image.ts"],"names":[],"mappings":"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"}
|
package/dist/diff/png.d.ts
CHANGED
|
@@ -7,6 +7,6 @@ export interface Rgba {
|
|
|
7
7
|
export declare class PngError extends Error {
|
|
8
8
|
}
|
|
9
9
|
export declare function decodePng(bytes: Uint8Array): Rgba;
|
|
10
|
-
/** RGBA as a PNG, each row filtered Up, which suits a page's long runs of flat
|
|
10
|
+
/** RGBA as a PNG, each row filtered Up, which suits a page's long runs of flat color. */
|
|
11
11
|
export declare function encodePng(image: Rgba): Buffer;
|
|
12
12
|
//# sourceMappingURL=png.d.ts.map
|
package/dist/diff/png.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../src/diff/png.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAYtC,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAwGjD;AAWD,
|
|
1
|
+
{"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../src/diff/png.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAYtC,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAwGjD;AAWD,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAuB7C"}
|
package/dist/diff/png.js
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The CLI ships one runtime dependency, and an image library would be a
|
|
5
5
|
* second for one command. A capture's PNG is the plainest kind there is: 8
|
|
6
|
-
* bits a channel, not interlaced. Decoding covers every
|
|
7
|
-
* (
|
|
6
|
+
* bits a channel, not interlaced. Decoding covers every color type at 8 bits
|
|
7
|
+
* (gray, RGB, palette, gray with alpha, RGBA), which is what Chrome, a canvas
|
|
8
8
|
* and most tools write; anything else is refused by name. Encoding writes
|
|
9
9
|
* RGBA only.
|
|
10
10
|
*/
|
|
@@ -46,7 +46,7 @@ export function decodePng(bytes) {
|
|
|
46
46
|
if (interlace !== 0)
|
|
47
47
|
throw new PngError('an interlaced PNG, which is not read');
|
|
48
48
|
if (CHANNELS[colorType] === undefined)
|
|
49
|
-
throw new PngError(`PNG
|
|
49
|
+
throw new PngError(`PNG color type ${colorType}`);
|
|
50
50
|
}
|
|
51
51
|
else if (type === 'PLTE')
|
|
52
52
|
palette = body;
|
|
@@ -141,7 +141,7 @@ function chunk(type, body) {
|
|
|
141
141
|
tail.writeUInt32BE(crc32(Buffer.concat([head.subarray(4), body])) >>> 0, 0);
|
|
142
142
|
return Buffer.concat([head, body, tail]);
|
|
143
143
|
}
|
|
144
|
-
/** RGBA as a PNG, each row filtered Up, which suits a page's long runs of flat
|
|
144
|
+
/** RGBA as a PNG, each row filtered Up, which suits a page's long runs of flat color. */
|
|
145
145
|
export function encodePng(image) {
|
|
146
146
|
const stride = image.width * 4;
|
|
147
147
|
const raw = Buffer.alloc((stride + 1) * image.height);
|
package/dist/diff/png.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/diff/png.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/diff/png.ts"],"names":[],"mappings":"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"}
|
package/dist/diff/text.js
CHANGED
|
@@ -20,10 +20,10 @@ export const MAX_EDIT_DISTANCE = 2000;
|
|
|
20
20
|
export const CONTEXT_LINES = 3;
|
|
21
21
|
/** The YAML front matter a Markdown export starts with, taken off the text. */
|
|
22
22
|
export function splitFrontMatter(text) {
|
|
23
|
-
const
|
|
24
|
-
const match = /^---\n([\s\S]*?)\n---\n?/.exec(
|
|
23
|
+
const normalized = text.replace(/\r\n?/g, '\n');
|
|
24
|
+
const match = /^---\n([\s\S]*?)\n---\n?/.exec(normalized);
|
|
25
25
|
if (!match)
|
|
26
|
-
return { fields: {}, body:
|
|
26
|
+
return { fields: {}, body: normalized };
|
|
27
27
|
const fields = {};
|
|
28
28
|
for (const line of match[1].split('\n')) {
|
|
29
29
|
const colon = line.indexOf(':');
|
|
@@ -41,7 +41,7 @@ export function splitFrontMatter(text) {
|
|
|
41
41
|
}
|
|
42
42
|
fields[line.slice(0, colon).trim()] = value;
|
|
43
43
|
}
|
|
44
|
-
return { fields, body:
|
|
44
|
+
return { fields, body: normalized.slice(match[0].length) };
|
|
45
45
|
}
|
|
46
46
|
/** The edit script from `a` to `b`, as a line each: kept, removed or added. */
|
|
47
47
|
export function diffLines(a, b) {
|
package/dist/errors.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export declare class PageScannerError extends Error {
|
|
|
31
31
|
export declare function isPageScannerError(value: unknown): value is PageScannerError;
|
|
32
32
|
/**
|
|
33
33
|
* Turns whatever was thrown into a PageScannerError, so every exit goes
|
|
34
|
-
* through the same reporting path. An
|
|
34
|
+
* through the same reporting path. An unrecognized failure is SCAN_FAILED
|
|
35
35
|
* rather than a crash: the caller still gets a code and a message.
|
|
36
36
|
*/
|
|
37
37
|
export declare function toPageScannerError(value: unknown): PageScannerError;
|
package/dist/errors.js
CHANGED
|
@@ -60,7 +60,7 @@ export function isPageScannerError(value) {
|
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Turns whatever was thrown into a PageScannerError, so every exit goes
|
|
63
|
-
* through the same reporting path. An
|
|
63
|
+
* through the same reporting path. An unrecognized failure is SCAN_FAILED
|
|
64
64
|
* rather than a crash: the caller still gets a code and a message.
|
|
65
65
|
*/
|
|
66
66
|
export function toPageScannerError(value) {
|
package/dist/index.d.ts
CHANGED
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
export { listBrowsers, listTabs, pair, scan, scanMany, checkBatch, checkOutput, MARKDOWN_MODES, status, stop, waitForBrowser, type CommonOptions, type PairResult, type ScanOptions, type ScanResult, type BatchItem, type BatchOptions, type BatchResult, type MarkdownMode, type PageText, type StatusReport, type TabsResult, } from './api.js';
|
|
9
9
|
export { configDir, configPath, configFileIsOwnerOnly, ensureConfig, readConfig, DEFAULT_PORT, type PairingConfig, } from './config.js';
|
|
10
10
|
export { exitCodeFor, isPageScannerError, toPageScannerError, PageScannerError, ERROR_CODES, type ErrorCode, } from './errors.js';
|
|
11
|
-
export { outputNamesAFile, resolveOutputPath, withExtension, writeScanFile, writeTextFile, } from './output.js';
|
|
11
|
+
export { defaultOutputDirectory, expandHome, outputNamesAFile, resolveOutputPath, withExtension, writeScanFile, writeTextFile, type OutputDirectoryContext, } from './output.js';
|
|
12
12
|
export { diffCaptures, type DiffOptions, type DiffResult, type TextDiffResult, type VisualDiffResult, } from './diff/index.js';
|
|
13
|
+
export { verifyCapture, type VerifyResult } from './verify.js';
|
|
13
14
|
export { MAX_BATCH_URLS, NAME_FIELDS, checkNameTemplate, fillNameTemplate, readUrlList, type NameField, } from './batch.js';
|
|
14
15
|
export { connectDaemon, stopDaemon, DAEMON_START_TIMEOUT_MS, type ConnectOptions, type DaemonClient, } from './daemon/client.js';
|
|
15
16
|
export { daemonLogPath, daemonStatePath, readDaemonState, type DaemonState, } from './daemon/state.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,MAAM,EACN,IAAI,EACJ,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,MAAM,EACN,IAAI,EACJ,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,KAAK,sBAAsB,GAC5B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
export { listBrowsers, listTabs, pair, scan, scanMany, checkBatch, checkOutput, MARKDOWN_MODES, status, stop, waitForBrowser, } from './api.js';
|
|
9
9
|
export { configDir, configPath, configFileIsOwnerOnly, ensureConfig, readConfig, DEFAULT_PORT, } from './config.js';
|
|
10
10
|
export { exitCodeFor, isPageScannerError, toPageScannerError, PageScannerError, ERROR_CODES, } from './errors.js';
|
|
11
|
-
export { outputNamesAFile, resolveOutputPath, withExtension, writeScanFile, writeTextFile, } from './output.js';
|
|
11
|
+
export { defaultOutputDirectory, expandHome, outputNamesAFile, resolveOutputPath, withExtension, writeScanFile, writeTextFile, } from './output.js';
|
|
12
12
|
export { diffCaptures, } from './diff/index.js';
|
|
13
|
+
export { verifyCapture } from './verify.js';
|
|
13
14
|
export { MAX_BATCH_URLS, NAME_FIELDS, checkNameTemplate, fillNameTemplate, readUrlList, } from './batch.js';
|
|
14
15
|
export { connectDaemon, stopDaemon, DAEMON_START_TIMEOUT_MS, } from './daemon/client.js';
|
|
15
16
|
export { daemonLogPath, daemonStatePath, readDaemonState, } from './daemon/state.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,MAAM,EACN,IAAI,EACJ,cAAc,GAYf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GAEZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,MAAM,EACN,IAAI,EACJ,cAAc,GAYf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GAEZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,GAEd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,GAKb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC;AAE/D,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,UAAU,EACV,uBAAuB,GAGxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,GAYhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/output.d.ts
CHANGED
|
@@ -11,6 +11,30 @@ export declare function resolveOutputPath(outputPath: string | undefined, sugges
|
|
|
11
11
|
* there. A batch (#59) writes several files, so it needs the directory.
|
|
12
12
|
*/
|
|
13
13
|
export declare function outputNamesAFile(outputPath: string, cwd?: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* A leading `~` as the home directory: `~` alone, `~/…`, and `~\…` off a
|
|
16
|
+
* Windows agent. A shell does this for the command line, and nothing does it
|
|
17
|
+
* for a path an agent passes to a tool, so `~/Downloads` used to resolve to
|
|
18
|
+
* `/~/Downloads` under Claude Desktop and fail to be created. `~user` is left
|
|
19
|
+
* alone: there is no portable way to look another account up.
|
|
20
|
+
*/
|
|
21
|
+
export declare function expandHome(path: string, home?: string): string;
|
|
22
|
+
export interface OutputDirectoryContext {
|
|
23
|
+
cwd?: string;
|
|
24
|
+
home?: string;
|
|
25
|
+
/** In an app's Electron utility process, whose working directory is the app's. */
|
|
26
|
+
hosted?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* What a missing or relative output path is taken from, for a caller with no
|
|
30
|
+
* person standing in a directory: the MCP server. Its working directory is
|
|
31
|
+
* whatever its host started it in. Under Claude Code that is the project and
|
|
32
|
+
* worth keeping; under Claude Desktop on macOS it is `/`, which nothing may
|
|
33
|
+
* write, so a scan with no `outputPath` failed, and inside Desktop's built-in
|
|
34
|
+
* Node.js it is the app's, never a place the user chose. Those take
|
|
35
|
+
* `~/Downloads`, or the home directory when there is none.
|
|
36
|
+
*/
|
|
37
|
+
export declare function defaultOutputDirectory(context?: OutputDirectoryContext): string;
|
|
14
38
|
/** The same path with another extension: `page.pdf` to `page.md`. */
|
|
15
39
|
export declare function withExtension(path: string, extension: string): string;
|
|
16
40
|
/** Text as UTF-8, its directories made on the way, as `writeScanFile` does for bytes. */
|
package/dist/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAkCA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAsB,GAC1B,MAAM,CAKR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAOzF;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,MAAM,CAIzE;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,sBAA2B,GAAG,MAAM,CAOnF;AA8BD,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGhE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAGvE"}
|
package/dist/output.js
CHANGED
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
* was started from some other terminal at some other time and its cwd has
|
|
7
7
|
* nothing to do with where the person typing the command is standing.
|
|
8
8
|
*/
|
|
9
|
-
import { mkdirSync, statSync, writeFileSync } from 'node:fs';
|
|
10
|
-
import {
|
|
9
|
+
import { accessSync, constants, mkdirSync, statSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { basename, dirname, join, parse, resolve } from 'node:path';
|
|
12
|
+
import { canSpawnSelf } from './daemon/self.js';
|
|
11
13
|
/**
|
|
12
14
|
* A trailing separator is how the user says "this is a directory", and the only
|
|
13
15
|
* way to say it about a directory that does not exist yet.
|
|
@@ -49,6 +51,47 @@ export function outputNamesAFile(outputPath, cwd = process.cwd()) {
|
|
|
49
51
|
FILE_EXTENSION.test(target) &&
|
|
50
52
|
!isExistingDirectory(target));
|
|
51
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* A leading `~` as the home directory: `~` alone, `~/…`, and `~\…` off a
|
|
56
|
+
* Windows agent. A shell does this for the command line, and nothing does it
|
|
57
|
+
* for a path an agent passes to a tool, so `~/Downloads` used to resolve to
|
|
58
|
+
* `/~/Downloads` under Claude Desktop and fail to be created. `~user` is left
|
|
59
|
+
* alone: there is no portable way to look another account up.
|
|
60
|
+
*/
|
|
61
|
+
export function expandHome(path, home = homedir()) {
|
|
62
|
+
if (path === '~')
|
|
63
|
+
return home;
|
|
64
|
+
if (/^~[\\/]/.test(path))
|
|
65
|
+
return join(home, path.slice(2));
|
|
66
|
+
return path;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* What a missing or relative output path is taken from, for a caller with no
|
|
70
|
+
* person standing in a directory: the MCP server. Its working directory is
|
|
71
|
+
* whatever its host started it in. Under Claude Code that is the project and
|
|
72
|
+
* worth keeping; under Claude Desktop on macOS it is `/`, which nothing may
|
|
73
|
+
* write, so a scan with no `outputPath` failed, and inside Desktop's built-in
|
|
74
|
+
* Node.js it is the app's, never a place the user chose. Those take
|
|
75
|
+
* `~/Downloads`, or the home directory when there is none.
|
|
76
|
+
*/
|
|
77
|
+
export function defaultOutputDirectory(context = {}) {
|
|
78
|
+
const cwd = context.cwd ?? process.cwd();
|
|
79
|
+
const home = context.home ?? homedir();
|
|
80
|
+
const hosted = context.hosted ?? !canSpawnSelf();
|
|
81
|
+
if (!hosted && cwd !== parse(cwd).root && isWritable(cwd))
|
|
82
|
+
return cwd;
|
|
83
|
+
const downloads = join(home, 'Downloads');
|
|
84
|
+
return isExistingDirectory(downloads) ? downloads : home;
|
|
85
|
+
}
|
|
86
|
+
function isWritable(directory) {
|
|
87
|
+
try {
|
|
88
|
+
accessSync(directory, constants.W_OK);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
52
95
|
/**
|
|
53
96
|
* An existing directory wins over the extension rule, so `--out ./v1.2` writes
|
|
54
97
|
* into the directory the user already made rather than over it.
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/dist/verify.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const RECORD_SUFFIX = ".integrity.json";
|
|
2
|
+
export interface VerifyResult {
|
|
3
|
+
/** True when the file matches and, if signed, the signature holds. */
|
|
4
|
+
verified: boolean;
|
|
5
|
+
file: {
|
|
6
|
+
path: string;
|
|
7
|
+
matches: boolean;
|
|
8
|
+
sha256: string;
|
|
9
|
+
bytes: number;
|
|
10
|
+
};
|
|
11
|
+
record: {
|
|
12
|
+
path: string;
|
|
13
|
+
expectedSha256: string;
|
|
14
|
+
expectedBytes: number;
|
|
15
|
+
url: string | null;
|
|
16
|
+
captured: string | null;
|
|
17
|
+
};
|
|
18
|
+
/** Null when the record is not signed. */
|
|
19
|
+
signature: {
|
|
20
|
+
valid: boolean;
|
|
21
|
+
keyThumbprint: string;
|
|
22
|
+
} | null;
|
|
23
|
+
}
|
|
24
|
+
/** The extension's `canonicalJson`: the bytes its signature covers. */
|
|
25
|
+
export declare function canonicalJson(value: unknown): string;
|
|
26
|
+
/** Checks `filePath` against its record, `<file>.integrity.json` unless one is named. */
|
|
27
|
+
export declare function verifyCapture(filePath: string, options?: {
|
|
28
|
+
record?: string;
|
|
29
|
+
cwd?: string;
|
|
30
|
+
}): Promise<VerifyResult>;
|
|
31
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAgB/C,MAAM,WAAW,YAAY;IAC3B,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxE,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KACzB,CAAC;IACF,0CAA0C;IAC1C,SAAS,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7D;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CASpD;AAiED,yFAAyF;AACzF,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,YAAY,CAAC,CAoCvB"}
|