@oratis/lisa 0.8.0 → 0.11.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 +123 -16
- package/README.zh-CN.md +101 -15
- package/completions/_lisa +56 -0
- package/completions/lisa.bash +35 -1
- package/completions/lisa.fish +18 -1
- package/dist/advisor/engine.d.ts +7 -0
- package/dist/advisor/engine.d.ts.map +1 -1
- package/dist/advisor/engine.js +12 -0
- package/dist/advisor/engine.js.map +1 -1
- package/dist/agent.d.ts +14 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +58 -7
- package/dist/agent.js.map +1 -1
- package/dist/agents/managed.d.ts +108 -0
- package/dist/agents/managed.d.ts.map +1 -0
- package/dist/agents/managed.js +241 -0
- package/dist/agents/managed.js.map +1 -0
- package/dist/agents/pty.d.ts +155 -0
- package/dist/agents/pty.d.ts.map +1 -0
- package/dist/agents/pty.js +299 -0
- package/dist/agents/pty.js.map +1 -0
- package/dist/approval.d.ts +13 -0
- package/dist/approval.d.ts.map +1 -1
- package/dist/approval.js +25 -2
- package/dist/approval.js.map +1 -1
- package/dist/autonomy/runs.d.ts +33 -0
- package/dist/autonomy/runs.d.ts.map +1 -0
- package/dist/autonomy/runs.js +106 -0
- package/dist/autonomy/runs.js.map +1 -0
- package/dist/channels/feishu.d.ts.map +1 -1
- package/dist/channels/feishu.js +65 -0
- package/dist/channels/feishu.js.map +1 -1
- package/dist/channels/router.d.ts +7 -0
- package/dist/channels/router.d.ts.map +1 -1
- package/dist/channels/router.js +1 -1
- package/dist/channels/router.js.map +1 -1
- package/dist/cli/agents-pty.d.ts +18 -0
- package/dist/cli/agents-pty.d.ts.map +1 -0
- package/dist/cli/agents-pty.js +182 -0
- package/dist/cli/agents-pty.js.map +1 -0
- package/dist/cli/agents.d.ts +2 -0
- package/dist/cli/agents.d.ts.map +1 -0
- package/dist/cli/agents.js +65 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/consent.d.ts +2 -0
- package/dist/cli/consent.d.ts.map +1 -0
- package/dist/cli/consent.js +57 -0
- package/dist/cli/consent.js.map +1 -0
- package/dist/cli/model.d.ts +2 -0
- package/dist/cli/model.d.ts.map +1 -0
- package/dist/cli/model.js +121 -0
- package/dist/cli/model.js.map +1 -0
- package/dist/cli/sense.d.ts +2 -0
- package/dist/cli/sense.d.ts.map +1 -0
- package/dist/cli/sense.js +36 -0
- package/dist/cli/sense.js.map +1 -0
- package/dist/cli.js +117 -12
- package/dist/cli.js.map +1 -1
- package/dist/consent/blacklist.d.ts +28 -0
- package/dist/consent/blacklist.d.ts.map +1 -0
- package/dist/consent/blacklist.js +78 -0
- package/dist/consent/blacklist.js.map +1 -0
- package/dist/consent/store.d.ts +45 -0
- package/dist/consent/store.d.ts.map +1 -0
- package/dist/consent/store.js +126 -0
- package/dist/consent/store.js.map +1 -0
- package/dist/control/policy.d.ts +13 -0
- package/dist/control/policy.d.ts.map +1 -0
- package/dist/control/policy.js +57 -0
- package/dist/control/policy.js.map +1 -0
- package/dist/heartbeat/runner.d.ts.map +1 -1
- package/dist/heartbeat/runner.js +70 -14
- package/dist/heartbeat/runner.js.map +1 -1
- package/dist/idle/runner.d.ts.map +1 -1
- package/dist/idle/runner.js +87 -17
- package/dist/idle/runner.js.map +1 -1
- package/dist/integrations/aider/observer.d.ts +21 -1
- package/dist/integrations/aider/observer.d.ts.map +1 -1
- package/dist/integrations/aider/observer.js +110 -1
- package/dist/integrations/aider/observer.js.map +1 -1
- package/dist/integrations/claude-code/liveness.d.ts +10 -0
- package/dist/integrations/claude-code/liveness.d.ts.map +1 -0
- package/dist/integrations/claude-code/liveness.js +62 -0
- package/dist/integrations/claude-code/liveness.js.map +1 -0
- package/dist/integrations/claude-code/watcher.d.ts +39 -4
- package/dist/integrations/claude-code/watcher.d.ts.map +1 -1
- package/dist/integrations/claude-code/watcher.js +94 -57
- package/dist/integrations/claude-code/watcher.js.map +1 -1
- package/dist/integrations/codex/observer.d.ts +19 -6
- package/dist/integrations/codex/observer.d.ts.map +1 -1
- package/dist/integrations/codex/observer.js +228 -4
- package/dist/integrations/codex/observer.js.map +1 -1
- package/dist/integrations/dispatch-ledger.d.ts +30 -1
- package/dist/integrations/dispatch-ledger.d.ts.map +1 -1
- package/dist/integrations/dispatch-ledger.js +75 -9
- package/dist/integrations/dispatch-ledger.js.map +1 -1
- package/dist/integrations/git/branch.d.ts +11 -0
- package/dist/integrations/git/branch.d.ts.map +1 -0
- package/dist/integrations/git/branch.js +49 -0
- package/dist/integrations/git/branch.js.map +1 -0
- package/dist/integrations/git/observer.d.ts +39 -0
- package/dist/integrations/git/observer.d.ts.map +1 -0
- package/dist/integrations/git/observer.js +252 -0
- package/dist/integrations/git/observer.js.map +1 -0
- package/dist/integrations/github-pr/observer.d.ts.map +1 -1
- package/dist/integrations/github-pr/observer.js +7 -2
- package/dist/integrations/github-pr/observer.js.map +1 -1
- package/dist/integrations/hub.d.ts +8 -0
- package/dist/integrations/hub.d.ts.map +1 -1
- package/dist/integrations/hub.js +39 -1
- package/dist/integrations/hub.js.map +1 -1
- package/dist/integrations/managed/observer.d.ts +17 -0
- package/dist/integrations/managed/observer.d.ts.map +1 -0
- package/dist/integrations/managed/observer.js +46 -0
- package/dist/integrations/managed/observer.js.map +1 -0
- package/dist/integrations/opencode/observer.d.ts +53 -5
- package/dist/integrations/opencode/observer.d.ts.map +1 -1
- package/dist/integrations/opencode/observer.js +242 -20
- package/dist/integrations/opencode/observer.js.map +1 -1
- package/dist/integrations/pty/observer.d.ts +25 -0
- package/dist/integrations/pty/observer.d.ts.map +1 -0
- package/dist/integrations/pty/observer.js +48 -0
- package/dist/integrations/pty/observer.js.map +1 -0
- package/dist/integrations/registry.d.ts.map +1 -1
- package/dist/integrations/registry.js +5 -0
- package/dist/integrations/registry.js.map +1 -1
- package/dist/integrations/shell/observer.d.ts +33 -0
- package/dist/integrations/shell/observer.d.ts.map +1 -0
- package/dist/integrations/shell/observer.js +223 -0
- package/dist/integrations/shell/observer.js.map +1 -0
- package/dist/integrations/takoapi/a2a.d.ts +38 -0
- package/dist/integrations/takoapi/a2a.d.ts.map +1 -0
- package/dist/integrations/takoapi/a2a.js +70 -0
- package/dist/integrations/takoapi/a2a.js.map +1 -0
- package/dist/integrations/takoapi/ledger.d.ts +32 -0
- package/dist/integrations/takoapi/ledger.d.ts.map +1 -0
- package/dist/integrations/takoapi/ledger.js +96 -0
- package/dist/integrations/takoapi/ledger.js.map +1 -0
- package/dist/integrations/takoapi/observer.d.ts +39 -0
- package/dist/integrations/takoapi/observer.d.ts.map +1 -0
- package/dist/integrations/takoapi/observer.js +102 -0
- package/dist/integrations/takoapi/observer.js.map +1 -0
- package/dist/integrations/types.d.ts +17 -0
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/mcp/client.d.ts +5 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +1 -1
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/config.d.ts +4 -0
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +34 -0
- package/dist/mcp/config.js.map +1 -1
- package/dist/memory/embedding.d.ts +45 -0
- package/dist/memory/embedding.d.ts.map +1 -0
- package/dist/memory/embedding.js +139 -0
- package/dist/memory/embedding.js.map +1 -0
- package/dist/memory/search_tool.d.ts.map +1 -1
- package/dist/memory/search_tool.js +6 -2
- package/dist/memory/search_tool.js.map +1 -1
- package/dist/memory/vector.d.ts +14 -3
- package/dist/memory/vector.d.ts.map +1 -1
- package/dist/memory/vector.js +50 -0
- package/dist/memory/vector.js.map +1 -1
- package/dist/model/local.d.ts +43 -0
- package/dist/model/local.d.ts.map +1 -0
- package/dist/model/local.js +118 -0
- package/dist/model/local.js.map +1 -0
- package/dist/model/plan-usage.d.ts +41 -0
- package/dist/model/plan-usage.d.ts.map +1 -0
- package/dist/model/plan-usage.js +168 -0
- package/dist/model/plan-usage.js.map +1 -0
- package/dist/model/plans.d.ts +73 -0
- package/dist/model/plans.d.ts.map +1 -0
- package/dist/model/plans.js +246 -0
- package/dist/model/plans.js.map +1 -0
- package/dist/orchestrator/recent-recap.d.ts +2 -0
- package/dist/orchestrator/recent-recap.d.ts.map +1 -0
- package/dist/orchestrator/recent-recap.js +20 -0
- package/dist/orchestrator/recent-recap.js.map +1 -0
- package/dist/providers/anthropic.d.ts +1 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +10 -2
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/fallback.d.ts +23 -0
- package/dist/providers/fallback.d.ts.map +1 -0
- package/dist/providers/fallback.js +29 -0
- package/dist/providers/fallback.js.map +1 -0
- package/dist/providers/gemini.d.ts +2 -0
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +24 -10
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +4 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/registry.d.ts +18 -2
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +56 -9
- package/dist/providers/registry.js.map +1 -1
- package/dist/reflect.d.ts +55 -0
- package/dist/reflect.d.ts.map +1 -1
- package/dist/reflect.js +148 -54
- package/dist/reflect.js.map +1 -1
- package/dist/sense/log.d.ts +9 -0
- package/dist/sense/log.d.ts.map +1 -0
- package/dist/sense/log.js +63 -0
- package/dist/sense/log.js.map +1 -0
- package/dist/sense/screen.d.ts +43 -0
- package/dist/sense/screen.d.ts.map +1 -0
- package/dist/sense/screen.js +107 -0
- package/dist/sense/screen.js.map +1 -0
- package/dist/sense/service.d.ts +16 -0
- package/dist/sense/service.d.ts.map +1 -0
- package/dist/sense/service.js +33 -0
- package/dist/sense/service.js.map +1 -0
- package/dist/sense/types.d.ts +35 -0
- package/dist/sense/types.d.ts.map +1 -0
- package/dist/sense/types.js +11 -0
- package/dist/sense/types.js.map +1 -0
- package/dist/sense/voice.d.ts +28 -0
- package/dist/sense/voice.d.ts.map +1 -0
- package/dist/sense/voice.js +64 -0
- package/dist/sense/voice.js.map +1 -0
- package/dist/soul/git.d.ts.map +1 -1
- package/dist/soul/git.js +35 -16
- package/dist/soul/git.js.map +1 -1
- package/dist/soul/store.d.ts +22 -0
- package/dist/soul/store.d.ts.map +1 -1
- package/dist/soul/store.js +69 -14
- package/dist/soul/store.js.map +1 -1
- package/dist/soul/summary.d.ts +10 -0
- package/dist/soul/summary.d.ts.map +1 -0
- package/dist/soul/summary.js +57 -0
- package/dist/soul/summary.js.map +1 -0
- package/dist/soul/tools.d.ts.map +1 -1
- package/dist/soul/tools.js +13 -24
- package/dist/soul/tools.js.map +1 -1
- package/dist/soul/types.d.ts +9 -0
- package/dist/soul/types.d.ts.map +1 -1
- package/dist/soul/types.js.map +1 -1
- package/dist/subagent.d.ts +7 -0
- package/dist/subagent.d.ts.map +1 -1
- package/dist/subagent.js +3 -1
- package/dist/subagent.js.map +1 -1
- package/dist/tools/dispatch_agent.d.ts +13 -1
- package/dist/tools/dispatch_agent.d.ts.map +1 -1
- package/dist/tools/dispatch_agent.js +56 -12
- package/dist/tools/dispatch_agent.js.map +1 -1
- package/dist/tools/dispatch_status.d.ts +22 -0
- package/dist/tools/dispatch_status.d.ts.map +1 -0
- package/dist/tools/dispatch_status.js +57 -0
- package/dist/tools/dispatch_status.js.map +1 -0
- package/dist/tools/github.d.ts +34 -0
- package/dist/tools/github.d.ts.map +1 -0
- package/dist/tools/github.js +140 -0
- package/dist/tools/github.js.map +1 -0
- package/dist/tools/github_link.d.ts +36 -0
- package/dist/tools/github_link.d.ts.map +1 -0
- package/dist/tools/github_link.js +127 -0
- package/dist/tools/github_link.js.map +1 -0
- package/dist/tools/mcp.d.ts +28 -0
- package/dist/tools/mcp.d.ts.map +1 -0
- package/dist/tools/mcp.js +55 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/tools/npm_info.d.ts +21 -0
- package/dist/tools/npm_info.d.ts.map +1 -0
- package/dist/tools/npm_info.js +102 -0
- package/dist/tools/npm_info.js.map +1 -0
- package/dist/tools/registry.d.ts +29 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +75 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/run_on_plan.d.ts +46 -0
- package/dist/tools/run_on_plan.d.ts.map +1 -0
- package/dist/tools/run_on_plan.js +89 -0
- package/dist/tools/run_on_plan.js.map +1 -0
- package/dist/tools/takoapi.d.ts +60 -0
- package/dist/tools/takoapi.d.ts.map +1 -0
- package/dist/tools/takoapi.js +181 -0
- package/dist/tools/takoapi.js.map +1 -0
- package/dist/tools/validate.d.ts +22 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +50 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/voice/dictation.d.ts +51 -0
- package/dist/voice/dictation.d.ts.map +1 -0
- package/dist/voice/dictation.js +70 -0
- package/dist/voice/dictation.js.map +1 -0
- package/dist/web/agent-roster.d.ts +56 -0
- package/dist/web/agent-roster.d.ts.map +1 -0
- package/dist/web/agent-roster.js +109 -0
- package/dist/web/agent-roster.js.map +1 -0
- package/dist/web/devices.d.ts +27 -0
- package/dist/web/devices.d.ts.map +1 -0
- package/dist/web/devices.js +113 -0
- package/dist/web/devices.js.map +1 -0
- package/dist/web/island.d.ts +5 -1
- package/dist/web/island.d.ts.map +1 -1
- package/dist/web/island.js +427 -67
- package/dist/web/island.js.map +1 -1
- package/dist/web/lisa-client.d.ts +20 -0
- package/dist/web/lisa-client.d.ts.map +1 -0
- package/dist/web/lisa-client.js +1323 -0
- package/dist/web/lisa-client.js.map +1 -0
- package/dist/web/lisa-css.d.ts +13 -0
- package/dist/web/lisa-css.d.ts.map +1 -0
- package/dist/web/lisa-css.js +1163 -0
- package/dist/web/lisa-css.js.map +1 -0
- 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 +16 -2091
- package/dist/web/lisa-html.js.map +1 -1
- package/dist/web/push.d.ts +76 -0
- package/dist/web/push.d.ts.map +1 -0
- package/dist/web/push.js +163 -0
- package/dist/web/push.js.map +1 -0
- package/dist/web/server.d.ts +19 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +898 -65
- package/dist/web/server.js.map +1 -1
- package/package.json +5 -2
|
@@ -10,14 +10,23 @@
|
|
|
10
10
|
*
|
|
11
11
|
* PRIVACY: identical contract to claude-code — only structural metadata
|
|
12
12
|
* (entry `type`/`role`, error flags, file mtime). Never message content.
|
|
13
|
+
* The Tier-2 activity extractor (parseCodexActivity) extends this with
|
|
14
|
+
* tool NAMES, file PATHS, and command argv[0] — but, crucially, NEVER the
|
|
15
|
+
* `arguments` JSON itself, reasoning text, or message bodies. See the
|
|
16
|
+
* planted-secret privacy test in observer.test.ts.
|
|
13
17
|
*
|
|
14
|
-
* NOTE: Codex's exact rollout schema varies by version; the state parse
|
|
15
|
-
* deliberately tolerant (unknown shapes →
|
|
16
|
-
* DISABLED by default (opt in via
|
|
17
|
-
* when $CODEX_HOME/sessions is absent.
|
|
18
|
+
* NOTE: Codex's exact rollout schema varies by version; both the state parse
|
|
19
|
+
* and the activity parse are deliberately tolerant (unknown shapes → skipped /
|
|
20
|
+
* "unknown") and the integration is DISABLED by default (opt in via
|
|
21
|
+
* ~/.lisa/agents.json). It graceful-no-ops when $CODEX_HOME/sessions is absent.
|
|
18
22
|
*/
|
|
19
23
|
import { EventEmitter } from "node:events";
|
|
20
|
-
import
|
|
24
|
+
import { type GitBranchResolver } from "../git/branch.js";
|
|
25
|
+
import type { AgentIntegrationConfig, AgentObserver, AgentSession, AgentSessionState, SessionActivity } from "../types.js";
|
|
26
|
+
/** Constructor options — config plus an injectable branch resolver (tests). */
|
|
27
|
+
export interface CodexObserverOptions extends AgentIntegrationConfig {
|
|
28
|
+
gitBranch?: GitBranchResolver;
|
|
29
|
+
}
|
|
21
30
|
export declare class CodexObserver extends EventEmitter implements AgentObserver {
|
|
22
31
|
readonly agent = "codex";
|
|
23
32
|
private sessionsRoot;
|
|
@@ -25,7 +34,10 @@ export declare class CodexObserver extends EventEmitter implements AgentObserver
|
|
|
25
34
|
private watcher;
|
|
26
35
|
private pending;
|
|
27
36
|
private emitFn;
|
|
28
|
-
|
|
37
|
+
private readonly computeActivity;
|
|
38
|
+
/** O-D1: derive gitBranch from a session's cwd (Codex rollouts don't store one). */
|
|
39
|
+
private readonly resolveBranch;
|
|
40
|
+
constructor(cfg: CodexObserverOptions);
|
|
29
41
|
start(emit: (s: AgentSession) => void): Promise<void>;
|
|
30
42
|
list(): AgentSession[];
|
|
31
43
|
stop(): Promise<void>;
|
|
@@ -45,4 +57,5 @@ export declare function parseCodexState(filePath: string): Promise<{
|
|
|
45
57
|
reason: string;
|
|
46
58
|
cwd?: string;
|
|
47
59
|
}>;
|
|
60
|
+
export declare function parseCodexActivity(filePath: string): Promise<SessionActivity | undefined>;
|
|
48
61
|
//# sourceMappingURL=observer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/integrations/codex/observer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/integrations/codex/observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB,+EAA+E;AAC/E,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAkBD,qBAAa,aAAc,SAAQ,YAAa,YAAW,aAAa;IACtE,QAAQ,CAAC,KAAK,WAAW;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;gBAEtC,GAAG,EAAE,oBAAoB;IAc/B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,IAAI,IAAI,YAAY,EAAE;IAShB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQb,IAAI;IAKlB,OAAO,CAAC,MAAM;YAiCA,MAAM;CA4BrB;AAeD,6EAA6E;AAC7E,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBlE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkDrE;AA4BD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CA2HtC"}
|
|
@@ -10,11 +10,15 @@
|
|
|
10
10
|
*
|
|
11
11
|
* PRIVACY: identical contract to claude-code — only structural metadata
|
|
12
12
|
* (entry `type`/`role`, error flags, file mtime). Never message content.
|
|
13
|
+
* The Tier-2 activity extractor (parseCodexActivity) extends this with
|
|
14
|
+
* tool NAMES, file PATHS, and command argv[0] — but, crucially, NEVER the
|
|
15
|
+
* `arguments` JSON itself, reasoning text, or message bodies. See the
|
|
16
|
+
* planted-secret privacy test in observer.test.ts.
|
|
13
17
|
*
|
|
14
|
-
* NOTE: Codex's exact rollout schema varies by version; the state parse
|
|
15
|
-
* deliberately tolerant (unknown shapes →
|
|
16
|
-
* DISABLED by default (opt in via
|
|
17
|
-
* when $CODEX_HOME/sessions is absent.
|
|
18
|
+
* NOTE: Codex's exact rollout schema varies by version; both the state parse
|
|
19
|
+
* and the activity parse are deliberately tolerant (unknown shapes → skipped /
|
|
20
|
+
* "unknown") and the integration is DISABLED by default (opt in via
|
|
21
|
+
* ~/.lisa/agents.json). It graceful-no-ops when $CODEX_HOME/sessions is absent.
|
|
18
22
|
*/
|
|
19
23
|
import fs from "node:fs";
|
|
20
24
|
import fsp from "node:fs/promises";
|
|
@@ -22,6 +26,7 @@ import path from "node:path";
|
|
|
22
26
|
import os from "node:os";
|
|
23
27
|
import { EventEmitter } from "node:events";
|
|
24
28
|
import { registerIntegration } from "../registry.js";
|
|
29
|
+
import { cwdGitBranch } from "../git/branch.js";
|
|
25
30
|
const ACTIVE_WINDOW_MS = 30 * 60_000;
|
|
26
31
|
const MAX_LISTED = 10;
|
|
27
32
|
const DEBOUNCE_MS = 300;
|
|
@@ -33,12 +38,21 @@ export class CodexObserver extends EventEmitter {
|
|
|
33
38
|
watcher = null;
|
|
34
39
|
pending = new Map();
|
|
35
40
|
emitFn = null;
|
|
41
|
+
computeActivity;
|
|
42
|
+
/** O-D1: derive gitBranch from a session's cwd (Codex rollouts don't store one). */
|
|
43
|
+
resolveBranch;
|
|
36
44
|
constructor(cfg) {
|
|
37
45
|
super();
|
|
38
46
|
const home = cfg.home
|
|
39
47
|
? cfg.home.replace(/^~/, os.homedir())
|
|
40
48
|
: process.env.CODEX_HOME ?? path.join(os.homedir(), ".codex");
|
|
41
49
|
this.sessionsRoot = path.join(home, "sessions");
|
|
50
|
+
// Tier 2: compute structural activity when visibility is "activity" or
|
|
51
|
+
// "intent". At "metadata"/"off" we stay metadata-only (cheaper, and the
|
|
52
|
+
// privacy-minimal default) — mirrors the claude-code observer.
|
|
53
|
+
this.computeActivity =
|
|
54
|
+
cfg.visibility === "activity" || cfg.visibility === "intent";
|
|
55
|
+
this.resolveBranch = cfg.gitBranch ?? cwdGitBranch;
|
|
42
56
|
}
|
|
43
57
|
async start(emit) {
|
|
44
58
|
this.emitFn = emit;
|
|
@@ -102,6 +116,16 @@ export class CodexObserver extends EventEmitter {
|
|
|
102
116
|
if (!st.isFile())
|
|
103
117
|
return;
|
|
104
118
|
const { state, reason, cwd } = await parseCodexState(full);
|
|
119
|
+
let activity = this.computeActivity
|
|
120
|
+
? await parseCodexActivity(full)
|
|
121
|
+
: undefined;
|
|
122
|
+
// O-D1: enrich with the branch derived from cwd (Codex doesn't record one).
|
|
123
|
+
if (this.computeActivity && cwd) {
|
|
124
|
+
const gitBranch = await this.resolveBranch(cwd);
|
|
125
|
+
if (gitBranch) {
|
|
126
|
+
activity = { ...(activity ?? { turnCount: 0, lastTools: [], filesTouched: [] }), gitBranch };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
105
129
|
this.sessions.set(full, {
|
|
106
130
|
sessionId: path.basename(full, ".jsonl").replace(/^rollout-/, ""),
|
|
107
131
|
project: cwd ? path.basename(cwd) : path.basename(path.dirname(full)),
|
|
@@ -109,6 +133,7 @@ export class CodexObserver extends EventEmitter {
|
|
|
109
133
|
lastMtime: st.mtimeMs,
|
|
110
134
|
state,
|
|
111
135
|
stateReason: reason,
|
|
136
|
+
activity,
|
|
112
137
|
});
|
|
113
138
|
}
|
|
114
139
|
catch {
|
|
@@ -125,6 +150,7 @@ function toAgentSession(i) {
|
|
|
125
150
|
state: i.state,
|
|
126
151
|
stateReason: i.stateReason,
|
|
127
152
|
lastMtime: i.lastMtime,
|
|
153
|
+
activity: i.activity,
|
|
128
154
|
};
|
|
129
155
|
}
|
|
130
156
|
/** Recursively collect rollout-*.jsonl under root. Empty array if absent. */
|
|
@@ -209,5 +235,203 @@ export async function parseCodexState(filePath) {
|
|
|
209
235
|
}
|
|
210
236
|
return { state: "unknown", reason: "no-decision", cwd };
|
|
211
237
|
}
|
|
238
|
+
// ── O2 (Tier 2): structural activity extraction ─────────────────────────────
|
|
239
|
+
//
|
|
240
|
+
// PRIVACY BOUNDARY (tested in observer.test.ts): this reads ONLY structural
|
|
241
|
+
// metadata from a Codex rollout:
|
|
242
|
+
// - tool NAMES (function_call `.name`)
|
|
243
|
+
// - file PATHS (a known path key INSIDE the parsed `arguments` JSON:
|
|
244
|
+
// `path` / `file_path` / `filename`)
|
|
245
|
+
// - command argv[0] (first token of a shell function_call's command)
|
|
246
|
+
// - error flags (`is_error` / `error`)
|
|
247
|
+
// - token counts (`usage` / `token_usage` on any entry)
|
|
248
|
+
// It NEVER extracts or returns: the raw `arguments` string, apply_patch bodies,
|
|
249
|
+
// reasoning text, message content, assistant replies, user prompts, or any
|
|
250
|
+
// command beyond argv[0]. `arguments` is parsed solely to pull the few path /
|
|
251
|
+
// command keys above; on parse failure or absence we take nothing. The privacy
|
|
252
|
+
// test plants a unique secret in arguments, reasoning, and message content and
|
|
253
|
+
// asserts it never appears in the output.
|
|
254
|
+
// O-D2: 128KB tail (was 64KB) so long sessions don't under-count tools/files.
|
|
255
|
+
const ACTIVITY_TAIL_BYTES = 128 * 1024;
|
|
256
|
+
const MAX_TOOLS = 6;
|
|
257
|
+
const MAX_FILES = 10;
|
|
258
|
+
/** Known path-bearing keys inside a function_call's parsed arguments. */
|
|
259
|
+
const PATH_KEYS = ["file_path", "path", "filename"];
|
|
260
|
+
/** function_call name substrings that denote a shell/exec call. */
|
|
261
|
+
const SHELL_NAME_RE = /shell|bash|exec/i;
|
|
262
|
+
export async function parseCodexActivity(filePath) {
|
|
263
|
+
let size;
|
|
264
|
+
try {
|
|
265
|
+
const st = await fsp.stat(filePath);
|
|
266
|
+
if (!st.isFile() || st.size === 0)
|
|
267
|
+
return undefined;
|
|
268
|
+
size = st.size;
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
return undefined;
|
|
272
|
+
}
|
|
273
|
+
let tail;
|
|
274
|
+
try {
|
|
275
|
+
const fd = await fsp.open(filePath, "r");
|
|
276
|
+
try {
|
|
277
|
+
const length = Math.min(ACTIVITY_TAIL_BYTES, size);
|
|
278
|
+
const buf = Buffer.alloc(length);
|
|
279
|
+
await fd.read(buf, 0, length, size - length);
|
|
280
|
+
tail = buf.toString("utf8");
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
await fd.close();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return undefined;
|
|
288
|
+
}
|
|
289
|
+
const lines = tail.split("\n").filter(Boolean);
|
|
290
|
+
if (size > ACTIVITY_TAIL_BYTES && lines.length > 0)
|
|
291
|
+
lines.shift();
|
|
292
|
+
let turnCount = 0;
|
|
293
|
+
const toolsInOrder = [];
|
|
294
|
+
const files = [];
|
|
295
|
+
let lastCommandName;
|
|
296
|
+
let lastError;
|
|
297
|
+
let inTok = 0;
|
|
298
|
+
let outTok = 0;
|
|
299
|
+
for (const line of lines) {
|
|
300
|
+
let e;
|
|
301
|
+
try {
|
|
302
|
+
e = JSON.parse(line);
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
if (!e || typeof e !== "object")
|
|
308
|
+
continue;
|
|
309
|
+
const obj = e;
|
|
310
|
+
if (obj.is_error === true || obj.error === true)
|
|
311
|
+
lastError = "tool error";
|
|
312
|
+
// Token usage may live top-level or under .message — read both shapes,
|
|
313
|
+
// tolerate either snake_case spelling.
|
|
314
|
+
accumulateUsage(obj.usage, obj.token_usage);
|
|
315
|
+
const msg = obj.message;
|
|
316
|
+
if (msg && typeof msg === "object") {
|
|
317
|
+
const m = msg;
|
|
318
|
+
accumulateUsage(m.usage, m.token_usage);
|
|
319
|
+
}
|
|
320
|
+
// Rough turn counter: assistant/user/response entries (by type OR role).
|
|
321
|
+
const type = readString(obj.type);
|
|
322
|
+
const role = readString(obj.role) ??
|
|
323
|
+
(msg && typeof msg === "object"
|
|
324
|
+
? readString(msg.role)
|
|
325
|
+
: undefined);
|
|
326
|
+
if (type === "assistant" ||
|
|
327
|
+
type === "user" ||
|
|
328
|
+
type === "response" ||
|
|
329
|
+
role === "assistant" ||
|
|
330
|
+
role === "user") {
|
|
331
|
+
turnCount++;
|
|
332
|
+
}
|
|
333
|
+
// Tool activity: Codex records tool calls as `type: "function_call"`.
|
|
334
|
+
if (type !== "function_call")
|
|
335
|
+
continue;
|
|
336
|
+
const name = readString(obj.name);
|
|
337
|
+
if (!name)
|
|
338
|
+
continue;
|
|
339
|
+
toolsInOrder.push(name);
|
|
340
|
+
// `arguments` is a JSON *string* that may contain sensitive content
|
|
341
|
+
// (e.g. an apply_patch body). We parse it ONLY to look up the few known
|
|
342
|
+
// path / command keys below; we never push the raw string anywhere.
|
|
343
|
+
const args = parseArguments(obj.arguments);
|
|
344
|
+
if (!args)
|
|
345
|
+
continue;
|
|
346
|
+
for (const k of PATH_KEYS) {
|
|
347
|
+
const p = args[k];
|
|
348
|
+
if (typeof p === "string" && p) {
|
|
349
|
+
files.push(p);
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
if (SHELL_NAME_RE.test(name)) {
|
|
354
|
+
const argv0 = shellArgv0(args.command);
|
|
355
|
+
if (argv0)
|
|
356
|
+
lastCommandName = argv0;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
if (turnCount === 0 && toolsInOrder.length === 0)
|
|
360
|
+
return undefined;
|
|
361
|
+
return {
|
|
362
|
+
turnCount,
|
|
363
|
+
lastTools: toolsInOrder.slice(-MAX_TOOLS),
|
|
364
|
+
filesTouched: dedupeKeepRecent(files, MAX_FILES),
|
|
365
|
+
lastCommandName,
|
|
366
|
+
lastError,
|
|
367
|
+
// Codex rollouts don't carry a git branch or a permission gate in this
|
|
368
|
+
// shape; leave them undefined rather than guessing.
|
|
369
|
+
gitBranch: undefined,
|
|
370
|
+
pendingPermission: undefined,
|
|
371
|
+
tokens: inTok || outTok ? { input: inTok, output: outTok } : undefined,
|
|
372
|
+
};
|
|
373
|
+
function accumulateUsage(...candidates) {
|
|
374
|
+
for (const c of candidates) {
|
|
375
|
+
if (!c || typeof c !== "object")
|
|
376
|
+
continue;
|
|
377
|
+
const u = c;
|
|
378
|
+
inTok += toNum(u.input_tokens);
|
|
379
|
+
outTok += toNum(u.output_tokens);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Parse a function_call's `arguments`. Codex stores it as a JSON string; some
|
|
385
|
+
* versions/entries may already hand us an object. Returns a plain record on
|
|
386
|
+
* success, or undefined (we then extract nothing — never the raw value).
|
|
387
|
+
*/
|
|
388
|
+
function parseArguments(raw) {
|
|
389
|
+
let parsed = raw;
|
|
390
|
+
if (typeof raw === "string") {
|
|
391
|
+
try {
|
|
392
|
+
parsed = JSON.parse(raw);
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
return undefined;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
return parsed && typeof parsed === "object"
|
|
399
|
+
? parsed
|
|
400
|
+
: undefined;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* argv[0] of a shell command. Codex may give `command` as an array
|
|
404
|
+
* (["bash","-lc","…"]) or a string. We return ONLY the first token — never
|
|
405
|
+
* the rest of the command line.
|
|
406
|
+
*/
|
|
407
|
+
function shellArgv0(command) {
|
|
408
|
+
if (Array.isArray(command)) {
|
|
409
|
+
const first = command.find((c) => typeof c === "string" && c.trim());
|
|
410
|
+
return typeof first === "string" ? first.trim().split(/\s+/)[0] : undefined;
|
|
411
|
+
}
|
|
412
|
+
if (typeof command === "string" && command.trim()) {
|
|
413
|
+
return command.trim().split(/\s+/)[0];
|
|
414
|
+
}
|
|
415
|
+
return undefined;
|
|
416
|
+
}
|
|
417
|
+
function readString(v) {
|
|
418
|
+
return typeof v === "string" ? v : undefined;
|
|
419
|
+
}
|
|
420
|
+
function toNum(v) {
|
|
421
|
+
return typeof v === "number" && Number.isFinite(v) ? v : 0;
|
|
422
|
+
}
|
|
423
|
+
/** Dedupe paths keeping each one's most-recent position; cap to `max`. */
|
|
424
|
+
function dedupeKeepRecent(items, max) {
|
|
425
|
+
const seen = new Set();
|
|
426
|
+
const out = [];
|
|
427
|
+
for (let i = items.length - 1; i >= 0; i--) {
|
|
428
|
+
const it = items[i];
|
|
429
|
+
if (!seen.has(it)) {
|
|
430
|
+
seen.add(it);
|
|
431
|
+
out.unshift(it);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
return out.slice(-max);
|
|
435
|
+
}
|
|
212
436
|
registerIntegration("codex", (cfg) => new CodexObserver(cfg));
|
|
213
437
|
//# sourceMappingURL=observer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../../src/integrations/codex/observer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../../src/integrations/codex/observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,11 @@ export interface DispatchEntry {
|
|
|
24
24
|
task: string;
|
|
25
25
|
/** Epoch ms when dispatched. */
|
|
26
26
|
startedAt: number;
|
|
27
|
+
/** Captured stdout+stderr file for this agent (D1 feedback), if any. */
|
|
28
|
+
logPath?: string;
|
|
27
29
|
}
|
|
30
|
+
/** Directory for per-dispatch captured-output logs. */
|
|
31
|
+
export declare function dispatchLogDir(): string;
|
|
28
32
|
/** Read the ledger; tolerant of a missing or corrupt file (returns []). */
|
|
29
33
|
export declare function loadLedger(): DispatchEntry[];
|
|
30
34
|
/**
|
|
@@ -39,11 +43,36 @@ export declare function recordDispatch(d: {
|
|
|
39
43
|
pid: number;
|
|
40
44
|
cwd: string;
|
|
41
45
|
task: string;
|
|
46
|
+
/** Captured-output log file for this agent (D1 feedback). */
|
|
47
|
+
logPath?: string;
|
|
42
48
|
/** Override the clock (tests). */
|
|
43
49
|
now?: number;
|
|
44
50
|
}): DispatchEntry;
|
|
45
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Live dispatched agents. Rewrites the ledger to retain live agents AND
|
|
53
|
+
* recently-finished ones (so their captured output stays readable via
|
|
54
|
+
* dispatch_status); only truly-aged-out entries (and their logs) are dropped.
|
|
55
|
+
*/
|
|
46
56
|
export declare function listLiveDispatches(): DispatchEntry[];
|
|
57
|
+
/** All retained dispatches (live + recently-finished). For status / result readback. */
|
|
58
|
+
export declare function listRecentDispatches(): DispatchEntry[];
|
|
59
|
+
/** Serializable view of a ledger entry for the HTTP API (GET /api/dispatch/list).
|
|
60
|
+
* Structural only — task is already a 200-char snippet; logPath is reduced to a
|
|
61
|
+
* boolean so the raw capture path never leaks to a remote client. Pure. */
|
|
62
|
+
export interface DispatchView {
|
|
63
|
+
id: string;
|
|
64
|
+
agent: string;
|
|
65
|
+
pid: number;
|
|
66
|
+
cwd: string;
|
|
67
|
+
task: string;
|
|
68
|
+
/** ISO-8601, matching /api/agents/sessions' lastMtime serialization. */
|
|
69
|
+
startedAt: string;
|
|
70
|
+
alive: boolean;
|
|
71
|
+
hasLog: boolean;
|
|
72
|
+
}
|
|
73
|
+
export declare function toDispatchView(e: DispatchEntry, alive: boolean): DispatchView;
|
|
74
|
+
/** Tail (up to maxBytes) of a dispatch's captured output. "" if none/unreadable. */
|
|
75
|
+
export declare function readDispatchOutput(entry: DispatchEntry, maxBytes?: number): string;
|
|
47
76
|
/** Find a *live* dispatch by id or by pid (as a string). Null if absent/dead. */
|
|
48
77
|
export declare function findDispatch(target: string): DispatchEntry | null;
|
|
49
78
|
/** Drop an entry from the ledger by id. */
|
|
@@ -1 +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;
|
|
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;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,uDAAuD;AACvD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,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,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,aAAa,CAoBhB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAiBpD;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,IAAI,aAAa,EAAE,CAEtD;AAED;;4EAE4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,CAW7E;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,SAAO,GAAG,MAAM,CAiBhF;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"}
|
|
@@ -17,10 +17,18 @@
|
|
|
17
17
|
import fs from "node:fs";
|
|
18
18
|
import os from "node:os";
|
|
19
19
|
import path from "node:path";
|
|
20
|
+
/** How long a finished dispatch (and its output log) is retained for readback. */
|
|
21
|
+
const RETAIN_MS = 24 * 60 * 60_000;
|
|
22
|
+
function lisaHome() {
|
|
23
|
+
return process.env.LISA_HOME ?? path.join(os.homedir(), ".lisa");
|
|
24
|
+
}
|
|
20
25
|
/** Resolved lazily (reads env at call time) so tests can point LISA_HOME at a tmp dir. */
|
|
21
26
|
function ledgerPath() {
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
return path.join(lisaHome(), "dispatches.json");
|
|
28
|
+
}
|
|
29
|
+
/** Directory for per-dispatch captured-output logs. */
|
|
30
|
+
export function dispatchLogDir() {
|
|
31
|
+
return path.join(lisaHome(), "dispatches");
|
|
24
32
|
}
|
|
25
33
|
/** Read the ledger; tolerant of a missing or corrupt file (returns []). */
|
|
26
34
|
export function loadLedger() {
|
|
@@ -74,20 +82,78 @@ export function recordDispatch(d) {
|
|
|
74
82
|
cwd: d.cwd,
|
|
75
83
|
task: d.task.slice(0, 200),
|
|
76
84
|
startedAt,
|
|
85
|
+
...(d.logPath ? { logPath: d.logPath } : {}),
|
|
77
86
|
};
|
|
78
|
-
// Drop any stale entry
|
|
79
|
-
|
|
87
|
+
// Drop any stale same-pid entry, and age out finished dispatches older than
|
|
88
|
+
// the retention window so the file (and its logs) don't grow unbounded.
|
|
89
|
+
const cutoff = startedAt - RETAIN_MS;
|
|
90
|
+
const entries = loadLedger().filter((e) => e.pid !== d.pid && (isAlive(e.pid) || e.startedAt >= cutoff));
|
|
80
91
|
entries.push(entry);
|
|
81
92
|
saveLedger(entries);
|
|
82
93
|
return entry;
|
|
83
94
|
}
|
|
84
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Live dispatched agents. Rewrites the ledger to retain live agents AND
|
|
97
|
+
* recently-finished ones (so their captured output stays readable via
|
|
98
|
+
* dispatch_status); only truly-aged-out entries (and their logs) are dropped.
|
|
99
|
+
*/
|
|
85
100
|
export function listLiveDispatches() {
|
|
86
101
|
const all = loadLedger();
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
102
|
+
const now = Date.now();
|
|
103
|
+
const keep = all.filter((e) => isAlive(e.pid) || now - e.startedAt < RETAIN_MS);
|
|
104
|
+
if (keep.length !== all.length) {
|
|
105
|
+
for (const e of all) {
|
|
106
|
+
if (!keep.includes(e) && e.logPath) {
|
|
107
|
+
try {
|
|
108
|
+
fs.unlinkSync(e.logPath);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// log already gone — ignore
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
saveLedger(keep);
|
|
116
|
+
}
|
|
117
|
+
return all.filter((e) => isAlive(e.pid));
|
|
118
|
+
}
|
|
119
|
+
/** All retained dispatches (live + recently-finished). For status / result readback. */
|
|
120
|
+
export function listRecentDispatches() {
|
|
121
|
+
return loadLedger();
|
|
122
|
+
}
|
|
123
|
+
export function toDispatchView(e, alive) {
|
|
124
|
+
return {
|
|
125
|
+
id: e.id,
|
|
126
|
+
agent: e.agent,
|
|
127
|
+
pid: e.pid,
|
|
128
|
+
cwd: e.cwd,
|
|
129
|
+
task: e.task,
|
|
130
|
+
startedAt: new Date(e.startedAt).toISOString(),
|
|
131
|
+
alive,
|
|
132
|
+
hasLog: !!e.logPath,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Tail (up to maxBytes) of a dispatch's captured output. "" if none/unreadable. */
|
|
136
|
+
export function readDispatchOutput(entry, maxBytes = 2000) {
|
|
137
|
+
if (!entry.logPath)
|
|
138
|
+
return "";
|
|
139
|
+
try {
|
|
140
|
+
const st = fs.statSync(entry.logPath);
|
|
141
|
+
if (st.size === 0)
|
|
142
|
+
return "";
|
|
143
|
+
const fd = fs.openSync(entry.logPath, "r");
|
|
144
|
+
try {
|
|
145
|
+
const len = Math.min(maxBytes, st.size);
|
|
146
|
+
const buf = Buffer.alloc(len);
|
|
147
|
+
fs.readSync(fd, buf, 0, len, st.size - len);
|
|
148
|
+
return (st.size > len ? "…" : "") + buf.toString("utf8");
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
fs.closeSync(fd);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
return "";
|
|
156
|
+
}
|
|
91
157
|
}
|
|
92
158
|
/** Find a *live* dispatch by id or by pid (as a string). Null if absent/dead. */
|
|
93
159
|
export function findDispatch(target) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch-ledger.js","sourceRoot":"","sources":["../../src/integrations/dispatch-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"dispatch-ledger.js","sourceRoot":"","sources":["../../src/integrations/dispatch-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** A resolver injectable into observers so their unit tests need no real git. */
|
|
2
|
+
export type GitBranchResolver = (cwd: string | undefined, now?: number) => Promise<string | undefined>;
|
|
3
|
+
/**
|
|
4
|
+
* Current branch for `cwd`, or undefined (detached / not a repo / no git /
|
|
5
|
+
* timeout). Cached for a short TTL per cwd. Pass `now` to control the clock in
|
|
6
|
+
* tests.
|
|
7
|
+
*/
|
|
8
|
+
export declare const cwdGitBranch: GitBranchResolver;
|
|
9
|
+
/** Test hook — drop the cache between cases. */
|
|
10
|
+
export declare function _clearCwdBranchCache(): void;
|
|
11
|
+
//# sourceMappingURL=branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../src/integrations/git/branch.ts"],"names":[],"mappings":"AAuBA,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG,CAC9B,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,GAAG,CAAC,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEjC;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,iBAe1B,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive the current git branch for a working directory (Observer deepening
|
|
3
|
+
* O-D1). The codex / opencode session formats don't record a branch the way
|
|
4
|
+
* Claude Code's JSONL does, but they DO record the session's cwd — so we derive
|
|
5
|
+
* the branch from disk, cheaply and safely.
|
|
6
|
+
*
|
|
7
|
+
* `git symbolic-ref --short HEAD` returns the branch name even before the first
|
|
8
|
+
* commit, and exits non-zero on a detached HEAD / non-repo / missing git — all
|
|
9
|
+
* of which map to `undefined` (honest: "no branch"). execFile (no shell) avoids
|
|
10
|
+
* injection; a short TTL cache keeps us from spawning git on every record.
|
|
11
|
+
*
|
|
12
|
+
* PRIVACY: a branch NAME only — never a diff, commit message, or file content.
|
|
13
|
+
*/
|
|
14
|
+
import { execFile } from "node:child_process";
|
|
15
|
+
import { promisify } from "node:util";
|
|
16
|
+
const pexec = promisify(execFile);
|
|
17
|
+
/** cwd → last resolved branch, with the time it was resolved. */
|
|
18
|
+
const CACHE = new Map();
|
|
19
|
+
const TTL_MS = 30_000;
|
|
20
|
+
const GIT_TIMEOUT_MS = 5_000;
|
|
21
|
+
/**
|
|
22
|
+
* Current branch for `cwd`, or undefined (detached / not a repo / no git /
|
|
23
|
+
* timeout). Cached for a short TTL per cwd. Pass `now` to control the clock in
|
|
24
|
+
* tests.
|
|
25
|
+
*/
|
|
26
|
+
export const cwdGitBranch = async (cwd, now = Date.now()) => {
|
|
27
|
+
if (!cwd)
|
|
28
|
+
return undefined;
|
|
29
|
+
const hit = CACHE.get(cwd);
|
|
30
|
+
if (hit && now - hit.at < TTL_MS)
|
|
31
|
+
return hit.branch;
|
|
32
|
+
let branch;
|
|
33
|
+
try {
|
|
34
|
+
const { stdout } = await pexec("git", ["-C", cwd, "symbolic-ref", "--short", "HEAD"], {
|
|
35
|
+
timeout: GIT_TIMEOUT_MS,
|
|
36
|
+
});
|
|
37
|
+
branch = stdout.trim() || undefined;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
branch = undefined; // not a repo / detached / git missing / timeout
|
|
41
|
+
}
|
|
42
|
+
CACHE.set(cwd, { branch, at: now });
|
|
43
|
+
return branch;
|
|
44
|
+
};
|
|
45
|
+
/** Test hook — drop the cache between cases. */
|
|
46
|
+
export function _clearCwdBranchCache() {
|
|
47
|
+
CACHE.clear();
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../src/integrations/git/branch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAElC,iEAAiE;AACjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsD,CAAC;AAC5E,MAAM,MAAM,GAAG,MAAM,CAAC;AACtB,MAAM,cAAc,GAAG,KAAK,CAAC;AAQ7B;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAsB,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE;IAC7E,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,MAAM;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IACpD,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;YACpF,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,SAAS,CAAC,CAAC,gDAAgD;IACtE,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,oBAAoB;IAClC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC"}
|