linkshell-cli 0.5.37 → 0.5.39
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/dist/cli/src/runtime/acp/acp-client.d.ts +21 -0
- package/dist/cli/src/runtime/acp/acp-client.js +101 -5
- package/dist/cli/src/runtime/acp/acp-client.js.map +1 -1
- package/dist/cli/src/runtime/acp/agent-process-discovery.d.ts +1 -1
- package/dist/cli/src/runtime/acp/agent-process-discovery.js +12 -1
- package/dist/cli/src/runtime/acp/agent-process-discovery.js.map +1 -1
- package/dist/cli/src/runtime/acp/agent-workspace.d.ts +137 -0
- package/dist/cli/src/runtime/acp/agent-workspace.js +607 -97
- package/dist/cli/src/runtime/acp/agent-workspace.js.map +1 -1
- package/dist/cli/src/runtime/acp/provider-resolver.js +28 -2
- package/dist/cli/src/runtime/acp/provider-resolver.js.map +1 -1
- package/dist/cli/src/runtime/bridge-session.d.ts +0 -48
- package/dist/cli/src/runtime/bridge-session.js +10 -1039
- package/dist/cli/src/runtime/bridge-session.js.map +1 -1
- package/dist/cli/src/runtime/hook-command.d.ts +5 -30
- package/dist/cli/src/runtime/hook-command.js +54 -41
- package/dist/cli/src/runtime/hook-command.js.map +1 -1
- package/dist/cli/tsconfig.tsbuildinfo +1 -1
- package/dist/shared-protocol/src/index.d.ts +164 -8
- package/dist/shared-protocol/src/index.js +6 -0
- package/dist/shared-protocol/src/index.js.map +1 -1
- package/package.json +3 -3
- package/src/runtime/acp/acp-client.ts +116 -5
- package/src/runtime/acp/agent-process-discovery.ts +8 -1
- package/src/runtime/acp/agent-workspace.ts +557 -50
- package/src/runtime/acp/provider-resolver.ts +31 -2
- package/src/runtime/bridge-session.ts +9 -1117
- package/src/runtime/hook-command.ts +47 -47
- package/web/assets/{FileBrowser-Coy7Szjx.js → FileBrowser-DtVanRUn.js} +1 -1
- package/web/assets/{PortPreview-D-XovbV1.js → PortPreview-DC2-UmHo.js} +1 -1
- package/web/assets/{TerminalPanel-Cah56AtC.js → TerminalPanel-D4gHM4Ta.js} +1 -1
- package/web/assets/{UsageDashboard-DfkjJagC.js → UsageDashboard-ZnvuvqWc.js} +1 -1
- package/web/assets/index-DKdJgZ9D.js +36 -0
- package/web/index.html +1 -1
- package/web/assets/index-ClZzQ4ba.js +0 -35
|
@@ -12,7 +12,8 @@ export function resolveAgentCommand(input) {
|
|
|
12
12
|
provider: input.provider,
|
|
13
13
|
command: explicit,
|
|
14
14
|
protocol: isCodexAppServer ? "codex-app-server" : isClaudeCli ? "claude-stream-json" : "acp",
|
|
15
|
-
|
|
15
|
+
// Gemini --acp, cursor-agent acp, and other ACP CLIs speak NDJSON, not LSP Content-Length.
|
|
16
|
+
framing: "newline",
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
19
|
if (input.provider === "codex") {
|
|
@@ -39,7 +40,31 @@ export function resolveAgentCommand(input) {
|
|
|
39
40
|
framing: "newline",
|
|
40
41
|
};
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
if (input.provider === "gemini") {
|
|
44
|
+
return {
|
|
45
|
+
provider: "gemini",
|
|
46
|
+
command: "gemini --acp",
|
|
47
|
+
protocol: "acp",
|
|
48
|
+
framing: "newline",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (input.provider === "cursor") {
|
|
52
|
+
return {
|
|
53
|
+
provider: "cursor",
|
|
54
|
+
command: "cursor-agent acp",
|
|
55
|
+
protocol: "acp",
|
|
56
|
+
framing: "newline",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (input.provider === "grok") {
|
|
60
|
+
return {
|
|
61
|
+
provider: "grok",
|
|
62
|
+
command: "grok agent stdio",
|
|
63
|
+
protocol: "acp",
|
|
64
|
+
framing: "newline",
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// copilot / opencode / kimi / custom: PTY-only unless caller passes --agent-command
|
|
43
68
|
return null;
|
|
44
69
|
}
|
|
45
70
|
function hasPackage(name) {
|
|
@@ -93,6 +118,7 @@ const INSTALL_BINARIES = [
|
|
|
93
118
|
{ provider: "copilot", binaries: ["copilot"] },
|
|
94
119
|
{ provider: "opencode", binaries: ["opencode", "opencode-ai"] },
|
|
95
120
|
{ provider: "cursor", binaries: ["cursor-agent"] },
|
|
121
|
+
{ provider: "grok", binaries: ["grok"] },
|
|
96
122
|
{ provider: "kimi", binaries: ["kimi"] },
|
|
97
123
|
];
|
|
98
124
|
export function detectAvailableProviders() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../../../../src/runtime/acp/provider-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AASrC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAS/C,MAAM,UAAU,mBAAmB,CAAC,KAGnC;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/E,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK;YAC5F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../../../../src/runtime/acp/provider-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,9 +48,6 @@ export declare class BridgeSession {
|
|
|
48
48
|
private hostToken;
|
|
49
49
|
private exited;
|
|
50
50
|
private stopped;
|
|
51
|
-
private permissionStacks;
|
|
52
|
-
private pendingPermissions;
|
|
53
|
-
private hookMarker;
|
|
54
51
|
private screenCapture;
|
|
55
52
|
private screenShare;
|
|
56
53
|
private tunnelSockets;
|
|
@@ -73,7 +70,6 @@ export declare class BridgeSession {
|
|
|
73
70
|
*/
|
|
74
71
|
private resolveConfinedPath;
|
|
75
72
|
private log;
|
|
76
|
-
private terminalHookMarker;
|
|
77
73
|
start(): Promise<void>;
|
|
78
74
|
private createPairing;
|
|
79
75
|
private resolveAuthToken;
|
|
@@ -88,50 +84,6 @@ export declare class BridgeSession {
|
|
|
88
84
|
private sendTerminalList;
|
|
89
85
|
private replayFrom;
|
|
90
86
|
private spawnTerminal;
|
|
91
|
-
private setupHookServer;
|
|
92
|
-
private refreshAgentPermissionHooks;
|
|
93
|
-
private setupClaudeHooks;
|
|
94
|
-
private setupCodexHooks;
|
|
95
|
-
private setupGeminiHooks;
|
|
96
|
-
private setupCopilotHooks;
|
|
97
|
-
private handleHookEvent;
|
|
98
|
-
/** Determine which provider a session id belongs to by which on-disk store
|
|
99
|
-
* holds its transcript — Claude writes ~/.claude/projects/<proj>/<id>.jsonl,
|
|
100
|
-
* Codex writes ~/.codex/sessions/**/rollout-*-<id>.jsonl. Deterministic and
|
|
101
|
-
* needed because an external session's provider is NOT the spawned PTY's
|
|
102
|
-
* provider. best-effort; returns undefined if not found (caller falls back).
|
|
103
|
-
* Only hit on a permission request (human-in-loop, rare), so the directory
|
|
104
|
-
* scan cost is fine. */
|
|
105
|
-
private providerForExternalSession;
|
|
106
|
-
private sendHookPermissionRequest;
|
|
107
|
-
/**
|
|
108
|
-
* Normalize hook event names from different CLI providers to unified internal names.
|
|
109
|
-
* Claude: PascalCase (PreToolUse, PostToolUse, Stop, PermissionRequest)
|
|
110
|
-
* Codex: camelCase (preToolUse, postToolUse, sessionStart)
|
|
111
|
-
* Gemini: PascalCase but different names (BeforeTool, AfterTool, BeforeSubmitPrompt)
|
|
112
|
-
*/
|
|
113
|
-
private normalizeHookName;
|
|
114
|
-
/** Auto-resolve a single pending permission (user acted in terminal) */
|
|
115
|
-
private autoResolvePending;
|
|
116
|
-
/** Drain all pending permissions for a terminal (session ended, stop, etc.) */
|
|
117
|
-
private drainPendingPermissions;
|
|
118
|
-
private resolvePendingPermission;
|
|
119
|
-
private formatHookPermissionDecision;
|
|
120
|
-
private sendPermissionSnapshot;
|
|
121
|
-
private cleanupHookServer;
|
|
122
|
-
/** Remove hook entries containing our marker from a JSON config file */
|
|
123
|
-
private removeHookEntries;
|
|
124
|
-
/**
|
|
125
|
-
* Remove ALL LinkShell hook entries (any marker) from a JSON config file.
|
|
126
|
-
* Used on startup to sweep stale entries left behind by a crashed instance,
|
|
127
|
-
* whose curl ports are now dead. Matches via isLinkShellHookEntry rather than
|
|
128
|
-
* a single marker so entries from previous runs are also cleaned.
|
|
129
|
-
*/
|
|
130
|
-
private sweepLinkShellHookEntries;
|
|
131
|
-
/** Sweep stale LinkShell hook entries from known shared config files on startup. */
|
|
132
|
-
private sweepStaleHookConfigs;
|
|
133
|
-
/** Silence Claude Code's "required env var(s) not set: ${LINKSHELL_ID}" on leftover hooks. */
|
|
134
|
-
private rewriteBareLinkShellIdInFile;
|
|
135
87
|
private send;
|
|
136
88
|
private startHeartbeat;
|
|
137
89
|
private stopHeartbeat;
|