@songsid/agend 2.3.0-beta.15 → 2.3.0-beta.17
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 +1 -1
- package/README.zh-TW.md +1 -1
- package/dist/backend/claude-code.js +13 -4
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex.js +15 -2
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend-command.d.ts +2 -0
- package/dist/backend-command.js +3 -1
- package/dist/backend-command.js.map +1 -1
- package/dist/bug-report-cli.d.ts +30 -0
- package/dist/bug-report-cli.js +138 -0
- package/dist/bug-report-cli.js.map +1 -0
- package/dist/bug-report.d.ts +47 -0
- package/dist/bug-report.js +136 -0
- package/dist/bug-report.js.map +1 -0
- package/dist/channel/mcp-tools.js +1 -1
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/cli.js +93 -8
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +6 -0
- package/dist/config-validator.js +13 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/daemon.d.ts +14 -1
- package/dist/daemon.js +59 -3
- package/dist/daemon.js.map +1 -1
- package/dist/diagnostic-redaction.d.ts +10 -0
- package/dist/diagnostic-redaction.js +167 -0
- package/dist/diagnostic-redaction.js.map +1 -0
- package/dist/fleet-manager.d.ts +18 -0
- package/dist/fleet-manager.js +109 -8
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/bug-report/SKILL.md +31 -0
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +22 -1
- package/dist/instance-lifecycle.d.ts +8 -1
- package/dist/instance-lifecycle.js +68 -12
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +73 -4
- package/dist/locale.js.map +1 -1
- package/dist/login-controller.d.ts +45 -0
- package/dist/login-controller.js +101 -5
- package/dist/login-controller.js.map +1 -1
- package/dist/ls-attach-resolve.d.ts +3 -2
- package/dist/ls-attach-resolve.js +10 -4
- package/dist/ls-attach-resolve.js.map +1 -1
- package/dist/ls-rows.d.ts +12 -0
- package/dist/ls-rows.js +82 -3
- package/dist/ls-rows.js.map +1 -1
- package/dist/needs-you.d.ts +10 -0
- package/dist/needs-you.js +2 -1
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.js +31 -5
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/quickstart-api.d.ts +9 -0
- package/dist/quickstart-api.js +82 -0
- package/dist/quickstart-api.js.map +1 -1
- package/dist/service-installer.js +12 -0
- package/dist/service-installer.js.map +1 -1
- package/dist/settings-effect.js +15 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/setup-form.d.ts +1 -1
- package/dist/setup-form.js +23 -7
- package/dist/setup-form.js.map +1 -1
- package/dist/tunnel/cloudflared.js +37 -2
- package/dist/tunnel/cloudflared.js.map +1 -1
- package/dist/tunnel/types.d.ts +3 -1
- package/dist/tunnel/types.js.map +1 -1
- package/dist/ui/backend-signin.js +297 -0
- package/dist/ui/chat-msg-actions.js +176 -0
- package/dist/ui/chat-store.js +33 -3
- package/dist/ui/chat-strings.js +8 -2
- package/dist/ui/chat-thread.js +44 -2
- package/dist/ui/panel-chat.js +37 -0
- package/dist/ui/panel-needs.js +4 -2
- package/dist/ui/panel-settings.js +6 -3
- package/dist/ui/shared/app-shell.js +2 -1
- package/dist/ui/shared/app-stream.js +2 -1
- package/dist/ui/shared/app.css +42 -0
- package/dist/ui/shared/app.js +2 -0
- package/dist/ui/shared/usage-dialog.js +26 -3
- package/dist/ui/shared/view-strings.js +10 -0
- package/dist/ui/web-terminal/terminal.html +1 -1
- package/dist/update-launch.d.ts +9 -0
- package/dist/update-launch.js +38 -12
- package/dist/update-launch.js.map +1 -1
- package/dist/usage/format-rich.js +6 -3
- package/dist/usage/format-rich.js.map +1 -1
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +2 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/i18n.d.ts +13 -1
- package/dist/usage/i18n.js +29 -0
- package/dist/usage/i18n.js.map +1 -1
- package/dist/usage/providers.d.ts +46 -1
- package/dist/usage/providers.js +68 -15
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/usage-api.d.ts +2 -0
- package/dist/usage/usage-api.js +180 -55
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/user-systemd.d.ts +24 -0
- package/dist/user-systemd.js +75 -0
- package/dist/user-systemd.js.map +1 -0
- package/dist/web-api.d.ts +10 -1
- package/dist/web-api.js +134 -5
- package/dist/web-api.js.map +1 -1
- package/dist/web-backend-login.d.ts +130 -0
- package/dist/web-backend-login.js +225 -0
- package/dist/web-backend-login.js.map +1 -0
- package/dist/web-chat-history.d.ts +31 -0
- package/dist/web-chat-history.js +49 -1
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +5 -1
- package/dist/web-commands.js +1 -1
- package/dist/web-commands.js.map +1 -1
- package/dist/web-guest-access.d.ts +3 -2
- package/dist/web-guest-access.js +10 -6
- package/dist/web-guest-access.js.map +1 -1
- package/dist/web-terminal-http.js +15 -2
- package/dist/web-terminal-http.js.map +1 -1
- package/dist/windows-shortcuts.d.ts +78 -0
- package/dist/windows-shortcuts.js +203 -0
- package/dist/windows-shortcuts.js.map +1 -0
- package/launcher/agend-install.cjs +548 -0
- package/launcher/install-admission.cjs +4 -39
- package/launcher/postinstall.cjs +14 -12
- package/package.json +3 -2
- package/scripts/preinstall-guard.cjs +2 -5
- package/templates/windows-shortcuts.ps1 +181 -0
- package/launcher/old-updater-note.cjs +0 -48
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #1853: `agend shortcuts` — create or refresh the two Windows desktop shortcuts ("AgEnD 儀表板", "AgEnD 重新啟動") from
|
|
3
|
+
* inside WSL, for people who installed before the installer made them, or who only run `agend update`.
|
|
4
|
+
*
|
|
5
|
+
* It runs the installer's own shortcut code (templates/windows-shortcuts.ps1, kept byte-identical to the installer's) in
|
|
6
|
+
* Windows PowerShell through WSL interop, for this Linux (WSL_DISTRO_NAME) and this user. Interop off is said plainly,
|
|
7
|
+
* with the other way: re-running the one-liner on Windows, which on an existing install only offers the shortcuts.
|
|
8
|
+
*
|
|
9
|
+
* After `agend update` in a WSL terminal without the shortcuts, one line says how to make them, once. Nothing here ever
|
|
10
|
+
* makes a desktop item unasked.
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
13
|
+
import { delimiter, dirname, join } from "node:path";
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
import { t } from "./locale.js";
|
|
16
|
+
/** Written in the data dir once the shortcuts exist (by this command or by the installer). */
|
|
17
|
+
export const SHORTCUTS_MARKER = "windows-shortcuts";
|
|
18
|
+
/** Written once the update hint has been shown. */
|
|
19
|
+
export const SHORTCUTS_HINT_MARKER = "windows-shortcuts-hint";
|
|
20
|
+
const MADE_LINE = /^AGEND_SHORTCUTS_MADE=(\d+)\s*$/m;
|
|
21
|
+
/** install.json names another Linux or user: the script changed nothing and said which (distro|user). */
|
|
22
|
+
const OTHER_LINE = /^AGEND_RECORD_OTHER=([^|\r\n]*)\|([^\r\n]*?)\s*$/m;
|
|
23
|
+
const SYSTEM_POWERSHELL = "Windows/System32/WindowsPowerShell/v1.0/powershell.exe";
|
|
24
|
+
export function realHost() {
|
|
25
|
+
const read = (path) => { try {
|
|
26
|
+
return readFileSync(path, "utf-8");
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
} };
|
|
31
|
+
let binfmt = null;
|
|
32
|
+
try {
|
|
33
|
+
binfmt = readdirSync("/proc/sys/fs/binfmt_misc");
|
|
34
|
+
}
|
|
35
|
+
catch { /* not mounted: unknown */ }
|
|
36
|
+
return { env: process.env, osRelease: read("/proc/sys/kernel/osrelease"), binfmt, exists: existsSync };
|
|
37
|
+
}
|
|
38
|
+
/** Inside WSL? WSL sets WSL_DISTRO_NAME in the shells it starts; its kernel's release names Microsoft. */
|
|
39
|
+
export function detectWsl(host) {
|
|
40
|
+
const distro = host.env.WSL_DISTRO_NAME?.trim() || null;
|
|
41
|
+
return { wsl: distro !== null || /microsoft/i.test(host.osRelease ?? ""), distro };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Can this WSL start a Windows program? Interop is a binfmt_misc entry (WSLInterop, or WSLInterop-late under systemd).
|
|
45
|
+
* Without it, running powershell.exe does not fail: the exec falls back to /bin/sh, which reads the .exe as a script.
|
|
46
|
+
* An unreadable binfmt_misc is unknown, and the run's own output decides.
|
|
47
|
+
*/
|
|
48
|
+
export function interopState(host) {
|
|
49
|
+
if (host.binfmt === null)
|
|
50
|
+
return "unknown";
|
|
51
|
+
return host.binfmt.some(name => /^WSLInterop/.test(name)) ? "on" : "off";
|
|
52
|
+
}
|
|
53
|
+
/** Windows PowerShell: on PATH (interop appends Windows' PATH), else where Windows keeps it on a mounted drive. */
|
|
54
|
+
export function findPowershell(host) {
|
|
55
|
+
for (const dir of (host.env.PATH ?? "").split(delimiter)) {
|
|
56
|
+
if (dir && host.exists(join(dir, "powershell.exe")))
|
|
57
|
+
return join(dir, "powershell.exe");
|
|
58
|
+
}
|
|
59
|
+
for (const drive of ["c", "d", "e"]) {
|
|
60
|
+
const path = `/mnt/${drive}/${SYSTEM_POWERSHELL}`;
|
|
61
|
+
if (host.exists(path))
|
|
62
|
+
return path;
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
/** The installer's shortcut code: the template below its header (which ends at the first blank line). */
|
|
67
|
+
export function sharedShortcutsPs(templateText) {
|
|
68
|
+
const text = templateText ?? readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "templates", "windows-shortcuts.ps1"), "utf-8");
|
|
69
|
+
return text.slice(text.indexOf("\n\n") + 2);
|
|
70
|
+
}
|
|
71
|
+
const psQuote = (value) => `'${value.replace(/'/g, "''")}'`;
|
|
72
|
+
/**
|
|
73
|
+
* The whole script Windows PowerShell runs: the shared code, then both shortcuts for this Linux and user. An
|
|
74
|
+
* install.json that names another Linux or user stops it first, changing nothing (the shortcuts are never repointed
|
|
75
|
+
* without asking, the leader 2026-10-20) — unless it is exactly the one the person was shown and said yes to
|
|
76
|
+
* (`confirmedOver`), read again right before writing: changed while they answered, it stops again (#2279 review).
|
|
77
|
+
*/
|
|
78
|
+
export function buildShortcutsScript(shared, distro, user, confirmedOver) {
|
|
79
|
+
const seen = confirmedOver ? `@{ Distro = ${psQuote(confirmedOver.distro)}; User = ${psQuote(confirmedOver.user)} }` : "$null";
|
|
80
|
+
return [
|
|
81
|
+
"$ErrorActionPreference = 'Stop'",
|
|
82
|
+
"try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch { }",
|
|
83
|
+
"$script:OnWindows = $true",
|
|
84
|
+
shared,
|
|
85
|
+
`if (-not (Test-InstallRecordAsSeen ${seen} ${psQuote(distro)} ${psQuote(user)})) {`,
|
|
86
|
+
` $other = Get-InstallRecordConflict ${psQuote(distro)} ${psQuote(user)}`,
|
|
87
|
+
" Write-Output ('AGEND_RECORD_OTHER=' + $other.Distro + '|' + $other.User); exit 0",
|
|
88
|
+
"}",
|
|
89
|
+
`$made = @(Install-AgendShortcuts ${psQuote(distro)} ${psQuote(user)})`,
|
|
90
|
+
"Write-Output ('AGEND_SHORTCUTS_MADE=' + $made.Count)",
|
|
91
|
+
"",
|
|
92
|
+
].join("\n");
|
|
93
|
+
}
|
|
94
|
+
/** -EncodedCommand takes UTF-16LE in base64: no quoting, and the Chinese names arrive intact. */
|
|
95
|
+
export function encodePowershell(script) {
|
|
96
|
+
return Buffer.from(script, "utf16le").toString("base64");
|
|
97
|
+
}
|
|
98
|
+
export function powershellArgs(script) {
|
|
99
|
+
return ["-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-EncodedCommand", encodePowershell(script)];
|
|
100
|
+
}
|
|
101
|
+
/** `agend shortcuts`. Resolves to the exit code. */
|
|
102
|
+
export async function runShortcuts(deps) {
|
|
103
|
+
const { wsl, distro } = detectWsl(deps.host);
|
|
104
|
+
if (!wsl) {
|
|
105
|
+
deps.log(t("shortcuts.not_wsl"));
|
|
106
|
+
return 1;
|
|
107
|
+
}
|
|
108
|
+
if (!distro) {
|
|
109
|
+
deps.log(t("shortcuts.no_distro"));
|
|
110
|
+
return 1;
|
|
111
|
+
}
|
|
112
|
+
const powershell = findPowershell(deps.host);
|
|
113
|
+
if (interopState(deps.host) === "off" || !powershell) {
|
|
114
|
+
deps.log(t("shortcuts.no_interop"));
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
deps.log(t("shortcuts.making", distro, deps.user));
|
|
118
|
+
let result = deps.run(powershell, powershellArgs(buildShortcutsScript(deps.shared(), distro, deps.user)));
|
|
119
|
+
const other = OTHER_LINE.exec(result.stdout ?? "");
|
|
120
|
+
if (other) {
|
|
121
|
+
// The shortcuts (and install.json) point at another Linux or user: say so, and switch only on an explicit y.
|
|
122
|
+
const [, otherDistro, otherUser] = other;
|
|
123
|
+
const yes = await deps.confirm(t("shortcuts.other_target", otherDistro, otherUser, distro, deps.user));
|
|
124
|
+
if (yes !== true) {
|
|
125
|
+
deps.log(t(yes === null ? "shortcuts.kept_no_tty" : "shortcuts.kept", otherDistro, otherUser));
|
|
126
|
+
return 1;
|
|
127
|
+
}
|
|
128
|
+
result = deps.run(powershell, powershellArgs(buildShortcutsScript(deps.shared(), distro, deps.user, { distro: otherDistro, user: otherUser })));
|
|
129
|
+
// Changed while the person answered: what they agreed to replace is no longer there — nothing is written.
|
|
130
|
+
const again = OTHER_LINE.exec(result.stdout ?? "");
|
|
131
|
+
if (again) {
|
|
132
|
+
deps.log(t("shortcuts.changed_meanwhile", again[1], again[2]));
|
|
133
|
+
return 1;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const made = MADE_LINE.exec(result.stdout ?? "");
|
|
137
|
+
if (!made) {
|
|
138
|
+
// No answer from the script: Windows was never reached (interop) or PowerShell failed before it ran.
|
|
139
|
+
deps.log(t("shortcuts.no_interop"));
|
|
140
|
+
const detail = (result.error?.message ?? (result.stderr || "")).trim();
|
|
141
|
+
if (detail)
|
|
142
|
+
deps.log(` ${detail.split("\n").slice(0, 3).join("\n ")}`);
|
|
143
|
+
return 1;
|
|
144
|
+
}
|
|
145
|
+
if (Number(made[1]) < 2) {
|
|
146
|
+
deps.log(t("shortcuts.failed"));
|
|
147
|
+
return 1;
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
deps.writeMarker(join(deps.dataDir, SHORTCUTS_MARKER), deps.now().toISOString() + "\n");
|
|
151
|
+
}
|
|
152
|
+
catch { /* the hint may show once more */ }
|
|
153
|
+
deps.log(t("shortcuts.done"));
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
export function realShortcutsDeps(dataDir, user, run) {
|
|
157
|
+
return {
|
|
158
|
+
host: realHost(), user, dataDir, run,
|
|
159
|
+
shared: () => sharedShortcutsPs(),
|
|
160
|
+
writeMarker: (path, content) => { mkdirSync(dirname(path), { recursive: true }); writeFileSync(path, content); },
|
|
161
|
+
log: line => console.log(line),
|
|
162
|
+
now: () => new Date(),
|
|
163
|
+
confirm: async (question) => {
|
|
164
|
+
if (!process.stdin.isTTY)
|
|
165
|
+
return null;
|
|
166
|
+
const { createInterface } = await import("node:readline/promises");
|
|
167
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
168
|
+
try {
|
|
169
|
+
return /^\s*[yY]\s*$/.test(await rl.question(`${question} `));
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
rl.close();
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* The one-time line after `agend update`: only in a terminal (a chat /update's log has no reader), only in WSL, only
|
|
179
|
+
* while the shortcuts were never made, and only once. Returns the line, or null. "Once" is claimed by creating the
|
|
180
|
+
* hint marker exclusively (`write` must fail with EEXIST when it exists): two updates in two terminals at the same
|
|
181
|
+
* moment show it once between them (#2260 review). Any other write failure still shows it (it may show again).
|
|
182
|
+
*/
|
|
183
|
+
export function shortcutsHintOnce(o) {
|
|
184
|
+
if (!o.tty || !detectWsl(o.host).wsl)
|
|
185
|
+
return null;
|
|
186
|
+
if (o.host.exists(join(o.dataDir, SHORTCUTS_MARKER)) || o.host.exists(join(o.dataDir, SHORTCUTS_HINT_MARKER)))
|
|
187
|
+
return null;
|
|
188
|
+
try {
|
|
189
|
+
o.write(join(o.dataDir, SHORTCUTS_HINT_MARKER), new Date().toISOString() + "\n");
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
if (err.code === "EEXIST")
|
|
193
|
+
return null; /* otherwise: shown, and may show again */
|
|
194
|
+
}
|
|
195
|
+
return t("shortcuts.hint");
|
|
196
|
+
}
|
|
197
|
+
/** After `agend update`: print the one-time line, if it is due (#1853). */
|
|
198
|
+
export function printUpdateShortcutsHint(dataDir) {
|
|
199
|
+
const line = shortcutsHintOnce({ host: realHost(), dataDir, tty: !!process.stdout.isTTY, write: (path, content) => writeFileSync(path, content, { flag: "wx" }) });
|
|
200
|
+
if (line)
|
|
201
|
+
console.log(` ${line}\n`);
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=windows-shortcuts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windows-shortcuts.js","sourceRoot":"","sources":["../src/windows-shortcuts.ts"],"names":[],"mappings":"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"}
|