@songsid/agend 2.3.2-beta.9 → 2.3.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/README.zh-TW.md +6 -0
- package/dist/agent-cli-instructions.md +2 -2
- package/dist/agent-cli.js +48 -0
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +6 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-whats-new.d.ts +21 -0
- package/dist/agent-whats-new.js +53 -21
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.js +2 -0
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/claude-code.d.ts +13 -1
- package/dist/backend/claude-code.js +43 -2
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-session-lookup.d.ts +15 -0
- package/dist/backend/codex-session-lookup.js +58 -0
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/codex.js +15 -4
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/kiro-classic-archive.d.ts +57 -0
- package/dist/backend/kiro-classic-archive.js +622 -0
- package/dist/backend/kiro-classic-archive.js.map +1 -0
- package/dist/backend/kiro-classic-links.d.ts +24 -0
- package/dist/backend/kiro-classic-links.js +135 -0
- package/dist/backend/kiro-classic-links.js.map +1 -0
- package/dist/backend/kiro-identity.d.ts +100 -1
- package/dist/backend/kiro-identity.js +262 -31
- package/dist/backend/kiro-identity.js.map +1 -1
- package/dist/backend/kiro-migration-verify.d.ts +10 -0
- package/dist/backend/kiro-migration-verify.js +52 -0
- package/dist/backend/kiro-migration-verify.js.map +1 -0
- package/dist/backend/kiro-reconcile-store.d.ts +27 -0
- package/dist/backend/kiro-reconcile-store.js +351 -0
- package/dist/backend/kiro-reconcile-store.js.map +1 -0
- package/dist/backend/kiro-v2-store-worker.js +35 -1
- package/dist/backend/kiro-v2-store-worker.js.map +1 -1
- package/dist/backend/kiro-v2-store.d.ts +31 -1
- package/dist/backend/kiro-v2-store.js +22 -12
- package/dist/backend/kiro-v2-store.js.map +1 -1
- package/dist/backend/kiro.d.ts +124 -6
- package/dist/backend/kiro.js +553 -39
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +109 -4
- package/dist/backend/types.js +9 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/cache-service.d.ts +13 -1
- package/dist/cache-service.js +45 -2
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/ipc-timeouts.js +3 -0
- package/dist/channel/ipc-timeouts.js.map +1 -1
- package/dist/channel/mcp-tools.js +40 -5
- 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 +6 -0
- package/dist/classic-channel-manager.js +25 -0
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +52 -6
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.d.ts +7 -1
- package/dist/config-validator.js +20 -9
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/cross-instance-envelope.d.ts +10 -5
- package/dist/cross-instance-envelope.js +20 -17
- package/dist/cross-instance-envelope.js.map +1 -1
- package/dist/daemon.d.ts +125 -63
- package/dist/daemon.js +694 -330
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +15 -4
- package/dist/dashboard-permissions.js +49 -23
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/delivery-outbox.d.ts +27 -22
- package/dist/delivery-outbox.js +109 -161
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-outbox.test.js +10 -25
- package/dist/delivery-outbox.test.js.map +1 -1
- package/dist/doctor.js +2 -1
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-control-audit.d.ts +1 -1
- package/dist/fleet-control-audit.js +3 -0
- package/dist/fleet-control-audit.js.map +1 -1
- package/dist/fleet-manager.d.ts +94 -15
- package/dist/fleet-manager.js +597 -133
- 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-instance.d.ts +24 -0
- package/dist/general-instance.js +53 -0
- package/dist/general-instance.js.map +1 -1
- package/dist/general-knowledge/skills/delegation-playbook/SKILL.md +1 -1
- package/dist/general-knowledge/skills/docker-install/SKILL.md +25 -0
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +5 -3
- package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +34 -0
- package/dist/general-knowledge/skills/session-management/SKILL.md +2 -2
- package/dist/general-knowledge/skills/tui-effort/SKILL.md +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +32 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +32 -0
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +57 -17
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +57 -17
- package/dist/instance-config-impact.js +3 -2
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +4 -0
- package/dist/instance-lifecycle.js +28 -5
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.js +6 -7
- package/dist/instructions.js.map +1 -1
- package/dist/kiro-migrate.d.ts +19 -2
- package/dist/kiro-migrate.js +133 -35
- package/dist/kiro-migrate.js.map +1 -1
- package/dist/kiro-reconcile.d.ts +21 -0
- package/dist/kiro-reconcile.js +88 -0
- package/dist/kiro-reconcile.js.map +1 -0
- package/dist/kiro-session-proof.d.ts +41 -0
- package/dist/kiro-session-proof.js +89 -0
- package/dist/kiro-session-proof.js.map +1 -0
- package/dist/kiro-tui-forensic.d.ts +19 -0
- package/dist/kiro-tui-forensic.js +124 -0
- package/dist/kiro-tui-forensic.js.map +1 -0
- package/dist/locale.js +202 -16
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +3 -3
- package/dist/log-service.js.map +1 -1
- package/dist/needs-you.d.ts +3 -1
- package/dist/needs-you.js +4 -2
- package/dist/needs-you.js.map +1 -1
- package/dist/office-levels.d.ts +64 -0
- package/dist/office-levels.js +66 -0
- package/dist/office-levels.js.map +1 -0
- package/dist/office-share-page.d.ts +3 -1
- package/dist/office-share-page.js +8 -3
- package/dist/office-share-page.js.map +1 -1
- package/dist/office-share-service.d.ts +6 -3
- package/dist/office-share-service.js +12 -8
- package/dist/office-share-service.js.map +1 -1
- package/dist/office-share.d.ts +45 -8
- package/dist/office-share.js +75 -15
- package/dist/office-share.js.map +1 -1
- package/dist/outbound-handlers.js +21 -2
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +47 -2
- package/dist/outbound-schemas.js +42 -3
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +1 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/quickstart-api.d.ts +39 -1
- package/dist/quickstart-api.js +115 -17
- package/dist/quickstart-api.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/remote-card-prompt.d.ts +38 -0
- package/dist/remote-card-prompt.js +86 -0
- package/dist/remote-card-prompt.js.map +1 -0
- package/dist/scheduler/task-board.d.ts +44 -17
- package/dist/scheduler/task-board.js +95 -36
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/sd-notify.d.ts +13 -14
- package/dist/sd-notify.js +62 -28
- package/dist/sd-notify.js.map +1 -1
- package/dist/service-installer.d.ts +13 -0
- package/dist/service-installer.js +15 -0
- package/dist/service-installer.js.map +1 -1
- package/dist/service-owner.d.ts +25 -0
- package/dist/service-owner.js +43 -2
- package/dist/service-owner.js.map +1 -1
- package/dist/settings-api.d.ts +2 -1
- package/dist/settings-api.js +19 -26
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +10 -5
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +7 -6
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-instance-patch.js +1 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-form.d.ts +2 -2
- package/dist/setup-form.js +139 -93
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-i18n.d.ts +25 -0
- package/dist/setup-i18n.js +226 -0
- package/dist/setup-i18n.js.map +1 -0
- package/dist/task-board-waker.d.ts +40 -1
- package/dist/task-board-waker.js +115 -9
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tmux-control.d.ts +1 -1
- package/dist/tmux-control.js +3 -2
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.js +18 -16
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.d.ts +2 -0
- package/dist/tmux-read.js +7 -1
- package/dist/tmux-read.js.map +1 -1
- package/dist/tool-permissions.js +18 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +2 -0
- package/dist/topic-commands.js +2 -1
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-sources.d.ts +1 -0
- package/dist/transcript-sources.js +20 -3
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +11 -5
- package/dist/ui/backend-signin.js +4 -3
- package/dist/ui/chat-store.js +3 -2
- package/dist/ui/chat-strings.js +2 -2
- package/dist/ui/fleet-office-card.js +114 -0
- package/dist/ui/fleet-office-editor.js +81 -9
- package/dist/ui/fleet-office-layout.js +56 -11
- package/dist/ui/fleet-office-levels.js +105 -0
- package/dist/ui/fleet-office-model.js +9 -1
- package/dist/ui/fleet-office-pack.d.ts +15 -3
- package/dist/ui/fleet-office-pack.js +177 -23
- package/dist/ui/fleet-office-skin.js +39 -3
- package/dist/ui/fleet-office-store.js +74 -3
- package/dist/ui/fleet-office-view.js +8 -0
- package/dist/ui/fleet-office-zones.js +102 -19
- package/dist/ui/fleet-office.js +308 -44
- package/dist/ui/fleet-org.js +2 -0
- package/dist/ui/fleet-task-card.js +2 -2
- package/dist/ui/fleet-task-common.js +30 -7
- package/dist/ui/fleet-task-work.js +2 -2
- package/dist/ui/fleet-tasks.js +10 -11
- package/dist/ui/office-share-dialog.js +31 -7
- package/dist/ui/office-share-page.js +1 -0
- package/dist/ui/panel-chat.js +14 -2
- package/dist/ui/panel-log.js +6 -6
- package/dist/ui/panel-needs.js +1 -1
- package/dist/ui/panel-settings.js +16 -8
- package/dist/ui/settings-appearance.js +3 -35
- package/dist/ui/settings-discord.js +3 -2
- package/dist/ui/settings-guests.js +17 -7
- package/dist/ui/settings-model.js +17 -9
- package/dist/ui/settings-registry.js +1 -1
- package/dist/ui/settings-strings.js +18 -6
- package/dist/ui/settings-token.js +3 -2
- package/dist/ui/settings-wizard.js +25 -9
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-stream.js +1 -1
- package/dist/ui/shared/app.css +70 -2
- package/dist/ui/shared/setup-host-text.js +107 -0
- package/dist/ui/structured-signin.js +89 -38
- package/dist/update-check.d.ts +13 -4
- package/dist/update-check.js +17 -4
- package/dist/update-check.js.map +1 -1
- package/dist/usage-rollup.d.ts +34 -3
- package/dist/usage-rollup.js +56 -3
- package/dist/usage-rollup.js.map +1 -1
- package/dist/web-api.d.ts +10 -1
- package/dist/web-api.js +207 -17
- 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-experimental.d.ts +6 -2
- package/dist/web-experimental.js +8 -4
- package/dist/web-experimental.js.map +1 -1
- package/dist/web-office-acts.d.ts +5 -2
- package/dist/web-office-acts.js +9 -4
- package/dist/web-office-acts.js.map +1 -1
- package/dist/web-office-pack-read.d.ts +35 -0
- package/dist/web-office-pack-read.js +252 -0
- package/dist/web-office-pack-read.js.map +1 -0
- package/dist/web-office-pack-tools.d.ts +241 -0
- package/dist/web-office-pack-tools.js +785 -0
- package/dist/web-office-pack-tools.js.map +1 -0
- package/dist/web-office-skins.d.ts +68 -4
- package/dist/web-office-skins.js +324 -33
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-office-store.d.ts +47 -4
- package/dist/web-office-store.js +124 -23
- package/dist/web-office-store.js.map +1 -1
- package/dist/web-settings-patch.d.ts +3 -2
- package/dist/web-settings-patch.js +7 -5
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/workflow-templates/default.md +3 -3
- package/dist/working-recovery.d.ts +0 -2
- package/dist/working-recovery.js +2 -23
- package/dist/working-recovery.js.map +1 -1
- package/package.json +2 -2
- package/templates/windows-shortcuts.ps1 +18 -17
- package/dist/upgrade-notices.d.ts +0 -17
- package/dist/upgrade-notices.js +0 -93
- package/dist/upgrade-notices.js.map +0 -1
|
@@ -83,7 +83,7 @@ who is not a fleet admin gets a code privately, by sending `/web` or from an adm
|
|
|
83
83
|
as their own Discord or Telegram account. What a guest sees:
|
|
84
84
|
- **With explicit grants** (`web.guests.grants`, set in Settings → Access & security → Guests): exactly the agents an
|
|
85
85
|
admin granted that person, nothing else (default deny once the key exists). The admin picks the person from people
|
|
86
|
-
AgEnD has seen writing to an agent, ticks their agents, saves (giving access or more agents waits for a fleet admin in
|
|
86
|
+
AgEnD has seen writing to an agent, ticks their agents (or ClassicBot rooms, #2667), saves (giving access or more agents waits for a fleet admin in
|
|
87
87
|
General; taking away applies at once and ends their sessions), then presses **Send sign-in code**, a DM, never a post.
|
|
88
88
|
Each code sent and each change to someone's access is in the event log (`guest_code_sent`, `guest_grant_changed`),
|
|
89
89
|
shown to admins under **Recent changes** in that section (no agent's Log tab shows them).
|
|
@@ -187,6 +187,9 @@ tab title. Items, grouped by instance, oldest first:
|
|
|
187
187
|
- the instance: "Paused: sign-in needed", "Crashed";
|
|
188
188
|
- deliveries from the last 24 h: "Could not confirm delivery", "Delivery failed" (source → target · kind).
|
|
189
189
|
|
|
190
|
+
"Asking you a question" is a kiro V3 question card, posted to the instance's chat with a button per answer and a box
|
|
191
|
+
for answering in words (on Discord/Telegram: reply to the post); an MCP input request offers Decline / Cancel and is
|
|
192
|
+
filled in at the terminal (View).
|
|
190
193
|
A prompt shows its own answer buttons (first answer wins); a delivery has **Acknowledge** (clears it everywhere);
|
|
191
194
|
"Paused: sign-in needed" has **Sign in** when the dashboard can run that login (#2233); every item has **Open chat**. **Notify me on this device** (Turn on / Turn off) gives desktop notifications while the
|
|
192
195
|
tab is hidden — per browser, not on phones or plain-HTTP addresses. Config: `needs_you.live_message` (default on),
|
|
@@ -226,8 +229,9 @@ values reloaded after Save. Password fields keep the browser's behaviour.
|
|
|
226
229
|
The sidebar's **Fleet** (zh "Fleet 概覽", at the top) and the phone's Fleet tab open the Fleet tab this device used last
|
|
227
230
|
(`agend_last_fleet_tab`; the Org chart the first time). The sidebar has no separate Fleet (Details) or View row.
|
|
228
231
|
- **Tasks** — the task board: Home lists **projects** (with % done) and what waits for the person (**Confirm** /
|
|
229
|
-
**Send back** finished work, **Answer** a blocked card
|
|
230
|
-
|
|
232
|
+
**Send back** finished work, **Answer** a blocked card — #2756: only the cards the person handed out, as Needs you;
|
|
233
|
+
an agent's card in review says "Waiting for <agent>"); **No project** holds `task`-tool tasks. A project is a board
|
|
234
|
+
of main tasks (M-n) by status — To do, In progress, Blocked, To confirm, Done — with drag to move, an assignee
|
|
231
235
|
filter and each main task's sub tasks (S-n). A card opens in a dialog: every field editable, its sub tasks, comments,
|
|
232
236
|
progress log, history. **Search cards** in the header. Only a signed-in person confirms the work they handed out
|
|
233
237
|
(an instance's `done` on such a card is review); a card an agent handed out, that agent confirms (#2434). No
|
|
@@ -250,30 +254,46 @@ Click a team header to fold it. **Find** dims everything that doesn't match. A c
|
|
|
250
254
|
and backend; clicking it opens the chat. List mode adds the description, model, a link to the Discord thread or
|
|
251
255
|
Telegram topic, and **Open chat**.
|
|
252
256
|
|
|
257
|
+
**The Office guide** (`docs/office.md` in the AgEnD repository; `docs/office.zh-TW.md` in Traditional Chinese) is the one page for people: setting up offices, the
|
|
258
|
+
skin-pack manifest format and its limits, Edit layout and seat reservations, bedtime, share links, agents' office and
|
|
259
|
+
pack tools, and rolling back. Point people there for more than the summary below; it lists the version each feature came in.
|
|
260
|
+
|
|
253
261
|
**Office** (the third view, remembered per device) draws the same fleet as a pixel office: a room per team, a desk
|
|
254
262
|
per instance with a name tag, General and "Not in a team" in the **Lobby**. Each little person is its state: typing
|
|
255
263
|
with the lamp on (working), tea break (idle), asleep behind a **Closed** sign (paused/stopped), a hand up under a
|
|
256
264
|
blinking light (needs you, crashed, looks stuck). With **Live** on, each message, delegation and report is carried
|
|
257
265
|
desk to desk along the corridors in the Key's colours; a delegation in progress is a purple folder on the worker's
|
|
258
|
-
desk. Hover
|
|
266
|
+
desk. Hover a desk for its name, state and backend; a click or tap (or Enter in the desk list) opens the
|
|
267
|
+
person's profile card (#2661: a 320 px popover beside them, following them; Esc, a press elsewhere or the same person
|
|
268
|
+
again closes it; on a phone a bottom sheet): level and XP, office and area, model, backend, today, first seen, the
|
|
269
|
+
activity line, **Find in office** and **Chat**. A double-click opens the chat directly. Each name tag has a level badge
|
|
270
|
+
(lifetime work, docs/office.md § Levels; **Settings → Web dashboard → Office levels**, `web.office_levels`). **Find** dims
|
|
259
271
|
the rest. **Show** picks a team or the Lobby and **People** pins chosen instances (both kept per browser); the
|
|
260
272
|
**Office** switcher lists offices kept on the host (`web-offices.json`, `GET`/`PUT /ui/offices`). An admin session
|
|
261
273
|
(never a read-only one, a guest or the public link) gets **Edit offices**: add, rename and delete offices, pick who is
|
|
262
|
-
in each (whole teams or single instances; none = everyone) and its style, and upload or delete **skin packs** (an
|
|
274
|
+
in each (Everyone, Picked: whole teams or single instances, or #2752 Nobody: its style's NPCs only; none picked = everyone) and its style, and upload or delete **skin packs** (an
|
|
263
275
|
artist's pictures: `manifest.json` plus PNGs, format v1, kept in `web-office-skins/` in the AgEnD home; the host
|
|
264
276
|
checks every rule — PNG only, each strip exactly frames·w × h, a 16:9 background, size caps — and never changes a
|
|
265
277
|
pack; a strip may give its displayed size, `dw`/`dh`, apart from its pictures' size, and a character may walk four
|
|
266
|
-
ways with `walkDown`, `walkUp` and `walkSide`, the side one mirrored for left).
|
|
278
|
+
ways with `walkDown`, `walkUp` and `walkSide`, the side one mirrored for left). #2692: an agent with **Office skin
|
|
279
|
+
packs** on (`office_pack_access`, Dashboard access) can check, upload, replace, delete and restore packs itself (one
|
|
280
|
+
previous version kept per pack); **Agents changing packs** under the packs names those agents, sets whether their changes
|
|
281
|
+
**Need my yes** (the default) or **Apply at once**, and approves or rejects the waiting ones (also from the notice's
|
|
282
|
+
buttons in General); every change is logged and told in General. **Style** (per office for a stored one; for the whole fleet, #2716, an admin's pick is kept on the host for every device and share link, anyone else's stays in their browser): **Desks**,
|
|
267
283
|
**Studio** (one scene — Work, Lounge, Help desk, Nap corner — where each instance walks to the area for its state),
|
|
268
284
|
**Cozy** (#2631: the same in a warm pixel-art office drawn as one picture; its notice board says a skin pack can
|
|
269
285
|
restyle it; the default for a browser that has not picked a style and for a new office — a saved office keeps its
|
|
270
286
|
own) or an uploaded pack; one the page cannot load is drawn as Desks with a note. On a stored office in Studio,
|
|
271
287
|
Cozy or a pack,
|
|
272
|
-
**Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door
|
|
288
|
+
**Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door, the mail drop
|
|
289
|
+
(an envelope: where letters from other offices land; dashed on a pack without a `mailDrop`, #2736) and
|
|
273
290
|
waypoints (or Tab to one and use the arrow keys, Shift for 10), add or remove waypoints and join or unjoin
|
|
274
291
|
corridors; an item that sleeps at bedtime (a pack's `night`) has a night handle too ("Item {id} (night)": its night
|
|
275
292
|
picture faint, a moon, a line to its day place; on the day place while it sleeps in place) — drag it to give the item
|
|
276
|
-
its own night place, **Back to the pack's night place** undoes it (#2665);
|
|
293
|
+
its own night place, **Back to the pack's night place** undoes it (#2665); a selected seat has **Reserved for** (the
|
|
294
|
+
office's members, several allowed) and **Lend when away** (#2691) — whoever it is for sits there first when they come
|
|
295
|
+
to its area, nobody else does unless it is lent while they are all away (a borrower moves off when one comes), and a
|
|
296
|
+
reserved seat's handle is ringed; a pack can reserve seats as well; **Save layout** keeps the moves as that
|
|
277
297
|
office's overrides (the pack stays as uploaded), **Reset** goes back to the pack's own. While it is open the office picker and Edit offices wait (**Cancel** closes it); if someone
|
|
278
298
|
saved the offices meanwhile, Save says so and keeps your layout — Save again puts it on the current list. A crowded area packs extra people into a tighter grid, then shows "+N" in its corner; there
|
|
279
299
|
only calls and work get bubbles (a few at most) and name tags show on hover or focus. **Hide paused and stopped**
|
|
@@ -287,8 +307,8 @@ only. Hover and click work across
|
|
|
287
307
|
tiles; a tile's label, or a double-click on it, opens that office; traffic between offices flies straight across.
|
|
288
308
|
Edit offices and Edit layout wait for a single office.
|
|
289
309
|
**Share…** (#2636; an admin session, on the dashboard reached directly or over the public link — never read-only or a guest; the URL shows only to its maker, in the dialog) makes an Office share
|
|
290
|
-
link: anyone who opens it watches one office
|
|
291
|
-
colours and states, every 5 s; no chat, no
|
|
310
|
+
link: anyone who opens it watches **Whole fleet** (#2716, in the fleet's style), one office or **All offices** live, in the link's **Look** (#2715: Light, Dark or the viewer's device; default what the maker's dashboard shows now), read-only, with no sign-in — names, identity
|
|
311
|
+
colours and states, every 5 s; no chat, no settings (a click shows a card with name, title, state, office and level only); agents' `office_set` lines only when
|
|
292
312
|
**Include agents' own status lines** is ticked; hidden instances never. 1 h by default, 15 min to 24 h
|
|
293
313
|
(`web.office_share.max_hours`); at most 10 open. Its own quick tunnel (`https://<random>.trycloudflare.com/o/<token>`)
|
|
294
314
|
starts with the first link and stops with the last; the token is shown once. There is no chat command: the button only. Open links and **Revoke** are in **Settings → Access
|
|
@@ -296,8 +316,9 @@ starts with the first link and stops with the last; the token is shown once. The
|
|
|
296
316
|
says to try again in a few minutes (no retry). `web.office_share.enabled: false` turns it off and ends open links.
|
|
297
317
|
|
|
298
318
|
The Office fills the Fleet panel and moves like the Canvas (#2540): drag to pan, the wheel or a pinch to zoom,
|
|
299
|
-
**+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them
|
|
300
|
-
(with the office focused), an overview at the bottom right to jump (not on a phone
|
|
319
|
+
**+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them; on a phone, outside
|
|
320
|
+
fullscreen, a row along the top of the scene) or the `+ - 0` keys (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
|
|
321
|
+
is all in view, #2737). It takes the whole panel: the
|
|
301
322
|
Fleet area's full width, down to the window's foot. **Fit** shows the whole scene as large as the panel allows
|
|
302
323
|
(any scale, so it fills the panel's width or height); **Fill** (a toggle, kept per office) fills the panel instead,
|
|
303
324
|
cropping what overflows — drag to see it. **+** / **−** step in pixel levels (each logical unit a whole number of
|
|
@@ -314,6 +335,10 @@ A pack may add a `foreground` (a 16:9 PNG over the whole scene, zones packs only
|
|
|
314
335
|
and items in the air, below name tags, bubbles and "+N" — door frames, pillars, table fronts that hide whoever walks
|
|
315
336
|
behind them. A furniture item's `depth` may be `"y"`: drawn among the people by base y (whoever stands lower is in
|
|
316
337
|
front). Numeric depths keep their meaning (under 1000 under the people, 1000 and up over them).
|
|
338
|
+
An item with `activeWhen` may wait for its person (#2698): `"activeOn": "seated"` turns it active only once one of its
|
|
339
|
+
`activeFor` people in that state has arrived at their seat, and back as they walk off (default `"state"`: as the state
|
|
340
|
+
changes); `"hides": true` (needs `activeFor`) stops drawing those people while it is active (walking, they are drawn),
|
|
341
|
+
puts their name tags (one row at the item's tag point) and bubbles on it, and makes hovering or clicking it hit them.
|
|
317
342
|
A pack may set `"straight": true` (#2634): each diagonal leg of a walk becomes an L (across, then up or down), so the
|
|
318
343
|
three walking strips always fit; lay its graph out with horizontal and vertical edges and the corners land on the aisles.
|
|
319
344
|
|
|
@@ -359,7 +384,8 @@ to that instance's Log).
|
|
|
359
384
|
colours only; status colours (Needs you count, state dots, errors, focus ring) never change. The header follows the
|
|
360
385
|
page, not the chat. Off with agents' themes off or `?safe=1`.
|
|
361
386
|
|
|
362
|
-
Phone layout: bottom tabs Chat, Needs you, Fleet, Settings.
|
|
387
|
+
Phone layout: bottom tabs Chat, Needs you, Fleet, Settings. Settings opens on its list of sections (search on top);
|
|
388
|
+
each section opens on its own page with "‹ Settings", and dialogs and the setup wizard are full-screen sheets. Chat is current on any of an agent's pages and goes to its
|
|
363
389
|
chat; View, Log and Details are the switch under the header.
|
|
364
390
|
|
|
365
391
|
## Usage and the cache report
|
|
@@ -476,7 +502,10 @@ signed in? kiro logs out first; **Use a temporary public link** where allowed),
|
|
|
476
502
|
sign-in terminal** + its one-time access code (this browser only, no DM). While it runs every admin page shows
|
|
477
503
|
"Signing in to X (started on <device>)" with **Open**; another browser sees no code and may **Cancel sign-in**. Ends
|
|
478
504
|
when the browser session ends. A missing CLI is not installed here (the dialog says the install command). agy and
|
|
479
|
-
opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`).
|
|
505
|
+
opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`). Default Kiro, Claude Code and Codex
|
|
506
|
+
accounts sign in with named browser controls instead (#2599): Kiro's account method, Start URL and region and Claude's
|
|
507
|
+
code are entered in the browser, Codex shows its link and device code; credential profiles keep the dialog above. A
|
|
508
|
+
backend skipped at first setup shows in Needs you even before an agent uses it.
|
|
480
509
|
|
|
481
510
|
**Agents** — **New agent**; per agent **Settings**, **Pause / Wake**, **Start / Stop** (direct), ⋯ **Delete agent**
|
|
482
511
|
(staged; on Apply it waits for a fleet admin's confirmation in General, then the agent is stopped and removed, as
|
|
@@ -513,10 +542,12 @@ Advanced **Context lines** (these restart the room's agent); Tool progress and R
|
|
|
513
542
|
|
|
514
543
|
**Agent defaults** — **Project folders** (`project_roots`: where New agent may put an agent; empty = anywhere;
|
|
515
544
|
changing it waits for a fleet admin's OK) and the fleet defaults (`defaults.*`): **Language (bot replies)** (`locale`: Auto / en / zh-TW), default
|
|
516
|
-
backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard
|
|
545
|
+
backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard, **Native replies trigger ClassicBot**
|
|
546
|
+
(`reply_triggers`: a native reply triggers a ClassicBot bot; off by default, #2576); Advanced: tool set, agent mode, log
|
|
517
547
|
level, **Hang detector enabled** / **Stuck timeout** (`hang_detector.*`), **Startup concurrency** (1–20) and
|
|
518
548
|
**Stagger delay** (`startup.*`, restart AgEnD). ClassicBot defaults (in Chat & connections; `classicBot.yaml defaults.*`): default backend, tool
|
|
519
|
-
progress, reply guard, **ClassicBot
|
|
549
|
+
progress, reply guard, **Native replies trigger ClassicBot** (`reply_triggers`, also per room), **ClassicBot admins**,
|
|
550
|
+
**Allowed guilds**.
|
|
520
551
|
|
|
521
552
|
**Access & security** (sessions, browser terminal, public link and fixed address, guests, web authority; web echo is in Chat & connections, the Log tab and usage over the link in **Web dashboard**) — all apply at once; loosening waits for an admin; disabled over a public link.
|
|
522
553
|
| Label | Key |
|
|
@@ -542,7 +573,16 @@ Shown read-only ("Set in fleet.yaml"): `web.allowed_hosts`, `view_access`, `prev
|
|
|
542
573
|
connections are off (and the setup wizard); while those have unsaved changes, the editor only reads.
|
|
543
574
|
|
|
544
575
|
**Setup wizard** — agent (backend, directory, name) → platform → token and server/group, your user ID → preview →
|
|
545
|
-
**Create and start**.
|
|
576
|
+
**Create and start**. The directory may be left empty: the agent gets its own folder, `~/.agend/workspaces/<name>`
|
|
577
|
+
(shown under the field); one that is entered must be absolute. On a Telegram or Discord connection the first agent
|
|
578
|
+
is named `general` by default and becomes the fleet's General, in the chat's General topic or channel, when its
|
|
579
|
+
directory is left empty; with a directory it is the worker `agent-1` and the fleet adds its General in its own folder.
|
|
580
|
+
Once a fleet has a connection or a General, a new agent can't be called `general`.
|
|
581
|
+
|
|
582
|
+
**First setup, before any fleet** (`agend setup`, the page the Windows installer opens): the same steps on its own
|
|
583
|
+
page, in English or 繁體中文 (the browser's language; the button at the top switches). The working directory may be
|
|
584
|
+
left empty: the agent then gets its own folder, `~/.agend/workspaces/<name>`, shown under the field and created
|
|
585
|
+
when the host confirms; a directory that is entered must be absolute.
|
|
546
586
|
|
|
547
587
|
## Look
|
|
548
588
|
|
|
@@ -91,7 +91,7 @@ who is not a fleet admin gets a code privately, by sending `/web` or from an adm
|
|
|
91
91
|
as their own Discord or Telegram account. What a guest sees:
|
|
92
92
|
- **With explicit grants** (`web.guests.grants`, set in Settings → Access & security → Guests): exactly the agents an
|
|
93
93
|
admin granted that person, nothing else (default deny once the key exists). The admin picks the person from people
|
|
94
|
-
AgEnD has seen writing to an agent, ticks their agents, saves (giving access or more agents waits for a fleet admin in
|
|
94
|
+
AgEnD has seen writing to an agent, ticks their agents (or ClassicBot rooms, #2667), saves (giving access or more agents waits for a fleet admin in
|
|
95
95
|
General; taking away applies at once and ends their sessions), then presses **Send sign-in code**, a DM, never a post.
|
|
96
96
|
Each code sent and each change to someone's access is in the event log (`guest_code_sent`, `guest_grant_changed`),
|
|
97
97
|
shown to admins under **Recent changes** in that section (no agent's Log tab shows them).
|
|
@@ -196,6 +196,9 @@ tab title. Items, grouped by instance, oldest first:
|
|
|
196
196
|
- the instance: "Paused: sign-in needed", "Crashed";
|
|
197
197
|
- deliveries from the last 24 h: "Could not confirm delivery", "Delivery failed" (source → target · kind).
|
|
198
198
|
|
|
199
|
+
"Asking you a question" is a kiro V3 question card, posted to the instance's chat with a button per answer and a box
|
|
200
|
+
for answering in words (on Discord/Telegram: reply to the post); an MCP input request offers Decline / Cancel and is
|
|
201
|
+
filled in at the terminal (View).
|
|
199
202
|
A prompt shows its own answer buttons (first answer wins); a delivery has **Acknowledge** (clears it everywhere);
|
|
200
203
|
"Paused: sign-in needed" has **Sign in** when the dashboard can run that login (#2233); every item has **Open chat**. **Notify me on this device** (Turn on / Turn off) gives desktop notifications while the
|
|
201
204
|
tab is hidden — per browser, not on phones or plain-HTTP addresses. Config: `needs_you.live_message` (default on),
|
|
@@ -235,8 +238,9 @@ values reloaded after Save. Password fields keep the browser's behaviour.
|
|
|
235
238
|
The sidebar's **Fleet** (zh "Fleet 概覽", at the top) and the phone's Fleet tab open the Fleet tab this device used last
|
|
236
239
|
(`agend_last_fleet_tab`; the Org chart the first time). The sidebar has no separate Fleet (Details) or View row.
|
|
237
240
|
- **Tasks** — the task board: Home lists **projects** (with % done) and what waits for the person (**Confirm** /
|
|
238
|
-
**Send back** finished work, **Answer** a blocked card
|
|
239
|
-
|
|
241
|
+
**Send back** finished work, **Answer** a blocked card — #2756: only the cards the person handed out, as Needs you;
|
|
242
|
+
an agent's card in review says "Waiting for <agent>"); **No project** holds `task`-tool tasks. A project is a board
|
|
243
|
+
of main tasks (M-n) by status — To do, In progress, Blocked, To confirm, Done — with drag to move, an assignee
|
|
240
244
|
filter and each main task's sub tasks (S-n). A card opens in a dialog: every field editable, its sub tasks, comments,
|
|
241
245
|
progress log, history. **Search cards** in the header. Only a signed-in person confirms the work they handed out
|
|
242
246
|
(an instance's `done` on such a card is review); a card an agent handed out, that agent confirms (#2434). No
|
|
@@ -261,31 +265,47 @@ Click a team header to fold it. **Find** dims everything that doesn't match. A c
|
|
|
261
265
|
and backend; clicking it opens the chat. List mode adds the description, model, a link to the Discord thread or
|
|
262
266
|
Telegram topic, and **Open chat**.
|
|
263
267
|
|
|
268
|
+
**The Office guide** (`docs/office.md` in the AgEnD repository; `docs/office.zh-TW.md` in Traditional Chinese) is the one page for people: setting up offices, the
|
|
269
|
+
skin-pack manifest format and its limits, Edit layout and seat reservations, bedtime, share links, agents' office and
|
|
270
|
+
pack tools, and rolling back. Point people there for more than the summary below; it lists the version each feature came in.
|
|
271
|
+
|
|
264
272
|
**Office** (the third view, remembered per device) draws the same fleet as a pixel office: a room per team, a desk
|
|
265
273
|
per instance with a name tag, General and "Not in a team" in the **Lobby**. Each little person is its state: typing
|
|
266
274
|
with the lamp on (working), tea break (idle), asleep behind a **Closed** sign (paused/stopped), a hand up under a
|
|
267
275
|
blinking light (needs you, crashed, looks stuck). With **Live** on, each message, delegation and report is carried
|
|
268
276
|
desk to desk along the corridors in the Key's colours; a delegation in progress is a purple folder on the worker's
|
|
269
|
-
desk. Hover
|
|
277
|
+
desk. Hover a desk for its name, state and backend; a click or tap (or Enter in the desk list) opens the
|
|
278
|
+
person's profile card (#2661: a 320 px popover beside them, following them; Esc, a press elsewhere or the same person
|
|
279
|
+
again closes it; on a phone a bottom sheet): level and XP, office and area, model, backend, today, first seen, the
|
|
280
|
+
activity line, **Find in office** and **Chat**. A double-click opens the chat directly. Each name tag has a level badge
|
|
281
|
+
(lifetime work, docs/office.md § Levels; **Settings → Web dashboard → Office levels**, `web.office_levels`). **Find** dims
|
|
270
282
|
the rest. **Show** picks a team or the Lobby and **People** pins chosen instances (both kept per browser); the
|
|
271
283
|
**Office** switcher lists offices kept on the host (`web-offices.json`, `GET`/`PUT /ui/offices`). An admin session
|
|
272
284
|
(never a read-only one, a guest or the public link) gets **Edit offices** (≥1200 px: a panel docked on the right in the
|
|
273
285
|
usage rail's place, the Office in use beside it, × or Esc closes it and the rail returns; narrower: a centred dialog): add, rename and delete offices, pick who is
|
|
274
|
-
in each (whole teams or single instances; none = everyone) and its style, and upload or delete **skin packs** (an
|
|
286
|
+
in each (Everyone, Picked: whole teams or single instances, or #2752 Nobody: its style's NPCs only; none picked = everyone) and its style, and upload or delete **skin packs** (an
|
|
275
287
|
artist's pictures: `manifest.json` plus PNGs, format v1, kept in `web-office-skins/` in the AgEnD home; the host
|
|
276
288
|
checks every rule — PNG only, each strip exactly frames·w × h, a 16:9 background, size caps — and never changes a
|
|
277
289
|
pack; a strip may give its displayed size, `dw`/`dh`, apart from its pictures' size, and a character may walk four
|
|
278
|
-
ways with `walkDown`, `walkUp` and `walkSide`, the side one mirrored for left).
|
|
290
|
+
ways with `walkDown`, `walkUp` and `walkSide`, the side one mirrored for left). #2692: an agent with **Office skin
|
|
291
|
+
packs** on (`office_pack_access`, Dashboard access) can check, upload, replace, delete and restore packs itself (one
|
|
292
|
+
previous version kept per pack); **Agents changing packs** under the packs names those agents, sets whether their changes
|
|
293
|
+
**Need my yes** (the default) or **Apply at once**, and approves or rejects the waiting ones (also from the notice's
|
|
294
|
+
buttons in General); every change is logged and told in General. **Style** (per office for a stored one; for the whole fleet, #2716, an admin's pick is kept on the host for every device and share link, anyone else's stays in their browser): **Desks**,
|
|
279
295
|
**Studio** (one scene — Work, Lounge, Help desk, Nap corner — where each instance walks to the area for its state),
|
|
280
296
|
**Cozy** (#2631: the same in a warm pixel-art office drawn as one picture; its notice board says a skin pack can
|
|
281
297
|
restyle it; the default for a browser that has not picked a style and for a new office — a saved office keeps its
|
|
282
298
|
own) or an uploaded pack; one the page cannot load is drawn as Desks with a note. On a stored office in Studio,
|
|
283
299
|
Cozy or a pack,
|
|
284
|
-
**Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door
|
|
300
|
+
**Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door, the mail drop
|
|
301
|
+
(an envelope: where letters from other offices land; dashed on a pack without a `mailDrop`, #2736) and
|
|
285
302
|
waypoints (or Tab to one and use the arrow keys, Shift for 10), add or remove waypoints and join or unjoin
|
|
286
303
|
corridors; an item that sleeps at bedtime (a pack's `night`) has a night handle too ("Item {id} (night)": its night
|
|
287
304
|
picture faint, a moon, a line to its day place; on the day place while it sleeps in place) — drag it to give the item
|
|
288
|
-
its own night place, **Back to the pack's night place** undoes it (#2665);
|
|
305
|
+
its own night place, **Back to the pack's night place** undoes it (#2665); a selected seat has **Reserved for** (the
|
|
306
|
+
office's members, several allowed) and **Lend when away** (#2691) — whoever it is for sits there first when they come
|
|
307
|
+
to its area, nobody else does unless it is lent while they are all away (a borrower moves off when one comes), and a
|
|
308
|
+
reserved seat's handle is ringed; a pack can reserve seats as well; **Save layout** keeps the moves as that
|
|
289
309
|
office's overrides (the pack stays as uploaded), **Reset** goes back to the pack's own. On a screen ≥1200 px its controls sit in the right-hand panel (the canvas whole for the
|
|
290
310
|
handles); narrower, or in fullscreen, they are the bar along the canvas's bottom. Esc is Cancel. While either editor
|
|
291
311
|
is docked the page beside it works, Ctrl+K search included; leaving the page with unsaved changes asks first
|
|
@@ -302,8 +322,8 @@ only. Hover and click work across
|
|
|
302
322
|
tiles; a tile's label, or a double-click on it, opens that office; traffic between offices flies straight across.
|
|
303
323
|
Edit offices and Edit layout wait for a single office.
|
|
304
324
|
**Share…** (#2636; an admin session, on the dashboard reached directly or over the public link — never read-only or a guest; the URL shows only to its maker, in the dialog) makes an Office share
|
|
305
|
-
link: anyone who opens it watches one office
|
|
306
|
-
colours and states, every 5 s; no chat, no
|
|
325
|
+
link: anyone who opens it watches **Whole fleet** (#2716, in the fleet's style), one office or **All offices** live, in the link's **Look** (#2715: Light, Dark or the viewer's device; default what the maker's dashboard shows now), read-only, with no sign-in — names, identity
|
|
326
|
+
colours and states, every 5 s; no chat, no settings (a click shows a card with name, title, state, office and level only); agents' `office_set` lines only when
|
|
307
327
|
**Include agents' own status lines** is ticked; hidden instances never. 1 h by default, 15 min to 24 h
|
|
308
328
|
(`web.office_share.max_hours`); at most 10 open. Its own quick tunnel (`https://<random>.trycloudflare.com/o/<token>`)
|
|
309
329
|
starts with the first link and stops with the last; the token is shown once. There is no chat command: the button only. Open links and **Revoke** are in **Settings → Access
|
|
@@ -311,8 +331,9 @@ starts with the first link and stops with the last; the token is shown once. The
|
|
|
311
331
|
says to try again in a few minutes (no retry). `web.office_share.enabled: false` turns it off and ends open links.
|
|
312
332
|
|
|
313
333
|
The Office fills the Fleet panel and moves like the Canvas (#2540): drag to pan, the wheel or a pinch to zoom,
|
|
314
|
-
**+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them
|
|
315
|
-
(with the office focused), an overview at the bottom right to jump (not on a phone
|
|
334
|
+
**+** / **−** / **Fit** / **Fill** at the top right (the zoom shown as a percentage above them; on a phone, outside
|
|
335
|
+
fullscreen, a row along the top of the scene) or the `+ - 0` keys (with the office focused), an overview at the bottom right to jump (not on a phone; hidden while a single office
|
|
336
|
+
is all in view, #2737). It takes the whole panel: the
|
|
316
337
|
Fleet area's full width, down to the window's foot. **Fit** shows the whole scene as large as the panel allows
|
|
317
338
|
(any scale, so it fills the panel's width or height); **Fill** (a toggle, kept per office) fills the panel instead,
|
|
318
339
|
cropping what overflows — drag to see it. **+** / **−** step in pixel levels (each logical unit a whole number of
|
|
@@ -329,6 +350,10 @@ A pack may add a `foreground` (a 16:9 PNG over the whole scene, zones packs only
|
|
|
329
350
|
and items in the air, below name tags, bubbles and "+N" — door frames, pillars, table fronts that hide whoever walks
|
|
330
351
|
behind them. A furniture item's `depth` may be `"y"`: drawn among the people by base y (whoever stands lower is in
|
|
331
352
|
front). Numeric depths keep their meaning (under 1000 under the people, 1000 and up over them).
|
|
353
|
+
An item with `activeWhen` may wait for its person (#2698): `"activeOn": "seated"` turns it active only once one of its
|
|
354
|
+
`activeFor` people in that state has arrived at their seat, and back as they walk off (default `"state"`: as the state
|
|
355
|
+
changes); `"hides": true` (needs `activeFor`) stops drawing those people while it is active (walking, they are drawn),
|
|
356
|
+
puts their name tags (one row at the item's tag point) and bubbles on it, and makes hovering or clicking it hit them.
|
|
332
357
|
A pack may set `"straight": true` (#2634): each diagonal leg of a walk becomes an L (across, then up or down), so the
|
|
333
358
|
three walking strips always fit; lay its graph out with horizontal and vertical edges and the corners land on the aisles.
|
|
334
359
|
|
|
@@ -374,7 +399,8 @@ to that instance's Log).
|
|
|
374
399
|
colours only; status colours (Needs you count, state dots, errors, focus ring) never change. The header follows the
|
|
375
400
|
page, not the chat. Off with agents' themes off or `?safe=1`.
|
|
376
401
|
|
|
377
|
-
Phone layout: bottom tabs Chat, Needs you, Fleet, Settings.
|
|
402
|
+
Phone layout: bottom tabs Chat, Needs you, Fleet, Settings. Settings opens on its list of sections (search on top);
|
|
403
|
+
each section opens on its own page with "‹ Settings", and dialogs and the setup wizard are full-screen sheets. Chat is current on any of an agent's pages and goes to its
|
|
378
404
|
chat; View, Log and Details are the switch under the header.
|
|
379
405
|
|
|
380
406
|
## Usage and the cache report
|
|
@@ -491,7 +517,10 @@ signed in? kiro logs out first; **Use a temporary public link** where allowed),
|
|
|
491
517
|
sign-in terminal** + its one-time access code (this browser only, no DM). While it runs every admin page shows
|
|
492
518
|
"Signing in to X (started on <device>)" with **Open**; another browser sees no code and may **Cancel sign-in**. Ends
|
|
493
519
|
when the browser session ends. A missing CLI is not installed here (the dialog says the install command). agy and
|
|
494
|
-
opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`).
|
|
520
|
+
opencode: no dashboard sign-in. Config: `web_terminal.*` (as `/login`). Default Kiro, Claude Code and Codex
|
|
521
|
+
accounts sign in with named browser controls instead (#2599): Kiro's account method, Start URL and region and Claude's
|
|
522
|
+
code are entered in the browser, Codex shows its link and device code; credential profiles keep the dialog above. A
|
|
523
|
+
backend skipped at first setup shows in Needs you even before an agent uses it.
|
|
495
524
|
|
|
496
525
|
**Agents** — **New agent**; per agent **Settings**, **Pause / Wake**, **Start / Stop** (direct), ⋯ **Delete agent**
|
|
497
526
|
(staged; on Apply it waits for a fleet admin's confirmation in General, then the agent is stopped and removed, as
|
|
@@ -528,10 +557,12 @@ Advanced **Context lines** (these restart the room's agent); Tool progress and R
|
|
|
528
557
|
|
|
529
558
|
**Agent defaults** — **Project folders** (`project_roots`: where New agent may put an agent; empty = anywhere;
|
|
530
559
|
changing it waits for a fleet admin's OK) and the fleet defaults (`defaults.*`): **Language (bot replies)** (`locale`: Auto / en / zh-TW; read at startup: restart AgEnD), default
|
|
531
|
-
backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard
|
|
560
|
+
backend and model, auto-pause, tool progress, bot-to-bot visibility, reply guard, **Native replies trigger ClassicBot**
|
|
561
|
+
(`reply_triggers`: a native reply triggers a ClassicBot bot; off by default, #2576); Advanced: tool set, agent mode, log
|
|
532
562
|
level, **Hang detector enabled** / **Stuck timeout** (`hang_detector.*`), **Startup concurrency** (1–20) and
|
|
533
563
|
**Stagger delay** (`startup.*`, used from the next agent start, no restart). ClassicBot defaults (in Chat & connections; `classicBot.yaml defaults.*`): default backend, tool
|
|
534
|
-
progress, reply guard, **ClassicBot
|
|
564
|
+
progress, reply guard, **Native replies trigger ClassicBot** (`reply_triggers`, also per room), **ClassicBot admins**,
|
|
565
|
+
**Allowed guilds**.
|
|
535
566
|
|
|
536
567
|
**Access & security** (sessions, browser terminal, public link and fixed address, guests, web authority; web echo is in Chat & connections, the Log tab and usage over the link in **Web dashboard**) — all apply at once; loosening waits for an admin; disabled over a public link.
|
|
537
568
|
| Label | Key |
|
|
@@ -557,7 +588,16 @@ Shown read-only ("Set in fleet.yaml"): `web.allowed_hosts`, `view_access`, `prev
|
|
|
557
588
|
connections are off (and the setup wizard); while those have unsaved changes, the editor only reads.
|
|
558
589
|
|
|
559
590
|
**Setup wizard** — agent (backend, directory, name) → platform → token and server/group, your user ID → preview →
|
|
560
|
-
**Create and start**.
|
|
591
|
+
**Create and start**. The directory may be left empty: the agent gets its own folder, `~/.agend/workspaces/<name>`
|
|
592
|
+
(shown under the field); one that is entered must be absolute. On a Telegram or Discord connection the first agent
|
|
593
|
+
is named `general` by default and becomes the fleet's General, in the chat's General topic or channel, when its
|
|
594
|
+
directory is left empty; with a directory it is the worker `agent-1` and the fleet adds its General in its own folder.
|
|
595
|
+
Once a fleet has a connection or a General, a new agent can't be called `general`.
|
|
596
|
+
|
|
597
|
+
**First setup, before any fleet** (`agend setup`, the page the Windows installer opens): the same steps on its own
|
|
598
|
+
page, in English or 繁體中文 (the browser's language; the button at the top switches). The working directory may be
|
|
599
|
+
left empty: the agent then gets its own folder, `~/.agend/workspaces/<name>`, shown under the field and created
|
|
600
|
+
when the host confirms; a directory that is entered must be absolute.
|
|
561
601
|
|
|
562
602
|
## Look
|
|
563
603
|
|
|
@@ -39,7 +39,7 @@ export const HOT_INSTANCE_CONFIG_KEYS = new Set([
|
|
|
39
39
|
// #2303: the fleet reads it at each task board claim; the daemon only keeps it current.
|
|
40
40
|
"board_cards_at_once",
|
|
41
41
|
// The fleet reads it at each tool call; the daemon keeps it current for the next spawn's tool menu.
|
|
42
|
-
"dashboard", "office_access",
|
|
42
|
+
"dashboard", "office_access", "office_pack_access",
|
|
43
43
|
]);
|
|
44
44
|
/**
|
|
45
45
|
* The hot keys a ClassicBot channel edit can use.
|
|
@@ -75,7 +75,7 @@ const INSTANCE_FIELDS = [
|
|
|
75
75
|
// #2303: read by the fleet at each task board claim.
|
|
76
76
|
"board_cards_at_once",
|
|
77
77
|
// Read by the fleet at each tool call (dashboard-permissions.ts).
|
|
78
|
-
"dashboard", "office_access",
|
|
78
|
+
"dashboard", "office_access", "office_pack_access",
|
|
79
79
|
];
|
|
80
80
|
/** ClassicBot channel fields the settings page renders. */
|
|
81
81
|
const CLASSIC_FIELDS = [
|
|
@@ -96,6 +96,7 @@ const FLEET_FIELD_IMPACTS = {
|
|
|
96
96
|
"web.echo_to_channel": "now",
|
|
97
97
|
"web.log_tab": "now",
|
|
98
98
|
"web.usage_report_on_public_link": "now",
|
|
99
|
+
"web.office_levels": "now",
|
|
99
100
|
"web.public_link.allow_public": "now",
|
|
100
101
|
"web.public_link.ttl_minutes": "now",
|
|
101
102
|
"web.public_link.protocol": "now",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-config-impact.js","sourceRoot":"","sources":["../src/instance-config-impact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAM9C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,YAAY,GAA4B,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsC,IAAI,GAAG,CAAuB;IACvG,eAAe;IACf,wBAAwB;IACxB,gBAAgB;IAChB,iBAAiB;IACjB,yBAAyB;IACzB,kBAAkB;IAClB,UAAU;IACV,cAAc;IACd,aAAa;IACb,MAAM;IACN,WAAW;IACX,sFAAsF;IACtF,2BAA2B;IAC3B,wFAAwF;IACxF,qBAAqB;IACrB,oGAAoG;IACpG,WAAW,EAAE,eAAe;
|
|
1
|
+
{"version":3,"file":"instance-config-impact.js","sourceRoot":"","sources":["../src/instance-config-impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -108,6 +108,10 @@ export interface LifecycleContext {
|
|
|
108
108
|
notifyInstanceTopic(name: string, text: string): boolean | void;
|
|
109
109
|
/** Notify the blocked instance and offer an interactive assist action in General. */
|
|
110
110
|
notifyInteractivePrompt(name: string, kind: string): Promise<void>;
|
|
111
|
+
/** #2675: a card the CLI shows in place of its composer: put it to the people who talk to the instance, with its answers. */
|
|
112
|
+
postRemoteCard?(name: string, card: import("./backend/types.js").RemoteCard): Promise<void>;
|
|
113
|
+
/** #2675: that card is gone from the screen: its post's buttons collapse. */
|
|
114
|
+
retireRemoteCard?(name: string, identity: string | null): void;
|
|
111
115
|
/** #1386: an instance's interaction observation, pause or wake changed ("Needs you" recomputes at once, not at its tick). */
|
|
112
116
|
onAttentionChanged?(name: string): void;
|
|
113
117
|
/**
|
|
@@ -603,6 +603,22 @@ export class InstanceLifecycle {
|
|
|
603
603
|
else
|
|
604
604
|
this.ctx.reactMessageStatus(name, data.chatId, data.messageId, "failed", data.threadId);
|
|
605
605
|
}, this.ctx.logger, `daemon.message_failed[${name}]`));
|
|
606
|
+
// #2770: a cancel dropped these before they reached the CLI. Each is marked ❌ and the person is told once, instead of
|
|
607
|
+
// the messages quietly ending "uncertain".
|
|
608
|
+
daemon.on("human_messages_cancelled", safeHandler((data) => {
|
|
609
|
+
const messages = Array.isArray(data?.messages) ? data.messages : [];
|
|
610
|
+
if (!messages.length)
|
|
611
|
+
return;
|
|
612
|
+
this.ctx.eventLog?.insert(name, "messages_cancelled", { count: messages.length });
|
|
613
|
+
this.ctx.logger.info({ name, count: messages.length }, "Messages dropped by a cancel before delivery — telling the person");
|
|
614
|
+
for (const m of messages) {
|
|
615
|
+
if (this.ctx.finishDeliveryStatus)
|
|
616
|
+
this.ctx.finishDeliveryStatus(name, m.chatId, m.messageId, "failed", m.threadId);
|
|
617
|
+
else
|
|
618
|
+
this.ctx.reactMessageStatus(name, m.chatId, m.messageId, "failed", m.threadId);
|
|
619
|
+
}
|
|
620
|
+
this.ctx.notifyInstanceTopic(name, t("delivery.cancelled_unsent", messages.length, name));
|
|
621
|
+
}, this.ctx.logger, `daemon.human_messages_cancelled[${name}]`));
|
|
606
622
|
}
|
|
607
623
|
attachIncidentHandlers(name, daemon) {
|
|
608
624
|
daemon.on("capacity_nudge_cancelled", safeHandler((data) => {
|
|
@@ -940,6 +956,13 @@ export class InstanceLifecycle {
|
|
|
940
956
|
}
|
|
941
957
|
await this.ctx.notifyInteractivePrompt(name, data.kind);
|
|
942
958
|
}, this.ctx.logger, `daemon.interactive_prompt[${name}]`));
|
|
959
|
+
daemon.on("remote_card", safeHandler(async (data) => {
|
|
960
|
+
this.ctx.eventLog?.insert(name, "remote_card", { kind: data.card.kind });
|
|
961
|
+
await this.ctx.postRemoteCard?.(name, data.card);
|
|
962
|
+
}, this.ctx.logger, `daemon.remote_card[${name}]`));
|
|
963
|
+
daemon.on("remote_card_gone", safeHandler((data) => {
|
|
964
|
+
this.ctx.retireRemoteCard?.(name, data.identity);
|
|
965
|
+
}, this.ctx.logger, `daemon.remote_card_gone[${name}]`));
|
|
943
966
|
daemon.on("pty_error", safeHandler(async (data) => {
|
|
944
967
|
this.ctx.eventLog?.insert(name, "pty_error", { type: data.type, action: data.action });
|
|
945
968
|
this.ctx.logger.warn({ name, errorType: data.type, action: data.action }, `PTY error: ${data.message}`);
|
|
@@ -1003,14 +1026,14 @@ export class InstanceLifecycle {
|
|
|
1003
1026
|
if (data.type === "auth_error") {
|
|
1004
1027
|
const verdict = authVerdict = await this.verifyAuthError(name);
|
|
1005
1028
|
if (verdict === "valid") {
|
|
1006
|
-
this.ctx.logger.
|
|
1007
|
-
//
|
|
1008
|
-
// suspicion and
|
|
1009
|
-
// would silently suppress hang notifications and MCP auto-restart for
|
|
1010
|
-
// an instance whose credentials are demonstrably fine.
|
|
1029
|
+
this.ctx.logger.debug({ name, backend: this.backendOf(name) }, "auth-error pattern ignored — token-free auth check passed (likely conversation text)");
|
|
1030
|
+
// #2795: a pattern match armed nothing, so this only drops it. A login-screen report did arm the auth
|
|
1031
|
+
// suspicion, and leaving that set would suppress hang notifications and MCP auto-restart.
|
|
1011
1032
|
this.daemons.get(name)?.clearSuspectedAuthFailure();
|
|
1012
1033
|
return;
|
|
1013
1034
|
}
|
|
1035
|
+
// #2795: not vouched for — only now is a pattern match an auth failure on the daemon.
|
|
1036
|
+
this.daemons.get(name)?.confirmAuthFailure?.();
|
|
1014
1037
|
}
|
|
1015
1038
|
// #2648: a kiro model error — the resumed conversation's saved model retired, or the instance's own model
|
|
1016
1039
|
// unavailable. Restart once on kiro's default (no model of its own), else say it once; never on every start.
|