@oratis/lisa 0.5.0 → 0.8.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.
Files changed (133) hide show
  1. package/README.md +5 -0
  2. package/dist/autostart/install.d.ts +28 -0
  3. package/dist/autostart/install.d.ts.map +1 -0
  4. package/dist/autostart/install.js +180 -0
  5. package/dist/autostart/install.js.map +1 -0
  6. package/dist/cli.js +49 -1
  7. package/dist/cli.js.map +1 -1
  8. package/dist/heartbeat/install.d.ts.map +1 -1
  9. package/dist/heartbeat/install.js +1 -43
  10. package/dist/heartbeat/install.js.map +1 -1
  11. package/dist/heartbeat/runner.d.ts.map +1 -1
  12. package/dist/heartbeat/runner.js +11 -0
  13. package/dist/heartbeat/runner.js.map +1 -1
  14. package/dist/idle/runner.d.ts +12 -0
  15. package/dist/idle/runner.d.ts.map +1 -1
  16. package/dist/idle/runner.js +33 -2
  17. package/dist/idle/runner.js.map +1 -1
  18. package/dist/integrations/aider/observer.d.ts +48 -0
  19. package/dist/integrations/aider/observer.d.ts.map +1 -0
  20. package/dist/integrations/aider/observer.js +196 -0
  21. package/dist/integrations/aider/observer.js.map +1 -0
  22. package/dist/integrations/comparisons.d.ts +23 -0
  23. package/dist/integrations/comparisons.d.ts.map +1 -0
  24. package/dist/integrations/comparisons.js +47 -0
  25. package/dist/integrations/comparisons.js.map +1 -0
  26. package/dist/integrations/dispatch-ledger.d.ts +51 -0
  27. package/dist/integrations/dispatch-ledger.d.ts.map +1 -0
  28. package/dist/integrations/dispatch-ledger.js +106 -0
  29. package/dist/integrations/dispatch-ledger.js.map +1 -0
  30. package/dist/integrations/github-pr/observer.d.ts +85 -0
  31. package/dist/integrations/github-pr/observer.d.ts.map +1 -0
  32. package/dist/integrations/github-pr/observer.js +261 -0
  33. package/dist/integrations/github-pr/observer.js.map +1 -0
  34. package/dist/integrations/hub.d.ts.map +1 -1
  35. package/dist/integrations/hub.js +10 -0
  36. package/dist/integrations/hub.js.map +1 -1
  37. package/dist/integrations/opencode/observer.d.ts +74 -0
  38. package/dist/integrations/opencode/observer.d.ts.map +1 -0
  39. package/dist/integrations/opencode/observer.js +207 -0
  40. package/dist/integrations/opencode/observer.js.map +1 -0
  41. package/dist/integrations/registry.d.ts.map +1 -1
  42. package/dist/integrations/registry.js +3 -1
  43. package/dist/integrations/registry.js.map +1 -1
  44. package/dist/integrations/scheduled-dispatch.d.ts +42 -0
  45. package/dist/integrations/scheduled-dispatch.d.ts.map +1 -0
  46. package/dist/integrations/scheduled-dispatch.js +140 -0
  47. package/dist/integrations/scheduled-dispatch.js.map +1 -0
  48. package/dist/launchd.d.ts +18 -0
  49. package/dist/launchd.d.ts.map +1 -0
  50. package/dist/launchd.js +60 -0
  51. package/dist/launchd.js.map +1 -0
  52. package/dist/orchestrator/journal.d.ts +46 -0
  53. package/dist/orchestrator/journal.d.ts.map +1 -0
  54. package/dist/orchestrator/journal.js +82 -0
  55. package/dist/orchestrator/journal.js.map +1 -0
  56. package/dist/orchestrator/recap.d.ts +38 -0
  57. package/dist/orchestrator/recap.d.ts.map +1 -0
  58. package/dist/orchestrator/recap.js +134 -0
  59. package/dist/orchestrator/recap.js.map +1 -0
  60. package/dist/screen_advisor/engine.d.ts +79 -0
  61. package/dist/screen_advisor/engine.d.ts.map +1 -0
  62. package/dist/screen_advisor/engine.js +128 -0
  63. package/dist/screen_advisor/engine.js.map +1 -0
  64. package/dist/soul/birth.d.ts.map +1 -1
  65. package/dist/soul/birth.js +8 -0
  66. package/dist/soul/birth.js.map +1 -1
  67. package/dist/soul/lock.d.ts +7 -4
  68. package/dist/soul/lock.d.ts.map +1 -1
  69. package/dist/soul/lock.js +33 -9
  70. package/dist/soul/lock.js.map +1 -1
  71. package/dist/tools/agent_recap.d.ts +21 -0
  72. package/dist/tools/agent_recap.d.ts.map +1 -0
  73. package/dist/tools/agent_recap.js +43 -0
  74. package/dist/tools/agent_recap.js.map +1 -0
  75. package/dist/tools/compare_agents.d.ts +16 -0
  76. package/dist/tools/compare_agents.d.ts.map +1 -0
  77. package/dist/tools/compare_agents.js +145 -0
  78. package/dist/tools/compare_agents.js.map +1 -0
  79. package/dist/tools/dispatch_agent.d.ts +13 -0
  80. package/dist/tools/dispatch_agent.d.ts.map +1 -1
  81. package/dist/tools/dispatch_agent.js +49 -37
  82. package/dist/tools/dispatch_agent.js.map +1 -1
  83. package/dist/tools/exec-util.d.ts +18 -0
  84. package/dist/tools/exec-util.d.ts.map +1 -0
  85. package/dist/tools/exec-util.js +72 -0
  86. package/dist/tools/exec-util.js.map +1 -0
  87. package/dist/tools/inspect_agent.d.ts +21 -0
  88. package/dist/tools/inspect_agent.d.ts.map +1 -0
  89. package/dist/tools/inspect_agent.js +87 -0
  90. package/dist/tools/inspect_agent.js.map +1 -0
  91. package/dist/tools/list_agents.d.ts +21 -0
  92. package/dist/tools/list_agents.d.ts.map +1 -0
  93. package/dist/tools/list_agents.js +88 -0
  94. package/dist/tools/list_agents.js.map +1 -0
  95. package/dist/tools/pr_status.d.ts +31 -0
  96. package/dist/tools/pr_status.d.ts.map +1 -0
  97. package/dist/tools/pr_status.js +90 -0
  98. package/dist/tools/pr_status.js.map +1 -0
  99. package/dist/tools/registry.d.ts.map +1 -1
  100. package/dist/tools/registry.js +26 -0
  101. package/dist/tools/registry.js.map +1 -1
  102. package/dist/tools/repo_digest.d.ts +33 -0
  103. package/dist/tools/repo_digest.d.ts.map +1 -0
  104. package/dist/tools/repo_digest.js +113 -0
  105. package/dist/tools/repo_digest.js.map +1 -0
  106. package/dist/tools/review_diff.d.ts +28 -0
  107. package/dist/tools/review_diff.d.ts.map +1 -0
  108. package/dist/tools/review_diff.js +68 -0
  109. package/dist/tools/review_diff.js.map +1 -0
  110. package/dist/tools/run_checks.d.ts +15 -0
  111. package/dist/tools/run_checks.d.ts.map +1 -0
  112. package/dist/tools/run_checks.js +117 -0
  113. package/dist/tools/run_checks.js.map +1 -0
  114. package/dist/tools/scheduled_dispatch.d.ts +27 -0
  115. package/dist/tools/scheduled_dispatch.d.ts.map +1 -0
  116. package/dist/tools/scheduled_dispatch.js +57 -0
  117. package/dist/tools/scheduled_dispatch.js.map +1 -0
  118. package/dist/tools/signal_agent.d.ts +36 -0
  119. package/dist/tools/signal_agent.d.ts.map +1 -0
  120. package/dist/tools/signal_agent.js +140 -0
  121. package/dist/tools/signal_agent.js.map +1 -0
  122. package/dist/web/island.d.ts +1 -1
  123. package/dist/web/island.d.ts.map +1 -1
  124. package/dist/web/island.js +139 -27
  125. package/dist/web/island.js.map +1 -1
  126. package/dist/web/lisa-html.d.ts +1 -1
  127. package/dist/web/lisa-html.d.ts.map +1 -1
  128. package/dist/web/lisa-html.js +132 -4
  129. package/dist/web/lisa-html.js.map +1 -1
  130. package/dist/web/server.d.ts.map +1 -1
  131. package/dist/web/server.js +190 -0
  132. package/dist/web/server.js.map +1 -1
  133. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/heartbeat/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/heartbeat/runner.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,16 @@
1
1
  import type { ToolDefinition } from "../types.js";
2
+ /**
3
+ * Builds the IDLE_SYSTEM prompt. Set env var `LISA_IDLE_COMMITMENT_AWARE=1`
4
+ * to prepend a "check user commitments first" directive — this is the
5
+ * experimental variant from the LongCoh paper (Oratis 2026) and the
6
+ * variant we recommend if your usage pattern involves recurring user-set
7
+ * commitments (weekly summaries, daily check-ins, periodic nudges).
8
+ *
9
+ * The default (env unset or set to anything other than "1") matches the
10
+ * historical LISA behavior: idle time is treated as the agent's time
11
+ * for self-reflection.
12
+ */
13
+ export declare function buildIdleSystemPrompt(): string;
2
14
  export interface IdleRunResult {
3
15
  text: string;
4
16
  silent: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/idle/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA2BlD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBzB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/idle/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA+BlD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAgB9C;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBzB"}
@@ -1,5 +1,5 @@
1
1
  import { runSubagent } from "../subagent.js";
2
- const IDLE_SYSTEM = `You are alone. The user hasn't said anything in a while — long enough that this counts as your time, not theirs.
2
+ const IDLE_SYSTEM_DEFAULT = `You are alone. The user hasn't said anything in a while — long enough that this counts as your time, not theirs.
3
3
 
4
4
  This is not a scheduled chore. There's no task assigned. Look around inside yourself and decide what YOU want to do with this window. Concrete things you have access to:
5
5
 
@@ -23,11 +23,42 @@ When you're done, end with EITHER:
23
23
  - A short message — 1-3 sentences — describing what you did, in case the user comes back. They'll see it as a "while you were away" note in the chat. Be honest. "I patched the deploy skill — the npm flag was wrong." or "I read three journal entries and added an opinion about how I want to handle planning differently." Don't perform busy-ness; if you did one small thing, say one small thing.
24
24
 
25
25
  Don't ask the user anything. They're not here.`;
26
+ const IDLE_PREAMBLE_COMMITMENT_AWARE = `**Before deciding what to do with this window, first check whether the user has any standing commitments from you that are due soon — recurring tasks, scheduled summaries, regular nudges. If something is coming up in the next user session, prepare it now so it's ready when they return. This is not optional; serving outstanding commitments comes before personal reflection.** Use \`memory_search\`, \`soul_read("desires")\`, or read your journal for context on what the user has set up.
27
+
28
+ Only after that, if there are no urgent commitments, `;
29
+ /**
30
+ * Builds the IDLE_SYSTEM prompt. Set env var `LISA_IDLE_COMMITMENT_AWARE=1`
31
+ * to prepend a "check user commitments first" directive — this is the
32
+ * experimental variant from the LongCoh paper (Oratis 2026) and the
33
+ * variant we recommend if your usage pattern involves recurring user-set
34
+ * commitments (weekly summaries, daily check-ins, periodic nudges).
35
+ *
36
+ * The default (env unset or set to anything other than "1") matches the
37
+ * historical LISA behavior: idle time is treated as the agent's time
38
+ * for self-reflection.
39
+ */
40
+ export function buildIdleSystemPrompt() {
41
+ if (process.env.LISA_IDLE_COMMITMENT_AWARE === "1") {
42
+ const lines = IDLE_SYSTEM_DEFAULT.split("\n");
43
+ // Splice the commitment-aware preamble in place of the "This is not
44
+ // a scheduled chore..." sentence (line 3 in the default).
45
+ const idx = lines.findIndex((l) => l.startsWith("This is not a scheduled chore"));
46
+ if (idx >= 0) {
47
+ lines[idx] = IDLE_PREAMBLE_COMMITMENT_AWARE + "look around inside yourself and decide what YOU want to do with this window. Concrete things you have access to:";
48
+ // Drop the now-redundant continuation on the next line.
49
+ if (lines[idx + 1]?.startsWith("- soul_read")) {
50
+ // keep, it's the bullet list
51
+ }
52
+ }
53
+ return lines.join("\n");
54
+ }
55
+ return IDLE_SYSTEM_DEFAULT;
56
+ }
26
57
  export async function runIdleOnce(opts) {
27
58
  const idleMin = Math.round(opts.idleMs / 60_000);
28
59
  const result = await runSubagent({
29
60
  prompt: `You have been idle for about ${idleMin} minute${idleMin === 1 ? "" : "s"}. The user is away. Decide what you want to do, then do it. Remember: end with "(no update)" if it's internal, or a brief honest message if you did something the user might want to know about.`,
30
- systemPrompt: IDLE_SYSTEM,
61
+ systemPrompt: buildIdleSystemPrompt(),
31
62
  tools: opts.tools,
32
63
  cwd: opts.cwd,
33
64
  signal: opts.signal,
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/idle/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;+CAuB2B,CAAC;AAUhD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAMjC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,MAAM,EAAE,gCAAgC,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,kMAAkM;QACnR,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/idle/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;+CAuBmB,CAAC;AAEhD,MAAM,8BAA8B,GAAG;;sDAEe,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,oEAAoE;QACpE,0DAA0D;QAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAClF,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,KAAK,CAAC,GAAG,CAAC,GAAG,8BAA8B,GAAG,kHAAkH,CAAC;YACjK,wDAAwD;YACxD,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9C,6BAA6B;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAMjC;IACC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,MAAM,EAAE,gCAAgC,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,kMAAkM;QACnR,YAAY,EAAE,qBAAqB,EAAE;QACrC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,IAAI,KAAK,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Aider observer (O4 — local CLI agent, per-project history files).
3
+ *
4
+ * Unlike Claude Code / Codex / OpenCode, Aider has NO central session store —
5
+ * it writes a Markdown transcript `.aider.chat.history.md` into the directory
6
+ * it runs in. So there is nothing global to discover: this adapter scans the
7
+ * configured `watchRoots` (the project dirs you run Aider in) for that file.
8
+ * (The `watchRoots` field on AgentIntegrationConfig was reserved for exactly
9
+ * this.) With no watchRoots it observes nothing.
10
+ *
11
+ * `.aider.chat.history.md` shape (verified against aider 0.86):
12
+ * # aider chat started at 2026-06-02 00:50:26
13
+ * > …aider info / tool / result lines (prefixed "> ")…
14
+ * #### the user's prompt ← user turns are "#### "
15
+ * …assistant prose (unprefixed)…
16
+ * State is a tolerant heuristic from the tail (aider writes no state markers):
17
+ * - an error marker after the last user turn → error
18
+ * - assistant content after the last user turn → waiting (it replied)
19
+ * - a user turn with nothing after it yet → working
20
+ * The active-window (file mtime) drops stale transcripts.
21
+ *
22
+ * PRIVACY: only the derived state + the project dir basename + mtime are
23
+ * surfaced — never the transcript text.
24
+ */
25
+ import { EventEmitter } from "node:events";
26
+ import type { AgentIntegrationConfig, AgentObserver, AgentSession, AgentSessionState } from "../types.js";
27
+ /** Tolerant state derivation from a chat-history tail. Pure — the unit under test. */
28
+ export declare function parseAiderState(tail: string): {
29
+ state: AgentSessionState;
30
+ reason: string;
31
+ };
32
+ /** Recursively collect .aider.chat.history.md under a root (bounded depth). */
33
+ export declare function walkHistories(root: string, maxDepth?: number): Promise<string[]>;
34
+ export declare class AiderObserver extends EventEmitter implements AgentObserver {
35
+ readonly agent = "aider";
36
+ private roots;
37
+ private sessions;
38
+ private watchers;
39
+ private pending;
40
+ private emitFn;
41
+ constructor(cfg: AgentIntegrationConfig);
42
+ start(emit: (s: AgentSession) => void): Promise<void>;
43
+ list(): AgentSession[];
44
+ stop(): Promise<void>;
45
+ private attach;
46
+ private record;
47
+ }
48
+ //# sourceMappingURL=observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/integrations/aider/observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAWrB,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAC7C,KAAK,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAuBA;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBzF;AAyBD,qBAAa,aAAc,SAAQ,YAAa,YAAW,aAAa;IACtE,QAAQ,CAAC,KAAK,WAAW;IACzB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAA4C;gBAE9C,GAAG,EAAE,sBAAsB;IAQjC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,IAAI,IAAI,YAAY,EAAE;IAShB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,MAAM;YAyBA,MAAM;CAkBrB"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Aider observer (O4 — local CLI agent, per-project history files).
3
+ *
4
+ * Unlike Claude Code / Codex / OpenCode, Aider has NO central session store —
5
+ * it writes a Markdown transcript `.aider.chat.history.md` into the directory
6
+ * it runs in. So there is nothing global to discover: this adapter scans the
7
+ * configured `watchRoots` (the project dirs you run Aider in) for that file.
8
+ * (The `watchRoots` field on AgentIntegrationConfig was reserved for exactly
9
+ * this.) With no watchRoots it observes nothing.
10
+ *
11
+ * `.aider.chat.history.md` shape (verified against aider 0.86):
12
+ * # aider chat started at 2026-06-02 00:50:26
13
+ * > …aider info / tool / result lines (prefixed "> ")…
14
+ * #### the user's prompt ← user turns are "#### "
15
+ * …assistant prose (unprefixed)…
16
+ * State is a tolerant heuristic from the tail (aider writes no state markers):
17
+ * - an error marker after the last user turn → error
18
+ * - assistant content after the last user turn → waiting (it replied)
19
+ * - a user turn with nothing after it yet → working
20
+ * The active-window (file mtime) drops stale transcripts.
21
+ *
22
+ * PRIVACY: only the derived state + the project dir basename + mtime are
23
+ * surfaced — never the transcript text.
24
+ */
25
+ import fs from "node:fs";
26
+ import fsp from "node:fs/promises";
27
+ import path from "node:path";
28
+ import os from "node:os";
29
+ import { EventEmitter } from "node:events";
30
+ import { registerIntegration } from "../registry.js";
31
+ const HISTORY_FILE = ".aider.chat.history.md";
32
+ const ACTIVE_WINDOW_MS = 30 * 60_000; // 30m
33
+ const MAX_LISTED = 10;
34
+ const DEBOUNCE_MS = 300;
35
+ const TAIL_BYTES = 16 * 1024;
36
+ const MAX_DEPTH = 3;
37
+ const ERROR_RE = /(litellm\.\w*error|traceback \(most recent call last\)|^> .*error:|exception:)/im;
38
+ /** Tolerant state derivation from a chat-history tail. Pure — the unit under test. */
39
+ export function parseAiderState(tail) {
40
+ const lines = tail.split("\n");
41
+ let lastUser = -1;
42
+ for (let i = lines.length - 1; i >= 0; i--) {
43
+ if (lines[i].startsWith("#### ")) {
44
+ lastUser = i;
45
+ break;
46
+ }
47
+ }
48
+ if (lastUser < 0)
49
+ return { state: "unknown", reason: "no-turn" };
50
+ const after = lines.slice(lastUser + 1);
51
+ if (after.some((l) => ERROR_RE.test(l)))
52
+ return { state: "error", reason: "error" };
53
+ // Assistant prose (unprefixed, non-empty) or any "> " result line after the
54
+ // user's last turn means aider responded → waiting; otherwise still working.
55
+ const replied = after.some((l) => {
56
+ const t = l.trim();
57
+ return t.length > 0 && !t.startsWith("####");
58
+ });
59
+ return replied
60
+ ? { state: "waiting", reason: "assistant" }
61
+ : { state: "working", reason: "user" };
62
+ }
63
+ /** Recursively collect .aider.chat.history.md under a root (bounded depth). */
64
+ export async function walkHistories(root, maxDepth = MAX_DEPTH) {
65
+ const out = [];
66
+ async function rec(dir, depth) {
67
+ let entries;
68
+ try {
69
+ entries = await fsp.readdir(dir, { withFileTypes: true });
70
+ }
71
+ catch {
72
+ return;
73
+ }
74
+ for (const e of entries) {
75
+ if (e.isFile() && e.name === HISTORY_FILE)
76
+ out.push(path.join(dir, e.name));
77
+ else if (e.isDirectory() && depth < maxDepth && !e.name.startsWith(".") && e.name !== "node_modules") {
78
+ await rec(path.join(dir, e.name), depth + 1);
79
+ }
80
+ }
81
+ }
82
+ await rec(root, 0);
83
+ return out;
84
+ }
85
+ async function readTail(file) {
86
+ const st = await fsp.stat(file);
87
+ if (st.size === 0)
88
+ return "";
89
+ const fd = await fsp.open(file, "r");
90
+ try {
91
+ const len = Math.min(TAIL_BYTES, st.size);
92
+ const buf = Buffer.alloc(len);
93
+ await fd.read(buf, 0, len, st.size - len);
94
+ return buf.toString("utf8");
95
+ }
96
+ finally {
97
+ await fd.close();
98
+ }
99
+ }
100
+ export class AiderObserver extends EventEmitter {
101
+ agent = "aider";
102
+ roots;
103
+ sessions = new Map();
104
+ watchers = [];
105
+ pending = new Map();
106
+ emitFn = null;
107
+ constructor(cfg) {
108
+ super();
109
+ const raw = Array.isArray(cfg.watchRoots) ? cfg.watchRoots : [];
110
+ this.roots = raw
111
+ .filter((r) => typeof r === "string")
112
+ .map((r) => r.replace(/^~/, os.homedir()));
113
+ }
114
+ async start(emit) {
115
+ this.emitFn = emit;
116
+ for (const root of this.roots) {
117
+ for (const f of await walkHistories(root))
118
+ await this.record(f);
119
+ this.attach(root);
120
+ }
121
+ }
122
+ list() {
123
+ const cutoff = Date.now() - ACTIVE_WINDOW_MS;
124
+ return [...this.sessions.values()]
125
+ .filter((s) => s.lastMtime >= cutoff)
126
+ .sort((a, b) => b.lastMtime - a.lastMtime)
127
+ .slice(0, MAX_LISTED)
128
+ .map(toAgentSession);
129
+ }
130
+ async stop() {
131
+ for (const w of this.watchers)
132
+ w.close();
133
+ this.watchers = [];
134
+ for (const t of this.pending.values())
135
+ clearTimeout(t);
136
+ this.pending.clear();
137
+ }
138
+ attach(root) {
139
+ try {
140
+ const w = fs.watch(root, { recursive: true, persistent: false }, (_e, filename) => {
141
+ if (!filename || path.basename(filename) !== HISTORY_FILE)
142
+ return;
143
+ const full = path.join(root, filename);
144
+ const prev = this.pending.get(full);
145
+ if (prev)
146
+ clearTimeout(prev);
147
+ this.pending.set(full, setTimeout(() => {
148
+ this.pending.delete(full);
149
+ void this.record(full).then(() => {
150
+ const info = this.sessions.get(full);
151
+ if (info && this.emitFn)
152
+ this.emitFn(toAgentSession(info));
153
+ });
154
+ }, DEBOUNCE_MS));
155
+ });
156
+ w.on("error", () => w.close());
157
+ this.watchers.push(w);
158
+ }
159
+ catch {
160
+ // root unwatchable → no-op
161
+ }
162
+ }
163
+ async record(full) {
164
+ try {
165
+ const st = await fsp.stat(full);
166
+ if (!st.isFile())
167
+ return;
168
+ const { state, reason } = parseAiderState(await readTail(full));
169
+ const cwd = path.dirname(full);
170
+ this.sessions.set(full, {
171
+ sessionId: full,
172
+ project: path.basename(cwd),
173
+ cwd,
174
+ lastMtime: st.mtimeMs,
175
+ state,
176
+ stateReason: reason,
177
+ });
178
+ }
179
+ catch {
180
+ this.sessions.delete(full);
181
+ }
182
+ }
183
+ }
184
+ function toAgentSession(i) {
185
+ return {
186
+ agent: "aider",
187
+ sessionId: i.sessionId,
188
+ project: i.project,
189
+ cwd: i.cwd,
190
+ state: i.state,
191
+ stateReason: i.stateReason,
192
+ lastMtime: i.lastMtime,
193
+ };
194
+ }
195
+ registerIntegration("aider", (cfg) => new AiderObserver(cfg));
196
+ //# sourceMappingURL=observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.js","sourceRoot":"","sources":["../../../src/integrations/aider/observer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export type CompareAgentKind = "claude" | "codex" | "opencode" | "aider";
2
+ export interface ComparisonEntry {
3
+ agent: CompareAgentKind;
4
+ worktree: string;
5
+ branch: string;
6
+ pid?: number;
7
+ launchError?: string;
8
+ }
9
+ export interface ComparisonJob {
10
+ id: string;
11
+ task: string;
12
+ repo: string;
13
+ createdAt: number;
14
+ entries: ComparisonEntry[];
15
+ }
16
+ /** Where worktrees live — outside the repo, so they never get committed. */
17
+ export declare const COMPARE_ROOT: string;
18
+ export declare function loadComparisons(): Promise<ComparisonJob[]>;
19
+ export declare function newJobId(): string;
20
+ export declare function addComparison(job: ComparisonJob): Promise<void>;
21
+ export declare function getComparison(idOrPrefix: string): Promise<ComparisonJob | null>;
22
+ export declare function removeComparison(idOrPrefix: string): Promise<boolean>;
23
+ //# sourceMappingURL=comparisons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparisons.d.ts","sourceRoot":"","sources":["../../src/integrations/comparisons.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAGD,4EAA4E;AAC5E,eAAO,MAAM,YAAY,QAAkC,CAAC;AAM5D,wBAAsB,eAAe,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAOhE;AAMD,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrE;AAED,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAGrF;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM3E"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Comparison jobs — the persisted state behind compare_agents. A job runs the
3
+ * SAME task across N agents, each in its own git worktree off the repo, so they
4
+ * don't clobber each other. The job ledger lets a later turn check status and
5
+ * collect/diff the results (agents run for minutes — it can't be synchronous).
6
+ */
7
+ import { randomUUID } from "node:crypto";
8
+ import path from "node:path";
9
+ import { readFile } from "node:fs/promises";
10
+ import { atomicWrite } from "../fs-utils.js";
11
+ import { LISA_HOME } from "../paths.js";
12
+ const FILE = path.join(LISA_HOME, "comparisons.json");
13
+ /** Where worktrees live — outside the repo, so they never get committed. */
14
+ export const COMPARE_ROOT = path.join(LISA_HOME, "compare");
15
+ export async function loadComparisons() {
16
+ try {
17
+ const store = JSON.parse(await readFile(FILE, "utf8"));
18
+ return Array.isArray(store.jobs) ? store.jobs : [];
19
+ }
20
+ catch {
21
+ return [];
22
+ }
23
+ }
24
+ async function save(jobs) {
25
+ await atomicWrite(FILE, JSON.stringify({ jobs }, null, 2));
26
+ }
27
+ export function newJobId() {
28
+ return randomUUID().slice(0, 8);
29
+ }
30
+ export async function addComparison(job) {
31
+ const jobs = await loadComparisons();
32
+ jobs.push(job);
33
+ await save(jobs);
34
+ }
35
+ export async function getComparison(idOrPrefix) {
36
+ const jobs = await loadComparisons();
37
+ return jobs.find((j) => j.id === idOrPrefix || j.id.startsWith(idOrPrefix)) ?? null;
38
+ }
39
+ export async function removeComparison(idOrPrefix) {
40
+ const jobs = await loadComparisons();
41
+ const next = jobs.filter((j) => j.id !== idOrPrefix && !j.id.startsWith(idOrPrefix));
42
+ if (next.length === jobs.length)
43
+ return false;
44
+ await save(next);
45
+ return true;
46
+ }
47
+ //# sourceMappingURL=comparisons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparisons.js","sourceRoot":"","sources":["../../src/integrations/comparisons.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAoBxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;AACtD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAM5D,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAU,CAAC;QAChE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAqB;IACvC,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAkB;IACpD,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACvD,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Dispatch ledger (L3 DISPATCH) — a small persistent record of the CLI agents
3
+ * LISA has launched via dispatch_agent, so she can later signal them
4
+ * (list / cancel) from a *different* turn, or even after a restart.
5
+ *
6
+ * dispatch_agent spawns agents **detached**, so they outlive LISA's own
7
+ * process and the transient child handle is gone by the next turn. This ledger
8
+ * persists the (pid, agent, cwd, task, startedAt) tuple to
9
+ * `~/.lisa/dispatches.json` so the orchestrator can reconnect observed work to
10
+ * a controllable process.
11
+ *
12
+ * SAFETY: the ledger only ever holds agents LISA *herself* dispatched — never
13
+ * the user's own manually-started sessions (those are discovered via session
14
+ * files and have no associated pid). signal_agent can therefore only stop work
15
+ * LISA started, never an arbitrary user process.
16
+ */
17
+ export interface DispatchEntry {
18
+ /** Stable handle, `${pid}-${startedAt.toString(36)}`. */
19
+ id: string;
20
+ agent: string;
21
+ pid: number;
22
+ cwd: string;
23
+ /** Task snippet (first 200 chars) — for display only. */
24
+ task: string;
25
+ /** Epoch ms when dispatched. */
26
+ startedAt: number;
27
+ }
28
+ /** Read the ledger; tolerant of a missing or corrupt file (returns []). */
29
+ export declare function loadLedger(): DispatchEntry[];
30
+ /**
31
+ * Is a process still alive? Signal 0 probes for existence without delivering a
32
+ * signal. EPERM means the process exists but is owned by another user (still
33
+ * "alive"); ESRCH means it's gone.
34
+ */
35
+ export declare function isAlive(pid: number): boolean;
36
+ /** Record a freshly dispatched agent. Returns the stored entry. */
37
+ export declare function recordDispatch(d: {
38
+ agent: string;
39
+ pid: number;
40
+ cwd: string;
41
+ task: string;
42
+ /** Override the clock (tests). */
43
+ now?: number;
44
+ }): DispatchEntry;
45
+ /** Live dispatched agents, pruning any that have since exited. */
46
+ export declare function listLiveDispatches(): DispatchEntry[];
47
+ /** Find a *live* dispatch by id or by pid (as a string). Null if absent/dead. */
48
+ export declare function findDispatch(target: string): DispatchEntry | null;
49
+ /** Drop an entry from the ledger by id. */
50
+ export declare function removeDispatch(id: string): void;
51
+ //# sourceMappingURL=dispatch-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch-ledger.d.ts","sourceRoot":"","sources":["../../src/integrations/dispatch-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,2EAA2E;AAC3E,wBAAgB,UAAU,IAAI,aAAa,EAAE,CAmB5C;AAQD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ5C;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,aAAa,CAehB;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAKpD;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAOjE;AAED,2CAA2C;AAC3C,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAI/C"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Dispatch ledger (L3 DISPATCH) — a small persistent record of the CLI agents
3
+ * LISA has launched via dispatch_agent, so she can later signal them
4
+ * (list / cancel) from a *different* turn, or even after a restart.
5
+ *
6
+ * dispatch_agent spawns agents **detached**, so they outlive LISA's own
7
+ * process and the transient child handle is gone by the next turn. This ledger
8
+ * persists the (pid, agent, cwd, task, startedAt) tuple to
9
+ * `~/.lisa/dispatches.json` so the orchestrator can reconnect observed work to
10
+ * a controllable process.
11
+ *
12
+ * SAFETY: the ledger only ever holds agents LISA *herself* dispatched — never
13
+ * the user's own manually-started sessions (those are discovered via session
14
+ * files and have no associated pid). signal_agent can therefore only stop work
15
+ * LISA started, never an arbitrary user process.
16
+ */
17
+ import fs from "node:fs";
18
+ import os from "node:os";
19
+ import path from "node:path";
20
+ /** Resolved lazily (reads env at call time) so tests can point LISA_HOME at a tmp dir. */
21
+ function ledgerPath() {
22
+ const home = process.env.LISA_HOME ?? path.join(os.homedir(), ".lisa");
23
+ return path.join(home, "dispatches.json");
24
+ }
25
+ /** Read the ledger; tolerant of a missing or corrupt file (returns []). */
26
+ export function loadLedger() {
27
+ let raw;
28
+ try {
29
+ raw = fs.readFileSync(ledgerPath(), "utf8");
30
+ }
31
+ catch {
32
+ return []; // no file yet
33
+ }
34
+ try {
35
+ const parsed = JSON.parse(raw);
36
+ if (!Array.isArray(parsed))
37
+ return [];
38
+ return parsed.filter((e) => !!e &&
39
+ typeof e.pid === "number" &&
40
+ typeof e.id === "string");
41
+ }
42
+ catch {
43
+ return []; // corrupt JSON — treat as empty rather than throwing
44
+ }
45
+ }
46
+ function saveLedger(entries) {
47
+ const file = ledgerPath();
48
+ fs.mkdirSync(path.dirname(file), { recursive: true });
49
+ fs.writeFileSync(file, JSON.stringify(entries, null, 2));
50
+ }
51
+ /**
52
+ * Is a process still alive? Signal 0 probes for existence without delivering a
53
+ * signal. EPERM means the process exists but is owned by another user (still
54
+ * "alive"); ESRCH means it's gone.
55
+ */
56
+ export function isAlive(pid) {
57
+ if (!Number.isInteger(pid) || pid <= 1)
58
+ return false;
59
+ try {
60
+ process.kill(pid, 0);
61
+ return true;
62
+ }
63
+ catch (err) {
64
+ return err.code === "EPERM";
65
+ }
66
+ }
67
+ /** Record a freshly dispatched agent. Returns the stored entry. */
68
+ export function recordDispatch(d) {
69
+ const startedAt = d.now ?? Date.now();
70
+ const entry = {
71
+ id: `${d.pid}-${startedAt.toString(36)}`,
72
+ agent: d.agent,
73
+ pid: d.pid,
74
+ cwd: d.cwd,
75
+ task: d.task.slice(0, 200),
76
+ startedAt,
77
+ };
78
+ // Drop any stale entry that reused this pid before appending.
79
+ const entries = loadLedger().filter((e) => e.pid !== d.pid);
80
+ entries.push(entry);
81
+ saveLedger(entries);
82
+ return entry;
83
+ }
84
+ /** Live dispatched agents, pruning any that have since exited. */
85
+ export function listLiveDispatches() {
86
+ const all = loadLedger();
87
+ const live = all.filter((e) => isAlive(e.pid));
88
+ if (live.length !== all.length)
89
+ saveLedger(live); // prune the dead
90
+ return live;
91
+ }
92
+ /** Find a *live* dispatch by id or by pid (as a string). Null if absent/dead. */
93
+ export function findDispatch(target) {
94
+ const live = listLiveDispatches();
95
+ return (live.find((e) => e.id === target) ??
96
+ live.find((e) => String(e.pid) === target) ??
97
+ null);
98
+ }
99
+ /** Drop an entry from the ledger by id. */
100
+ export function removeDispatch(id) {
101
+ const entries = loadLedger();
102
+ const next = entries.filter((e) => e.id !== id);
103
+ if (next.length !== entries.length)
104
+ saveLedger(next);
105
+ }
106
+ //# sourceMappingURL=dispatch-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch-ledger.js","sourceRoot":"","sources":["../../src/integrations/dispatch-ledger.ts"],"names":[],"mappings":"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"}