@linzumi/cli 0.0.52-beta → 0.0.54-beta
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 +7 -1
- package/dist/index.js +142 -81
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ Install the CLI or run it with `npx`:
|
|
|
62
62
|
```bash
|
|
63
63
|
npm install -g @linzumi/cli@latest
|
|
64
64
|
npx -y @linzumi/cli@latest signup
|
|
65
|
-
npx -y @linzumi/cli@0.0.
|
|
65
|
+
npx -y @linzumi/cli@0.0.54-beta --version
|
|
66
66
|
linzumi --version
|
|
67
67
|
```
|
|
68
68
|
|
|
@@ -79,6 +79,12 @@ For explicit runner roots, pass a comma-separated allowlist:
|
|
|
79
79
|
linzumi start ~/code/my-app --allowed-cwd <paths>
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
+
For non-production Linzumi servers, `connect` accepts either API URL flag:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
linzumi connect --linzumi-url ws://127.0.0.1:4140 --workspace default --allow-port-forwarding-by-default
|
|
86
|
+
```
|
|
87
|
+
|
|
82
88
|
## Agent-first launch path
|
|
83
89
|
|
|
84
90
|
The fastest path is the `npx -y @linzumi/cli@latest signup` command
|
package/dist/index.js
CHANGED
|
@@ -4,35 +4,21 @@ var __getProtoOf = Object.getPrototypeOf;
|
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
function __accessProp(key) {
|
|
8
|
-
return this[key];
|
|
9
|
-
}
|
|
10
|
-
var __toESMCache_node;
|
|
11
|
-
var __toESMCache_esm;
|
|
12
7
|
var __toESM = (mod, isNodeMode, target) => {
|
|
13
|
-
var canCache = mod != null && typeof mod === "object";
|
|
14
|
-
if (canCache) {
|
|
15
|
-
var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
|
|
16
|
-
var cached = cache.get(mod);
|
|
17
|
-
if (cached)
|
|
18
|
-
return cached;
|
|
19
|
-
}
|
|
20
8
|
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
21
9
|
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
22
10
|
for (let key of __getOwnPropNames(mod))
|
|
23
11
|
if (!__hasOwnProp.call(to, key))
|
|
24
12
|
__defProp(to, key, {
|
|
25
|
-
get:
|
|
13
|
+
get: () => mod[key],
|
|
26
14
|
enumerable: true
|
|
27
15
|
});
|
|
28
|
-
if (canCache)
|
|
29
|
-
cache.set(mod, to);
|
|
30
16
|
return to;
|
|
31
17
|
};
|
|
32
18
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
33
19
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
34
20
|
|
|
35
|
-
// node_modules/yoctocolors-cjs/index.js
|
|
21
|
+
// ../../node_modules/yoctocolors-cjs/index.js
|
|
36
22
|
var require_yoctocolors_cjs = __commonJS((exports, module) => {
|
|
37
23
|
var tty = __require("node:tty");
|
|
38
24
|
var hasColors = tty?.WriteStream?.prototype?.hasColors?.() ?? false;
|
|
@@ -106,7 +92,7 @@ var require_yoctocolors_cjs = __commonJS((exports, module) => {
|
|
|
106
92
|
module.exports = colors;
|
|
107
93
|
});
|
|
108
94
|
|
|
109
|
-
// node_modules/cli-width/index.js
|
|
95
|
+
// ../../node_modules/cli-width/index.js
|
|
110
96
|
var require_cli_width = __commonJS((exports, module) => {
|
|
111
97
|
module.exports = cliWidth;
|
|
112
98
|
function normalizeOpts(options) {
|
|
@@ -146,7 +132,7 @@ var require_cli_width = __commonJS((exports, module) => {
|
|
|
146
132
|
}
|
|
147
133
|
});
|
|
148
134
|
|
|
149
|
-
// node_modules/ansi-regex/index.js
|
|
135
|
+
// ../../node_modules/ansi-regex/index.js
|
|
150
136
|
var require_ansi_regex = __commonJS((exports, module) => {
|
|
151
137
|
module.exports = ({ onlyFirst = false } = {}) => {
|
|
152
138
|
const pattern = [
|
|
@@ -157,13 +143,13 @@ var require_ansi_regex = __commonJS((exports, module) => {
|
|
|
157
143
|
};
|
|
158
144
|
});
|
|
159
145
|
|
|
160
|
-
// node_modules/strip-ansi/index.js
|
|
146
|
+
// ../../node_modules/strip-ansi/index.js
|
|
161
147
|
var require_strip_ansi = __commonJS((exports, module) => {
|
|
162
148
|
var ansiRegex = require_ansi_regex();
|
|
163
149
|
module.exports = (string) => typeof string === "string" ? string.replace(ansiRegex(), "") : string;
|
|
164
150
|
});
|
|
165
151
|
|
|
166
|
-
// node_modules/is-fullwidth-code-point/index.js
|
|
152
|
+
// ../../node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
|
|
167
153
|
var require_is_fullwidth_code_point = __commonJS((exports, module) => {
|
|
168
154
|
var isFullwidthCodePoint = (codePoint) => {
|
|
169
155
|
if (Number.isNaN(codePoint)) {
|
|
@@ -178,14 +164,14 @@ var require_is_fullwidth_code_point = __commonJS((exports, module) => {
|
|
|
178
164
|
module.exports.default = isFullwidthCodePoint;
|
|
179
165
|
});
|
|
180
166
|
|
|
181
|
-
// node_modules/emoji-regex/index.js
|
|
167
|
+
// ../../node_modules/string-width/node_modules/emoji-regex/index.js
|
|
182
168
|
var require_emoji_regex = __commonJS((exports, module) => {
|
|
183
169
|
module.exports = function() {
|
|
184
170
|
return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
|
|
185
171
|
};
|
|
186
172
|
});
|
|
187
173
|
|
|
188
|
-
// node_modules/string-width/index.js
|
|
174
|
+
// ../../node_modules/string-width/index.js
|
|
189
175
|
var require_string_width = __commonJS((exports, module) => {
|
|
190
176
|
var stripAnsi = require_strip_ansi();
|
|
191
177
|
var isFullwidthCodePoint = require_is_fullwidth_code_point();
|
|
@@ -219,7 +205,7 @@ var require_string_width = __commonJS((exports, module) => {
|
|
|
219
205
|
module.exports.default = stringWidth;
|
|
220
206
|
});
|
|
221
207
|
|
|
222
|
-
// node_modules/color-name/index.js
|
|
208
|
+
// ../../node_modules/color-name/index.js
|
|
223
209
|
var require_color_name = __commonJS((exports, module) => {
|
|
224
210
|
module.exports = {
|
|
225
211
|
aliceblue: [240, 248, 255],
|
|
@@ -373,7 +359,7 @@ var require_color_name = __commonJS((exports, module) => {
|
|
|
373
359
|
};
|
|
374
360
|
});
|
|
375
361
|
|
|
376
|
-
// node_modules/color-convert/conversions.js
|
|
362
|
+
// ../../node_modules/color-convert/conversions.js
|
|
377
363
|
var require_conversions = __commonJS((exports, module) => {
|
|
378
364
|
var cssKeywords = require_color_name();
|
|
379
365
|
var reverseKeywords = {};
|
|
@@ -1042,7 +1028,7 @@ var require_conversions = __commonJS((exports, module) => {
|
|
|
1042
1028
|
};
|
|
1043
1029
|
});
|
|
1044
1030
|
|
|
1045
|
-
// node_modules/color-convert/route.js
|
|
1031
|
+
// ../../node_modules/color-convert/route.js
|
|
1046
1032
|
var require_route = __commonJS((exports, module) => {
|
|
1047
1033
|
var conversions = require_conversions();
|
|
1048
1034
|
function buildGraph() {
|
|
@@ -1108,7 +1094,7 @@ var require_route = __commonJS((exports, module) => {
|
|
|
1108
1094
|
};
|
|
1109
1095
|
});
|
|
1110
1096
|
|
|
1111
|
-
// node_modules/color-convert/index.js
|
|
1097
|
+
// ../../node_modules/color-convert/index.js
|
|
1112
1098
|
var require_color_convert = __commonJS((exports, module) => {
|
|
1113
1099
|
var conversions = require_conversions();
|
|
1114
1100
|
var route = require_route();
|
|
@@ -1167,7 +1153,7 @@ var require_color_convert = __commonJS((exports, module) => {
|
|
|
1167
1153
|
module.exports = convert;
|
|
1168
1154
|
});
|
|
1169
1155
|
|
|
1170
|
-
// node_modules/ansi-styles/index.js
|
|
1156
|
+
// ../../node_modules/ansi-styles/index.js
|
|
1171
1157
|
var require_ansi_styles = __commonJS((exports, module) => {
|
|
1172
1158
|
var wrapAnsi16 = (fn, offset) => (...args) => {
|
|
1173
1159
|
const code = fn(...args);
|
|
@@ -1303,7 +1289,7 @@ var require_ansi_styles = __commonJS((exports, module) => {
|
|
|
1303
1289
|
});
|
|
1304
1290
|
});
|
|
1305
1291
|
|
|
1306
|
-
// node_modules/wrap-ansi/index.js
|
|
1292
|
+
// ../../node_modules/@inquirer/core/node_modules/wrap-ansi/index.js
|
|
1307
1293
|
var require_wrap_ansi = __commonJS((exports, module) => {
|
|
1308
1294
|
var stringWidth = require_string_width();
|
|
1309
1295
|
var stripAnsi = require_strip_ansi();
|
|
@@ -1439,7 +1425,7 @@ var require_wrap_ansi = __commonJS((exports, module) => {
|
|
|
1439
1425
|
};
|
|
1440
1426
|
});
|
|
1441
1427
|
|
|
1442
|
-
// node_modules/mute-stream/lib/index.js
|
|
1428
|
+
// ../../node_modules/mute-stream/lib/index.js
|
|
1443
1429
|
var require_lib = __commonJS((exports, module) => {
|
|
1444
1430
|
var Stream = __require("stream");
|
|
1445
1431
|
|
|
@@ -10456,7 +10442,7 @@ function realpathOrResolved(pathValue) {
|
|
|
10456
10442
|
}
|
|
10457
10443
|
|
|
10458
10444
|
// src/version.ts
|
|
10459
|
-
var linzumiCliVersion = "0.0.
|
|
10445
|
+
var linzumiCliVersion = "0.0.54-beta";
|
|
10460
10446
|
var linzumiCliVersionText = `linzumi ${linzumiCliVersion}`;
|
|
10461
10447
|
|
|
10462
10448
|
// src/runnerLock.ts
|
|
@@ -11240,13 +11226,65 @@ async function openLocalCodexRunner(options, log, cleanup, close) {
|
|
|
11240
11226
|
const codex = await connectCodexAppServer(codexUrl);
|
|
11241
11227
|
cleanup.actions.push(() => codex.close());
|
|
11242
11228
|
const seq = { value: 0 };
|
|
11243
|
-
const
|
|
11244
|
-
|
|
11245
|
-
|
|
11229
|
+
const discoveredCodexThreads = { value: [] };
|
|
11230
|
+
const lastReportedDiscoveryFailure = { value: undefined };
|
|
11231
|
+
const reportClientError = async (args) => {
|
|
11232
|
+
await kandan.push(topic, "client_error_report", {
|
|
11233
|
+
id: `client-error-${randomUUID3()}`,
|
|
11234
|
+
severity: args.severity ?? "error",
|
|
11235
|
+
code: args.code,
|
|
11236
|
+
operation: args.operation,
|
|
11237
|
+
message: args.message,
|
|
11238
|
+
occurredAt: new Date().toISOString(),
|
|
11239
|
+
instanceId,
|
|
11240
|
+
clientId,
|
|
11241
|
+
runnerId: options.runnerId,
|
|
11242
|
+
hostname: runnerHost,
|
|
11243
|
+
cwd: options.cwd,
|
|
11244
|
+
codexUrl,
|
|
11245
|
+
workspace: runnerWorkspaceSlug(options) ?? null,
|
|
11246
|
+
channel: options.channelSession?.channelSlug ?? null,
|
|
11247
|
+
cliVersion: linzumiCliVersion,
|
|
11248
|
+
details: args.details ?? {}
|
|
11249
|
+
}).catch((error) => {
|
|
11250
|
+
log("kandan.client_error_report_push_failed", {
|
|
11251
|
+
code: args.code,
|
|
11252
|
+
operation: args.operation,
|
|
11253
|
+
message: error instanceof Error ? error.message : String(error)
|
|
11254
|
+
});
|
|
11246
11255
|
});
|
|
11247
|
-
|
|
11248
|
-
|
|
11249
|
-
|
|
11256
|
+
};
|
|
11257
|
+
const loadDiscoveredCodexThreads = async (phase) => {
|
|
11258
|
+
try {
|
|
11259
|
+
const threads = await discoverCodexThreads(codex, options.cwd);
|
|
11260
|
+
lastReportedDiscoveryFailure.value = undefined;
|
|
11261
|
+
return threads;
|
|
11262
|
+
} catch (error) {
|
|
11263
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
11264
|
+
const signature = `codex_thread_discovery_failed:${message}`;
|
|
11265
|
+
log("codex.thread_discovery_failed", {
|
|
11266
|
+
phase,
|
|
11267
|
+
message
|
|
11268
|
+
});
|
|
11269
|
+
if (lastReportedDiscoveryFailure.value !== signature) {
|
|
11270
|
+
lastReportedDiscoveryFailure.value = signature;
|
|
11271
|
+
await reportClientError({
|
|
11272
|
+
code: "codex_thread_discovery_failed",
|
|
11273
|
+
operation: "codex_thread_discovery",
|
|
11274
|
+
message,
|
|
11275
|
+
details: {
|
|
11276
|
+
phase,
|
|
11277
|
+
codexUrl,
|
|
11278
|
+
cwd: options.cwd
|
|
11279
|
+
}
|
|
11280
|
+
});
|
|
11281
|
+
}
|
|
11282
|
+
return discoveredCodexThreads.value;
|
|
11283
|
+
}
|
|
11284
|
+
};
|
|
11285
|
+
if (options.channelSession === undefined) {
|
|
11286
|
+
discoveredCodexThreads.value = await loadDiscoveredCodexThreads("initial");
|
|
11287
|
+
}
|
|
11250
11288
|
const runtimeDefaults = runnerRuntimeDefaults(options);
|
|
11251
11289
|
const instancePayload = {
|
|
11252
11290
|
instanceId,
|
|
@@ -11255,7 +11293,7 @@ async function openLocalCodexRunner(options, log, cleanup, close) {
|
|
|
11255
11293
|
tuiLaunched: options.launchTui,
|
|
11256
11294
|
cwd: options.cwd,
|
|
11257
11295
|
hostname: runnerHost,
|
|
11258
|
-
codexThreads,
|
|
11296
|
+
codexThreads: discoveredCodexThreads.value,
|
|
11259
11297
|
workspace: runnerWorkspaceSlug(options) ?? null,
|
|
11260
11298
|
channel: options.channelSession?.channelSlug ?? null,
|
|
11261
11299
|
model: runtimeDefaults.model ?? null,
|
|
@@ -11399,19 +11437,17 @@ async function openLocalCodexRunner(options, log, cleanup, close) {
|
|
|
11399
11437
|
message: error instanceof Error ? error.message : String(error)
|
|
11400
11438
|
});
|
|
11401
11439
|
});
|
|
11402
|
-
const refreshDiscoveredCodexThreads =
|
|
11403
|
-
discoveredCodexThreads.value =
|
|
11404
|
-
|
|
11405
|
-
}
|
|
11406
|
-
log("kandan.codex_threads_refresh_failed", {
|
|
11407
|
-
message: error instanceof Error ? error.message : String(error)
|
|
11408
|
-
});
|
|
11409
|
-
});
|
|
11440
|
+
const refreshDiscoveredCodexThreads = async (phase) => {
|
|
11441
|
+
discoveredCodexThreads.value = await loadDiscoveredCodexThreads(phase);
|
|
11442
|
+
await pushHeartbeat();
|
|
11443
|
+
};
|
|
11410
11444
|
const heartbeatInterval = setInterval(() => {
|
|
11411
|
-
channelSession === undefined ? refreshDiscoveredCodexThreads() : pushHeartbeat();
|
|
11445
|
+
channelSession === undefined ? refreshDiscoveredCodexThreads("heartbeat") : pushHeartbeat();
|
|
11412
11446
|
}, 15000);
|
|
11413
11447
|
cleanup.actions.push(() => clearInterval(heartbeatInterval));
|
|
11414
|
-
kandan.onReconnect(() =>
|
|
11448
|
+
kandan.onReconnect(() => channelSession === undefined ? refreshDiscoveredCodexThreads("reconnect").then(() => {
|
|
11449
|
+
return;
|
|
11450
|
+
}) : pushHeartbeat().then(() => {
|
|
11415
11451
|
return;
|
|
11416
11452
|
}));
|
|
11417
11453
|
pushHeartbeat();
|
|
@@ -11446,7 +11482,7 @@ async function openLocalCodexRunner(options, log, cleanup, close) {
|
|
|
11446
11482
|
});
|
|
11447
11483
|
}
|
|
11448
11484
|
if (channelSession === undefined && notification.method === "thread/started") {
|
|
11449
|
-
refreshDiscoveredCodexThreads();
|
|
11485
|
+
refreshDiscoveredCodexThreads("thread_started");
|
|
11450
11486
|
}
|
|
11451
11487
|
log("codex.notification", {
|
|
11452
11488
|
method: notification.method,
|
|
@@ -13804,7 +13840,7 @@ To kick the agent off:
|
|
|
13804
13840
|
3. Paste into the thread. Codex will pick it up and start editing this folder.
|
|
13805
13841
|
`;
|
|
13806
13842
|
|
|
13807
|
-
// node_modules/@inquirer/core/dist/esm/lib/key.js
|
|
13843
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/key.js
|
|
13808
13844
|
var isUpKey = (key, keybindings = []) => key.name === "up" || keybindings.includes("vim") && key.name === "k" || keybindings.includes("emacs") && key.ctrl && key.name === "p";
|
|
13809
13845
|
var isDownKey = (key, keybindings = []) => key.name === "down" || keybindings.includes("vim") && key.name === "j" || keybindings.includes("emacs") && key.ctrl && key.name === "n";
|
|
13810
13846
|
var isSpaceKey = (key) => key.name === "space";
|
|
@@ -13812,7 +13848,7 @@ var isBackspaceKey = (key) => key.name === "backspace";
|
|
|
13812
13848
|
var isTabKey = (key) => key.name === "tab";
|
|
13813
13849
|
var isNumberKey = (key) => "1234567890".includes(key.name);
|
|
13814
13850
|
var isEnterKey = (key) => key.name === "enter" || key.name === "return";
|
|
13815
|
-
// node_modules/@inquirer/core/dist/esm/lib/errors.js
|
|
13851
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/errors.js
|
|
13816
13852
|
class AbortPromptError extends Error {
|
|
13817
13853
|
name = "AbortPromptError";
|
|
13818
13854
|
message = "Prompt was aborted";
|
|
@@ -13838,10 +13874,10 @@ class HookError extends Error {
|
|
|
13838
13874
|
class ValidationError extends Error {
|
|
13839
13875
|
name = "ValidationError";
|
|
13840
13876
|
}
|
|
13841
|
-
// node_modules/@inquirer/core/dist/esm/lib/use-state.js
|
|
13877
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/use-state.js
|
|
13842
13878
|
import { AsyncResource as AsyncResource2 } from "node:async_hooks";
|
|
13843
13879
|
|
|
13844
|
-
// node_modules/@inquirer/core/dist/esm/lib/hook-engine.js
|
|
13880
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/hook-engine.js
|
|
13845
13881
|
import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
|
|
13846
13882
|
var hookStorage = new AsyncLocalStorage;
|
|
13847
13883
|
function createStore(rl) {
|
|
@@ -13946,7 +13982,7 @@ var effectScheduler = {
|
|
|
13946
13982
|
}
|
|
13947
13983
|
};
|
|
13948
13984
|
|
|
13949
|
-
// node_modules/@inquirer/core/dist/esm/lib/use-state.js
|
|
13985
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/use-state.js
|
|
13950
13986
|
function useState(defaultValue) {
|
|
13951
13987
|
return withPointer((pointer) => {
|
|
13952
13988
|
const setState = AsyncResource2.bind(function setState2(newValue) {
|
|
@@ -13964,7 +14000,7 @@ function useState(defaultValue) {
|
|
|
13964
14000
|
});
|
|
13965
14001
|
}
|
|
13966
14002
|
|
|
13967
|
-
// node_modules/@inquirer/core/dist/esm/lib/use-effect.js
|
|
14003
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/use-effect.js
|
|
13968
14004
|
function useEffect(cb, depArray) {
|
|
13969
14005
|
withPointer((pointer) => {
|
|
13970
14006
|
const oldDeps = pointer.get();
|
|
@@ -13976,10 +14012,10 @@ function useEffect(cb, depArray) {
|
|
|
13976
14012
|
});
|
|
13977
14013
|
}
|
|
13978
14014
|
|
|
13979
|
-
// node_modules/@inquirer/core/dist/esm/lib/theme.js
|
|
14015
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/theme.js
|
|
13980
14016
|
var import_yoctocolors_cjs = __toESM(require_yoctocolors_cjs(), 1);
|
|
13981
14017
|
|
|
13982
|
-
// node_modules/@inquirer/figures/dist/esm/index.js
|
|
14018
|
+
// ../../node_modules/@inquirer/figures/dist/esm/index.js
|
|
13983
14019
|
import process2 from "node:process";
|
|
13984
14020
|
function isUnicodeSupported() {
|
|
13985
14021
|
if (process2.platform !== "win32") {
|
|
@@ -14268,7 +14304,7 @@ var figures = shouldUseMain ? mainSymbols : fallbackSymbols;
|
|
|
14268
14304
|
var esm_default = figures;
|
|
14269
14305
|
var replacements = Object.entries(specialMainSymbols);
|
|
14270
14306
|
|
|
14271
|
-
// node_modules/@inquirer/core/dist/esm/lib/theme.js
|
|
14307
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/theme.js
|
|
14272
14308
|
var defaultTheme = {
|
|
14273
14309
|
prefix: {
|
|
14274
14310
|
idle: import_yoctocolors_cjs.default.blue("?"),
|
|
@@ -14289,7 +14325,7 @@ var defaultTheme = {
|
|
|
14289
14325
|
}
|
|
14290
14326
|
};
|
|
14291
14327
|
|
|
14292
|
-
// node_modules/@inquirer/core/dist/esm/lib/make-theme.js
|
|
14328
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/make-theme.js
|
|
14293
14329
|
function isPlainObject(value) {
|
|
14294
14330
|
if (typeof value !== "object" || value === null)
|
|
14295
14331
|
return false;
|
|
@@ -14317,7 +14353,7 @@ function makeTheme(...themes) {
|
|
|
14317
14353
|
return deepMerge(...themesToMerge);
|
|
14318
14354
|
}
|
|
14319
14355
|
|
|
14320
|
-
// node_modules/@inquirer/core/dist/esm/lib/use-prefix.js
|
|
14356
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/use-prefix.js
|
|
14321
14357
|
function usePrefix({ status = "idle", theme }) {
|
|
14322
14358
|
const [showLoader, setShowLoader] = useState(false);
|
|
14323
14359
|
const [tick, setTick] = useState(0);
|
|
@@ -14347,7 +14383,7 @@ function usePrefix({ status = "idle", theme }) {
|
|
|
14347
14383
|
const iconName = status === "loading" ? "idle" : status;
|
|
14348
14384
|
return typeof prefix === "string" ? prefix : prefix[iconName] ?? prefix["idle"];
|
|
14349
14385
|
}
|
|
14350
|
-
// node_modules/@inquirer/core/dist/esm/lib/use-memo.js
|
|
14386
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/use-memo.js
|
|
14351
14387
|
function useMemo(fn, dependencies) {
|
|
14352
14388
|
return withPointer((pointer) => {
|
|
14353
14389
|
const prev = pointer.get();
|
|
@@ -14359,11 +14395,11 @@ function useMemo(fn, dependencies) {
|
|
|
14359
14395
|
return prev.value;
|
|
14360
14396
|
});
|
|
14361
14397
|
}
|
|
14362
|
-
// node_modules/@inquirer/core/dist/esm/lib/use-ref.js
|
|
14398
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/use-ref.js
|
|
14363
14399
|
function useRef(val) {
|
|
14364
14400
|
return useState({ current: val })[0];
|
|
14365
14401
|
}
|
|
14366
|
-
// node_modules/@inquirer/core/dist/esm/lib/use-keypress.js
|
|
14402
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/use-keypress.js
|
|
14367
14403
|
function useKeypress(userHandler) {
|
|
14368
14404
|
const signal = useRef(userHandler);
|
|
14369
14405
|
signal.current = userHandler;
|
|
@@ -14381,7 +14417,7 @@ function useKeypress(userHandler) {
|
|
|
14381
14417
|
};
|
|
14382
14418
|
}, []);
|
|
14383
14419
|
}
|
|
14384
|
-
// node_modules/@inquirer/core/dist/esm/lib/utils.js
|
|
14420
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/utils.js
|
|
14385
14421
|
var import_cli_width = __toESM(require_cli_width(), 1);
|
|
14386
14422
|
var import_wrap_ansi = __toESM(require_wrap_ansi(), 1);
|
|
14387
14423
|
function breakLines(content, width) {
|
|
@@ -14394,7 +14430,7 @@ function readlineWidth() {
|
|
|
14394
14430
|
return import_cli_width.default({ defaultWidth: 80, output: readline().output });
|
|
14395
14431
|
}
|
|
14396
14432
|
|
|
14397
|
-
// node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js
|
|
14433
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.js
|
|
14398
14434
|
function usePointerPosition({ active, renderedItems, pageSize, loop }) {
|
|
14399
14435
|
const state = useRef({
|
|
14400
14436
|
lastPointer: active,
|
|
@@ -14460,12 +14496,12 @@ function usePagination({ items, active, renderItem, pageSize, loop = true }) {
|
|
|
14460
14496
|
return pageBuffer.filter((line) => typeof line === "string").join(`
|
|
14461
14497
|
`);
|
|
14462
14498
|
}
|
|
14463
|
-
// node_modules/@inquirer/core/dist/esm/lib/create-prompt.js
|
|
14499
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/create-prompt.js
|
|
14464
14500
|
var import_mute_stream = __toESM(require_lib(), 1);
|
|
14465
14501
|
import * as readline2 from "node:readline";
|
|
14466
14502
|
import { AsyncResource as AsyncResource3 } from "node:async_hooks";
|
|
14467
14503
|
|
|
14468
|
-
// node_modules/signal-exit/dist/mjs/signals.js
|
|
14504
|
+
// ../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js
|
|
14469
14505
|
var signals = [];
|
|
14470
14506
|
signals.push("SIGHUP", "SIGINT", "SIGTERM");
|
|
14471
14507
|
if (process.platform !== "win32") {
|
|
@@ -14475,7 +14511,7 @@ if (process.platform === "linux") {
|
|
|
14475
14511
|
signals.push("SIGIO", "SIGPOLL", "SIGPWR", "SIGSTKFLT");
|
|
14476
14512
|
}
|
|
14477
14513
|
|
|
14478
|
-
// node_modules/signal-exit/dist/mjs/index.js
|
|
14514
|
+
// ../../node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js
|
|
14479
14515
|
var processOk = (process3) => !!process3 && typeof process3 === "object" && typeof process3.removeListener === "function" && typeof process3.emit === "function" && typeof process3.reallyExit === "function" && typeof process3.listeners === "function" && typeof process3.kill === "function" && typeof process3.pid === "number" && typeof process3.on === "function";
|
|
14480
14516
|
var kExitEmitter = Symbol.for("signal-exit emitter");
|
|
14481
14517
|
var global = globalThis;
|
|
@@ -14673,10 +14709,10 @@ var {
|
|
|
14673
14709
|
unload
|
|
14674
14710
|
} = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback);
|
|
14675
14711
|
|
|
14676
|
-
// node_modules/@inquirer/core/dist/esm/lib/screen-manager.js
|
|
14712
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/screen-manager.js
|
|
14677
14713
|
import { stripVTControlCharacters } from "node:util";
|
|
14678
14714
|
|
|
14679
|
-
// node_modules/@inquirer/ansi/dist/esm/index.js
|
|
14715
|
+
// ../../node_modules/@inquirer/ansi/dist/esm/index.js
|
|
14680
14716
|
var ESC = "\x1B[";
|
|
14681
14717
|
var cursorLeft = ESC + "G";
|
|
14682
14718
|
var cursorHide = ESC + "?25l";
|
|
@@ -14692,7 +14728,7 @@ var cursorTo = (x, y) => {
|
|
|
14692
14728
|
var eraseLine = ESC + "2K";
|
|
14693
14729
|
var eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : "";
|
|
14694
14730
|
|
|
14695
|
-
// node_modules/@inquirer/core/dist/esm/lib/screen-manager.js
|
|
14731
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/screen-manager.js
|
|
14696
14732
|
var height = (content) => content.split(`
|
|
14697
14733
|
`).length;
|
|
14698
14734
|
var lastLine = (content) => content.split(`
|
|
@@ -14757,7 +14793,7 @@ class ScreenManager {
|
|
|
14757
14793
|
}
|
|
14758
14794
|
}
|
|
14759
14795
|
|
|
14760
|
-
// node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js
|
|
14796
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.js
|
|
14761
14797
|
class PromisePolyfill extends Promise {
|
|
14762
14798
|
static withResolver() {
|
|
14763
14799
|
let resolve8;
|
|
@@ -14770,7 +14806,7 @@ class PromisePolyfill extends Promise {
|
|
|
14770
14806
|
}
|
|
14771
14807
|
}
|
|
14772
14808
|
|
|
14773
|
-
// node_modules/@inquirer/core/dist/esm/lib/create-prompt.js
|
|
14809
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/create-prompt.js
|
|
14774
14810
|
function getCallSites() {
|
|
14775
14811
|
const _prepareStackTrace = Error.prepareStackTrace;
|
|
14776
14812
|
let result = [];
|
|
@@ -14856,7 +14892,7 @@ function createPrompt(view) {
|
|
|
14856
14892
|
};
|
|
14857
14893
|
return prompt;
|
|
14858
14894
|
}
|
|
14859
|
-
// node_modules/@inquirer/core/dist/esm/lib/Separator.js
|
|
14895
|
+
// ../../node_modules/@inquirer/core/dist/esm/lib/Separator.js
|
|
14860
14896
|
var import_yoctocolors_cjs2 = __toESM(require_yoctocolors_cjs(), 1);
|
|
14861
14897
|
class Separator {
|
|
14862
14898
|
separator = import_yoctocolors_cjs2.default.dim(Array.from({ length: 15 }).join(esm_default.line));
|
|
@@ -14870,7 +14906,7 @@ class Separator {
|
|
|
14870
14906
|
return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator");
|
|
14871
14907
|
}
|
|
14872
14908
|
}
|
|
14873
|
-
// node_modules/@inquirer/checkbox/dist/esm/index.js
|
|
14909
|
+
// ../../node_modules/@inquirer/checkbox/dist/esm/index.js
|
|
14874
14910
|
var import_yoctocolors_cjs3 = __toESM(require_yoctocolors_cjs(), 1);
|
|
14875
14911
|
var checkboxTheme = {
|
|
14876
14912
|
icon: {
|
|
@@ -15057,7 +15093,7 @@ var esm_default2 = createPrompt((config, done) => {
|
|
|
15057
15093
|
`).trimEnd();
|
|
15058
15094
|
return `${lines}${cursorHide}`;
|
|
15059
15095
|
});
|
|
15060
|
-
// node_modules/@inquirer/input/dist/esm/index.js
|
|
15096
|
+
// ../../node_modules/@inquirer/input/dist/esm/index.js
|
|
15061
15097
|
var inputTheme = {
|
|
15062
15098
|
validationFailureMode: "keep"
|
|
15063
15099
|
};
|
|
@@ -15141,7 +15177,7 @@ var esm_default3 = createPrompt((config, done) => {
|
|
|
15141
15177
|
error
|
|
15142
15178
|
];
|
|
15143
15179
|
});
|
|
15144
|
-
// node_modules/@inquirer/select/dist/esm/index.js
|
|
15180
|
+
// ../../node_modules/@inquirer/select/dist/esm/index.js
|
|
15145
15181
|
var import_yoctocolors_cjs4 = __toESM(require_yoctocolors_cjs(), 1);
|
|
15146
15182
|
var selectTheme = {
|
|
15147
15183
|
icon: { cursor: esm_default.pointer },
|
|
@@ -18340,6 +18376,7 @@ async function waitForFileChangeOrTimeout(path, deadline, now, ready2 = () => fa
|
|
|
18340
18376
|
var flagDefinitions = new Map([
|
|
18341
18377
|
["version", { kind: "boolean" }],
|
|
18342
18378
|
["api-url", { kind: "value" }],
|
|
18379
|
+
["linzumi-url", { kind: "value" }],
|
|
18343
18380
|
["token", { kind: "value" }],
|
|
18344
18381
|
["runner-id", { kind: "value" }],
|
|
18345
18382
|
["cwd", { kind: "value" }],
|
|
@@ -18354,6 +18391,7 @@ var flagDefinitions = new Map([
|
|
|
18354
18391
|
["reasoning-effort", { kind: "value" }],
|
|
18355
18392
|
["sandbox", { kind: "value" }],
|
|
18356
18393
|
["approval-policy", { kind: "value" }],
|
|
18394
|
+
["allow-port-forwarding-by-default", { kind: "boolean" }],
|
|
18357
18395
|
["stream-flush-ms", { kind: "value" }],
|
|
18358
18396
|
["allowed-cwd", { kind: "value" }],
|
|
18359
18397
|
["forward-port", { kind: "value" }],
|
|
@@ -18733,7 +18771,7 @@ async function runAuthCommand(args) {
|
|
|
18733
18771
|
process.stdout.write(helpText());
|
|
18734
18772
|
return;
|
|
18735
18773
|
}
|
|
18736
|
-
const kandanUrl =
|
|
18774
|
+
const kandanUrl = requiredKandanUrl(values);
|
|
18737
18775
|
const target = parseOptionalChannelTarget(values);
|
|
18738
18776
|
const token = await acquireLocalRunnerTokenDetails({
|
|
18739
18777
|
kandanUrl,
|
|
@@ -18764,7 +18802,7 @@ async function parseStartRunnerArgs(args, deps = {
|
|
|
18764
18802
|
process.exit(0);
|
|
18765
18803
|
}
|
|
18766
18804
|
rejectStartTargetingFlags(values);
|
|
18767
|
-
const kandanUrl =
|
|
18805
|
+
const kandanUrl = kandanUrlValue(values) ?? defaultLinzumiWebSocketUrl;
|
|
18768
18806
|
const requestedCwd = resolveUserPath(cwdArg ?? process.cwd());
|
|
18769
18807
|
const cwd = assertConfiguredAllowedCwds([requestedCwd])[0] ?? requestedCwd;
|
|
18770
18808
|
const explicitAllowedCwds = values.has("allowed-cwd") ? assertConfiguredAllowedCwds(parseAllowedCwdList(stringValue4(values, "allowed-cwd"))) : [];
|
|
@@ -18848,6 +18886,7 @@ async function parseStartRunnerArgs(args, deps = {
|
|
|
18848
18886
|
reasoningEffort: stringValue4(values, "reasoning-effort"),
|
|
18849
18887
|
sandbox: stringValue4(values, "sandbox"),
|
|
18850
18888
|
approvalPolicy: stringValue4(values, "approval-policy"),
|
|
18889
|
+
allowPortForwardingByDefault: booleanFlagValue(values, "allow-port-forwarding-by-default"),
|
|
18851
18890
|
streamFlushMs: positiveIntegerValue2(values, "stream-flush-ms")
|
|
18852
18891
|
}
|
|
18853
18892
|
};
|
|
@@ -18880,9 +18919,10 @@ async function parseAgentRunnerArgs(args, deps = {
|
|
|
18880
18919
|
reasoningEffort: stringValue4(values, "reasoning-effort"),
|
|
18881
18920
|
sandbox: stringValue4(values, "sandbox"),
|
|
18882
18921
|
approvalPolicy: stringValue4(values, "approval-policy"),
|
|
18922
|
+
allowPortForwardingByDefault: booleanFlagValue(values, "allow-port-forwarding-by-default"),
|
|
18883
18923
|
streamFlushMs: positiveIntegerValue2(values, "stream-flush-ms")
|
|
18884
18924
|
};
|
|
18885
|
-
const kandanUrl =
|
|
18925
|
+
const kandanUrl = kandanUrlValue(values) ?? agentApiUrlToKandanUrl(tokenFile.apiUrl);
|
|
18886
18926
|
const requestedCwdValue = cwdArg ?? stringValue4(values, "cwd");
|
|
18887
18927
|
const requestedCwd = resolveUserPath(requestedCwdValue ?? process.cwd());
|
|
18888
18928
|
const configuredAllowedCwds2 = requestedCwdValue === undefined && !values.has("allowed-cwd") ? readConfiguredAllowedCwdDetailsForLinzumiUrl(kandanUrl) : { allowedCwds: [], missingAllowedCwds: [] };
|
|
@@ -19014,7 +19054,7 @@ async function parseRunnerArgs(args, deps = {
|
|
|
19014
19054
|
}
|
|
19015
19055
|
rejectConnectChannelFlags(values);
|
|
19016
19056
|
const workspaceSlug = stringValue4(values, "workspace");
|
|
19017
|
-
const kandanUrl =
|
|
19057
|
+
const kandanUrl = kandanUrlValue(values) ?? defaultLinzumiWebSocketUrl;
|
|
19018
19058
|
const cwd = stringValue4(values, "cwd") ?? process.cwd();
|
|
19019
19059
|
const cwdAllowedCwds = assertConfiguredAllowedCwds([cwd]);
|
|
19020
19060
|
const localConfiguredAllowedCwds = values.has("allowed-cwd") ? { allowedCwds: [], missingAllowedCwds: [] } : readConfiguredAllowedCwdDetailsForLinzumiUrl(kandanUrl);
|
|
@@ -19073,9 +19113,27 @@ function runnerRuntimeDefaultsFromValues(values) {
|
|
|
19073
19113
|
reasoningEffort: stringValue4(values, "reasoning-effort"),
|
|
19074
19114
|
approvalPolicy: stringValue4(values, "approval-policy"),
|
|
19075
19115
|
sandbox: stringValue4(values, "sandbox"),
|
|
19076
|
-
allowPortForwardingByDefault:
|
|
19116
|
+
allowPortForwardingByDefault: booleanFlagValue(values, "allow-port-forwarding-by-default")
|
|
19077
19117
|
};
|
|
19078
19118
|
}
|
|
19119
|
+
function kandanUrlValue(values) {
|
|
19120
|
+
const apiUrl = stringValue4(values, "api-url");
|
|
19121
|
+
const linzumiUrl = stringValue4(values, "linzumi-url");
|
|
19122
|
+
if (apiUrl !== undefined && linzumiUrl !== undefined && apiUrl !== linzumiUrl) {
|
|
19123
|
+
throw new Error("use only one of --api-url or --linzumi-url");
|
|
19124
|
+
}
|
|
19125
|
+
return apiUrl ?? linzumiUrl;
|
|
19126
|
+
}
|
|
19127
|
+
function requiredKandanUrl(values) {
|
|
19128
|
+
const value = kandanUrlValue(values);
|
|
19129
|
+
if (value === undefined) {
|
|
19130
|
+
throw new Error("missing required flag: --api-url or --linzumi-url");
|
|
19131
|
+
}
|
|
19132
|
+
return value;
|
|
19133
|
+
}
|
|
19134
|
+
function booleanFlagValue(values, key) {
|
|
19135
|
+
return values.get(key) === true ? true : undefined;
|
|
19136
|
+
}
|
|
19079
19137
|
function strictFlagValues(args, definitions = flagDefinitions) {
|
|
19080
19138
|
const values = new Map;
|
|
19081
19139
|
for (let index = 0;index < args.length; index += 1) {
|
|
@@ -19282,6 +19340,7 @@ Usage:
|
|
|
19282
19340
|
|
|
19283
19341
|
Connection:
|
|
19284
19342
|
--api-url <url> Linzumi API URL, default ${defaultLinzumiWebSocketUrl}
|
|
19343
|
+
--linzumi-url <url> Alias for --api-url
|
|
19285
19344
|
--token <jwt> Optional override token. Otherwise ~/.linzumi/auth.json is validated or OAuth opens.
|
|
19286
19345
|
--auth-file <path> Auth cache path, default ~/.linzumi/auth.json
|
|
19287
19346
|
--oauth-callback-host <ip> Callback host reachable by your browser
|
|
@@ -19298,6 +19357,8 @@ Codex:
|
|
|
19298
19357
|
--reasoning-effort <value> Reasoning effort requested for Codex and shown in Linzumi
|
|
19299
19358
|
--sandbox <value> Sandbox metadata shown in Linzumi
|
|
19300
19359
|
--approval-policy <value> Approval-policy metadata shown in Linzumi
|
|
19360
|
+
--allow-port-forwarding-by-default
|
|
19361
|
+
Auto-approve detected port-forward candidates for started sessions
|
|
19301
19362
|
--stream-flush-ms <ms> Batch live Codex deltas before Linzumi persistence, default 150
|
|
19302
19363
|
--fast Mark this runner as low-latency/fast in the availability message
|
|
19303
19364
|
--log-file <path> JSONL event log path, default <cwd>/.linzumi-runner.log
|
package/package.json
CHANGED