patchwork-os 1.2.0-beta.3.canary.918 → 1.2.0-beta.3.canary.919
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.
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
import fs from "node:fs";
|
|
33
33
|
import os from "node:os";
|
|
34
34
|
import path from "node:path";
|
|
35
|
+
import { secretStorePaths } from "../governance/secretPathDenies.js";
|
|
35
36
|
import { patchworkHome } from "../patchworkHome.js";
|
|
36
37
|
// TTL cache for jail-root realpaths. Each resolveRecipePath call resolves
|
|
37
38
|
// 3-4 roots; on Windows each hits GetFinalPathNameByHandle + Defender scan.
|
|
@@ -232,6 +233,15 @@ export function resolveRecipePath(rawPath, opts = {}) {
|
|
|
232
233
|
if (!isInsideAnyRoot(real, realRoots)) {
|
|
233
234
|
throw jailError(`recipe path "${rawPath}" escapes jail via symlink (real target "${real}")`);
|
|
234
235
|
}
|
|
236
|
+
// The jail roots include the Patchwork home, and the runtime keeps its own
|
|
237
|
+
// secrets there (connector client secrets, encrypted tokens and their key,
|
|
238
|
+
// member credentials, the session secret). Secrets are never legitimate
|
|
239
|
+
// recipe input or output, so refuse them for reads AND writes — checked on
|
|
240
|
+
// both the lexical and the real path, so a link inside the workspace cannot
|
|
241
|
+
// reach one. Same list as the agent-step denies, so the two cannot drift.
|
|
242
|
+
if (isSecretStorePath(resolved) || isSecretStorePath(real)) {
|
|
243
|
+
throw jailError(`recipe path "${rawPath}" is one of the runtime's secret stores; recipes may not read or write it`);
|
|
244
|
+
}
|
|
235
245
|
// Hardlink guard for write paths — same rationale as `resolveFilePath`'s
|
|
236
246
|
// `opts.write` branch: a hardlink from inside the jail to an outside
|
|
237
247
|
// file shares an inode and passes the realpath check, but writing
|
|
@@ -256,6 +266,28 @@ export function resolveRecipePath(rawPath, opts = {}) {
|
|
|
256
266
|
}
|
|
257
267
|
return resolved;
|
|
258
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Is `p` one of the runtime's secret stores (see governance/secretPathDenies)?
|
|
271
|
+
* Entries ending in `/**` cover the directory and everything under it.
|
|
272
|
+
* Compared case-insensitively where the filesystem usually is (macOS,
|
|
273
|
+
* Windows), so `.Secrets.json` cannot slip past on those hosts.
|
|
274
|
+
*/
|
|
275
|
+
function isSecretStorePath(p) {
|
|
276
|
+
const fold = process.platform === "darwin" || process.platform === "win32";
|
|
277
|
+
const norm = (x) => fold ? path.resolve(x).toLowerCase() : path.resolve(x);
|
|
278
|
+
const target = norm(p);
|
|
279
|
+
for (const entry of secretStorePaths()) {
|
|
280
|
+
if (entry.endsWith(`${path.sep}**`) || entry.endsWith("/**")) {
|
|
281
|
+
const dir = norm(entry.slice(0, -3));
|
|
282
|
+
if (target === dir || target.startsWith(dir + path.sep))
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
285
|
+
else if (target === norm(entry)) {
|
|
286
|
+
return true;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
return false;
|
|
290
|
+
}
|
|
259
291
|
/**
|
|
260
292
|
* Side-effect-free predicate variant — returns `null` on jail escape rather
|
|
261
293
|
* than throwing. Used by the CLI `recipe run` warn path (F-10), which wants
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveRecipePath.js","sourceRoot":"","sources":["../../src/recipes/resolveRecipePath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,0EAA0E;AAC1E,4EAA4E;AAC5E,0DAA0D;AAC1D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAG/B,CAAC;AACJ,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,SAAS,sBAAsB,CAAC,CAAS;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC3D,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAG,qBAAqB,EAAE,CAAC,CAAC;IAC9E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAID,+FAA+F;AAC/F,SAAS,SAAS,CAAC,OAAe;IAChC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAwB,CAAC;IACtD,GAAG,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACrC,OAAO,GAAG,CAAC;AACb,CAAC;AAqBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,UAAU,CAAC,CAAS,EAAE,OAAe,EAAE,aAAqB;IACnE,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IAC9B,IAAI,CAAC,KAAK,cAAc;QAAE,OAAO,aAAa,CAAC;IAC/C,IAAI,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,gBAAgB,CAAC,IAA8B;IACtD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;AAChF,CAAC;AAED,4DAA4D;AAC5D,SAAS,SAAS,CAAC,IAA8B;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,GAAG,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAClD,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,6EAA6E;IAC7E,yEAAyE;IACzE,uEAAuE;IACvE,iCAAiC;IACjC,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;KACxB,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,sEAAsE;QACtE,yCAAyC;QACzC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IACD,uEAAuE;IACvE,iDAAiD;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,sEAAsE;AACtE,SAAS,eAAe,CAAC,MAAc,EAAE,KAAe;IACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAC,CAAS;IACnC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,qEAAqE;QACrE,mEAAmE;QACnE,qBAAqB;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,OAAiC,EAAE;IAEnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE9B,uEAAuE;IACvE,8CAA8C;IAC9C,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,CACb,gBAAgB,OAAO,2CAA2C,CACnE,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,iEAAiE;IACjE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,SAAS,CACb,gBAAgB,OAAO,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC1G,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,kEAAkE;YAClE,iEAAiE;YACjE,8DAA8D;YAC9D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,CACb,gBAAgB,OAAO,4CAA4C,IAAI,IAAI,CAC5E,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,qEAAqE;IACrE,kEAAkE;IAClE,4CAA4C;IAC5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,SAAS,CACb,gBAAgB,OAAO,0BAA0B,GAAG,CAAC,KAAK,yCAAyC,CACpG,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,iDAAiD;YACjD,IACE,GAAG,YAAY,KAAK;gBACnB,GAAyB,CAAC,IAAI,KAAK,yBAAyB,EAC7D,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,qEAAqE;YACrE,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,OAAiC,EAAE;IAEnC,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"resolveRecipePath.js","sourceRoot":"","sources":["../../src/recipes/resolveRecipePath.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { type ExtensionClient } from "../extensionClient.js";
|
|
2
|
+
/**
|
|
3
|
+
* Upper bound on one native clipboard command. Without it a child that never
|
|
4
|
+
* exits (a cold or wedged PowerShell on a loaded Windows host, a clipboard
|
|
5
|
+
* held open by another process) left the tool call pending forever, so the
|
|
6
|
+
* MCP client got no reply at all. Linux may try two tools, so the worst case
|
|
7
|
+
* is twice this.
|
|
8
|
+
*/
|
|
9
|
+
export declare const NATIVE_CLIPBOARD_TIMEOUT_MS = 3000;
|
|
2
10
|
export declare function createReadClipboardTool(extensionClient: ExtensionClient): {
|
|
3
11
|
schema: {
|
|
4
12
|
name: string;
|
package/dist/tools/clipboard.js
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
-
import { promisify } from "node:util";
|
|
3
2
|
import { ExtensionTimeoutError, } from "../extensionClient.js";
|
|
4
3
|
import { error, successStructured } from "./utils.js";
|
|
5
|
-
const execFileAsync = promisify(execFile);
|
|
6
4
|
const MAX_CLIPBOARD_BYTES = 100 * 1024; // 100 KB
|
|
7
5
|
const MAX_WRITE_BYTES = 1024 * 1024; // 1 MB (documented limit for writeClipboard)
|
|
6
|
+
/**
|
|
7
|
+
* Upper bound on one native clipboard command. Without it a child that never
|
|
8
|
+
* exits (a cold or wedged PowerShell on a loaded Windows host, a clipboard
|
|
9
|
+
* held open by another process) left the tool call pending forever, so the
|
|
10
|
+
* MCP client got no reply at all. Linux may try two tools, so the worst case
|
|
11
|
+
* is twice this.
|
|
12
|
+
*/
|
|
13
|
+
export const NATIVE_CLIPBOARD_TIMEOUT_MS = 3_000;
|
|
8
14
|
/**
|
|
9
15
|
* Truncate a string so that its UTF-8 byte length does not exceed `maxBytes`.
|
|
10
16
|
* String.slice() counts UTF-16 code units, not bytes, so for content with
|
|
@@ -23,17 +29,41 @@ function truncateToBytes(str, maxBytes) {
|
|
|
23
29
|
}
|
|
24
30
|
return str.slice(0, len);
|
|
25
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Run a native clipboard command, optionally piping `input` to stdin.
|
|
34
|
+
* Rejects (and kills the child) after NATIVE_CLIPBOARD_TIMEOUT_MS. The bound
|
|
35
|
+
* is our own timer rather than execFile's `timeout` option, because that
|
|
36
|
+
* option only settles once the killed child actually exits.
|
|
37
|
+
*/
|
|
38
|
+
function runNative(cmd, args, input) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
let timer;
|
|
41
|
+
const proc = execFile(cmd, args, { windowsHide: true }, (err, stdout) => {
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
if (err)
|
|
44
|
+
reject(err);
|
|
45
|
+
else
|
|
46
|
+
resolve(String(stdout));
|
|
47
|
+
});
|
|
48
|
+
timer = setTimeout(() => {
|
|
49
|
+
proc.kill();
|
|
50
|
+
reject(new Error(`${cmd} timed out`));
|
|
51
|
+
}, NATIVE_CLIPBOARD_TIMEOUT_MS);
|
|
52
|
+
if (input !== undefined)
|
|
53
|
+
proc.stdin?.end(input);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
26
56
|
/** Read clipboard text using platform-native CLI tools. */
|
|
27
57
|
async function nativeReadClipboard() {
|
|
28
58
|
try {
|
|
29
59
|
if (process.platform === "darwin") {
|
|
30
|
-
const
|
|
60
|
+
const stdout = await runNative("pbpaste", []);
|
|
31
61
|
return truncateToBytes(stdout, MAX_CLIPBOARD_BYTES);
|
|
32
62
|
}
|
|
33
63
|
if (process.platform === "linux") {
|
|
34
64
|
// xclip preferred; fall back to xsel
|
|
35
65
|
try {
|
|
36
|
-
const
|
|
66
|
+
const stdout = await runNative("xclip", [
|
|
37
67
|
"-selection",
|
|
38
68
|
"clipboard",
|
|
39
69
|
"-o",
|
|
@@ -41,15 +71,12 @@ async function nativeReadClipboard() {
|
|
|
41
71
|
return truncateToBytes(stdout, MAX_CLIPBOARD_BYTES);
|
|
42
72
|
}
|
|
43
73
|
catch {
|
|
44
|
-
const
|
|
45
|
-
"--clipboard",
|
|
46
|
-
"--output",
|
|
47
|
-
]);
|
|
74
|
+
const stdout = await runNative("xsel", ["--clipboard", "--output"]);
|
|
48
75
|
return truncateToBytes(stdout, MAX_CLIPBOARD_BYTES);
|
|
49
76
|
}
|
|
50
77
|
}
|
|
51
78
|
if (process.platform === "win32") {
|
|
52
|
-
const
|
|
79
|
+
const stdout = await runNative("powershell", [
|
|
53
80
|
"-NoProfile",
|
|
54
81
|
"-Command",
|
|
55
82
|
"Get-Clipboard",
|
|
@@ -58,7 +85,7 @@ async function nativeReadClipboard() {
|
|
|
58
85
|
}
|
|
59
86
|
}
|
|
60
87
|
catch {
|
|
61
|
-
// tool not available or
|
|
88
|
+
// tool not available, clipboard empty, or timed out
|
|
62
89
|
}
|
|
63
90
|
return null;
|
|
64
91
|
}
|
|
@@ -66,38 +93,26 @@ async function nativeReadClipboard() {
|
|
|
66
93
|
async function nativeWriteClipboard(text) {
|
|
67
94
|
try {
|
|
68
95
|
if (process.platform === "darwin") {
|
|
69
|
-
await
|
|
70
|
-
const proc = execFile("pbcopy", (err) => err ? reject(err) : resolve());
|
|
71
|
-
proc.stdin?.end(text);
|
|
72
|
-
});
|
|
96
|
+
await runNative("pbcopy", [], text);
|
|
73
97
|
return true;
|
|
74
98
|
}
|
|
75
99
|
if (process.platform === "linux") {
|
|
76
|
-
const writeVia = async (cmd, args) => {
|
|
77
|
-
await new Promise((resolve, reject) => {
|
|
78
|
-
const proc = execFile(cmd, args, (err) => err ? reject(err) : resolve());
|
|
79
|
-
proc.stdin?.end(text);
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
100
|
try {
|
|
83
|
-
await
|
|
101
|
+
await runNative("xclip", ["-selection", "clipboard"], text);
|
|
84
102
|
}
|
|
85
103
|
catch {
|
|
86
|
-
await
|
|
104
|
+
await runNative("xsel", ["--clipboard", "--input"], text);
|
|
87
105
|
}
|
|
88
106
|
return true;
|
|
89
107
|
}
|
|
90
108
|
if (process.platform === "win32") {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const proc = execFile("clip", (err) => (err ? reject(err) : resolve()));
|
|
94
|
-
proc.stdin?.end(text);
|
|
95
|
-
});
|
|
109
|
+
// Use clip.exe — ships with all Windows versions
|
|
110
|
+
await runNative("clip", [], text);
|
|
96
111
|
return true;
|
|
97
112
|
}
|
|
98
113
|
}
|
|
99
114
|
catch {
|
|
100
|
-
// tool not available
|
|
115
|
+
// tool not available or timed out
|
|
101
116
|
}
|
|
102
117
|
return false;
|
|
103
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAEL,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,SAAS;AACjD,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,6CAA6C;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,GAAW,EAAE,QAAgB;IACpD,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC3D,qEAAqE;IACrE,gFAAgF;IAChF,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,OAAO,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;QAC1E,GAAG,EAAE,CAAC;IACR,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAChB,GAAW,EACX,IAAc,EACd,KAAc;IAEd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAgD,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACtE,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;gBAChB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC;QACxC,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2DAA2D;AAC3D,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,eAAe,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,qCAAqC;YACrC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE;oBACtC,YAAY;oBACZ,WAAW;oBACX,IAAI;iBACL,CAAC,CAAC;gBACH,OAAO,eAAe,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;gBACpE,OAAO,eAAe,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE;gBAC3C,YAAY;gBACZ,UAAU;gBACV,eAAe;aAChB,CAAC,CAAC;YACH,OAAO,eAAe,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,KAAK,UAAU,oBAAoB,CAAC,IAAY;IAC9C,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,iDAAiD;YACjD,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,eAAgC;IACtE,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,sDAAsD;YACnE,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;YACnC,WAAW,EAAE;gBACX,OAAO,EAAE,yCAAyC;gBAClD,IAAI,EAAE,QAAiB;gBACvB,oBAAoB,EAAE,KAAc;aACrC;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;QACD,KAAK,CAAC,OAAO;YACX,IAAI,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,CAAC;oBACrD,IAAI,MAAM,KAAK,IAAI;wBAAE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,CAAC,GAAG,YAAY,qBAAqB,CAAC;wBAAE,MAAM,GAAG,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,uDAAuD;YACvD,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAC3C,IAAI,MAAM,KAAK,IAAI;gBACjB,OAAO,KAAK,CACV,4FAA4F,CAC7F,CAAC;YACJ,OAAO,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,eAAgC;IACvE,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,2CAA2C;YACxD,WAAW,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;YACrC,WAAW,EAAE;gBACX,OAAO,EAAE,yCAAyC;gBAClD,IAAI,EAAE,QAAiB;gBACvB,QAAQ,EAAE,CAAC,MAAM,CAAC;gBAClB,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAiB;wBACvB,WAAW,EAAE,4BAA4B;qBAC1C;iBACF;gBACD,oBAAoB,EAAE,KAAc;aACrC;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;iBAC7B;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;SACF;QACD,KAAK,CAAC,OAAO,CAAC,IAA6B;YACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,eAAe;gBACnD,OAAO,KAAK,CACV,gDAAgD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CACzF,CAAC;YACJ,IAAI,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC1D,uDAAuD;oBACvD,8DAA8D;oBAC9D,oCAAoC;oBACpC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAClD,MAAM,CAAC,GAAG,MAAiC,CAAC;wBAC5C,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;4BACvB,OAAO,iBAAiB,CAAC;gCACvB,OAAO,EAAE,IAAI;gCACb,GAAG,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI;oCACtC,UAAU,EAAE,CAAC,CAAC,UAAU;iCACzB,CAAC;6BACH,CAAC,CAAC;wBACL,CAAC;wBACD,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;4BACxB,OAAO,KAAK,CACV,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;gCACzB,CAAC,CAAC,CAAC,CAAC,KAAK;gCACT,CAAC,CAAC,wBAAwB,CAC7B,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,CAAC,GAAG,YAAY,qBAAqB,CAAC;wBAAE,MAAM,GAAG,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,oDAAoD;YACpD,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE;gBACL,OAAO,KAAK,CACV,4FAA4F,CAC7F,CAAC;YACJ,OAAO,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "patchwork-os",
|
|
3
|
-
"version": "1.2.0-beta.3.canary.
|
|
3
|
+
"version": "1.2.0-beta.3.canary.919",
|
|
4
4
|
"description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|