@songsid/agend 2.3.2-beta.3 → 2.3.2-beta.4
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.js +21 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.js +5 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/auth-api.js +2 -0
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/kiro.d.ts +21 -1
- package/dist/backend/kiro.js +89 -1
- package/dist/backend/kiro.js.map +1 -1
- package/dist/channel/adapters/discord.js +7 -4
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/mcp-tools.js +4 -0
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +5 -0
- package/dist/classic-channel-manager.js +14 -1
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/config-validator.js +22 -5
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +6 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon.js +16 -4
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +20 -6
- package/dist/dashboard-permissions.js +58 -9
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/fleet-manager.d.ts +16 -1
- package/dist/fleet-manager.js +183 -21
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +24 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +24 -1
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +6 -2
- package/dist/instance-config-impact.js +10 -5
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +8 -0
- package/dist/instance-lifecycle.js +5 -3
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +2 -6
- package/dist/locale.js.map +1 -1
- package/dist/notice-delivery.d.ts +15 -0
- package/dist/notice-delivery.js +37 -0
- package/dist/notice-delivery.js.map +1 -0
- package/dist/outbound-schemas.d.ts +20 -0
- package/dist/outbound-schemas.js +17 -0
- 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.js +2 -0
- package/dist/quickstart.js.map +1 -1
- package/dist/reply-triggers.d.ts +2 -0
- package/dist/reply-triggers.js +3 -0
- package/dist/reply-triggers.js.map +1 -0
- package/dist/settings-api.js +27 -4
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +17 -14
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +7 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-instance-patch.js +4 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/setup-host.js +2 -1
- package/dist/setup-host.js.map +1 -1
- package/dist/setup-wizard.js +2 -0
- package/dist/setup-wizard.js.map +1 -1
- package/dist/tool-permissions.js +10 -0
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.js +2 -1
- package/dist/topic-commands.js.map +1 -1
- package/dist/turn-reply-guard.d.ts +1 -1
- package/dist/turn-reply-guard.js +1 -1
- package/dist/turn-reply-guard.js.map +1 -1
- package/dist/types.d.ts +16 -6
- package/dist/ui/fleet-office-editor.js +10 -6
- package/dist/ui/fleet-office-layout.js +34 -28
- package/dist/ui/fleet-office-model.js +6 -3
- package/dist/ui/fleet-office-overview.js +2 -2
- package/dist/ui/fleet-office-pack.d.ts +3 -1
- package/dist/ui/fleet-office-pack.js +58 -7
- package/dist/ui/fleet-office-skin.js +13 -4
- package/dist/ui/fleet-office-store.js +27 -1
- package/dist/ui/fleet-office-view.js +5 -4
- package/dist/ui/fleet-office-zones.js +155 -6
- package/dist/ui/fleet-office.js +169 -41
- package/dist/ui/panel-settings.js +32 -10
- package/dist/ui/settings-dialogs.js +8 -1
- package/dist/ui/settings-model.js +14 -6
- package/dist/ui/settings-registry.js +4 -0
- package/dist/ui/settings-strings.js +14 -0
- package/dist/ui/shared/app-i18n.js +2 -0
- package/dist/ui/shared/app-shell.js +14 -6
- package/dist/ui/shared/app-stream.js +2 -1
- package/dist/ui/shared/app.css +17 -2
- package/dist/ui/shared/side-panel.js +95 -0
- package/dist/web-api.d.ts +3 -0
- package/dist/web-api.js +11 -0
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +1 -1
- package/dist/web-auth.js.map +1 -1
- package/dist/web-office-acts.d.ts +173 -0
- package/dist/web-office-acts.js +285 -0
- package/dist/web-office-acts.js.map +1 -0
- package/dist/web-office-skins.d.ts +1 -1
- package/dist/web-office-skins.js +1 -1
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-settings-patch.d.ts +2 -1
- package/dist/web-settings-patch.js +4 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/package.json +1 -1
- package/templates/windows-shortcuts.ps1 +11 -2
|
@@ -20,6 +20,7 @@ can shape how you look there — **only your own look, and only on the surfaces
|
|
|
20
20
|
| Your identity colour | the colour people find you by in the sidebar, and where it shows (name, bar, ring) | `set_web_theme` (`identity`) |
|
|
21
21
|
| Your chat header strip and Details page | widgets: small panels of facts the dashboard draws | `set_web_widget`, `remove_web_widget` |
|
|
22
22
|
| An ambient effect in your chat | falling petals, snow, rising lanterns, twinkles, stars where a person clicks — data only, drawn by the dashboard | `set_web_ambient`, `clear_web_ambient` |
|
|
23
|
+
| Your character in Fleet → Org chart → Office | walk to a seat, a spot or a person, say a short line, hold a pose — for a few seconds (off until a person switches it on) | `office_view`, `office_set` |
|
|
23
24
|
|
|
24
25
|
None of these tools takes a target: they always act on you. You can't change another instance, the dashboard's own
|
|
25
26
|
chrome (beyond your colours on it while your chat is open), a person's sidebar widget, or a person's custom CSS.
|
|
@@ -265,6 +266,28 @@ needs no Try, no preview consent and no measurement — use it for petals, snow,
|
|
|
265
266
|
|
|
266
267
|
Then stars on a click, alongside: `set_web_ambient { "preset": "burst-on-click", "glyphs": ["✦", "✧"] }`.
|
|
267
268
|
|
|
269
|
+
## Your character in the Office view
|
|
270
|
+
|
|
271
|
+
Fleet → Org chart → **Office** draws the fleet as an office, with a little character per agent placed by its state.
|
|
272
|
+
When a person switches the **office** dashboard feature on for you (`office_access: true`; off until then — the tools
|
|
273
|
+
are not in your list), you can direct your own character for a moment:
|
|
274
|
+
|
|
275
|
+
- `office_view { office? }`: the stored offices you are in — each `{ id, name, skin, members: [{ name, display_name?,
|
|
276
|
+
state }], spots: { seats: [{ area, index, x, y }], waypoints: [{ id, x, y }], npcs: [{ id, label, x, y }], door } }` —
|
|
277
|
+
your current `act` (or null) and `cooldown_ms` (0: you may act now). `walks: false`: the office is drawn as desks (a
|
|
278
|
+
built-in style such as pixel or studio, or a pack without zones) — no spots; `say` and `pose` show, `go` is refused.
|
|
279
|
+
- `office_set { office?, go?, say?, pose?, seconds?, clear? }`: `go` is exactly one of `seat` (`"area:index"`, as
|
|
280
|
+
office_view lists it), `waypoint` (an id) or `person` (a member of the same office); `say` a line of 1..40 characters
|
|
281
|
+
(a speech bubble); `pose` one of idle, working, needs, paused; `seconds` 5..120 (default 30). `clear: true`, alone,
|
|
282
|
+
ends your act. `office` is needed only when you are in more than one.
|
|
283
|
+
- Each call replaces your act. It ends when its seconds are up or you begin new work (the turn you set it in, and being
|
|
284
|
+
idle after, keep it; working again after that, or after setting it while idle, ends it); it is not shown while you
|
|
285
|
+
need a person (needs, crashed, stuck), are paused or stopped, or are asleep at bedtime — real work always shows. At most **6 calls a minute** and **60 an hour**: a refusal says `cooldown_ms`.
|
|
286
|
+
|
|
287
|
+
```json
|
|
288
|
+
{ "go": { "person": "atlas" }, "say": "Review's ready", "seconds": 20 }
|
|
289
|
+
```
|
|
290
|
+
|
|
268
291
|
## Limits
|
|
269
292
|
|
|
270
293
|
- At least **30 s** between changes, at most **10 changes an hour** — refused with `rate_limited` and
|
|
@@ -286,7 +309,7 @@ Then stars on a click, alongside: `set_web_ambient { "preset": "burst-on-click",
|
|
|
286
309
|
From a shell: `agend-agent theme get|set key=value…|set --json '<patch>'|clear <path>…|asset <slot> <file>|reset`,
|
|
287
310
|
`agend-agent appearance`, `agend-agent appearance preview [light|dark]`, and
|
|
288
311
|
`agend-agent widget set <slot> '<spec json>' ['<data json>']|data <slot> '<data json>'|remove [slot]`,
|
|
289
|
-
`agend-agent ambient set '<spec json>'|clear [loop|click]`.
|
|
312
|
+
`agend-agent ambient set '<spec json>'|clear [loop|click]`, `agend-agent office view [office]|set '<json>'`.
|
|
290
313
|
|
|
291
314
|
## Files in your working directory
|
|
292
315
|
|
|
@@ -20,6 +20,7 @@ can shape how you look there — **only your own look, and only on the surfaces
|
|
|
20
20
|
| Your identity colour | the colour people find you by in the sidebar, and where it shows (name, bar, ring) | `set_web_theme` (`identity`) |
|
|
21
21
|
| Your chat header strip and Details page | widgets: small panels of facts the dashboard draws | `set_web_widget`, `remove_web_widget` |
|
|
22
22
|
| An ambient effect in your chat | falling petals, snow, rising lanterns, twinkles, stars where a person clicks — data only, drawn by the dashboard | `set_web_ambient`, `clear_web_ambient` |
|
|
23
|
+
| Your character in Fleet → Org chart → Office | walk to a seat, a spot or a person, say a short line, hold a pose — for a few seconds (off until a person switches it on) | `office_view`, `office_set` |
|
|
23
24
|
| A file of your look | a mod: export yours, or propose one for a person | `export_web_mod`, `propose_web_mod` |
|
|
24
25
|
| Effects in your chat | Canvas Worker animations, and Try cards an admin outside the public link may start | `upload_web_effect`, `apply_web_effect`, `preview_web_effect`, … (see Effects) |
|
|
25
26
|
|
|
@@ -273,6 +274,28 @@ Use a Canvas Worker effect (below) only for what a preset can't express.
|
|
|
273
274
|
|
|
274
275
|
Then stars on a click, alongside: `set_web_ambient { "preset": "burst-on-click", "glyphs": ["✦", "✧"] }`.
|
|
275
276
|
|
|
277
|
+
## Your character in the Office view
|
|
278
|
+
|
|
279
|
+
Fleet → Org chart → **Office** draws the fleet as an office, with a little character per agent placed by its state.
|
|
280
|
+
When a person switches the **office** dashboard feature on for you (`office_access: true`; off until then — the tools
|
|
281
|
+
are not in your list), you can direct your own character for a moment:
|
|
282
|
+
|
|
283
|
+
- `office_view { office? }`: the stored offices you are in — each `{ id, name, skin, members: [{ name, display_name?,
|
|
284
|
+
state }], spots: { seats: [{ area, index, x, y }], waypoints: [{ id, x, y }], npcs: [{ id, label, x, y }], door } }` —
|
|
285
|
+
your current `act` (or null) and `cooldown_ms` (0: you may act now). `walks: false`: the office is drawn as desks (a
|
|
286
|
+
built-in style such as pixel or studio, or a pack without zones) — no spots; `say` and `pose` show, `go` is refused.
|
|
287
|
+
- `office_set { office?, go?, say?, pose?, seconds?, clear? }`: `go` is exactly one of `seat` (`"area:index"`, as
|
|
288
|
+
office_view lists it), `waypoint` (an id) or `person` (a member of the same office); `say` a line of 1..40 characters
|
|
289
|
+
(a speech bubble); `pose` one of idle, working, needs, paused; `seconds` 5..120 (default 30). `clear: true`, alone,
|
|
290
|
+
ends your act. `office` is needed only when you are in more than one.
|
|
291
|
+
- Each call replaces your act. It ends when its seconds are up or you begin new work (the turn you set it in, and being
|
|
292
|
+
idle after, keep it; working again after that, or after setting it while idle, ends it); it is not shown while you
|
|
293
|
+
need a person (needs, crashed, stuck), are paused or stopped, or are asleep at bedtime — real work always shows. At most **6 calls a minute** and **60 an hour**: a refusal says `cooldown_ms`.
|
|
294
|
+
|
|
295
|
+
```json
|
|
296
|
+
{ "go": { "person": "atlas" }, "say": "Review's ready", "seconds": 20 }
|
|
297
|
+
```
|
|
298
|
+
|
|
276
299
|
## Mods
|
|
277
300
|
|
|
278
301
|
A mod is one file, `<name>-<version>.agendmod.json`, that carries a look: a theme with its pictures, card text,
|
|
@@ -322,7 +345,7 @@ with the tools above, then `export_web_mod`.
|
|
|
322
345
|
From a shell: `agend-agent theme get|set key=value…|set --json '<patch>'|clear <path>…|asset <slot> <file>|reset`,
|
|
323
346
|
`agend-agent appearance`, `agend-agent appearance preview [light|dark]`, and
|
|
324
347
|
`agend-agent widget set <slot> '<spec json>' ['<data json>']|data <slot> '<data json>'|remove [slot]`,
|
|
325
|
-
`agend-agent ambient set '<spec json>'|clear [loop|click]`, and
|
|
348
|
+
`agend-agent ambient set '<spec json>'|clear [loop|click]`, `agend-agent office view [office]|set '<json>'`, and
|
|
326
349
|
`agend-agent mod export <name> <version> [title]|propose <file>`.
|
|
327
350
|
|
|
328
351
|
## Files in your working directory
|
|
@@ -269,7 +269,8 @@ desk to desk along the corridors in the Key's colours; a delegation in progress
|
|
|
269
269
|
desk. Hover (or tap once) a desk for its name, state and backend; click (or tap again) opens the chat. **Find** dims
|
|
270
270
|
the rest. **Show** picks a team or the Lobby and **People** pins chosen instances (both kept per browser); the
|
|
271
271
|
**Office** switcher lists offices kept on the host (`web-offices.json`, `GET`/`PUT /ui/offices`). An admin session
|
|
272
|
-
(never a read-only one, a guest or the public link) gets **Edit offices
|
|
272
|
+
(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
|
+
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
|
|
273
274
|
in each (whole teams or single instances; none = everyone) and its style, and upload or delete **skin packs** (an
|
|
274
275
|
artist's pictures: `manifest.json` plus PNGs, format v1, kept in `web-office-skins/` in the AgEnD home; the host
|
|
275
276
|
checks every rule — PNG only, each strip exactly frames·w × h, a 16:9 background, size caps — and never changes a
|
|
@@ -280,7 +281,10 @@ or an uploaded pack; one the page cannot load is drawn as Desks with a note. On
|
|
|
280
281
|
**Edit layout** (admin only) shows a 1280×720 coordinate grid and lets you drag seats, furniture, the door and
|
|
281
282
|
waypoints (or Tab to one and use the arrow keys, Shift for 10), add or remove waypoints and join or unjoin
|
|
282
283
|
corridors; **Save layout** keeps the moves as that office's overrides (the pack stays as uploaded), **Reset** goes
|
|
283
|
-
back to the pack's own.
|
|
284
|
+
back to the pack's own. On a screen ≥1200 px its controls sit in the right-hand panel (the canvas whole for the
|
|
285
|
+
handles); narrower, or in fullscreen, they are the bar along the canvas's bottom. Esc is Cancel. While either editor
|
|
286
|
+
is docked the page beside it works, Ctrl+K search included; leaving the page with unsaved changes asks first
|
|
287
|
+
("Discard changes"). While it is open the office picker and Edit offices wait (**Cancel** closes it); if someone
|
|
284
288
|
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
|
|
285
289
|
only calls and work get bubbles (a few at most) and name tags show on hover or focus. **Hide paused and stopped**
|
|
286
290
|
(per browser, off by default) leaves the sleepers out. Now and then someone says a short line for their state in a
|
|
@@ -25,6 +25,7 @@ export const IMPACT_ORDER = ["now", "instance", "fleet"];
|
|
|
25
25
|
export const HOT_INSTANCE_CONFIG_KEYS = new Set([
|
|
26
26
|
"tool_progress",
|
|
27
27
|
"reply_completion_guard",
|
|
28
|
+
"reply_triggers",
|
|
28
29
|
"mcp_proxy_reply",
|
|
29
30
|
"resume_interrupted_work",
|
|
30
31
|
"auto_pause_after",
|
|
@@ -38,7 +39,7 @@ export const HOT_INSTANCE_CONFIG_KEYS = new Set([
|
|
|
38
39
|
// #2303: the fleet reads it at each task board claim; the daemon only keeps it current.
|
|
39
40
|
"board_cards_at_once",
|
|
40
41
|
// The fleet reads it at each tool call; the daemon keeps it current for the next spawn's tool menu.
|
|
41
|
-
"dashboard",
|
|
42
|
+
"dashboard", "office_access",
|
|
42
43
|
]);
|
|
43
44
|
/**
|
|
44
45
|
* The hot keys a ClassicBot channel edit can use.
|
|
@@ -49,7 +50,7 @@ export const HOT_INSTANCE_CONFIG_KEYS = new Set([
|
|
|
49
50
|
* dropped on the way. Derived, not re-listed: dropping a key from the hot set
|
|
50
51
|
* drops it here too.
|
|
51
52
|
*/
|
|
52
|
-
export const CLASSIC_HOT_CONFIG_KEYS = new Set(["tool_progress", "reply_completion_guard"]
|
|
53
|
+
export const CLASSIC_HOT_CONFIG_KEYS = new Set(["tool_progress", "reply_completion_guard", "reply_triggers"]
|
|
53
54
|
.filter(key => HOT_INSTANCE_CONFIG_KEYS.has(key)));
|
|
54
55
|
/**
|
|
55
56
|
* Instance keys that are not the instance's own business: they change how the
|
|
@@ -64,7 +65,7 @@ const FLEET_SCOPED_INSTANCE_KEYS = new Set([
|
|
|
64
65
|
const INSTANCE_FIELDS = [
|
|
65
66
|
"display_name", "description", "backend", "model", "working_directory",
|
|
66
67
|
"resume_interrupted_work", "auto_pause_after", "warm_cap", "topic_id", "channel_id", "general_topic",
|
|
67
|
-
"tool_progress", "reply_completion_guard", "mcp_proxy_reply", "log_level",
|
|
68
|
+
"tool_progress", "reply_completion_guard", "reply_triggers", "mcp_proxy_reply", "log_level",
|
|
68
69
|
"systemPrompt", "tags", "hang_detector", "agent_mode", "tool_set",
|
|
69
70
|
"lightweight", "model_failover", "effort", "pre_task_command",
|
|
70
71
|
// #1005: the status reactions follow at once, but the instructions' avoid
|
|
@@ -74,12 +75,12 @@ const INSTANCE_FIELDS = [
|
|
|
74
75
|
// #2303: read by the fleet at each task board claim.
|
|
75
76
|
"board_cards_at_once",
|
|
76
77
|
// Read by the fleet at each tool call (dashboard-permissions.ts).
|
|
77
|
-
"dashboard",
|
|
78
|
+
"dashboard", "office_access",
|
|
78
79
|
];
|
|
79
80
|
/** ClassicBot channel fields the settings page renders. */
|
|
80
81
|
const CLASSIC_FIELDS = [
|
|
81
82
|
"backend", "model", "auto_pause_after", "tool_progress",
|
|
82
|
-
"reply_completion_guard", "collab", "context_lines", "pre_task_command",
|
|
83
|
+
"reply_completion_guard", "reply_triggers", "collab", "context_lines", "pre_task_command",
|
|
83
84
|
"web_echo",
|
|
84
85
|
];
|
|
85
86
|
/**
|
|
@@ -87,6 +88,10 @@ const CLASSIC_FIELDS = [
|
|
|
87
88
|
* fleet process or the channel binding rather than to an instance's config.
|
|
88
89
|
*/
|
|
89
90
|
const FLEET_FIELD_IMPACTS = {
|
|
91
|
+
"defaults.tips": "now",
|
|
92
|
+
"web.notify_login": "now",
|
|
93
|
+
"web.notice_delivery": "now",
|
|
94
|
+
"defaults.reply_triggers": "now",
|
|
90
95
|
"web.experimental.canvas_worker": "now",
|
|
91
96
|
"web.echo_to_channel": "now",
|
|
92
97
|
"web.log_tab": "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,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;
|
|
1
|
+
{"version":3,"file":"instance-config-impact.js","sourceRoot":"","sources":["../src/instance-config-impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,15 @@ import type { DeliveryOutbox } from "./delivery-outbox.js";
|
|
|
18
18
|
export { isFleetStartCommandLine } from "./fleet-lock.js";
|
|
19
19
|
export interface BackendInstallationInfo {
|
|
20
20
|
binary: string;
|
|
21
|
+
/** The install command shown to a person (to copy and run themselves). */
|
|
21
22
|
install: string;
|
|
23
|
+
/**
|
|
24
|
+
* The same install when AgEnD runs it with nobody at the terminal (`/login`'s install window). Codex's
|
|
25
|
+
* install.sh asks "Start Codex now? [y/N]" (and, on a conflict, whether to uninstall) on /dev/tty, so a
|
|
26
|
+
* window nobody types into waits until the install times out; CODEX_NON_INTERACTIVE=1 skips both questions.
|
|
27
|
+
* Omitted: `install` runs as it is.
|
|
28
|
+
*/
|
|
29
|
+
unattended?: string;
|
|
22
30
|
/**
|
|
23
31
|
* #1092: where this backend's own installer puts the binary, read from the
|
|
24
32
|
* installer script itself. `/login`'s install verifies on a fresh login shell
|
|
@@ -39,6 +39,7 @@ export const BACKEND_INSTALLATION_INFO = {
|
|
|
39
39
|
// a symlink into ~/.codex/packages/standalone/current/bin (#1092).
|
|
40
40
|
codex: {
|
|
41
41
|
binary: "codex", install: "curl -fsSL https://chatgpt.com/codex/install.sh | sh",
|
|
42
|
+
unattended: "curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh",
|
|
42
43
|
binDirs: (env, home) => [env.CODEX_INSTALL_DIR, localBin(home)].filter((d) => !!d),
|
|
43
44
|
},
|
|
44
45
|
opencode: { binary: "opencode", install: "curl -fsSL https://opencode.ai/install | bash", binDirs: (_env, home) => [join(home, ".opencode", "bin")] },
|
|
@@ -787,9 +788,8 @@ export class InstanceLifecycle {
|
|
|
787
788
|
recovered: data.recovered,
|
|
788
789
|
...(data.recoveryStarted ? { recoveryStarted: true } : {}),
|
|
789
790
|
});
|
|
790
|
-
// The reply guard
|
|
791
|
-
//
|
|
792
|
-
// instance-topic malformed-call notice.
|
|
791
|
+
// The reply guard owns recovery and log-only detection. Do not duplicate
|
|
792
|
+
// a possible false alarm with the older instance-topic malformed-call notice.
|
|
793
793
|
if (data.recoveryStarted)
|
|
794
794
|
return;
|
|
795
795
|
const notificationTarget = this.ptyErrorNotificationTarget(name);
|
|
@@ -803,6 +803,7 @@ export class InstanceLifecycle {
|
|
|
803
803
|
generation: data.generation,
|
|
804
804
|
reason: data.reason,
|
|
805
805
|
recoveryStarted: data.recoveryStarted,
|
|
806
|
+
...(data.message ? { message: data.message } : {}),
|
|
806
807
|
});
|
|
807
808
|
this.ctx.logger.warn(data, "Turn ended without an adapter-confirmed reply");
|
|
808
809
|
}, this.ctx.logger, `daemon.reply_drop_detected[${name}]`));
|
|
@@ -818,6 +819,7 @@ export class InstanceLifecycle {
|
|
|
818
819
|
correlationId: data.correlationId,
|
|
819
820
|
generation: data.generation,
|
|
820
821
|
reason: data.reason,
|
|
822
|
+
...(data.message ? { message: data.message } : {}),
|
|
821
823
|
});
|
|
822
824
|
this.ctx.logger.error(data, "Reply-drop recovery ended without a delivered reply");
|
|
823
825
|
}, this.ctx.logger, `daemon.reply_drop_unrecovered[${name}]`));
|