@oratis/lisa 0.9.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/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/registry.d.ts +29 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +67 -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/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 +410 -63
- 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 +15 -2136
- 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 +878 -64
- package/dist/web/server.js.map +1 -1
- package/package.json +5 -2
|
@@ -16,14 +16,24 @@
|
|
|
16
16
|
* - latest message role=assistant, not completed → working (mid-turn)
|
|
17
17
|
* - latest message role=user → working (its turn)
|
|
18
18
|
*
|
|
19
|
+
* TIER 2 (visibility ≥ "activity"): in addition to state we extract STRUCTURAL
|
|
20
|
+
* activity from the session's most recent messages — tool NAMES, file PATHS,
|
|
21
|
+
* the last shell command's argv[0], an error label, turn count. The extraction
|
|
22
|
+
* is a pure function (`extractActivity`) over already-parsed message blobs, so
|
|
23
|
+
* it is unit-testable without sqlite and keeps the same 60-second-audit
|
|
24
|
+
* privacy property as the Claude Code parser.
|
|
25
|
+
*
|
|
19
26
|
* PRIVACY: only structural fields — session title, directory, token counts,
|
|
20
|
-
* message role/role-timing/error flag
|
|
27
|
+
* message role/role-timing/error flag, tool NAMES, file PATHS, command argv[0].
|
|
28
|
+
* NEVER message text, prompt/reply prose, tool inputs beyond known path keys,
|
|
29
|
+
* or full command lines beyond argv[0].
|
|
21
30
|
* DISABLED by default; opt in via ~/.lisa/agents.json. Graceful no-op if
|
|
22
31
|
* `sqlite3` or the DB is absent (every read failure → empty, never throws).
|
|
23
32
|
*/
|
|
24
33
|
import { EventEmitter } from "node:events";
|
|
25
|
-
import
|
|
26
|
-
|
|
34
|
+
import { type GitBranchResolver } from "../git/branch.js";
|
|
35
|
+
import type { AgentIntegrationConfig, AgentObserver, AgentSession, SessionActivity } from "../types.js";
|
|
36
|
+
/** A row of the adapter's query — session columns + recent message data. */
|
|
27
37
|
export interface OpencodeRow {
|
|
28
38
|
id: string;
|
|
29
39
|
directory?: string | null;
|
|
@@ -36,9 +46,40 @@ export interface OpencodeRow {
|
|
|
36
46
|
tokens_output?: number | null;
|
|
37
47
|
/** JSON string of the latest message's `data` column, or null. */
|
|
38
48
|
last_msg?: string | null;
|
|
49
|
+
/**
|
|
50
|
+
* JSON-array string of the session's most-recent message `data` blobs
|
|
51
|
+
* (oldest → newest), or null. Only populated/used at visibility ≥ activity.
|
|
52
|
+
*/
|
|
53
|
+
recent_msgs?: string | null;
|
|
39
54
|
}
|
|
40
|
-
/**
|
|
41
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Map one query row to the normalized session. Pure — the unit under test.
|
|
57
|
+
*
|
|
58
|
+
* When `computeActivity` is true (visibility ≥ "activity") we additionally
|
|
59
|
+
* scan the session's recent messages for structural activity. Otherwise we
|
|
60
|
+
* stay metadata-only, surfacing just token counts (the prior behaviour).
|
|
61
|
+
*/
|
|
62
|
+
export declare function mapOpencodeSession(row: OpencodeRow, computeActivity?: boolean): AgentSession;
|
|
63
|
+
/** Tolerantly parse the `recent_msgs` JSON-array string into message objects. */
|
|
64
|
+
export declare function parseRecentMessages(raw: string | null | undefined): Record<string, unknown>[];
|
|
65
|
+
/**
|
|
66
|
+
* Pure Tier-2 extractor — STRUCTURAL metadata only.
|
|
67
|
+
*
|
|
68
|
+
* Input: an array of OpenCode message `data` objects, oldest → newest. Each
|
|
69
|
+
* message may carry a `parts` array; a tool part has `type: "tool"`, a tool
|
|
70
|
+
* name (`tool`), and a `state` object whose `input` may contain a file path
|
|
71
|
+
* and/or a command. We read ONLY:
|
|
72
|
+
* - tool NAMES (part `.tool` / `.name`)
|
|
73
|
+
* - file PATHS (part `state.input[path|filePath|file|filename]`)
|
|
74
|
+
* - command argv[0] (first token of a bash/shell tool's `state.input.command`)
|
|
75
|
+
* - error label (message `.error`)
|
|
76
|
+
* - turn count (one per message)
|
|
77
|
+
* We NEVER read text parts, prompt/reply prose, the rest of a tool's input,
|
|
78
|
+
* or a command beyond its argv[0]. (Privacy-tested in observer.test.ts.)
|
|
79
|
+
*
|
|
80
|
+
* Returns undefined when there is nothing structural to report.
|
|
81
|
+
*/
|
|
82
|
+
export declare function extractActivity(messages: Record<string, unknown>[]): SessionActivity | undefined;
|
|
42
83
|
interface LastMsg {
|
|
43
84
|
role?: string;
|
|
44
85
|
completed?: boolean;
|
|
@@ -47,12 +88,15 @@ interface LastMsg {
|
|
|
47
88
|
}
|
|
48
89
|
/** Tolerant parse of an OpenCode message `data` JSON blob. */
|
|
49
90
|
export declare function parseLastMessage(raw: string | null | undefined): LastMsg;
|
|
91
|
+
export declare function buildQuery(withActivity: boolean): string;
|
|
50
92
|
export interface OpencodeObserverOptions extends AgentIntegrationConfig {
|
|
51
93
|
/** Override the row fetcher (tests). */
|
|
52
94
|
fetchRows?: () => Promise<OpencodeRow[]>;
|
|
53
95
|
pollMs?: number;
|
|
54
96
|
activeWindowMs?: number;
|
|
55
97
|
now?: () => number;
|
|
98
|
+
/** O-D1: derive gitBranch from a session's directory (injectable for tests). */
|
|
99
|
+
gitBranch?: GitBranchResolver;
|
|
56
100
|
}
|
|
57
101
|
export declare class OpencodeObserver extends EventEmitter implements AgentObserver {
|
|
58
102
|
readonly agent = "opencode";
|
|
@@ -63,6 +107,10 @@ export declare class OpencodeObserver extends EventEmitter implements AgentObser
|
|
|
63
107
|
private readonly pollMs;
|
|
64
108
|
private readonly windowMs;
|
|
65
109
|
private readonly now;
|
|
110
|
+
/** Tier-2 gate: only at visibility ≥ "activity" do we deep-extract. */
|
|
111
|
+
private readonly computeActivity;
|
|
112
|
+
/** O-D1: derive gitBranch from a session's directory (OpenCode stores none). */
|
|
113
|
+
private readonly resolveBranch;
|
|
66
114
|
constructor(cfg: OpencodeObserverOptions);
|
|
67
115
|
start(emit: (s: AgentSession) => void): Promise<void>;
|
|
68
116
|
list(): AgentSession[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/integrations/opencode/observer.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/integrations/opencode/observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,17 @@
|
|
|
16
16
|
* - latest message role=assistant, not completed → working (mid-turn)
|
|
17
17
|
* - latest message role=user → working (its turn)
|
|
18
18
|
*
|
|
19
|
+
* TIER 2 (visibility ≥ "activity"): in addition to state we extract STRUCTURAL
|
|
20
|
+
* activity from the session's most recent messages — tool NAMES, file PATHS,
|
|
21
|
+
* the last shell command's argv[0], an error label, turn count. The extraction
|
|
22
|
+
* is a pure function (`extractActivity`) over already-parsed message blobs, so
|
|
23
|
+
* it is unit-testable without sqlite and keeps the same 60-second-audit
|
|
24
|
+
* privacy property as the Claude Code parser.
|
|
25
|
+
*
|
|
19
26
|
* PRIVACY: only structural fields — session title, directory, token counts,
|
|
20
|
-
* message role/role-timing/error flag
|
|
27
|
+
* message role/role-timing/error flag, tool NAMES, file PATHS, command argv[0].
|
|
28
|
+
* NEVER message text, prompt/reply prose, tool inputs beyond known path keys,
|
|
29
|
+
* or full command lines beyond argv[0].
|
|
21
30
|
* DISABLED by default; opt in via ~/.lisa/agents.json. Graceful no-op if
|
|
22
31
|
* `sqlite3` or the DB is absent (every read failure → empty, never throws).
|
|
23
32
|
*/
|
|
@@ -27,10 +36,19 @@ import { EventEmitter } from "node:events";
|
|
|
27
36
|
import { execFile } from "node:child_process";
|
|
28
37
|
import { promisify } from "node:util";
|
|
29
38
|
import { registerIntegration } from "../registry.js";
|
|
39
|
+
import { cwdGitBranch } from "../git/branch.js";
|
|
30
40
|
const pexec = promisify(execFile);
|
|
31
41
|
const POLL_MS_DEFAULT = 60_000;
|
|
32
42
|
const ACTIVE_WINDOW_MS_DEFAULT = 6 * 60 * 60_000; // 6h
|
|
33
43
|
const MAX_LISTED = 12;
|
|
44
|
+
// Tier-2 extraction caps (mirror the Claude Code parser).
|
|
45
|
+
const MAX_TOOLS = 6;
|
|
46
|
+
const MAX_FILES = 10;
|
|
47
|
+
/** How many of a session's most-recent messages to scan for activity.
|
|
48
|
+
* O-D2: 40 (was 20) so long sessions don't under-count tools/files. */
|
|
49
|
+
const RECENT_MSGS = 40;
|
|
50
|
+
/** Known path-bearing keys in a tool part's input. We NEVER read other keys. */
|
|
51
|
+
const PATH_KEYS = ["path", "filePath", "file", "filename"];
|
|
34
52
|
function defaultDbPath(cfg) {
|
|
35
53
|
const home = cfg.home
|
|
36
54
|
? cfg.home.replace(/^~/, os.homedir())
|
|
@@ -39,8 +57,14 @@ function defaultDbPath(cfg) {
|
|
|
39
57
|
: path.join(os.homedir(), ".local", "share", "opencode");
|
|
40
58
|
return path.join(home, "opencode.db");
|
|
41
59
|
}
|
|
42
|
-
/**
|
|
43
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Map one query row to the normalized session. Pure — the unit under test.
|
|
62
|
+
*
|
|
63
|
+
* When `computeActivity` is true (visibility ≥ "activity") we additionally
|
|
64
|
+
* scan the session's recent messages for structural activity. Otherwise we
|
|
65
|
+
* stay metadata-only, surfacing just token counts (the prior behaviour).
|
|
66
|
+
*/
|
|
67
|
+
export function mapOpencodeSession(row, computeActivity = false) {
|
|
44
68
|
const directory = row.directory ?? undefined;
|
|
45
69
|
const lastMtime = typeof row.time_updated === "number" ? row.time_updated : 0;
|
|
46
70
|
let state;
|
|
@@ -85,16 +109,179 @@ export function mapOpencodeSession(row) {
|
|
|
85
109
|
};
|
|
86
110
|
const tin = row.tokens_input ?? 0;
|
|
87
111
|
const tout = row.tokens_output ?? 0;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
112
|
+
const tokens = tin || tout ? { input: tin, output: tout } : undefined;
|
|
113
|
+
if (computeActivity) {
|
|
114
|
+
// Deep (Tier-2) path: scan recent messages for structural metadata.
|
|
115
|
+
// The session-row token counts are authoritative, so they win over any
|
|
116
|
+
// per-message usage the extractor may also see.
|
|
117
|
+
const deep = extractActivity(parseRecentMessages(row.recent_msgs));
|
|
118
|
+
if (deep || tokens) {
|
|
119
|
+
session.activity = { ...(deep ?? EMPTY_ACTIVITY), ...(tokens ? { tokens } : {}) };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (tokens) {
|
|
123
|
+
// Metadata-only path: surface tokens for cost tracking, nothing else.
|
|
124
|
+
session.activity = { turnCount: 0, lastTools: [], filesTouched: [], tokens };
|
|
95
125
|
}
|
|
96
126
|
return session;
|
|
97
127
|
}
|
|
128
|
+
const EMPTY_ACTIVITY = { turnCount: 0, lastTools: [], filesTouched: [] };
|
|
129
|
+
/** Tolerantly parse the `recent_msgs` JSON-array string into message objects. */
|
|
130
|
+
export function parseRecentMessages(raw) {
|
|
131
|
+
if (!raw)
|
|
132
|
+
return [];
|
|
133
|
+
let arr;
|
|
134
|
+
try {
|
|
135
|
+
arr = JSON.parse(raw);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return [];
|
|
139
|
+
}
|
|
140
|
+
if (!Array.isArray(arr))
|
|
141
|
+
return [];
|
|
142
|
+
const out = [];
|
|
143
|
+
for (const el of arr) {
|
|
144
|
+
// Each element is itself the message `data` column — a JSON string in the
|
|
145
|
+
// DB. Accept both an already-parsed object and a nested JSON string.
|
|
146
|
+
if (el && typeof el === "object") {
|
|
147
|
+
out.push(el);
|
|
148
|
+
}
|
|
149
|
+
else if (typeof el === "string") {
|
|
150
|
+
try {
|
|
151
|
+
const o = JSON.parse(el);
|
|
152
|
+
if (o && typeof o === "object")
|
|
153
|
+
out.push(o);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
/* skip unparseable */
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Pure Tier-2 extractor — STRUCTURAL metadata only.
|
|
164
|
+
*
|
|
165
|
+
* Input: an array of OpenCode message `data` objects, oldest → newest. Each
|
|
166
|
+
* message may carry a `parts` array; a tool part has `type: "tool"`, a tool
|
|
167
|
+
* name (`tool`), and a `state` object whose `input` may contain a file path
|
|
168
|
+
* and/or a command. We read ONLY:
|
|
169
|
+
* - tool NAMES (part `.tool` / `.name`)
|
|
170
|
+
* - file PATHS (part `state.input[path|filePath|file|filename]`)
|
|
171
|
+
* - command argv[0] (first token of a bash/shell tool's `state.input.command`)
|
|
172
|
+
* - error label (message `.error`)
|
|
173
|
+
* - turn count (one per message)
|
|
174
|
+
* We NEVER read text parts, prompt/reply prose, the rest of a tool's input,
|
|
175
|
+
* or a command beyond its argv[0]. (Privacy-tested in observer.test.ts.)
|
|
176
|
+
*
|
|
177
|
+
* Returns undefined when there is nothing structural to report.
|
|
178
|
+
*/
|
|
179
|
+
export function extractActivity(messages) {
|
|
180
|
+
if (!Array.isArray(messages) || messages.length === 0)
|
|
181
|
+
return undefined;
|
|
182
|
+
let turnCount = 0;
|
|
183
|
+
const toolsInOrder = [];
|
|
184
|
+
const files = [];
|
|
185
|
+
let lastCommandName;
|
|
186
|
+
let lastError;
|
|
187
|
+
for (const msg of messages) {
|
|
188
|
+
if (!msg || typeof msg !== "object")
|
|
189
|
+
continue;
|
|
190
|
+
turnCount++;
|
|
191
|
+
const errLabel = errorReasonOf(msg);
|
|
192
|
+
if (errLabel)
|
|
193
|
+
lastError = errLabel;
|
|
194
|
+
const parts = msg.parts;
|
|
195
|
+
if (!Array.isArray(parts))
|
|
196
|
+
continue;
|
|
197
|
+
for (const part of parts) {
|
|
198
|
+
if (!part || typeof part !== "object")
|
|
199
|
+
continue;
|
|
200
|
+
const p = part;
|
|
201
|
+
// ONLY tool parts. text parts (prompts/replies) are skipped entirely —
|
|
202
|
+
// we never read their `.text`.
|
|
203
|
+
if (readString(p.type) !== "tool")
|
|
204
|
+
continue;
|
|
205
|
+
const name = readString(p.tool) ?? readString(p.name);
|
|
206
|
+
if (!name)
|
|
207
|
+
continue;
|
|
208
|
+
toolsInOrder.push(name);
|
|
209
|
+
// A tool part's input lives under `state.input` (newer opencode) or, as a
|
|
210
|
+
// fallback, directly on the part. We read ONLY known path keys + command.
|
|
211
|
+
const input = toolInput(p);
|
|
212
|
+
if (!input)
|
|
213
|
+
continue;
|
|
214
|
+
for (const k of PATH_KEYS) {
|
|
215
|
+
const v = input[k];
|
|
216
|
+
if (typeof v === "string" && v) {
|
|
217
|
+
files.push(v);
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (isShellTool(name)) {
|
|
222
|
+
const cmd = input.command;
|
|
223
|
+
if (typeof cmd === "string" && cmd.trim()) {
|
|
224
|
+
// argv[0] ONLY — never the full command line.
|
|
225
|
+
lastCommandName = cmd.trim().split(/\s+/)[0];
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (turnCount === 0 && toolsInOrder.length === 0)
|
|
231
|
+
return undefined;
|
|
232
|
+
return {
|
|
233
|
+
turnCount,
|
|
234
|
+
lastTools: toolsInOrder.slice(-MAX_TOOLS),
|
|
235
|
+
filesTouched: dedupeKeepRecent(files, MAX_FILES),
|
|
236
|
+
lastCommandName,
|
|
237
|
+
lastError,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
/** Pull a tool part's input object from `state.input` or the part itself. */
|
|
241
|
+
function toolInput(part) {
|
|
242
|
+
const state = part.state;
|
|
243
|
+
if (state && typeof state === "object") {
|
|
244
|
+
const inp = state.input;
|
|
245
|
+
if (inp && typeof inp === "object")
|
|
246
|
+
return inp;
|
|
247
|
+
}
|
|
248
|
+
const direct = part.input;
|
|
249
|
+
if (direct && typeof direct === "object")
|
|
250
|
+
return direct;
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
function isShellTool(name) {
|
|
254
|
+
const n = name.toLowerCase();
|
|
255
|
+
return n === "bash" || n === "shell";
|
|
256
|
+
}
|
|
257
|
+
/** Short error label for a message, mirroring parseLastMessage's logic. */
|
|
258
|
+
function errorReasonOf(msg) {
|
|
259
|
+
const err = msg.error;
|
|
260
|
+
if (!err || typeof err !== "object")
|
|
261
|
+
return undefined;
|
|
262
|
+
const m = err.data?.message;
|
|
263
|
+
if (typeof m === "string")
|
|
264
|
+
return m.slice(0, 80);
|
|
265
|
+
if (typeof err.name === "string")
|
|
266
|
+
return err.name;
|
|
267
|
+
return "error";
|
|
268
|
+
}
|
|
269
|
+
function readString(v) {
|
|
270
|
+
return typeof v === "string" ? v : undefined;
|
|
271
|
+
}
|
|
272
|
+
/** Dedupe paths keeping each one's most-recent position; cap to `max`. */
|
|
273
|
+
function dedupeKeepRecent(items, max) {
|
|
274
|
+
const seen = new Set();
|
|
275
|
+
const out = [];
|
|
276
|
+
for (let i = items.length - 1; i >= 0; i--) {
|
|
277
|
+
const it = items[i];
|
|
278
|
+
if (!seen.has(it)) {
|
|
279
|
+
seen.add(it);
|
|
280
|
+
out.unshift(it);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return out.slice(-max);
|
|
284
|
+
}
|
|
98
285
|
/** Tolerant parse of an OpenCode message `data` JSON blob. */
|
|
99
286
|
export function parseLastMessage(raw) {
|
|
100
287
|
if (!raw)
|
|
@@ -124,16 +311,35 @@ export function parseLastMessage(raw) {
|
|
|
124
311
|
}
|
|
125
312
|
return { role, completed, error, errorReason };
|
|
126
313
|
}
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
314
|
+
const COL_LAST_MSG = "(SELECT m.data FROM message m WHERE m.session_id = s.id ORDER BY m.time_created DESC LIMIT 1) AS last_msg";
|
|
315
|
+
// Tier-2 only: the most-recent N messages' `data`, aggregated into a JSON array
|
|
316
|
+
// (oldest → newest via the outer ORDER BY). json_group_array preserves the
|
|
317
|
+
// subquery order. Each element is the raw `data` JSON string; extractActivity's
|
|
318
|
+
// parseRecentMessages tolerates that.
|
|
319
|
+
const COL_RECENT_MSGS = "(SELECT json_group_array(d) FROM " +
|
|
320
|
+
`(SELECT m.data AS d FROM message m WHERE m.session_id = s.id ORDER BY m.time_created DESC LIMIT ${RECENT_MSGS}) ` +
|
|
321
|
+
"ORDER BY rowid DESC) AS recent_msgs";
|
|
322
|
+
export function buildQuery(withActivity) {
|
|
323
|
+
const cols = [
|
|
324
|
+
"s.id AS id",
|
|
325
|
+
"s.directory AS directory",
|
|
326
|
+
"s.title AS title",
|
|
327
|
+
"s.agent AS agent",
|
|
328
|
+
"s.time_updated AS time_updated",
|
|
329
|
+
"s.time_archived AS time_archived",
|
|
330
|
+
"s.time_compacting AS time_compacting",
|
|
331
|
+
"s.tokens_input AS tokens_input",
|
|
332
|
+
"s.tokens_output AS tokens_output",
|
|
333
|
+
COL_LAST_MSG,
|
|
334
|
+
];
|
|
335
|
+
if (withActivity)
|
|
336
|
+
cols.push(COL_RECENT_MSGS);
|
|
337
|
+
return `SELECT ${cols.join(", ")} FROM session s ORDER BY s.time_updated DESC LIMIT 40;`;
|
|
338
|
+
}
|
|
133
339
|
/** Read sessions from the OpenCode DB via the system sqlite3 CLI. [] on failure. */
|
|
134
|
-
async function sqliteFetch(dbPath) {
|
|
340
|
+
async function sqliteFetch(dbPath, withActivity) {
|
|
135
341
|
try {
|
|
136
|
-
const { stdout } = await pexec("sqlite3", ["-json", "-readonly", dbPath,
|
|
342
|
+
const { stdout } = await pexec("sqlite3", ["-json", "-readonly", dbPath, buildQuery(withActivity)], {
|
|
137
343
|
maxBuffer: 16 * 1024 * 1024,
|
|
138
344
|
timeout: 15_000,
|
|
139
345
|
});
|
|
@@ -155,10 +361,19 @@ export class OpencodeObserver extends EventEmitter {
|
|
|
155
361
|
pollMs;
|
|
156
362
|
windowMs;
|
|
157
363
|
now;
|
|
364
|
+
/** Tier-2 gate: only at visibility ≥ "activity" do we deep-extract. */
|
|
365
|
+
computeActivity;
|
|
366
|
+
/** O-D1: derive gitBranch from a session's directory (OpenCode stores none). */
|
|
367
|
+
resolveBranch;
|
|
158
368
|
constructor(cfg) {
|
|
159
369
|
super();
|
|
160
370
|
const db = defaultDbPath(cfg);
|
|
161
|
-
|
|
371
|
+
// Tier 2: compute structural activity when visibility is "activity" or
|
|
372
|
+
// "intent". At "metadata"/"off" we stay metadata-only (cheaper, and the
|
|
373
|
+
// privacy-minimal default) — same gate as the Claude Code observer.
|
|
374
|
+
this.computeActivity = cfg.visibility === "activity" || cfg.visibility === "intent";
|
|
375
|
+
this.resolveBranch = cfg.gitBranch ?? cwdGitBranch;
|
|
376
|
+
this.fetcher = cfg.fetchRows ?? (() => sqliteFetch(db, this.computeActivity));
|
|
162
377
|
this.pollMs = typeof cfg.pollMs === "number" && cfg.pollMs > 0 ? cfg.pollMs : POLL_MS_DEFAULT;
|
|
163
378
|
this.windowMs =
|
|
164
379
|
typeof cfg.activeWindowMs === "number" && cfg.activeWindowMs > 0
|
|
@@ -194,7 +409,14 @@ export class OpencodeObserver extends EventEmitter {
|
|
|
194
409
|
return;
|
|
195
410
|
}
|
|
196
411
|
for (const row of rows) {
|
|
197
|
-
const s = mapOpencodeSession(row);
|
|
412
|
+
const s = mapOpencodeSession(row, this.computeActivity);
|
|
413
|
+
// O-D1: enrich with the branch derived from the session's cwd.
|
|
414
|
+
if (this.computeActivity && s.cwd) {
|
|
415
|
+
const gitBranch = await this.resolveBranch(s.cwd);
|
|
416
|
+
if (gitBranch) {
|
|
417
|
+
s.activity = { ...(s.activity ?? { turnCount: 0, lastTools: [], filesTouched: [] }), gitBranch };
|
|
418
|
+
}
|
|
419
|
+
}
|
|
198
420
|
const prev = this.sessions.get(s.sessionId);
|
|
199
421
|
this.sessions.set(s.sessionId, s);
|
|
200
422
|
if (this.emitFn && (!prev || prev.state !== s.state || prev.lastMtime !== s.lastMtime)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../../src/integrations/opencode/observer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../../src/integrations/opencode/observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PTY-agent observer — surfaces LISA's PTY-backed CLI agents (Stage C spike)
|
|
3
|
+
* in the orchestrator hub, so a real `claude`/`codex` LISA spawned under a
|
|
4
|
+
* pseudo-terminal appears in the roster (island / GUI / menu bar) under its
|
|
5
|
+
* REAL kind ("claude-code"/"codex"), marked controllable so the UI offers
|
|
6
|
+
* send/cancel. Reads the in-process ptyRegistry; emits on its "update" event.
|
|
7
|
+
*
|
|
8
|
+
* The registry is empty unless the spike is enabled (LISA_PTY_AGENTS=1), so at
|
|
9
|
+
* rest this observer contributes nothing.
|
|
10
|
+
*
|
|
11
|
+
* PRIVACY: the roster session is structural only (kind/state/cli) — the captured
|
|
12
|
+
* terminal output is NEVER folded in here; it's served separately, on demand,
|
|
13
|
+
* via /api/agents/pty/<id>/output.
|
|
14
|
+
*/
|
|
15
|
+
import { EventEmitter } from "node:events";
|
|
16
|
+
import type { AgentObserver, AgentSession } from "../types.js";
|
|
17
|
+
export declare class PtyObserver extends EventEmitter implements AgentObserver {
|
|
18
|
+
readonly agent = "pty";
|
|
19
|
+
private emitFn;
|
|
20
|
+
private readonly onUpdate;
|
|
21
|
+
start(emit: (s: AgentSession) => void): Promise<void>;
|
|
22
|
+
list(): AgentSession[];
|
|
23
|
+
stop(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/integrations/pty/observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAA0B,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgBvF,qBAAa,WAAY,SAAQ,YAAa,YAAW,aAAa;IACpE,QAAQ,CAAC,KAAK,SAAS;IACvB,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+C;IAElE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D,IAAI,IAAI,YAAY,EAAE;IAIhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PTY-agent observer — surfaces LISA's PTY-backed CLI agents (Stage C spike)
|
|
3
|
+
* in the orchestrator hub, so a real `claude`/`codex` LISA spawned under a
|
|
4
|
+
* pseudo-terminal appears in the roster (island / GUI / menu bar) under its
|
|
5
|
+
* REAL kind ("claude-code"/"codex"), marked controllable so the UI offers
|
|
6
|
+
* send/cancel. Reads the in-process ptyRegistry; emits on its "update" event.
|
|
7
|
+
*
|
|
8
|
+
* The registry is empty unless the spike is enabled (LISA_PTY_AGENTS=1), so at
|
|
9
|
+
* rest this observer contributes nothing.
|
|
10
|
+
*
|
|
11
|
+
* PRIVACY: the roster session is structural only (kind/state/cli) — the captured
|
|
12
|
+
* terminal output is NEVER folded in here; it's served separately, on demand,
|
|
13
|
+
* via /api/agents/pty/<id>/output.
|
|
14
|
+
*/
|
|
15
|
+
import { EventEmitter } from "node:events";
|
|
16
|
+
import { registerIntegration } from "../registry.js";
|
|
17
|
+
import { ptyRegistry } from "../../agents/pty.js";
|
|
18
|
+
function toSession(v) {
|
|
19
|
+
return {
|
|
20
|
+
agent: v.agent, // real roster kind: "claude-code" | "codex"
|
|
21
|
+
sessionId: v.id,
|
|
22
|
+
project: v.project,
|
|
23
|
+
cwd: v.cwd,
|
|
24
|
+
state: v.state,
|
|
25
|
+
stateReason: v.stateReason,
|
|
26
|
+
lastMtime: v.lastMtime,
|
|
27
|
+
controllable: "pty",
|
|
28
|
+
...(v.adoptedSessionId ? { adoptedSessionId: v.adoptedSessionId } : {}),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export class PtyObserver extends EventEmitter {
|
|
32
|
+
agent = "pty";
|
|
33
|
+
emitFn = null;
|
|
34
|
+
onUpdate = (v) => this.emitFn?.(toSession(v));
|
|
35
|
+
async start(emit) {
|
|
36
|
+
this.emitFn = emit;
|
|
37
|
+
ptyRegistry.on("update", this.onUpdate);
|
|
38
|
+
}
|
|
39
|
+
list() {
|
|
40
|
+
return ptyRegistry.list().map(toSession);
|
|
41
|
+
}
|
|
42
|
+
async stop() {
|
|
43
|
+
ptyRegistry.off("update", this.onUpdate);
|
|
44
|
+
this.emitFn = null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
registerIntegration("pty", (_cfg) => new PtyObserver());
|
|
48
|
+
//# sourceMappingURL=observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer.js","sourceRoot":"","sources":["../../../src/integrations/pty/observer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAgB,MAAM,qBAAqB,CAAC;AAGhE,SAAS,SAAS,CAAC,CAAU;IAC3B,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,4CAA4C;QAC5D,SAAS,EAAE,CAAC,CAAC,EAAE;QACf,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,YAAY,EAAE,KAAK;QACnB,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,YAAY;IAClC,KAAK,GAAG,KAAK,CAAC;IACf,MAAM,GAAuC,IAAI,CAAC;IACzC,QAAQ,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,KAAK,CAAC,KAAK,CAAC,IAA+B;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI;QACF,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF;AAED,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAA4B,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/integrations/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAIpB,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CAEN;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAUxB;AAED,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAEpD;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAKD,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/integrations/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAIpB,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,IAAI,CAEN;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAUxB;AAED,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAEpD;AAED,yDAAyD;AACzD,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAKD,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAajE"}
|
|
@@ -36,5 +36,10 @@ export async function registerBuiltinIntegrations() {
|
|
|
36
36
|
await import("./github-pr/observer.js");
|
|
37
37
|
await import("./opencode/observer.js");
|
|
38
38
|
await import("./aider/observer.js");
|
|
39
|
+
await import("./git/observer.js");
|
|
40
|
+
await import("./shell/observer.js");
|
|
41
|
+
await import("./takoapi/observer.js");
|
|
42
|
+
await import("./managed/observer.js");
|
|
43
|
+
await import("./pty/observer.js");
|
|
39
44
|
}
|
|
40
45
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/integrations/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,OAA6B;IAE7B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,GAA2B;IAE3B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,aAC1B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAC7C,EAAE,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,yBAAyB;IACvC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,kBAAkB,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED,4DAA4D;AAC5D,wCAAwC;AACxC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC1C,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACpC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACxC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACvC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/integrations/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,OAA6B;IAE7B,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,GAA2B;IAE3B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,aAC1B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAC7C,EAAE,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,yBAAyB;IACvC,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,kBAAkB,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED,4DAA4D;AAC5D,wCAAwC;AACxC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC1C,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACpC,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IACxC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACvC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACpC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAClC,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACpC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACtC,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import type { AgentIntegrationConfig, AgentObserver, AgentSession, SessionActivity } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Extract argv[0] (the program name) from one history command line. Pure.
|
|
5
|
+
* Strips leading `VAR=val` assignments, takes the first token, basenames it,
|
|
6
|
+
* and returns null for anything that isn't a plain command name (flags, shell
|
|
7
|
+
* syntax). Deliberately surfaces ONLY the program name — nothing after it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function extractArgv0(command: string): string | null;
|
|
10
|
+
/**
|
|
11
|
+
* Parse a shell-history tail into a list of argv[0]s (program names only).
|
|
12
|
+
* Handles zsh EXTENDED_HISTORY (": <ts>:<elapsed>;<cmd>") and bash
|
|
13
|
+
* HISTTIMEFORMAT ("#<epoch>" lines) as well as plain command-per-line. Pure.
|
|
14
|
+
*/
|
|
15
|
+
export declare function parseHistoryArgv0s(raw: string): string[];
|
|
16
|
+
/** Tier-2 structural activity from recent argv[0]s. Program names + counts only. Pure. */
|
|
17
|
+
export declare function shellActivity(argv0s: string[]): SessionActivity;
|
|
18
|
+
export declare class ShellObserver extends EventEmitter implements AgentObserver {
|
|
19
|
+
readonly agent = "shell";
|
|
20
|
+
private files;
|
|
21
|
+
private sessions;
|
|
22
|
+
private watchers;
|
|
23
|
+
private pending;
|
|
24
|
+
private emitFn;
|
|
25
|
+
private readonly computeActivity;
|
|
26
|
+
constructor(cfg: AgentIntegrationConfig);
|
|
27
|
+
start(emit: (s: AgentSession) => void): Promise<void>;
|
|
28
|
+
list(): AgentSession[];
|
|
29
|
+
stop(): Promise<void>;
|
|
30
|
+
private attach;
|
|
31
|
+
private record;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../../src/integrations/shell/observer.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,YAAY,EAEZ,eAAe,EAChB,MAAM,aAAa,CAAC;AAQrB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa3D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAcD,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAQ/D;AAuCD,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;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAE9B,GAAG,EAAE,sBAAsB;IASjC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,IAAI,IAAI,YAAY,EAAE;IAQhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,MAAM;YAuBA,MAAM;CAmBrB"}
|