@songsid/agend 2.2.0-alpha.1 → 2.2.0-alpha.3

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 (317) hide show
  1. package/README.md +6 -4
  2. package/README.zh-TW.md +6 -4
  3. package/dist/agent-cli.js +6 -1
  4. package/dist/agent-cli.js.map +1 -1
  5. package/dist/agent-endpoint.d.ts +4 -1
  6. package/dist/agent-endpoint.js +82 -14
  7. package/dist/agent-endpoint.js.map +1 -1
  8. package/dist/agent-token-header.d.ts +13 -0
  9. package/dist/agent-token-header.js +16 -0
  10. package/dist/agent-token-header.js.map +1 -0
  11. package/dist/atomic-write.d.ts +21 -0
  12. package/dist/atomic-write.js +65 -0
  13. package/dist/atomic-write.js.map +1 -0
  14. package/dist/auth-api.js +2 -0
  15. package/dist/auth-api.js.map +1 -1
  16. package/dist/backend/antigravity.js +4 -3
  17. package/dist/backend/antigravity.js.map +1 -1
  18. package/dist/backend/codex.d.ts +7 -0
  19. package/dist/backend/codex.js +7 -0
  20. package/dist/backend/codex.js.map +1 -1
  21. package/dist/backend/grok.js +1 -1
  22. package/dist/backend/grok.js.map +1 -1
  23. package/dist/backend/kiro.d.ts +7 -0
  24. package/dist/backend/kiro.js +82 -33
  25. package/dist/backend/kiro.js.map +1 -1
  26. package/dist/backend/muse.d.ts +7 -0
  27. package/dist/backend/muse.js +8 -1
  28. package/dist/backend/muse.js.map +1 -1
  29. package/dist/backend/types.d.ts +12 -0
  30. package/dist/backend/types.js.map +1 -1
  31. package/dist/binary-probe.d.ts +80 -0
  32. package/dist/binary-probe.js +182 -0
  33. package/dist/binary-probe.js.map +1 -0
  34. package/dist/cache-analysis.d.ts +92 -0
  35. package/dist/cache-analysis.js +147 -0
  36. package/dist/cache-analysis.js.map +1 -0
  37. package/dist/cache-ledger.d.ts +108 -0
  38. package/dist/cache-ledger.js +230 -0
  39. package/dist/cache-ledger.js.map +1 -0
  40. package/dist/cache-prices.d.ts +32 -0
  41. package/dist/cache-prices.js +73 -0
  42. package/dist/cache-prices.js.map +1 -0
  43. package/dist/cache-scan.d.ts +39 -0
  44. package/dist/cache-scan.js +115 -0
  45. package/dist/cache-scan.js.map +1 -0
  46. package/dist/cache-service.d.ts +131 -0
  47. package/dist/cache-service.js +452 -0
  48. package/dist/cache-service.js.map +1 -0
  49. package/dist/channel/adapters/discord.d.ts +5 -1
  50. package/dist/channel/adapters/discord.js +56 -11
  51. package/dist/channel/adapters/discord.js.map +1 -1
  52. package/dist/channel/adapters/telegram.d.ts +38 -1
  53. package/dist/channel/adapters/telegram.js +82 -0
  54. package/dist/channel/adapters/telegram.js.map +1 -1
  55. package/dist/channel/mcp-tools.js +1 -1
  56. package/dist/channel/mcp-tools.js.map +1 -1
  57. package/dist/channel/tool-router.d.ts +8 -1
  58. package/dist/channel/tool-router.js +4 -2
  59. package/dist/channel/tool-router.js.map +1 -1
  60. package/dist/channel/types.d.ts +21 -0
  61. package/dist/cli-entry.d.ts +19 -0
  62. package/dist/cli-entry.js +36 -0
  63. package/dist/cli-entry.js.map +1 -0
  64. package/dist/cli.js +376 -54
  65. package/dist/cli.js.map +1 -1
  66. package/dist/connection-secrets.d.ts +5 -0
  67. package/dist/connection-secrets.js.map +1 -1
  68. package/dist/cpu-profile.js +50 -0
  69. package/dist/cpu-profile.js.map +1 -1
  70. package/dist/daemon.d.ts +18 -0
  71. package/dist/daemon.js +256 -63
  72. package/dist/daemon.js.map +1 -1
  73. package/dist/delivery-outbox.d.ts +1 -0
  74. package/dist/delivery-outbox.js +12 -0
  75. package/dist/delivery-outbox.js.map +1 -1
  76. package/dist/discord-permissions.d.ts +33 -0
  77. package/dist/discord-permissions.js +42 -0
  78. package/dist/discord-permissions.js.map +1 -0
  79. package/dist/env-file.d.ts +11 -0
  80. package/dist/env-file.js +27 -0
  81. package/dist/env-file.js.map +1 -0
  82. package/dist/event-log.d.ts +4 -1
  83. package/dist/event-log.js +6 -3
  84. package/dist/event-log.js.map +1 -1
  85. package/dist/fleet-context.d.ts +5 -0
  86. package/dist/fleet-context.js.map +1 -1
  87. package/dist/fleet-control-audit.d.ts +5 -0
  88. package/dist/fleet-control-audit.js +7 -0
  89. package/dist/fleet-control-audit.js.map +1 -1
  90. package/dist/fleet-level-config.d.ts +8 -1
  91. package/dist/fleet-level-config.js +53 -0
  92. package/dist/fleet-level-config.js.map +1 -1
  93. package/dist/fleet-manager.d.ts +122 -7
  94. package/dist/fleet-manager.js +871 -152
  95. package/dist/fleet-manager.js.map +1 -1
  96. package/dist/fleet-stop-budget.d.ts +22 -0
  97. package/dist/fleet-stop-budget.js +95 -0
  98. package/dist/fleet-stop-budget.js.map +1 -0
  99. package/dist/full-restart.js +2 -3
  100. package/dist/full-restart.js.map +1 -1
  101. package/dist/general-knowledge/skills/persona-emoji/SKILL.md +3 -1
  102. package/dist/install-lock.d.ts +49 -0
  103. package/dist/install-lock.js +200 -0
  104. package/dist/install-lock.js.map +1 -0
  105. package/dist/instance-config-impact.js +3 -2
  106. package/dist/instance-config-impact.js.map +1 -1
  107. package/dist/kiro-transcript-lane.d.ts +8 -4
  108. package/dist/kiro-transcript-lane.js +66 -44
  109. package/dist/kiro-transcript-lane.js.map +1 -1
  110. package/dist/locale.js +96 -0
  111. package/dist/locale.js.map +1 -1
  112. package/dist/next-steps.d.ts +5 -0
  113. package/dist/next-steps.js +26 -0
  114. package/dist/next-steps.js.map +1 -0
  115. package/dist/outbound-handlers.js +8 -0
  116. package/dist/outbound-handlers.js.map +1 -1
  117. package/dist/outbound-schemas.d.ts +4 -0
  118. package/dist/outbound-schemas.js +7 -2
  119. package/dist/outbound-schemas.js.map +1 -1
  120. package/dist/outbox-open-error.d.ts +7 -0
  121. package/dist/outbox-open-error.js +15 -0
  122. package/dist/outbox-open-error.js.map +1 -0
  123. package/dist/package-preimage.d.ts +26 -0
  124. package/dist/package-preimage.js +96 -0
  125. package/dist/package-preimage.js.map +1 -0
  126. package/dist/pane-context-cache.d.ts +25 -0
  127. package/dist/pane-context-cache.js +73 -0
  128. package/dist/pane-context-cache.js.map +1 -0
  129. package/dist/paths.d.ts +0 -7
  130. package/dist/paths.js +8 -2
  131. package/dist/paths.js.map +1 -1
  132. package/dist/provider-probe.d.ts +15 -0
  133. package/dist/provider-probe.js +20 -0
  134. package/dist/provider-probe.js.map +1 -1
  135. package/dist/public-link-progress.d.ts +73 -0
  136. package/dist/public-link-progress.js +190 -0
  137. package/dist/public-link-progress.js.map +1 -0
  138. package/dist/public-web-gateway.js +2 -2
  139. package/dist/public-web-gateway.js.map +1 -1
  140. package/dist/public-web-link.d.ts +6 -1
  141. package/dist/public-web-link.js +87 -15
  142. package/dist/public-web-link.js.map +1 -1
  143. package/dist/quickstart-api.d.ts +93 -20
  144. package/dist/quickstart-api.js +194 -62
  145. package/dist/quickstart-api.js.map +1 -1
  146. package/dist/quickstart.d.ts +15 -0
  147. package/dist/quickstart.js +110 -33
  148. package/dist/quickstart.js.map +1 -1
  149. package/dist/reply-buttons-controller.d.ts +98 -0
  150. package/dist/reply-buttons-controller.js +174 -0
  151. package/dist/reply-buttons-controller.js.map +1 -0
  152. package/dist/reply-buttons.d.ts +113 -0
  153. package/dist/reply-buttons.js +208 -0
  154. package/dist/reply-buttons.js.map +1 -0
  155. package/dist/reply-dedup.js +3 -1
  156. package/dist/reply-dedup.js.map +1 -1
  157. package/dist/restart-guard.d.ts +53 -0
  158. package/dist/restart-guard.js +114 -0
  159. package/dist/restart-guard.js.map +1 -0
  160. package/dist/scheduler/db.js +6 -2
  161. package/dist/scheduler/db.js.map +1 -1
  162. package/dist/service-activation.d.ts +62 -7
  163. package/dist/service-activation.js +237 -55
  164. package/dist/service-activation.js.map +1 -1
  165. package/dist/service-installer.d.ts +56 -1
  166. package/dist/service-installer.js +152 -12
  167. package/dist/service-installer.js.map +1 -1
  168. package/dist/service-plan.d.ts +65 -0
  169. package/dist/service-plan.js +108 -0
  170. package/dist/service-plan.js.map +1 -0
  171. package/dist/settings-api.js +92 -10
  172. package/dist/settings-api.js.map +1 -1
  173. package/dist/settings-authority.d.ts +11 -0
  174. package/dist/settings-authority.js +128 -0
  175. package/dist/settings-authority.js.map +1 -0
  176. package/dist/settings-change.d.ts +5 -0
  177. package/dist/settings-change.js +37 -8
  178. package/dist/settings-change.js.map +1 -1
  179. package/dist/settings-confirmation.d.ts +3 -0
  180. package/dist/settings-confirmation.js +7 -1
  181. package/dist/settings-confirmation.js.map +1 -1
  182. package/dist/settings-effect.js +19 -7
  183. package/dist/settings-effect.js.map +1 -1
  184. package/dist/settings-http-confirmation.js +1 -1
  185. package/dist/settings-http-confirmation.js.map +1 -1
  186. package/dist/settings-redaction.d.ts +18 -0
  187. package/dist/settings-redaction.js +58 -0
  188. package/dist/settings-redaction.js.map +1 -0
  189. package/dist/setup-form.d.ts +9 -1
  190. package/dist/setup-form.js +25 -1
  191. package/dist/setup-form.js.map +1 -1
  192. package/dist/setup-host.js +15 -6
  193. package/dist/setup-host.js.map +1 -1
  194. package/dist/setup-wizard.js +27 -19
  195. package/dist/setup-wizard.js.map +1 -1
  196. package/dist/sqlite-open-errors.d.ts +12 -0
  197. package/dist/sqlite-open-errors.js +13 -0
  198. package/dist/sqlite-open-errors.js.map +1 -0
  199. package/dist/systemd-runtime.d.ts +15 -0
  200. package/dist/systemd-runtime.js +41 -0
  201. package/dist/systemd-runtime.js.map +1 -0
  202. package/dist/tmux-control.d.ts +44 -0
  203. package/dist/tmux-control.js +170 -21
  204. package/dist/tmux-control.js.map +1 -1
  205. package/dist/token-env-name.d.ts +37 -0
  206. package/dist/token-env-name.js +93 -0
  207. package/dist/token-env-name.js.map +1 -0
  208. package/dist/tool-permissions.js +5 -3
  209. package/dist/tool-permissions.js.map +1 -1
  210. package/dist/topic-commands.d.ts +7 -16
  211. package/dist/topic-commands.js +56 -85
  212. package/dist/topic-commands.js.map +1 -1
  213. package/dist/transcript-monitor.js +3 -0
  214. package/dist/transcript-monitor.js.map +1 -1
  215. package/dist/transcript-sources.d.ts +68 -0
  216. package/dist/transcript-sources.js +336 -29
  217. package/dist/transcript-sources.js.map +1 -1
  218. package/dist/transcript-turns.d.ts +39 -0
  219. package/dist/transcript-turns.js +58 -0
  220. package/dist/transcript-turns.js.map +1 -0
  221. package/dist/tunnel/cloudflared-install.d.ts +18 -0
  222. package/dist/tunnel/cloudflared-install.js +15 -1
  223. package/dist/tunnel/cloudflared-install.js.map +1 -1
  224. package/dist/turn-reply-guard.d.ts +3 -0
  225. package/dist/turn-reply-guard.js.map +1 -1
  226. package/dist/ui/chat-commands.js +43 -0
  227. package/dist/ui/chat-render.js +34 -8
  228. package/dist/ui/chat-store.js +51 -2
  229. package/dist/ui/chat-strings.js +30 -2
  230. package/dist/ui/chat-thread.js +141 -47
  231. package/dist/ui/first-run.js +64 -0
  232. package/dist/ui/fleet-cache.js +168 -0
  233. package/dist/ui/html-attachment.js +26 -0
  234. package/dist/ui/panel-chat.js +117 -23
  235. package/dist/ui/panel-fleet.js +31 -17
  236. package/dist/ui/panel-settings.js +29 -15
  237. package/dist/ui/preview-panel.js +237 -0
  238. package/dist/ui/preview.js +7 -3
  239. package/dist/ui/settings-apply.js +3 -1
  240. package/dist/ui/settings-dialogs.js +95 -25
  241. package/dist/ui/settings-discord.js +130 -0
  242. package/dist/ui/settings-model.js +21 -0
  243. package/dist/ui/settings-strings.js +50 -8
  244. package/dist/ui/settings-token.js +54 -0
  245. package/dist/ui/settings-wizard.js +63 -29
  246. package/dist/ui/shared/app-route.js +1 -1
  247. package/dist/ui/shared/app-shell.js +25 -37
  248. package/dist/ui/shared/app-store.js +5 -3
  249. package/dist/ui/shared/app-stream.js +2 -1
  250. package/dist/ui/shared/app.css +181 -5
  251. package/dist/ui/shared/app.js +2 -1
  252. package/dist/ui/shared/instance-nav.js +310 -0
  253. package/dist/ui/shared/panel-view.js +12 -190
  254. package/dist/ui/shared/signin.js +13 -1
  255. package/dist/ui/shared/ui-icons.js +2 -0
  256. package/dist/ui/shared/view-roster-store.js +5 -0
  257. package/dist/ui/shared/view-strings.js +12 -0
  258. package/dist/ui/signin.html +2 -1
  259. package/dist/update-dispatch.d.ts +28 -0
  260. package/dist/update-dispatch.js +73 -0
  261. package/dist/update-dispatch.js.map +1 -0
  262. package/dist/update-install.d.ts +78 -8
  263. package/dist/update-install.js +158 -30
  264. package/dist/update-install.js.map +1 -1
  265. package/dist/update-launch.d.ts +22 -0
  266. package/dist/update-launch.js +106 -0
  267. package/dist/update-launch.js.map +1 -0
  268. package/dist/update-marker.js +3 -8
  269. package/dist/update-marker.js.map +1 -1
  270. package/dist/usage/format-rich.js +7 -1
  271. package/dist/usage/format-rich.js.map +1 -1
  272. package/dist/usage/i18n-keys.d.ts +1 -1
  273. package/dist/usage/i18n-keys.js +1 -1
  274. package/dist/usage/i18n-keys.js.map +1 -1
  275. package/dist/usage/providers.d.ts +4 -0
  276. package/dist/usage/providers.js +2 -1
  277. package/dist/usage/providers.js.map +1 -1
  278. package/dist/usage/usage-api.js +48 -2
  279. package/dist/usage/usage-api.js.map +1 -1
  280. package/dist/view-api.d.ts +40 -0
  281. package/dist/view-api.js +28 -10
  282. package/dist/view-api.js.map +1 -1
  283. package/dist/web-api.d.ts +22 -0
  284. package/dist/web-api.js +115 -16
  285. package/dist/web-api.js.map +1 -1
  286. package/dist/web-auth.d.ts +8 -0
  287. package/dist/web-auth.js +34 -8
  288. package/dist/web-auth.js.map +1 -1
  289. package/dist/web-chat-history.d.ts +21 -0
  290. package/dist/web-chat-history.js +44 -0
  291. package/dist/web-chat-history.js.map +1 -1
  292. package/dist/web-commands.d.ts +77 -0
  293. package/dist/web-commands.js +81 -0
  294. package/dist/web-commands.js.map +1 -0
  295. package/dist/web-host-guard.d.ts +18 -2
  296. package/dist/web-host-guard.js +30 -5
  297. package/dist/web-host-guard.js.map +1 -1
  298. package/dist/web-session.d.ts +7 -1
  299. package/dist/web-session.js +23 -2
  300. package/dist/web-session.js.map +1 -1
  301. package/dist/web-shell-routes.d.ts +1 -1
  302. package/dist/web-shell-routes.js +1 -1
  303. package/dist/web-shell-routes.js.map +1 -1
  304. package/launcher/agend +110 -0
  305. package/launcher/agend-agent +110 -0
  306. package/launcher/agend-agent.cjs +4 -0
  307. package/launcher/agend.cjs +4 -0
  308. package/launcher/install-admission.cjs +105 -0
  309. package/launcher/launch.cjs +64 -0
  310. package/launcher/postinstall.cjs +118 -0
  311. package/launcher/run-in-process.cjs +13 -0
  312. package/launcher/runtime-platform.cjs +86 -0
  313. package/launcher/runtime-select.cjs +217 -0
  314. package/package.json +12 -4
  315. package/scripts/preinstall-guard.cjs +40 -21
  316. package/templates/launchd.plist.ejs +2 -2
  317. package/templates/systemd.service.ejs +4 -4
@@ -2,10 +2,13 @@ import { settingsRequestExecution, settingsWrite } from "./settings-request-capa
2
2
  import { SettingsExecutionError, settingsFileResource, trySettingsLease } from "./settings-transaction.js";
3
3
  import { readBoundedWebBody } from "./web-body.js";
4
4
  import { permitWebContinuation } from "./web-continuation.js";
5
+ import { gatewayRequestContext } from "./web-request-context.js";
5
6
  import { join } from "node:path";
6
7
  import { SecretStore } from "./secret-store.js";
8
+ import { discordBotPortalUrl, discordInviteUrl } from "./discord-permissions.js";
9
+ import { EnvFileUnreadableError, envFileKeys, generateTokenEnvName, generatedTokenEnvStale, newTokenEnvConflict, takenTokenEnvNames, TOKEN_ENV_PATTERN } from "./token-env-name.js";
7
10
  import { KNOWN_BACKENDS, validateFleetConfig } from "./config-validator.js";
8
- import { awaitTelegramGroupStart, detectInstalledBackends, listDiscordGuilds, TelegramPollConflictError, verifyDiscordToken, verifyTelegramToken, } from "./provider-probe.js";
11
+ import { awaitTelegramGroupStart, detectInstalledBackends, listDiscordGuilds, listDiscordTextChannels, TelegramPollConflictError, verifyDiscordToken, verifyTelegramToken, } from "./provider-probe.js";
9
12
  /** One slice of Telegram long polling, so the browser gets an answer. */
10
13
  export const TELEGRAM_WAIT_SLICE_MS = 25_000;
11
14
  export const WIZARD_BACKENDS = [
@@ -18,34 +21,98 @@ export const WIZARD_BACKENDS = [
18
21
  { name: "muse", binary: "muse" },
19
22
  ];
20
23
  /**
21
- * A channel id that is free, or the id of the connection being replaced.
22
- *
23
- * The platform name is the obvious id and the first bot gets it. A second bot on
24
- * the same platform cannot have it — `duplicate channel id` — so it is
25
- * qualified by the variable that holds its token. Without this the wizard can
26
- * never add a second Telegram bot at all.
24
+ * A free channel id for a NEW connection (#1519 P1, S1: the wizard never takes over an existing connection). The
25
+ * platform name is the obvious id and the first bot gets it; the next one on that platform is `<platform>-2`, and so on.
27
26
  */
28
- export function nextChannelId(platform, tokenEnv, existing) {
29
- const owner = existing.find(channel => channel.token_env === tokenEnv);
30
- if (owner)
31
- return owner.id;
27
+ export function nextChannelId(platform, existing) {
32
28
  const taken = new Set(existing.map(channel => channel.id));
33
29
  if (!taken.has(platform))
34
30
  return platform;
35
- const qualified = `${platform}-${tokenEnv.toLowerCase()}`;
36
- if (!taken.has(qualified))
37
- return qualified;
38
31
  for (let n = 2;; n++) {
39
- const candidate = `${qualified}-${n}`;
32
+ const candidate = `${platform}-${n}`;
40
33
  if (!taken.has(candidate))
41
34
  return candidate;
42
35
  }
43
36
  }
37
+ /**
38
+ * #1519 P7: why the agent part of this input cannot be written, or null. A new agent's name must be free (the wizard
39
+ * never overwrites one); an existing agent must exist. A connection-only input has no agent part.
40
+ */
41
+ export function agentConflict(input, cfg) {
42
+ if (input.connection_only)
43
+ return null;
44
+ const exists = !!cfg && Object.hasOwn(cfg.instances ?? {}, input.instance_name);
45
+ if (input.existing_agent)
46
+ return exists ? null : `there is no agent called "${input.instance_name}"`;
47
+ return exists ? `an agent called "${input.instance_name}" already exists — connect it as an existing agent, or choose another name` : null;
48
+ }
49
+ /**
50
+ * #1519 P7: an existing agent's input as the plan shows it — with the agent's own directory and backend (the wizard does
51
+ * not ask for them, and they are not changed). Any other input as it is.
52
+ */
53
+ export function withExistingAgent(input, cfg) {
54
+ if (!input.existing_agent || !cfg || !Object.hasOwn(cfg.instances ?? {}, input.instance_name))
55
+ return input;
56
+ const inst = cfg.instances[input.instance_name];
57
+ return { ...input, working_directory: inst.working_directory ?? "", backend: inst.backend ?? cfg.defaults?.backend ?? "claude-code" };
58
+ }
59
+ /**
60
+ * #1549 review: a topic id means something only in its chat (a Telegram group's forum topic, a Discord server's
61
+ * channel). An existing agent moved to a connection in another chat would keep an id that, there, is some other topic —
62
+ * or none yet — and inbound messages from that topic would route to it. So its topic binding goes with the move unless
63
+ * the new connection is in the same chat (same platform and group/server). Unknown (the old connection cannot be
64
+ * found) is not "the same": the binding goes.
65
+ */
66
+ export function releasesTopic(cfg, instanceName, newChannel) {
67
+ if (!Object.hasOwn(cfg.instances ?? {}, instanceName))
68
+ return false;
69
+ const inst = cfg.instances[instanceName];
70
+ if (inst.topic_id === undefined || inst.topic_id === null || inst.topic_id === "")
71
+ return false;
72
+ const channels = wizardChannels(cfg);
73
+ const old = inst.channel_id != null ? channels.find(c => c.id === String(inst.channel_id)) : channels[0];
74
+ if (!old || old.group_id == null || newChannel.group_id == null)
75
+ return true;
76
+ return !(old.type === String(newChannel.type ?? "") && old.group_id === String(newChannel.group_id));
77
+ }
78
+ /**
79
+ * The topic an existing agent has after moving to `newChannel`: its own when the chat is the same; else, for the
80
+ * General agent, the new chat's General (Telegram's thread 1, the Discord connection's general channel); else none.
81
+ */
82
+ export function movedTopic(cfg, instanceName, newChannel) {
83
+ if (!releasesTopic(cfg, instanceName, newChannel))
84
+ return null;
85
+ const inst = cfg.instances[instanceName];
86
+ const from = String(inst.topic_id);
87
+ if (inst.general_topic !== true)
88
+ return { from, to: null };
89
+ if (newChannel.type === "telegram")
90
+ return { from, to: 1 };
91
+ const general = newChannel.general_channel_id;
92
+ return { from, to: general != null && /^\d{17,}$/.test(String(general)) ? String(general) : null };
93
+ }
94
+ /** The plan as the wizard shows it: an existing agent's topic that the move changes is said so. */
95
+ export function withTopicRelease(plan, cfg, input) {
96
+ const moved = input.existing_agent && plan.instance ? movedTopic(cfg, input.instance_name, plan.channel) : null;
97
+ if (!moved || !plan.instance)
98
+ return plan;
99
+ return { ...plan, instance: { ...plan.instance, topic: { from: moved.from, to: moved.to == null ? null : String(moved.to) } } };
100
+ }
101
+ /** Why this input cannot be a new connection, or null: a taken id or token env (it would replace a connection). */
102
+ export function newConnectionConflict(input, env) {
103
+ if (input.channel_id && env.channels.some(channel => channel.id === input.channel_id)) {
104
+ return `a connection called "${input.channel_id}" already exists — a new connection never replaces one`;
105
+ }
106
+ return input.token_env ? newTokenEnvConflict(input.token_env, env.channels) : null;
107
+ }
44
108
  export function planQuickstart(input, env) {
45
109
  const warnings = [];
110
+ const channelId = input.channel_id || nextChannelId(input.platform, env.channels);
111
+ const tokenEnv = input.token_env || generateTokenEnvName(input.platform, channelId, env.taken_env ?? takenTokenEnvNames({ channelEnvs: env.channels.map(channel => channel.token_env) }));
46
112
  const channel = {
113
+ id: channelId,
47
114
  type: input.platform,
48
- bot_token_env: input.token_env,
115
+ bot_token_env: tokenEnv,
49
116
  mode: "topic",
50
117
  access: { mode: "locked", allowed_users: input.admin_user_id ? [input.admin_user_id] : [] },
51
118
  };
@@ -62,25 +129,17 @@ export function planQuickstart(input, env) {
62
129
  if (!input.admin_user_id) {
63
130
  warnings.push("No admin user id: access stays locked with an empty allow list, so nobody can drive the bot until you add one.");
64
131
  }
65
- const clash = env.channels.find(existing => existing.token_env === input.token_env);
66
- if (clash) {
67
- warnings.push(`${input.token_env} is already used by the "${clash.id}" connection — its token will be overwritten.`);
68
- // Re-running the wizard rewrites that connection's access block, so anyone
69
- // else on its allow list stops being able to drive the bot. That is a
70
- // lockout, and it must not happen without the user reading it first.
71
- const previous = clash.allowed_users ?? [];
72
- const dropped = previous.filter(user => user !== input.admin_user_id);
73
- if (dropped.length) {
74
- warnings.push(`Its allow list is replaced: ${dropped.join(", ")} will no longer be able to use the bot.`);
75
- }
76
- }
77
- if (!env.backends.includes(input.backend)) {
132
+ if (!input.connection_only && !input.existing_agent && !env.backends.includes(input.backend)) {
78
133
  warnings.push(`${input.backend} was not found on this host; the agent will fail to start until it is installed.`);
79
134
  }
80
135
  return {
81
136
  channel,
82
- instance: { name: input.instance_name, working_directory: input.working_directory, backend: input.backend },
83
- env_keys: [input.token_env],
137
+ // The agent is the new connection's (#1529 review): bound to it, not to whichever connection is first.
138
+ instance: input.connection_only ? null : { name: input.instance_name, working_directory: input.working_directory, backend: input.backend, channel_id: channelId,
139
+ ...(input.existing_agent ? { existing: true } : {}) },
140
+ channel_id: channelId,
141
+ token_env: tokenEnv,
142
+ env_keys: [tokenEnv],
84
143
  warnings,
85
144
  };
86
145
  }
@@ -120,11 +179,19 @@ export async function runProviderProbe(request, opts = {}) {
120
179
  const identity = request.platform === "discord"
121
180
  ? await verifyDiscordToken(request.token)
122
181
  : await verifyTelegramToken(request.token);
182
+ // #1519 P3: a verified Discord bot comes with its invite (the one permission set) and its portal page.
183
+ if (request.platform === "discord" && identity.valid && identity.id) {
184
+ return { ok: true, identity, invite_url: discordInviteUrl(identity.id), portal_url: discordBotPortalUrl(identity.id) };
185
+ }
123
186
  return { ok: true, identity };
124
187
  }
125
188
  if (request.action === "guilds") {
126
189
  return { ok: true, guilds: await listDiscordGuilds(request.token) };
127
190
  }
191
+ if (request.action === "channels") {
192
+ const listed = await listDiscordTextChannels(request.token, request.guild_id);
193
+ return listed.ok ? { ok: true, channels: listed.channels } : { ok: false, error: listed.error };
194
+ }
128
195
  if (opts.isTokenInUse?.(request.token)) {
129
196
  return {
130
197
  ok: false,
@@ -159,22 +226,31 @@ export function detectWizardBackends() {
159
226
  * asserts this module's import graph reaches neither fleet-manager, daemon nor
160
227
  * instance-lifecycle, so the host cannot grow a path to them by accident.
161
228
  */
229
+ function withMovedTopic(inst, moved) {
230
+ if (!moved)
231
+ return inst;
232
+ const { topic_id: _old, ...rest } = inst;
233
+ return (moved.to == null ? rest : { ...rest, topic_id: moved.to });
234
+ }
162
235
  /** One pure draft shared by the writer and the authoritative confirmation diff. */
163
236
  export function draftQuickstart(cfg, body, plan) {
164
237
  const draft = structuredClone(cfg), summary = wizardChannels(cfg);
165
238
  const channels = draft.channels ?? (draft.channel ? [draft.channel] : []);
166
- const existingIndex = channels.findIndex(channel => channel.bot_token_env === body.token_env);
167
- const entry = { id: nextChannelId(body.platform, body.token_env, summary), ...plan.channel };
168
- if (existingIndex >= 0)
169
- channels[existingIndex] = { ...channels[existingIndex], ...entry };
170
- else
171
- channels.push(entry);
239
+ // Always a new connection (#1519 P1, S1): never matched to one by token env, platform or group. The commit refuses a
240
+ // taken id or env before it gets here (newConnectionConflict).
241
+ void summary;
242
+ channels.push({ ...plan.channel });
172
243
  draft.channels = channels;
173
244
  delete draft.channel;
174
- draft.instances = { ...draft.instances, [body.instance_name]: {
175
- ...(Object.hasOwn(draft.instances, body.instance_name) ? draft.instances[body.instance_name] : {}),
176
- working_directory: body.working_directory, backend: body.backend,
177
- } };
245
+ if (body.connection_only)
246
+ return draft;
247
+ const existing = Object.hasOwn(draft.instances, body.instance_name) ? draft.instances[body.instance_name] : undefined;
248
+ draft.instances = { ...draft.instances, [body.instance_name]: body.existing_agent && existing
249
+ // #1519 P7: an existing agent keeps everything it has; only its connection becomes the new one — and a topic of
250
+ // another chat is not carried into this one (#1549 review: releasesTopic).
251
+ ? withMovedTopic({ ...existing, channel_id: plan.channel_id }, movedTopic(cfg, body.instance_name, plan.channel))
252
+ : { ...(existing ?? {}), working_directory: body.working_directory, backend: body.backend, channel_id: plan.channel_id },
253
+ };
178
254
  return draft;
179
255
  }
180
256
  function json(res, status, data) {
@@ -197,17 +273,30 @@ export function wizardChannels(cfg) {
197
273
  }));
198
274
  }
199
275
  /** Reject anything that would land in fleet.yaml or a shell env file unchecked. */
200
- export function validateWizardInput(input) {
276
+ export function validateWizardInput(input, opts = {}) {
201
277
  if (input.platform !== "telegram" && input.platform !== "discord")
202
278
  return "platform must be telegram or discord";
203
- if (!input.token_env || !/^[A-Z][A-Z0-9_]{2,63}$/.test(input.token_env))
279
+ if (input.connection_only !== undefined && typeof input.connection_only !== "boolean")
280
+ return "connection_only must be a boolean";
281
+ if (input.existing_agent !== undefined && typeof input.existing_agent !== "boolean")
282
+ return "existing_agent must be a boolean";
283
+ if (input.token_env_generated !== undefined && typeof input.token_env_generated !== "boolean")
284
+ return "token_env_generated must be a boolean";
285
+ if (!(opts.tokenEnvOptional && input.token_env === undefined) && (!input.token_env || !TOKEN_ENV_PATTERN.test(input.token_env)))
204
286
  return "token_env must be an UPPER_SNAKE env var name";
205
- if (!input.backend || !KNOWN_BACKENDS.includes(input.backend))
206
- return "backend must be a known backend";
207
- if (!input.working_directory || !input.working_directory.startsWith("/"))
208
- return "working_directory must be an absolute path";
209
- if (!input.instance_name || !/^[A-Za-z0-9._-]{1,128}$/.test(input.instance_name))
210
- return "instance_name must be [A-Za-z0-9._-]";
287
+ if (input.channel_id !== undefined && (typeof input.channel_id !== "string" || !/^[A-Za-z0-9][A-Za-z0-9_-]{0,31}$/.test(input.channel_id)))
288
+ return "channel_id must be [A-Za-z0-9_-], up to 32 characters";
289
+ if (!input.connection_only) {
290
+ if (!input.instance_name || !/^[A-Za-z0-9._-]{1,128}$/.test(input.instance_name))
291
+ return "instance_name must be [A-Za-z0-9._-]";
292
+ // An existing agent keeps its own directory and backend: neither is asked for.
293
+ if (!input.existing_agent) {
294
+ if (!input.backend || !KNOWN_BACKENDS.includes(input.backend))
295
+ return "backend must be a known backend";
296
+ if (!input.working_directory || !input.working_directory.startsWith("/"))
297
+ return "working_directory must be an absolute path";
298
+ }
299
+ }
211
300
  for (const [field, value] of Object.entries({
212
301
  group_id: input.group_id, guild_id: input.guild_id,
213
302
  general_channel_id: input.general_channel_id, admin_user_id: input.admin_user_id,
@@ -229,10 +318,17 @@ export function handleQuickstartRequest(req, res, url, ctx) {
229
318
  backends: detectWizardBackends(),
230
319
  has_fleet: !!cfg && Object.keys(cfg.instances ?? {}).length > 0,
231
320
  channels: wizardChannels(cfg),
321
+ agents: Object.entries(cfg?.instances ?? {}).map(([name, inst]) => ({
322
+ name, working_directory: inst.working_directory ?? null, backend: inst.backend ?? null
323
+ })),
232
324
  });
233
325
  return true;
234
326
  }
235
327
  if (method === "POST" && path === "/api/settings/quickstart/probe") {
328
+ if (gatewayRequestContext(req)) {
329
+ json(res, 403, { error: "Token verification is not permitted over a public link" });
330
+ return true;
331
+ }
236
332
  readBody(req, 16 * 1024).then(async (buf) => {
237
333
  if (!permitWebContinuation(req, res, ctx))
238
334
  return;
@@ -247,14 +343,14 @@ export function handleQuickstartRequest(req, res, url, ctx) {
247
343
  if (!token)
248
344
  return json(res, 400, { error: "token required" });
249
345
  const action = String(body.action ?? "");
250
- if (action !== "verify" && action !== "guilds" && action !== "await-telegram-start") {
346
+ if (action !== "verify" && action !== "guilds" && action !== "channels" && action !== "await-telegram-start") {
251
347
  return json(res, 400, { error: "unknown probe" });
252
348
  }
253
349
  const platform = body.platform === "discord" ? "discord" : "telegram";
254
350
  // The token is read, used for one outbound call, and dropped. It is never
255
351
  // logged and never echoed back in the response.
256
352
  ctx.logger.info({ action, platform }, "settings: quickstart probe");
257
- const result = await runProviderProbe({ action, platform, token, offset: typeof body.offset === "number" ? body.offset : 0 }, { isTokenInUse: candidate => ctx.isBotTokenInUse?.(candidate) ?? false });
353
+ const result = await runProviderProbe({ action, platform, token, offset: typeof body.offset === "number" ? body.offset : 0, guild_id: typeof body.guild_id === "string" ? body.guild_id : "" }, { isTokenInUse: candidate => ctx.isBotTokenInUse?.(candidate) ?? false });
258
354
  json(res, result.ok ? 200 : 409, result);
259
355
  }).catch(() => json(res, 400, { error: "bad request" }));
260
356
  return true;
@@ -274,14 +370,30 @@ export function handleQuickstartRequest(req, res, url, ctx) {
274
370
  catch {
275
371
  return json(res, 400, { error: "invalid JSON" });
276
372
  }
277
- const invalid = validateWizardInput(body);
373
+ const invalid = validateWizardInput(body, { tokenEnvOptional: true });
278
374
  if (invalid)
279
375
  return json(res, 400, { error: invalid });
280
- json(res, 200, planQuickstart(body, {
281
- backends: detectWizardBackends(),
376
+ const channels = wizardChannels(cfg);
377
+ const conflict = newConnectionConflict(body, { channels }) ?? agentConflict(body, cfg);
378
+ if (conflict)
379
+ return json(res, 409, { error: conflict });
380
+ // A generated name avoids every name already held: connections', providers', this data dir's .env, this process's.
381
+ let envFile;
382
+ try {
383
+ envFile = envFileKeys(ctx.dataDir);
384
+ }
385
+ catch (err) {
386
+ if (err instanceof EnvFileUnreadableError)
387
+ return json(res, 503, { error: err.message });
388
+ throw err;
389
+ }
390
+ const taken = takenTokenEnvNames({ channelEnvs: channels.map(c => c.token_env), envFile, processEnv: Object.keys(process.env) });
391
+ json(res, 200, withTopicRelease(planQuickstart(withExistingAgent(body, cfg), {
392
+ backends: body.connection_only ? [] : detectWizardBackends(),
282
393
  has_fleet: Object.keys(cfg.instances ?? {}).length > 0,
283
- channels: wizardChannels(cfg),
284
- }));
394
+ channels,
395
+ taken_env: taken,
396
+ }), cfg, body));
285
397
  }).catch(() => json(res, 400, { error: "bad request" }));
286
398
  return true;
287
399
  }
@@ -306,7 +418,11 @@ export function handleQuickstartRequest(req, res, url, ctx) {
306
418
  if (!body.token)
307
419
  return json(res, 400, { error: "token required" });
308
420
  const summary = wizardChannels(cfg);
309
- const plan = planQuickstart(body, {
421
+ // Never a replacement (#1519 P1, S1): an id or token env another connection holds is refused before anything moves.
422
+ const conflict = newConnectionConflict(body, { channels: summary }) ?? agentConflict(body, cfg);
423
+ if (conflict)
424
+ return json(res, 409, { error: conflict });
425
+ const plan = planQuickstart(withExistingAgent(body, cfg), {
310
426
  backends: detectWizardBackends(),
311
427
  has_fleet: Object.keys(cfg.instances ?? {}).length > 0,
312
428
  channels: summary,
@@ -325,19 +441,35 @@ export function handleQuickstartRequest(req, res, url, ctx) {
325
441
  if (!lease)
326
442
  return json(res, 409, { error: "another secret operation is still running" });
327
443
  let stored = false, secretBefore;
328
- const before = { channels: cfg.channels, channel: cfg.channel, instance: cfg.instances[body.instance_name],
329
- hadInstance: Object.hasOwn(cfg.instances, body.instance_name) };
444
+ const agent = !body.connection_only;
445
+ const before = { channels: cfg.channels, channel: cfg.channel, instance: agent ? cfg.instances[body.instance_name] : undefined,
446
+ hadInstance: agent && Object.hasOwn(cfg.instances, body.instance_name) };
330
447
  let store;
331
448
  const rollback = {};
332
449
  try {
333
450
  execution?.assert();
451
+ // A generated name is re-checked here, under the .env lease, against what the write would overwrite (#1529 review).
452
+ if (body.token_env_generated) {
453
+ let stale;
454
+ try {
455
+ stale = generatedTokenEnvStale(body.token_env, { dataDir: ctx.dataDir, channelEnvs: summary.map(c => c.token_env) });
456
+ }
457
+ catch (err) {
458
+ if (err instanceof EnvFileUnreadableError)
459
+ return json(res, 503, { error: err.message });
460
+ throw err;
461
+ }
462
+ if (stale)
463
+ return json(res, 409, { error: stale }); // nothing written yet; the lease goes in finally
464
+ }
334
465
  store = new SecretStore(envPath, new Set([body.token_env]), { owner: lease.owner });
335
466
  settingsWrite(req, () => {
336
467
  secretBefore = store.write(body.token_env, body.token);
337
468
  stored = true;
338
469
  cfg.channels = draft.channels;
339
470
  delete cfg.channel;
340
- Object.defineProperty(cfg.instances, body.instance_name, { value: draft.instances[body.instance_name], enumerable: true, writable: true, configurable: true });
471
+ if (agent)
472
+ Object.defineProperty(cfg.instances, body.instance_name, { value: draft.instances[body.instance_name], enumerable: true, writable: true, configurable: true });
341
473
  const undo = ctx.saveFleetConfig();
342
474
  if (typeof undo === "function")
343
475
  rollback.config = undo;
@@ -352,7 +484,7 @@ export function handleQuickstartRequest(req, res, url, ctx) {
352
484
  delete cfg.channel;
353
485
  if (before.hadInstance)
354
486
  cfg.instances[body.instance_name] = before.instance;
355
- else
487
+ else if (agent)
356
488
  delete cfg.instances[body.instance_name];
357
489
  let cleanupFailed = false;
358
490
  try {
@@ -376,7 +508,7 @@ export function handleQuickstartRequest(req, res, url, ctx) {
376
508
  finally {
377
509
  lease.release();
378
510
  }
379
- ctx.logger.info({ instance: body.instance_name, platform: body.platform }, "settings: quickstart committed");
511
+ ctx.logger.info({ instance: agent ? body.instance_name : null, connection: plan.channel_id, platform: body.platform }, "settings: quickstart committed");
380
512
  // No apply here: the page starts the ordinary job so the wizard's last
381
513
  // step has the same progress, deadline and restart recovery as everything
382
514
  // else the panel applies.
@@ -1 +1 @@
1
- {"version":3,"file":"quickstart-api.js","sourceRoot":"","sources":["../src/quickstart-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quickstart-api.js","sourceRoot":"","sources":["../src/quickstart-api.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,17 @@
1
1
  export { SETUP_GUIDE_URLS, setupGuideUrl } from "./setup-guide.js";
2
+ /**
3
+ * Add `newUsers` to the allowed_users of the chosen connection in `config`.
4
+ * Supports both channel-shaped (singular) and channels-shaped (array) files.
5
+ * For multi-connection files, `pickIndex` selects the target (default: 0).
6
+ * Never writes a phantom `channel:` key into a channels-shaped file.
7
+ * Exported for direct testing.
8
+ */
9
+ export declare function addAllowedUsersToConfig(config: Record<string, any>, newUsers: string[], pickIndex?: number): void;
10
+ /**
11
+ * Write a backup of `configPath` to `<configPath>.bak-<now>` using atomicWriteFileSync.
12
+ * Throws on failure — callers must abort the overwrite if backup fails (fail-closed).
13
+ * Returns the backup path on success.
14
+ * Exported for direct testing.
15
+ */
16
+ export declare function backupFleetConfig(configPath: string, now?: number): Promise<string>;
2
17
  export declare function runQuickstart(): Promise<void>;