@songsid/agend 2.3.0 → 2.3.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.
Files changed (86) hide show
  1. package/README.md +1 -1
  2. package/README.zh-TW.md +1 -1
  3. package/dist/backend/muse.d.ts +20 -2
  4. package/dist/backend/muse.js +154 -16
  5. package/dist/backend/muse.js.map +1 -1
  6. package/dist/channel/adapters/telegram.d.ts +1 -1
  7. package/dist/channel/adapters/telegram.js +3 -35
  8. package/dist/channel/adapters/telegram.js.map +1 -1
  9. package/dist/cli.js +6 -3
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config-validator.js +2 -2
  12. package/dist/config-validator.js.map +1 -1
  13. package/dist/daemon.d.ts +13 -0
  14. package/dist/daemon.js +155 -16
  15. package/dist/daemon.js.map +1 -1
  16. package/dist/delivery-outbox.d.ts +11 -0
  17. package/dist/delivery-outbox.js +47 -2
  18. package/dist/delivery-outbox.js.map +1 -1
  19. package/dist/fleet-context.d.ts +1 -1
  20. package/dist/fleet-lock.d.ts +6 -0
  21. package/dist/fleet-lock.js +19 -0
  22. package/dist/fleet-lock.js.map +1 -1
  23. package/dist/fleet-manager.d.ts +34 -2
  24. package/dist/fleet-manager.js +264 -39
  25. package/dist/fleet-manager.js.map +1 -1
  26. package/dist/general-knowledge/skills/instance-lifecycle/SKILL.md +11 -0
  27. package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +3 -2
  28. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +3 -2
  29. package/dist/instance-lifecycle.d.ts +1 -0
  30. package/dist/instance-lifecycle.js +11 -0
  31. package/dist/instance-lifecycle.js.map +1 -1
  32. package/dist/locale.js +24 -2
  33. package/dist/locale.js.map +1 -1
  34. package/dist/log-service.js +1 -0
  35. package/dist/log-service.js.map +1 -1
  36. package/dist/needs-you.js +1 -0
  37. package/dist/needs-you.js.map +1 -1
  38. package/dist/outbound-handlers.d.ts +2 -2
  39. package/dist/outbound-handlers.js +5 -5
  40. package/dist/outbound-handlers.js.map +1 -1
  41. package/dist/search/search-index.d.ts +10 -2
  42. package/dist/search/search-index.js +17 -4
  43. package/dist/search/search-index.js.map +1 -1
  44. package/dist/service-installer.d.ts +23 -1
  45. package/dist/service-installer.js +40 -11
  46. package/dist/service-installer.js.map +1 -1
  47. package/dist/session-oom-stop.d.ts +45 -0
  48. package/dist/session-oom-stop.js +259 -0
  49. package/dist/session-oom-stop.js.map +1 -0
  50. package/dist/session-oom.d.ts +13 -0
  51. package/dist/session-oom.js +119 -7
  52. package/dist/session-oom.js.map +1 -1
  53. package/dist/settings-api.d.ts +1 -1
  54. package/dist/settings-api.js +1 -1
  55. package/dist/settings-api.js.map +1 -1
  56. package/dist/spawn-gate.d.ts +2 -0
  57. package/dist/spawn-gate.js +17 -4
  58. package/dist/spawn-gate.js.map +1 -1
  59. package/dist/start-attempt.d.ts +11 -1
  60. package/dist/start-attempt.js +16 -5
  61. package/dist/start-attempt.js.map +1 -1
  62. package/dist/start-failure-chat.d.ts +37 -0
  63. package/dist/start-failure-chat.js +142 -0
  64. package/dist/start-failure-chat.js.map +1 -0
  65. package/dist/start-failure.d.ts +24 -0
  66. package/dist/start-failure.js +68 -1
  67. package/dist/start-failure.js.map +1 -1
  68. package/dist/telegram-api-root.d.ts +1 -0
  69. package/dist/telegram-api-root.js +40 -0
  70. package/dist/telegram-api-root.js.map +1 -0
  71. package/dist/types.d.ts +3 -2
  72. package/dist/ui/panel-chat.js +19 -6
  73. package/dist/ui/panel-log.js +3 -3
  74. package/dist/ui/panel-settings.js +8 -1
  75. package/dist/ui/settings-strings.js +6 -0
  76. package/dist/ui/shared/app-shell.js +21 -4
  77. package/dist/ui/shared/app.css +9 -3
  78. package/dist/ui/shared/usage-dialog.js +21 -11
  79. package/dist/ui/shared/view-strings.js +2 -0
  80. package/dist/web-api.d.ts +1 -1
  81. package/dist/web-api.js +1 -1
  82. package/dist/web-api.js.map +1 -1
  83. package/dist/working-state-journal.d.ts +68 -0
  84. package/dist/working-state-journal.js +93 -0
  85. package/dist/working-state-journal.js.map +1 -0
  86. package/package.json +1 -1
@@ -0,0 +1,68 @@
1
+ import type Database from "better-sqlite3";
2
+ /** Metadata only. Stage 1 observes; these records never authorize a resume. */
3
+ export declare const WORKING_STATE_MAX_BYTES: number;
4
+ export declare const WORKING_STATE_MAX_REFS = 16;
5
+ export type WorkingStateReason = "published" | "execution" | "background" | "turn_started" | "turn_closed" | "completion_delivered" | "cancelled" | "before_stop" | "before_spawn" | "process" | "supervision_ended" | "tasks" | "obligations";
6
+ export interface WorkingStateOwner {
7
+ bootId: string;
8
+ spawnGeneration: number;
9
+ launchAttempt: number;
10
+ launchFenceEpoch: number;
11
+ }
12
+ export interface WorkingStateTurn {
13
+ generation: number;
14
+ deliveryId: string | null;
15
+ correlationId: string | null;
16
+ messageId: string | null;
17
+ cancelled: boolean;
18
+ completionDelivered: boolean;
19
+ }
20
+ export interface WorkingStateObservation {
21
+ owner: WorkingStateOwner;
22
+ backend: string;
23
+ /** A digest, never a raw workspace/profile or transcript path. */
24
+ configuration: string;
25
+ executionState: "idle" | "working" | "stuck" | "paused" | null;
26
+ processStatus: "running" | "crashed" | "stopped";
27
+ backgroundWork: boolean | null;
28
+ turn: WorkingStateTurn | null;
29
+ /** No generic getSessionId discovery is allowed on this observation path. */
30
+ sessionId: null;
31
+ backendTurnId: null;
32
+ }
33
+ export type WorkingStateReference = {
34
+ kind: "task";
35
+ id: string;
36
+ version: number;
37
+ status: "claimed" | "blocked" | "review";
38
+ } | {
39
+ kind: "owed" | "waiting";
40
+ correlationId: string;
41
+ requester: string;
42
+ owner: string;
43
+ deliveryId: string;
44
+ };
45
+ export interface WorkingStateSnapshot {
46
+ version: 1;
47
+ managerBootId: string;
48
+ observedAt: number;
49
+ lastActivityAt: number | null;
50
+ reason: WorkingStateReason;
51
+ observation: WorkingStateObservation;
52
+ references: WorkingStateReference[];
53
+ totalReferences: number;
54
+ unavailable: Array<"tasks" | "obligations">;
55
+ }
56
+ export interface WorkingStateEntry {
57
+ instance: string;
58
+ revision: number;
59
+ current: WorkingStateSnapshot;
60
+ prior: WorkingStateSnapshot | null;
61
+ }
62
+ /** Two bounded snapshots per instance: latest, plus first unconsumed interruption. */
63
+ export declare class WorkingStateJournal {
64
+ private readonly db;
65
+ constructor(db: Database.Database);
66
+ get(instance: string): WorkingStateEntry | undefined;
67
+ observe(instance: string, input: WorkingStateSnapshot): WorkingStateEntry | null;
68
+ }
@@ -0,0 +1,93 @@
1
+ /** Metadata only. Stage 1 observes; these records never authorize a resume. */
2
+ export const WORKING_STATE_MAX_BYTES = 8 * 1024;
3
+ export const WORKING_STATE_MAX_REFS = 16;
4
+ const reasons = new Set(["published", "execution", "background", "turn_started", "turn_closed", "completion_delivered", "cancelled", "before_stop", "before_spawn", "process", "supervision_ended", "tasks", "obligations"]);
5
+ const id = (v) => typeof v === "string" && v.length > 0 && Buffer.byteLength(v) <= 256 && !/[\u0000-\u001f\u007f]/.test(v);
6
+ const integer = (v) => Number.isSafeInteger(v) && v >= 0;
7
+ /** Whitelist every field: callers cannot accidentally persist a pane/config/message. */
8
+ function bounded(input) {
9
+ const o = input.observation, owner = o.owner, turn = o.turn;
10
+ if (!id(input.managerBootId) || !reasons.has(input.reason) || !Number.isFinite(input.observedAt)
11
+ || !id(owner.bootId) || ![owner.spawnGeneration, owner.launchAttempt, owner.launchFenceEpoch].every(integer)
12
+ || !id(o.backend) || !/^[a-f0-9]{64}$/.test(o.configuration)
13
+ || ![null, "idle", "working", "stuck", "paused"].includes(o.executionState)
14
+ || !["running", "crashed", "stopped"].includes(o.processStatus))
15
+ throw new Error("Invalid working-state observation");
16
+ const refs = [];
17
+ for (const ref of input.references.slice(0, WORKING_STATE_MAX_REFS)) {
18
+ if (ref.kind === "task" && id(ref.id) && integer(ref.version) && ["claimed", "blocked", "review"].includes(ref.status)) {
19
+ refs.push({ kind: "task", id: ref.id, version: ref.version, status: ref.status });
20
+ }
21
+ else if ((ref.kind === "owed" || ref.kind === "waiting") && [ref.correlationId, ref.requester, ref.owner, ref.deliveryId].every(id)) {
22
+ refs.push({ kind: ref.kind, correlationId: ref.correlationId, requester: ref.requester, owner: ref.owner, deliveryId: ref.deliveryId });
23
+ }
24
+ }
25
+ const value = {
26
+ version: 1, managerBootId: input.managerBootId, observedAt: input.observedAt, reason: input.reason,
27
+ lastActivityAt: typeof input.lastActivityAt === "number" && Number.isFinite(input.lastActivityAt) ? input.lastActivityAt : null,
28
+ observation: {
29
+ owner: { bootId: owner.bootId, spawnGeneration: owner.spawnGeneration, launchAttempt: owner.launchAttempt, launchFenceEpoch: owner.launchFenceEpoch },
30
+ backend: o.backend, configuration: o.configuration, executionState: o.executionState, processStatus: o.processStatus,
31
+ backgroundWork: typeof o.backgroundWork === "boolean" ? o.backgroundWork : null,
32
+ turn: turn && integer(turn.generation) ? { generation: turn.generation,
33
+ deliveryId: id(turn.deliveryId) ? turn.deliveryId : null, correlationId: id(turn.correlationId) ? turn.correlationId : null,
34
+ messageId: id(turn.messageId) ? turn.messageId : null, cancelled: turn.cancelled === true, completionDelivered: turn.completionDelivered === true } : null,
35
+ sessionId: null, backendTurnId: null,
36
+ },
37
+ references: refs, totalReferences: Math.max(integer(input.totalReferences) ? input.totalReferences : 0, input.references.length),
38
+ unavailable: ["tasks", "obligations"].filter(x => input.unavailable.includes(x)),
39
+ };
40
+ while (Buffer.byteLength(JSON.stringify(value)) > WORKING_STATE_MAX_BYTES && value.references.length)
41
+ value.references.pop();
42
+ if (Buffer.byteLength(JSON.stringify(value)) > WORKING_STATE_MAX_BYTES)
43
+ throw new Error("Working-state observation exceeds its byte budget");
44
+ return value;
45
+ }
46
+ function notable(s) {
47
+ const turn = s.observation.turn;
48
+ return s.totalReferences > 0 || s.observation.backgroundWork === true || (!!turn && !turn.cancelled && !turn.completionDelivered)
49
+ || (s.observation.executionState === "working" && !turn?.cancelled && !turn?.completionDelivered);
50
+ }
51
+ /** Two bounded snapshots per instance: latest, plus first unconsumed interruption. */
52
+ export class WorkingStateJournal {
53
+ db;
54
+ constructor(db) {
55
+ this.db = db;
56
+ db.exec(`CREATE TABLE IF NOT EXISTS working_state_journal (
57
+ instance_name TEXT PRIMARY KEY, revision INTEGER NOT NULL,
58
+ current_json TEXT NOT NULL CHECK(length(CAST(current_json AS BLOB)) <= 8192),
59
+ prior_json TEXT CHECK(prior_json IS NULL OR length(CAST(prior_json AS BLOB)) <= 8192)
60
+ )`);
61
+ }
62
+ get(instance) {
63
+ const row = this.db.prepare("SELECT revision,current_json,prior_json FROM working_state_journal WHERE instance_name=?").get(instance);
64
+ if (!row)
65
+ return undefined;
66
+ return { instance, revision: row.revision, current: JSON.parse(row.current_json), prior: row.prior_json ? JSON.parse(row.prior_json) : null };
67
+ }
68
+ observe(instance, input) {
69
+ if (!id(instance))
70
+ throw new Error("Invalid working-state instance");
71
+ const snapshot = bounded(input);
72
+ return this.db.transaction(() => {
73
+ const previous = this.get(instance);
74
+ // Exact heartbeats do not write or emit. The caller observes changes, not polling.
75
+ const comparable = (s) => JSON.stringify({ ...s, observedAt: 0, reason: "observation" });
76
+ const boundary = snapshot.reason === "before_stop" || snapshot.reason === "before_spawn";
77
+ if (previous && comparable(previous.current) === comparable(snapshot)
78
+ && !(boundary && previous.current.reason !== snapshot.reason))
79
+ return null;
80
+ let prior = previous?.prior ?? null;
81
+ if (!prior && previous?.current.managerBootId !== snapshot.managerBootId && previous && notable(previous.current))
82
+ prior = previous.current;
83
+ if (!prior && boundary && notable(snapshot))
84
+ prior = snapshot;
85
+ const revision = (previous?.revision ?? 0) + 1;
86
+ this.db.prepare(`INSERT INTO working_state_journal(instance_name,revision,current_json,prior_json) VALUES(?,?,?,?)
87
+ ON CONFLICT(instance_name) DO UPDATE SET revision=excluded.revision,current_json=excluded.current_json,prior_json=excluded.prior_json`)
88
+ .run(instance, revision, JSON.stringify(snapshot), prior ? JSON.stringify(prior) : null);
89
+ return { instance, revision, current: snapshot, prior };
90
+ })();
91
+ }
92
+ }
93
+ //# sourceMappingURL=working-state-journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"working-state-journal.js","sourceRoot":"","sources":["../src/working-state-journal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@songsid/agend",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "Multi-agent fleet daemon — run coding CLIs (Claude, Muse, Codex, OpenCode) from Discord or Telegram",
5
5
  "type": "module",
6
6
  "bin": {