@xenosystem/acp-agent 0.1.1
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/LICENSE +202 -0
- package/NOTICE +9 -0
- package/README.md +22 -0
- package/dist/acpAgentServer.d.ts +43 -0
- package/dist/acpAgentServer.d.ts.map +1 -0
- package/dist/acpAgentServer.js +450 -0
- package/dist/acpAgentServer.js.map +1 -0
- package/dist/adapters/adapterContractVersion.d.ts +24 -0
- package/dist/adapters/adapterContractVersion.d.ts.map +1 -0
- package/dist/adapters/adapterContractVersion.js +29 -0
- package/dist/adapters/adapterContractVersion.js.map +1 -0
- package/dist/adapters/adapterDiagnostics.d.ts +19 -0
- package/dist/adapters/adapterDiagnostics.d.ts.map +1 -0
- package/dist/adapters/adapterDiagnostics.js +18 -0
- package/dist/adapters/adapterDiagnostics.js.map +1 -0
- package/dist/adapters/adapterErrors.d.ts +19 -0
- package/dist/adapters/adapterErrors.d.ts.map +1 -0
- package/dist/adapters/adapterErrors.js +23 -0
- package/dist/adapters/adapterErrors.js.map +1 -0
- package/dist/adapters/adapterEventMapper.d.ts +22 -0
- package/dist/adapters/adapterEventMapper.d.ts.map +1 -0
- package/dist/adapters/adapterEventMapper.js +70 -0
- package/dist/adapters/adapterEventMapper.js.map +1 -0
- package/dist/adapters/adapterEventParser.d.ts +16 -0
- package/dist/adapters/adapterEventParser.d.ts.map +1 -0
- package/dist/adapters/adapterEventParser.js +95 -0
- package/dist/adapters/adapterEventParser.js.map +1 -0
- package/dist/adapters/adapterEventProtocol.d.ts +85 -0
- package/dist/adapters/adapterEventProtocol.d.ts.map +1 -0
- package/dist/adapters/adapterEventProtocol.js +74 -0
- package/dist/adapters/adapterEventProtocol.js.map +1 -0
- package/dist/adapters/adapterFailureTaxonomy.d.ts +19 -0
- package/dist/adapters/adapterFailureTaxonomy.d.ts.map +1 -0
- package/dist/adapters/adapterFailureTaxonomy.js +62 -0
- package/dist/adapters/adapterFailureTaxonomy.js.map +1 -0
- package/dist/adapters/adapterHarnessTypes.d.ts +103 -0
- package/dist/adapters/adapterHarnessTypes.d.ts.map +1 -0
- package/dist/adapters/adapterHarnessTypes.js +15 -0
- package/dist/adapters/adapterHarnessTypes.js.map +1 -0
- package/dist/adapters/adapterProcessHarness.d.ts +23 -0
- package/dist/adapters/adapterProcessHarness.d.ts.map +1 -0
- package/dist/adapters/adapterProcessHarness.js +235 -0
- package/dist/adapters/adapterProcessHarness.js.map +1 -0
- package/dist/adapters/providerContractTypes.d.ts +64 -0
- package/dist/adapters/providerContractTypes.d.ts.map +1 -0
- package/dist/adapters/providerContractTypes.js +79 -0
- package/dist/adapters/providerContractTypes.js.map +1 -0
- package/dist/adapters/testAdapterProvider.d.ts +19 -0
- package/dist/adapters/testAdapterProvider.d.ts.map +1 -0
- package/dist/adapters/testAdapterProvider.js +95 -0
- package/dist/adapters/testAdapterProvider.js.map +1 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1059 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/providerApprovalStore.d.ts +39 -0
- package/dist/config/providerApprovalStore.d.ts.map +1 -0
- package/dist/config/providerApprovalStore.js +87 -0
- package/dist/config/providerApprovalStore.js.map +1 -0
- package/dist/config/providerApprovalTypes.d.ts +30 -0
- package/dist/config/providerApprovalTypes.d.ts.map +1 -0
- package/dist/config/providerApprovalTypes.js +11 -0
- package/dist/config/providerApprovalTypes.js.map +1 -0
- package/dist/config/providerPolicyConfig.d.ts +31 -0
- package/dist/config/providerPolicyConfig.d.ts.map +1 -0
- package/dist/config/providerPolicyConfig.js +111 -0
- package/dist/config/providerPolicyConfig.js.map +1 -0
- package/dist/config/providerPolicyDiagnostics.d.ts +49 -0
- package/dist/config/providerPolicyDiagnostics.d.ts.map +1 -0
- package/dist/config/providerPolicyDiagnostics.js +76 -0
- package/dist/config/providerPolicyDiagnostics.js.map +1 -0
- package/dist/config/providerPolicyHash.d.ts +14 -0
- package/dist/config/providerPolicyHash.d.ts.map +1 -0
- package/dist/config/providerPolicyHash.js +65 -0
- package/dist/config/providerPolicyHash.js.map +1 -0
- package/dist/config/providerPolicySchema.d.ts +32 -0
- package/dist/config/providerPolicySchema.d.ts.map +1 -0
- package/dist/config/providerPolicySchema.js +130 -0
- package/dist/config/providerPolicySchema.js.map +1 -0
- package/dist/config/providerRunnability.d.ts +36 -0
- package/dist/config/providerRunnability.d.ts.map +1 -0
- package/dist/config/providerRunnability.js +72 -0
- package/dist/config/providerRunnability.js.map +1 -0
- package/dist/errors.d.ts +31 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +45 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/process/providerProcessAudit.d.ts +14 -0
- package/dist/process/providerProcessAudit.d.ts.map +1 -0
- package/dist/process/providerProcessAudit.js +27 -0
- package/dist/process/providerProcessAudit.js.map +1 -0
- package/dist/process/providerProcessDiagnostics.d.ts +30 -0
- package/dist/process/providerProcessDiagnostics.d.ts.map +1 -0
- package/dist/process/providerProcessDiagnostics.js +51 -0
- package/dist/process/providerProcessDiagnostics.js.map +1 -0
- package/dist/process/providerProcessEnvironment.d.ts +29 -0
- package/dist/process/providerProcessEnvironment.d.ts.map +1 -0
- package/dist/process/providerProcessEnvironment.js +37 -0
- package/dist/process/providerProcessEnvironment.js.map +1 -0
- package/dist/process/providerProcessErrors.d.ts +21 -0
- package/dist/process/providerProcessErrors.d.ts.map +1 -0
- package/dist/process/providerProcessErrors.js +25 -0
- package/dist/process/providerProcessErrors.js.map +1 -0
- package/dist/process/providerProcessOutput.d.ts +24 -0
- package/dist/process/providerProcessOutput.d.ts.map +1 -0
- package/dist/process/providerProcessOutput.js +52 -0
- package/dist/process/providerProcessOutput.js.map +1 -0
- package/dist/process/providerProcessSupervisor.d.ts +40 -0
- package/dist/process/providerProcessSupervisor.d.ts.map +1 -0
- package/dist/process/providerProcessSupervisor.js +305 -0
- package/dist/process/providerProcessSupervisor.js.map +1 -0
- package/dist/process/providerProcessTypes.d.ts +114 -0
- package/dist/process/providerProcessTypes.d.ts.map +1 -0
- package/dist/process/providerProcessTypes.js +30 -0
- package/dist/process/providerProcessTypes.js.map +1 -0
- package/dist/process/providerProcessValidation.d.ts +26 -0
- package/dist/process/providerProcessValidation.d.ts.map +1 -0
- package/dist/process/providerProcessValidation.js +112 -0
- package/dist/process/providerProcessValidation.js.map +1 -0
- package/dist/process/providerProcessWorkspace.d.ts +38 -0
- package/dist/process/providerProcessWorkspace.d.ts.map +1 -0
- package/dist/process/providerProcessWorkspace.js +86 -0
- package/dist/process/providerProcessWorkspace.js.map +1 -0
- package/dist/providers/claudeLocalProvider.d.ts +68 -0
- package/dist/providers/claudeLocalProvider.d.ts.map +1 -0
- package/dist/providers/claudeLocalProvider.js +217 -0
- package/dist/providers/claudeLocalProvider.js.map +1 -0
- package/dist/providers/claudeStreamJsonParser.d.ts +39 -0
- package/dist/providers/claudeStreamJsonParser.d.ts.map +1 -0
- package/dist/providers/claudeStreamJsonParser.js +180 -0
- package/dist/providers/claudeStreamJsonParser.js.map +1 -0
- package/dist/providers/codexExecJsonParser.d.ts +38 -0
- package/dist/providers/codexExecJsonParser.d.ts.map +1 -0
- package/dist/providers/codexExecJsonParser.js +245 -0
- package/dist/providers/codexExecJsonParser.js.map +1 -0
- package/dist/providers/codexLocalProvider.d.ts +46 -0
- package/dist/providers/codexLocalProvider.d.ts.map +1 -0
- package/dist/providers/codexLocalProvider.js +430 -0
- package/dist/providers/codexLocalProvider.js.map +1 -0
- package/dist/providers/codexModelCatalog.d.ts +13 -0
- package/dist/providers/codexModelCatalog.d.ts.map +1 -0
- package/dist/providers/codexModelCatalog.js +133 -0
- package/dist/providers/codexModelCatalog.js.map +1 -0
- package/dist/providers/fixtureProvider.d.ts +14 -0
- package/dist/providers/fixtureProvider.d.ts.map +1 -0
- package/dist/providers/fixtureProvider.js +160 -0
- package/dist/providers/fixtureProvider.js.map +1 -0
- package/dist/providers/providerDiscovery.d.ts +24 -0
- package/dist/providers/providerDiscovery.d.ts.map +1 -0
- package/dist/providers/providerDiscovery.js +128 -0
- package/dist/providers/providerDiscovery.js.map +1 -0
- package/dist/providers/providerErrors.d.ts +64 -0
- package/dist/providers/providerErrors.d.ts.map +1 -0
- package/dist/providers/providerErrors.js +101 -0
- package/dist/providers/providerErrors.js.map +1 -0
- package/dist/providers/providerEvents.d.ts +63 -0
- package/dist/providers/providerEvents.d.ts.map +1 -0
- package/dist/providers/providerEvents.js +86 -0
- package/dist/providers/providerEvents.js.map +1 -0
- package/dist/providers/providerRegistry.d.ts +31 -0
- package/dist/providers/providerRegistry.d.ts.map +1 -0
- package/dist/providers/providerRegistry.js +234 -0
- package/dist/providers/providerRegistry.js.map +1 -0
- package/dist/providers/providerSafety.d.ts +17 -0
- package/dist/providers/providerSafety.d.ts.map +1 -0
- package/dist/providers/providerSafety.js +36 -0
- package/dist/providers/providerSafety.js.map +1 -0
- package/dist/providers/providerTypes.d.ts +212 -0
- package/dist/providers/providerTypes.d.ts.map +1 -0
- package/dist/providers/providerTypes.js +15 -0
- package/dist/providers/providerTypes.js.map +1 -0
- package/dist/providers/xenoLocalProvider.d.ts +35 -0
- package/dist/providers/xenoLocalProvider.d.ts.map +1 -0
- package/dist/providers/xenoLocalProvider.js +159 -0
- package/dist/providers/xenoLocalProvider.js.map +1 -0
- package/dist/sandbox/providerSandbox.d.ts +35 -0
- package/dist/sandbox/providerSandbox.d.ts.map +1 -0
- package/dist/sandbox/providerSandbox.js +93 -0
- package/dist/sandbox/providerSandbox.js.map +1 -0
- package/dist/sandbox/providerSandboxAudit.d.ts +12 -0
- package/dist/sandbox/providerSandboxAudit.d.ts.map +1 -0
- package/dist/sandbox/providerSandboxAudit.js +25 -0
- package/dist/sandbox/providerSandboxAudit.js.map +1 -0
- package/dist/sandbox/providerSandboxDiagnostics.d.ts +13 -0
- package/dist/sandbox/providerSandboxDiagnostics.d.ts.map +1 -0
- package/dist/sandbox/providerSandboxDiagnostics.js +28 -0
- package/dist/sandbox/providerSandboxDiagnostics.js.map +1 -0
- package/dist/sandbox/providerSandboxTypes.d.ts +138 -0
- package/dist/sandbox/providerSandboxTypes.d.ts.map +1 -0
- package/dist/sandbox/providerSandboxTypes.js +17 -0
- package/dist/sandbox/providerSandboxTypes.js.map +1 -0
- package/dist/sandbox/sandboxCancellation.d.ts +6 -0
- package/dist/sandbox/sandboxCancellation.d.ts.map +1 -0
- package/dist/sandbox/sandboxCancellation.js +24 -0
- package/dist/sandbox/sandboxCancellation.js.map +1 -0
- package/dist/sandbox/sandboxErrors.d.ts +17 -0
- package/dist/sandbox/sandboxErrors.d.ts.map +1 -0
- package/dist/sandbox/sandboxErrors.js +21 -0
- package/dist/sandbox/sandboxErrors.js.map +1 -0
- package/dist/sandbox/sandboxFilesystem.d.ts +14 -0
- package/dist/sandbox/sandboxFilesystem.d.ts.map +1 -0
- package/dist/sandbox/sandboxFilesystem.js +51 -0
- package/dist/sandbox/sandboxFilesystem.js.map +1 -0
- package/dist/sandbox/sandboxNetwork.d.ts +14 -0
- package/dist/sandbox/sandboxNetwork.d.ts.map +1 -0
- package/dist/sandbox/sandboxNetwork.js +60 -0
- package/dist/sandbox/sandboxNetwork.js.map +1 -0
- package/dist/sandbox/sandboxSecrets.d.ts +17 -0
- package/dist/sandbox/sandboxSecrets.d.ts.map +1 -0
- package/dist/sandbox/sandboxSecrets.js +61 -0
- package/dist/sandbox/sandboxSecrets.js.map +1 -0
- package/dist/sandbox/sandboxTerminal.d.ts +14 -0
- package/dist/sandbox/sandboxTerminal.d.ts.map +1 -0
- package/dist/sandbox/sandboxTerminal.js +32 -0
- package/dist/sandbox/sandboxTerminal.js.map +1 -0
- package/dist/security/authPolicy.d.ts +31 -0
- package/dist/security/authPolicy.d.ts.map +1 -0
- package/dist/security/authPolicy.js +72 -0
- package/dist/security/authPolicy.js.map +1 -0
- package/dist/security/capabilityGate.d.ts +16 -0
- package/dist/security/capabilityGate.d.ts.map +1 -0
- package/dist/security/capabilityGate.js +101 -0
- package/dist/security/capabilityGate.js.map +1 -0
- package/dist/security/egressPolicy.d.ts +31 -0
- package/dist/security/egressPolicy.d.ts.map +1 -0
- package/dist/security/egressPolicy.js +120 -0
- package/dist/security/egressPolicy.js.map +1 -0
- package/dist/security/redaction.d.ts +16 -0
- package/dist/security/redaction.d.ts.map +1 -0
- package/dist/security/redaction.js +65 -0
- package/dist/security/redaction.js.map +1 -0
- package/dist/security/secretBinding.d.ts +34 -0
- package/dist/security/secretBinding.d.ts.map +1 -0
- package/dist/security/secretBinding.js +66 -0
- package/dist/security/secretBinding.js.map +1 -0
- package/dist/security/secretStore.d.ts +37 -0
- package/dist/security/secretStore.d.ts.map +1 -0
- package/dist/security/secretStore.js +55 -0
- package/dist/security/secretStore.js.map +1 -0
- package/dist/security/securityDiagnostics.d.ts +39 -0
- package/dist/security/securityDiagnostics.d.ts.map +1 -0
- package/dist/security/securityDiagnostics.js +36 -0
- package/dist/security/securityDiagnostics.js.map +1 -0
- package/dist/security/securityTypes.d.ts +77 -0
- package/dist/security/securityTypes.d.ts.map +1 -0
- package/dist/security/securityTypes.js +17 -0
- package/dist/security/securityTypes.js.map +1 -0
- package/dist/sessionStore.d.ts +33 -0
- package/dist/sessionStore.d.ts.map +1 -0
- package/dist/sessionStore.js +42 -0
- package/dist/sessionStore.js.map +1 -0
- package/dist/stdioJsonRpc.d.ts +43 -0
- package/dist/stdioJsonRpc.d.ts.map +1 -0
- package/dist/stdioJsonRpc.js +219 -0
- package/dist/stdioJsonRpc.js.map +1 -0
- package/dist/types.d.ts +78 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic hashing of the SAFETY-RELEVANT fields of a provider definition and a provider
|
|
3
|
+
* policy. Used to tie an approval to an exact (definition, policy) pair so that any change
|
|
4
|
+
* makes the approval stale.
|
|
5
|
+
*
|
|
6
|
+
* Includes: ids, trust class, auth requirement, secret reference ids/kinds (NEVER values),
|
|
7
|
+
* egress mode/allowed+blocked hosts/flags, I/O authority, implementation status.
|
|
8
|
+
* Excludes: secret values (not represented at all), timestamps, display-only notes.
|
|
9
|
+
*/
|
|
10
|
+
import { createHash } from "node:crypto";
|
|
11
|
+
/** Stable, sorted-key serialization. */
|
|
12
|
+
function canonical(value) {
|
|
13
|
+
if (value === null || typeof value !== "object")
|
|
14
|
+
return JSON.stringify(value);
|
|
15
|
+
if (Array.isArray(value))
|
|
16
|
+
return "[" + value.map(canonical).join(",") + "]";
|
|
17
|
+
const keys = Object.keys(value).sort();
|
|
18
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + canonical(value[k])).join(",") + "}";
|
|
19
|
+
}
|
|
20
|
+
function sha256(obj) {
|
|
21
|
+
return createHash("sha256").update(canonical(obj)).digest("hex");
|
|
22
|
+
}
|
|
23
|
+
export function hashProviderDefinition(def) {
|
|
24
|
+
return sha256({
|
|
25
|
+
id: def.id,
|
|
26
|
+
trustClass: def.trustClass,
|
|
27
|
+
authRequirement: def.authRequirement,
|
|
28
|
+
networkRequirement: def.networkRequirement,
|
|
29
|
+
ioAuthority: def.ioAuthority,
|
|
30
|
+
capabilities: {
|
|
31
|
+
requiresAuth: def.capabilities.requiresAuth,
|
|
32
|
+
usesNetwork: def.capabilities.usesNetwork,
|
|
33
|
+
canReadFiles: def.capabilities.canReadFiles,
|
|
34
|
+
canWriteFiles: def.capabilities.canWriteFiles,
|
|
35
|
+
canRunTerminal: def.capabilities.canRunTerminal,
|
|
36
|
+
},
|
|
37
|
+
enabled: def.enabled,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function hashProviderPolicy(entry) {
|
|
41
|
+
return sha256({
|
|
42
|
+
trustClass: entry.trustClass,
|
|
43
|
+
auth: {
|
|
44
|
+
requirement: entry.auth.requirement,
|
|
45
|
+
// Secret REFERENCES only — ids/kinds/required, never values.
|
|
46
|
+
secretRefs: (entry.auth.allowedSecretRefs ?? []).map((r) => ({ id: r.id, kind: r.kind, required: r.required })),
|
|
47
|
+
allowPlainEnv: entry.auth.allowPlainEnv,
|
|
48
|
+
allowProcessEnv: entry.auth.allowProcessEnv,
|
|
49
|
+
allowCredentialFiles: entry.auth.allowCredentialFiles,
|
|
50
|
+
allowInteractiveLogin: entry.auth.allowInteractiveLogin,
|
|
51
|
+
},
|
|
52
|
+
egress: {
|
|
53
|
+
mode: entry.egress.mode,
|
|
54
|
+
allowedHosts: [...entry.egress.allowedHosts].sort(),
|
|
55
|
+
blockedHosts: [...entry.egress.blockedHosts].sort(),
|
|
56
|
+
allowLocalhost: entry.egress.allowLocalhost,
|
|
57
|
+
allowPrivateNetwork: entry.egress.allowPrivateNetwork,
|
|
58
|
+
allowHttp: entry.egress.allowHttp,
|
|
59
|
+
allowHttps: entry.egress.allowHttps,
|
|
60
|
+
maxRedirects: entry.egress.maxRedirects,
|
|
61
|
+
},
|
|
62
|
+
io: entry.io,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=providerPolicyHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerPolicyHash.js","sourceRoot":"","sources":["../../src/config/providerPolicyHash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider policy config schema + strict validation (XACP-007).
|
|
3
|
+
*
|
|
4
|
+
* A provider policy config declares POLICY METADATA for providers (auth secret *references*,
|
|
5
|
+
* egress allowlists, I/O posture, trust class). It must NEVER contain secret values, and it
|
|
6
|
+
* cannot make an unimplemented provider runnable. Validation is strict and produces safe
|
|
7
|
+
* diagnostics (no throw, no secret echo).
|
|
8
|
+
*/
|
|
9
|
+
import type { ProviderAuthPolicy, ProviderEgressPolicy } from "../security/securityTypes.js";
|
|
10
|
+
import type { IoAuthorityLevel, TrustClass } from "../providers/providerTypes.js";
|
|
11
|
+
export interface ProviderPolicyEntry {
|
|
12
|
+
/** Operator intent only — does NOT grant runtime (implementation status comes from the def). */
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
trustClass: TrustClass;
|
|
15
|
+
auth: ProviderAuthPolicy;
|
|
16
|
+
egress: ProviderEgressPolicy;
|
|
17
|
+
io: {
|
|
18
|
+
filesystem: IoAuthorityLevel;
|
|
19
|
+
terminal: IoAuthorityLevel;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface ProviderPolicyConfig {
|
|
23
|
+
version: 1;
|
|
24
|
+
providers: Record<string, ProviderPolicyEntry>;
|
|
25
|
+
}
|
|
26
|
+
export interface PolicyValidationResult {
|
|
27
|
+
ok: boolean;
|
|
28
|
+
config?: ProviderPolicyConfig;
|
|
29
|
+
errors: string[];
|
|
30
|
+
}
|
|
31
|
+
export declare function validateProviderPolicyConfig(raw: unknown): PolicyValidationResult;
|
|
32
|
+
//# sourceMappingURL=providerPolicySchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerPolicySchema.d.ts","sourceRoot":"","sources":["../../src/config/providerPolicySchema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAElF,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,EAAE,EAAE;QAAE,UAAU,EAAE,gBAAgB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAClE;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAsBD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAwCjF"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider policy config schema + strict validation (XACP-007).
|
|
3
|
+
*
|
|
4
|
+
* A provider policy config declares POLICY METADATA for providers (auth secret *references*,
|
|
5
|
+
* egress allowlists, I/O posture, trust class). It must NEVER contain secret values, and it
|
|
6
|
+
* cannot make an unimplemented provider runnable. Validation is strict and produces safe
|
|
7
|
+
* diagnostics (no throw, no secret echo).
|
|
8
|
+
*/
|
|
9
|
+
import { looksSecretLike } from "../security/redaction.js";
|
|
10
|
+
const TRUST = ["xeno-owned", "third-party", "unknown"];
|
|
11
|
+
const REQ = ["none", "optional", "required"];
|
|
12
|
+
const IO = ["none", "workspace-scoped", "unknown"];
|
|
13
|
+
const SECRET_KINDS = ["env", "file", "keychain", "manual"];
|
|
14
|
+
/** Recursively flag any string value that looks like a hardcoded secret. */
|
|
15
|
+
function findSecretValues(value, path, out) {
|
|
16
|
+
if (typeof value === "string") {
|
|
17
|
+
if (looksSecretLike(value))
|
|
18
|
+
out.push(`${path} appears to contain a secret value (not allowed in policy config)`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(value)) {
|
|
22
|
+
value.forEach((v, i) => findSecretValues(v, `${path}[${i}]`, out));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (value && typeof value === "object") {
|
|
26
|
+
for (const [k, v] of Object.entries(value))
|
|
27
|
+
findSecretValues(v, `${path}.${k}`, out);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function validateProviderPolicyConfig(raw) {
|
|
31
|
+
const errors = [];
|
|
32
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
33
|
+
return { ok: false, errors: ["config root must be an object"] };
|
|
34
|
+
}
|
|
35
|
+
const obj = raw;
|
|
36
|
+
if (obj.version !== 1)
|
|
37
|
+
errors.push("config.version must be 1");
|
|
38
|
+
if (!obj.providers || typeof obj.providers !== "object" || Array.isArray(obj.providers)) {
|
|
39
|
+
return { ok: false, errors: [...errors, "config.providers must be an object"] };
|
|
40
|
+
}
|
|
41
|
+
// Hard rule: no secret values anywhere in the config.
|
|
42
|
+
findSecretValues(obj.providers, "providers", errors);
|
|
43
|
+
const providers = {};
|
|
44
|
+
for (const [id, entryRaw] of Object.entries(obj.providers)) {
|
|
45
|
+
const e = entryRaw;
|
|
46
|
+
const where = `providers.${id}`;
|
|
47
|
+
if (!e || typeof e !== "object") {
|
|
48
|
+
errors.push(`${where} must be an object`);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (typeof e.enabled !== "boolean")
|
|
52
|
+
errors.push(`${where}.enabled must be a boolean`);
|
|
53
|
+
if (!TRUST.includes(e.trustClass))
|
|
54
|
+
errors.push(`${where}.trustClass is invalid`);
|
|
55
|
+
validateAuth(e.auth, `${where}.auth`, errors);
|
|
56
|
+
validateEgress(e.egress, `${where}.egress`, errors);
|
|
57
|
+
validateIo(e.io, `${where}.io`, errors);
|
|
58
|
+
if (errors.length === 0 || true) {
|
|
59
|
+
providers[id] = {
|
|
60
|
+
enabled: Boolean(e.enabled),
|
|
61
|
+
trustClass: e.trustClass,
|
|
62
|
+
auth: e.auth,
|
|
63
|
+
egress: e.egress,
|
|
64
|
+
io: e.io,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (errors.length)
|
|
69
|
+
return { ok: false, errors };
|
|
70
|
+
return { ok: true, config: { version: 1, providers }, errors: [] };
|
|
71
|
+
}
|
|
72
|
+
function validateAuth(auth, where, errors) {
|
|
73
|
+
if (!auth || typeof auth !== "object") {
|
|
74
|
+
errors.push(`${where} must be an object`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const a = auth;
|
|
78
|
+
if (!REQ.includes(a.requirement))
|
|
79
|
+
errors.push(`${where}.requirement is invalid`);
|
|
80
|
+
for (const flag of ["allowPlainEnv", "allowProcessEnv", "allowCredentialFiles", "allowInteractiveLogin"]) {
|
|
81
|
+
if (typeof a[flag] !== "boolean")
|
|
82
|
+
errors.push(`${where}.${flag} must be a boolean`);
|
|
83
|
+
}
|
|
84
|
+
if (!Array.isArray(a.allowedSecretRefs)) {
|
|
85
|
+
errors.push(`${where}.allowedSecretRefs must be an array`);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
a.allowedSecretRefs.forEach((r, i) => {
|
|
89
|
+
const ref = r;
|
|
90
|
+
if (!ref || typeof ref.id !== "string" || !ref.id)
|
|
91
|
+
errors.push(`${where}.allowedSecretRefs[${i}].id is invalid`);
|
|
92
|
+
if (!SECRET_KINDS.includes(ref?.kind))
|
|
93
|
+
errors.push(`${where}.allowedSecretRefs[${i}].kind is invalid`);
|
|
94
|
+
if (typeof ref?.label !== "string" || !ref.label)
|
|
95
|
+
errors.push(`${where}.allowedSecretRefs[${i}].label is invalid`);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function validateEgress(egress, where, errors) {
|
|
100
|
+
if (!egress || typeof egress !== "object") {
|
|
101
|
+
errors.push(`${where} must be an object`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const g = egress;
|
|
105
|
+
if (!["none", "allowlist", "blocked"].includes(g.mode))
|
|
106
|
+
errors.push(`${where}.mode is invalid`);
|
|
107
|
+
for (const arr of ["allowedHosts", "blockedHosts"]) {
|
|
108
|
+
if (!Array.isArray(g[arr]) || g[arr].some((h) => typeof h !== "string")) {
|
|
109
|
+
errors.push(`${where}.${arr} must be an array of strings`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
for (const flag of ["allowLocalhost", "allowPrivateNetwork", "allowHttp", "allowHttps"]) {
|
|
113
|
+
if (typeof g[flag] !== "boolean")
|
|
114
|
+
errors.push(`${where}.${flag} must be a boolean`);
|
|
115
|
+
}
|
|
116
|
+
if (typeof g.maxRedirects !== "number")
|
|
117
|
+
errors.push(`${where}.maxRedirects must be a number`);
|
|
118
|
+
}
|
|
119
|
+
function validateIo(io, where, errors) {
|
|
120
|
+
if (!io || typeof io !== "object") {
|
|
121
|
+
errors.push(`${where} must be an object`);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const i = io;
|
|
125
|
+
if (!IO.includes(i.filesystem))
|
|
126
|
+
errors.push(`${where}.filesystem is invalid`);
|
|
127
|
+
if (!IO.includes(i.terminal))
|
|
128
|
+
errors.push(`${where}.terminal is invalid`);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=providerPolicySchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerPolicySchema.js","sourceRoot":"","sources":["../../src/config/providerPolicySchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a provider's runnability from (definition + policy config + approval record).
|
|
3
|
+
*
|
|
4
|
+
* Fail-closed. A provider is runnable ONLY if it is implemented AND the capability gate is
|
|
5
|
+
* `allowed` (possibly via a *current* approval for a `requires_approval` policy). An approval
|
|
6
|
+
* can never make an unimplemented provider runnable; a stale approval never grants runnability.
|
|
7
|
+
*/
|
|
8
|
+
import { type ProviderApprovalRecord } from "./providerApprovalTypes.js";
|
|
9
|
+
import type { ProviderPolicyEntry } from "./providerPolicySchema.js";
|
|
10
|
+
import type { ProviderDefinition } from "../providers/providerTypes.js";
|
|
11
|
+
import type { ProviderCapabilityGate } from "../security/securityTypes.js";
|
|
12
|
+
export type RunnabilityStatus = "allowed" | "requires_approval" | "approved_but_not_implemented" | "stale_approval" | "blocked_policy_invalid" | "blocked_no_policy" | "blocked_not_implemented" | "blocked_unknown_trust" | "blocked_io_authority";
|
|
13
|
+
export interface RunnabilityInput {
|
|
14
|
+
policyEntry?: ProviderPolicyEntry;
|
|
15
|
+
approval?: ProviderApprovalRecord;
|
|
16
|
+
policyInvalid?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface RunnabilityResult {
|
|
19
|
+
providerId: string;
|
|
20
|
+
status: RunnabilityStatus;
|
|
21
|
+
runnable: boolean;
|
|
22
|
+
reason: string;
|
|
23
|
+
safeMessage: string;
|
|
24
|
+
defHash: string;
|
|
25
|
+
policyHash?: string;
|
|
26
|
+
gate: ProviderCapabilityGate;
|
|
27
|
+
}
|
|
28
|
+
export declare function resolveProviderStatus(def: ProviderDefinition, input?: RunnabilityInput): RunnabilityResult;
|
|
29
|
+
/** The approval decisions to record for a provider under its current policy. */
|
|
30
|
+
export declare function approvalDecisionsFor(gate: ProviderCapabilityGate): {
|
|
31
|
+
auth: "approved" | "not_applicable";
|
|
32
|
+
egress: "approved" | "not_applicable";
|
|
33
|
+
io: "approved" | "not_applicable";
|
|
34
|
+
runtime: "approved" | "not_applicable";
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=providerRunnability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerRunnability.d.ts","sourceRoot":"","sources":["../../src/config/providerRunnability.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,mBAAmB,GACnB,8BAA8B,GAC9B,gBAAgB,GAChB,wBAAwB,GACxB,mBAAmB,GACnB,yBAAyB,GACzB,uBAAuB,GACvB,sBAAsB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,sBAAsB,CAAC;CAC9B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,GAAE,gBAAqB,GAAG,iBAAiB,CAkD9G;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,GAAG;IAClE,IAAI,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACpC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAAC;IACtC,EAAE,EAAE,UAAU,GAAG,gBAAgB,CAAC;IAClC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAAC;CACxC,CAQA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a provider's runnability from (definition + policy config + approval record).
|
|
3
|
+
*
|
|
4
|
+
* Fail-closed. A provider is runnable ONLY if it is implemented AND the capability gate is
|
|
5
|
+
* `allowed` (possibly via a *current* approval for a `requires_approval` policy). An approval
|
|
6
|
+
* can never make an unimplemented provider runnable; a stale approval never grants runnability.
|
|
7
|
+
*/
|
|
8
|
+
import { evaluateProviderSafety } from "../security/capabilityGate.js";
|
|
9
|
+
import { applyPolicyToDefinition } from "./providerPolicyConfig.js";
|
|
10
|
+
import { hashProviderDefinition, hashProviderPolicy } from "./providerPolicyHash.js";
|
|
11
|
+
import { isApprovalCurrent } from "./providerApprovalTypes.js";
|
|
12
|
+
export function resolveProviderStatus(def, input = {}) {
|
|
13
|
+
const merged = input.policyEntry ? applyPolicyToDefinition(def, input.policyEntry) : def;
|
|
14
|
+
const gate = evaluateProviderSafety(merged);
|
|
15
|
+
const defHash = hashProviderDefinition(merged);
|
|
16
|
+
const policyHash = input.policyEntry ? hashProviderPolicy(input.policyEntry) : undefined;
|
|
17
|
+
const out = (status, runnable, reason, safeMessage) => ({
|
|
18
|
+
providerId: def.id,
|
|
19
|
+
status,
|
|
20
|
+
runnable,
|
|
21
|
+
reason,
|
|
22
|
+
safeMessage,
|
|
23
|
+
defHash,
|
|
24
|
+
...(policyHash ? { policyHash } : {}),
|
|
25
|
+
gate,
|
|
26
|
+
});
|
|
27
|
+
if (input.policyInvalid) {
|
|
28
|
+
return out("blocked_policy_invalid", false, "policy.invalid", `provider '${def.id}' has an invalid policy`);
|
|
29
|
+
}
|
|
30
|
+
// Implementation status (from the definition; config can never grant it).
|
|
31
|
+
if (!def.enabled) {
|
|
32
|
+
if (input.approval && policyHash && isApprovalCurrent(input.approval, defHash, policyHash)) {
|
|
33
|
+
return out("approved_but_not_implemented", false, "approved.not_implemented", `provider '${def.id}' is approved but not implemented (not runnable)`);
|
|
34
|
+
}
|
|
35
|
+
return out("blocked_not_implemented", false, "not_implemented", `provider '${def.id}' is not implemented`);
|
|
36
|
+
}
|
|
37
|
+
switch (gate.overallDecision.status) {
|
|
38
|
+
case "allowed":
|
|
39
|
+
return out("allowed", true, "approved", `provider '${def.id}' is allowed`);
|
|
40
|
+
case "requires_approval": {
|
|
41
|
+
if (!input.approval) {
|
|
42
|
+
return out("requires_approval", false, "requires_approval", `provider '${def.id}' requires explicit approval`);
|
|
43
|
+
}
|
|
44
|
+
if (!policyHash || !isApprovalCurrent(input.approval, defHash, policyHash)) {
|
|
45
|
+
return out("stale_approval", false, "stale_approval", `provider '${def.id}' approval is stale (definition/policy changed)`);
|
|
46
|
+
}
|
|
47
|
+
return out("allowed", true, "approved_via_approval", `provider '${def.id}' is allowed (current approval)`);
|
|
48
|
+
}
|
|
49
|
+
case "blocked":
|
|
50
|
+
default: {
|
|
51
|
+
const rc = gate.overallDecision.reasonCode;
|
|
52
|
+
if (rc === "unknown_trust")
|
|
53
|
+
return out("blocked_unknown_trust", false, rc, gate.overallDecision.safeMessage);
|
|
54
|
+
if (rc.startsWith("io"))
|
|
55
|
+
return out("blocked_io_authority", false, rc, gate.overallDecision.safeMessage);
|
|
56
|
+
if (rc.startsWith("auth") || rc.startsWith("egress"))
|
|
57
|
+
return out("blocked_no_policy", false, rc, gate.overallDecision.safeMessage);
|
|
58
|
+
return out("blocked_not_implemented", false, rc, gate.overallDecision.safeMessage);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** The approval decisions to record for a provider under its current policy. */
|
|
63
|
+
export function approvalDecisionsFor(gate) {
|
|
64
|
+
const d = (s) => (s === "not_applicable" ? "not_applicable" : "approved");
|
|
65
|
+
return {
|
|
66
|
+
auth: d(gate.authDecision.status),
|
|
67
|
+
egress: d(gate.egressDecision.status),
|
|
68
|
+
io: d(gate.ioDecision.status),
|
|
69
|
+
runtime: "approved",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=providerRunnability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerRunnability.js","sourceRoot":"","sources":["../../src/config/providerRunnability.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON-RPC 2.0 error codes and a typed error the dispatcher maps to a safe error response.
|
|
3
|
+
*
|
|
4
|
+
* Error responses are deterministic and NEVER include stack traces on stdout (CLAUDE.md
|
|
5
|
+
* stdout-is-sacred rule applies to the agent side too).
|
|
6
|
+
*/
|
|
7
|
+
export declare const JSONRPC: {
|
|
8
|
+
readonly PARSE_ERROR: -32700;
|
|
9
|
+
readonly INVALID_REQUEST: -32600;
|
|
10
|
+
readonly METHOD_NOT_FOUND: -32601;
|
|
11
|
+
readonly INVALID_PARAMS: -32602;
|
|
12
|
+
readonly INTERNAL_ERROR: -32603;
|
|
13
|
+
};
|
|
14
|
+
export interface JsonRpcErrorShape {
|
|
15
|
+
code: number;
|
|
16
|
+
message: string;
|
|
17
|
+
data?: unknown;
|
|
18
|
+
}
|
|
19
|
+
/** An error that maps cleanly to a JSON-RPC error response. */
|
|
20
|
+
export declare class AcpError extends Error {
|
|
21
|
+
readonly code: number;
|
|
22
|
+
readonly data?: unknown;
|
|
23
|
+
constructor(code: number, message: string, data?: unknown);
|
|
24
|
+
toResponseError(): JsonRpcErrorShape;
|
|
25
|
+
static methodNotFound(method: string): AcpError;
|
|
26
|
+
static invalidParams(message: string): AcpError;
|
|
27
|
+
static invalidRequest(message: string): AcpError;
|
|
28
|
+
static internal(message: string): AcpError;
|
|
29
|
+
static unsupportedProtocol(requested: unknown, supported: number): AcpError;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO;;;;;;CAMV,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,+DAA+D;AAC/D,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;gBAEZ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;IAOzD,eAAe,IAAI,iBAAiB;IAMpC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAG/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAG/C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAGhD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ;IAG1C,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,QAAQ;CAM5E"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON-RPC 2.0 error codes and a typed error the dispatcher maps to a safe error response.
|
|
3
|
+
*
|
|
4
|
+
* Error responses are deterministic and NEVER include stack traces on stdout (CLAUDE.md
|
|
5
|
+
* stdout-is-sacred rule applies to the agent side too).
|
|
6
|
+
*/
|
|
7
|
+
export const JSONRPC = {
|
|
8
|
+
PARSE_ERROR: -32700,
|
|
9
|
+
INVALID_REQUEST: -32600,
|
|
10
|
+
METHOD_NOT_FOUND: -32601,
|
|
11
|
+
INVALID_PARAMS: -32602,
|
|
12
|
+
INTERNAL_ERROR: -32603,
|
|
13
|
+
};
|
|
14
|
+
/** An error that maps cleanly to a JSON-RPC error response. */
|
|
15
|
+
export class AcpError extends Error {
|
|
16
|
+
code;
|
|
17
|
+
data;
|
|
18
|
+
constructor(code, message, data) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = "AcpError";
|
|
21
|
+
this.code = code;
|
|
22
|
+
this.data = data;
|
|
23
|
+
}
|
|
24
|
+
toResponseError() {
|
|
25
|
+
return this.data === undefined
|
|
26
|
+
? { code: this.code, message: this.message }
|
|
27
|
+
: { code: this.code, message: this.message, data: this.data };
|
|
28
|
+
}
|
|
29
|
+
static methodNotFound(method) {
|
|
30
|
+
return new AcpError(JSONRPC.METHOD_NOT_FOUND, `method not found: ${method}`);
|
|
31
|
+
}
|
|
32
|
+
static invalidParams(message) {
|
|
33
|
+
return new AcpError(JSONRPC.INVALID_PARAMS, `invalid params: ${message}`);
|
|
34
|
+
}
|
|
35
|
+
static invalidRequest(message) {
|
|
36
|
+
return new AcpError(JSONRPC.INVALID_REQUEST, `invalid request: ${message}`);
|
|
37
|
+
}
|
|
38
|
+
static internal(message) {
|
|
39
|
+
return new AcpError(JSONRPC.INTERNAL_ERROR, message);
|
|
40
|
+
}
|
|
41
|
+
static unsupportedProtocol(requested, supported) {
|
|
42
|
+
return new AcpError(JSONRPC.INVALID_PARAMS, `unsupported protocolVersion ${JSON.stringify(requested)} — this agent speaks ACP v${supported}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,WAAW,EAAE,CAAC,KAAK;IACnB,eAAe,EAAE,CAAC,KAAK;IACvB,gBAAgB,EAAE,CAAC,KAAK;IACxB,cAAc,EAAE,CAAC,KAAK;IACtB,cAAc,EAAE,CAAC,KAAK;CACd,CAAC;AAQX,+DAA+D;AAC/D,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,IAAI,CAAW;IAExB,YAAY,IAAY,EAAE,OAAe,EAAE,IAAc;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;YAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;YAC5C,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAc;QAClC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,qBAAqB,MAAM,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,CAAC,aAAa,CAAC,OAAe;QAClC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,CAAC,cAAc,CAAC,OAAe;QACnC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,mBAAmB,CAAC,SAAkB,EAAE,SAAiB;QAC9D,OAAO,IAAI,QAAQ,CACjB,OAAO,CAAC,cAAc,EACtB,+BAA+B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,6BAA6B,SAAS,EAAE,CACjG,CAAC;IACJ,CAAC;CACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xenosystem/acp-agent — XENO-owned ACP agent-side stdio endpoint.
|
|
3
|
+
*
|
|
4
|
+
* The inverse of `@xenosystem/acp-core` (the ACP *client*). Answers ACP v1 agent methods over stdio
|
|
5
|
+
* and runs as an external ACP-compatible subprocess:
|
|
6
|
+
*
|
|
7
|
+
* node packages/agent/dist/cli.js agent --provider fixture
|
|
8
|
+
*
|
|
9
|
+
* XACP-005+ adds a provider-adapter foundation: a typed `Provider` contract, registry, event
|
|
10
|
+
* model, error taxonomy, and safety validator. Runnable paths today are the fixture plus
|
|
11
|
+
* approval-gated `xeno-local`, `claude-local`, and `codex-local`; Gemini/OpenCode/Kimi/GLM/Hermes stay
|
|
12
|
+
* blocked placeholders. ACP mode keeps stdout JSON-RPC-only.
|
|
13
|
+
*/
|
|
14
|
+
export { normalizeAgentPromptBlocks, normalizeXenoSystemPrompt, startAcpAgent, XENO_CHOOSE_DIRECTORY_METHOD, XENO_CHOOSE_WORKSPACE_PLACEMENT_METHOD, XENO_CONTEXT_META_KEY, XENO_META_KEY, type AgentServerOptions, type AgentServerHandle, } from "./acpAgentServer.js";
|
|
15
|
+
export { SessionStore, type AgentSession } from "./sessionStore.js";
|
|
16
|
+
export { createStdioServer, logStderr, type StdioServer, type StdioServerHandlers } from "./stdioJsonRpc.js";
|
|
17
|
+
export { AcpError, JSONRPC } from "./errors.js";
|
|
18
|
+
export { VERSION, AGENT_NAME, AGENT_TITLE, ACP_PROTOCOL_VERSION } from "./version.js";
|
|
19
|
+
export type { SessionUpdate, InitializeResult, StopReason, ToolStatus, ToolKind } from "./types.js";
|
|
20
|
+
export { ProviderRegistry, createDefaultRegistry, createPlaceholderDefinitions, } from "./providers/providerRegistry.js";
|
|
21
|
+
export { buildProviderDiscoverySummary, defaultOnlyModelDiscovery, isSafeProviderModelId, providerDisplayName, resolveProviderModelDiscovery, staticModelDiscovery, validateProviderModelSelection, type ProviderDiscoverySummary, type ProviderModelValidation, } from "./providers/providerDiscovery.js";
|
|
22
|
+
export { discoverCodexCliModels, parseCodexModelCatalog, type CodexModelCatalogOptions, } from "./providers/codexModelCatalog.js";
|
|
23
|
+
export { createFixtureProviderDefinition, FIXTURE_CAPABILITIES, FIXTURE_FINAL_TEXT, } from "./providers/fixtureProvider.js";
|
|
24
|
+
export { createXenoLocalDefinition, emitXenoLocalStream, xenoLocalAdapterCommand, XENO_LOCAL_ID, XENO_LOCAL_CAPABILITIES, XENO_LOCAL_FINAL_TEXT, type XenoLocalMode, } from "./providers/xenoLocalProvider.js";
|
|
25
|
+
export { createClaudeLocalDefinition, claudeLocalCommand, renderPromptText, stableClaudeSessionUuid, CLAUDE_LOCAL_ID, CLAUDE_LOCAL_DEFAULT_EXECUTABLE, CLAUDE_LOCAL_CAPABILITIES, CLAUDE_LOCAL_ENV_ALLOWLIST_KEYS, CLAUDE_LOCAL_ENV_BLOCKLIST_KEYS, type ClaudeLocalOptions, } from "./providers/claudeLocalProvider.js";
|
|
26
|
+
export { parseClaudeStreamJson, type ClaudeParseResult, type ClaudeParseContext, } from "./providers/claudeStreamJsonParser.js";
|
|
27
|
+
export { CODEX_HOST_REQUEST_CLOSE_TAG, CODEX_HOST_REQUEST_OPEN_TAG, parseCodexExecJson, type CodexChooseDirectoryHostRequest, type CodexChooseWorkspacePlacementHostRequest, type CodexHostRequest, type CodexParseResult, type CodexParseContext, } from "./providers/codexExecJsonParser.js";
|
|
28
|
+
export { createCodexLocalDefinition, codexLocalCommand, renderCodexPromptText, CODEX_LOCAL_ID, CODEX_LOCAL_DEFAULT_EXECUTABLE, CODEX_LOCAL_CAPABILITIES, CODEX_LOCAL_ENV_ALLOWLIST_KEYS, CODEX_LOCAL_ENV_BLOCKLIST_KEYS, type CodexLocalOptions, } from "./providers/codexLocalProvider.js";
|
|
29
|
+
export { type RealProviderStdoutParser } from "./adapters/adapterHarnessTypes.js";
|
|
30
|
+
export { validateProviderSafety, type SafetyClassification, type SafetyResult, } from "./providers/providerSafety.js";
|
|
31
|
+
export { providerEventToAcpUpdate, createEventFactory, isTerminalEvent, type ProviderEvent, type ProviderEventKind, } from "./providers/providerEvents.js";
|
|
32
|
+
export { ProviderError, ProviderConfigurationError, ProviderAuthRequiredError, ProviderRateLimitError, ProviderUnavailableError, ProviderTimeoutError, ProviderCancelledError, ProviderProtocolError, ProviderSafetyViolationError, ProviderNotImplementedError, ProviderInternalError, buildProviderAuthFailureDiagnostic, type ProviderAuthFailureDiagnostic, type ProviderErrorCode, } from "./providers/providerErrors.js";
|
|
33
|
+
export type { ProviderDefinition, ProviderRuntime, ProviderRuntimeConfig, ProviderRuntimeContext, ProviderHostChooseDirectoryRequest, ProviderHostChooseDirectoryResponse, ProviderHostChooseWorkspacePlacementRequest, ProviderHostChooseWorkspacePlacementResponse, ProviderHostContext, ProviderSession, ProviderPromptRequest, ProviderPromptResult, ProviderCapabilitySet, ProviderKind, ProviderMetadata, ProviderModelChoice, ProviderModelDiscovery, ProviderModelDiscoverySource, ProviderModelDiscoveryStatus, ProviderStreamingMetadata, ProviderVersionReadiness, TrustClass, } from "./providers/providerTypes.js";
|
|
34
|
+
export { evaluateProviderSafety, isGateAllowed, } from "./security/capabilityGate.js";
|
|
35
|
+
export { validateProviderAuthPolicy, validateSecretReference, summarizeAuthPolicy, NO_AUTH_POLICY, } from "./security/authPolicy.js";
|
|
36
|
+
export { validateUrlAgainstEgressPolicy, isHostAllowed, validateHost, normalizeHost, isLocalhost, isPrivateHost, summarizeEgressPolicy, NO_EGRESS_POLICY, } from "./security/egressPolicy.js";
|
|
37
|
+
export { redactSecretLikeText, redactSecretLikeValue, redactEnvRecord, looksSecretLike } from "./security/redaction.js";
|
|
38
|
+
export { buildProviderDiagnostic, type ProviderDiagnostic } from "./security/securityDiagnostics.js";
|
|
39
|
+
export { SecretStoreError, createUnavailableSecretStore, createMemorySecretStore, type SecretStore, type SecretStoreBackend, type SecretStoreDiagnostics, type SecretStoreErrorCode, type SecretStoreValue, } from "./security/secretStore.js";
|
|
40
|
+
export { buildSecretBindingReview, parseSecretBindingArg, type SecretBinding, type SecretBindingReview, } from "./security/secretBinding.js";
|
|
41
|
+
export { loadProviderPolicyConfig, getPolicyEntry, applyPolicyToDefinition, stripJsonc, type LoadedPolicyConfig, } from "./config/providerPolicyConfig.js";
|
|
42
|
+
export { validateProviderPolicyConfig, type ProviderPolicyConfig, type ProviderPolicyEntry, type PolicyValidationResult, } from "./config/providerPolicySchema.js";
|
|
43
|
+
export { hashProviderDefinition, hashProviderPolicy } from "./config/providerPolicyHash.js";
|
|
44
|
+
export { ProviderApprovalStore, createApprovalRecord, } from "./config/providerApprovalStore.js";
|
|
45
|
+
export { isApprovalCurrent, type ProviderApprovalRecord, type ApprovalStoreFile, } from "./config/providerApprovalTypes.js";
|
|
46
|
+
export { resolveProviderStatus, approvalDecisionsFor, type RunnabilityStatus, type RunnabilityResult, } from "./config/providerRunnability.js";
|
|
47
|
+
export { buildPolicyReview, type PolicyReview } from "./config/providerPolicyDiagnostics.js";
|
|
48
|
+
export { createProviderSandboxContext, type CreateSandboxOptions, type SandboxTransports, } from "./sandbox/providerSandbox.js";
|
|
49
|
+
export { SandboxError, type SandboxErrorCode } from "./sandbox/sandboxErrors.js";
|
|
50
|
+
export { createSandboxAudit } from "./sandbox/providerSandboxAudit.js";
|
|
51
|
+
export { createSandboxNetwork } from "./sandbox/sandboxNetwork.js";
|
|
52
|
+
export { createSandboxSecrets } from "./sandbox/sandboxSecrets.js";
|
|
53
|
+
export { createSandboxFilesystem } from "./sandbox/sandboxFilesystem.js";
|
|
54
|
+
export { createSandboxTerminal } from "./sandbox/sandboxTerminal.js";
|
|
55
|
+
export { createSandboxCancellation } from "./sandbox/sandboxCancellation.js";
|
|
56
|
+
export { createSandboxDiagnostics } from "./sandbox/providerSandboxDiagnostics.js";
|
|
57
|
+
export type { ProviderSandboxContext, SandboxNetwork, SandboxNetworkRequest, SandboxNetworkResponse, NetworkTransport, SandboxSecrets, ProviderSecretValue, SecretResolver, SandboxFilesystem, FsBackend, SandboxTerminal, TerminalRunner, SandboxCancellation, SandboxAudit, SandboxAuditEvent, SandboxAuditKind, SandboxDiagnosticsSummary, } from "./sandbox/providerSandboxTypes.js";
|
|
58
|
+
export type { ProviderAuthPolicy, ProviderEgressPolicy, ProviderEgressRule, ProviderSecretReference, ProviderCapabilityGate, ProviderSafetyDecision, ProviderSafetyDiagnostic, ProviderRedactionPolicy, SafetyStatus, } from "./security/securityTypes.js";
|
|
59
|
+
export { createProviderProcessSupervisor, type ProviderProcessSupervisor, type SupervisorOptions, } from "./process/providerProcessSupervisor.js";
|
|
60
|
+
export { validateProviderProcessConfig, VALIDATION_BOUNDS, type ValidatedProviderProcessConfig, } from "./process/providerProcessValidation.js";
|
|
61
|
+
export { buildProviderEnv, envKeyList, redactedEnvForAudit, type BuildProviderEnvOptions, } from "./process/providerProcessEnvironment.js";
|
|
62
|
+
export { createTempWorkspace, useExistingWorkspace, redactWorkspace, type PreparedWorkspace, } from "./process/providerProcessWorkspace.js";
|
|
63
|
+
export { BoundedCapture } from "./process/providerProcessOutput.js";
|
|
64
|
+
export { createProviderProcessAudit } from "./process/providerProcessAudit.js";
|
|
65
|
+
export { buildProcessDiagnostics, minimalSupervisorEnforcement, enforcementSummaryLines, } from "./process/providerProcessDiagnostics.js";
|
|
66
|
+
export { ProviderProcessError, type ProviderProcessErrorCode, } from "./process/providerProcessErrors.js";
|
|
67
|
+
export { MINIMAL_SUPERVISOR_ENFORCEMENT, type ProviderProcessConfig, type ProviderProcessHandle, type ProviderProcessResult, type ProviderProcessStatus, type ProviderProcessAudit, type ProviderProcessAuditEvent, type ProviderProcessAuditKind, type ProviderProcessDiagnostics, type ProviderProcessEnforcement, } from "./process/providerProcessTypes.js";
|
|
68
|
+
export { runAdapterPrompt } from "./adapters/adapterProcessHarness.js";
|
|
69
|
+
export { parseAdapterOutput, safeSnippet, MAX_LINE_BYTES } from "./adapters/adapterEventParser.js";
|
|
70
|
+
export { mapAdapterEvents, type MappedAdapterEvents } from "./adapters/adapterEventMapper.js";
|
|
71
|
+
export { buildAdapterHarnessDiagnostics } from "./adapters/adapterDiagnostics.js";
|
|
72
|
+
export { AdapterHarnessError, type AdapterHarnessErrorCode } from "./adapters/adapterErrors.js";
|
|
73
|
+
export { createTestAdapterDefinition, TEST_ADAPTER_ID, TEST_ADAPTER_CAPABILITIES, } from "./adapters/testAdapterProvider.js";
|
|
74
|
+
export type { AdapterHarnessConfig, AdapterHarnessResult, AdapterHarnessDiagnostics, ParsedAdapterEvent, AdapterParseDiagnostic, AdapterParseOutcome, } from "./adapters/adapterHarnessTypes.js";
|
|
75
|
+
export { ADAPTER_RUNTIME_CONTRACT_VERSION, SUPPORTED_CONTRACT_VERSIONS, isSupportedContractVersion, resolveContractVersion, type AdapterRuntimeContractVersion, } from "./adapters/adapterContractVersion.js";
|
|
76
|
+
export { validateAdapterProtocolEvent, ADAPTER_PROTOCOL_EVENT_TYPES, type AdapterProtocolEvent, type AdapterProtocolEnvelope, type AdapterProtocolEventType, type AdapterProtocolValidation, type AdapterProtocolRejectReason, } from "./adapters/adapterEventProtocol.js";
|
|
77
|
+
export { ADAPTER_FAILURE_CODES, describeAdapterFailure, isAdapterFailureCode, failureCodeForRunnability, type AdapterFailureCode, type AdapterFailureDescriptor, } from "./adapters/adapterFailureTaxonomy.js";
|
|
78
|
+
export { PROVIDER_EVENT_KINDS, TERMINAL_PROVIDER_EVENT_KINDS, PROVIDER_EVENT_TO_ACP, isValidProviderEvent, isTerminalProviderEventKind, buildProviderRuntimeDiagnostics, type ProviderRuntimeDiagnosticsV1, type ProviderAuditEventV1, } from "./adapters/providerContractTypes.js";
|
|
79
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|