@songsid/agend 2.3.2 → 2.3.3-beta.2
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/dist/agent-cli-instructions.md +2 -2
- package/dist/agent-whats-new.d.ts +21 -0
- package/dist/agent-whats-new.js +52 -23
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/authority/authority-state.js +1 -1
- package/dist/authority/authority-state.js.map +1 -1
- package/dist/authority/web-authority.d.ts +9 -4
- package/dist/authority/web-authority.js +10 -5
- package/dist/authority/web-authority.js.map +1 -1
- package/dist/backend/claude-code.d.ts +13 -1
- package/dist/backend/claude-code.js +20 -1
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-session-lookup.d.ts +16 -3
- package/dist/backend/codex-session-lookup.js +45 -11
- package/dist/backend/codex-session-lookup.js.map +1 -1
- package/dist/backend/kiro-reconcile-store.js +8 -1
- package/dist/backend/kiro-reconcile-store.js.map +1 -1
- package/dist/backend/kiro.d.ts +0 -5
- package/dist/backend/kiro.js +0 -10
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/types.d.ts +7 -4
- package/dist/backend/types.js.map +1 -1
- package/dist/cli.js +18 -3
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +4 -5
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +4 -2
- 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 +90 -63
- package/dist/daemon.js +412 -317
- package/dist/daemon.js.map +1 -1
- package/dist/daily-summary.d.ts +8 -1
- package/dist/daily-summary.js +8 -5
- package/dist/daily-summary.js.map +1 -1
- package/dist/delivery-outbox.d.ts +31 -22
- package/dist/delivery-outbox.js +119 -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/fleet-level-config.js +1 -1
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +4 -21
- package/dist/fleet-manager.js +38 -159
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-service-owner.d.ts +11 -0
- package/dist/fleet-service-owner.js +3 -0
- package/dist/fleet-service-owner.js.map +1 -0
- package/dist/general-knowledge/skills/delegation-playbook/SKILL.md +1 -1
- package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
- package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +4 -5
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +4 -5
- package/dist/instance-lifecycle.js +23 -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-reconcile.js +3 -3
- package/dist/kiro-reconcile.js.map +1 -1
- package/dist/locale.js +8 -52
- package/dist/locale.js.map +1 -1
- package/dist/log-service.js +1 -1
- package/dist/log-service.js.map +1 -1
- package/dist/needs-you-hub.js +4 -1
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you-live.d.ts +3 -1
- package/dist/needs-you-live.js +24 -2
- package/dist/needs-you-live.js.map +1 -1
- package/dist/needs-you.d.ts +6 -1
- package/dist/needs-you.js +4 -0
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.js +1 -1
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.js +1 -1
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/scheduler/task-board.d.ts +17 -25
- package/dist/scheduler/task-board.js +29 -39
- 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/settings-api.d.ts +0 -1
- package/dist/settings-api.js +1 -14
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-effect.js +0 -2
- package/dist/settings-effect.js.map +1 -1
- package/dist/setup-wizard.d.ts +3 -0
- package/dist/setup-wizard.js +4 -2
- package/dist/setup-wizard.js.map +1 -1
- package/dist/task-board-waker.d.ts +40 -1
- package/dist/task-board-waker.js +110 -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/topic-commands.d.ts +2 -0
- package/dist/topic-commands.js +2 -1
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-monitor.js +17 -0
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/types.d.ts +7 -10
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/settings-appearance.js +3 -35
- package/dist/ui/settings-registry.js +0 -1
- package/dist/ui/settings-strings.js +4 -4
- package/dist/ui/settings-web-authority.js +4 -3
- package/dist/ui/shared/app-i18n.js +2 -2
- 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/web-experimental.d.ts +6 -2
- package/dist/web-experimental.js +8 -4
- package/dist/web-experimental.js.map +1 -1
- package/dist/web-settings-patch.d.ts +0 -1
- package/dist/web-settings-patch.js +3 -4
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/workflow-templates/default.md +2 -2
- package/dist/working-recovery.d.ts +0 -2
- package/dist/working-recovery.js +2 -23
- package/dist/working-recovery.js.map +1 -1
- package/launcher/agend-install.cjs +7 -1
- package/launcher/fleet-service-owner.cjs +138 -0
- package/package.json +1 -1
- package/dist/task-board-summary.d.ts +0 -101
- package/dist/task-board-summary.js +0 -177
- package/dist/task-board-summary.js.map +0 -1
- package/dist/upgrade-notices.d.ts +0 -17
- package/dist/upgrade-notices.js +0 -93
- package/dist/upgrade-notices.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const fleetServiceOwner: {
|
|
2
|
+
updateRefusal(home: string, options?: {
|
|
3
|
+
locale?: string;
|
|
4
|
+
}): string | null;
|
|
5
|
+
restartRefusal(home: string, service: {
|
|
6
|
+
unit: string;
|
|
7
|
+
user: boolean;
|
|
8
|
+
}, options?: {
|
|
9
|
+
locale?: string;
|
|
10
|
+
}): string | null;
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-service-owner.js","sourceRoot":"","sources":["../src/fleet-service-owner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,qCAAqC,CAGpG,CAAC"}
|
|
@@ -29,7 +29,7 @@ When an instance reports back, classify the outcome:
|
|
|
29
29
|
- Success → Summarize key results for user. Omit internal coordination noise.
|
|
30
30
|
- Partial → State what succeeded, what remains, proposed next steps.
|
|
31
31
|
- Failure → Retry up to 2 times. If still failing: try alternative instance, reduce scope, or return partial result clearly marked.
|
|
32
|
-
- No response →
|
|
32
|
+
- No response → check `describe_instance` and `delivery_status` before asking again (the owner is reminded on its own; you are not notified). If still silent: report to user with options.
|
|
33
33
|
|
|
34
34
|
## Shared Decisions
|
|
35
35
|
|
|
@@ -35,7 +35,7 @@ agend update --yes # from a fleet session: the installed channel's la
|
|
|
35
35
|
agend update --version 2.2.0 --yes # a specific version
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
It installs the selected release, checks the install, and restarts the fleet service. `--alpha` / `--beta` / `--stable` pick a channel; details in docs/cli.md. A beta install stays on the beta channel
|
|
38
|
+
It installs the selected release, checks the install, and restarts the fleet service. `--alpha` / `--beta` / `--stable` pick a channel; details in docs/cli.md. A beta install stays on the beta channel and keeps getting betas.
|
|
39
39
|
|
|
40
40
|
**Manual restart (if update isn't needed):**
|
|
41
41
|
```bash
|
|
@@ -6,7 +6,7 @@ roles: [general]
|
|
|
6
6
|
|
|
7
7
|
## Auth failure (auto-pause)
|
|
8
8
|
|
|
9
|
-
When AgEnD sees `auth_error` it **pauses** that instance (`pausePending` sticky):
|
|
9
|
+
When AgEnD sees `auth_error` and its token-free auth check does not vouch for the login, it **pauses** that instance (`pausePending` sticky). Auth text on the pane alone (an agent quoting a login message) changes nothing:
|
|
10
10
|
- One notification **per backend** (not per instance) — log in once, same-backend peers recover.
|
|
11
11
|
- Auth is **per backend**: one re-login restores every instance on that backend (claude-code, codex, kiro-cli, grok, opencode, antigravity, muse).
|
|
12
12
|
- Re-login: `/login <backend>` (opencode: `opencode auth login` in a terminal), then wake the affected instance.
|
|
@@ -107,8 +107,8 @@ just **✓ Verified**, with the until-when in its tooltip, its accessible name a
|
|
|
107
107
|
browser's messages then carry the account's authority in their delivery receipt for `max_session_hours` (default 48).
|
|
108
108
|
Not me signs that browser out, also after Confirm, from the same card. At most one card waits per browser, and 3 an hour
|
|
109
109
|
per account. Never for a guest. Over the admin's own named link (#2453) only with **Also over my named link**
|
|
110
|
-
(`named_link`, off by default); over the temporary public link `/web` opens
|
|
111
|
-
link** (`quick_link`,
|
|
110
|
+
(`named_link`, off by default); over the temporary public link `/web` opens while **Also over the temporary public
|
|
111
|
+
link** is on (`quick_link`, on by default since #2819, §0.3; `quick_link: false` turns it off). That authority ends with the link, and the card says "over your named link"
|
|
112
112
|
or "over the temporary public link". When a browser can't be authorized, the line says why (with a link to Settings when the switch, "Only
|
|
113
113
|
this computer" or the named-link option is the reason). Settings → Access & security → **Web authority** (`web.verified_authority`, on
|
|
114
114
|
by default) has the switch, **Only this computer can authorize** (`loopback_only`), **Also over my named link** (shown
|
|
@@ -194,8 +194,7 @@ A prompt shows its own answer buttons (first answer wins); a delivery has **Ackn
|
|
|
194
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
|
|
195
195
|
tab is hidden — per browser, not on phones or plain-HTTP addresses. Config: `needs_you.live_message` (default on),
|
|
196
196
|
`needs_you.dm` (default off), `needs_you.task_board` (default off: the task board's cards waiting
|
|
197
|
-
for you — set `true` to list them).
|
|
198
|
-
e.g. `"09:00"`).
|
|
197
|
+
for you — set `true` to list them).
|
|
199
198
|
|
|
200
199
|
## Search
|
|
201
200
|
|
|
@@ -256,7 +255,7 @@ Telegram topic, and **Open chat**.
|
|
|
256
255
|
|
|
257
256
|
**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
257
|
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
|
|
258
|
+
pack tools, and rolling back. Point people there for more than the summary below; it lists the version each feature came in.
|
|
260
259
|
|
|
261
260
|
**Office** (the third view, remembered per device) draws the same fleet as a pixel office: a room per team, a desk
|
|
262
261
|
per instance with a name tag, General and "Not in a team" in the **Lobby**. Each little person is its state: typing
|
|
@@ -115,8 +115,8 @@ just **✓ Verified**, with the until-when in its tooltip, its accessible name a
|
|
|
115
115
|
browser's messages then carry the account's authority in their delivery receipt for `max_session_hours` (default 48).
|
|
116
116
|
Not me signs that browser out, also after Confirm, from the same card. At most one card waits per browser, and 3 an hour
|
|
117
117
|
per account. Never for a guest. Over the admin's own named link (#2453) only with **Also over my named link**
|
|
118
|
-
(`named_link`, off by default); over the temporary public link `/web` opens
|
|
119
|
-
link** (`quick_link`,
|
|
118
|
+
(`named_link`, off by default); over the temporary public link `/web` opens while **Also over the temporary public
|
|
119
|
+
link** is on (`quick_link`, on by default since #2819, §0.3; `quick_link: false` turns it off). That authority ends with the link, and the card says "over your named link"
|
|
120
120
|
or "over the temporary public link". When a browser can't be authorized, the line says why (with a link to Settings when the switch, "Only
|
|
121
121
|
this computer" or the named-link option is the reason). Settings → Access & security → **Web authority** (`web.verified_authority`, on
|
|
122
122
|
by default) has the switch, **Only this computer can authorize** (`loopback_only`), **Also over my named link** (shown
|
|
@@ -203,8 +203,7 @@ A prompt shows its own answer buttons (first answer wins); a delivery has **Ackn
|
|
|
203
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
|
|
204
204
|
tab is hidden — per browser, not on phones or plain-HTTP addresses. Config: `needs_you.live_message` (default on),
|
|
205
205
|
`needs_you.dm` (default off), `needs_you.task_board` (default off: the task board's cards waiting
|
|
206
|
-
for you — set `true` to list them).
|
|
207
|
-
e.g. `"09:00"`).
|
|
206
|
+
for you — set `true` to list them).
|
|
208
207
|
|
|
209
208
|
## Search
|
|
210
209
|
|
|
@@ -267,7 +266,7 @@ Telegram topic, and **Open chat**.
|
|
|
267
266
|
|
|
268
267
|
**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
268
|
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
|
|
269
|
+
pack tools, and rolling back. Point people there for more than the summary below; it lists the version each feature came in.
|
|
271
270
|
|
|
272
271
|
**Office** (the third view, remembered per device) draws the same fleet as a pixel office: a room per team, a desk
|
|
273
272
|
per instance with a name tag, General and "Not in a team" in the **Lobby**. Each little person is its state: typing
|
|
@@ -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) => {
|
|
@@ -931,6 +947,8 @@ export class InstanceLifecycle {
|
|
|
931
947
|
this.ctx.notifyFleetError?.(t("fleet.dialog_answer_ignored", instancePlace(name), data.description, String(data.attempts)));
|
|
932
948
|
}, this.ctx.logger, `daemon.dialog_answer_ignored[${name}]`));
|
|
933
949
|
daemon.on("instance_interaction", () => this.ctx.onAttentionChanged?.(name));
|
|
950
|
+
// #2822: a usage-limit hold began or ended — Needs you lists it while it lasts.
|
|
951
|
+
daemon.on("usage_hold", () => this.ctx.onAttentionChanged?.(name));
|
|
934
952
|
daemon.on("interactive_prompt", safeHandler(async (data) => {
|
|
935
953
|
this.ctx.eventLog?.insert(name, "interactive_prompt", { kind: data.kind });
|
|
936
954
|
this.ctx.logger.warn({ name, kind: data.kind, prompt: data.prompt }, "Instance is waiting for interactive terminal input");
|
|
@@ -1010,14 +1028,14 @@ export class InstanceLifecycle {
|
|
|
1010
1028
|
if (data.type === "auth_error") {
|
|
1011
1029
|
const verdict = authVerdict = await this.verifyAuthError(name);
|
|
1012
1030
|
if (verdict === "valid") {
|
|
1013
|
-
this.ctx.logger.
|
|
1014
|
-
//
|
|
1015
|
-
// suspicion and
|
|
1016
|
-
// would silently suppress hang notifications and MCP auto-restart for
|
|
1017
|
-
// an instance whose credentials are demonstrably fine.
|
|
1031
|
+
this.ctx.logger.debug({ name, backend: this.backendOf(name) }, "auth-error pattern ignored — token-free auth check passed (likely conversation text)");
|
|
1032
|
+
// #2795: a pattern match armed nothing, so this only drops it. A login-screen report did arm the auth
|
|
1033
|
+
// suspicion, and leaving that set would suppress hang notifications and MCP auto-restart.
|
|
1018
1034
|
this.daemons.get(name)?.clearSuspectedAuthFailure();
|
|
1019
1035
|
return;
|
|
1020
1036
|
}
|
|
1037
|
+
// #2795: not vouched for — only now is a pattern match an auth failure on the daemon.
|
|
1038
|
+
this.daemons.get(name)?.confirmAuthFailure?.();
|
|
1021
1039
|
}
|
|
1022
1040
|
// #2648: a kiro model error — the resumed conversation's saved model retired, or the instance's own model
|
|
1023
1041
|
// unavailable. Restart once on kiro's default (no model of its own), else say it once; never on every start.
|