@songsid/agend 2.3.2-beta.1 → 2.3.2-beta.10
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/THIRD_PARTY_NOTICES.md +40 -0
- package/dist/agent-cli.js +21 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +5 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/antigravity-usage-scan.d.ts +58 -0
- package/dist/antigravity-usage-scan.js +257 -0
- package/dist/antigravity-usage-scan.js.map +1 -0
- package/dist/antigravity-usage-worker.d.ts +1 -0
- package/dist/antigravity-usage-worker.js +10 -0
- package/dist/antigravity-usage-worker.js.map +1 -0
- package/dist/auth-api.js +4 -0
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/kiro-identity.d.ts +64 -0
- package/dist/backend/kiro-identity.js +101 -0
- package/dist/backend/kiro-identity.js.map +1 -1
- package/dist/backend/kiro-retired-model.d.ts +62 -0
- package/dist/backend/kiro-retired-model.js +160 -0
- package/dist/backend/kiro-retired-model.js.map +1 -0
- package/dist/backend/kiro.d.ts +71 -2
- package/dist/backend/kiro.js +352 -11
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +59 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-signin-guide.d.ts +1 -0
- package/dist/backend-signin-guide.js +9 -0
- package/dist/backend-signin-guide.js.map +1 -0
- package/dist/backend-signin-pending.d.ts +10 -0
- package/dist/backend-signin-pending.js +44 -0
- package/dist/backend-signin-pending.js.map +1 -0
- package/dist/browser-backend-signins.d.ts +56 -0
- package/dist/browser-backend-signins.js +189 -0
- package/dist/browser-backend-signins.js.map +1 -0
- package/dist/cache-ledger.d.ts +38 -2
- package/dist/cache-ledger.js +133 -8
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-prices.d.ts +2 -1
- package/dist/cache-prices.js +5 -2
- package/dist/cache-prices.js.map +1 -1
- package/dist/cache-service.d.ts +68 -0
- package/dist/cache-service.js +355 -13
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +11 -0
- package/dist/channel/adapters/discord.js +71 -14
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/mcp-tools.js +29 -2
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/tool-router.js +2 -1
- package/dist/channel/tool-router.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +11 -0
- package/dist/classic-channel-manager.js +39 -1
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +21 -2
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +7 -1
- package/dist/config-validator.js +53 -10
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +19 -0
- package/dist/config.js +31 -1
- package/dist/config.js.map +1 -1
- package/dist/cpu-quota.d.ts +23 -0
- package/dist/cpu-quota.js +86 -0
- package/dist/cpu-quota.js.map +1 -0
- package/dist/daemon.d.ts +23 -0
- package/dist/daemon.js +106 -7
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +20 -6
- package/dist/dashboard-permissions.js +58 -9
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/doctor.js +2 -1
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-manager.d.ts +72 -0
- package/dist/fleet-manager.js +507 -89
- package/dist/fleet-manager.js.map +1 -1
- package/dist/forged-envelope-scan.d.ts +9 -0
- package/dist/forged-envelope-scan.js +30 -5
- package/dist/forged-envelope-scan.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +5 -2
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +14 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +24 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +24 -1
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +37 -9
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +44 -11
- package/dist/instance-config-impact.js +10 -5
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +19 -0
- package/dist/instance-lifecycle.js +55 -12
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/kiro-db-reader.d.ts +5 -0
- package/dist/kiro-db-reader.js +18 -0
- package/dist/kiro-db-reader.js.map +1 -1
- package/dist/kiro-engine-status.d.ts +2 -0
- package/dist/kiro-engine-status.js +9 -0
- package/dist/kiro-engine-status.js.map +1 -1
- package/dist/kiro-migrate.d.ts +49 -0
- package/dist/kiro-migrate.js +105 -0
- package/dist/kiro-migrate.js.map +1 -0
- package/dist/kiro-transcript-lane.d.ts +2 -0
- package/dist/kiro-transcript-lane.js.map +1 -1
- package/dist/kiro-transcript-worker.js +1 -0
- package/dist/kiro-transcript-worker.js.map +1 -1
- package/dist/kiro-tui-forensic.d.ts +7 -0
- package/dist/kiro-tui-forensic.js +110 -0
- package/dist/kiro-tui-forensic.js.map +1 -0
- package/dist/kiro-usage-run.d.ts +7 -0
- package/dist/kiro-usage-run.js +39 -0
- package/dist/kiro-usage-run.js.map +1 -0
- package/dist/kiro-usage-scan.d.ts +49 -0
- package/dist/kiro-usage-scan.js +223 -0
- package/dist/kiro-usage-scan.js.map +1 -0
- package/dist/kiro-usage-worker.d.ts +1 -0
- package/dist/kiro-usage-worker.js +10 -0
- package/dist/kiro-usage-worker.js.map +1 -0
- package/dist/kiro-usage.d.ts +58 -0
- package/dist/kiro-usage.js +310 -0
- package/dist/kiro-usage.js.map +1 -0
- package/dist/locale.js +88 -8
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +1 -1
- package/dist/log-service.js.map +1 -1
- package/dist/login-url.d.ts +4 -0
- package/dist/login-url.js +22 -0
- package/dist/login-url.js.map +1 -0
- package/dist/needs-you-hub.d.ts +2 -1
- package/dist/needs-you-hub.js +1 -1
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +8 -2
- package/dist/needs-you.js +6 -0
- package/dist/needs-you.js.map +1 -1
- package/dist/notice-delivery.d.ts +16 -0
- package/dist/notice-delivery.js +35 -0
- package/dist/notice-delivery.js.map +1 -0
- package/dist/office-share-page.d.ts +16 -0
- package/dist/office-share-page.js +85 -0
- package/dist/office-share-page.js.map +1 -0
- package/dist/office-share-service.d.ts +91 -0
- package/dist/office-share-service.js +176 -0
- package/dist/office-share-service.js.map +1 -0
- package/dist/office-share.d.ts +258 -0
- package/dist/office-share.js +549 -0
- package/dist/office-share.js.map +1 -0
- package/dist/opencode-usage-scan.d.ts +28 -0
- package/dist/opencode-usage-scan.js +92 -0
- package/dist/opencode-usage-scan.js.map +1 -0
- package/dist/opencode-usage-worker.d.ts +1 -0
- package/dist/opencode-usage-worker.js +10 -0
- package/dist/opencode-usage-worker.js.map +1 -0
- package/dist/outbound-handlers.js +22 -2
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +26 -2
- package/dist/outbound-schemas.js +27 -2
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +7 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart-api.js +13 -2
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.js +2 -1
- package/dist/quickstart.js.map +1 -1
- package/dist/remote-card-answer.d.ts +83 -0
- package/dist/remote-card-answer.js +208 -0
- package/dist/remote-card-answer.js.map +1 -0
- package/dist/reply-triggers.d.ts +2 -0
- package/dist/reply-triggers.js +3 -0
- package/dist/reply-triggers.js.map +1 -0
- package/dist/settings-api.d.ts +2 -0
- package/dist/settings-api.js +41 -16
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +17 -14
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +7 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-instance-patch.js +4 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-form.d.ts +1 -1
- package/dist/setup-form.js +55 -6
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-host.d.ts +9 -0
- package/dist/setup-host.js +127 -6
- package/dist/setup-host.js.map +1 -1
- package/dist/setup-signin-assets.d.ts +2 -0
- package/dist/setup-signin-assets.js +6 -0
- package/dist/setup-signin-assets.js.map +1 -0
- package/dist/setup-wizard.js +2 -0
- package/dist/setup-wizard.js.map +1 -1
- package/dist/structured-signin-transport.d.ts +8 -0
- package/dist/structured-signin-transport.js +79 -0
- package/dist/structured-signin-transport.js.map +1 -0
- package/dist/structured-signin.d.ts +131 -0
- package/dist/structured-signin.js +388 -0
- package/dist/structured-signin.js.map +1 -0
- package/dist/tool-permissions.js +12 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.js +6 -2
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-sources.d.ts +26 -2
- package/dist/transcript-sources.js +103 -40
- package/dist/transcript-sources.js.map +1 -1
- package/dist/turn-reply-guard.d.ts +1 -1
- package/dist/turn-reply-guard.js +1 -1
- package/dist/turn-reply-guard.js.map +1 -1
- package/dist/types.d.ts +28 -8
- package/dist/ui/backend-signin.js +63 -10
- package/dist/ui/chat-strings.js +2 -2
- package/dist/ui/fleet-office-editor.js +14 -9
- package/dist/ui/fleet-office-layout.js +70 -32
- package/dist/ui/fleet-office-model.js +6 -3
- package/dist/ui/fleet-office-overview.js +167 -0
- package/dist/ui/fleet-office-pack.d.ts +7 -2
- package/dist/ui/fleet-office-pack.js +119 -15
- package/dist/ui/fleet-office-skin.js +98 -23
- package/dist/ui/fleet-office-store.js +39 -5
- package/dist/ui/fleet-office-view.js +5 -4
- package/dist/ui/fleet-office-zones.js +172 -12
- package/dist/ui/fleet-office.js +547 -186
- package/dist/ui/fleet-usage.js +19 -15
- package/dist/ui/office-share-dialog.js +145 -0
- package/dist/ui/office-share-page.js +164 -0
- package/dist/ui/panel-chat.js +8 -1
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/panel-needs.js +4 -4
- package/dist/ui/panel-settings.js +37 -11
- package/dist/ui/settings-dialogs.js +8 -1
- package/dist/ui/settings-guests.js +17 -7
- package/dist/ui/settings-model.js +14 -6
- package/dist/ui/settings-registry.js +4 -0
- package/dist/ui/settings-strings.js +16 -2
- package/dist/ui/shared/app-i18n.js +4 -2
- package/dist/ui/shared/app-shell.js +14 -6
- package/dist/ui/shared/app-stream.js +2 -1
- package/dist/ui/shared/app.css +67 -2
- package/dist/ui/shared/office/cozy.png +0 -0
- package/dist/ui/shared/side-panel.js +95 -0
- package/dist/ui/structured-signin.js +115 -0
- package/dist/usage-report.d.ts +20 -0
- package/dist/usage-report.js +54 -17
- package/dist/usage-report.js.map +1 -1
- package/dist/usage-rollup.d.ts +9 -1
- package/dist/usage-rollup.js +20 -4
- package/dist/usage-rollup.js.map +1 -1
- package/dist/web-api.d.ts +18 -0
- package/dist/web-api.js +201 -0
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +1 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-backend-login.d.ts +1 -7
- package/dist/web-backend-login.js +2 -24
- package/dist/web-backend-login.js.map +1 -1
- package/dist/web-office-acts.d.ts +173 -0
- package/dist/web-office-acts.js +285 -0
- package/dist/web-office-acts.js.map +1 -0
- package/dist/web-office-skins.d.ts +3 -2
- package/dist/web-office-skins.js +3 -2
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-office-store.js +40 -7
- package/dist/web-office-store.js.map +1 -1
- package/dist/web-settings-patch.d.ts +2 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/working-recovery.d.ts +2 -2
- package/dist/working-recovery.js +43 -8
- package/dist/working-recovery.js.map +1 -1
- package/dist/working-state-journal.d.ts +2 -0
- package/dist/working-state-journal.js +16 -1
- package/dist/working-state-journal.js.map +1 -1
- package/package.json +3 -2
- package/templates/windows-shortcuts.ps1 +155 -140
|
@@ -61,6 +61,8 @@ export interface WorkingStateEntry {
|
|
|
61
61
|
current: WorkingStateSnapshot;
|
|
62
62
|
prior: WorkingStateSnapshot | null;
|
|
63
63
|
}
|
|
64
|
+
/** Task cards describe ownership, not proof that execution was interrupted. */
|
|
65
|
+
export declare function hasInterruptedExecution(s: WorkingStateSnapshot): boolean;
|
|
64
66
|
/** Two bounded snapshots per instance: latest, plus first unconsumed interruption. */
|
|
65
67
|
export declare class WorkingStateJournal {
|
|
66
68
|
private readonly db;
|
|
@@ -44,10 +44,16 @@ function bounded(input) {
|
|
|
44
44
|
throw new Error("Working-state observation exceeds its byte budget");
|
|
45
45
|
return value;
|
|
46
46
|
}
|
|
47
|
+
/** Task cards describe ownership, not proof that execution was interrupted. */
|
|
48
|
+
export function hasInterruptedExecution(s) {
|
|
49
|
+
const turn = s.observation.turn;
|
|
50
|
+
return ["working", "stuck"].includes(s.observation.executionState ?? "")
|
|
51
|
+
&& !turn?.cancelled && !turn?.completionDelivered;
|
|
52
|
+
}
|
|
47
53
|
function notable(s) {
|
|
48
54
|
const turn = s.observation.turn;
|
|
49
55
|
return s.totalReferences > 0 || s.observation.backgroundWork === true || (!!turn && !turn.cancelled && !turn.completionDelivered)
|
|
50
|
-
|| (s
|
|
56
|
+
|| hasInterruptedExecution(s);
|
|
51
57
|
}
|
|
52
58
|
/** Two bounded snapshots per instance: latest, plus first unconsumed interruption. */
|
|
53
59
|
export class WorkingStateJournal {
|
|
@@ -91,10 +97,19 @@ export class WorkingStateJournal {
|
|
|
91
97
|
&& !(boundary && previous.current.reason !== snapshot.reason))
|
|
92
98
|
return null;
|
|
93
99
|
let prior = previous?.prior ?? null;
|
|
100
|
+
// Idle task metadata is still observable, but cannot hide later genuine
|
|
101
|
+
// work. Keep legacy-owned turns and the continuation-marker inheritance above.
|
|
102
|
+
if (prior && !hasInterruptedExecution(prior) && !prior.observation.turn && hasInterruptedExecution(snapshot))
|
|
103
|
+
prior = null;
|
|
94
104
|
if (!prior && previous?.current.managerBootId !== snapshot.managerBootId && previous && notable(previous.current))
|
|
95
105
|
prior = previous.current;
|
|
96
106
|
if (!prior && boundary && notable(snapshot))
|
|
97
107
|
prior = snapshot;
|
|
108
|
+
// A later graceful stop is authoritative: work that reached idle before
|
|
109
|
+
// it stopped was not interrupted by this stop. Marker inheritance above
|
|
110
|
+
// remains available as metadata, and durable delivery receipts are separate.
|
|
111
|
+
if (snapshot.reason === "before_stop" && snapshot.observation.executionState === "idle" && !snapshot.observation.turn)
|
|
112
|
+
prior = snapshot;
|
|
98
113
|
const revision = (previous?.revision ?? 0) + 1;
|
|
99
114
|
this.db.prepare(`INSERT INTO working_state_journal(instance_name,revision,current_json,prior_json) VALUES(?,?,?,?)
|
|
100
115
|
ON CONFLICT(instance_name) DO UPDATE SET revision=excluded.revision,current_json=excluded.current_json,prior_json=excluded.prior_json`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"working-state-journal.js","sourceRoot":"","sources":["../src/working-state-journal.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"working-state-journal.js","sourceRoot":"","sources":["../src/working-state-journal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@songsid/agend",
|
|
3
|
-
"version": "2.3.2-beta.
|
|
3
|
+
"version": "2.3.2-beta.10",
|
|
4
4
|
"description": "Multi-agent fleet daemon — run coding CLIs (Claude, Muse, Codex, OpenCode) from Discord or Telegram",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"templates/",
|
|
57
57
|
"README.md",
|
|
58
58
|
"README.zh-TW.md",
|
|
59
|
+
"THIRD_PARTY_NOTICES.md",
|
|
59
60
|
"launcher/",
|
|
60
61
|
"scripts/preinstall-guard.cjs"
|
|
61
62
|
],
|
|
@@ -74,7 +75,7 @@
|
|
|
74
75
|
"smol-toml": "1.9.0",
|
|
75
76
|
"undici": "6.29.1",
|
|
76
77
|
"yaml": "^2.9.0",
|
|
77
|
-
"zod": "^4.
|
|
78
|
+
"zod": "^4.6.6"
|
|
78
79
|
},
|
|
79
80
|
"optionalDependencies": {
|
|
80
81
|
"@songsid/agend-node-darwin-arm64": "22.23.4",
|
|
@@ -3,179 +3,194 @@
|
|
|
3
3
|
# (tests/windows-shortcuts-cli-1853.test.ts 檢查):改的時候兩邊一起改。
|
|
4
4
|
|
|
5
5
|
$WSL_COMMAND_FN = @'
|
|
6
|
+
function Invoke-BoundedWsl {
|
|
7
|
+
param([string[]]$Arguments, [int]$TimeoutSeconds = 30)
|
|
8
|
+
$sep = [array]::IndexOf($Arguments, '--')
|
|
9
|
+
if ($sep -ge 0 -and $Arguments.Length -gt ($sep + 1) -and $Arguments[$sep + 1] -eq 'bash') {
|
|
10
|
+
$Arguments = @($Arguments[0..$sep]) + @('timeout', '--signal=TERM', '--kill-after=2s', [string]([Math]::Max(1, $TimeoutSeconds - 5))) + @($Arguments[($sep + 1)..($Arguments.Length - 1)])
|
|
11
|
+
}
|
|
12
|
+
$p = New-Object Diagnostics.Process
|
|
13
|
+
$p.StartInfo.FileName = 'wsl.exe'
|
|
14
|
+
$p.StartInfo.Arguments = (@($Arguments | ForEach-Object { if ($_ -match '[\s"]') { '"' + ($_ -replace '"', '\"') + '"' } else { $_ } }) -join ' ')
|
|
15
|
+
$p.StartInfo.UseShellExecute = $false; $p.StartInfo.CreateNoWindow = $true
|
|
16
|
+
$p.StartInfo.StandardOutputEncoding = [Text.Encoding]::UTF8; $p.StartInfo.StandardErrorEncoding = [Text.Encoding]::UTF8
|
|
17
|
+
$p.StartInfo.RedirectStandardOutput = $true; $p.StartInfo.RedirectStandardError = $true; $p.StartInfo.RedirectStandardInput = $true
|
|
18
|
+
try {
|
|
19
|
+
$null = $p.Start(); $p.StandardInput.Close()
|
|
20
|
+
$out = $p.StandardOutput.ReadToEndAsync(); $err = $p.StandardError.ReadToEndAsync()
|
|
21
|
+
if (-not $p.WaitForExit($TimeoutSeconds * 1000)) {
|
|
22
|
+
$p.Kill(); $null = $p.WaitForExit(10000)
|
|
23
|
+
return @{Code=124;Text='WSL timed out; check it before retrying.'}
|
|
24
|
+
}
|
|
25
|
+
if (-not $out.Wait(1000) -or -not $err.Wait(1000)) { return @{Code=1;Text='WSL output did not close.'} }
|
|
26
|
+
$text = $out.Result + $err.Result
|
|
27
|
+
if ($text.Length -gt 1MB) { return @{Code=1;Text='WSL output exceeded its limit.'} }
|
|
28
|
+
return @{Code=$p.ExitCode;Text=$text}
|
|
29
|
+
} catch { return @{Code=-1;Text=[string]$_} }
|
|
30
|
+
finally { $p.Dispose() }
|
|
31
|
+
}
|
|
6
32
|
function Get-WslAgendCommand([string]$command) {
|
|
7
|
-
|
|
33
|
+
return ('export PATH=$HOME/.local/bin:$PATH; source $HOME/.nvm/nvm.sh 2>/dev/null; ' + $command)
|
|
8
34
|
}
|
|
9
|
-
# 放進 PowerShell 文字裡的值(Linux、使用者名稱)一律用這個轉成字面字串:名稱裡的單引號(例如 o'neil)不會讓產生的
|
|
10
|
-
# 腳本或貼上的指令壞掉(#2260 審查)。印給人看的指令,名稱沒有特殊字元時維持原樣、不加引號。
|
|
11
35
|
function ConvertTo-PsLiteral([string]$value) { return ("'" + ($value -replace "'", "''") + "'") }
|
|
12
36
|
function ConvertTo-PsArgument([string]$value) { if ($value -match '^[\w.-]+$') { return $value } else { return (ConvertTo-PsLiteral $value) } }
|
|
13
37
|
function Get-AgendStartHint([string]$distro, [string]$user) {
|
|
14
|
-
|
|
38
|
+
return ("wsl -d {0} -u {1} -- bash -lc '{2}'" -f (ConvertTo-PsArgument $distro), (ConvertTo-PsArgument $user), (Get-WslAgendCommand 'agend start'))
|
|
15
39
|
}
|
|
16
40
|
'@
|
|
17
41
|
. ([scriptblock]::Create($WSL_COMMAND_FN))
|
|
18
|
-
|
|
19
42
|
$DASHBOARD_OPENER_FN = @'
|
|
20
43
|
function Get-DashboardSignIn([string]$text) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
function Invoke-OpenDashboard([string]$distro, [string]$user = 'root', [switch]$Wait) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
44
|
+
$url = [regex]::Match($text, 'Sign-in page:\s*(https?://\S+)')
|
|
45
|
+
$code = [regex]::Match($text, 'Code:\s*([A-Z2-7]{4}-?[A-Z2-7]{4})\b')
|
|
46
|
+
if (-not $url.Success -or -not $code.Success) { return $null }
|
|
47
|
+
return @{ Url = $url.Groups[1].Value; Code = $code.Groups[1].Value }
|
|
48
|
+
}
|
|
49
|
+
function Invoke-OpenDashboard([string]$distro, [string]$user = 'root', [switch]$Wait, [string]$BackendSignins = '') {
|
|
50
|
+
$command = 'agend web --code'
|
|
51
|
+
if ($BackendSignins) {
|
|
52
|
+
if ($BackendSignins -cnotmatch '^(kiro-cli|claude-code|codex|antigravity)(,(kiro-cli|claude-code|codex|antigravity)){0,3}\z') { throw 'Invalid backend selection' }
|
|
53
|
+
$command += ' --backend-signins ' + $BackendSignins
|
|
54
|
+
}
|
|
55
|
+
$text = ''; $exit = 1
|
|
56
|
+
$prevEAP = $ErrorActionPreference
|
|
57
|
+
try {
|
|
58
|
+
$ErrorActionPreference = 'Continue'
|
|
59
|
+
$r = Invoke-BoundedWsl -Arguments @('-d', $distro, '-u', $user, '--', 'bash', '-lc', (Get-WslAgendCommand $command))
|
|
60
|
+
$text = $r.Text; $exit = $r.Code
|
|
61
|
+
} catch {
|
|
62
|
+
$text = "$_"; $exit = 1
|
|
63
|
+
} finally {
|
|
64
|
+
$ErrorActionPreference = $prevEAP
|
|
65
|
+
}
|
|
66
|
+
$signIn = if ($exit -eq 0) { Get-DashboardSignIn $text } else { $null }
|
|
67
|
+
if (-not $signIn) {
|
|
68
|
+
Write-Host " [!!] 現在打不開 AgEnD 儀表板:AgEnD 可能還沒啟動。" -ForegroundColor Yellow
|
|
69
|
+
Write-Host (" 稍等一下再試一次;或在 PowerShell 執行:" + (Get-AgendStartHint $distro $user))
|
|
70
|
+
if ($Wait) { Read-Host "按 Enter 關閉" }
|
|
71
|
+
return $false
|
|
72
|
+
}
|
|
73
|
+
$copied = $false; try { Set-Clipboard -Value $signIn.Code; $copied = $true } catch { }
|
|
74
|
+
$opened = $false; try { Start-Process $signIn.Url; $opened = $true } catch { }
|
|
75
|
+
$spaced = ($signIn.Code.ToCharArray() | ForEach-Object { [string]$_ }) -join ' '
|
|
76
|
+
Write-Host ""
|
|
77
|
+
Write-Host (" ┌──────────────────────────────────────┐") -ForegroundColor Green
|
|
78
|
+
Write-Host (" │ 儀表板登入碼: " + $spaced + " │") -ForegroundColor Green
|
|
79
|
+
Write-Host (" └──────────────────────────────────────┘") -ForegroundColor Green
|
|
80
|
+
if ($opened) { Write-Host " [OK] 登入頁已在瀏覽器打開。" -ForegroundColor Green }
|
|
81
|
+
Write-Host (" 登入頁網址:" + $signIn.Url)
|
|
82
|
+
if ($copied) { Write-Host " [OK] 登入碼已複製:在登入頁的輸入框按 Ctrl+V。這組登入碼只能用一次,幾分鐘內有效。" -ForegroundColor Green }
|
|
83
|
+
else { Write-Host " 在登入頁輸入上面的登入碼。這組登入碼只能用一次,幾分鐘內有效。" }
|
|
84
|
+
if ($Wait) { Read-Host "按 Enter 關閉" }
|
|
85
|
+
return $true
|
|
60
86
|
}
|
|
61
87
|
'@
|
|
62
88
|
. ([scriptblock]::Create($DASHBOARD_OPENER_FN))
|
|
63
|
-
|
|
64
|
-
# 「AgEnD 重新啟動」捷徑(#1853,使用者 2026-10-20 核准):先問,預設不重啟;確定才在安裝時記下的 Linux 和使用者裡執行
|
|
65
|
-
# agend restart,接著顯示 agend status,等你按 Enter。WSL 或 AgEnD 不在時直接說明;絕不執行 wsl --shutdown。
|
|
66
|
-
# 這段函式的文字同時是捷徑執行的腳本(和儀表板捷徑一樣,安裝程式與捷徑共用同一份)。
|
|
67
89
|
$RESTART_FN = @'
|
|
68
90
|
function Invoke-AgendInWsl([string]$distro, [string]$user, [string]$command) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
91
|
+
$prevEAP = $ErrorActionPreference; $prevEnc = [Console]::OutputEncoding
|
|
92
|
+
try {
|
|
93
|
+
$ErrorActionPreference = 'Continue'
|
|
94
|
+
try { [Console]::OutputEncoding = [Text.Encoding]::UTF8 } catch { }
|
|
95
|
+
$limit = if ($command -match '^agend (restart|start)( |$)') { 360 } else { 30 }
|
|
96
|
+
return (Invoke-BoundedWsl -TimeoutSeconds $limit -Arguments @('-d', $distro, '-u', $user, '--', 'bash', '-lc', (Get-WslAgendCommand $command)))
|
|
97
|
+
} catch {
|
|
98
|
+
return @{ Code = -1; Text = "$_" }
|
|
99
|
+
} finally {
|
|
100
|
+
$ErrorActionPreference = $prevEAP
|
|
101
|
+
try { [Console]::OutputEncoding = $prevEnc } catch { }
|
|
102
|
+
}
|
|
82
103
|
}
|
|
83
104
|
function Invoke-RestartAgend([string]$distro, [string]$user, [switch]$Wait, [int]$SettleSeconds = 3) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return $result
|
|
105
|
+
Write-Host ""
|
|
106
|
+
$answer = Read-Host " 確定要重啟 AgEnD 嗎?所有 agent 會重新啟動,正在進行的工作會中斷。(y/N)"
|
|
107
|
+
if (([string]$answer) -notmatch '^\s*[yY]\s*$') {
|
|
108
|
+
Write-Host " 沒有重啟。"
|
|
109
|
+
if ($Wait) { $null = Read-Host "按 Enter 關閉" }
|
|
110
|
+
return 'cancelled'
|
|
111
|
+
}
|
|
112
|
+
$r = Invoke-AgendInWsl $distro $user 'agend restart'
|
|
113
|
+
$result = 'restarted'
|
|
114
|
+
if ($r.Code -eq 0) {
|
|
115
|
+
Write-Host " [OK] AgEnD 正在重新啟動。" -ForegroundColor Green
|
|
116
|
+
} else {
|
|
117
|
+
$result = 'failed'
|
|
118
|
+
if ($r.Code -eq -1) { Write-Host " [!!] 找不到 WSL(wsl.exe),所以沒有重啟。" -ForegroundColor Yellow }
|
|
119
|
+
elseif ($r.Text -match 'Fleet not running') { Write-Host (" [!!] AgEnD 沒有在執行,所以沒有可以重啟的。要啟動它:" + (Get-AgendStartHint $distro $user)) -ForegroundColor Yellow }
|
|
120
|
+
elseif ($r.Text -match 'command not found|agend: not found|no such file') { Write-Host (" [!!] 在 {0} 裡找不到 AgEnD(agend 指令),所以沒有重啟。" -f $distro) -ForegroundColor Yellow }
|
|
121
|
+
else { Write-Host (" [!!] 沒有重啟成功:{0} 不存在、WSL 沒有啟動,或 AgEnD 回報了錯誤。" -f $distro) -ForegroundColor Yellow }
|
|
122
|
+
if ($r.Text.Trim()) { Write-Host (" " + ($r.Text.Trim() -replace "`r?`n", "`n ")) }
|
|
123
|
+
}
|
|
124
|
+
if ($result -eq 'restarted') {
|
|
125
|
+
Start-Sleep -Seconds $SettleSeconds
|
|
126
|
+
Write-Host ""
|
|
127
|
+
$s = Invoke-AgendInWsl $distro $user 'agend status'
|
|
128
|
+
if ($s.Text.Trim()) { Write-Host (" " + ($s.Text.Trim() -replace "`r?`n", "`n ")) }
|
|
129
|
+
}
|
|
130
|
+
if ($Wait) { $null = Read-Host "按 Enter 關閉" }
|
|
131
|
+
return $result
|
|
112
132
|
}
|
|
113
133
|
'@
|
|
114
134
|
. ([scriptblock]::Create($RESTART_FN))
|
|
115
|
-
|
|
116
|
-
# 捷徑執行的腳本:共用的函式加上一行呼叫(UTF-8 有 BOM:Windows PowerShell 5.1 才會正確顯示中文)。Linux 與使用者是安裝時記下的。
|
|
117
|
-
# 捷徑腳本印出的第一行:它要打開的 Linux 和使用者,指錯了一眼就看得出來。
|
|
118
135
|
function Get-ShortcutTargetLine([string]$distro, [string]$user) {
|
|
119
|
-
|
|
136
|
+
return ('Write-Host ("AgEnD(Linux:{0},使用者:{1})" -f ' + (ConvertTo-PsLiteral $distro) + ', ' + (ConvertTo-PsLiteral $user) + ')')
|
|
120
137
|
}
|
|
121
138
|
function Get-DashboardOpenerScript([string]$distro, [string]$user) {
|
|
122
|
-
|
|
139
|
+
return ("# AgEnD 儀表板(AgEnD 安裝程式建立)`n" + (Get-ShortcutTargetLine $distro $user) + "`n" + $WSL_COMMAND_FN + "`n" + $DASHBOARD_OPENER_FN + "`n" + ("Invoke-OpenDashboard {0} {1} -Wait | Out-Null" -f (ConvertTo-PsLiteral $distro), (ConvertTo-PsLiteral $user)) + "`n")
|
|
123
140
|
}
|
|
124
141
|
function Get-RestartScript([string]$distro, [string]$user) {
|
|
125
|
-
|
|
142
|
+
return ("# AgEnD 重新啟動(AgEnD 安裝程式建立)`n" + (Get-ShortcutTargetLine $distro $user) + "`n" + $WSL_COMMAND_FN + "`n" + $RESTART_FN + "`n" + ("Invoke-RestartAgend {0} {1} -Wait | Out-Null" -f (ConvertTo-PsLiteral $distro), (ConvertTo-PsLiteral $user)) + "`n")
|
|
126
143
|
}
|
|
127
|
-
# 安裝時記下的 Linux 與使用者(%LOCALAPPDATA%\AgEnD\install.json):捷徑、重新執行安裝指令時的快速路徑都讀它。
|
|
128
144
|
function Get-AgendShortcutDir { return (Join-Path $env:LOCALAPPDATA 'AgEnD') }
|
|
129
145
|
function Read-InstallRecord {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
# install.json 已經指向另一個 Linux 或使用者時回傳那筆紀錄(例如 AgEnD 專用的 Linux 和原本的 Ubuntu),否則 $null。
|
|
137
|
-
# 捷徑絕不悄悄改指向:agend shortcuts 遇到這種情況會先問。
|
|
146
|
+
try {
|
|
147
|
+
$r = Get-Content -Raw -LiteralPath (Join-Path (Get-AgendShortcutDir) 'install.json') -ErrorAction Stop | ConvertFrom-Json
|
|
148
|
+
if ($r.distro -and $r.user) { return @{ Distro = [string]$r.distro; User = [string]$r.user } }
|
|
149
|
+
} catch { }
|
|
150
|
+
return $null
|
|
151
|
+
}
|
|
138
152
|
function Get-InstallRecordConflict([string]$distro, [string]$user) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return $null
|
|
153
|
+
$record = Read-InstallRecord
|
|
154
|
+
if ($record -and ($record.Distro -ne $distro -or $record.User -cne $user)) { return $record }
|
|
155
|
+
return $null
|
|
143
156
|
}
|
|
144
|
-
# 真正寫入前再讀一次:詢問時看到的是 $seen($null:當時沒有衝突)。現在沒有衝突,或衝突的還是同一個,才可以寫;
|
|
145
|
-
# 在等回答的時候被別的安裝程式或終端機改掉了,就不寫(#2279 審查)。
|
|
146
157
|
function Test-InstallRecordAsSeen($seen, [string]$distro, [string]$user) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
158
|
+
$now = Get-InstallRecordConflict $distro $user
|
|
159
|
+
if ($null -eq $now) { return $true }
|
|
160
|
+
return ($null -ne $seen -and $now.Distro -eq $seen.Distro -and $now.User -ceq $seen.User)
|
|
161
|
+
}
|
|
162
|
+
function Get-ShortcutCommand([string]$file) {
|
|
163
|
+
$ps = Join-Path $env:SystemRoot 'System32\WindowsPowerShell\v1.0\powershell.exe'
|
|
164
|
+
$a = '-NoProfile -ExecutionPolicy Bypass -File "{0}"' -f $file
|
|
165
|
+
$wt = $null; if ($env:AGEND_INSTALL_TERMINAL -ne 'conhost') { $wt = Get-Command wt.exe -CommandType Application -ErrorAction SilentlyContinue | Select-Object -First 1 }
|
|
166
|
+
if ($wt) { return @{ Target = $wt.Source; Arguments = '-w new "{0}" {1}' -f $ps, ($a -replace ';', '\;') } }
|
|
167
|
+
return @{ Target = $ps; Arguments = $a }
|
|
150
168
|
}
|
|
151
|
-
# 一個桌面捷徑:腳本寫在 %LOCALAPPDATA%\AgEnD,捷徑以 Windows PowerShell 執行它(-ExecutionPolicy Bypass 只對那個行程)。
|
|
152
169
|
function New-AgendShortcut([string]$name, [string]$scriptName, [string]$scriptText, [string]$description) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
# 呼叫端用 Write-ShortcutResult 分清楚兩個都好、只好一個、都沒好(#2252 審查)。兩個都好才在 WSL 裡留記號(agend update
|
|
168
|
-
# 之後的提示就不會再出現)。不是 Windows 時回傳空陣列。
|
|
170
|
+
$dir = Get-AgendShortcutDir
|
|
171
|
+
New-Item -ItemType Directory -Path $dir -Force | Out-Null
|
|
172
|
+
$file = Join-Path $dir $scriptName
|
|
173
|
+
[IO.File]::WriteAllText($file, $scriptText, (New-Object System.Text.UTF8Encoding $true))
|
|
174
|
+
$lnk = Join-Path ([Environment]::GetFolderPath('Desktop')) ($name + '.lnk')
|
|
175
|
+
$shell = New-Object -ComObject WScript.Shell
|
|
176
|
+
$sc = $shell.CreateShortcut($lnk)
|
|
177
|
+
$cmd = Get-ShortcutCommand $file
|
|
178
|
+
$sc.TargetPath = $cmd.Target
|
|
179
|
+
$sc.Arguments = $cmd.Arguments
|
|
180
|
+
$sc.Description = $description
|
|
181
|
+
$sc.Save()
|
|
182
|
+
return $lnk
|
|
183
|
+
}
|
|
169
184
|
function Install-AgendShortcuts([string]$distro, [string]$user) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
185
|
+
if (-not $script:OnWindows) { return @() }
|
|
186
|
+
$made = @()
|
|
187
|
+
try { $made += New-AgendShortcut 'AgEnD 儀表板' 'open-dashboard.ps1' (Get-DashboardOpenerScript $distro $user) 'AgEnD 網頁儀表板(自動帶入登入碼)' } catch { }
|
|
188
|
+
try { $made += New-AgendShortcut 'AgEnD 重新啟動' 'restart-agend.ps1' (Get-RestartScript $distro $user) '重新啟動 AgEnD(會先詢問)' } catch { }
|
|
189
|
+
try {
|
|
190
|
+
New-Item -ItemType Directory -Path (Get-AgendShortcutDir) -Force | Out-Null
|
|
191
|
+
$record = @{ distro = $distro; user = $user } | ConvertTo-Json -Compress
|
|
192
|
+
[IO.File]::WriteAllText((Join-Path (Get-AgendShortcutDir) 'install.json'), $record, (New-Object System.Text.UTF8Encoding $false))
|
|
193
|
+
if ($made.Count -eq 2) { $null = Invoke-AgendInWsl $distro $user 'set -f; IFS=; d=${AGEND_HOME:-$HOME/.agend}; umask 077; mkdir -p -m 700 -- $d && date -u +%FT%TZ > $d/windows-shortcuts' }
|
|
194
|
+
} catch { }
|
|
180
195
|
return $made
|
|
181
196
|
}
|