@penclipai/adapter-claude-local 2026.704.0 → 2026.714.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/dist/cli/format-event.d.ts.map +1 -1
- package/dist/cli/format-event.js +5 -0
- package/dist/cli/format-event.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/server/acp.d.ts +31 -0
- package/dist/server/acp.d.ts.map +1 -0
- package/dist/server/acp.js +352 -0
- package/dist/server/acp.js.map +1 -0
- package/dist/server/acp.test.d.ts +2 -0
- package/dist/server/acp.test.d.ts.map +1 -0
- package/dist/server/acp.test.js +396 -0
- package/dist/server/acp.test.js.map +1 -0
- package/dist/server/config-schema.d.ts +3 -0
- package/dist/server/config-schema.d.ts.map +1 -0
- package/dist/server/config-schema.js +67 -0
- package/dist/server/config-schema.js.map +1 -0
- package/dist/server/execute.acp-fallback.test.d.ts +2 -0
- package/dist/server/execute.acp-fallback.test.d.ts.map +1 -0
- package/dist/server/execute.acp-fallback.test.js +90 -0
- package/dist/server/execute.acp-fallback.test.js.map +1 -0
- package/dist/server/execute.d.ts.map +1 -1
- package/dist/server/execute.js +82 -21
- package/dist/server/execute.js.map +1 -1
- package/dist/server/index.d.ts +3 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +10 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/parse.d.ts +15 -0
- package/dist/server/parse.d.ts.map +1 -1
- package/dist/server/parse.js +53 -2
- package/dist/server/parse.js.map +1 -1
- package/dist/server/parse.test.js +85 -7
- package/dist/server/parse.test.js.map +1 -1
- package/dist/server/test.d.ts.map +1 -1
- package/dist/server/test.js +17 -0
- package/dist/server/test.js.map +1 -1
- package/dist/server/test.probe.test.js +4 -4
- package/dist/server/test.probe.test.js.map +1 -1
- package/dist/ui/build-config.d.ts.map +1 -1
- package/dist/ui/build-config.js +17 -0
- package/dist/ui/build-config.js.map +1 -1
- package/dist/ui/build-config.test.d.ts +2 -0
- package/dist/ui/build-config.test.d.ts.map +1 -0
- package/dist/ui/build-config.test.js +46 -0
- package/dist/ui/build-config.test.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -1
- package/dist/ui/parse-stdout.js +4 -0
- package/dist/ui/parse-stdout.js.map +1 -1
- package/package.json +3 -2
- package/skills/paperclip/SKILL.md +45 -10
- package/skills/paperclip/references/api-reference.md +246 -1
- package/skills/paperclip/references/cases.md +295 -0
- package/skills/paperclip/references/company-skills.md +1 -1
- package/skills/paperclip-board/SKILL.md +3 -4
- package/skills/paperclip-converting-plans-to-tasks/SKILL.md +3 -7
- package/skills/para-memory-files/SKILL.md +3 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-event.d.ts","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format-event.d.ts","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"AAyCA,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAsGxE"}
|
package/dist/cli/format-event.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pc from "picocolors";
|
|
2
|
+
import { printAcpxStreamEvent } from "@penclipai/adapter-utils/acpx-engine/cli";
|
|
2
3
|
function asErrorText(value) {
|
|
3
4
|
if (typeof value === "string")
|
|
4
5
|
return value;
|
|
@@ -53,6 +54,10 @@ export function printClaudeStreamEvent(raw, debug) {
|
|
|
53
54
|
return;
|
|
54
55
|
}
|
|
55
56
|
const type = typeof parsed.type === "string" ? parsed.type : "";
|
|
57
|
+
if (type.startsWith("acpx.")) {
|
|
58
|
+
printAcpxStreamEvent(line, debug);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
56
61
|
if (type === "system" && parsed.subtype === "init") {
|
|
57
62
|
const model = typeof parsed.model === "string" ? parsed.model : "unknown";
|
|
58
63
|
const sessionId = typeof parsed.session_id === "string" ? parsed.session_id : "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-event.js","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"format-event.js","sourceRoot":"","sources":["../../src/cli/format-event.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,5 +7,5 @@ export declare const models: {
|
|
|
7
7
|
label: string;
|
|
8
8
|
}[];
|
|
9
9
|
export declare const modelProfiles: AdapterModelProfileDefinition[];
|
|
10
|
-
export declare const agentConfigurationDoc = "# claude_local agent configuration\n\nAdapter: claude_local\n\nCore fields:\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file injected at runtime\n- model (string, optional): Claude model id\n- effort (string, optional): reasoning effort passed via --effort (low|medium|high)\n- chrome (boolean, optional): pass --chrome when running Claude\n- promptTemplate (string, optional): run prompt template\n- maxTurnsPerRun (number, optional): max turns for one run\n- dangerouslySkipPermissions (boolean, optional, default true): allow non-interactive Claude runs to proceed without approval prompts. Local targets receive --dangerously-skip-permissions; remote targets receive a curated --allowedTools list so they do not inherit local bypass permissions.\n- command (string, optional): defaults to \"claude\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n- workspaceStrategy (object, optional): execution workspace strategy; currently supports { type: \"git_worktree\", baseRef?, branchTemplate?, worktreeParentDir? }\n- workspaceRuntime (object, optional): reserved for workspace runtime metadata; workspace runtime services are manually controlled from the workspace UI and are not auto-started by heartbeats\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n\nNotes:\n- When Paperclip realizes a workspace/runtime for a run, it injects PAPERCLIP_WORKSPACE_* and PAPERCLIP_RUNTIME_* env vars for agent-side tooling.\n";
|
|
10
|
+
export declare const agentConfigurationDoc = "# claude_local agent configuration\n\nAdapter: claude_local\n\nCore fields:\n- engine (string, optional): execution engine. Leave unset/auto to use ACP when prerequisites pass and fall back to the Claude Code CLI with diagnostics. Use \"cli\" to pin the CLI lane or \"acp\" to require ACP.\n- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)\n- instructionsFilePath (string, optional): absolute path to a markdown instructions file injected at runtime\n- model (string, optional): Claude model id\n- effort (string, optional): reasoning effort passed via --effort (low|medium|high)\n- chrome (boolean, optional): pass --chrome when running Claude\n- promptTemplate (string, optional): run prompt template\n- maxTurnsPerRun (number, optional): max turns for one run\n- dangerouslySkipPermissions (boolean, optional, default true): allow non-interactive Claude runs to proceed without approval prompts. Local targets receive --dangerously-skip-permissions; remote targets receive a curated --allowedTools list so they do not inherit local bypass permissions.\n- command (string, optional): defaults to \"claude\"\n- extraArgs (string[], optional): additional CLI args\n- env (object, optional): KEY=VALUE environment variables\n- workspaceStrategy (object, optional): execution workspace strategy; currently supports { type: \"git_worktree\", baseRef?, branchTemplate?, worktreeParentDir? }\n- workspaceRuntime (object, optional): reserved for workspace runtime metadata; workspace runtime services are manually controlled from the workspace UI and are not auto-started by heartbeats\n\nACP fields (only when engine=\"acp\"):\n- agentCommand (string, optional): override for the Claude ACP server command; defaults to the package-local claude-agent-acp binary\n- mode (string, optional, default \"persistent\"): ACP session mode (\"persistent\" or \"oneshot\")\n- stateDir (string, optional): ACP session state directory; defaults to Paperclip-managed company/agent scoped storage\n- nonInteractivePermissions (string, optional, default \"deny\"): fallback when the ACP agent asks for input outside an interactive session\n- warmHandleIdleMs (number, optional, default 0): keep the ACP process warm for this many ms after a successful run\n\nOperational fields:\n- timeoutSec (number, optional): run timeout in seconds\n- graceSec (number, optional): SIGTERM grace period in seconds\n\nNotes:\n- The Claude ACP lane requires Node >=22.12.0 and @agentclientprotocol/claude-agent-acp to be installed with this adapter package. Auto engine selection falls back to CLI when those prerequisites are unavailable; explicit engine=\"acp\" fails loudly.\n- For ACP runs, model selection is passed through ANTHROPIC_MODEL at ACP server startup; Paperclip-managed Claude permissions and ephemeral skill materialization are handled by the shared ACP engine.\n- When Paperclip realizes a workspace/runtime for a run, it injects PAPERCLIP_WORKSPACE_* and PAPERCLIP_RUNTIME_* env vars for agent-side tooling.\n";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAE9E,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,KAAK,gBAAgB,CAAC;AAEnC,eAAO,MAAM,uBAAuB,6CAA6C,CAAC;AAElF,eAAO,MAAM,MAAM;;;GAUlB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,6BAA6B,EAWxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAE9E,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,KAAK,gBAAgB,CAAC;AAEnC,eAAO,MAAM,uBAAuB,6CAA6C,CAAC;AAElF,eAAO,MAAM,MAAM;;;GAUlB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,6BAA6B,EAWxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,kgGAmCjC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -29,6 +29,7 @@ export const agentConfigurationDoc = `# claude_local agent configuration
|
|
|
29
29
|
Adapter: claude_local
|
|
30
30
|
|
|
31
31
|
Core fields:
|
|
32
|
+
- engine (string, optional): execution engine. Leave unset/auto to use ACP when prerequisites pass and fall back to the Claude Code CLI with diagnostics. Use "cli" to pin the CLI lane or "acp" to require ACP.
|
|
32
33
|
- cwd (string, optional): default absolute working directory fallback for the agent process (created if missing when possible)
|
|
33
34
|
- instructionsFilePath (string, optional): absolute path to a markdown instructions file injected at runtime
|
|
34
35
|
- model (string, optional): Claude model id
|
|
@@ -43,11 +44,20 @@ Core fields:
|
|
|
43
44
|
- workspaceStrategy (object, optional): execution workspace strategy; currently supports { type: "git_worktree", baseRef?, branchTemplate?, worktreeParentDir? }
|
|
44
45
|
- workspaceRuntime (object, optional): reserved for workspace runtime metadata; workspace runtime services are manually controlled from the workspace UI and are not auto-started by heartbeats
|
|
45
46
|
|
|
47
|
+
ACP fields (only when engine="acp"):
|
|
48
|
+
- agentCommand (string, optional): override for the Claude ACP server command; defaults to the package-local claude-agent-acp binary
|
|
49
|
+
- mode (string, optional, default "persistent"): ACP session mode ("persistent" or "oneshot")
|
|
50
|
+
- stateDir (string, optional): ACP session state directory; defaults to Paperclip-managed company/agent scoped storage
|
|
51
|
+
- nonInteractivePermissions (string, optional, default "deny"): fallback when the ACP agent asks for input outside an interactive session
|
|
52
|
+
- warmHandleIdleMs (number, optional, default 0): keep the ACP process warm for this many ms after a successful run
|
|
53
|
+
|
|
46
54
|
Operational fields:
|
|
47
55
|
- timeoutSec (number, optional): run timeout in seconds
|
|
48
56
|
- graceSec (number, optional): SIGTERM grace period in seconds
|
|
49
57
|
|
|
50
58
|
Notes:
|
|
59
|
+
- The Claude ACP lane requires Node >=22.12.0 and @agentclientprotocol/claude-agent-acp to be installed with this adapter package. Auto engine selection falls back to CLI when those prerequisites are unavailable; explicit engine="acp" fails loudly.
|
|
60
|
+
- For ACP runs, model selection is passed through ANTHROPIC_MODEL at ACP server startup; Paperclip-managed Claude permissions and ephemeral skill materialization are handled by the shared ACP engine.
|
|
51
61
|
- When Paperclip realizes a workspace/runtime for a run, it injects PAPERCLIP_WORKSPACE_* and PAPERCLIP_RUNTIME_* env vars for agent-side tooling.
|
|
52
62
|
`;
|
|
53
63
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,0CAA0C,CAAC;AAElF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACjD,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACvD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACvD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAoC;IAC5D;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,kGAAkG;QAC/G,aAAa,EAAE;YACb,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE,iBAAiB;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAC;AACnC,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,0CAA0C,CAAC;AAElF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACjD,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACnD,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACvD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACrD,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACvD,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAoC;IAC5D;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,kGAAkG;QAC/G,aAAa,EAAE;YACb,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE,iBAAiB;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCpC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AdapterBillingType, AdapterEnvironmentTestContext, AdapterEnvironmentTestResult, AdapterExecutionContext, AdapterExecutionResult } from "@penclipai/adapter-utils";
|
|
2
|
+
import type { AcpxEngineExecutorOptions } from "@penclipai/adapter-utils/acpx-engine/execute";
|
|
3
|
+
export type ClaudeExecutionEngine = "cli" | "acp";
|
|
4
|
+
export interface ClaudeEngineSelection {
|
|
5
|
+
engine: ClaudeExecutionEngine;
|
|
6
|
+
explicit: boolean;
|
|
7
|
+
fallbackReason?: string;
|
|
8
|
+
}
|
|
9
|
+
type ClaudeEngineResolutionInput = Pick<AdapterExecutionContext, "config"> & Partial<Pick<AdapterExecutionContext, "executionTarget" | "executionTransport">>;
|
|
10
|
+
type ClaudeAcpExecutorOptions = Omit<AcpxEngineExecutorOptions, "adapterType" | "moduleDir" | "packageRootDir">;
|
|
11
|
+
type ClaudeAcpExecutor = (ctx: AdapterExecutionContext) => Promise<AdapterExecutionResult>;
|
|
12
|
+
export declare function resolveClaudeExecutionEngine(config: Record<string, unknown>): ClaudeEngineSelection;
|
|
13
|
+
export declare function resolveClaudeExecutionEngineForRun(input: ClaudeEngineResolutionInput): Promise<ClaudeEngineSelection>;
|
|
14
|
+
export declare function formatClaudeAcpFallbackMessage(reason: string): string;
|
|
15
|
+
export declare function buildClaudeAcpConfig(config: Record<string, unknown>): Record<string, unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* Classify billing the same way the Claude CLI lane does so ACP runs land in
|
|
18
|
+
* the cost ledger with a real provider/billingType instead of acpx/unknown.
|
|
19
|
+
* Host env only counts for local execution targets; remote targets see just
|
|
20
|
+
* the adapter-config env.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveClaudeAcpBillingIdentity(ctx: Pick<AdapterExecutionContext, "config"> & Partial<Pick<AdapterExecutionContext, "executionTarget" | "executionTransport">>): {
|
|
23
|
+
provider: string;
|
|
24
|
+
biller: string;
|
|
25
|
+
billingType: AdapterBillingType;
|
|
26
|
+
};
|
|
27
|
+
export declare function createClaudeAcpExecutor(options?: ClaudeAcpExecutorOptions): ClaudeAcpExecutor;
|
|
28
|
+
export declare function nodeVersionMeetsClaudeAcpMinimum(version?: string): boolean;
|
|
29
|
+
export declare function testClaudeAcpEnvironment(ctx: AdapterEnvironmentTestContext): Promise<AdapterEnvironmentTestResult>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=acp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/server/acp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAElB,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAYlC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAW9F,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,2BAA2B,GAC9B,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,CAAC;AAEnF,KAAK,wBAAwB,GAAG,IAAI,CAClC,yBAAyB,EACzB,aAAa,GAAG,WAAW,GAAG,gBAAgB,CAC/C,CAAC;AAEF,KAAK,iBAAiB,GAAG,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAS3F,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,qBAAqB,CAEnG;AAED,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAOhC;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAErE;AAWD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyB7F;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,GACjF;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAA;CAAE,CAyBvE;AAYD,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,wBAA6B,GAAG,iBAAiB,CAcjG;AAQD,wBAAgB,gCAAgC,CAAC,OAAO,SAAkB,GAAG,OAAO,CAMnF;AA0HD,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAuHvC"}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { ensureAdapterExecutionTargetCommandResolvable, readAdapterExecutionTarget, resolveAdapterExecutionTargetCwd, } from "@penclipai/adapter-utils/execution-target";
|
|
5
|
+
import { DEFAULT_ACP_ENGINE_MODE, DEFAULT_ACP_ENGINE_NON_INTERACTIVE_PERMISSIONS, DEFAULT_ACP_ENGINE_PERMISSION_MODE, DEFAULT_ACP_ENGINE_WARM_HANDLE_IDLE_MS, } from "@penclipai/adapter-utils/acpx-engine/constants";
|
|
6
|
+
import { asNumber, asString, parseObject, } from "@penclipai/adapter-utils/server-utils";
|
|
7
|
+
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const packageRootDir = path.resolve(moduleDir, "../..");
|
|
9
|
+
const MIN_ACP_NODE_VERSION = "22.12.0";
|
|
10
|
+
function normalizeEngine(value) {
|
|
11
|
+
const raw = typeof value === "string" ? value.trim().toLowerCase() : "";
|
|
12
|
+
if (raw === "acp")
|
|
13
|
+
return { engine: "acp", explicit: true };
|
|
14
|
+
if (raw === "cli")
|
|
15
|
+
return { engine: "cli", explicit: true };
|
|
16
|
+
return { engine: "acp", explicit: false };
|
|
17
|
+
}
|
|
18
|
+
export function resolveClaudeExecutionEngine(config) {
|
|
19
|
+
return normalizeEngine(config.engine);
|
|
20
|
+
}
|
|
21
|
+
export async function resolveClaudeExecutionEngineForRun(input) {
|
|
22
|
+
const selection = normalizeEngine(input.config.engine);
|
|
23
|
+
if (selection.explicit || selection.engine !== "acp")
|
|
24
|
+
return selection;
|
|
25
|
+
const fallbackReason = await defaultClaudeAcpFallbackReason(input);
|
|
26
|
+
if (!fallbackReason)
|
|
27
|
+
return selection;
|
|
28
|
+
return { engine: "cli", explicit: false, fallbackReason };
|
|
29
|
+
}
|
|
30
|
+
export function formatClaudeAcpFallbackMessage(reason) {
|
|
31
|
+
return `[paperclip] Claude ACP default unavailable; falling back to Claude CLI. ${reason} Set engine=acp to require ACP or engine=cli to silence this fallback.\n`;
|
|
32
|
+
}
|
|
33
|
+
function firstNonEmptyString(...values) {
|
|
34
|
+
for (const value of values) {
|
|
35
|
+
if (typeof value !== "string")
|
|
36
|
+
continue;
|
|
37
|
+
const trimmed = value.trim();
|
|
38
|
+
if (trimmed.length > 0)
|
|
39
|
+
return trimmed;
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
export function buildClaudeAcpConfig(config) {
|
|
44
|
+
const agentCommand = firstNonEmptyString(config.agentCommand, config.acpAgentCommand);
|
|
45
|
+
const stateDir = firstNonEmptyString(config.stateDir, config.acpStateDir);
|
|
46
|
+
const mode = firstNonEmptyString(config.mode, config.acpMode) ?? DEFAULT_ACP_ENGINE_MODE;
|
|
47
|
+
const permissionMode = firstNonEmptyString(config.permissionMode, config.acpPermissionMode) ??
|
|
48
|
+
DEFAULT_ACP_ENGINE_PERMISSION_MODE;
|
|
49
|
+
const nonInteractivePermissions = firstNonEmptyString(config.nonInteractivePermissions, config.acpNonInteractivePermissions) ??
|
|
50
|
+
DEFAULT_ACP_ENGINE_NON_INTERACTIVE_PERMISSIONS;
|
|
51
|
+
const warmHandleIdleMs = config.warmHandleIdleMs ??
|
|
52
|
+
config.acpWarmHandleIdleMs ??
|
|
53
|
+
DEFAULT_ACP_ENGINE_WARM_HANDLE_IDLE_MS;
|
|
54
|
+
return {
|
|
55
|
+
...config,
|
|
56
|
+
agent: "claude",
|
|
57
|
+
mode,
|
|
58
|
+
permissionMode,
|
|
59
|
+
nonInteractivePermissions,
|
|
60
|
+
warmHandleIdleMs,
|
|
61
|
+
...(agentCommand ? { agentCommand } : {}),
|
|
62
|
+
...(stateDir ? { stateDir } : {}),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Classify billing the same way the Claude CLI lane does so ACP runs land in
|
|
67
|
+
* the cost ledger with a real provider/billingType instead of acpx/unknown.
|
|
68
|
+
* Host env only counts for local execution targets; remote targets see just
|
|
69
|
+
* the adapter-config env.
|
|
70
|
+
*/
|
|
71
|
+
export function resolveClaudeAcpBillingIdentity(ctx) {
|
|
72
|
+
const envConfig = parseObject(parseObject(ctx.config).env);
|
|
73
|
+
const target = readAdapterExecutionTarget({
|
|
74
|
+
executionTarget: ctx.executionTarget,
|
|
75
|
+
legacyRemoteExecution: ctx.executionTransport?.remoteExecution,
|
|
76
|
+
});
|
|
77
|
+
const considerHostEnv = target?.kind !== "remote";
|
|
78
|
+
const readEnvValue = (key) => {
|
|
79
|
+
const fromConfig = envConfig[key];
|
|
80
|
+
if (typeof fromConfig === "string" && fromConfig.trim())
|
|
81
|
+
return fromConfig.trim();
|
|
82
|
+
const fromHost = considerHostEnv ? process.env[key] : undefined;
|
|
83
|
+
return typeof fromHost === "string" ? fromHost.trim() : "";
|
|
84
|
+
};
|
|
85
|
+
const bedrockFlag = readEnvValue("CLAUDE_CODE_USE_BEDROCK");
|
|
86
|
+
const bedrock = bedrockFlag === "1" || bedrockFlag === "true" || Boolean(readEnvValue("ANTHROPIC_BEDROCK_BASE_URL"));
|
|
87
|
+
const billingType = bedrock
|
|
88
|
+
? "metered_api"
|
|
89
|
+
: readEnvValue("ANTHROPIC_API_KEY")
|
|
90
|
+
? "api"
|
|
91
|
+
: "subscription";
|
|
92
|
+
return {
|
|
93
|
+
provider: "anthropic",
|
|
94
|
+
biller: bedrock ? "aws_bedrock" : "anthropic",
|
|
95
|
+
billingType,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function withClaudeAcpDefaults(options) {
|
|
99
|
+
return {
|
|
100
|
+
resolveBillingIdentity: resolveClaudeAcpBillingIdentity,
|
|
101
|
+
...options,
|
|
102
|
+
adapterType: "claude_local",
|
|
103
|
+
moduleDir,
|
|
104
|
+
packageRootDir,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export function createClaudeAcpExecutor(options = {}) {
|
|
108
|
+
let executor = null;
|
|
109
|
+
return async (ctx) => {
|
|
110
|
+
let currentExecutor = executor;
|
|
111
|
+
if (!currentExecutor) {
|
|
112
|
+
const { createAcpxEngineExecutor } = await import("@penclipai/adapter-utils/acpx-engine/execute");
|
|
113
|
+
currentExecutor = createAcpxEngineExecutor(withClaudeAcpDefaults(options));
|
|
114
|
+
executor = currentExecutor;
|
|
115
|
+
}
|
|
116
|
+
return currentExecutor({
|
|
117
|
+
...ctx,
|
|
118
|
+
config: buildClaudeAcpConfig(ctx.config),
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function parseVersion(version) {
|
|
123
|
+
const match = version.match(/^v?(\d+)\.(\d+)\.(\d+)/);
|
|
124
|
+
if (!match)
|
|
125
|
+
return [0, 0, 0];
|
|
126
|
+
return [Number(match[1]), Number(match[2]), Number(match[3])];
|
|
127
|
+
}
|
|
128
|
+
export function nodeVersionMeetsClaudeAcpMinimum(version = process.version) {
|
|
129
|
+
const [major, minor, patch] = parseVersion(version);
|
|
130
|
+
const [minMajor, minMinor, minPatch] = parseVersion(MIN_ACP_NODE_VERSION);
|
|
131
|
+
if (major !== minMajor)
|
|
132
|
+
return major > minMajor;
|
|
133
|
+
if (minor !== minMinor)
|
|
134
|
+
return minor > minMinor;
|
|
135
|
+
return patch >= minPatch;
|
|
136
|
+
}
|
|
137
|
+
async function pathExists(candidate) {
|
|
138
|
+
return fs.access(candidate).then(() => true).catch(() => false);
|
|
139
|
+
}
|
|
140
|
+
function hasPathSeparator(command) {
|
|
141
|
+
return command.includes("/") || command.includes("\\");
|
|
142
|
+
}
|
|
143
|
+
function looksLikeShellCommand(command) {
|
|
144
|
+
return /\s/.test(command.trim());
|
|
145
|
+
}
|
|
146
|
+
async function findCommandOnPath(binName) {
|
|
147
|
+
const pathValue = process.env.PATH ?? "";
|
|
148
|
+
for (const segment of pathValue.split(path.delimiter)) {
|
|
149
|
+
if (!segment)
|
|
150
|
+
continue;
|
|
151
|
+
const candidate = path.join(segment, binName);
|
|
152
|
+
if (await pathExists(candidate))
|
|
153
|
+
return candidate;
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
async function findAncestorBin(startDir, binName) {
|
|
158
|
+
let current = path.resolve(startDir);
|
|
159
|
+
while (true) {
|
|
160
|
+
const candidate = path.join(current, "node_modules", ".bin", binName);
|
|
161
|
+
if (await pathExists(candidate))
|
|
162
|
+
return candidate;
|
|
163
|
+
const parent = path.dirname(current);
|
|
164
|
+
if (parent === current)
|
|
165
|
+
return null;
|
|
166
|
+
current = parent;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async function commandIsResolvable(command, input) {
|
|
170
|
+
const trimmed = command.trim();
|
|
171
|
+
if (!trimmed)
|
|
172
|
+
return false;
|
|
173
|
+
if (looksLikeShellCommand(trimmed))
|
|
174
|
+
return true;
|
|
175
|
+
const target = readAdapterExecutionTarget({
|
|
176
|
+
executionTarget: input?.executionTarget,
|
|
177
|
+
legacyRemoteExecution: input?.executionTransport?.remoteExecution,
|
|
178
|
+
});
|
|
179
|
+
if (target?.kind === "remote") {
|
|
180
|
+
try {
|
|
181
|
+
await ensureAdapterExecutionTargetCommandResolvable(trimmed, target, resolveAdapterExecutionTargetCwd(target, asString(input?.config.cwd, ""), process.cwd()), process.env);
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (path.isAbsolute(trimmed) || hasPathSeparator(trimmed))
|
|
189
|
+
return pathExists(trimmed);
|
|
190
|
+
return (await findCommandOnPath(trimmed)) !== null;
|
|
191
|
+
}
|
|
192
|
+
async function resolveClaudeAcpCommand(config) {
|
|
193
|
+
const configured = firstNonEmptyString(config.agentCommand, config.acpAgentCommand);
|
|
194
|
+
if (configured)
|
|
195
|
+
return configured;
|
|
196
|
+
return ((await findAncestorBin(packageRootDir, "claude-agent-acp")) ??
|
|
197
|
+
(await findCommandOnPath("claude-agent-acp")) ??
|
|
198
|
+
path.join(packageRootDir, "node_modules", ".bin", "claude-agent-acp"));
|
|
199
|
+
}
|
|
200
|
+
function sandboxTargetHasProcessSessionBridge(target) {
|
|
201
|
+
return target?.kind === "remote" && target.transport === "sandbox" && Boolean(target.runner);
|
|
202
|
+
}
|
|
203
|
+
async function resolveClaudeAcpCommandForTarget(config, target) {
|
|
204
|
+
const configured = firstNonEmptyString(config.agentCommand, config.acpAgentCommand);
|
|
205
|
+
if (configured)
|
|
206
|
+
return configured;
|
|
207
|
+
if (target?.kind === "remote")
|
|
208
|
+
return "claude-agent-acp";
|
|
209
|
+
return resolveClaudeAcpCommand(config);
|
|
210
|
+
}
|
|
211
|
+
async function defaultClaudeAcpFallbackReason(input) {
|
|
212
|
+
const target = readAdapterExecutionTarget({
|
|
213
|
+
executionTarget: input.executionTarget,
|
|
214
|
+
legacyRemoteExecution: input.executionTransport?.remoteExecution,
|
|
215
|
+
});
|
|
216
|
+
if (target?.kind === "remote" && !sandboxTargetHasProcessSessionBridge(target)) {
|
|
217
|
+
if (target.transport === "sandbox") {
|
|
218
|
+
return "Claude ACP requires a bidirectional remote process target; this sandbox exposes only one-shot command execution.";
|
|
219
|
+
}
|
|
220
|
+
return "Claude ACP supports sandbox remote targets only; this run targets a non-sandbox remote environment.";
|
|
221
|
+
}
|
|
222
|
+
if (!nodeVersionMeetsClaudeAcpMinimum()) {
|
|
223
|
+
return `Node ${process.version} does not satisfy Claude ACP's Node >=${MIN_ACP_NODE_VERSION} prerequisite.`;
|
|
224
|
+
}
|
|
225
|
+
const command = await resolveClaudeAcpCommandForTarget(input.config, target);
|
|
226
|
+
if (!(await commandIsResolvable(command, input))) {
|
|
227
|
+
return `Claude ACP server command is not available: ${command}.`;
|
|
228
|
+
}
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
function summarizeStatus(checks) {
|
|
232
|
+
if (checks.some((check) => check.level === "error"))
|
|
233
|
+
return "fail";
|
|
234
|
+
if (checks.some((check) => check.level === "warn"))
|
|
235
|
+
return "warn";
|
|
236
|
+
return "pass";
|
|
237
|
+
}
|
|
238
|
+
function isNonEmpty(value) {
|
|
239
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
240
|
+
}
|
|
241
|
+
export async function testClaudeAcpEnvironment(ctx) {
|
|
242
|
+
const checks = [];
|
|
243
|
+
const config = parseObject(ctx.config);
|
|
244
|
+
const target = ctx.executionTarget ?? null;
|
|
245
|
+
const targetIsRemote = target?.kind === "remote";
|
|
246
|
+
checks.push({
|
|
247
|
+
code: "claude_engine_selected",
|
|
248
|
+
level: "info",
|
|
249
|
+
message: "Execution engine selected: ACP.",
|
|
250
|
+
hint: "Set engine=cli to use the existing Claude Code CLI lane.",
|
|
251
|
+
});
|
|
252
|
+
if (targetIsRemote) {
|
|
253
|
+
checks.push({
|
|
254
|
+
code: "claude_acp_remote_target",
|
|
255
|
+
level: "info",
|
|
256
|
+
message: "Claude ACP will run against the remote execution environment.",
|
|
257
|
+
hint: "Remote ACP requires a bidirectional process target such as SSH or Paperclip's sandbox process-session bridge.",
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
const cwd = asString(config.cwd, process.cwd());
|
|
261
|
+
try {
|
|
262
|
+
await fs.mkdir(cwd, { recursive: true });
|
|
263
|
+
checks.push({
|
|
264
|
+
code: "claude_acp_cwd_valid",
|
|
265
|
+
level: "info",
|
|
266
|
+
message: `Working directory is valid: ${cwd}`,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
checks.push({
|
|
271
|
+
code: "claude_acp_cwd_invalid",
|
|
272
|
+
level: "error",
|
|
273
|
+
message: err instanceof Error ? err.message : "Invalid working directory",
|
|
274
|
+
detail: cwd,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
checks.push({
|
|
278
|
+
code: nodeVersionMeetsClaudeAcpMinimum() ? "claude_acp_node_supported" : "claude_acp_node_unsupported",
|
|
279
|
+
level: nodeVersionMeetsClaudeAcpMinimum() ? "info" : "error",
|
|
280
|
+
message: nodeVersionMeetsClaudeAcpMinimum()
|
|
281
|
+
? `Node ${process.version} satisfies Claude ACP runtime requirements.`
|
|
282
|
+
: `Node ${process.version} does not satisfy Claude ACP runtime requirements.`,
|
|
283
|
+
hint: nodeVersionMeetsClaudeAcpMinimum()
|
|
284
|
+
? undefined
|
|
285
|
+
: `Run Claude ACP with Node >=${MIN_ACP_NODE_VERSION} or switch engine=cli.`,
|
|
286
|
+
});
|
|
287
|
+
const command = await resolveClaudeAcpCommandForTarget(config, target);
|
|
288
|
+
const commandResolvable = await commandIsResolvable(command, {
|
|
289
|
+
config,
|
|
290
|
+
executionTarget: ctx.executionTarget,
|
|
291
|
+
});
|
|
292
|
+
checks.push({
|
|
293
|
+
code: commandResolvable ? "claude_acp_command_resolvable" : "claude_acp_command_missing",
|
|
294
|
+
level: commandResolvable ? "info" : "error",
|
|
295
|
+
message: commandResolvable
|
|
296
|
+
? `Claude ACP server command is executable: ${command}`
|
|
297
|
+
: `Claude ACP server command is not available: ${command}`,
|
|
298
|
+
hint: commandResolvable
|
|
299
|
+
? undefined
|
|
300
|
+
: "Install dependencies so @agentclientprotocol/claude-agent-acp is present, or set agentCommand to a valid Claude ACP server command.",
|
|
301
|
+
});
|
|
302
|
+
const envConfig = parseObject(config.env);
|
|
303
|
+
const considerHostEnv = !targetIsRemote;
|
|
304
|
+
const hasBedrock = envConfig.CLAUDE_CODE_USE_BEDROCK === "1" ||
|
|
305
|
+
envConfig.CLAUDE_CODE_USE_BEDROCK === "true" ||
|
|
306
|
+
(considerHostEnv && process.env.CLAUDE_CODE_USE_BEDROCK === "1") ||
|
|
307
|
+
(considerHostEnv && process.env.CLAUDE_CODE_USE_BEDROCK === "true") ||
|
|
308
|
+
isNonEmpty(envConfig.ANTHROPIC_BEDROCK_BASE_URL) ||
|
|
309
|
+
(considerHostEnv && isNonEmpty(process.env.ANTHROPIC_BEDROCK_BASE_URL));
|
|
310
|
+
const configApiKey = envConfig.ANTHROPIC_API_KEY;
|
|
311
|
+
const hostApiKey = considerHostEnv ? process.env.ANTHROPIC_API_KEY : undefined;
|
|
312
|
+
if (hasBedrock) {
|
|
313
|
+
checks.push({
|
|
314
|
+
code: "claude_acp_bedrock_auth",
|
|
315
|
+
level: "info",
|
|
316
|
+
message: "AWS Bedrock auth detected. Claude ACP will use Bedrock for inference.",
|
|
317
|
+
hint: "Ensure AWS credentials and AWS_REGION are configured in this environment.",
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
else if (isNonEmpty(configApiKey) || isNonEmpty(hostApiKey)) {
|
|
321
|
+
const source = isNonEmpty(configApiKey) ? "adapter config env" : "server environment";
|
|
322
|
+
checks.push({
|
|
323
|
+
code: "claude_acp_anthropic_api_key_detected",
|
|
324
|
+
level: "warn",
|
|
325
|
+
message: "ANTHROPIC_API_KEY is set. Claude ACP will use API-key auth instead of subscription credentials.",
|
|
326
|
+
detail: `Detected in ${source}.`,
|
|
327
|
+
hint: "Unset ANTHROPIC_API_KEY if you want subscription-based Claude login behavior.",
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
else if (!targetIsRemote) {
|
|
331
|
+
checks.push({
|
|
332
|
+
code: "claude_acp_subscription_mode_possible",
|
|
333
|
+
level: "info",
|
|
334
|
+
message: "ANTHROPIC_API_KEY is not set; subscription-based auth can be used if Claude is logged in.",
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
const mode = firstNonEmptyString(config.mode, config.acpMode) ?? DEFAULT_ACP_ENGINE_MODE;
|
|
338
|
+
const warmHandleIdleMs = asNumber(config.warmHandleIdleMs ?? config.acpWarmHandleIdleMs, DEFAULT_ACP_ENGINE_WARM_HANDLE_IDLE_MS);
|
|
339
|
+
checks.push({
|
|
340
|
+
code: "claude_acp_runtime_scaffold",
|
|
341
|
+
level: "info",
|
|
342
|
+
message: "Claude ACP runtime execution is available through the shared ACP engine.",
|
|
343
|
+
detail: `mode=${mode}; warmHandleIdleMs=${warmHandleIdleMs}`,
|
|
344
|
+
});
|
|
345
|
+
return {
|
|
346
|
+
adapterType: ctx.adapterType,
|
|
347
|
+
status: summarizeStatus(checks),
|
|
348
|
+
checks,
|
|
349
|
+
testedAt: new Date().toISOString(),
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=acp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/server/acp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acp.test.d.ts","sourceRoot":"","sources":["../../src/server/acp.test.ts"],"names":[],"mappings":""}
|