@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
package/dist/index.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
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
|
+
// ACP server + wire types
|
|
15
|
+
export { normalizeAgentPromptBlocks, normalizeXenoSystemPrompt, startAcpAgent, XENO_CHOOSE_DIRECTORY_METHOD, XENO_CHOOSE_WORKSPACE_PLACEMENT_METHOD, XENO_CONTEXT_META_KEY, XENO_META_KEY, } from "./acpAgentServer.js";
|
|
16
|
+
export { SessionStore } from "./sessionStore.js";
|
|
17
|
+
export { createStdioServer, logStderr } from "./stdioJsonRpc.js";
|
|
18
|
+
export { AcpError, JSONRPC } from "./errors.js";
|
|
19
|
+
export { VERSION, AGENT_NAME, AGENT_TITLE, ACP_PROTOCOL_VERSION } from "./version.js";
|
|
20
|
+
// Provider-adapter foundation (XACP-005)
|
|
21
|
+
export { ProviderRegistry, createDefaultRegistry, createPlaceholderDefinitions, } from "./providers/providerRegistry.js";
|
|
22
|
+
export { buildProviderDiscoverySummary, defaultOnlyModelDiscovery, isSafeProviderModelId, providerDisplayName, resolveProviderModelDiscovery, staticModelDiscovery, validateProviderModelSelection, } from "./providers/providerDiscovery.js";
|
|
23
|
+
export { discoverCodexCliModels, parseCodexModelCatalog, } from "./providers/codexModelCatalog.js";
|
|
24
|
+
export { createFixtureProviderDefinition, FIXTURE_CAPABILITIES, FIXTURE_FINAL_TEXT, } from "./providers/fixtureProvider.js";
|
|
25
|
+
export { createXenoLocalDefinition, emitXenoLocalStream, xenoLocalAdapterCommand, XENO_LOCAL_ID, XENO_LOCAL_CAPABILITIES, XENO_LOCAL_FINAL_TEXT, } from "./providers/xenoLocalProvider.js";
|
|
26
|
+
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, } from "./providers/claudeLocalProvider.js";
|
|
27
|
+
export { parseClaudeStreamJson, } from "./providers/claudeStreamJsonParser.js";
|
|
28
|
+
export { CODEX_HOST_REQUEST_CLOSE_TAG, CODEX_HOST_REQUEST_OPEN_TAG, parseCodexExecJson, } from "./providers/codexExecJsonParser.js";
|
|
29
|
+
export { createCodexLocalDefinition, codexLocalCommand, renderCodexPromptText, CODEX_LOCAL_ID, CODEX_LOCAL_DEFAULT_EXECUTABLE, CODEX_LOCAL_CAPABILITIES, CODEX_LOCAL_ENV_ALLOWLIST_KEYS, CODEX_LOCAL_ENV_BLOCKLIST_KEYS, } from "./providers/codexLocalProvider.js";
|
|
30
|
+
export { validateProviderSafety, } from "./providers/providerSafety.js";
|
|
31
|
+
export { providerEventToAcpUpdate, createEventFactory, isTerminalEvent, } from "./providers/providerEvents.js";
|
|
32
|
+
export { ProviderError, ProviderConfigurationError, ProviderAuthRequiredError, ProviderRateLimitError, ProviderUnavailableError, ProviderTimeoutError, ProviderCancelledError, ProviderProtocolError, ProviderSafetyViolationError, ProviderNotImplementedError, ProviderInternalError, buildProviderAuthFailureDiagnostic, } from "./providers/providerErrors.js";
|
|
33
|
+
// Network/Auth/Egress safety layer (XACP-006)
|
|
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 } from "./security/securityDiagnostics.js";
|
|
39
|
+
export { SecretStoreError, createUnavailableSecretStore, createMemorySecretStore, } from "./security/secretStore.js";
|
|
40
|
+
export { buildSecretBindingReview, parseSecretBindingArg, } from "./security/secretBinding.js";
|
|
41
|
+
// Provider policy config + manual approvals (XACP-007)
|
|
42
|
+
export { loadProviderPolicyConfig, getPolicyEntry, applyPolicyToDefinition, stripJsonc, } from "./config/providerPolicyConfig.js";
|
|
43
|
+
export { validateProviderPolicyConfig, } from "./config/providerPolicySchema.js";
|
|
44
|
+
export { hashProviderDefinition, hashProviderPolicy } from "./config/providerPolicyHash.js";
|
|
45
|
+
export { ProviderApprovalStore, createApprovalRecord, } from "./config/providerApprovalStore.js";
|
|
46
|
+
export { isApprovalCurrent, } from "./config/providerApprovalTypes.js";
|
|
47
|
+
export { resolveProviderStatus, approvalDecisionsFor, } from "./config/providerRunnability.js";
|
|
48
|
+
export { buildPolicyReview } from "./config/providerPolicyDiagnostics.js";
|
|
49
|
+
// Provider sandbox execution layer (XACP-008)
|
|
50
|
+
export { createProviderSandboxContext, } from "./sandbox/providerSandbox.js";
|
|
51
|
+
export { SandboxError } from "./sandbox/sandboxErrors.js";
|
|
52
|
+
export { createSandboxAudit } from "./sandbox/providerSandboxAudit.js";
|
|
53
|
+
export { createSandboxNetwork } from "./sandbox/sandboxNetwork.js";
|
|
54
|
+
export { createSandboxSecrets } from "./sandbox/sandboxSecrets.js";
|
|
55
|
+
export { createSandboxFilesystem } from "./sandbox/sandboxFilesystem.js";
|
|
56
|
+
export { createSandboxTerminal } from "./sandbox/sandboxTerminal.js";
|
|
57
|
+
export { createSandboxCancellation } from "./sandbox/sandboxCancellation.js";
|
|
58
|
+
export { createSandboxDiagnostics } from "./sandbox/providerSandboxDiagnostics.js";
|
|
59
|
+
// Minimal provider process supervisor (XACP-010) — a process boundary for FUTURE adapters.
|
|
60
|
+
// NOT a sandbox: network/filesystem are explicitly NOT enforced. Ships no real provider.
|
|
61
|
+
export { createProviderProcessSupervisor, } from "./process/providerProcessSupervisor.js";
|
|
62
|
+
export { validateProviderProcessConfig, VALIDATION_BOUNDS, } from "./process/providerProcessValidation.js";
|
|
63
|
+
export { buildProviderEnv, envKeyList, redactedEnvForAudit, } from "./process/providerProcessEnvironment.js";
|
|
64
|
+
export { createTempWorkspace, useExistingWorkspace, redactWorkspace, } from "./process/providerProcessWorkspace.js";
|
|
65
|
+
export { BoundedCapture } from "./process/providerProcessOutput.js";
|
|
66
|
+
export { createProviderProcessAudit } from "./process/providerProcessAudit.js";
|
|
67
|
+
export { buildProcessDiagnostics, minimalSupervisorEnforcement, enforcementSummaryLines, } from "./process/providerProcessDiagnostics.js";
|
|
68
|
+
export { ProviderProcessError, } from "./process/providerProcessErrors.js";
|
|
69
|
+
export { MINIMAL_SUPERVISOR_ENFORCEMENT, } from "./process/providerProcessTypes.js";
|
|
70
|
+
// Provider adapter TEST harness (XACP-011) — proves the future adapter seam with a harmless,
|
|
71
|
+
// XENO-owned fixture adapter. No real provider, no network, no secret load. Not in default registry.
|
|
72
|
+
export { runAdapterPrompt } from "./adapters/adapterProcessHarness.js";
|
|
73
|
+
export { parseAdapterOutput, safeSnippet, MAX_LINE_BYTES } from "./adapters/adapterEventParser.js";
|
|
74
|
+
export { mapAdapterEvents } from "./adapters/adapterEventMapper.js";
|
|
75
|
+
export { buildAdapterHarnessDiagnostics } from "./adapters/adapterDiagnostics.js";
|
|
76
|
+
export { AdapterHarnessError } from "./adapters/adapterErrors.js";
|
|
77
|
+
export { createTestAdapterDefinition, TEST_ADAPTER_ID, TEST_ADAPTER_CAPABILITIES, } from "./adapters/testAdapterProvider.js";
|
|
78
|
+
// Frozen provider adapter runtime contract v1 (XACP-012).
|
|
79
|
+
export { ADAPTER_RUNTIME_CONTRACT_VERSION, SUPPORTED_CONTRACT_VERSIONS, isSupportedContractVersion, resolveContractVersion, } from "./adapters/adapterContractVersion.js";
|
|
80
|
+
export { validateAdapterProtocolEvent, ADAPTER_PROTOCOL_EVENT_TYPES, } from "./adapters/adapterEventProtocol.js";
|
|
81
|
+
export { ADAPTER_FAILURE_CODES, describeAdapterFailure, isAdapterFailureCode, failureCodeForRunnability, } from "./adapters/adapterFailureTaxonomy.js";
|
|
82
|
+
export { PROVIDER_EVENT_KINDS, TERMINAL_PROVIDER_EVENT_KINDS, PROVIDER_EVENT_TO_ACP, isValidProviderEvent, isTerminalProviderEventKind, buildProviderRuntimeDiagnostics, } from "./adapters/providerContractTypes.js";
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append-only audit log for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Events carry safe messages + redacted details only — never raw command lines, env values,
|
|
5
|
+
* secrets, or stack traces. The clock is injected (`now`) so tests are deterministic and the
|
|
6
|
+
* source touches no ambient time source.
|
|
7
|
+
*/
|
|
8
|
+
import type { ProviderProcessAudit } from "./providerProcessTypes.js";
|
|
9
|
+
export declare function createProviderProcessAudit(opts: {
|
|
10
|
+
providerId: string;
|
|
11
|
+
processId: string;
|
|
12
|
+
now: () => string;
|
|
13
|
+
}): ProviderProcessAudit;
|
|
14
|
+
//# sourceMappingURL=providerProcessAudit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessAudit.d.ts","sourceRoot":"","sources":["../../src/process/providerProcessAudit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,2BAA2B,CAAC;AAEnC,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB,GAAG,oBAAoB,CAkBvB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append-only audit log for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Events carry safe messages + redacted details only — never raw command lines, env values,
|
|
5
|
+
* secrets, or stack traces. The clock is injected (`now`) so tests are deterministic and the
|
|
6
|
+
* source touches no ambient time source.
|
|
7
|
+
*/
|
|
8
|
+
export function createProviderProcessAudit(opts) {
|
|
9
|
+
const events = [];
|
|
10
|
+
let seq = 0;
|
|
11
|
+
return {
|
|
12
|
+
record(kind, safeMessage, redactedDetails) {
|
|
13
|
+
seq += 1;
|
|
14
|
+
events.push({
|
|
15
|
+
eventId: `${opts.processId}-aud-${seq}`,
|
|
16
|
+
timestamp: opts.now(),
|
|
17
|
+
providerId: opts.providerId,
|
|
18
|
+
processId: opts.processId,
|
|
19
|
+
kind,
|
|
20
|
+
safeMessage,
|
|
21
|
+
...(redactedDetails ? { redactedDetails } : {}),
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
events: () => [...events],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=providerProcessAudit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessAudit.js","sourceRoot":"","sources":["../../src/process/providerProcessAudit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,UAAU,0BAA0B,CAAC,IAI1C;IACC,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO;QACL,MAAM,CAAC,IAA8B,EAAE,WAAmB,EAAE,eAAyC;YACnG,GAAG,IAAI,CAAC,CAAC;YACT,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,QAAQ,GAAG,EAAE;gBACvC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI;gBACJ,WAAW;gBACX,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnostics summary for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Carries env KEY names only, a redacted workspace marker, byte counts/flags, and the FIXED,
|
|
5
|
+
* honest enforcement classification. Never secret values, never raw paths. The classification
|
|
6
|
+
* is what keeps the supervisor from overclaiming: `network: not_enforced`,
|
|
7
|
+
* `filesystem: not_enforced_against_hostile_process`, `processTreeKill: best_effort`.
|
|
8
|
+
*/
|
|
9
|
+
import { type ProviderProcessDiagnostics, type ProviderProcessEnforcement, type ProviderProcessStatus } from "./providerProcessTypes.js";
|
|
10
|
+
export interface DiagnosticsInput {
|
|
11
|
+
providerId: string;
|
|
12
|
+
processId: string;
|
|
13
|
+
platform: NodeJS.Platform;
|
|
14
|
+
status: ProviderProcessStatus;
|
|
15
|
+
envKeys: string[];
|
|
16
|
+
workspace: string;
|
|
17
|
+
stdoutBytes: number;
|
|
18
|
+
stderrBytes: number;
|
|
19
|
+
stdoutTruncated: boolean;
|
|
20
|
+
stderrTruncated: boolean;
|
|
21
|
+
treeKillAttempted: boolean;
|
|
22
|
+
treeKillSucceeded?: boolean;
|
|
23
|
+
auditCount: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function buildProcessDiagnostics(input: DiagnosticsInput): ProviderProcessDiagnostics;
|
|
26
|
+
/** The fixed enforcement classification — exposed for CLI/docs/tests. */
|
|
27
|
+
export declare function minimalSupervisorEnforcement(): ProviderProcessEnforcement;
|
|
28
|
+
/** Human-readable, redaction-safe lines describing what is / isn't enforced. */
|
|
29
|
+
export declare function enforcementSummaryLines(platform: NodeJS.Platform): string[];
|
|
30
|
+
//# sourceMappingURL=providerProcessDiagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessDiagnostics.d.ts","sourceRoot":"","sources":["../../src/process/providerProcessDiagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,GAAG,0BAA0B,CAkB3F;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,IAAI,0BAA0B,CAEzE;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,EAAE,CAgB3E"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnostics summary for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Carries env KEY names only, a redacted workspace marker, byte counts/flags, and the FIXED,
|
|
5
|
+
* honest enforcement classification. Never secret values, never raw paths. The classification
|
|
6
|
+
* is what keeps the supervisor from overclaiming: `network: not_enforced`,
|
|
7
|
+
* `filesystem: not_enforced_against_hostile_process`, `processTreeKill: best_effort`.
|
|
8
|
+
*/
|
|
9
|
+
import { MINIMAL_SUPERVISOR_ENFORCEMENT, } from "./providerProcessTypes.js";
|
|
10
|
+
export function buildProcessDiagnostics(input) {
|
|
11
|
+
return {
|
|
12
|
+
providerId: input.providerId,
|
|
13
|
+
processId: input.processId,
|
|
14
|
+
platform: input.platform,
|
|
15
|
+
supervisorMode: "minimal",
|
|
16
|
+
status: input.status,
|
|
17
|
+
envKeys: [...input.envKeys].sort(),
|
|
18
|
+
workspace: input.workspace,
|
|
19
|
+
stdoutBytes: input.stdoutBytes,
|
|
20
|
+
stderrBytes: input.stderrBytes,
|
|
21
|
+
stdoutTruncated: input.stdoutTruncated,
|
|
22
|
+
stderrTruncated: input.stderrTruncated,
|
|
23
|
+
treeKillAttempted: input.treeKillAttempted,
|
|
24
|
+
...(input.treeKillSucceeded !== undefined ? { treeKillSucceeded: input.treeKillSucceeded } : {}),
|
|
25
|
+
enforcement: MINIMAL_SUPERVISOR_ENFORCEMENT,
|
|
26
|
+
auditCount: input.auditCount,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** The fixed enforcement classification — exposed for CLI/docs/tests. */
|
|
30
|
+
export function minimalSupervisorEnforcement() {
|
|
31
|
+
return MINIMAL_SUPERVISOR_ENFORCEMENT;
|
|
32
|
+
}
|
|
33
|
+
/** Human-readable, redaction-safe lines describing what is / isn't enforced. */
|
|
34
|
+
export function enforcementSummaryLines(platform) {
|
|
35
|
+
const e = MINIMAL_SUPERVISOR_ENFORCEMENT;
|
|
36
|
+
return [
|
|
37
|
+
`platform: ${platform}`,
|
|
38
|
+
`supervisor mode: minimal`,
|
|
39
|
+
`shell: ${e.shell}`,
|
|
40
|
+
`env allowlist: ${e.env}`,
|
|
41
|
+
`cwd isolation: ${e.cwd}`,
|
|
42
|
+
`timeout: ${e.timeout}`,
|
|
43
|
+
`stdout/stderr capture: ${e.stdoutStderrCapture}`,
|
|
44
|
+
`redaction: ${e.redaction}`,
|
|
45
|
+
`process tree cleanup: ${e.processTreeKill}`,
|
|
46
|
+
`network: ${e.network}`,
|
|
47
|
+
`filesystem: ${e.filesystem}`,
|
|
48
|
+
`terminal: ${e.terminal}`,
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=providerProcessDiagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessDiagnostics.js","sourceRoot":"","sources":["../../src/process/providerProcessDiagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,8BAA8B,GAI/B,MAAM,2BAA2B,CAAC;AAkBnC,MAAM,UAAU,uBAAuB,CAAC,KAAuB;IAC7D,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,SAAS;QACzB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,4BAA4B;IAC1C,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,uBAAuB,CAAC,QAAyB;IAC/D,MAAM,CAAC,GAAG,8BAA8B,CAAC;IACzC,OAAO;QACL,aAAa,QAAQ,EAAE;QACvB,0BAA0B;QAC1B,UAAU,CAAC,CAAC,KAAK,EAAE;QACnB,kBAAkB,CAAC,CAAC,GAAG,EAAE;QACzB,kBAAkB,CAAC,CAAC,GAAG,EAAE;QACzB,YAAY,CAAC,CAAC,OAAO,EAAE;QACvB,0BAA0B,CAAC,CAAC,mBAAmB,EAAE;QACjD,cAAc,CAAC,CAAC,SAAS,EAAE;QAC3B,yBAAyB,CAAC,CAAC,eAAe,EAAE;QAC5C,YAAY,CAAC,CAAC,OAAO,EAAE;QACvB,eAAe,CAAC,CAAC,UAAU,EAAE;QAC7B,aAAa,CAAC,CAAC,QAAQ,EAAE;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment construction for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* The child sees ONLY the explicit allowlist (plus, optionally, a few documented platform
|
|
5
|
+
* basics the caller opts into). The full `process.env` is NEVER inherited by default — this is
|
|
6
|
+
* the difference between "the operator's shell environment" and "a clean, declared environment".
|
|
7
|
+
*
|
|
8
|
+
* This module reads NO secrets and does NOT touch `process.env` itself; the caller passes any
|
|
9
|
+
* base values explicitly. Diagnostics expose env KEY names only — never values.
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidatedProviderProcessConfig } from "./providerProcessValidation.js";
|
|
12
|
+
export interface BuildProviderEnvOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Optional, explicit platform-basics to fold in (e.g. `{ PATH, SystemRoot, ComSpec }`) when a
|
|
15
|
+
* provider genuinely needs them. The caller supplies the values; this module never reads them
|
|
16
|
+
* from `process.env`. Allowlist values take precedence on key collisions.
|
|
17
|
+
*/
|
|
18
|
+
platformBasics?: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build the child's environment: a clean record containing ONLY the validated allowlist, merged
|
|
22
|
+
* over any explicitly-provided platform basics. No inheritance of the ambient environment.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildProviderEnv(config: ValidatedProviderProcessConfig, opts?: BuildProviderEnvOptions): Record<string, string>;
|
|
25
|
+
/** Env KEY names only — safe for diagnostics. */
|
|
26
|
+
export declare function envKeyList(env: Record<string, string>): string[];
|
|
27
|
+
/** A redacted view of the env (keys kept, secret-like values masked) for audit details. */
|
|
28
|
+
export declare function redactedEnvForAudit(env: Record<string, string>): Record<string, string>;
|
|
29
|
+
//# sourceMappingURL=providerProcessEnvironment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessEnvironment.d.ts","sourceRoot":"","sources":["../../src/process/providerProcessEnvironment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,8BAA8B,EACtC,IAAI,GAAE,uBAA4B,GACjC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB;AAED,iDAAiD;AACjD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAEhE;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEvF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment construction for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* The child sees ONLY the explicit allowlist (plus, optionally, a few documented platform
|
|
5
|
+
* basics the caller opts into). The full `process.env` is NEVER inherited by default — this is
|
|
6
|
+
* the difference between "the operator's shell environment" and "a clean, declared environment".
|
|
7
|
+
*
|
|
8
|
+
* This module reads NO secrets and does NOT touch `process.env` itself; the caller passes any
|
|
9
|
+
* base values explicitly. Diagnostics expose env KEY names only — never values.
|
|
10
|
+
*/
|
|
11
|
+
import { redactEnvRecord } from "../security/redaction.js";
|
|
12
|
+
/**
|
|
13
|
+
* Build the child's environment: a clean record containing ONLY the validated allowlist, merged
|
|
14
|
+
* over any explicitly-provided platform basics. No inheritance of the ambient environment.
|
|
15
|
+
*/
|
|
16
|
+
export function buildProviderEnv(config, opts = {}) {
|
|
17
|
+
const env = {};
|
|
18
|
+
// Documented, opt-in platform basics first (lowest precedence).
|
|
19
|
+
for (const [k, v] of Object.entries(opts.platformBasics ?? {})) {
|
|
20
|
+
if (typeof v === "string")
|
|
21
|
+
env[k] = v;
|
|
22
|
+
}
|
|
23
|
+
// Explicit allowlist wins.
|
|
24
|
+
for (const [k, v] of Object.entries(config.envAllowlist)) {
|
|
25
|
+
env[k] = v;
|
|
26
|
+
}
|
|
27
|
+
return env;
|
|
28
|
+
}
|
|
29
|
+
/** Env KEY names only — safe for diagnostics. */
|
|
30
|
+
export function envKeyList(env) {
|
|
31
|
+
return Object.keys(env).sort();
|
|
32
|
+
}
|
|
33
|
+
/** A redacted view of the env (keys kept, secret-like values masked) for audit details. */
|
|
34
|
+
export function redactedEnvForAudit(env) {
|
|
35
|
+
return redactEnvRecord(env);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=providerProcessEnvironment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessEnvironment.js","sourceRoot":"","sources":["../../src/process/providerProcessEnvironment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAY3D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAsC,EACtC,OAAgC,EAAE;IAElC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,gEAAgE;IAChE,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,2BAA2B;IAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,UAAU,CAAC,GAA2B;IACpD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CAAC,GAA2B;IAC7D,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal-supervisor error taxonomy (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Safe messages only — never stack traces, raw command lines, env values, or secrets. These
|
|
5
|
+
* errors describe *validation/launch* failures of the cross-platform minimal supervisor; they
|
|
6
|
+
* make no claim of network/filesystem containment (which this layer does NOT enforce).
|
|
7
|
+
*/
|
|
8
|
+
export type ProviderProcessErrorCode = "PROCESS_CONFIG_INVALID" | "PROCESS_EXECUTABLE_INVALID" | "PROCESS_ARGS_INVALID" | "PROCESS_CWD_INVALID" | "PROCESS_ENV_INVALID" | "PROCESS_TIMEOUT_INVALID" | "PROCESS_LIMIT_INVALID" | "PROCESS_WORKSPACE_INVALID" | "PROCESS_SPAWN_FAILED" | "PROCESS_ALREADY_STARTED" | "PROCESS_INTERNAL";
|
|
9
|
+
export declare class ProviderProcessError extends Error {
|
|
10
|
+
readonly code: ProviderProcessErrorCode;
|
|
11
|
+
readonly providerId?: string;
|
|
12
|
+
readonly redactedDetails?: Record<string, unknown>;
|
|
13
|
+
constructor(init: {
|
|
14
|
+
code: ProviderProcessErrorCode;
|
|
15
|
+
safeMessage: string;
|
|
16
|
+
providerId?: string;
|
|
17
|
+
redactedDetails?: Record<string, unknown>;
|
|
18
|
+
});
|
|
19
|
+
get safeMessage(): string;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=providerProcessErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessErrors.d.ts","sourceRoot":"","sources":["../../src/process/providerProcessErrors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,wBAAwB,GAChC,wBAAwB,GACxB,4BAA4B,GAC5B,sBAAsB,GACtB,qBAAqB,GACrB,qBAAqB,GACrB,yBAAyB,GACzB,uBAAuB,GACvB,2BAA2B,GAC3B,sBAAsB,GACtB,yBAAyB,GACzB,kBAAkB,CAAC;AAEvB,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAEvC,IAAI,EAAE;QAChB,IAAI,EAAE,wBAAwB,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C;IAQD,IAAI,WAAW,IAAI,MAAM,CAExB;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal-supervisor error taxonomy (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Safe messages only — never stack traces, raw command lines, env values, or secrets. These
|
|
5
|
+
* errors describe *validation/launch* failures of the cross-platform minimal supervisor; they
|
|
6
|
+
* make no claim of network/filesystem containment (which this layer does NOT enforce).
|
|
7
|
+
*/
|
|
8
|
+
export class ProviderProcessError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
providerId;
|
|
11
|
+
redactedDetails;
|
|
12
|
+
constructor(init) {
|
|
13
|
+
super(init.safeMessage);
|
|
14
|
+
this.name = "ProviderProcessError";
|
|
15
|
+
this.code = init.code;
|
|
16
|
+
if (init.providerId !== undefined)
|
|
17
|
+
this.providerId = init.providerId;
|
|
18
|
+
if (init.redactedDetails !== undefined)
|
|
19
|
+
this.redactedDetails = init.redactedDetails;
|
|
20
|
+
}
|
|
21
|
+
get safeMessage() {
|
|
22
|
+
return this.message;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=providerProcessErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessErrors.js","sourceRoot":"","sources":["../../src/process/providerProcessErrors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAA2B;IAC/B,UAAU,CAAU;IACpB,eAAe,CAA2B;IAEnD,YAAY,IAKX;QACC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrE,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;YAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IACtF,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded, redacted output capture for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Two guarantees:
|
|
5
|
+
* 1. Bounded — never retain more than `limitBytes` of a stream (excess dropped, flag set), so
|
|
6
|
+
* a chatty/forking process can't exhaust memory.
|
|
7
|
+
* 2. Redacted — `redactedText()` masks secret-like tokens before anything reaches diagnostics
|
|
8
|
+
* or audit. The raw text is returned to the *caller* (a test/adapter) but is never logged.
|
|
9
|
+
*/
|
|
10
|
+
export declare class BoundedCapture {
|
|
11
|
+
private readonly limitBytes;
|
|
12
|
+
private chunks;
|
|
13
|
+
private size;
|
|
14
|
+
private truncated;
|
|
15
|
+
constructor(limitBytes: number);
|
|
16
|
+
push(chunk: Buffer | string): void;
|
|
17
|
+
get bytes(): number;
|
|
18
|
+
get isTruncated(): boolean;
|
|
19
|
+
/** Raw captured text (may contain secrets — caller's responsibility, never logged). */
|
|
20
|
+
text(): string;
|
|
21
|
+
/** Redacted text — secret-like whitespace-delimited tokens are masked. Safe for diagnostics. */
|
|
22
|
+
redactedText(mask?: string): string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=providerProcessOutput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessOutput.d.ts","sourceRoot":"","sources":["../../src/process/providerProcessOutput.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,qBAAa,cAAc;IAKb,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJvC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,SAAS,CAAS;gBAEG,UAAU,EAAE,MAAM;IAE/C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAiBlC,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,uFAAuF;IACvF,IAAI,IAAI,MAAM;IAId,gGAAgG;IAChG,YAAY,CAAC,IAAI,SAAe,GAAG,MAAM;CAG1C"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounded, redacted output capture for the minimal supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* Two guarantees:
|
|
5
|
+
* 1. Bounded — never retain more than `limitBytes` of a stream (excess dropped, flag set), so
|
|
6
|
+
* a chatty/forking process can't exhaust memory.
|
|
7
|
+
* 2. Redacted — `redactedText()` masks secret-like tokens before anything reaches diagnostics
|
|
8
|
+
* or audit. The raw text is returned to the *caller* (a test/adapter) but is never logged.
|
|
9
|
+
*/
|
|
10
|
+
import { DEFAULT_REDACTION_POLICY } from "../security/securityTypes.js";
|
|
11
|
+
import { redactSecretLikeText } from "../security/redaction.js";
|
|
12
|
+
export class BoundedCapture {
|
|
13
|
+
limitBytes;
|
|
14
|
+
chunks = [];
|
|
15
|
+
size = 0;
|
|
16
|
+
truncated = false;
|
|
17
|
+
constructor(limitBytes) {
|
|
18
|
+
this.limitBytes = limitBytes;
|
|
19
|
+
}
|
|
20
|
+
push(chunk) {
|
|
21
|
+
const buf = typeof chunk === "string" ? Buffer.from(chunk) : chunk;
|
|
22
|
+
if (this.size >= this.limitBytes) {
|
|
23
|
+
this.truncated = true;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const remaining = this.limitBytes - this.size;
|
|
27
|
+
if (buf.length > remaining) {
|
|
28
|
+
this.chunks.push(buf.subarray(0, remaining));
|
|
29
|
+
this.size = this.limitBytes;
|
|
30
|
+
this.truncated = true;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.chunks.push(buf);
|
|
34
|
+
this.size += buf.length;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
get bytes() {
|
|
38
|
+
return this.size;
|
|
39
|
+
}
|
|
40
|
+
get isTruncated() {
|
|
41
|
+
return this.truncated;
|
|
42
|
+
}
|
|
43
|
+
/** Raw captured text (may contain secrets — caller's responsibility, never logged). */
|
|
44
|
+
text() {
|
|
45
|
+
return Buffer.concat(this.chunks).toString("utf8");
|
|
46
|
+
}
|
|
47
|
+
/** Redacted text — secret-like whitespace-delimited tokens are masked. Safe for diagnostics. */
|
|
48
|
+
redactedText(mask = "[REDACTED]") {
|
|
49
|
+
return redactSecretLikeText(this.text(), { ...DEFAULT_REDACTION_POLICY, mask });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=providerProcessOutput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessOutput.js","sourceRoot":"","sources":["../../src/process/providerProcessOutput.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,OAAO,cAAc;IAKI;IAJrB,MAAM,GAAa,EAAE,CAAC;IACtB,IAAI,GAAG,CAAC,CAAC;IACT,SAAS,GAAG,KAAK,CAAC;IAE1B,YAA6B,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAEnD,IAAI,CAAC,KAAsB;QACzB,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9C,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,uFAAuF;IACvF,IAAI;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,gGAAgG;IAChG,YAAY,CAAC,IAAI,GAAG,YAAY;QAC9B,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,wBAAwB,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;CACF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-platform MINIMAL provider process supervisor (XACP-010).
|
|
3
|
+
*
|
|
4
|
+
* SCOPED I/O EXCEPTION. This is the one file in the process/ layer that spawns a child process.
|
|
5
|
+
* It exists so provider adapters have a concrete, audited process boundary. It only runs after a
|
|
6
|
+
* higher layer supplies a policy/approval-gated config; the ACP handler itself keeps its
|
|
7
|
+
* zero-I/O-authority posture.
|
|
8
|
+
*
|
|
9
|
+
* What it enforces: no-shell launch (`shell:false`), validated executable/args, a clean env
|
|
10
|
+
* allowlist, an absolute cwd, a hard timeout, bounded+redacted output capture, best-effort
|
|
11
|
+
* process-tree cleanup, and an append-only audit trail.
|
|
12
|
+
*
|
|
13
|
+
* What it does NOT enforce — and must never claim to: network egress, filesystem access against
|
|
14
|
+
* a hostile process, or full child-process syscall containment. See
|
|
15
|
+
* `MINIMAL_SUPERVISOR_ENFORCEMENT`. The supervisor itself opens no sockets and makes no network
|
|
16
|
+
* call; it uses NO `exec`/`execFile` (only `spawn` with an argv array).
|
|
17
|
+
*/
|
|
18
|
+
import { spawn } from "node:child_process";
|
|
19
|
+
import { type BuildProviderEnvOptions } from "./providerProcessEnvironment.js";
|
|
20
|
+
import type { ProviderProcessConfig, ProviderProcessHandle } from "./providerProcessTypes.js";
|
|
21
|
+
export interface SupervisorOptions extends BuildProviderEnvOptions {
|
|
22
|
+
/** Injected platform (defaults to process.platform) — for deterministic cross-OS tests. */
|
|
23
|
+
platform?: NodeJS.Platform;
|
|
24
|
+
/** Injected monotonic-ish clock in ms (defaults to performance.now) for duration. */
|
|
25
|
+
monotonicMs?: () => number;
|
|
26
|
+
/** Injected ISO timestamp source for audit (defaults to a fixed-free counter via caller). */
|
|
27
|
+
now?: () => string;
|
|
28
|
+
/** Injected spawn (for tests). Defaults to node:child_process spawn. */
|
|
29
|
+
spawnImpl?: typeof spawn;
|
|
30
|
+
}
|
|
31
|
+
export interface ProviderProcessSupervisor {
|
|
32
|
+
start(config: ProviderProcessConfig): ProviderProcessHandle;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create the minimal supervisor. `start()` validates the config, builds a clean env, and spawns
|
|
36
|
+
* the child with `shell:false`. It throws a `ProviderProcessError` (safe message) on invalid
|
|
37
|
+
* config or spawn-setup failure; runtime spawn errors surface as a `failed` result via `wait()`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createProviderProcessSupervisor(opts?: SupervisorOptions): ProviderProcessSupervisor;
|
|
40
|
+
//# sourceMappingURL=providerProcessSupervisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerProcessSupervisor.d.ts","sourceRoot":"","sources":["../../src/process/providerProcessSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAgC,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAS7G,OAAO,KAAK,EAEV,qBAAqB,EAErB,qBAAqB,EAGtB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AA4PD,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,CAAC;CAC7D;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,GAAE,iBAAsB,GAAG,yBAAyB,CAgEvG"}
|