@oratis/lisa 0.4.0 → 0.7.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 +5 -0
- package/dist/idle/runner.d.ts +12 -0
- package/dist/idle/runner.d.ts.map +1 -1
- package/dist/idle/runner.js +33 -2
- package/dist/idle/runner.js.map +1 -1
- package/dist/integrations/dispatch-ledger.d.ts +51 -0
- package/dist/integrations/dispatch-ledger.d.ts.map +1 -0
- package/dist/integrations/dispatch-ledger.js +106 -0
- package/dist/integrations/dispatch-ledger.js.map +1 -0
- package/dist/soul/birth.d.ts.map +1 -1
- package/dist/soul/birth.js +8 -0
- package/dist/soul/birth.js.map +1 -1
- package/dist/tools/dispatch_agent.d.ts.map +1 -1
- package/dist/tools/dispatch_agent.js +13 -1
- package/dist/tools/dispatch_agent.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +7 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/signal_agent.d.ts +36 -0
- package/dist/tools/signal_agent.d.ts.map +1 -0
- package/dist/tools/signal_agent.js +140 -0
- package/dist/tools/signal_agent.js.map +1 -0
- package/dist/vision/capture.d.ts +44 -0
- package/dist/vision/capture.d.ts.map +1 -0
- package/dist/vision/capture.js +86 -0
- package/dist/vision/capture.js.map +1 -0
- package/dist/web/island.d.ts +1 -1
- package/dist/web/island.d.ts.map +1 -1
- package/dist/web/island.js +72 -23
- package/dist/web/island.js.map +1 -1
- package/dist/web/lisa-html.d.ts +1 -1
- package/dist/web/lisa-html.d.ts.map +1 -1
- package/dist/web/lisa-html.js +168 -4
- package/dist/web/lisa-html.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +87 -1
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -416,6 +416,11 @@ SEEDREAM_API_KEY=... # optional — for asset regeneration
|
|
|
416
416
|
LISA_SANDBOX=1 # opt-in macOS Seatbelt for `bash`
|
|
417
417
|
LISA_SANDBOX_NETWORK=0 # block network in sandbox
|
|
418
418
|
LISA_PROVIDER=openai # force provider override
|
|
419
|
+
LISA_IDLE_COMMITMENT_AWARE=1 # opt-in: bias idle-time toward upcoming user commitments
|
|
420
|
+
# before personal reflection. Recommended if your
|
|
421
|
+
# workflow involves recurring scheduled work (weekly
|
|
422
|
+
# summaries, daily check-ins). Default unset = LISA's
|
|
423
|
+
# self-reflective idle.
|
|
419
424
|
```
|
|
420
425
|
|
|
421
426
|
### `~/.lisa/mcp.json`
|
package/dist/idle/runner.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/idle/runner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { runSubagent } from "../subagent.js";
|
|
2
|
-
const
|
|
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:
|
|
61
|
+
systemPrompt: buildIdleSystemPrompt(),
|
|
31
62
|
tools: opts.tools,
|
|
32
63
|
cwd: opts.cwd,
|
|
33
64
|
signal: opts.signal,
|
package/dist/idle/runner.js.map
CHANGED
|
@@ -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,
|
|
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,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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"}
|
package/dist/soul/birth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"birth.d.ts","sourceRoot":"","sources":["../../src/soul/birth.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,eAAe,EAWhB,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AA8BD,wBAAsB,KAAK,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlE;
|
|
1
|
+
{"version":3,"file":"birth.d.ts","sourceRoot":"","sources":["../../src/soul/birth.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,eAAe,EAWhB,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AA8BD,wBAAsB,KAAK,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlE;AA2KD,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/soul/birth.js
CHANGED
|
@@ -161,6 +161,14 @@ function parseBirthOutput(raw) {
|
|
|
161
161
|
if (!parsed.first_value?.slug || !parsed.first_desire?.slug) {
|
|
162
162
|
throw new Error("birth output missing first_value or first_desire");
|
|
163
163
|
}
|
|
164
|
+
// Smaller models sometimes return `constitution` as an array of strings
|
|
165
|
+
// when the prompt asks for a "markdown list". Coerce to a numbered
|
|
166
|
+
// markdown block so downstream string ops work uniformly.
|
|
167
|
+
if (Array.isArray(parsed.constitution)) {
|
|
168
|
+
parsed.constitution = parsed.constitution
|
|
169
|
+
.map((line, i) => `${i + 1}. ${String(line).replace(/^\s*\d+[.)]\s*/, "")}`)
|
|
170
|
+
.join("\n");
|
|
171
|
+
}
|
|
164
172
|
return parsed;
|
|
165
173
|
}
|
|
166
174
|
function countLines(s) {
|
package/dist/soul/birth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"birth.js","sourceRoot":"","sources":["../../src/soul/birth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"birth.js","sourceRoot":"","sources":["../../src/soul/birth.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,MAAM,EACN,eAAe,EACf,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACL,gBAAgB,GAGjB,MAAM,YAAY,CAAC;AAapB,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;iIA0B4G,CAAC;AAElI,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAqB,EAAE;IACjD,IAAI,MAAM,MAAM,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAkB;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzC,MAAM,cAAc,EAAE,CAAC;IAEvB,UAAU;IACV,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IACtB,0EAA0E;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,MAAM,CAAC;QACX,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG;KAC5R,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,aAAa;QAClC,YAAY,EAAE,YAAY;QAC1B,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,uCAAuC;qBACjF;iBACF;aACF;SACF;QACD,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC;SACxC,IAAI,CAAC,EAAE,CAAC;SACR,IAAI,EAAE,CAAC;IACV,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAErC,kBAAkB;IAClB,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/E,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAErC,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC7E,MAAM,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;IAChG,MAAM,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE7C,MAAM,MAAM,CAAC;QACX,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE;KACxC,CAAC,CAAC;IACH,MAAM,UAAU,CAAC;QACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;QAC7B,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;QAC/B,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;QAC7B,SAAS,EAAE,IAAI,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC;QACX,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE;KAChG,CAAC,CAAC;IACH,MAAM,WAAW,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;QAC9B,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI;QAC9B,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,GAAG;QAC5B,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU;QAC1C,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,gBAAgB;QACrD,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,aAAa,CAAC,EAAE,GAAG,gBAAgB,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClF,MAAM,QAAQ,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IAEtC,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM;SACpB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACzC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,sEAAsE;IACtE,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO;QACL,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAChC,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,iEAAiE;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAC1B,MAAM,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,GAAG,eAAe,CAAC;QACxE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACnE,4BAA4B;IAC5B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;IAChE,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAChB,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;QACzB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;QACpB,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;QACrB,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;KACpB,CAAC;IACF,0EAA0E;IAC1E,6DAA6D;IAC7D,KAAK,KAAK,CAAC;AACb,CAAC;AAiBD,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,QAAQ,GAAG,GAAG;SACjB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,IAAI,EAAE,CAAC;IACV,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAgB,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,wEAAwE;IACxE,mEAAmE;IACnE,0DAA0D;IAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,YAAY,GAAI,MAAM,CAAC,YAA0B;aACrD,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC;aAC3E,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;AACzD,CAAC;AAED,8EAA8E;AAC9E,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch_agent.d.ts","sourceRoot":"","sources":["../../src/tools/dispatch_agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch_agent.d.ts","sourceRoot":"","sources":["../../src/tools/dispatch_agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,UAAU,aAAa;IACrB,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAoBD,wEAAwE;AACxE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,EAC7B,IAAI,EAAE,MAAM,GACX;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAgBjC;AAED,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,aAAa,EAAE,MAAM,CA2GnE,CAAC"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import { spawn } from "node:child_process";
|
|
24
24
|
import { getCurrentHub } from "../integrations/current-hub.js";
|
|
25
|
+
import { recordDispatch } from "../integrations/dispatch-ledger.js";
|
|
25
26
|
/**
|
|
26
27
|
* L4 COORDINATE: is another agent already actively working in this cwd?
|
|
27
28
|
* Launching a second agent into the same directory is the #1 way multi-agent
|
|
@@ -136,10 +137,21 @@ export const dispatchAgentTool = {
|
|
|
136
137
|
return launchError;
|
|
137
138
|
const pid = child.pid;
|
|
138
139
|
child.unref(); // don't keep LISA's event loop alive for it
|
|
140
|
+
// Record it so signal_agent can list/cancel it from a later turn (the
|
|
141
|
+
// detached child outlives this turn's handle). Never fatal to the dispatch.
|
|
142
|
+
if (typeof pid === "number") {
|
|
143
|
+
try {
|
|
144
|
+
recordDispatch({ agent: input.agent, pid, cwd, task: input.task });
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
ctx.log(`[dispatch] ledger write failed (non-fatal): ${err.message}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
139
150
|
ctx.log(`[dispatch] launched ${input.agent} (pid ${pid}) in ${cwd}: ${input.task.slice(0, 80)}`);
|
|
140
151
|
return (`Launched ${input.agent} (pid ${pid}) in ${cwd}.\n` +
|
|
141
152
|
`It's running autonomously and will appear in the agent session monitor. ` +
|
|
142
|
-
`I won't block on it — ask me "what's running?" (advise_now) to check progress
|
|
153
|
+
`I won't block on it — ask me "what's running?" (advise_now) to check progress, ` +
|
|
154
|
+
`or signal_agent to list/cancel it.`);
|
|
143
155
|
},
|
|
144
156
|
};
|
|
145
157
|
//# sourceMappingURL=dispatch_agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch_agent.js","sourceRoot":"","sources":["../../src/tools/dispatch_agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch_agent.js","sourceRoot":"","sources":["../../src/tools/dispatch_agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA+BlD,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,mBAAwB,GAAG,cAAc,EAAE,CA2ClF;AAED,eAAO,MAAM,oBAAoB,aAS/B,CAAC;AAEH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAExE"}
|
package/dist/tools/registry.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { memoryTool } from "../memory/tool.js";
|
|
2
2
|
import { memorySearchTool } from "../memory/search_tool.js";
|
|
3
|
+
import { adviseNowTool } from "./advise_now.js";
|
|
4
|
+
import { dispatchAgentTool } from "./dispatch_agent.js";
|
|
5
|
+
import { signalAgentTool } from "./signal_agent.js";
|
|
3
6
|
import { skillManageTool } from "../skills/tool.js";
|
|
4
7
|
import { desireCloseTool, desireProgressTool, soulDiffTool, soulFeelTool, soulHistoryTool, soulJournalTool, soulObjectTool, soulPatchTool, soulReadTool, } from "../soul/tools.js";
|
|
5
8
|
import { speakTool, transcribeTool } from "../voice/tool.js";
|
|
@@ -39,6 +42,10 @@ export function buildToolRegistry(opts = {}) {
|
|
|
39
42
|
webFetchTool,
|
|
40
43
|
webSearchTool,
|
|
41
44
|
redeployTool,
|
|
45
|
+
// Orchestration (docs/ORCHESTRATOR_PLAN.md): observe → advise → dispatch → control.
|
|
46
|
+
adviseNowTool,
|
|
47
|
+
dispatchAgentTool,
|
|
48
|
+
signalAgentTool,
|
|
42
49
|
];
|
|
43
50
|
if (opts.includeVoice) {
|
|
44
51
|
tools.push(speakTool, transcribeTool);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* signal_agent (L3/O5 DISPATCH — active control) — the other half of
|
|
3
|
+
* dispatch_agent. Once LISA has launched CLI agents she should be able to act
|
|
4
|
+
* on what she observes: see which of her dispatched agents are still running
|
|
5
|
+
* and stop one that's stuck, conflicting, or burning tokens.
|
|
6
|
+
*
|
|
7
|
+
* Scope & safety:
|
|
8
|
+
* - It only ever targets agents recorded in the dispatch ledger — i.e. ones
|
|
9
|
+
* LISA *herself* launched via dispatch_agent. The user's own manually
|
|
10
|
+
* started sessions are observed via session files, carry no pid, and are
|
|
11
|
+
* therefore unreachable here. LISA cannot kill an arbitrary process.
|
|
12
|
+
* - `cancel` terminates an autonomous process the host already approved
|
|
13
|
+
* LISA to spawn; it's the inverse of that approval. It sends SIGTERM to the
|
|
14
|
+
* whole process *group* (dispatch spawns detached group leaders, so the
|
|
15
|
+
* agent's child processes die with it), then escalates to SIGKILL after a
|
|
16
|
+
* short grace period if the group is still alive.
|
|
17
|
+
*
|
|
18
|
+
* Composes with the advisor: "codex looks stuck in ~/p — cancel it?" →
|
|
19
|
+
* signal_agent({action:"cancel", target:"<id>"}).
|
|
20
|
+
*/
|
|
21
|
+
import type { ToolDefinition } from "../types.js";
|
|
22
|
+
import { type DispatchEntry } from "../integrations/dispatch-ledger.js";
|
|
23
|
+
interface SignalInput {
|
|
24
|
+
action: "list" | "cancel";
|
|
25
|
+
/** For cancel: the dispatch id (preferred) or pid of the agent to stop. */
|
|
26
|
+
target?: string;
|
|
27
|
+
/** Skip the graceful SIGTERM and SIGKILL the group immediately. */
|
|
28
|
+
force?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Human-friendly elapsed time, e.g. "3m", "2h 5m", "8s". */
|
|
31
|
+
export declare function formatUptime(ms: number): string;
|
|
32
|
+
/** One ledger entry → a readable line. Pure, for display + tests. */
|
|
33
|
+
export declare function formatDispatchLine(e: DispatchEntry, now: number): string;
|
|
34
|
+
export declare const signalAgentTool: ToolDefinition<SignalInput, string>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=signal_agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal_agent.d.ts","sourceRoot":"","sources":["../../src/tools/signal_agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,oCAAoC,CAAC;AAE5C,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAIxE;AAsBD,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,WAAW,EAAE,MAAM,CA2F/D,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* signal_agent (L3/O5 DISPATCH — active control) — the other half of
|
|
3
|
+
* dispatch_agent. Once LISA has launched CLI agents she should be able to act
|
|
4
|
+
* on what she observes: see which of her dispatched agents are still running
|
|
5
|
+
* and stop one that's stuck, conflicting, or burning tokens.
|
|
6
|
+
*
|
|
7
|
+
* Scope & safety:
|
|
8
|
+
* - It only ever targets agents recorded in the dispatch ledger — i.e. ones
|
|
9
|
+
* LISA *herself* launched via dispatch_agent. The user's own manually
|
|
10
|
+
* started sessions are observed via session files, carry no pid, and are
|
|
11
|
+
* therefore unreachable here. LISA cannot kill an arbitrary process.
|
|
12
|
+
* - `cancel` terminates an autonomous process the host already approved
|
|
13
|
+
* LISA to spawn; it's the inverse of that approval. It sends SIGTERM to the
|
|
14
|
+
* whole process *group* (dispatch spawns detached group leaders, so the
|
|
15
|
+
* agent's child processes die with it), then escalates to SIGKILL after a
|
|
16
|
+
* short grace period if the group is still alive.
|
|
17
|
+
*
|
|
18
|
+
* Composes with the advisor: "codex looks stuck in ~/p — cancel it?" →
|
|
19
|
+
* signal_agent({action:"cancel", target:"<id>"}).
|
|
20
|
+
*/
|
|
21
|
+
import { findDispatch, listLiveDispatches, removeDispatch, isAlive, } from "../integrations/dispatch-ledger.js";
|
|
22
|
+
/** Human-friendly elapsed time, e.g. "3m", "2h 5m", "8s". */
|
|
23
|
+
export function formatUptime(ms) {
|
|
24
|
+
if (ms < 0)
|
|
25
|
+
ms = 0;
|
|
26
|
+
const s = Math.floor(ms / 1000);
|
|
27
|
+
if (s < 60)
|
|
28
|
+
return `${s}s`;
|
|
29
|
+
const m = Math.floor(s / 60);
|
|
30
|
+
if (m < 60)
|
|
31
|
+
return `${m}m`;
|
|
32
|
+
const h = Math.floor(m / 60);
|
|
33
|
+
return `${h}h ${m % 60}m`;
|
|
34
|
+
}
|
|
35
|
+
/** One ledger entry → a readable line. Pure, for display + tests. */
|
|
36
|
+
export function formatDispatchLine(e, now) {
|
|
37
|
+
const up = formatUptime(now - e.startedAt);
|
|
38
|
+
const task = e.task.length > 70 ? e.task.slice(0, 67) + "…" : e.task;
|
|
39
|
+
return `• ${e.id} ${e.agent} (pid ${e.pid}, up ${up}) ${e.cwd}\n "${task}"`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Send `signal` to the process group led by `pid`, falling back to the lone
|
|
43
|
+
* process if the group send fails. Returns true if either delivery succeeded.
|
|
44
|
+
*/
|
|
45
|
+
function signalGroup(pid, signal) {
|
|
46
|
+
try {
|
|
47
|
+
process.kill(-pid, signal); // negative pid → whole process group
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
try {
|
|
52
|
+
process.kill(pid, signal);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return false; // already gone, or not permitted
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
61
|
+
export const signalAgentTool = {
|
|
62
|
+
name: "signal_agent",
|
|
63
|
+
description: "List or stop the CLI agents LISA dispatched. action:'list' shows the still-running " +
|
|
64
|
+
"agents LISA launched via dispatch_agent (id, agent, pid, uptime, cwd, task). " +
|
|
65
|
+
"action:'cancel' (needs target = the id or pid from the list) stops one: SIGTERM to " +
|
|
66
|
+
"its process group, escalating to SIGKILL after a grace period (or pass force:true to " +
|
|
67
|
+
"kill immediately). Use when a dispatched agent is stuck, conflicting, or running away. " +
|
|
68
|
+
"Only agents LISA herself dispatched can be targeted — never the user's own sessions.",
|
|
69
|
+
inputSchema: {
|
|
70
|
+
type: "object",
|
|
71
|
+
properties: {
|
|
72
|
+
action: {
|
|
73
|
+
type: "string",
|
|
74
|
+
enum: ["list", "cancel"],
|
|
75
|
+
description: "'list' the running dispatched agents, or 'cancel' one.",
|
|
76
|
+
},
|
|
77
|
+
target: {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "For cancel: the dispatch id (preferred) or the pid of the agent to stop. From action:'list'.",
|
|
80
|
+
},
|
|
81
|
+
force: {
|
|
82
|
+
type: "boolean",
|
|
83
|
+
description: "Cancel only: skip graceful SIGTERM and SIGKILL the process group immediately (default false).",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
required: ["action"],
|
|
87
|
+
additionalProperties: false,
|
|
88
|
+
},
|
|
89
|
+
async execute(input, ctx) {
|
|
90
|
+
const now = Date.now();
|
|
91
|
+
if (input.action === "list") {
|
|
92
|
+
const live = listLiveDispatches();
|
|
93
|
+
if (live.length === 0) {
|
|
94
|
+
return "No agents dispatched by LISA are currently running. (Only agents launched via dispatch_agent are tracked here.)";
|
|
95
|
+
}
|
|
96
|
+
const lines = live
|
|
97
|
+
.sort((a, b) => a.startedAt - b.startedAt)
|
|
98
|
+
.map((e) => formatDispatchLine(e, now))
|
|
99
|
+
.join("\n");
|
|
100
|
+
return `${live.length} dispatched agent${live.length === 1 ? "" : "s"} running:\n${lines}\n\nCancel one with signal_agent({action:"cancel", target:"<id>"}).`;
|
|
101
|
+
}
|
|
102
|
+
// action === "cancel"
|
|
103
|
+
const target = (input.target ?? "").trim();
|
|
104
|
+
if (!target) {
|
|
105
|
+
return 'cancel needs a target — the dispatch id or pid from signal_agent({action:"list"}).';
|
|
106
|
+
}
|
|
107
|
+
const entry = findDispatch(target);
|
|
108
|
+
if (!entry) {
|
|
109
|
+
const live = listLiveDispatches();
|
|
110
|
+
const hint = live.length > 0
|
|
111
|
+
? ` Currently running: ${live.map((e) => `${e.id} (${e.agent}, pid ${e.pid})`).join(", ")}.`
|
|
112
|
+
: " No dispatched agents are running.";
|
|
113
|
+
return `No running dispatched agent matches "${target}".${hint}`;
|
|
114
|
+
}
|
|
115
|
+
const sig = input.force ? "SIGKILL" : "SIGTERM";
|
|
116
|
+
const delivered = signalGroup(entry.pid, sig);
|
|
117
|
+
if (!delivered && !isAlive(entry.pid)) {
|
|
118
|
+
// It exited on its own between the lookup and the signal — clean up.
|
|
119
|
+
removeDispatch(entry.id);
|
|
120
|
+
return `${entry.agent} (pid ${entry.pid}) had already exited; removed it from the ledger.`;
|
|
121
|
+
}
|
|
122
|
+
let escalated = false;
|
|
123
|
+
if (!input.force) {
|
|
124
|
+
// Give it a moment to shut down gracefully, then SIGKILL if it clings on.
|
|
125
|
+
await sleep(1500);
|
|
126
|
+
if (isAlive(entry.pid)) {
|
|
127
|
+
escalated = signalGroup(entry.pid, "SIGKILL");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
removeDispatch(entry.id);
|
|
131
|
+
ctx.log(`[signal] cancelled ${entry.agent} (pid ${entry.pid}) in ${entry.cwd}${escalated ? " [SIGKILL]" : ""}`);
|
|
132
|
+
const how = input.force
|
|
133
|
+
? "SIGKILL"
|
|
134
|
+
: escalated
|
|
135
|
+
? "SIGTERM then SIGKILL"
|
|
136
|
+
: "SIGTERM";
|
|
137
|
+
return `Cancelled ${entry.agent} (pid ${entry.pid}) in ${entry.cwd} via ${how}. Removed from the dispatch ledger.`;
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=signal_agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal_agent.js","sourceRoot":"","sources":["../../src/tools/signal_agent.ts"],"names":[],"mappings":"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"}
|