@songsid/agend 2.1.0-beta.8 → 2.1.0
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 +1 -0
- package/README.zh-TW.md +2 -1
- package/dist/access-path.js +3 -3
- package/dist/access-path.js.map +1 -1
- package/dist/agent-cli.js +1 -1
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.d.ts +8 -0
- package/dist/agent-endpoint.js +36 -8
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/backend/antigravity.d.ts +8 -0
- package/dist/backend/antigravity.js +46 -3
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +6 -0
- package/dist/backend/claude-code.js +20 -4
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex.d.ts +12 -1
- package/dist/backend/codex.js +55 -1
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/factory.js +4 -1
- package/dist/backend/factory.js.map +1 -1
- package/dist/backend/grok.d.ts +59 -0
- package/dist/backend/grok.js +329 -0
- package/dist/backend/grok.js.map +1 -0
- package/dist/backend/kiro.d.ts +6 -0
- package/dist/backend/kiro.js +38 -3
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/opencode.d.ts +5 -0
- package/dist/backend/opencode.js +18 -0
- package/dist/backend/opencode.js.map +1 -1
- package/dist/backend/types.d.ts +59 -3
- package/dist/backend/types.js +15 -2
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +20 -0
- package/dist/channel/adapters/discord.js +88 -11
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.js +4 -1
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/mcp-tools.js +18 -2
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/chat-export.js +5 -2
- package/dist/chat-export.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +16 -1
- package/dist/classic-channel-manager.js +76 -4
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +82 -16
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +70 -1
- package/dist/config-validator.js.map +1 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.js +14 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +83 -5
- package/dist/daemon.js +556 -173
- package/dist/daemon.js.map +1 -1
- package/dist/daily-summary.js +7 -2
- package/dist/daily-summary.js.map +1 -1
- package/dist/fleet-context.d.ts +11 -0
- package/dist/fleet-manager.d.ts +129 -8
- package/dist/fleet-manager.js +1125 -142
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-system-prompt.js +1 -1
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +19 -13
- package/dist/general-knowledge/skills/fleet-health/SKILL.md +30 -51
- package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
- package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +19 -13
- package/dist/general-knowledge/skills/model-discovery/SKILL.md +1 -5
- package/dist/general-knowledge/skills/scheduling/SKILL.md +41 -0
- package/dist/general-knowledge/skills/session-management/SKILL.md +29 -116
- package/dist/instance-lifecycle.d.ts +14 -1
- package/dist/instance-lifecycle.js +59 -20
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +28 -2
- package/dist/locale.js.map +1 -1
- package/dist/logger.d.ts +6 -0
- package/dist/logger.js +23 -7
- package/dist/logger.js.map +1 -1
- package/dist/outbound-handlers.js +199 -11
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +44 -2
- package/dist/outbound-schemas.js +50 -3
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/pause-marker.d.ts +5 -0
- package/dist/pause-marker.js +36 -0
- package/dist/pause-marker.js.map +1 -0
- package/dist/scheduler/db.d.ts +8 -0
- package/dist/scheduler/db.js +74 -5
- package/dist/scheduler/db.js.map +1 -1
- package/dist/scheduler/db.test.js +50 -0
- package/dist/scheduler/db.test.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts +6 -0
- package/dist/scheduler/scheduler.js +99 -16
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/scheduler/scheduler.test.js +131 -1
- package/dist/scheduler/scheduler.test.js.map +1 -1
- package/dist/scheduler/types.d.ts +9 -3
- package/dist/scheduler/types.js.map +1 -1
- package/dist/settings-api.d.ts +20 -2
- package/dist/settings-api.js +213 -9
- package/dist/settings-api.js.map +1 -1
- package/dist/setup-wizard.js +8 -0
- package/dist/setup-wizard.js.map +1 -1
- package/dist/tmux-control.d.ts +7 -0
- package/dist/tmux-control.js +22 -1
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.d.ts +1 -1
- package/dist/tmux-manager.js.map +1 -1
- package/dist/topic-commands.d.ts +14 -0
- package/dist/topic-commands.js +107 -15
- package/dist/topic-commands.js.map +1 -1
- package/dist/types.d.ts +29 -1
- package/dist/tz-utils.d.ts +26 -0
- package/dist/tz-utils.js +46 -0
- package/dist/tz-utils.js.map +1 -0
- package/dist/ui/dashboard.html +3 -3
- package/dist/ui/settings.html +453 -74
- package/dist/web-api.js +3 -1
- package/dist/web-api.js.map +1 -1
- package/dist/workflow-templates/default.md +0 -4
- package/package.json +2 -1
package/dist/tz-utils.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timezone helpers for event-db values.
|
|
3
|
+
*
|
|
4
|
+
* event-db (events/activity) stores timestamps as SQLite `datetime('now')` —
|
|
5
|
+
* "YYYY-MM-DD HH:MM:SS" in **UTC**, with no zone suffix. Storage stays UTC; these
|
|
6
|
+
* helpers convert only for DISPLAY (UTC→local) and QUERY BOUNDARIES (local→UTC),
|
|
7
|
+
* so user-facing times match the local convention used by chat-logs and fleet.log.
|
|
8
|
+
*
|
|
9
|
+
* TZ source matches the chat-log path: `process.env.TZ` override, else the
|
|
10
|
+
* system/Intl resolved zone.
|
|
11
|
+
*/
|
|
12
|
+
export function resolveTz() {
|
|
13
|
+
return process.env.TZ || Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Convert a UTC event-db datetime string ("YYYY-MM-DD HH:MM:SS") to the same
|
|
17
|
+
* format in local `tz`. Unparseable input is returned unchanged.
|
|
18
|
+
*/
|
|
19
|
+
export function utcDbToLocal(utcDbStr, tz = resolveTz()) {
|
|
20
|
+
const d = new Date(utcDbStr.replace(" ", "T") + "Z");
|
|
21
|
+
if (Number.isNaN(d.getTime()))
|
|
22
|
+
return utcDbStr;
|
|
23
|
+
// sv-SE renders ISO-like "YYYY-MM-DD HH:MM:SS".
|
|
24
|
+
return d.toLocaleString("sv-SE", { timeZone: tz, hour12: false });
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Convert a local wall-clock string ("YYYY-MM-DD HH:MM:SS", interpreted in `tz`)
|
|
28
|
+
* to the UTC "YYYY-MM-DD HH:MM:SS" string matching event-db storage — for use as
|
|
29
|
+
* a range-query boundary. DST-safe via an offset round-trip. Unparseable input is
|
|
30
|
+
* returned unchanged.
|
|
31
|
+
*/
|
|
32
|
+
export function localWallToUtcDb(wall, tz = resolveTz()) {
|
|
33
|
+
const asIfUtc = new Date(wall.replace(" ", "T") + "Z").getTime();
|
|
34
|
+
if (Number.isNaN(asIfUtc))
|
|
35
|
+
return wall;
|
|
36
|
+
// Render that instant in tz; the gap back to "as-if-UTC" is the zone offset at
|
|
37
|
+
// that instant (handles DST because it is sampled near the target instant).
|
|
38
|
+
const shownInTz = new Date(asIfUtc).toLocaleString("sv-SE", { timeZone: tz, hour12: false });
|
|
39
|
+
const offset = new Date(shownInTz.replace(" ", "T") + "Z").getTime() - asIfUtc;
|
|
40
|
+
return new Date(asIfUtc - offset).toISOString().slice(0, 19).replace("T", " ");
|
|
41
|
+
}
|
|
42
|
+
/** Local "today" date ("YYYY-MM-DD") in `tz`. */
|
|
43
|
+
export function localTodayDate(tz = resolveTz()) {
|
|
44
|
+
return new Date().toLocaleString("sv-SE", { timeZone: tz, hour12: false }).slice(0, 10);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=tz-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tz-utils.js","sourceRoot":"","sources":["../src/tz-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,EAAE,GAAG,SAAS,EAAE;IAC7D,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/C,gDAAgD;IAChD,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,EAAE,GAAG,SAAS,EAAE;IAC7D,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACjE,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,+EAA+E;IAC/E,4EAA4E;IAC5E,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC;IAC/E,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACjF,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,cAAc,CAAC,EAAE,GAAG,SAAS,EAAE;IAC7C,OAAO,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1F,CAAC"}
|
package/dist/ui/dashboard.html
CHANGED
|
@@ -425,7 +425,7 @@ async function loadDetail() {
|
|
|
425
425
|
<div class="detail-row"><span class="detail-label">Rate 7d</span><span>${Math.round(rl7)}% <span class="progress-bar"><span class="progress-fill" style="width:${Math.min(rl7,100)}%;background:${rl7>90?'var(--error)':rl7>70?'var(--warn)':'var(--accent)'}"></span></span></span></div></div>`;
|
|
426
426
|
if (d.recent_activity?.length) {
|
|
427
427
|
h += `<div class="card"><h3>Recent Activity</h3>`;
|
|
428
|
-
for (const a of d.recent_activity) { const t=a.timestamp?a.timestamp.
|
|
428
|
+
for (const a of d.recent_activity) { const t=a.timestamp?new Date(a.timestamp.replace(" ","T")+"Z").toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):""; h+=`<div class="activity-item"><span class="act-time">${t}</span><span class="act-event">${esc(a.event)}</span>${esc(a.summary||"")}</div>`; }
|
|
429
429
|
h += `</div>`;
|
|
430
430
|
}
|
|
431
431
|
el.innerHTML = h;
|
|
@@ -468,7 +468,7 @@ async function showCreateInstance() {
|
|
|
468
468
|
const label = b.installed ? b.name : `${b.name} (not installed)`;
|
|
469
469
|
return `<option value="${b.name}" ${b.installed ? "" : "disabled"} ${b.name === first?.name ? "selected" : ""}>${label}</option>`;
|
|
470
470
|
}).join("");
|
|
471
|
-
} catch { backendOpts += ["claude-code","codex","gemini-cli","opencode","kiro-cli"].map(b => `<option value="${b}">${b}</option>`).join(""); }
|
|
471
|
+
} catch { backendOpts += ["claude-code","codex","gemini-cli","opencode","kiro-cli","antigravity","grok"].map(b => `<option value="${b}">${b}</option>`).join(""); }
|
|
472
472
|
ov.innerHTML = `<div class="form-card"><h2>Create Instance</h2>
|
|
473
473
|
<div class="form-field"><label>Directory</label><input id="ci-dir" placeholder="Optional — auto-creates workspace if empty"></div>
|
|
474
474
|
<div class="form-field"><label id="ci-topic-label">Topic Name</label><input id="ci-topic" placeholder="Auto from directory name"></div>
|
|
@@ -689,7 +689,7 @@ async function loadConfig() {
|
|
|
689
689
|
<div class="card"><h3>Defaults</h3>
|
|
690
690
|
<div class="form-field"><label>Backend</label>
|
|
691
691
|
<select id="cfg-backend">
|
|
692
|
-
${["claude-code","codex","gemini-cli","opencode","kiro-cli"].map(b => `<option value="${b}" ${defs.backend===b?"selected":""}>${b}</option>`).join("")}
|
|
692
|
+
${["claude-code","codex","gemini-cli","opencode","kiro-cli","antigravity","grok"].map(b => `<option value="${b}" ${defs.backend===b?"selected":""}>${b}</option>`).join("")}
|
|
693
693
|
</select></div>
|
|
694
694
|
</div>
|
|
695
695
|
<div class="card"><h3>Project Roots</h3>
|