@pablopunk/tau 0.0.0-stage → 0.1.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/dist/auth-storage-Dk3CUY3q.js +1814 -0
- package/dist/bin.js +23 -0
- package/dist/cli-entry-DcDpQ30L.js +13 -0
- package/dist/client-C91-b2CL.js +1 -0
- package/dist/client-y2WkNuZj.js +7977 -0
- package/dist/dist-BFP19NOO.js +432 -0
- package/dist/dist-Bh1bQHZA.js +38890 -0
- package/dist/dist-Cq73_r65.js +3 -0
- package/dist/esm-CMGh_WhC.js +9446 -0
- package/dist/execute-BeGXhU1O.js +1757 -0
- package/dist/fake-claude-connectors-DSP9UC8d.js +1 -0
- package/dist/fake-claude-connectors-sDLeP10T.js +107 -0
- package/dist/fake-claude-sdk-CvqW_1iQ.js +571 -0
- package/dist/fake-claude-thread-script-2iHHwUZM.js +48 -0
- package/dist/last-exit-write-ksHeHGrC.js +9 -0
- package/dist/latest-version-di9hD7cY.js +106 -0
- package/dist/lib-DIX7q_HJ.js +1460 -0
- package/dist/machines-behind-BjGgmSs_.js +257 -0
- package/dist/main-D-Tg9b5Y.js +1610 -0
- package/dist/manager-B_WHbb1U.js +589 -0
- package/dist/names-cTrEXB6w.js +35 -0
- package/dist/node-BpwblPFP.js +56269 -0
- package/dist/pdfjs-nTcHjDPT.js +69856 -0
- package/dist/photon_rs-DBr7W_rK.js +4252 -0
- package/dist/promise.try-CAAOYvMP.js +1426 -0
- package/dist/readability-DsDNO63a.js +1670 -0
- package/dist/real-deps-f96UmLBz.js +89 -0
- package/dist/rolldown-runtime-1p2KPIdQ.js +44 -0
- package/dist/runtime-i-oEtgAl.js +2721 -0
- package/dist/sdk-missing-CHbVbY1G.js +10 -0
- package/dist/sdk-port-BGw9ORUR.js +215 -0
- package/dist/serve-Cmy0rUWr.js +2932 -0
- package/dist/serve-Dmzn5V0l.js +1 -0
- package/dist/service-command-C74K0saj.js +34 -0
- package/dist/service-command-DqcstJ8e.js +1 -0
- package/dist/shell-CQa4e7rx.js +643 -0
- package/dist/skills/builtin/tau/SKILL.md +51 -0
- package/dist/src-DO9LUlhi.js +44088 -0
- package/dist/streamableHttp-BBaRYV9h.js +1 -0
- package/dist/streamableHttp-DPAoMlJd.js +1931 -0
- package/dist/tool-DBZK2lci.js +14335 -0
- package/dist/tool-server-BjP37EJg.js +40 -0
- package/dist/turndown.cjs-Bo1xLg2S.js +15620 -0
- package/dist/turndown.cjs-jpUF50AR.js +3 -0
- package/dist/types-C4M3CRp2.js +7592 -0
- package/dist/undici-8cI97lnP.js +27110 -0
- package/dist/wait-for-lock-B1Qx8GWg.js +1 -0
- package/dist/wait-for-lock-CrSl2mi1.js +25 -0
- package/dist/watchdog.js +47 -0
- package/dist/web/dist/assets/addon-fit-DIOBYJe3.js +1 -0
- package/dist/web/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/web/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/web/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/web/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/web/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/web/dist/assets/index-BktLKZHR.js +108 -0
- package/dist/web/dist/assets/index-D_Aa3Oou.css +2 -0
- package/dist/web/dist/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/dist/web/dist/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/dist/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dist/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dist/web/dist/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/dist/web/dist/assets/wght-DMLdVLkb.css +1 -0
- package/dist/web/dist/assets/xterm-BrP-ENHg.css +1 -0
- package/dist/web/dist/assets/xterm-CerOhKYV.js +16 -0
- package/dist/web/dist/favicon.svg +14 -0
- package/dist/web/dist/index.html +25 -0
- package/package.json +53 -4
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as serveInForeground } from "./serve-Cmy0rUWr.js";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { i as realContext, n as listServices, r as uninstallHome, t as createServiceManager } from "./manager-B_WHbb1U.js";
|
|
2
|
+
import { t as cliEntry } from "./cli-entry-DcDpQ30L.js";
|
|
3
|
+
import { parseArgs } from "node:util";
|
|
4
|
+
//#region src/service/service-command.ts
|
|
5
|
+
const USAGE = "Usage: tau service install | uninstall [--home <path>] | list";
|
|
6
|
+
/** `tau service install | uninstall [--home <path>] | list`. `argv` starts after the word `service`. */
|
|
7
|
+
async function runServiceCommandWith(deps, argv) {
|
|
8
|
+
const { positionals, values } = parseArgs({
|
|
9
|
+
args: [...argv],
|
|
10
|
+
allowPositionals: true,
|
|
11
|
+
options: { home: { type: "string" } }
|
|
12
|
+
});
|
|
13
|
+
const home = values.home ?? deps.context.env.TAU_HOME ?? deps.context.defaultHome;
|
|
14
|
+
const [action] = positionals;
|
|
15
|
+
if (action === "install") {
|
|
16
|
+
const warnings = await createServiceManager(deps.context, cliEntry(), home).install();
|
|
17
|
+
for (const warning of warnings) deps.out(`warning: ${warning}`);
|
|
18
|
+
deps.out("tau service installed.");
|
|
19
|
+
} else if (action === "uninstall") {
|
|
20
|
+
await uninstallHome(deps.context, home);
|
|
21
|
+
deps.out("tau service removed.");
|
|
22
|
+
} else if (action === "list") {
|
|
23
|
+
const names = await listServices(deps.context);
|
|
24
|
+
deps.out(names.length === 0 ? "No tau services." : names.join("\n"));
|
|
25
|
+
} else throw new Error(USAGE);
|
|
26
|
+
}
|
|
27
|
+
async function runServiceCommand(argv) {
|
|
28
|
+
await runServiceCommandWith({
|
|
29
|
+
context: realContext(),
|
|
30
|
+
out: (message) => console.log(message)
|
|
31
|
+
}, argv);
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { runServiceCommandWith as n, runServiceCommand as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { t as runServiceCommand } from "./service-command-C74K0saj.js";
|
|
@@ -0,0 +1,643 @@
|
|
|
1
|
+
import { i as __require, t as __commonJSMin } from "./rolldown-runtime-1p2KPIdQ.js";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { existsSync as existsSync$1, readFileSync as readFileSync$1 } from "fs";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { homedir } from "os";
|
|
6
|
+
import { basename as basename$1, dirname as dirname$1, join as join$1, resolve as resolve$1 } from "path";
|
|
7
|
+
import { homedir as homedir$1 } from "node:os";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { createRequire } from "module";
|
|
10
|
+
import { fileURLToPath as fileURLToPath$1 } from "url";
|
|
11
|
+
import { spawnSync } from "child_process";
|
|
12
|
+
import "node:child_process";
|
|
13
|
+
//#region ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js
|
|
14
|
+
var require_windows = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
15
|
+
module.exports = isexe;
|
|
16
|
+
isexe.sync = sync;
|
|
17
|
+
var fs = __require("fs");
|
|
18
|
+
function checkPathExt(path, options) {
|
|
19
|
+
var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
|
|
20
|
+
if (!pathext) return true;
|
|
21
|
+
pathext = pathext.split(";");
|
|
22
|
+
if (pathext.indexOf("") !== -1) return true;
|
|
23
|
+
for (var i = 0; i < pathext.length; i++) {
|
|
24
|
+
var p = pathext[i].toLowerCase();
|
|
25
|
+
if (p && path.substr(-p.length).toLowerCase() === p) return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
function checkStat(stat, path, options) {
|
|
30
|
+
if (!stat.isSymbolicLink() && !stat.isFile()) return false;
|
|
31
|
+
return checkPathExt(path, options);
|
|
32
|
+
}
|
|
33
|
+
function isexe(path, options, cb) {
|
|
34
|
+
fs.stat(path, function(er, stat) {
|
|
35
|
+
cb(er, er ? false : checkStat(stat, path, options));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function sync(path, options) {
|
|
39
|
+
return checkStat(fs.statSync(path), path, options);
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js
|
|
44
|
+
var require_mode = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
45
|
+
module.exports = isexe;
|
|
46
|
+
isexe.sync = sync;
|
|
47
|
+
var fs = __require("fs");
|
|
48
|
+
function isexe(path, options, cb) {
|
|
49
|
+
fs.stat(path, function(er, stat) {
|
|
50
|
+
cb(er, er ? false : checkStat(stat, options));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function sync(path, options) {
|
|
54
|
+
return checkStat(fs.statSync(path), options);
|
|
55
|
+
}
|
|
56
|
+
function checkStat(stat, options) {
|
|
57
|
+
return stat.isFile() && checkMode(stat, options);
|
|
58
|
+
}
|
|
59
|
+
function checkMode(stat, options) {
|
|
60
|
+
var mod = stat.mode;
|
|
61
|
+
var uid = stat.uid;
|
|
62
|
+
var gid = stat.gid;
|
|
63
|
+
var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid();
|
|
64
|
+
var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid();
|
|
65
|
+
var u = parseInt("100", 8);
|
|
66
|
+
var g = parseInt("010", 8);
|
|
67
|
+
var o = parseInt("001", 8);
|
|
68
|
+
var ug = u | g;
|
|
69
|
+
return mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0;
|
|
70
|
+
}
|
|
71
|
+
}));
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region ../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js
|
|
74
|
+
var require_isexe = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
75
|
+
__require("fs");
|
|
76
|
+
var core;
|
|
77
|
+
if (process.platform === "win32" || global.TESTING_WINDOWS) core = require_windows();
|
|
78
|
+
else core = require_mode();
|
|
79
|
+
module.exports = isexe;
|
|
80
|
+
isexe.sync = sync;
|
|
81
|
+
function isexe(path, options, cb) {
|
|
82
|
+
if (typeof options === "function") {
|
|
83
|
+
cb = options;
|
|
84
|
+
options = {};
|
|
85
|
+
}
|
|
86
|
+
if (!cb) {
|
|
87
|
+
if (typeof Promise !== "function") throw new TypeError("callback not provided");
|
|
88
|
+
return new Promise(function(resolve, reject) {
|
|
89
|
+
isexe(path, options || {}, function(er, is) {
|
|
90
|
+
if (er) reject(er);
|
|
91
|
+
else resolve(is);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
core(path, options || {}, function(er, is) {
|
|
96
|
+
if (er) {
|
|
97
|
+
if (er.code === "EACCES" || options && options.ignoreErrors) {
|
|
98
|
+
er = null;
|
|
99
|
+
is = false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
cb(er, is);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function sync(path, options) {
|
|
106
|
+
try {
|
|
107
|
+
return core.sync(path, options || {});
|
|
108
|
+
} catch (er) {
|
|
109
|
+
if (options && options.ignoreErrors || er.code === "EACCES") return false;
|
|
110
|
+
else throw er;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}));
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region ../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js
|
|
116
|
+
var require_which = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
117
|
+
const isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
|
|
118
|
+
const path = __require("path");
|
|
119
|
+
const COLON = isWindows ? ";" : ":";
|
|
120
|
+
const isexe = require_isexe();
|
|
121
|
+
const getNotFoundError = (cmd) => Object.assign(/* @__PURE__ */ new Error(`not found: ${cmd}`), { code: "ENOENT" });
|
|
122
|
+
const getPathInfo = (cmd, opt) => {
|
|
123
|
+
const colon = opt.colon || COLON;
|
|
124
|
+
const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [""] : [...isWindows ? [process.cwd()] : [], ...(opt.path || process.env.PATH ||
|
|
125
|
+
/* istanbul ignore next: very unusual */ "").split(colon)];
|
|
126
|
+
const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : "";
|
|
127
|
+
const pathExt = isWindows ? pathExtExe.split(colon) : [""];
|
|
128
|
+
if (isWindows) {
|
|
129
|
+
if (cmd.indexOf(".") !== -1 && pathExt[0] !== "") pathExt.unshift("");
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
pathEnv,
|
|
133
|
+
pathExt,
|
|
134
|
+
pathExtExe
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
const which = (cmd, opt, cb) => {
|
|
138
|
+
if (typeof opt === "function") {
|
|
139
|
+
cb = opt;
|
|
140
|
+
opt = {};
|
|
141
|
+
}
|
|
142
|
+
if (!opt) opt = {};
|
|
143
|
+
const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
|
|
144
|
+
const found = [];
|
|
145
|
+
const step = (i) => new Promise((resolve, reject) => {
|
|
146
|
+
if (i === pathEnv.length) return opt.all && found.length ? resolve(found) : reject(getNotFoundError(cmd));
|
|
147
|
+
const ppRaw = pathEnv[i];
|
|
148
|
+
const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
|
|
149
|
+
const pCmd = path.join(pathPart, cmd);
|
|
150
|
+
const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
|
|
151
|
+
resolve(subStep(p, i, 0));
|
|
152
|
+
});
|
|
153
|
+
const subStep = (p, i, ii) => new Promise((resolve, reject) => {
|
|
154
|
+
if (ii === pathExt.length) return resolve(step(i + 1));
|
|
155
|
+
const ext = pathExt[ii];
|
|
156
|
+
isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {
|
|
157
|
+
if (!er && is) {
|
|
158
|
+
if (opt.all) found.push(p + ext);
|
|
159
|
+
else return resolve(p + ext);
|
|
160
|
+
}
|
|
161
|
+
return resolve(subStep(p, i, ii + 1));
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
return cb ? step(0).then((res) => cb(null, res), cb) : step(0);
|
|
165
|
+
};
|
|
166
|
+
const whichSync = (cmd, opt) => {
|
|
167
|
+
opt = opt || {};
|
|
168
|
+
const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt);
|
|
169
|
+
const found = [];
|
|
170
|
+
for (let i = 0; i < pathEnv.length; i++) {
|
|
171
|
+
const ppRaw = pathEnv[i];
|
|
172
|
+
const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
|
|
173
|
+
const pCmd = path.join(pathPart, cmd);
|
|
174
|
+
const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
|
|
175
|
+
for (let j = 0; j < pathExt.length; j++) {
|
|
176
|
+
const cur = p + pathExt[j];
|
|
177
|
+
try {
|
|
178
|
+
if (isexe.sync(cur, { pathExt: pathExtExe })) {
|
|
179
|
+
if (opt.all) found.push(cur);
|
|
180
|
+
else return cur;
|
|
181
|
+
}
|
|
182
|
+
} catch (ex) {}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (opt.all && found.length) return found;
|
|
186
|
+
if (opt.nothrow) return null;
|
|
187
|
+
throw getNotFoundError(cmd);
|
|
188
|
+
};
|
|
189
|
+
module.exports = which;
|
|
190
|
+
which.sync = whichSync;
|
|
191
|
+
}));
|
|
192
|
+
//#endregion
|
|
193
|
+
//#region ../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js
|
|
194
|
+
var require_path_key = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
195
|
+
const pathKey = (options = {}) => {
|
|
196
|
+
const environment = options.env || process.env;
|
|
197
|
+
if ((options.platform || process.platform) !== "win32") return "PATH";
|
|
198
|
+
return Object.keys(environment).reverse().find((key) => key.toUpperCase() === "PATH") || "Path";
|
|
199
|
+
};
|
|
200
|
+
module.exports = pathKey;
|
|
201
|
+
module.exports.default = pathKey;
|
|
202
|
+
}));
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js
|
|
205
|
+
var require_resolveCommand = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
206
|
+
const path = __require("path");
|
|
207
|
+
const which = require_which();
|
|
208
|
+
const getPathKey = require_path_key();
|
|
209
|
+
function resolveCommandAttempt(parsed, withoutPathExt) {
|
|
210
|
+
const env = parsed.options.env || process.env;
|
|
211
|
+
const cwd = process.cwd();
|
|
212
|
+
const hasCustomCwd = parsed.options.cwd != null;
|
|
213
|
+
const shouldSwitchCwd = hasCustomCwd && process.chdir !== void 0 && !process.chdir.disabled;
|
|
214
|
+
if (shouldSwitchCwd) try {
|
|
215
|
+
process.chdir(parsed.options.cwd);
|
|
216
|
+
} catch (err) {}
|
|
217
|
+
let resolved;
|
|
218
|
+
try {
|
|
219
|
+
resolved = which.sync(parsed.command, {
|
|
220
|
+
path: env[getPathKey({ env })],
|
|
221
|
+
pathExt: withoutPathExt ? path.delimiter : void 0
|
|
222
|
+
});
|
|
223
|
+
} catch (e) {} finally {
|
|
224
|
+
if (shouldSwitchCwd) process.chdir(cwd);
|
|
225
|
+
}
|
|
226
|
+
if (resolved) resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : "", resolved);
|
|
227
|
+
return resolved;
|
|
228
|
+
}
|
|
229
|
+
function resolveCommand(parsed) {
|
|
230
|
+
return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
|
|
231
|
+
}
|
|
232
|
+
module.exports = resolveCommand;
|
|
233
|
+
}));
|
|
234
|
+
//#endregion
|
|
235
|
+
//#region ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js
|
|
236
|
+
var require_escape = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
237
|
+
const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
|
|
238
|
+
function escapeCommand(arg) {
|
|
239
|
+
arg = arg.replace(metaCharsRegExp, "^$1");
|
|
240
|
+
return arg;
|
|
241
|
+
}
|
|
242
|
+
function escapeArgument(arg, doubleEscapeMetaChars) {
|
|
243
|
+
arg = `${arg}`;
|
|
244
|
+
arg = arg.replace(/(?=(\\+?)?)\1"/g, "$1$1\\\"");
|
|
245
|
+
arg = arg.replace(/(?=(\\+?)?)\1$/, "$1$1");
|
|
246
|
+
arg = `"${arg}"`;
|
|
247
|
+
arg = arg.replace(metaCharsRegExp, "^$1");
|
|
248
|
+
if (doubleEscapeMetaChars) arg = arg.replace(metaCharsRegExp, "^$1");
|
|
249
|
+
return arg;
|
|
250
|
+
}
|
|
251
|
+
module.exports.command = escapeCommand;
|
|
252
|
+
module.exports.argument = escapeArgument;
|
|
253
|
+
}));
|
|
254
|
+
//#endregion
|
|
255
|
+
//#region ../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js
|
|
256
|
+
var require_shebang_regex = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
257
|
+
module.exports = /^#!(.*)/;
|
|
258
|
+
}));
|
|
259
|
+
//#endregion
|
|
260
|
+
//#region ../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js
|
|
261
|
+
var require_shebang_command = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
262
|
+
const shebangRegex = require_shebang_regex();
|
|
263
|
+
module.exports = (string = "") => {
|
|
264
|
+
const match = string.match(shebangRegex);
|
|
265
|
+
if (!match) return null;
|
|
266
|
+
const [path, argument] = match[0].replace(/#! ?/, "").split(" ");
|
|
267
|
+
const binary = path.split("/").pop();
|
|
268
|
+
if (binary === "env") return argument;
|
|
269
|
+
return argument ? `${binary} ${argument}` : binary;
|
|
270
|
+
};
|
|
271
|
+
}));
|
|
272
|
+
//#endregion
|
|
273
|
+
//#region ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js
|
|
274
|
+
var require_readShebang = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
275
|
+
const fs = __require("fs");
|
|
276
|
+
const shebangCommand = require_shebang_command();
|
|
277
|
+
function readShebang(command) {
|
|
278
|
+
const size = 150;
|
|
279
|
+
const buffer = Buffer.alloc(size);
|
|
280
|
+
let fd;
|
|
281
|
+
try {
|
|
282
|
+
fd = fs.openSync(command, "r");
|
|
283
|
+
fs.readSync(fd, buffer, 0, size, 0);
|
|
284
|
+
fs.closeSync(fd);
|
|
285
|
+
} catch (e) {}
|
|
286
|
+
return shebangCommand(buffer.toString());
|
|
287
|
+
}
|
|
288
|
+
module.exports = readShebang;
|
|
289
|
+
}));
|
|
290
|
+
//#endregion
|
|
291
|
+
//#region ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js
|
|
292
|
+
var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
293
|
+
const path = __require("path");
|
|
294
|
+
const resolveCommand = require_resolveCommand();
|
|
295
|
+
const escape = require_escape();
|
|
296
|
+
const readShebang = require_readShebang();
|
|
297
|
+
const isWin = process.platform === "win32";
|
|
298
|
+
const isExecutableRegExp = /\.(?:com|exe)$/i;
|
|
299
|
+
const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
|
|
300
|
+
function detectShebang(parsed) {
|
|
301
|
+
parsed.file = resolveCommand(parsed);
|
|
302
|
+
const shebang = parsed.file && readShebang(parsed.file);
|
|
303
|
+
if (shebang) {
|
|
304
|
+
parsed.args.unshift(parsed.file);
|
|
305
|
+
parsed.command = shebang;
|
|
306
|
+
return resolveCommand(parsed);
|
|
307
|
+
}
|
|
308
|
+
return parsed.file;
|
|
309
|
+
}
|
|
310
|
+
function parseNonShell(parsed) {
|
|
311
|
+
if (!isWin) return parsed;
|
|
312
|
+
const commandFile = detectShebang(parsed);
|
|
313
|
+
const needsShell = !isExecutableRegExp.test(commandFile);
|
|
314
|
+
if (parsed.options.forceShell || needsShell) {
|
|
315
|
+
const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
|
|
316
|
+
parsed.command = path.normalize(parsed.command);
|
|
317
|
+
parsed.command = escape.command(parsed.command);
|
|
318
|
+
parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
|
|
319
|
+
parsed.args = [
|
|
320
|
+
"/d",
|
|
321
|
+
"/s",
|
|
322
|
+
"/c",
|
|
323
|
+
`"${[parsed.command].concat(parsed.args).join(" ")}"`
|
|
324
|
+
];
|
|
325
|
+
parsed.command = process.env.comspec || "cmd.exe";
|
|
326
|
+
parsed.options.windowsVerbatimArguments = true;
|
|
327
|
+
}
|
|
328
|
+
return parsed;
|
|
329
|
+
}
|
|
330
|
+
function parse(command, args, options) {
|
|
331
|
+
if (args && !Array.isArray(args)) {
|
|
332
|
+
options = args;
|
|
333
|
+
args = null;
|
|
334
|
+
}
|
|
335
|
+
args = args ? args.slice(0) : [];
|
|
336
|
+
options = Object.assign({}, options);
|
|
337
|
+
const parsed = {
|
|
338
|
+
command,
|
|
339
|
+
args,
|
|
340
|
+
options,
|
|
341
|
+
file: void 0,
|
|
342
|
+
original: {
|
|
343
|
+
command,
|
|
344
|
+
args
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
return options.shell ? parsed : parseNonShell(parsed);
|
|
348
|
+
}
|
|
349
|
+
module.exports = parse;
|
|
350
|
+
}));
|
|
351
|
+
//#endregion
|
|
352
|
+
//#region ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js
|
|
353
|
+
var require_enoent = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
354
|
+
const isWin = process.platform === "win32";
|
|
355
|
+
function notFoundError(original, syscall) {
|
|
356
|
+
return Object.assign(/* @__PURE__ */ new Error(`${syscall} ${original.command} ENOENT`), {
|
|
357
|
+
code: "ENOENT",
|
|
358
|
+
errno: "ENOENT",
|
|
359
|
+
syscall: `${syscall} ${original.command}`,
|
|
360
|
+
path: original.command,
|
|
361
|
+
spawnargs: original.args
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
function hookChildProcess(cp, parsed) {
|
|
365
|
+
if (!isWin) return;
|
|
366
|
+
const originalEmit = cp.emit;
|
|
367
|
+
cp.emit = function(name, arg1) {
|
|
368
|
+
if (name === "exit") {
|
|
369
|
+
const err = verifyENOENT(arg1, parsed);
|
|
370
|
+
if (err) return originalEmit.call(cp, "error", err);
|
|
371
|
+
}
|
|
372
|
+
return originalEmit.apply(cp, arguments);
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
function verifyENOENT(status, parsed) {
|
|
376
|
+
if (isWin && status === 1 && !parsed.file) return notFoundError(parsed.original, "spawn");
|
|
377
|
+
return null;
|
|
378
|
+
}
|
|
379
|
+
function verifyENOENTSync(status, parsed) {
|
|
380
|
+
if (isWin && status === 1 && !parsed.file) return notFoundError(parsed.original, "spawnSync");
|
|
381
|
+
return null;
|
|
382
|
+
}
|
|
383
|
+
module.exports = {
|
|
384
|
+
hookChildProcess,
|
|
385
|
+
verifyENOENT,
|
|
386
|
+
verifyENOENTSync,
|
|
387
|
+
notFoundError
|
|
388
|
+
};
|
|
389
|
+
}));
|
|
390
|
+
//#endregion
|
|
391
|
+
//#region ../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js
|
|
392
|
+
var require_cross_spawn = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
393
|
+
const cp = __require("child_process");
|
|
394
|
+
const parse = require_parse();
|
|
395
|
+
const enoent = require_enoent();
|
|
396
|
+
function spawn(command, args, options) {
|
|
397
|
+
const parsed = parse(command, args, options);
|
|
398
|
+
const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
|
|
399
|
+
enoent.hookChildProcess(spawned, parsed);
|
|
400
|
+
return spawned;
|
|
401
|
+
}
|
|
402
|
+
function spawnSync(command, args, options) {
|
|
403
|
+
const parsed = parse(command, args, options);
|
|
404
|
+
const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
|
|
405
|
+
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
|
|
406
|
+
return result;
|
|
407
|
+
}
|
|
408
|
+
module.exports = spawn;
|
|
409
|
+
module.exports.spawn = spawn;
|
|
410
|
+
module.exports.sync = spawnSync;
|
|
411
|
+
module.exports._parse = parse;
|
|
412
|
+
module.exports._enoent = enoent;
|
|
413
|
+
}));
|
|
414
|
+
require_cross_spawn();
|
|
415
|
+
//#endregion
|
|
416
|
+
//#region ../../node_modules/.pnpm/@earendil-works+pi-coding-agent@1.3.0_@aws-sdk+credential-provider-node@3.972.86_@model_188af9db56b10bdf99c9b8c64c2036e8/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js
|
|
417
|
+
const UNICODE_SPACES = /[\u00A0\u2000-\u200A\u202F\u205F\u3000]/g;
|
|
418
|
+
/** Convert Git Bash, MSYS, Cygwin, and WSL drive paths to a form native Windows APIs accept. */
|
|
419
|
+
function normalizeWindowsShellPath(filePath) {
|
|
420
|
+
if (!filePath.startsWith("/") || filePath.startsWith("//") || filePath.includes("\\")) return filePath;
|
|
421
|
+
const match = filePath.match(/^\/(?:mnt\/|cygdrive\/)?([a-z])(?:\/(.*))?$/i);
|
|
422
|
+
if (!match) return filePath;
|
|
423
|
+
const suffix = match[2]?.replaceAll("/", "\\");
|
|
424
|
+
return `${match[1].toUpperCase()}:\\${suffix ?? ""}`;
|
|
425
|
+
}
|
|
426
|
+
function normalizePath(input, options = {}) {
|
|
427
|
+
let normalized = options.trim ? input.trim() : input;
|
|
428
|
+
if (options.normalizeUnicodeSpaces) normalized = normalized.replace(UNICODE_SPACES, " ");
|
|
429
|
+
if (options.stripAtPrefix && normalized.startsWith("@")) normalized = normalized.slice(1);
|
|
430
|
+
if (process.platform === "win32") normalized = normalizeWindowsShellPath(normalized);
|
|
431
|
+
if (options.expandTilde ?? true) {
|
|
432
|
+
const home = options.homeDir ?? homedir$1();
|
|
433
|
+
if (normalized === "~") return home;
|
|
434
|
+
if (normalized.startsWith("~/") || process.platform === "win32" && normalized.startsWith("~\\")) return join(home, normalized.slice(2));
|
|
435
|
+
}
|
|
436
|
+
if (/^file:\/\//.test(normalized)) return fileURLToPath(normalized);
|
|
437
|
+
return normalized;
|
|
438
|
+
}
|
|
439
|
+
//#endregion
|
|
440
|
+
//#region ../../node_modules/.pnpm/@earendil-works+pi-coding-agent@1.3.0_@aws-sdk+credential-provider-node@3.972.86_@model_188af9db56b10bdf99c9b8c64c2036e8/node_modules/@earendil-works/pi-coding-agent/dist/utils/text.js
|
|
441
|
+
/** Split a leading UTF-8 byte order mark from decoded text. */
|
|
442
|
+
function splitBom(content) {
|
|
443
|
+
return content.startsWith("") ? {
|
|
444
|
+
bom: "",
|
|
445
|
+
text: content.slice(1)
|
|
446
|
+
} : {
|
|
447
|
+
bom: "",
|
|
448
|
+
text: content
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
/** Remove a leading UTF-8 byte order mark from decoded text. */
|
|
452
|
+
function stripBom(content) {
|
|
453
|
+
return splitBom(content).text;
|
|
454
|
+
}
|
|
455
|
+
//#endregion
|
|
456
|
+
//#region ../../node_modules/.pnpm/@earendil-works+pi-coding-agent@1.3.0_@aws-sdk+credential-provider-node@3.972.86_@model_188af9db56b10bdf99c9b8c64c2036e8/node_modules/@earendil-works/pi-coding-agent/dist/config.js
|
|
457
|
+
const __filename = fileURLToPath$1(import.meta.url);
|
|
458
|
+
const __dirname = dirname$1(__filename);
|
|
459
|
+
/**
|
|
460
|
+
* Detect if we're running as a Bun compiled binary.
|
|
461
|
+
* Bun binaries have import.meta.url containing "$bunfs", "~BUN", or "%7EBUN" (Bun's virtual filesystem path)
|
|
462
|
+
*/
|
|
463
|
+
const isBunBinary = import.meta.url.includes("$bunfs") || import.meta.url.includes("~BUN") || import.meta.url.includes("%7EBUN");
|
|
464
|
+
process.versions.bun;
|
|
465
|
+
const isBundledNode = typeof PI_BUNDLED_NODE !== "undefined" && PI_BUNDLED_NODE;
|
|
466
|
+
/**
|
|
467
|
+
* Get the base directory for resolving package assets (themes, package.json, README.md, CHANGELOG.md).
|
|
468
|
+
* - For Bun binary: returns the directory containing the executable
|
|
469
|
+
* - For Node.js: returns the package root containing package.json
|
|
470
|
+
* - Ignores Bun binary metadata copied into dist/ when the package root is available
|
|
471
|
+
*/
|
|
472
|
+
function findNodePackageDir(startDir) {
|
|
473
|
+
let dir = startDir;
|
|
474
|
+
while (dir !== dirname$1(dir)) {
|
|
475
|
+
if (existsSync$1(join$1(dir, "package.json"))) {
|
|
476
|
+
const parent = dirname$1(dir);
|
|
477
|
+
if (basename$1(dir) === "dist" && existsSync$1(join$1(parent, "package.json"))) return parent;
|
|
478
|
+
return dir;
|
|
479
|
+
}
|
|
480
|
+
dir = dirname$1(dir);
|
|
481
|
+
}
|
|
482
|
+
return startDir;
|
|
483
|
+
}
|
|
484
|
+
function getPackageDir() {
|
|
485
|
+
const envDir = process.env.PI_PACKAGE_DIR;
|
|
486
|
+
if (envDir) return normalizePath(envDir);
|
|
487
|
+
if (isBunBinary) return dirname$1(process.execPath);
|
|
488
|
+
return findNodePackageDir(__dirname);
|
|
489
|
+
}
|
|
490
|
+
/** Get path to package.json */
|
|
491
|
+
function getPackageJsonPath() {
|
|
492
|
+
return join$1(getPackageDir(), "package.json");
|
|
493
|
+
}
|
|
494
|
+
/** Get path to docs directory */
|
|
495
|
+
function getDocsPath() {
|
|
496
|
+
return resolve$1(join$1(getPackageDir(), "docs"));
|
|
497
|
+
}
|
|
498
|
+
let quickJSWasmPath;
|
|
499
|
+
/**
|
|
500
|
+
* Get path to `quickjs-wasi/quickjs.wasm`, the VM that runs codemode scripts. Resolved once so the
|
|
501
|
+
* compiled module cached per path keeps working after an update removes this install (#10439).
|
|
502
|
+
*/
|
|
503
|
+
function getQuickJSWasmPath() {
|
|
504
|
+
quickJSWasmPath ??= createRequire(import.meta.url).resolve("quickjs-wasi/quickjs.wasm");
|
|
505
|
+
return quickJSWasmPath;
|
|
506
|
+
}
|
|
507
|
+
/** Resolve the codemode worker entry for a release runtime. */
|
|
508
|
+
function resolveCodemodeWorkerSpecifier(runtime, moduleUrl) {
|
|
509
|
+
if (runtime === "bun-binary") return "./src/extensions/codemode/worker.ts";
|
|
510
|
+
if (runtime === "bundled-node") return new URL("./codemode-worker.js", moduleUrl);
|
|
511
|
+
}
|
|
512
|
+
let codemodeWorkerDataUrl;
|
|
513
|
+
/**
|
|
514
|
+
* Get the codemode worker entry, or undefined to use the worker that ships next to pi-codemode.
|
|
515
|
+
* The Bun and Node release builds both pass the worker as an extra entrypoint.
|
|
516
|
+
*/
|
|
517
|
+
function getCodemodeWorkerSpecifier() {
|
|
518
|
+
const runtime = isBunBinary ? "bun-binary" : isBundledNode ? "bundled-node" : "unbundled";
|
|
519
|
+
const specifier = resolveCodemodeWorkerSpecifier(runtime, import.meta.url);
|
|
520
|
+
if (runtime !== "bundled-node" || !(specifier instanceof URL)) return specifier;
|
|
521
|
+
codemodeWorkerDataUrl ??= new URL(`data:text/javascript;base64,${readFileSync$1(specifier).toString("base64")}`);
|
|
522
|
+
return codemodeWorkerDataUrl;
|
|
523
|
+
}
|
|
524
|
+
let pkg = {};
|
|
525
|
+
try {
|
|
526
|
+
const packageJsonPath = getPackageJsonPath();
|
|
527
|
+
pkg = JSON.parse(stripBom(readFileSync$1(packageJsonPath, "utf-8")));
|
|
528
|
+
} catch (e) {
|
|
529
|
+
if (e.code !== "ENOENT") throw e;
|
|
530
|
+
}
|
|
531
|
+
const piConfigName = pkg.piConfig?.name;
|
|
532
|
+
pkg.name;
|
|
533
|
+
const APP_NAME = piConfigName || "pi";
|
|
534
|
+
const CONFIG_DIR_NAME = pkg.piConfig?.configDir || ".pi";
|
|
535
|
+
const VERSION = pkg.version || "0.0.0";
|
|
536
|
+
const ENV_AGENT_DIR = `${APP_NAME.toUpperCase()}_CODING_AGENT_DIR`;
|
|
537
|
+
`${APP_NAME.toUpperCase()}`;
|
|
538
|
+
function expandTildePath(path) {
|
|
539
|
+
return normalizePath(path);
|
|
540
|
+
}
|
|
541
|
+
/** Get the agent config directory (e.g., ~/.pi/agent/) */
|
|
542
|
+
function getAgentDir() {
|
|
543
|
+
const envDir = process.env[ENV_AGENT_DIR];
|
|
544
|
+
if (envDir) return expandTildePath(envDir);
|
|
545
|
+
return join$1(homedir(), CONFIG_DIR_NAME, "agent");
|
|
546
|
+
}
|
|
547
|
+
/** Get path to managed binaries directory (fd, rg) */
|
|
548
|
+
function getBinDir() {
|
|
549
|
+
return join$1(getAgentDir(), "bin");
|
|
550
|
+
}
|
|
551
|
+
//#endregion
|
|
552
|
+
//#region ../../node_modules/.pnpm/@earendil-works+pi-coding-agent@1.3.0_@aws-sdk+credential-provider-node@3.972.86_@model_188af9db56b10bdf99c9b8c64c2036e8/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.js
|
|
553
|
+
/**
|
|
554
|
+
* Find bash executable on PATH (cross-platform)
|
|
555
|
+
*/
|
|
556
|
+
function isLegacyWslBashPath(path) {
|
|
557
|
+
const normalized = path.replace(/\//g, "\\").toLowerCase();
|
|
558
|
+
return /^[a-z]:\\windows\\(?:system32|sysnative)\\bash\.exe$/.test(normalized);
|
|
559
|
+
}
|
|
560
|
+
function getBashShellConfig(shell) {
|
|
561
|
+
return isLegacyWslBashPath(shell) ? {
|
|
562
|
+
shell,
|
|
563
|
+
args: ["-s"],
|
|
564
|
+
commandTransport: "stdin"
|
|
565
|
+
} : {
|
|
566
|
+
shell,
|
|
567
|
+
args: ["-c"]
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
function findExecutableOnPath(executable) {
|
|
571
|
+
if (process.platform === "win32") {
|
|
572
|
+
try {
|
|
573
|
+
const result = spawnSync("where", [executable], {
|
|
574
|
+
encoding: "utf-8",
|
|
575
|
+
timeout: 5e3,
|
|
576
|
+
windowsHide: true
|
|
577
|
+
});
|
|
578
|
+
if (result.status === 0 && result.stdout) {
|
|
579
|
+
const firstMatch = result.stdout.trim().split(/\r?\n/)[0];
|
|
580
|
+
if (firstMatch && existsSync(firstMatch)) return firstMatch;
|
|
581
|
+
}
|
|
582
|
+
} catch {}
|
|
583
|
+
return null;
|
|
584
|
+
}
|
|
585
|
+
try {
|
|
586
|
+
const result = spawnSync("which", [executable], {
|
|
587
|
+
encoding: "utf-8",
|
|
588
|
+
timeout: 5e3
|
|
589
|
+
});
|
|
590
|
+
if (result.status === 0 && result.stdout) {
|
|
591
|
+
const firstMatch = result.stdout.trim().split(/\r?\n/)[0];
|
|
592
|
+
if (firstMatch) return firstMatch;
|
|
593
|
+
}
|
|
594
|
+
} catch {}
|
|
595
|
+
return null;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Resolve shell configuration based on platform and an optional explicit shell path.
|
|
599
|
+
* Resolution order:
|
|
600
|
+
* 1. User-specified shellPath
|
|
601
|
+
* 2. On Windows: Git Bash in known locations, then bash on PATH
|
|
602
|
+
* 3. On Unix: /bin/bash, then bash on PATH, then fallback to sh
|
|
603
|
+
*/
|
|
604
|
+
function getShellConfig(customShellPath) {
|
|
605
|
+
if (customShellPath) {
|
|
606
|
+
if (existsSync(customShellPath)) return getBashShellConfig(customShellPath);
|
|
607
|
+
throw new Error(`Custom shell path not found: ${customShellPath}`);
|
|
608
|
+
}
|
|
609
|
+
if (process.platform === "win32") {
|
|
610
|
+
const paths = [];
|
|
611
|
+
const programFiles = process.env.ProgramFiles;
|
|
612
|
+
if (programFiles) paths.push(`${programFiles}\\Git\\bin\\bash.exe`);
|
|
613
|
+
const programFilesX86 = process.env["ProgramFiles(x86)"];
|
|
614
|
+
if (programFilesX86) paths.push(`${programFilesX86}\\Git\\bin\\bash.exe`);
|
|
615
|
+
for (const path of paths) if (existsSync(path)) return getBashShellConfig(path);
|
|
616
|
+
const bashOnPath = findExecutableOnPath("bash.exe");
|
|
617
|
+
if (bashOnPath) return getBashShellConfig(bashOnPath);
|
|
618
|
+
throw new Error(`No bash shell found. Options:
|
|
619
|
+
1. Install Git for Windows: https://git-scm.com/download/win
|
|
620
|
+
2. Add your bash to PATH (Cygwin, MSYS2, etc.)
|
|
621
|
+
3. Set shellPath in settings.json
|
|
622
|
+
|
|
623
|
+
Searched Git Bash in:\n${paths.map((p) => ` ${p}`).join("\n")}`);
|
|
624
|
+
}
|
|
625
|
+
if (existsSync("/bin/bash")) return getBashShellConfig("/bin/bash");
|
|
626
|
+
const bashOnPath = findExecutableOnPath("bash");
|
|
627
|
+
if (bashOnPath) return getBashShellConfig(bashOnPath);
|
|
628
|
+
return {
|
|
629
|
+
shell: "sh",
|
|
630
|
+
args: ["-c"]
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Sanitize binary output for display/storage.
|
|
635
|
+
* Removes characters that crash string-width or cause display issues:
|
|
636
|
+
* - Control characters (except tab, newline, carriage return)
|
|
637
|
+
* - Unicode interlinear annotation characters U+FFF9..U+FFFB (crash string-width due to a bug)
|
|
638
|
+
*/
|
|
639
|
+
function sanitizeBinaryOutput(str) {
|
|
640
|
+
return str.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\uFFF9-\uFFFB]/g, "");
|
|
641
|
+
}
|
|
642
|
+
//#endregion
|
|
643
|
+
export { VERSION as a, getCodemodeWorkerSpecifier as c, getQuickJSWasmPath as d, isBunBinary as f, CONFIG_DIR_NAME as i, getDocsPath as l, require_cross_spawn as m, sanitizeBinaryOutput as n, getAgentDir as o, normalizePath as p, APP_NAME as r, getBinDir as s, getShellConfig as t, getPackageDir as u };
|