@evermore.work/adapter-acpx-local 2026.509.0-canary.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 +2 -0
- package/dist/cli/format-event.d.ts.map +1 -0
- package/dist/cli/format-event.js +128 -0
- package/dist/cli/format-event.js.map +1 -0
- package/dist/cli/format-event.test.d.ts +2 -0
- package/dist/cli/format-event.test.d.ts.map +1 -0
- package/dist/cli/format-event.test.js +88 -0
- package/dist/cli/format-event.test.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.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 +73 -0
- package/dist/server/config-schema.js.map +1 -0
- package/dist/server/execute.d.ts +19 -0
- package/dist/server/execute.d.ts.map +1 -0
- package/dist/server/execute.js +1205 -0
- package/dist/server/execute.js.map +1 -0
- package/dist/server/execute.test.d.ts +2 -0
- package/dist/server/execute.test.d.ts.map +1 -0
- package/dist/server/execute.test.js +371 -0
- package/dist/server/execute.test.js.map +1 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +6 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/session-codec.d.ts +3 -0
- package/dist/server/session-codec.d.ts.map +1 -0
- package/dist/server/session-codec.js +48 -0
- package/dist/server/session-codec.js.map +1 -0
- package/dist/server/skills.d.ts +4 -0
- package/dist/server/skills.d.ts.map +1 -0
- package/dist/server/skills.js +86 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/test.d.ts +3 -0
- package/dist/server/test.d.ts.map +1 -0
- package/dist/server/test.js +267 -0
- package/dist/server/test.js.map +1 -0
- package/dist/server/test.test.d.ts +2 -0
- package/dist/server/test.test.d.ts.map +1 -0
- package/dist/server/test.test.js +38 -0
- package/dist/server/test.test.js.map +1 -0
- package/dist/ui/build-config.d.ts +3 -0
- package/dist/ui/build-config.d.ts.map +1 -0
- package/dist/ui/build-config.js +152 -0
- package/dist/ui/build-config.js.map +1 -0
- package/dist/ui/index.d.ts +3 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/parse-stdout.d.ts +3 -0
- package/dist/ui/parse-stdout.d.ts.map +1 -0
- package/dist/ui/parse-stdout.js +148 -0
- package/dist/ui/parse-stdout.js.map +1 -0
- package/dist/ui/parse-stdout.test.d.ts +2 -0
- package/dist/ui/parse-stdout.test.d.ts.map +1 -0
- package/dist/ui/parse-stdout.test.js +106 -0
- package/dist/ui/parse-stdout.test.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { readEvermoreRuntimeSkillEntries, resolveEvermoreDesiredSkillNames, } from "@evermore.work/adapter-utils/server-utils";
|
|
4
|
+
const __moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
function normalizeAcpxSkillAgent(config) {
|
|
6
|
+
const configured = typeof config.agent === "string" ? config.agent.trim() : "";
|
|
7
|
+
if (configured === "codex" || configured === "custom")
|
|
8
|
+
return configured;
|
|
9
|
+
if (configured === "claude" || configured === "")
|
|
10
|
+
return "claude";
|
|
11
|
+
return "claude";
|
|
12
|
+
}
|
|
13
|
+
function configuredDetail(agent) {
|
|
14
|
+
if (agent === "codex") {
|
|
15
|
+
return "Will be linked into the effective CODEX_HOME/skills/ directory for the next ACPX Codex session.";
|
|
16
|
+
}
|
|
17
|
+
return "Will be mounted into the next ACPX Claude session.";
|
|
18
|
+
}
|
|
19
|
+
function unsupportedDetail() {
|
|
20
|
+
return "Desired state is stored in Evermore only; custom ACP commands need an explicit skill integration contract before runtime sync is available.";
|
|
21
|
+
}
|
|
22
|
+
async function buildAcpxSkillSnapshot(config) {
|
|
23
|
+
const acpxAgent = normalizeAcpxSkillAgent(config);
|
|
24
|
+
const availableEntries = await readEvermoreRuntimeSkillEntries(config, __moduleDir);
|
|
25
|
+
const availableByKey = new Map(availableEntries.map((entry) => [entry.key, entry]));
|
|
26
|
+
const desiredSkills = resolveEvermoreDesiredSkillNames(config, availableEntries);
|
|
27
|
+
const desiredSet = new Set(desiredSkills);
|
|
28
|
+
const supported = acpxAgent !== "custom";
|
|
29
|
+
const warnings = supported
|
|
30
|
+
? []
|
|
31
|
+
: [
|
|
32
|
+
"Custom ACP commands do not expose a Evermore skill integration contract yet; selected skills are tracked only.",
|
|
33
|
+
];
|
|
34
|
+
const entries = availableEntries.map((entry) => {
|
|
35
|
+
const desired = desiredSet.has(entry.key);
|
|
36
|
+
return {
|
|
37
|
+
key: entry.key,
|
|
38
|
+
runtimeName: entry.runtimeName,
|
|
39
|
+
desired,
|
|
40
|
+
managed: true,
|
|
41
|
+
state: desired ? "configured" : "available",
|
|
42
|
+
origin: entry.required ? "evermore_required" : "company_managed",
|
|
43
|
+
originLabel: entry.required ? "Required by Evermore" : "Managed by Evermore",
|
|
44
|
+
readOnly: false,
|
|
45
|
+
sourcePath: entry.source,
|
|
46
|
+
targetPath: null,
|
|
47
|
+
detail: desired ? (supported ? configuredDetail(acpxAgent) : unsupportedDetail()) : null,
|
|
48
|
+
required: Boolean(entry.required),
|
|
49
|
+
requiredReason: entry.requiredReason ?? null,
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
for (const desiredSkill of desiredSkills) {
|
|
53
|
+
if (availableByKey.has(desiredSkill))
|
|
54
|
+
continue;
|
|
55
|
+
warnings.push(`Desired skill "${desiredSkill}" is not available from the Evermore skills directory.`);
|
|
56
|
+
entries.push({
|
|
57
|
+
key: desiredSkill,
|
|
58
|
+
runtimeName: null,
|
|
59
|
+
desired: true,
|
|
60
|
+
managed: true,
|
|
61
|
+
state: "missing",
|
|
62
|
+
origin: "external_unknown",
|
|
63
|
+
originLabel: "External or unavailable",
|
|
64
|
+
readOnly: false,
|
|
65
|
+
sourcePath: null,
|
|
66
|
+
targetPath: null,
|
|
67
|
+
detail: "Evermore cannot find this skill in the local runtime skills directory.",
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
entries.sort((left, right) => left.key.localeCompare(right.key));
|
|
71
|
+
return {
|
|
72
|
+
adapterType: "acpx_local",
|
|
73
|
+
supported,
|
|
74
|
+
mode: supported ? "ephemeral" : "unsupported",
|
|
75
|
+
desiredSkills,
|
|
76
|
+
entries,
|
|
77
|
+
warnings,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export async function listAcpxSkills(ctx) {
|
|
81
|
+
return buildAcpxSkillSnapshot(ctx.config);
|
|
82
|
+
}
|
|
83
|
+
export async function syncAcpxSkills(ctx, _desiredSkills) {
|
|
84
|
+
return buildAcpxSkillSnapshot(ctx.config);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/server/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,8BAA8B,CAAC;AAoNtC,wBAAsB,eAAe,CACnC,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,4BAA4B,CAAC,CAwEvC"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { asString, parseObject, } from "@evermore.work/adapter-utils/server-utils";
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const MIN_NODE_MAJOR = 22;
|
|
8
|
+
const MIN_NODE_MINOR = 12;
|
|
9
|
+
const MIN_NODE_PATCH = 0;
|
|
10
|
+
function summarizeStatus(checks) {
|
|
11
|
+
if (checks.some((check) => check.level === "error"))
|
|
12
|
+
return "fail";
|
|
13
|
+
if (checks.some((check) => check.level === "warn"))
|
|
14
|
+
return "warn";
|
|
15
|
+
return "pass";
|
|
16
|
+
}
|
|
17
|
+
function nodeVersionMeetsMinimum(version) {
|
|
18
|
+
const [major = 0, minor = 0, patch = 0] = version
|
|
19
|
+
.replace(/^v/, "")
|
|
20
|
+
.split(".")
|
|
21
|
+
.map((part) => Number.parseInt(part, 10));
|
|
22
|
+
if (major > MIN_NODE_MAJOR)
|
|
23
|
+
return true;
|
|
24
|
+
if (major < MIN_NODE_MAJOR)
|
|
25
|
+
return false;
|
|
26
|
+
if (minor > MIN_NODE_MINOR)
|
|
27
|
+
return true;
|
|
28
|
+
if (minor < MIN_NODE_MINOR)
|
|
29
|
+
return false;
|
|
30
|
+
return patch >= MIN_NODE_PATCH;
|
|
31
|
+
}
|
|
32
|
+
function isNonEmpty(value) {
|
|
33
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
34
|
+
}
|
|
35
|
+
function getStringEnv(configEnv, key) {
|
|
36
|
+
const configured = configEnv[key];
|
|
37
|
+
if (typeof configured === "string")
|
|
38
|
+
return configured;
|
|
39
|
+
return process.env[key];
|
|
40
|
+
}
|
|
41
|
+
function credentialSource(configEnv, key) {
|
|
42
|
+
return typeof configEnv[key] === "string" ? "adapter config env" : "server environment";
|
|
43
|
+
}
|
|
44
|
+
async function readJsonObject(filePath) {
|
|
45
|
+
try {
|
|
46
|
+
const parsed = JSON.parse(await fs.readFile(filePath, "utf8"));
|
|
47
|
+
return typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)
|
|
48
|
+
? parsed
|
|
49
|
+
: null;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function readNestedString(record, pathSegments) {
|
|
56
|
+
let current = record;
|
|
57
|
+
for (const segment of pathSegments) {
|
|
58
|
+
if (typeof current !== "object" || current === null || Array.isArray(current))
|
|
59
|
+
return null;
|
|
60
|
+
current = current[segment];
|
|
61
|
+
}
|
|
62
|
+
return isNonEmpty(current) ? current.trim() : null;
|
|
63
|
+
}
|
|
64
|
+
async function hasClaudeSubscriptionCredentials(configDir) {
|
|
65
|
+
for (const filename of [".credentials.json", "credentials.json"]) {
|
|
66
|
+
const credentials = await readJsonObject(path.join(configDir, filename));
|
|
67
|
+
if (!credentials)
|
|
68
|
+
continue;
|
|
69
|
+
if (readNestedString(credentials, ["claudeAiOauth", "accessToken"]))
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
async function hasCodexNativeCredentials(codexHome) {
|
|
75
|
+
const auth = await readJsonObject(path.join(codexHome, "auth.json"));
|
|
76
|
+
if (!auth)
|
|
77
|
+
return false;
|
|
78
|
+
return Boolean(readNestedString(auth, ["accessToken"]) ||
|
|
79
|
+
readNestedString(auth, ["tokens", "access_token"]) ||
|
|
80
|
+
readNestedString(auth, ["OPENAI_API_KEY"]));
|
|
81
|
+
}
|
|
82
|
+
async function buildCredentialHintChecks(agent, configEnv) {
|
|
83
|
+
if (agent === "claude") {
|
|
84
|
+
const bedrockFlag = getStringEnv(configEnv, "CLAUDE_CODE_USE_BEDROCK");
|
|
85
|
+
const bedrockBaseUrl = getStringEnv(configEnv, "ANTHROPIC_BEDROCK_BASE_URL");
|
|
86
|
+
const hasBedrock = bedrockFlag === "1" ||
|
|
87
|
+
/^true$/i.test(bedrockFlag ?? "") ||
|
|
88
|
+
isNonEmpty(bedrockBaseUrl);
|
|
89
|
+
const bedrockSourceKey = isNonEmpty(bedrockFlag)
|
|
90
|
+
? "CLAUDE_CODE_USE_BEDROCK"
|
|
91
|
+
: "ANTHROPIC_BEDROCK_BASE_URL";
|
|
92
|
+
const anthropicApiKey = getStringEnv(configEnv, "ANTHROPIC_API_KEY");
|
|
93
|
+
const claudeConfigDir = isNonEmpty(getStringEnv(configEnv, "CLAUDE_CONFIG_DIR"))
|
|
94
|
+
? path.resolve(getStringEnv(configEnv, "CLAUDE_CONFIG_DIR"))
|
|
95
|
+
: path.join(os.homedir(), ".claude");
|
|
96
|
+
if (hasBedrock) {
|
|
97
|
+
return [{
|
|
98
|
+
code: "acpx_claude_bedrock_auth_detected",
|
|
99
|
+
level: "info",
|
|
100
|
+
message: "Claude credential hint: Bedrock auth indicators are configured.",
|
|
101
|
+
detail: `Detected in ${credentialSource(configEnv, bedrockSourceKey)}.`,
|
|
102
|
+
hint: "Ensure AWS credentials and AWS_REGION are available to the ACPX-launched Claude agent.",
|
|
103
|
+
}];
|
|
104
|
+
}
|
|
105
|
+
if (isNonEmpty(anthropicApiKey)) {
|
|
106
|
+
return [{
|
|
107
|
+
code: "acpx_claude_anthropic_api_key_detected",
|
|
108
|
+
level: "info",
|
|
109
|
+
message: "Claude credential hint: ANTHROPIC_API_KEY is set.",
|
|
110
|
+
detail: `Detected in ${credentialSource(configEnv, "ANTHROPIC_API_KEY")}.`,
|
|
111
|
+
}];
|
|
112
|
+
}
|
|
113
|
+
if (await hasClaudeSubscriptionCredentials(claudeConfigDir)) {
|
|
114
|
+
return [{
|
|
115
|
+
code: "acpx_claude_subscription_auth_detected",
|
|
116
|
+
level: "info",
|
|
117
|
+
message: "Claude credential hint: local Claude subscription credentials were found.",
|
|
118
|
+
detail: `Credentials found in ${claudeConfigDir}.`,
|
|
119
|
+
}];
|
|
120
|
+
}
|
|
121
|
+
return [{
|
|
122
|
+
code: "acpx_claude_credentials_missing",
|
|
123
|
+
level: "info",
|
|
124
|
+
message: "Claude credential hint: no Claude API, Bedrock, or local subscription credentials were detected.",
|
|
125
|
+
hint: "Set ANTHROPIC_API_KEY, configure Bedrock, or run `claude login` before starting an ACPX Claude agent.",
|
|
126
|
+
}];
|
|
127
|
+
}
|
|
128
|
+
if (agent === "codex") {
|
|
129
|
+
const openAiApiKey = getStringEnv(configEnv, "OPENAI_API_KEY");
|
|
130
|
+
const codexHome = isNonEmpty(getStringEnv(configEnv, "CODEX_HOME"))
|
|
131
|
+
? path.resolve(getStringEnv(configEnv, "CODEX_HOME"))
|
|
132
|
+
: path.join(os.homedir(), ".codex");
|
|
133
|
+
if (isNonEmpty(openAiApiKey)) {
|
|
134
|
+
return [{
|
|
135
|
+
code: "acpx_codex_openai_api_key_detected",
|
|
136
|
+
level: "info",
|
|
137
|
+
message: "Codex credential hint: OPENAI_API_KEY is set.",
|
|
138
|
+
detail: `Detected in ${credentialSource(configEnv, "OPENAI_API_KEY")}.`,
|
|
139
|
+
}];
|
|
140
|
+
}
|
|
141
|
+
if (await hasCodexNativeCredentials(codexHome)) {
|
|
142
|
+
return [{
|
|
143
|
+
code: "acpx_codex_native_auth_detected",
|
|
144
|
+
level: "info",
|
|
145
|
+
message: "Codex credential hint: local Codex auth configuration was found.",
|
|
146
|
+
detail: `Credentials found in ${path.join(codexHome, "auth.json")}.`,
|
|
147
|
+
}];
|
|
148
|
+
}
|
|
149
|
+
return [{
|
|
150
|
+
code: "acpx_codex_credentials_missing",
|
|
151
|
+
level: "info",
|
|
152
|
+
message: "Codex credential hint: no OpenAI API key or local Codex auth configuration was detected.",
|
|
153
|
+
hint: "Set OPENAI_API_KEY or run `codex login` before starting an ACPX Codex agent.",
|
|
154
|
+
}];
|
|
155
|
+
}
|
|
156
|
+
return [];
|
|
157
|
+
}
|
|
158
|
+
function resolvePackage(name) {
|
|
159
|
+
try {
|
|
160
|
+
const resolved = require.resolve(`${name}/package.json`);
|
|
161
|
+
return {
|
|
162
|
+
code: `acpx_package_${name.replace(/[^a-z0-9]+/gi, "_").toLowerCase()}_present`,
|
|
163
|
+
level: "info",
|
|
164
|
+
message: `${name} is resolvable.`,
|
|
165
|
+
detail: resolved,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return {
|
|
170
|
+
code: `acpx_package_${name.replace(/[^a-z0-9]+/gi, "_").toLowerCase()}_missing`,
|
|
171
|
+
level: "error",
|
|
172
|
+
message: `${name} is not resolvable from the acpx_local adapter package.`,
|
|
173
|
+
hint: "Run pnpm install so the ACPX adapter dependencies are installed.",
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async function checkDirectory(pathValue, code, label) {
|
|
178
|
+
const dir = pathValue.trim();
|
|
179
|
+
if (!dir)
|
|
180
|
+
return null;
|
|
181
|
+
try {
|
|
182
|
+
await fs.mkdir(dir, { recursive: true });
|
|
183
|
+
await fs.access(dir);
|
|
184
|
+
return {
|
|
185
|
+
code,
|
|
186
|
+
level: "info",
|
|
187
|
+
message: `${label} is writable: ${dir}`,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
return {
|
|
192
|
+
code: `${code}_invalid`,
|
|
193
|
+
level: "error",
|
|
194
|
+
message: err instanceof Error ? err.message : `${label} is not writable.`,
|
|
195
|
+
detail: dir,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
export async function testEnvironment(ctx) {
|
|
200
|
+
const config = parseObject(ctx.config);
|
|
201
|
+
const envConfig = parseObject(config.env);
|
|
202
|
+
const configEnv = {};
|
|
203
|
+
for (const [key, value] of Object.entries(envConfig)) {
|
|
204
|
+
if (typeof value === "string")
|
|
205
|
+
configEnv[key] = value;
|
|
206
|
+
}
|
|
207
|
+
const checks = [];
|
|
208
|
+
const nodeVersion = process.version;
|
|
209
|
+
checks.push({
|
|
210
|
+
code: nodeVersionMeetsMinimum(nodeVersion) ? "acpx_node_supported" : "acpx_node_unsupported",
|
|
211
|
+
level: nodeVersionMeetsMinimum(nodeVersion) ? "info" : "error",
|
|
212
|
+
message: nodeVersionMeetsMinimum(nodeVersion)
|
|
213
|
+
? `Node ${nodeVersion} satisfies ACPX's >=22.12.0 requirement.`
|
|
214
|
+
: `Node ${nodeVersion} does not satisfy ACPX's >=22.12.0 requirement.`,
|
|
215
|
+
hint: nodeVersionMeetsMinimum(nodeVersion)
|
|
216
|
+
? undefined
|
|
217
|
+
: "Run acpx_local agents with Node >=22.12.0 or use claude_local/codex_local on Node 20.",
|
|
218
|
+
});
|
|
219
|
+
checks.push(resolvePackage("acpx"));
|
|
220
|
+
checks.push(resolvePackage("@agentclientprotocol/claude-agent-acp"));
|
|
221
|
+
checks.push(resolvePackage("@zed-industries/codex-acp"));
|
|
222
|
+
const agent = asString(config.agent, "claude");
|
|
223
|
+
if (!["claude", "codex", "custom"].includes(agent)) {
|
|
224
|
+
checks.push({
|
|
225
|
+
code: "acpx_agent_invalid",
|
|
226
|
+
level: "error",
|
|
227
|
+
message: `Unsupported ACP agent: ${agent}`,
|
|
228
|
+
hint: "Use agent=claude, agent=codex, or agent=custom.",
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
checks.push({
|
|
233
|
+
code: "acpx_agent_selected",
|
|
234
|
+
level: "info",
|
|
235
|
+
message: `ACP agent selected: ${agent}`,
|
|
236
|
+
});
|
|
237
|
+
checks.push(...await buildCredentialHintChecks(agent, configEnv));
|
|
238
|
+
}
|
|
239
|
+
if (agent === "custom" && !asString(config.agentCommand, "")) {
|
|
240
|
+
checks.push({
|
|
241
|
+
code: "acpx_custom_command_missing",
|
|
242
|
+
level: "error",
|
|
243
|
+
message: "agentCommand is required when agent=custom.",
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
const stateDirCheck = await checkDirectory(asString(config.stateDir, ""), "acpx_state_dir_writable", "ACPX state directory");
|
|
247
|
+
if (stateDirCheck)
|
|
248
|
+
checks.push(stateDirCheck);
|
|
249
|
+
const permissionMode = asString(config.permissionMode, "approve-all");
|
|
250
|
+
checks.push({
|
|
251
|
+
code: "acpx_permission_mode",
|
|
252
|
+
level: "info",
|
|
253
|
+
message: `Effective permission mode: ${permissionMode || "approve-all"}`,
|
|
254
|
+
});
|
|
255
|
+
checks.push({
|
|
256
|
+
code: "acpx_runtime_scaffold",
|
|
257
|
+
level: "info",
|
|
258
|
+
message: "acpx_local runtime execution is available through the bundled ACPX runtime.",
|
|
259
|
+
});
|
|
260
|
+
return {
|
|
261
|
+
adapterType: ctx.adapterType,
|
|
262
|
+
status: summarizeStatus(checks),
|
|
263
|
+
checks,
|
|
264
|
+
testedAt: new Date().toISOString(),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/server/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.test.d.ts","sourceRoot":"","sources":["../../src/server/test.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
2
|
+
import { testEnvironment } from "./test.js";
|
|
3
|
+
const originalNodeVersion = process.version;
|
|
4
|
+
function setNodeVersion(version) {
|
|
5
|
+
Object.defineProperty(process, "version", {
|
|
6
|
+
configurable: true,
|
|
7
|
+
enumerable: true,
|
|
8
|
+
value: version,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
setNodeVersion(originalNodeVersion);
|
|
13
|
+
});
|
|
14
|
+
describe("acpx_local environment diagnostics", () => {
|
|
15
|
+
it("does not force healthy default Claude diagnostics to warn", async () => {
|
|
16
|
+
setNodeVersion("v22.12.0");
|
|
17
|
+
const result = await testEnvironment({
|
|
18
|
+
adapterType: "acpx_local",
|
|
19
|
+
companyId: "test-company",
|
|
20
|
+
config: { agent: "claude" },
|
|
21
|
+
});
|
|
22
|
+
expect(result.status).toBe("pass");
|
|
23
|
+
expect(result.checks).toContainEqual(expect.objectContaining({
|
|
24
|
+
code: "acpx_agent_selected",
|
|
25
|
+
level: "info",
|
|
26
|
+
message: "ACP agent selected: claude",
|
|
27
|
+
}));
|
|
28
|
+
expect(result.checks).toContainEqual(expect.objectContaining({
|
|
29
|
+
code: "acpx_runtime_scaffold",
|
|
30
|
+
level: "info",
|
|
31
|
+
}));
|
|
32
|
+
expect(result.checks).not.toContainEqual(expect.objectContaining({
|
|
33
|
+
code: "acpx_runtime_scaffold",
|
|
34
|
+
level: "warn",
|
|
35
|
+
}));
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=test.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.test.js","sourceRoot":"","sources":["../../src/server/test.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;AAE5C,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE;QACxC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,KAAK,EAAE,OAAO;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,CAAC,GAAG,EAAE;IACb,cAAc,CAAC,mBAAmB,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,cAAc,CAAC,UAAU,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,WAAW,EAAE,YAAY;YACzB,SAAS,EAAE,cAAc;YACzB,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;SAC5B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;YACtB,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,4BAA4B;SACtC,CAAC,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAClC,MAAM,CAAC,gBAAgB,CAAC;YACtB,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE,MAAM;SACd,CAAC,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CACtC,MAAM,CAAC,gBAAgB,CAAC;YACtB,IAAI,EAAE,uBAAuB;YAC7B,KAAK,EAAE,MAAM;SACd,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/ui/build-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAiFvE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiEnF"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { DEFAULT_ACPX_LOCAL_AGENT, DEFAULT_ACPX_LOCAL_MODE, DEFAULT_ACPX_LOCAL_NON_INTERACTIVE_PERMISSIONS, DEFAULT_ACPX_LOCAL_PERMISSION_MODE, DEFAULT_ACPX_LOCAL_TIMEOUT_SEC, DEFAULT_ACPX_LOCAL_WARM_HANDLE_IDLE_MS, } from "../index.js";
|
|
2
|
+
function parseCommaArgs(value) {
|
|
3
|
+
return value
|
|
4
|
+
.split(",")
|
|
5
|
+
.map((item) => item.trim())
|
|
6
|
+
.filter(Boolean);
|
|
7
|
+
}
|
|
8
|
+
function parseEnvVars(text) {
|
|
9
|
+
const env = {};
|
|
10
|
+
for (const line of text.split(/\r?\n/)) {
|
|
11
|
+
const trimmed = line.trim();
|
|
12
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
13
|
+
continue;
|
|
14
|
+
const eq = trimmed.indexOf("=");
|
|
15
|
+
if (eq <= 0)
|
|
16
|
+
continue;
|
|
17
|
+
const key = trimmed.slice(0, eq).trim();
|
|
18
|
+
const value = trimmed.slice(eq + 1);
|
|
19
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
|
|
20
|
+
continue;
|
|
21
|
+
env[key] = value;
|
|
22
|
+
}
|
|
23
|
+
return env;
|
|
24
|
+
}
|
|
25
|
+
function parseEnvBindings(bindings) {
|
|
26
|
+
if (typeof bindings !== "object" || bindings === null || Array.isArray(bindings))
|
|
27
|
+
return {};
|
|
28
|
+
const env = {};
|
|
29
|
+
for (const [key, raw] of Object.entries(bindings)) {
|
|
30
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
|
|
31
|
+
continue;
|
|
32
|
+
if (typeof raw === "string") {
|
|
33
|
+
env[key] = { type: "plain", value: raw };
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw))
|
|
37
|
+
continue;
|
|
38
|
+
const rec = raw;
|
|
39
|
+
if (rec.type === "plain" && typeof rec.value === "string") {
|
|
40
|
+
env[key] = { type: "plain", value: rec.value };
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (rec.type === "secret_ref" && typeof rec.secretId === "string") {
|
|
44
|
+
env[key] = {
|
|
45
|
+
type: "secret_ref",
|
|
46
|
+
secretId: rec.secretId,
|
|
47
|
+
...(typeof rec.version === "number" || rec.version === "latest"
|
|
48
|
+
? { version: rec.version }
|
|
49
|
+
: {}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return env;
|
|
54
|
+
}
|
|
55
|
+
function parseJsonObject(text) {
|
|
56
|
+
const trimmed = text.trim();
|
|
57
|
+
if (!trimmed)
|
|
58
|
+
return null;
|
|
59
|
+
try {
|
|
60
|
+
const parsed = JSON.parse(trimmed);
|
|
61
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
62
|
+
return null;
|
|
63
|
+
return parsed;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function readNumber(value, fallback) {
|
|
70
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
71
|
+
return value;
|
|
72
|
+
if (typeof value === "string" && value.trim()) {
|
|
73
|
+
const parsed = Number(value);
|
|
74
|
+
if (Number.isFinite(parsed))
|
|
75
|
+
return parsed;
|
|
76
|
+
}
|
|
77
|
+
return fallback;
|
|
78
|
+
}
|
|
79
|
+
export function buildAcpxLocalConfig(v) {
|
|
80
|
+
const schemaValues = v.adapterSchemaValues ?? {};
|
|
81
|
+
const agent = String(schemaValues.agent || DEFAULT_ACPX_LOCAL_AGENT);
|
|
82
|
+
const ac = {
|
|
83
|
+
agent,
|
|
84
|
+
mode: schemaValues.mode || DEFAULT_ACPX_LOCAL_MODE,
|
|
85
|
+
permissionMode: schemaValues.permissionMode || DEFAULT_ACPX_LOCAL_PERMISSION_MODE,
|
|
86
|
+
nonInteractivePermissions: schemaValues.nonInteractivePermissions || DEFAULT_ACPX_LOCAL_NON_INTERACTIVE_PERMISSIONS,
|
|
87
|
+
timeoutSec: readNumber(schemaValues.timeoutSec, DEFAULT_ACPX_LOCAL_TIMEOUT_SEC),
|
|
88
|
+
warmHandleIdleMs: readNumber(schemaValues.warmHandleIdleMs, DEFAULT_ACPX_LOCAL_WARM_HANDLE_IDLE_MS),
|
|
89
|
+
};
|
|
90
|
+
for (const key of [
|
|
91
|
+
"agentCommand",
|
|
92
|
+
"cwd",
|
|
93
|
+
"stateDir",
|
|
94
|
+
"instructionsFilePath",
|
|
95
|
+
"promptTemplate",
|
|
96
|
+
"bootstrapPromptTemplate",
|
|
97
|
+
]) {
|
|
98
|
+
const value = schemaValues[key];
|
|
99
|
+
if (typeof value === "string" && value.trim())
|
|
100
|
+
ac[key] = value.trim();
|
|
101
|
+
}
|
|
102
|
+
if (!ac.cwd && v.cwd)
|
|
103
|
+
ac.cwd = v.cwd;
|
|
104
|
+
if (!ac.instructionsFilePath && v.instructionsFilePath)
|
|
105
|
+
ac.instructionsFilePath = v.instructionsFilePath;
|
|
106
|
+
if (!ac.promptTemplate && v.promptTemplate)
|
|
107
|
+
ac.promptTemplate = v.promptTemplate;
|
|
108
|
+
if (!ac.bootstrapPromptTemplate && v.bootstrapPrompt)
|
|
109
|
+
ac.bootstrapPromptTemplate = v.bootstrapPrompt;
|
|
110
|
+
if (v.model?.trim())
|
|
111
|
+
ac.model = v.model.trim();
|
|
112
|
+
if (v.thinkingEffort) {
|
|
113
|
+
ac[agent === "codex" ? "modelReasoningEffort" : "effort"] = v.thinkingEffort;
|
|
114
|
+
}
|
|
115
|
+
if (schemaValues.fastMode === true)
|
|
116
|
+
ac.fastMode = true;
|
|
117
|
+
const env = parseEnvBindings(v.envBindings);
|
|
118
|
+
const legacy = parseEnvVars(v.envVars);
|
|
119
|
+
for (const [key, value] of Object.entries(legacy)) {
|
|
120
|
+
if (!Object.prototype.hasOwnProperty.call(env, key)) {
|
|
121
|
+
env[key] = { type: "plain", value };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (typeof schemaValues.env === "string") {
|
|
125
|
+
const schemaEnv = parseJsonObject(schemaValues.env);
|
|
126
|
+
if (schemaEnv)
|
|
127
|
+
Object.assign(env, schemaEnv);
|
|
128
|
+
}
|
|
129
|
+
else if (typeof schemaValues.env === "object" && schemaValues.env !== null && !Array.isArray(schemaValues.env)) {
|
|
130
|
+
Object.assign(env, schemaValues.env);
|
|
131
|
+
}
|
|
132
|
+
if (Object.keys(env).length > 0)
|
|
133
|
+
ac.env = env;
|
|
134
|
+
if (v.workspaceStrategyType === "git_worktree") {
|
|
135
|
+
ac.workspaceStrategy = {
|
|
136
|
+
type: "git_worktree",
|
|
137
|
+
...(v.workspaceBaseRef ? { baseRef: v.workspaceBaseRef } : {}),
|
|
138
|
+
...(v.workspaceBranchTemplate ? { branchTemplate: v.workspaceBranchTemplate } : {}),
|
|
139
|
+
...(v.worktreeParentDir ? { worktreeParentDir: v.worktreeParentDir } : {}),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
const runtimeServices = parseJsonObject(v.runtimeServicesJson ?? "");
|
|
143
|
+
if (runtimeServices && Array.isArray(runtimeServices.services)) {
|
|
144
|
+
ac.workspaceRuntime = runtimeServices;
|
|
145
|
+
}
|
|
146
|
+
if (v.command)
|
|
147
|
+
ac.command = v.command;
|
|
148
|
+
if (v.extraArgs)
|
|
149
|
+
ac.extraArgs = parseCommaArgs(v.extraArgs);
|
|
150
|
+
return ac;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=build-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-config.js","sourceRoot":"","sources":["../../src/ui/build-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-stdout.d.ts","sourceRoot":"","sources":["../../src/ui/parse-stdout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAkDpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,EAAE,CA2G/E"}
|