@songsid/agend 2.1.4-beta.3 → 2.1.4-beta.31

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.
Files changed (146) hide show
  1. package/README.md +1 -1
  2. package/README.zh-TW.md +1 -1
  3. package/dist/agent-endpoint.js +1 -1
  4. package/dist/agent-endpoint.js.map +1 -1
  5. package/dist/backend/antigravity.d.ts +9 -5
  6. package/dist/backend/antigravity.js +155 -30
  7. package/dist/backend/antigravity.js.map +1 -1
  8. package/dist/backend/claude-code.d.ts +33 -21
  9. package/dist/backend/claude-code.js +103 -27
  10. package/dist/backend/claude-code.js.map +1 -1
  11. package/dist/backend/codex.d.ts +17 -0
  12. package/dist/backend/codex.js +123 -8
  13. package/dist/backend/codex.js.map +1 -1
  14. package/dist/backend/gemini-cli.js +2 -2
  15. package/dist/backend/gemini-cli.js.map +1 -1
  16. package/dist/backend/grok.js +2 -2
  17. package/dist/backend/grok.js.map +1 -1
  18. package/dist/backend/kiro.d.ts +1 -0
  19. package/dist/backend/kiro.js +17 -3
  20. package/dist/backend/kiro.js.map +1 -1
  21. package/dist/backend/opencode.d.ts +27 -11
  22. package/dist/backend/opencode.js +50 -39
  23. package/dist/backend/opencode.js.map +1 -1
  24. package/dist/backend/types.d.ts +20 -0
  25. package/dist/backend/types.js +12 -1
  26. package/dist/backend/types.js.map +1 -1
  27. package/dist/channel/adapters/discord.js +106 -19
  28. package/dist/channel/adapters/discord.js.map +1 -1
  29. package/dist/channel/adapters/telegram.js +5 -3
  30. package/dist/channel/adapters/telegram.js.map +1 -1
  31. package/dist/channel/agy-mcp-launcher.d.ts +2 -0
  32. package/dist/channel/agy-mcp-launcher.js +28 -0
  33. package/dist/channel/agy-mcp-launcher.js.map +1 -0
  34. package/dist/channel/mcp-server.js +6 -20
  35. package/dist/channel/mcp-server.js.map +1 -1
  36. package/dist/channel/mcp-tools.js +4 -2
  37. package/dist/channel/mcp-tools.js.map +1 -1
  38. package/dist/channel/types.d.ts +1 -1
  39. package/dist/classic-channel-manager.d.ts +40 -3
  40. package/dist/classic-channel-manager.js +218 -31
  41. package/dist/classic-channel-manager.js.map +1 -1
  42. package/dist/cli.js +148 -33
  43. package/dist/cli.js.map +1 -1
  44. package/dist/completion-install.d.ts +70 -0
  45. package/dist/completion-install.js +152 -0
  46. package/dist/completion-install.js.map +1 -0
  47. package/dist/completion.d.ts +7 -1
  48. package/dist/completion.js +14 -4
  49. package/dist/completion.js.map +1 -1
  50. package/dist/config-validator.js +38 -7
  51. package/dist/config-validator.js.map +1 -1
  52. package/dist/config.d.ts +2 -0
  53. package/dist/config.js +10 -1
  54. package/dist/config.js.map +1 -1
  55. package/dist/daemon.d.ts +177 -5
  56. package/dist/daemon.js +771 -99
  57. package/dist/daemon.js.map +1 -1
  58. package/dist/doctor.d.ts +26 -0
  59. package/dist/doctor.js +216 -0
  60. package/dist/doctor.js.map +1 -0
  61. package/dist/fleet-context.d.ts +47 -0
  62. package/dist/fleet-manager.d.ts +251 -10
  63. package/dist/fleet-manager.js +2059 -387
  64. package/dist/fleet-manager.js.map +1 -1
  65. package/dist/fleet-yaml-slim.d.ts +10 -0
  66. package/dist/fleet-yaml-slim.js +59 -0
  67. package/dist/fleet-yaml-slim.js.map +1 -0
  68. package/dist/general-knowledge/skills/backend-providers/SKILL.md +114 -0
  69. package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +3 -1
  70. package/dist/general-knowledge/skills/delegation-playbook/SKILL.md +52 -0
  71. package/dist/general-knowledge/skills/development-workflow/SKILL.md +28 -0
  72. package/dist/general-knowledge/skills/fleet-config/SKILL.md +1 -0
  73. package/dist/general-knowledge/skills/fleet-health/SKILL.md +1 -0
  74. package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -0
  75. package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +1 -0
  76. package/dist/general-knowledge/skills/model-discovery/SKILL.md +64 -16
  77. package/dist/general-knowledge/skills/multi-channel/SKILL.md +1 -0
  78. package/dist/general-knowledge/skills/scheduling/SKILL.md +1 -0
  79. package/dist/general-knowledge/skills/session-management/SKILL.md +1 -0
  80. package/dist/general-knowledge/skills/tui-effort/SKILL.md +1 -0
  81. package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +30 -0
  82. package/dist/instance-lifecycle.d.ts +45 -0
  83. package/dist/instance-lifecycle.js +150 -5
  84. package/dist/instance-lifecycle.js.map +1 -1
  85. package/dist/instructions.d.ts +12 -0
  86. package/dist/instructions.js +35 -1
  87. package/dist/instructions.js.map +1 -1
  88. package/dist/locale.js +750 -288
  89. package/dist/locale.js.map +1 -1
  90. package/dist/login-flows.d.ts +85 -0
  91. package/dist/login-flows.js +159 -0
  92. package/dist/login-flows.js.map +1 -0
  93. package/dist/login-manager.d.ts +63 -0
  94. package/dist/login-manager.js +134 -0
  95. package/dist/login-manager.js.map +1 -0
  96. package/dist/outbound-handlers.d.ts +8 -0
  97. package/dist/outbound-handlers.js +44 -5
  98. package/dist/outbound-handlers.js.map +1 -1
  99. package/dist/outbound-schemas.d.ts +5 -0
  100. package/dist/outbound-schemas.js +7 -0
  101. package/dist/outbound-schemas.js.map +1 -1
  102. package/dist/quickstart.js +25 -0
  103. package/dist/quickstart.js.map +1 -1
  104. package/dist/restart-progress.d.ts +2 -0
  105. package/dist/restart-progress.js +3 -0
  106. package/dist/restart-progress.js.map +1 -1
  107. package/dist/scheduler/db.d.ts +12 -0
  108. package/dist/scheduler/db.js +59 -0
  109. package/dist/scheduler/db.js.map +1 -1
  110. package/dist/service-installer.d.ts +11 -0
  111. package/dist/service-installer.js +84 -18
  112. package/dist/service-installer.js.map +1 -1
  113. package/dist/settings-api.js +1 -1
  114. package/dist/settings-api.js.map +1 -1
  115. package/dist/setup-wizard.js +2 -2
  116. package/dist/setup-wizard.js.map +1 -1
  117. package/dist/tips.d.ts +44 -0
  118. package/dist/tips.js +355 -0
  119. package/dist/tips.js.map +1 -0
  120. package/dist/tmux-manager.d.ts +6 -0
  121. package/dist/tmux-manager.js +12 -0
  122. package/dist/tmux-manager.js.map +1 -1
  123. package/dist/tool-progress.d.ts +40 -0
  124. package/dist/tool-progress.js +289 -0
  125. package/dist/tool-progress.js.map +1 -0
  126. package/dist/topic-commands.d.ts +36 -4
  127. package/dist/topic-commands.js +322 -64
  128. package/dist/topic-commands.js.map +1 -1
  129. package/dist/transcript-monitor.d.ts +15 -2
  130. package/dist/transcript-monitor.js +63 -17
  131. package/dist/transcript-monitor.js.map +1 -1
  132. package/dist/transcript-sources.d.ts +131 -0
  133. package/dist/transcript-sources.js +580 -0
  134. package/dist/transcript-sources.js.map +1 -0
  135. package/dist/types.d.ts +11 -0
  136. package/dist/ui/dashboard.html +55 -32
  137. package/dist/ui/settings.html +120 -51
  138. package/dist/ui/view.html +23 -15
  139. package/dist/usage/providers.d.ts +7 -0
  140. package/dist/usage/providers.js +18 -1
  141. package/dist/usage/providers.js.map +1 -1
  142. package/dist/usage/usage-api.d.ts +8 -2
  143. package/dist/usage/usage-api.js +24 -3
  144. package/dist/usage/usage-api.js.map +1 -1
  145. package/dist/workflow-templates/default.md +2 -1
  146. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Per-backend remote login flows for `/login`.
3
+ *
4
+ * Every command, menu label, prompt, and success string here was verified
5
+ * against the installed CLI (`--help` output or strings extracted from the
6
+ * release binary) rather than written from memory:
7
+ * - codex: `codex login --device-auth`, success "Successfully logged in"
8
+ * - grok: `grok login --device-auth`, success "Login successful!"
9
+ * - kiro: `kiro-cli login --use-device-flow`; free/pro selector is the
10
+ * arrow-key menu "Select login method" with exactly the four
11
+ * options below; Identity Center then asks "Enter Start URL" /
12
+ * "Enter Region"; success "Logged in successfully"/"Logged in with"
13
+ * - claude: `claude auth login`, paste-back prompt "Paste code here if
14
+ * prompted", success "Login successful"/"Logged in as"
15
+ * - agy: no login subcommand — starting the TUI shows the device URL and
16
+ * code, and the main screen (ready markers) means auth completed.
17
+ *
18
+ * The login session runs in a dedicated tmux window, never in an instance
19
+ * pane, so instance delivery, pane-state detection, and progress monitors are
20
+ * untouched by design.
21
+ */
22
+ export interface AuthCheck {
23
+ /** argv of a cheap, LLM-token-free status probe (5s timeout). */
24
+ argv: string[];
25
+ /**
26
+ * Exit 0 alone is not proof for every CLI: `claude auth status` exits 0
27
+ * either way and reports {"loggedIn": true|false} — verified live.
28
+ */
29
+ validPattern?: RegExp;
30
+ }
31
+ export interface LoginFlow {
32
+ /** AgEnD backend id this flow signs in. */
33
+ backend: string;
34
+ /** Shell command started inside the dedicated login window. */
35
+ command: string;
36
+ /** Pre-check run before starting a session; valid auth asks for confirmation. */
37
+ authCheck?: AuthCheck;
38
+ /**
39
+ * The CLI's own logged-out startup screen (binary-verified strings). Matched
40
+ * only during the spawn/startup dialog phase — a CLI sitting here is an auth
41
+ * incident, not a crash and not an MCP failure.
42
+ */
43
+ loginScreenPattern?: RegExp;
44
+ /** Arrow-key selector shown by the CLI (kiro). Option N = Down×N then Enter. */
45
+ menu?: {
46
+ promptPattern: RegExp;
47
+ /** Labels in on-screen order — the order defines the Down-key count. */
48
+ options: string[];
49
+ };
50
+ /** Pane prompt that requires admin-supplied text (`/login code <text>`). */
51
+ inputPrompt?: RegExp;
52
+ /** Overrides the generic first-URL capture when the CLI prints several URLs. */
53
+ urlPattern?: RegExp;
54
+ /** One-time user code displayed next to the URL, when the CLI prints one. */
55
+ codePattern?: RegExp;
56
+ /** Pane content that proves the CLI finished signing in. */
57
+ successPattern: RegExp;
58
+ /** Hard cap for the whole login session. */
59
+ timeoutMs: number;
60
+ }
61
+ export declare const LOGIN_FLOWS: Record<string, LoginFlow>;
62
+ /** Chat-command aliases accepted by `/login <backend>`. */
63
+ export declare const LOGIN_BACKEND_ALIASES: Record<string, string>;
64
+ /**
65
+ * Extract the authorization URL and one-time code from joined pane text.
66
+ * Returns nulls until the CLI has printed them.
67
+ */
68
+ export declare function extractLoginHint(pane: string, flow: Pick<LoginFlow, "urlPattern" | "codePattern">): {
69
+ url: string | null;
70
+ code: string | null;
71
+ };
72
+ export type AuthCheckResult = "valid" | "invalid" | "unknown";
73
+ export type AuthCheckRunner = (argv: string[], timeoutMs: number) => Promise<{
74
+ code: number | null;
75
+ output: string;
76
+ }>;
77
+ /** Test seam — replaces the real process runner (pass null to restore). */
78
+ export declare function setAuthCheckRunnerForTests(run: AuthCheckRunner | null): void;
79
+ /**
80
+ * Probe whether a backend's credentials still work, without spending LLM
81
+ * tokens. "valid" gates the /login confirmation prompt; "invalid" and
82
+ * "unknown" (timeout, missing binary) both proceed straight to login — an
83
+ * uncertain check must never block a re-login the admin asked for.
84
+ */
85
+ export declare function checkAuthStatus(check: AuthCheck): Promise<AuthCheckResult>;
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Per-backend remote login flows for `/login`.
3
+ *
4
+ * Every command, menu label, prompt, and success string here was verified
5
+ * against the installed CLI (`--help` output or strings extracted from the
6
+ * release binary) rather than written from memory:
7
+ * - codex: `codex login --device-auth`, success "Successfully logged in"
8
+ * - grok: `grok login --device-auth`, success "Login successful!"
9
+ * - kiro: `kiro-cli login --use-device-flow`; free/pro selector is the
10
+ * arrow-key menu "Select login method" with exactly the four
11
+ * options below; Identity Center then asks "Enter Start URL" /
12
+ * "Enter Region"; success "Logged in successfully"/"Logged in with"
13
+ * - claude: `claude auth login`, paste-back prompt "Paste code here if
14
+ * prompted", success "Login successful"/"Logged in as"
15
+ * - agy: no login subcommand — starting the TUI shows the device URL and
16
+ * code, and the main screen (ready markers) means auth completed.
17
+ *
18
+ * The login session runs in a dedicated tmux window, never in an instance
19
+ * pane, so instance delivery, pane-state detection, and progress monitors are
20
+ * untouched by design.
21
+ */
22
+ const LOGIN_TIMEOUT_MS = 10 * 60 * 1000;
23
+ /**
24
+ * Generic https matcher. Login panes are captured with wrapped lines joined
25
+ * (`capture-pane -J`), so a long OAuth URL arrives as one logical line.
26
+ */
27
+ const GENERIC_URL = /https:\/\/[^\s"'<>\])]+/;
28
+ /**
29
+ * A device code standing on its own line (live-verified codex 0.149 output:
30
+ * "Enter this one-time code (expires in 15 minutes)\n 677A-4BGJ6").
31
+ */
32
+ const STANDALONE_DEVICE_CODE = /^\s*([A-Z0-9]{4,10}-[A-Z0-9]{4,10})\s*$/m;
33
+ export const LOGIN_FLOWS = {
34
+ "codex": {
35
+ backend: "codex",
36
+ command: "codex login --device-auth",
37
+ authCheck: { argv: ["codex", "login", "status"] },
38
+ loginScreenPattern: /Sign in with ChatGPT/,
39
+ codePattern: STANDALONE_DEVICE_CODE,
40
+ successPattern: /Successfully logged in/,
41
+ timeoutMs: LOGIN_TIMEOUT_MS,
42
+ },
43
+ "grok": {
44
+ backend: "grok",
45
+ command: "grok login --device-auth",
46
+ authCheck: { argv: ["grok", "models"] },
47
+ loginScreenPattern: /Run `grok login`/,
48
+ // Binary template is "enter code: $CODE"; the standalone form is a fallback.
49
+ codePattern: /\bcode[:\s]+([A-Z0-9][A-Z0-9-]{3,})|^\s*([A-Z0-9]{4,10}-[A-Z0-9]{4,10})\s*$/im,
50
+ successPattern: /Login successful!/,
51
+ timeoutMs: LOGIN_TIMEOUT_MS,
52
+ },
53
+ "kiro-cli": {
54
+ backend: "kiro-cli",
55
+ command: "kiro-cli login --use-device-flow",
56
+ authCheck: { argv: ["kiro-cli", "whoami", "--format", "json"] },
57
+ loginScreenPattern: /Select login method/,
58
+ menu: {
59
+ promptPattern: /Select login method/,
60
+ // Binary-verified on-screen order; "Your Organization" = Identity Center
61
+ // and is followed by the Start URL / Region text prompts below.
62
+ options: ["Builder ID", "Google", "GitHub", "Your Organization"],
63
+ },
64
+ inputPrompt: /Enter Start URL|Enter Region/,
65
+ codePattern: /Code:\s*([A-Z0-9][A-Z0-9-]{3,})/,
66
+ successPattern: /Logged in successfully|Logged in with /,
67
+ timeoutMs: LOGIN_TIMEOUT_MS,
68
+ },
69
+ "claude-code": {
70
+ backend: "claude-code",
71
+ command: "claude auth login",
72
+ authCheck: { argv: ["claude", "auth", "status"], validPattern: /"loggedIn":\s*true/ },
73
+ loginScreenPattern: /Select login method:|Sign in (?:to|with) your Anthropic account/,
74
+ inputPrompt: /Paste code here if prompted/,
75
+ successPattern: /Login successful|Logged in as/,
76
+ timeoutMs: LOGIN_TIMEOUT_MS,
77
+ },
78
+ "antigravity": {
79
+ backend: "antigravity",
80
+ command: "agy",
81
+ authCheck: { argv: ["agy", "models"] },
82
+ loginScreenPattern: /not logged into Antigravity|https:\/\/\S*google\.com\/device/i,
83
+ codePattern: STANDALONE_DEVICE_CODE,
84
+ // agy has no terminal success line — reaching the normal TUI ready screen
85
+ // (same markers as the backend's ready pattern) means auth completed.
86
+ successPattern: /\? for shortcuts|^>\s*$/m,
87
+ timeoutMs: LOGIN_TIMEOUT_MS,
88
+ },
89
+ };
90
+ /** Chat-command aliases accepted by `/login <backend>`. */
91
+ export const LOGIN_BACKEND_ALIASES = {
92
+ "claude": "claude-code",
93
+ "claude-code": "claude-code",
94
+ "codex": "codex",
95
+ "grok": "grok",
96
+ "kiro": "kiro-cli",
97
+ "kiro-cli": "kiro-cli",
98
+ "agy": "antigravity",
99
+ "antigravity": "antigravity",
100
+ // /install-cli accepts opencode too; /login keeps rejecting it (no flow).
101
+ "opencode": "opencode",
102
+ };
103
+ /**
104
+ * Extract the authorization URL and one-time code from joined pane text.
105
+ * Returns nulls until the CLI has printed them.
106
+ */
107
+ export function extractLoginHint(pane, flow) {
108
+ const urlMatch = pane.match(flow.urlPattern ?? GENERIC_URL);
109
+ // A trailing period/comma is prose punctuation, not part of the URL.
110
+ const url = urlMatch ? urlMatch[0].replace(/[.,]+$/, "") : null;
111
+ const codeMatch = flow.codePattern ? pane.match(flow.codePattern) : null;
112
+ // Alternation patterns carry several capture groups — take the one that hit.
113
+ const code = codeMatch ? codeMatch.slice(1).find(group => group !== undefined) ?? null : null;
114
+ return { url, code };
115
+ }
116
+ const AUTH_CHECK_TIMEOUT_MS = 5_000;
117
+ let authCheckRunnerOverride = null;
118
+ /** Test seam — replaces the real process runner (pass null to restore). */
119
+ export function setAuthCheckRunnerForTests(run) {
120
+ authCheckRunnerOverride = run;
121
+ }
122
+ async function runAuthCheckProcess(argv, timeoutMs) {
123
+ const { execFile } = await import("node:child_process");
124
+ return new Promise(resolve => {
125
+ execFile(argv[0], argv.slice(1), { timeout: timeoutMs, encoding: "utf8" }, (err, stdout, stderr) => {
126
+ const anyErr = err;
127
+ // A timeout kill or a spawn failure (CLI missing) has no meaningful exit
128
+ // code — that is "unknown", not "logged out".
129
+ if (anyErr && (anyErr.killed || typeof anyErr.code !== "number")) {
130
+ resolve({ code: null, output: `${stdout ?? ""}${stderr ?? ""}` });
131
+ return;
132
+ }
133
+ resolve({ code: anyErr ? anyErr.code : 0, output: `${stdout ?? ""}${stderr ?? ""}` });
134
+ });
135
+ });
136
+ }
137
+ /**
138
+ * Probe whether a backend's credentials still work, without spending LLM
139
+ * tokens. "valid" gates the /login confirmation prompt; "invalid" and
140
+ * "unknown" (timeout, missing binary) both proceed straight to login — an
141
+ * uncertain check must never block a re-login the admin asked for.
142
+ */
143
+ export async function checkAuthStatus(check) {
144
+ const run = authCheckRunnerOverride ?? runAuthCheckProcess;
145
+ try {
146
+ const { code, output } = await run(check.argv, AUTH_CHECK_TIMEOUT_MS);
147
+ if (code === null)
148
+ return "unknown";
149
+ if (code !== 0)
150
+ return "invalid";
151
+ if (check.validPattern && !check.validPattern.test(output))
152
+ return "invalid";
153
+ return "valid";
154
+ }
155
+ catch {
156
+ return "unknown";
157
+ }
158
+ }
159
+ //# sourceMappingURL=login-flows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-flows.js","sourceRoot":"","sources":["../src/login-flows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * One remote login session: a dedicated tmux window running a backend's login
3
+ * command, polled until it succeeds, fails, times out, or is cancelled.
4
+ *
5
+ * Deliberately NOT an instance pane. Credentials are per-backend (instances
6
+ * symlink or share the backend's real home), so signing in once from a clean
7
+ * window fixes every instance of that backend, and no instance delivery,
8
+ * pane-state machine, or progress monitor ever observes login output.
9
+ */
10
+ import type { Logger } from "./logger.js";
11
+ import { type LoginFlow } from "./login-flows.js";
12
+ /** The slice of TmuxManager a login session drives (injectable for tests). */
13
+ export interface LoginTmux {
14
+ createWindow(command: string, cwd: string, windowName?: string): Promise<string>;
15
+ setRemainOnExit(): Promise<void>;
16
+ capturePaneJoined(lines?: number): Promise<string>;
17
+ getPaneStatus(): Promise<{
18
+ alive: boolean;
19
+ exitCode?: number;
20
+ } | null>;
21
+ killWindow(): Promise<void>;
22
+ sendSpecialKey(key: "Enter" | "Escape" | "Up" | "Down" | "Right" | "Left" | "C-c" | "C-q"): Promise<boolean>;
23
+ pasteText(text: string, opts?: {
24
+ retryEnter?: boolean;
25
+ }): Promise<boolean>;
26
+ }
27
+ export interface LoginSessionEvents {
28
+ /** The CLI is showing its arrow-key selector — offer the options as buttons. */
29
+ onMenu(options: string[]): void | Promise<void>;
30
+ /** The authorization URL (and one-time code, when shown) is on screen. */
31
+ onAuthHint(url: string, code: string | null): void | Promise<void>;
32
+ /** The CLI is waiting for admin-supplied text (`/login code <text>`). */
33
+ onNeedInput(promptExcerpt: string): void | Promise<void>;
34
+ /** Terminal state — exactly once per session. */
35
+ onDone(result: {
36
+ ok: boolean;
37
+ detail: string;
38
+ }): void | Promise<void>;
39
+ }
40
+ export type LoginSessionState = "starting" | "menu" | "waiting" | "input" | "done";
41
+ export declare class LoginSession {
42
+ readonly flow: LoginFlow;
43
+ private readonly tmux;
44
+ private readonly events;
45
+ private readonly logger;
46
+ private readonly pollIntervalMs;
47
+ state: LoginSessionState;
48
+ private pollTimer;
49
+ private timeoutTimer;
50
+ private sentUrl;
51
+ private lastInputPrompt;
52
+ private finished;
53
+ constructor(flow: LoginFlow, tmux: LoginTmux, events: LoginSessionEvents, logger: Logger, pollIntervalMs?: number);
54
+ start(): Promise<void>;
55
+ /** Admin picked menu option N: Down×N then Enter, matching the CLI selector. */
56
+ selectMenuOption(index: number): Promise<boolean>;
57
+ /** Paste admin-supplied text (authorization code, start URL, region). */
58
+ submitInput(text: string): Promise<boolean>;
59
+ cancel(reason?: string): Promise<void>;
60
+ private schedulePoll;
61
+ private poll;
62
+ private finish;
63
+ }
@@ -0,0 +1,134 @@
1
+ import { extractLoginHint } from "./login-flows.js";
2
+ const POLL_INTERVAL_MS = 2_000;
3
+ const MENU_KEY_GAP_MS = 200;
4
+ export class LoginSession {
5
+ flow;
6
+ tmux;
7
+ events;
8
+ logger;
9
+ pollIntervalMs;
10
+ state = "starting";
11
+ pollTimer = null;
12
+ timeoutTimer = null;
13
+ sentUrl = null;
14
+ lastInputPrompt = null;
15
+ finished = false;
16
+ constructor(flow, tmux, events, logger, pollIntervalMs = POLL_INTERVAL_MS) {
17
+ this.flow = flow;
18
+ this.tmux = tmux;
19
+ this.events = events;
20
+ this.logger = logger;
21
+ this.pollIntervalMs = pollIntervalMs;
22
+ }
23
+ async start() {
24
+ // remain-on-exit keeps the dead pane (and its final output) so a CLI that
25
+ // prints "Successfully logged in" and exits is still observable; without it
26
+ // the window vanishes between polls and success is indistinguishable from a
27
+ // crash.
28
+ await this.tmux.createWindow(this.flow.command, process.env.HOME ?? "/", `agend-login-${this.flow.backend}`);
29
+ await this.tmux.setRemainOnExit();
30
+ this.timeoutTimer = setTimeout(() => {
31
+ void this.finish(false, "timeout");
32
+ }, this.flow.timeoutMs);
33
+ this.timeoutTimer.unref?.();
34
+ this.schedulePoll();
35
+ }
36
+ /** Admin picked menu option N: Down×N then Enter, matching the CLI selector. */
37
+ async selectMenuOption(index) {
38
+ if (this.state !== "menu" || !this.flow.menu)
39
+ return false;
40
+ if (!Number.isInteger(index) || index < 0 || index >= this.flow.menu.options.length)
41
+ return false;
42
+ this.state = "waiting";
43
+ for (let i = 0; i < index; i++) {
44
+ await this.tmux.sendSpecialKey("Down");
45
+ await delay(MENU_KEY_GAP_MS);
46
+ }
47
+ await this.tmux.sendSpecialKey("Enter");
48
+ return true;
49
+ }
50
+ /** Paste admin-supplied text (authorization code, start URL, region). */
51
+ async submitInput(text) {
52
+ if (this.state === "done")
53
+ return false;
54
+ // pasteText presses Enter itself; the retry Enter is for TUIs that swallow
55
+ // the first one, harmless for a line-input prompt.
56
+ const ok = await this.tmux.pasteText(text, { retryEnter: false });
57
+ if (ok && this.state === "input")
58
+ this.state = "waiting";
59
+ return ok;
60
+ }
61
+ async cancel(reason = "cancelled") {
62
+ await this.finish(false, reason);
63
+ }
64
+ schedulePoll() {
65
+ if (this.finished)
66
+ return;
67
+ this.pollTimer = setTimeout(() => {
68
+ void this.poll().catch(err => {
69
+ this.logger.warn({ err: err.message }, "login poll error");
70
+ this.schedulePoll();
71
+ });
72
+ }, this.pollIntervalMs);
73
+ this.pollTimer.unref?.();
74
+ }
75
+ async poll() {
76
+ if (this.finished)
77
+ return;
78
+ const pane = await this.tmux.capturePaneJoined(200).catch(() => "");
79
+ // Success first: the pane may show the success line with the process
80
+ // already gone (remain-on-exit), and success must win over "exited".
81
+ if (this.flow.successPattern.test(pane)) {
82
+ await this.finish(true, "success");
83
+ return;
84
+ }
85
+ const status = await this.tmux.getPaneStatus().catch(() => null);
86
+ if (status && !status.alive) {
87
+ // Exit code 0 without the success line still counts as success (some
88
+ // CLIs clear the screen on exit); non-zero is a failure with evidence.
89
+ const tail = pane.trim().split("\n").slice(-3).join(" / ").slice(0, 300);
90
+ await this.finish(status.exitCode === 0, status.exitCode === 0
91
+ ? "clean exit"
92
+ : `CLI exited with code ${status.exitCode}${tail ? ` — ${tail}` : ""}`);
93
+ return;
94
+ }
95
+ if (this.flow.menu && this.state === "starting" && this.flow.menu.promptPattern.test(pane)) {
96
+ this.state = "menu";
97
+ await this.events.onMenu(this.flow.menu.options);
98
+ }
99
+ const hint = extractLoginHint(pane, this.flow);
100
+ if (hint.url && hint.url !== this.sentUrl) {
101
+ this.sentUrl = hint.url;
102
+ if (this.state === "starting")
103
+ this.state = "waiting";
104
+ await this.events.onAuthHint(hint.url, hint.code);
105
+ }
106
+ if (this.flow.inputPrompt) {
107
+ const match = pane.match(this.flow.inputPrompt);
108
+ // Notify once per distinct prompt: "Enter Start URL" then "Enter Region"
109
+ // are two prompts, but a persistent "Paste code here" line is one.
110
+ if (match && match[0] !== this.lastInputPrompt) {
111
+ this.lastInputPrompt = match[0];
112
+ this.state = "input";
113
+ await this.events.onNeedInput(match[0]);
114
+ }
115
+ }
116
+ this.schedulePoll();
117
+ }
118
+ async finish(ok, detail) {
119
+ if (this.finished)
120
+ return;
121
+ this.finished = true;
122
+ this.state = "done";
123
+ if (this.pollTimer)
124
+ clearTimeout(this.pollTimer);
125
+ if (this.timeoutTimer)
126
+ clearTimeout(this.timeoutTimer);
127
+ await this.tmux.killWindow().catch(err => this.logger.warn({ err: err.message }, "login window cleanup failed"));
128
+ await this.events.onDone({ ok, detail });
129
+ }
130
+ }
131
+ function delay(ms) {
132
+ return new Promise(resolve => setTimeout(resolve, ms));
133
+ }
134
+ //# sourceMappingURL=login-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-manager.js","sourceRoot":"","sources":["../src/login-manager.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,8 @@ export interface OutboundContext {
22
22
  name: string;
23
23
  backend?: string;
24
24
  model?: string;
25
+ displayName?: string;
26
+ description?: string;
25
27
  channelId: string;
26
28
  adapterId?: string;
27
29
  }[];
@@ -50,6 +52,8 @@ export interface OutboundContext {
50
52
  clearCancelButton?(instanceName: string): void;
51
53
  clearCancelButtonByCorrelation?(correlationId: string): void;
52
54
  getInstanceExecutionState?(name: string): "idle" | "working" | "stuck" | "paused" | null;
55
+ /** Subscription provider IDs used by running or paused fleet/Classic instances. */
56
+ getActiveUsageProviderIds?(): ReadonlySet<string>;
53
57
  /** Effective process state used to annotate cross-instance delivery results. */
54
58
  getInstanceStatus?(name: string): "running" | "paused" | "stopped" | "crashed";
55
59
  resolveInstanceModel?(name: string): {
@@ -58,6 +62,10 @@ export interface OutboundContext {
58
62
  display: string;
59
63
  reason?: string;
60
64
  };
65
+ listModelCatalog?(opts: {
66
+ backend?: string;
67
+ instanceName?: string;
68
+ }): Promise<import("./fleet-manager.js").ModelCatalog>;
61
69
  }
62
70
  /** Metadata extracted from the raw outbound message. */
63
71
  export interface OutboundMeta {
@@ -1,7 +1,7 @@
1
1
  import { resolve as pathResolve, isAbsolute } from "node:path";
2
2
  import { homedir } from "node:os";
3
3
  import { GENERAL_PAUSE_ERROR, isGeneralInstance } from "./general-instance.js";
4
- import { BroadcastArgs, CreateInstanceArgs, CreateTeamArgs, DelegateTaskArgs, DeleteInstanceArgs, DeleteTeamArgs, DeployTemplateArgs, DescribeInstanceArgs, ListDeploymentsArgs, ListInstancesArgs, ListTeamsArgs, ReplaceInstanceArgs, ReportResultArgs, RequestInformationArgs, RestartInstanceArgs, SendToInstanceArgs, PauseInstanceArgs, WakeInstanceArgs, StopInstanceArgs, GetInstanceLogsArgs, GetEffortArgs, GetUsageArgs, GetFleetConfigArgs, UpdateInstanceConfigArgs, UpdateFleetDefaultsArgs, StartInstanceArgs, TeardownDeploymentArgs, UpdateTeamArgs, validateArgs, } from "./outbound-schemas.js";
4
+ import { BroadcastArgs, CreateInstanceArgs, CreateTeamArgs, DelegateTaskArgs, DeleteInstanceArgs, DeleteTeamArgs, DeployTemplateArgs, DescribeInstanceArgs, ListDeploymentsArgs, ListInstancesArgs, ListTeamsArgs, ReplaceInstanceArgs, ReportResultArgs, RequestInformationArgs, RestartInstanceArgs, SendToInstanceArgs, PauseInstanceArgs, WakeInstanceArgs, StopInstanceArgs, GetInstanceLogsArgs, GetEffortArgs, GetUsageArgs, ListModelsArgs, GetFleetConfigArgs, UpdateInstanceConfigArgs, UpdateFleetDefaultsArgs, StartInstanceArgs, TeardownDeploymentArgs, UpdateTeamArgs, validateArgs, } from "./outbound-schemas.js";
5
5
  const HOME_DIR = homedir();
6
6
  /**
7
7
  * Sanitize an error for inclusion in outbound responses sent to agents.
@@ -297,8 +297,8 @@ const listInstances = (ctx, rawArgs, respond, meta) => {
297
297
  instance_state: ctx.getInstanceExecutionState?.(ch.instanceName) ?? null,
298
298
  working_directory: "",
299
299
  topic_id: ch.channelId,
300
- display_name: `classic: ${ch.name}`,
301
- description: `ClassicBot channel (${ch.name})`,
300
+ display_name: ch.displayName ?? `classic: ${ch.name}`,
301
+ description: ch.description ?? `ClassicBot channel (${ch.name})`,
302
302
  backend: ctx.classicChannels.getBackendByInstance?.(ch.instanceName, ctx.fleetConfig?.defaults?.backend) ?? ch.backend ?? ctx.fleetConfig?.defaults?.backend ?? "claude-code",
303
303
  model: ctx.resolveInstanceModel?.(ch.instanceName).model
304
304
  ?? ctx.classicChannels.getModel?.(ch.channelId, ch.adapterId, ctx.fleetConfig?.defaults?.model)
@@ -558,12 +558,46 @@ const getUsage = async (ctx, rawArgs, respond) => {
558
558
  try {
559
559
  // Same structure as GET /api/ai-usage, same 5-minute cache behind it.
560
560
  const { getUsageSnapshot } = await import("./usage/usage-api.js");
561
- respond(await getUsageSnapshot(v.data.force === true));
561
+ respond(await getUsageSnapshot(v.data.force === true, ctx.getActiveUsageProviderIds?.()));
562
562
  }
563
563
  catch (err) {
564
564
  respond(null, `Usage fetch failed: ${err.message}`);
565
565
  }
566
566
  };
567
+ /**
568
+ * Enumerate a backend's models. Read-only and best-effort by design: the
569
+ * catalog is an aid for picking a name, and AgEnD passes model strings through
570
+ * to the CLI regardless, so an empty list is a reportable answer rather than an
571
+ * error. The one real error is naming an instance that does not exist — that is
572
+ * a mistake in the call, and silently answering with the fleet default backend
573
+ * would hide it.
574
+ */
575
+ const listModels = async (ctx, rawArgs, respond) => {
576
+ const v = validateArgs(ListModelsArgs, rawArgs, "list_models");
577
+ if (!v.ok) {
578
+ respond(null, v.error);
579
+ return;
580
+ }
581
+ const { backend, instance_name } = v.data;
582
+ if (!ctx.listModelCatalog) {
583
+ respond(null, "list_models is unavailable on this fleet");
584
+ return;
585
+ }
586
+ if (instance_name) {
587
+ const known = Boolean(ctx.fleetConfig?.instances?.[instance_name])
588
+ || (ctx.classicChannels?.getAll() ?? []).some(c => c.instanceName === instance_name);
589
+ if (!known) {
590
+ respond(null, `Instance not found: ${instance_name}`);
591
+ return;
592
+ }
593
+ }
594
+ try {
595
+ respond(await ctx.listModelCatalog({ backend, instanceName: instance_name }));
596
+ }
597
+ catch (err) {
598
+ respond(null, `Model listing failed: ${err.message}`);
599
+ }
600
+ };
567
601
  const getInstanceLogs = async (ctx, rawArgs, respond) => {
568
602
  const v = validateArgs(GetInstanceLogsArgs, rawArgs, "get_instance_logs");
569
603
  if (!v.ok) {
@@ -614,7 +648,11 @@ const updateInstanceConfig = (ctx, rawArgs, respond) => {
614
648
  }
615
649
  const inst = ctx.fleetConfig?.instances[v.data.name];
616
650
  if (!inst) {
617
- respond(null, `Instance '${v.data.name}' not found in fleet config`);
651
+ const isClassic = (ctx.classicChannels?.getAll() ?? [])
652
+ .some(channel => channel.instanceName === v.data.name);
653
+ respond(null, isClassic
654
+ ? "This is a ClassicBot instance (managed in classicBot.yaml). Use set_display_name or set_description to configure it."
655
+ : `Instance '${v.data.name}' not found in fleet config`);
618
656
  return;
619
657
  }
620
658
  const patch = v.data.config;
@@ -1173,6 +1211,7 @@ export const outboundHandlers = new Map([
1173
1211
  ["get_fleet_status", getFleetStatus],
1174
1212
  ["get_effort", getEffort],
1175
1213
  ["get_usage", getUsage],
1214
+ ["list_models", listModels],
1176
1215
  ["get_instance_logs", getInstanceLogs],
1177
1216
  ["get_fleet_config", getFleetConfig],
1178
1217
  ["update_instance_config", updateInstanceConfig],