claude-ide-bridge 2.6.1 → 2.6.4
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 +7 -2
- package/dist/analyticsAggregator.d.ts +28 -0
- package/dist/analyticsAggregator.js +133 -0
- package/dist/analyticsAggregator.js.map +1 -0
- package/dist/analyticsPrefs.d.ts +9 -0
- package/dist/analyticsPrefs.js +50 -0
- package/dist/analyticsPrefs.js.map +1 -0
- package/dist/analyticsSend.d.ts +12 -0
- package/dist/analyticsSend.js +34 -0
- package/dist/analyticsSend.js.map +1 -0
- package/dist/automation.d.ts +14 -0
- package/dist/automation.js +21 -0
- package/dist/automation.js.map +1 -1
- package/dist/bridge.d.ts +1 -0
- package/dist/bridge.js +34 -2
- package/dist/bridge.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +197 -41
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/orchestratorBridge.js +6 -0
- package/dist/orchestrator/orchestratorBridge.js.map +1 -1
- package/dist/streamableHttp.d.ts +5 -1
- package/dist/streamableHttp.js +13 -1
- package/dist/streamableHttp.js.map +1 -1
- package/dist/tools/bridgeStatus.d.ts +2 -1
- package/dist/tools/bridgeStatus.js +2 -1
- package/dist/tools/bridgeStatus.js.map +1 -1
- package/dist/tools/findFiles.js +6 -0
- package/dist/tools/findFiles.js.map +1 -1
- package/dist/tools/getFileTree.js +3 -1
- package/dist/tools/getFileTree.js.map +1 -1
- package/dist/tools/github/actions.d.ts +2 -2
- package/dist/tools/github/actions.js +6 -2
- package/dist/tools/github/actions.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.js +4 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/transport.d.ts +2 -0
- package/dist/transport.js +5 -0
- package/dist/transport.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ cd /your/project
|
|
|
39
39
|
claude-ide-bridge init
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
`init` installs the VS Code extension, writes a `## Claude IDE Bridge` section to your `CLAUDE.md`, and
|
|
42
|
+
`init` installs the VS Code extension, writes a `## Claude IDE Bridge` section to your `CLAUDE.md`, and registers the bridge as a global MCP server in `~/.claude.json` — so bridge tools are available in **every** `claude` session (any directory, any IDE). That's the entire setup.
|
|
43
43
|
|
|
44
44
|
**Then start the bridge and open Claude:**
|
|
45
45
|
|
|
@@ -48,10 +48,14 @@ claude-ide-bridge --watch # terminal 1 — keeps running, auto-restarts on cra
|
|
|
48
48
|
claude --ide # terminal 2 — Claude Code with IDE tools active
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
Type `/
|
|
51
|
+
Type `/mcp` in Claude to confirm the server is connected, then `/ide` to see open files, diagnostics, and editor state.
|
|
52
52
|
|
|
53
53
|
> **One bridge per workspace.** Each project needs its own bridge instance on its own port. If you work across multiple repos, start a separate `claude-ide-bridge --watch` in each directory.
|
|
54
54
|
|
|
55
|
+
> **Why `~/.claude.json` and not `.mcp.json`?** When VS Code, Windsurf, or Cursor launches Claude Code, it injects `--mcp-config` which overrides any project `.mcp.json`. Only `~/.claude.json` is loaded in every session regardless of how Claude Code is started. `init` writes there by design — you don't need to touch `.mcp.json`.
|
|
56
|
+
|
|
57
|
+
**Tools not showing up?** See the [troubleshooting guide](docs/troubleshooting.md).
|
|
58
|
+
|
|
55
59
|
## Multi-IDE Orchestrator
|
|
56
60
|
|
|
57
61
|
> **When to use this:** Large projects (50k+ lines) where a single Claude session runs out of context mid-task, or where you're running genuinely parallel workstreams — one agent implementing while another reviews, or one exploring the backend while another works on the frontend. For most projects, a single bridge is sufficient.
|
|
@@ -92,6 +96,7 @@ See [docs/multi-ide-review.md](docs/multi-ide-review.md) for the staged review w
|
|
|
92
96
|
|
|
93
97
|
| Guide | What it covers |
|
|
94
98
|
|-------|----------------|
|
|
99
|
+
| **[Troubleshooting](docs/troubleshooting.md)** | Tools not showing up, wrong config file, WSL/Windows PATH, port conflicts |
|
|
95
100
|
| **[Remote Access](docs/remote-access.md)** | Production reverse proxy setup (Caddy/nginx), TLS, Streamable HTTP transport |
|
|
96
101
|
| **[SSH Resilience](docs/ssh-resilience.md)** | Surviving SSH drops, tmux strategies, phone-to-VPS workflows |
|
|
97
102
|
| **[IP Allowlist](docs/ip-allowlist.md)** | Firewall rules, network access control for remote bridge instances |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aggregates ActivityLog data into an anonymized session summary for opt-in
|
|
3
|
+
* usage analytics. No file paths, arguments, error messages, or personal data.
|
|
4
|
+
*
|
|
5
|
+
* Plugin tool names are hashed (prefix only) to avoid leaking org-specific names.
|
|
6
|
+
* Built-in tool names are sent verbatim.
|
|
7
|
+
*/
|
|
8
|
+
export interface ToolStat {
|
|
9
|
+
tool: string;
|
|
10
|
+
calls: number;
|
|
11
|
+
errors: number;
|
|
12
|
+
p50Ms: number;
|
|
13
|
+
p95Ms: number;
|
|
14
|
+
}
|
|
15
|
+
export interface AnalyticsSummary {
|
|
16
|
+
bridgeVersion: string;
|
|
17
|
+
sessionDurationMs: number;
|
|
18
|
+
toolStats: ToolStat[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build an anonymized summary from raw tool call entries.
|
|
22
|
+
* Accepts the same shape as ActivityLog.stats() plus raw duration arrays.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildSummary(entries: Array<{
|
|
25
|
+
tool: string;
|
|
26
|
+
durationMs: number;
|
|
27
|
+
status: "success" | "error";
|
|
28
|
+
}>, sessionDurationMs: number, bridgeVersion: string): AnalyticsSummary;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aggregates ActivityLog data into an anonymized session summary for opt-in
|
|
3
|
+
* usage analytics. No file paths, arguments, error messages, or personal data.
|
|
4
|
+
*
|
|
5
|
+
* Plugin tool names are hashed (prefix only) to avoid leaking org-specific names.
|
|
6
|
+
* Built-in tool names are sent verbatim.
|
|
7
|
+
*/
|
|
8
|
+
import crypto from "node:crypto";
|
|
9
|
+
/** Known built-in tool names — sent verbatim. Anything else is treated as a plugin tool. */
|
|
10
|
+
const BUILTIN_TOOL_NAMES = new Set([
|
|
11
|
+
"getOpenEditors",
|
|
12
|
+
"getCurrentSelection",
|
|
13
|
+
"getLatestSelection",
|
|
14
|
+
"getDiagnostics",
|
|
15
|
+
"watchDiagnostics",
|
|
16
|
+
"getDocumentSymbols",
|
|
17
|
+
"getHover",
|
|
18
|
+
"goToDefinition",
|
|
19
|
+
"findReferences",
|
|
20
|
+
"getCallHierarchy",
|
|
21
|
+
"searchWorkspaceSymbols",
|
|
22
|
+
"getCodeActions",
|
|
23
|
+
"applyCodeAction",
|
|
24
|
+
"renameSymbol",
|
|
25
|
+
"openFile",
|
|
26
|
+
"closeTab",
|
|
27
|
+
"checkDocumentDirty",
|
|
28
|
+
"saveDocument",
|
|
29
|
+
"captureScreenshot",
|
|
30
|
+
"getBridgeStatus",
|
|
31
|
+
"getToolCapabilities",
|
|
32
|
+
"executeVSCodeCommand",
|
|
33
|
+
"getDebugState",
|
|
34
|
+
"setDebugBreakpoints",
|
|
35
|
+
"startDebugging",
|
|
36
|
+
"stopDebugging",
|
|
37
|
+
"evaluateInDebugger",
|
|
38
|
+
"readFile",
|
|
39
|
+
"writeFile",
|
|
40
|
+
"createFile",
|
|
41
|
+
"deleteFile",
|
|
42
|
+
"moveFile",
|
|
43
|
+
"listDirectory",
|
|
44
|
+
"searchFiles",
|
|
45
|
+
"searchAndReplace",
|
|
46
|
+
"runCommand",
|
|
47
|
+
"getGitStatus",
|
|
48
|
+
"getGitDiff",
|
|
49
|
+
"gitCommit",
|
|
50
|
+
"gitCheckout",
|
|
51
|
+
"gitPush",
|
|
52
|
+
"gitPull",
|
|
53
|
+
"gitLog",
|
|
54
|
+
"gitWrite",
|
|
55
|
+
"sendHttpRequest",
|
|
56
|
+
"clipboardRead",
|
|
57
|
+
"clipboardWrite",
|
|
58
|
+
"getClipboard",
|
|
59
|
+
"setClipboard",
|
|
60
|
+
"openDiff",
|
|
61
|
+
"runClaudeTask",
|
|
62
|
+
"getClaudeTaskStatus",
|
|
63
|
+
"cancelClaudeTask",
|
|
64
|
+
"listClaudeTasks",
|
|
65
|
+
"resumeClaudeTask",
|
|
66
|
+
"getAIComments",
|
|
67
|
+
"createGithubIssueFromAIComment",
|
|
68
|
+
"switchWorkspace",
|
|
69
|
+
"getOrchestratorStatus",
|
|
70
|
+
"handoffNote",
|
|
71
|
+
"workspaceSettings",
|
|
72
|
+
"getHandoffNote",
|
|
73
|
+
"writeHandoffNote",
|
|
74
|
+
"logging",
|
|
75
|
+
]);
|
|
76
|
+
/** Returns the safe tool name to include in analytics. */
|
|
77
|
+
function safeToolName(tool) {
|
|
78
|
+
if (BUILTIN_TOOL_NAMES.has(tool))
|
|
79
|
+
return tool;
|
|
80
|
+
// Plugin tool: extract prefix (everything before first underscore) and hash it
|
|
81
|
+
const prefix = tool.includes("_") ? (tool.split("_")[0] ?? tool) : tool;
|
|
82
|
+
const hash = crypto
|
|
83
|
+
.createHash("sha256")
|
|
84
|
+
.update(prefix)
|
|
85
|
+
.digest("hex")
|
|
86
|
+
.slice(0, 8);
|
|
87
|
+
return `plugin:${hash}`;
|
|
88
|
+
}
|
|
89
|
+
/** Compute p50 and p95 from a sorted array of durations. */
|
|
90
|
+
function percentiles(sorted) {
|
|
91
|
+
if (sorted.length === 0)
|
|
92
|
+
return { p50: 0, p95: 0 };
|
|
93
|
+
const p50 = sorted[Math.floor(sorted.length * 0.5)] ?? 0;
|
|
94
|
+
const p95 = sorted[Math.floor(sorted.length * 0.95)] ?? 0;
|
|
95
|
+
return { p50, p95 };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build an anonymized summary from raw tool call entries.
|
|
99
|
+
* Accepts the same shape as ActivityLog.stats() plus raw duration arrays.
|
|
100
|
+
*/
|
|
101
|
+
export function buildSummary(entries, sessionDurationMs, bridgeVersion) {
|
|
102
|
+
// Group by safe tool name
|
|
103
|
+
const map = new Map();
|
|
104
|
+
for (const entry of entries) {
|
|
105
|
+
const name = safeToolName(entry.tool);
|
|
106
|
+
const s = map.get(name) ?? { calls: 0, errors: 0, durations: [] };
|
|
107
|
+
s.calls++;
|
|
108
|
+
if (entry.status === "error")
|
|
109
|
+
s.errors++;
|
|
110
|
+
s.durations.push(entry.durationMs);
|
|
111
|
+
map.set(name, s);
|
|
112
|
+
}
|
|
113
|
+
const toolStats = [];
|
|
114
|
+
for (const [tool, s] of map) {
|
|
115
|
+
const sorted = [...s.durations].sort((a, b) => a - b);
|
|
116
|
+
const { p50, p95 } = percentiles(sorted);
|
|
117
|
+
toolStats.push({
|
|
118
|
+
tool,
|
|
119
|
+
calls: s.calls,
|
|
120
|
+
errors: s.errors,
|
|
121
|
+
p50Ms: Math.round(p50),
|
|
122
|
+
p95Ms: Math.round(p95),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Sort by call count descending for readability
|
|
126
|
+
toolStats.sort((a, b) => b.calls - a.calls);
|
|
127
|
+
return {
|
|
128
|
+
bridgeVersion,
|
|
129
|
+
sessionDurationMs,
|
|
130
|
+
toolStats,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=analyticsAggregator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyticsAggregator.js","sourceRoot":"","sources":["../src/analyticsAggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads and writes the opt-in analytics preference.
|
|
3
|
+
* Stored in ~/.claude/ide/analytics.json (respects CLAUDE_CONFIG_DIR).
|
|
4
|
+
* File created with 0o600 permissions (owner read/write only).
|
|
5
|
+
*/
|
|
6
|
+
/** Returns the current opt-in state, or null if no preference has been set. */
|
|
7
|
+
export declare function getAnalyticsPref(): boolean | null;
|
|
8
|
+
/** Persists the opt-in preference. Creates file with 0o600 permissions. */
|
|
9
|
+
export declare function setAnalyticsPref(enabled: boolean): void;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads and writes the opt-in analytics preference.
|
|
3
|
+
* Stored in ~/.claude/ide/analytics.json (respects CLAUDE_CONFIG_DIR).
|
|
4
|
+
* File created with 0o600 permissions (owner read/write only).
|
|
5
|
+
*/
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import os from "node:os";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
function prefsPath() {
|
|
10
|
+
const claudeDir = process.env.CLAUDE_CONFIG_DIR ?? path.join(os.homedir(), ".claude");
|
|
11
|
+
return path.join(claudeDir, "ide", "analytics.json");
|
|
12
|
+
}
|
|
13
|
+
/** Returns the current opt-in state, or null if no preference has been set. */
|
|
14
|
+
export function getAnalyticsPref() {
|
|
15
|
+
const p = prefsPath();
|
|
16
|
+
try {
|
|
17
|
+
const raw = fs.readFileSync(p, "utf-8");
|
|
18
|
+
const obj = JSON.parse(raw);
|
|
19
|
+
if (typeof obj === "object" &&
|
|
20
|
+
obj !== null &&
|
|
21
|
+
"enabled" in obj &&
|
|
22
|
+
typeof obj.enabled === "boolean") {
|
|
23
|
+
return obj.enabled;
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const code = err.code;
|
|
29
|
+
if (code === "ENOENT")
|
|
30
|
+
return null;
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Persists the opt-in preference. Creates file with 0o600 permissions. */
|
|
35
|
+
export function setAnalyticsPref(enabled) {
|
|
36
|
+
const p = prefsPath();
|
|
37
|
+
const dir = path.dirname(p);
|
|
38
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
39
|
+
const content = {
|
|
40
|
+
enabled,
|
|
41
|
+
decidedAt: new Date().toISOString(),
|
|
42
|
+
};
|
|
43
|
+
// Write to temp file then rename for atomicity
|
|
44
|
+
const tmp = `${p}.tmp`;
|
|
45
|
+
fs.writeFileSync(tmp, `${JSON.stringify(content, null, 2)}\n`, {
|
|
46
|
+
mode: 0o600,
|
|
47
|
+
});
|
|
48
|
+
fs.renameSync(tmp, p);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=analyticsPrefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyticsPrefs.js","sourceRoot":"","sources":["../src/analyticsPrefs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,SAAS,SAAS;IAChB,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB;IAC9B,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACvC,IACE,OAAO,GAAG,KAAK,QAAQ;YACvB,GAAG,KAAK,IAAI;YACZ,SAAS,IAAI,GAAG;YAChB,OAAQ,GAAiB,CAAC,OAAO,KAAK,SAAS,EAC/C,CAAC;YACD,OAAQ,GAAiB,CAAC,OAAO,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAc;QACzB,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,+CAA+C;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC7D,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sends an anonymized analytics summary to the usage endpoint.
|
|
3
|
+
* - Fire-and-forget is NOT used: callers must await this with a timeout race.
|
|
4
|
+
* - All errors are caught and swallowed — telemetry must never affect bridge operation.
|
|
5
|
+
* - Endpoint is hardcoded (not runtime-configurable) to prevent redirect attacks.
|
|
6
|
+
*/
|
|
7
|
+
import type { AnalyticsSummary } from "./analyticsAggregator.js";
|
|
8
|
+
/**
|
|
9
|
+
* Sends the summary to the analytics endpoint.
|
|
10
|
+
* Resolves (never rejects) — all errors are swallowed silently.
|
|
11
|
+
*/
|
|
12
|
+
export declare function sendAnalytics(summary: AnalyticsSummary): Promise<void>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sends an anonymized analytics summary to the usage endpoint.
|
|
3
|
+
* - Fire-and-forget is NOT used: callers must await this with a timeout race.
|
|
4
|
+
* - All errors are caught and swallowed — telemetry must never affect bridge operation.
|
|
5
|
+
* - Endpoint is hardcoded (not runtime-configurable) to prevent redirect attacks.
|
|
6
|
+
*/
|
|
7
|
+
/** Hardcoded endpoint — not configurable at runtime. */
|
|
8
|
+
const ANALYTICS_ENDPOINT = "https://analytics.claude-ide-bridge.dev/v1/usage";
|
|
9
|
+
const SEND_TIMEOUT_MS = 3000;
|
|
10
|
+
/**
|
|
11
|
+
* Sends the summary to the analytics endpoint.
|
|
12
|
+
* Resolves (never rejects) — all errors are swallowed silently.
|
|
13
|
+
*/
|
|
14
|
+
export async function sendAnalytics(summary) {
|
|
15
|
+
try {
|
|
16
|
+
const controller = new AbortController();
|
|
17
|
+
const timer = setTimeout(() => controller.abort(), SEND_TIMEOUT_MS);
|
|
18
|
+
try {
|
|
19
|
+
await fetch(ANALYTICS_ENDPOINT, {
|
|
20
|
+
method: "POST",
|
|
21
|
+
headers: { "Content-Type": "application/json" },
|
|
22
|
+
body: JSON.stringify(summary),
|
|
23
|
+
signal: controller.signal,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
clearTimeout(timer);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Silently swallow all errors — telemetry must never surface to the user
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=analyticsSend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyticsSend.js","sourceRoot":"","sources":["../src/analyticsSend.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,wDAAwD;AACxD,MAAM,kBAAkB,GAAG,kDAAkD,CAAC;AAE9E,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAyB;IAC3D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,kBAAkB,EAAE;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;AACH,CAAC"}
|
package/dist/automation.d.ts
CHANGED
|
@@ -79,4 +79,18 @@ export declare class AutomationHooks {
|
|
|
79
79
|
*/
|
|
80
80
|
handleInstructionsLoaded(): void;
|
|
81
81
|
handleFileSaved(_id: string, type: string, file: string): void;
|
|
82
|
+
/** Summary of automation policy for getBridgeStatus. */
|
|
83
|
+
getStatus(): {
|
|
84
|
+
onPostCompact: {
|
|
85
|
+
enabled: boolean;
|
|
86
|
+
cooldownMs: number;
|
|
87
|
+
} | null;
|
|
88
|
+
onDiagnosticsError: {
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
} | null;
|
|
91
|
+
onFileSave: {
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
patternCount: number;
|
|
94
|
+
} | null;
|
|
95
|
+
};
|
|
82
96
|
}
|
package/dist/automation.js
CHANGED
|
@@ -310,5 +310,26 @@ export class AutomationHooks {
|
|
|
310
310
|
this.log(`[automation] failed to enqueue save task for ${normalizedFile}: ${err instanceof Error ? err.message : String(err)}`);
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
|
+
/** Summary of automation policy for getBridgeStatus. */
|
|
314
|
+
getStatus() {
|
|
315
|
+
const p = this.policy;
|
|
316
|
+
return {
|
|
317
|
+
onPostCompact: p.onPostCompact
|
|
318
|
+
? {
|
|
319
|
+
enabled: p.onPostCompact.enabled,
|
|
320
|
+
cooldownMs: p.onPostCompact.cooldownMs,
|
|
321
|
+
}
|
|
322
|
+
: null,
|
|
323
|
+
onDiagnosticsError: p.onDiagnosticsError
|
|
324
|
+
? { enabled: p.onDiagnosticsError.enabled }
|
|
325
|
+
: null,
|
|
326
|
+
onFileSave: p.onFileSave
|
|
327
|
+
? {
|
|
328
|
+
enabled: p.onFileSave.enabled,
|
|
329
|
+
patternCount: p.onFileSave.patterns.length,
|
|
330
|
+
}
|
|
331
|
+
: null,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
313
334
|
}
|
|
314
335
|
//# sourceMappingURL=automation.js.map
|
package/dist/automation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation.js","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,8EAA8E;AAC9E,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,kEAAkE;AAClE,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,iGAAiG;AACjG,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,gFAAgF;AAChF,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AA2DlE,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,iFAAiF;AAEjF,8EAA8E;AAC9E,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3G,CAAC;IACJ,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,2CAA2C,QAAQ,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,+CAA+C,QAAQ,GAAG,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,MAA0B,CAAC;IAE1C,8BAA8B;IAC9B,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,yCAAyC,uBAAuB,aAAa,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;YACnC,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC;QACjC,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG;YACvB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EACzE,CAAC;YACD,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,iCAAiC,uBAAuB,aAAa,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;YACnC,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC;QACjC,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,oCAAoC,uBAAuB,aAAa,CACzE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;YACnC,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC;QACjC,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACvC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,2CAA2C,uBAAuB,aAAa,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF,MAAM,OAAO,eAAe;IAaP;IACA;IACA;IAdnB,8EAA8E;IACtE,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD;;;;OAIG;IACK,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3D,2DAA2D;IACnD,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEpD,YACmB,MAAwB,EACxB,YAAgC,EAChC,GAA0B;QAF1B,WAAM,GAAN,MAAM,CAAkB;QACxB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,QAAG,GAAH,GAAG,CAAuB;IAC1C,CAAC;IAEJ,wBAAwB,CAAC,IAAY,EAAE,WAAyB;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC3C,IAAI,CAAC,GAAG,EAAE,OAAO;YAAE,OAAO;QAE1B,mEAAmE;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1C,oEAAoE;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACvD,IACE,QAAQ;gBACR,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,EAChE,CAAC;gBACD,IAAI,CAAC,GAAG,CACN,iDAAiD,cAAc,WAAW,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAChH,CAAC;gBACF,OAAO;YACT,CAAC;YACD,wCAAwC;YACxC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QAED,kBAAkB;QAClB,MAAM,YAAY,GAA2B;YAC3C,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,CAAC;YACd,IAAI,EAAE,CAAC;SACR,CAAC;QACF,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAClD,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,iBAAiB;QACjB,MAAM,GAAG,GAAG,eAAe,cAAc,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CACN,oCAAoC,cAAc,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CACpG,CAAC;YACF,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,2EAA2E;QAC3E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE5B,6EAA6E;QAC7E,8EAA8E;QAC9E,6EAA6E;QAC7E,4EAA4E;QAC5E,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAClE,MAAM,eAAe,GAAG,QAAQ;aAC7B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,EAAE,CACpE;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;aACtB,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC;aACtC,OAAO,CACN,sBAAsB,EACtB,gDAAgD,eAAe,iCAAiC,CACjG,CAAC;QAEJ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,GAAG,CACN,2CAA2C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,cAAc,EAAE,CACtF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CACN,uDAAuD,cAAc,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC7H,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gGAAgG;IACxF,iBAAiB,CAAC,GAAW;QACnC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,GAAG,GAAG,CAAC,GAAG,uBAAuB;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,OAAO;YAAE,OAAO;QAE1B,MAAM,GAAG,GAAG,cAAc,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CACN,iDAAiD,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CAC9F,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBACvC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YACH,wEAAwE;YACxE,0DAA0D;YAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,2CAA2C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CACN,oDAAoD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;gBACvC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CACN,kDAAkD,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CACvE,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CACN,2DAA2D,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe,CAAC,GAAW,EAAE,IAAY,EAAE,IAAY;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,OAAO;YAAE,OAAO;QAC1B,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO;QAE5B,mEAAmE;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1C,mBAAmB;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;QACF,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,aAAa;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACvD,IACE,QAAQ;gBACR,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,EAChE,CAAC;gBACD,IAAI,CAAC,GAAG,CACN,0CAA0C,cAAc,WAAW,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CACzG,CAAC;gBACF,OAAO;YACT,CAAC;YACD,wCAAwC;YACxC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QAED,iBAAiB;QACjB,MAAM,GAAG,GAAG,QAAQ,cAAc,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CACN,yCAAyC,cAAc,KAAK,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,CACzG,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE5B,wEAAwE;QACxE,4EAA4E;QAC5E,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAC/B,eAAe,EACf,0CAA0C,YAAY,2BAA2B,CAClF,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACpE,wEAAwE;YACxE,0DAA0D;YAC1D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CACN,oCAAoC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,cAAc,EAAE,CAC/E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CACN,gDAAgD,cAAc,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACtH,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"automation.js","sourceRoot":"","sources":["../src/automation.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge.d.ts
CHANGED
|
@@ -39,6 +39,7 @@ export declare class Bridge {
|
|
|
39
39
|
/** Debounced tools/list_changed notification — max one per 2 seconds. */
|
|
40
40
|
private sendListChanged;
|
|
41
41
|
private _buildCheckpoint;
|
|
42
|
+
private buildInstructions;
|
|
42
43
|
private cleanupSession;
|
|
43
44
|
/** Returns the port the bridge is listening on (0 before start()). */
|
|
44
45
|
getPort(): number;
|
package/dist/bridge.js
CHANGED
|
@@ -3,6 +3,9 @@ import os from "node:os";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { WebSocket } from "ws";
|
|
5
5
|
import { ActivityLog } from "./activityLog.js";
|
|
6
|
+
import { buildSummary } from "./analyticsAggregator.js";
|
|
7
|
+
import { getAnalyticsPref } from "./analyticsPrefs.js";
|
|
8
|
+
import { sendAnalytics } from "./analyticsSend.js";
|
|
6
9
|
import { AutomationHooks, loadPolicy } from "./automation.js";
|
|
7
10
|
import { createDriver } from "./claudeDriver.js";
|
|
8
11
|
import { ClaudeOrchestrator } from "./claudeOrchestrator.js";
|
|
@@ -23,6 +26,7 @@ import { registerAllTools } from "./tools/index.js";
|
|
|
23
26
|
import { cleanupTempDirs } from "./tools/openDiff.js";
|
|
24
27
|
import { resolveFilePath } from "./tools/utils.js";
|
|
25
28
|
import { McpTransport } from "./transport.js";
|
|
29
|
+
import { PACKAGE_VERSION } from "./version.js";
|
|
26
30
|
const SHUTDOWN_TIMEOUT_MS = 5000;
|
|
27
31
|
const MAX_SESSIONS = 5;
|
|
28
32
|
let globalHandlersRegistered = false;
|
|
@@ -124,6 +128,7 @@ export class Bridge {
|
|
|
124
128
|
transport.setActivityLog(this.activityLog);
|
|
125
129
|
transport.setToolRateLimit(this.config.toolRateLimit);
|
|
126
130
|
transport.setExtensionConnectedFn(() => this.extensionClient.isConnected());
|
|
131
|
+
transport.setInstructions(this.buildInstructions());
|
|
127
132
|
transport.onInitialized = () => {
|
|
128
133
|
if (this.pendingListChanged && ws.readyState === WebSocket.OPEN) {
|
|
129
134
|
McpTransport.sendNotification(ws, "notifications/tools/list_changed", undefined, this.logger);
|
|
@@ -174,7 +179,7 @@ export class Bridge {
|
|
|
174
179
|
// these two calls, the new transport is already tracked by the watcher.
|
|
175
180
|
this.pluginWatcher?.addTransport(transport);
|
|
176
181
|
const pluginTools = this.pluginWatcher?.getTools() ?? this.pluginTools;
|
|
177
|
-
registerAllTools(transport, this.config, session.openedFiles, probes, this.extensionClient, this.activityLog, session.terminalPrefix, this.fileLock, this.sessions, this.orchestrator, sessionId, pluginTools);
|
|
182
|
+
registerAllTools(transport, this.config, session.openedFiles, probes, this.extensionClient, this.activityLog, session.terminalPrefix, this.fileLock, this.sessions, this.orchestrator, sessionId, pluginTools, this.automationHooks);
|
|
178
183
|
transport.attach(ws);
|
|
179
184
|
this.sessions.set(sessionId, session);
|
|
180
185
|
this.logger.info(`Claude Code connected (session ${sessionId.slice(0, 8)}) — ${this.sessions.size} active session${this.sessions.size === 1 ? "" : "s"}`);
|
|
@@ -350,6 +355,16 @@ export class Bridge {
|
|
|
350
355
|
gracePeriodMs: this.config.gracePeriodMs,
|
|
351
356
|
};
|
|
352
357
|
}
|
|
358
|
+
buildInstructions() {
|
|
359
|
+
const lines = [`claude-ide-bridge v${PACKAGE_VERSION}`];
|
|
360
|
+
lines.push("");
|
|
361
|
+
lines.push("CONTEXT PLATFORM:");
|
|
362
|
+
lines.push(" Use ctx tools for issue/PR/error context — not gh or githubViewPR.");
|
|
363
|
+
lines.push(" ctxGetTaskContext(ref) — unified context for any issue, PR, commit, or error");
|
|
364
|
+
lines.push(" ctxQueryTraces(query) — search past decisions");
|
|
365
|
+
lines.push(" ctxSaveTrace(ref, problem, solution) — record fix after resolving a task");
|
|
366
|
+
return lines.join("\n");
|
|
367
|
+
}
|
|
353
368
|
cleanupSession(id) {
|
|
354
369
|
const session = this.sessions.get(id);
|
|
355
370
|
if (!session)
|
|
@@ -523,7 +538,7 @@ export class Bridge {
|
|
|
523
538
|
// 3b. Set up Streamable HTTP transport handler (POST/GET/DELETE /mcp)
|
|
524
539
|
this.httpMcpHandler = new StreamableHttpHandler(this.config, probes, this.extensionClient, this.activityLog, this.fileLock, this.sessions, this.orchestrator, this.logger, () => this.pluginWatcher?.getTools() ?? this.pluginTools, () => this.pluginWatcher, this.oauthServer
|
|
525
540
|
? (token) => this.oauthServer?.resolveBearerScope(token) ?? null
|
|
526
|
-
: null);
|
|
541
|
+
: null, this.buildInstructions());
|
|
527
542
|
this.server.httpMcpHandler = (req, res) => this.httpMcpHandler?.handle(req, res) ?? Promise.resolve();
|
|
528
543
|
// 3. Check for stale lock files
|
|
529
544
|
this.lockFile.cleanStale();
|
|
@@ -684,6 +699,23 @@ export class Bridge {
|
|
|
684
699
|
? `, ${totalErrors} error${totalErrors === 1 ? "" : "s"}`
|
|
685
700
|
: "";
|
|
686
701
|
this.logger.info(`Shutdown complete — ${totalSessions} session${totalSessions === 1 ? "" : "s"}, ${totalCalls} tool call${totalCalls === 1 ? "" : "s"}${shutdownErrorPart}`);
|
|
702
|
+
// Send analytics if opted in — awaited with 2s timeout so it completes before process.exit()
|
|
703
|
+
const analyticsOn = this.config.analyticsEnabled !== null
|
|
704
|
+
? this.config.analyticsEnabled
|
|
705
|
+
: getAnalyticsPref();
|
|
706
|
+
if (analyticsOn === true && totalSessions > 0) {
|
|
707
|
+
try {
|
|
708
|
+
const entries = this.activityLog.query({ last: 500 });
|
|
709
|
+
const summary = buildSummary(entries, maxDurationMs, PACKAGE_VERSION);
|
|
710
|
+
await Promise.race([
|
|
711
|
+
sendAnalytics(summary),
|
|
712
|
+
new Promise((resolve) => setTimeout(resolve, 2000)),
|
|
713
|
+
]);
|
|
714
|
+
}
|
|
715
|
+
catch {
|
|
716
|
+
// Swallow all errors — analytics must never affect shutdown
|
|
717
|
+
}
|
|
718
|
+
}
|
|
687
719
|
// Send aggregate session-end notification to the extension before disconnecting
|
|
688
720
|
if (totalSessions > 0) {
|
|
689
721
|
this.extensionClient.notifyClaudeConnectionState(false, {
|