@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.
Files changed (268) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +9 -0
  3. package/README.md +22 -0
  4. package/dist/acpAgentServer.d.ts +43 -0
  5. package/dist/acpAgentServer.d.ts.map +1 -0
  6. package/dist/acpAgentServer.js +450 -0
  7. package/dist/acpAgentServer.js.map +1 -0
  8. package/dist/adapters/adapterContractVersion.d.ts +24 -0
  9. package/dist/adapters/adapterContractVersion.d.ts.map +1 -0
  10. package/dist/adapters/adapterContractVersion.js +29 -0
  11. package/dist/adapters/adapterContractVersion.js.map +1 -0
  12. package/dist/adapters/adapterDiagnostics.d.ts +19 -0
  13. package/dist/adapters/adapterDiagnostics.d.ts.map +1 -0
  14. package/dist/adapters/adapterDiagnostics.js +18 -0
  15. package/dist/adapters/adapterDiagnostics.js.map +1 -0
  16. package/dist/adapters/adapterErrors.d.ts +19 -0
  17. package/dist/adapters/adapterErrors.d.ts.map +1 -0
  18. package/dist/adapters/adapterErrors.js +23 -0
  19. package/dist/adapters/adapterErrors.js.map +1 -0
  20. package/dist/adapters/adapterEventMapper.d.ts +22 -0
  21. package/dist/adapters/adapterEventMapper.d.ts.map +1 -0
  22. package/dist/adapters/adapterEventMapper.js +70 -0
  23. package/dist/adapters/adapterEventMapper.js.map +1 -0
  24. package/dist/adapters/adapterEventParser.d.ts +16 -0
  25. package/dist/adapters/adapterEventParser.d.ts.map +1 -0
  26. package/dist/adapters/adapterEventParser.js +95 -0
  27. package/dist/adapters/adapterEventParser.js.map +1 -0
  28. package/dist/adapters/adapterEventProtocol.d.ts +85 -0
  29. package/dist/adapters/adapterEventProtocol.d.ts.map +1 -0
  30. package/dist/adapters/adapterEventProtocol.js +74 -0
  31. package/dist/adapters/adapterEventProtocol.js.map +1 -0
  32. package/dist/adapters/adapterFailureTaxonomy.d.ts +19 -0
  33. package/dist/adapters/adapterFailureTaxonomy.d.ts.map +1 -0
  34. package/dist/adapters/adapterFailureTaxonomy.js +62 -0
  35. package/dist/adapters/adapterFailureTaxonomy.js.map +1 -0
  36. package/dist/adapters/adapterHarnessTypes.d.ts +103 -0
  37. package/dist/adapters/adapterHarnessTypes.d.ts.map +1 -0
  38. package/dist/adapters/adapterHarnessTypes.js +15 -0
  39. package/dist/adapters/adapterHarnessTypes.js.map +1 -0
  40. package/dist/adapters/adapterProcessHarness.d.ts +23 -0
  41. package/dist/adapters/adapterProcessHarness.d.ts.map +1 -0
  42. package/dist/adapters/adapterProcessHarness.js +235 -0
  43. package/dist/adapters/adapterProcessHarness.js.map +1 -0
  44. package/dist/adapters/providerContractTypes.d.ts +64 -0
  45. package/dist/adapters/providerContractTypes.d.ts.map +1 -0
  46. package/dist/adapters/providerContractTypes.js +79 -0
  47. package/dist/adapters/providerContractTypes.js.map +1 -0
  48. package/dist/adapters/testAdapterProvider.d.ts +19 -0
  49. package/dist/adapters/testAdapterProvider.d.ts.map +1 -0
  50. package/dist/adapters/testAdapterProvider.js +95 -0
  51. package/dist/adapters/testAdapterProvider.js.map +1 -0
  52. package/dist/cli.d.ts +16 -0
  53. package/dist/cli.d.ts.map +1 -0
  54. package/dist/cli.js +1059 -0
  55. package/dist/cli.js.map +1 -0
  56. package/dist/config/providerApprovalStore.d.ts +39 -0
  57. package/dist/config/providerApprovalStore.d.ts.map +1 -0
  58. package/dist/config/providerApprovalStore.js +87 -0
  59. package/dist/config/providerApprovalStore.js.map +1 -0
  60. package/dist/config/providerApprovalTypes.d.ts +30 -0
  61. package/dist/config/providerApprovalTypes.d.ts.map +1 -0
  62. package/dist/config/providerApprovalTypes.js +11 -0
  63. package/dist/config/providerApprovalTypes.js.map +1 -0
  64. package/dist/config/providerPolicyConfig.d.ts +31 -0
  65. package/dist/config/providerPolicyConfig.d.ts.map +1 -0
  66. package/dist/config/providerPolicyConfig.js +111 -0
  67. package/dist/config/providerPolicyConfig.js.map +1 -0
  68. package/dist/config/providerPolicyDiagnostics.d.ts +49 -0
  69. package/dist/config/providerPolicyDiagnostics.d.ts.map +1 -0
  70. package/dist/config/providerPolicyDiagnostics.js +76 -0
  71. package/dist/config/providerPolicyDiagnostics.js.map +1 -0
  72. package/dist/config/providerPolicyHash.d.ts +14 -0
  73. package/dist/config/providerPolicyHash.d.ts.map +1 -0
  74. package/dist/config/providerPolicyHash.js +65 -0
  75. package/dist/config/providerPolicyHash.js.map +1 -0
  76. package/dist/config/providerPolicySchema.d.ts +32 -0
  77. package/dist/config/providerPolicySchema.d.ts.map +1 -0
  78. package/dist/config/providerPolicySchema.js +130 -0
  79. package/dist/config/providerPolicySchema.js.map +1 -0
  80. package/dist/config/providerRunnability.d.ts +36 -0
  81. package/dist/config/providerRunnability.d.ts.map +1 -0
  82. package/dist/config/providerRunnability.js +72 -0
  83. package/dist/config/providerRunnability.js.map +1 -0
  84. package/dist/errors.d.ts +31 -0
  85. package/dist/errors.d.ts.map +1 -0
  86. package/dist/errors.js +45 -0
  87. package/dist/errors.js.map +1 -0
  88. package/dist/index.d.ts +79 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +83 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/process/providerProcessAudit.d.ts +14 -0
  93. package/dist/process/providerProcessAudit.d.ts.map +1 -0
  94. package/dist/process/providerProcessAudit.js +27 -0
  95. package/dist/process/providerProcessAudit.js.map +1 -0
  96. package/dist/process/providerProcessDiagnostics.d.ts +30 -0
  97. package/dist/process/providerProcessDiagnostics.d.ts.map +1 -0
  98. package/dist/process/providerProcessDiagnostics.js +51 -0
  99. package/dist/process/providerProcessDiagnostics.js.map +1 -0
  100. package/dist/process/providerProcessEnvironment.d.ts +29 -0
  101. package/dist/process/providerProcessEnvironment.d.ts.map +1 -0
  102. package/dist/process/providerProcessEnvironment.js +37 -0
  103. package/dist/process/providerProcessEnvironment.js.map +1 -0
  104. package/dist/process/providerProcessErrors.d.ts +21 -0
  105. package/dist/process/providerProcessErrors.d.ts.map +1 -0
  106. package/dist/process/providerProcessErrors.js +25 -0
  107. package/dist/process/providerProcessErrors.js.map +1 -0
  108. package/dist/process/providerProcessOutput.d.ts +24 -0
  109. package/dist/process/providerProcessOutput.d.ts.map +1 -0
  110. package/dist/process/providerProcessOutput.js +52 -0
  111. package/dist/process/providerProcessOutput.js.map +1 -0
  112. package/dist/process/providerProcessSupervisor.d.ts +40 -0
  113. package/dist/process/providerProcessSupervisor.d.ts.map +1 -0
  114. package/dist/process/providerProcessSupervisor.js +305 -0
  115. package/dist/process/providerProcessSupervisor.js.map +1 -0
  116. package/dist/process/providerProcessTypes.d.ts +114 -0
  117. package/dist/process/providerProcessTypes.d.ts.map +1 -0
  118. package/dist/process/providerProcessTypes.js +30 -0
  119. package/dist/process/providerProcessTypes.js.map +1 -0
  120. package/dist/process/providerProcessValidation.d.ts +26 -0
  121. package/dist/process/providerProcessValidation.d.ts.map +1 -0
  122. package/dist/process/providerProcessValidation.js +112 -0
  123. package/dist/process/providerProcessValidation.js.map +1 -0
  124. package/dist/process/providerProcessWorkspace.d.ts +38 -0
  125. package/dist/process/providerProcessWorkspace.d.ts.map +1 -0
  126. package/dist/process/providerProcessWorkspace.js +86 -0
  127. package/dist/process/providerProcessWorkspace.js.map +1 -0
  128. package/dist/providers/claudeLocalProvider.d.ts +68 -0
  129. package/dist/providers/claudeLocalProvider.d.ts.map +1 -0
  130. package/dist/providers/claudeLocalProvider.js +217 -0
  131. package/dist/providers/claudeLocalProvider.js.map +1 -0
  132. package/dist/providers/claudeStreamJsonParser.d.ts +39 -0
  133. package/dist/providers/claudeStreamJsonParser.d.ts.map +1 -0
  134. package/dist/providers/claudeStreamJsonParser.js +180 -0
  135. package/dist/providers/claudeStreamJsonParser.js.map +1 -0
  136. package/dist/providers/codexExecJsonParser.d.ts +38 -0
  137. package/dist/providers/codexExecJsonParser.d.ts.map +1 -0
  138. package/dist/providers/codexExecJsonParser.js +245 -0
  139. package/dist/providers/codexExecJsonParser.js.map +1 -0
  140. package/dist/providers/codexLocalProvider.d.ts +46 -0
  141. package/dist/providers/codexLocalProvider.d.ts.map +1 -0
  142. package/dist/providers/codexLocalProvider.js +430 -0
  143. package/dist/providers/codexLocalProvider.js.map +1 -0
  144. package/dist/providers/codexModelCatalog.d.ts +13 -0
  145. package/dist/providers/codexModelCatalog.d.ts.map +1 -0
  146. package/dist/providers/codexModelCatalog.js +133 -0
  147. package/dist/providers/codexModelCatalog.js.map +1 -0
  148. package/dist/providers/fixtureProvider.d.ts +14 -0
  149. package/dist/providers/fixtureProvider.d.ts.map +1 -0
  150. package/dist/providers/fixtureProvider.js +160 -0
  151. package/dist/providers/fixtureProvider.js.map +1 -0
  152. package/dist/providers/providerDiscovery.d.ts +24 -0
  153. package/dist/providers/providerDiscovery.d.ts.map +1 -0
  154. package/dist/providers/providerDiscovery.js +128 -0
  155. package/dist/providers/providerDiscovery.js.map +1 -0
  156. package/dist/providers/providerErrors.d.ts +64 -0
  157. package/dist/providers/providerErrors.d.ts.map +1 -0
  158. package/dist/providers/providerErrors.js +101 -0
  159. package/dist/providers/providerErrors.js.map +1 -0
  160. package/dist/providers/providerEvents.d.ts +63 -0
  161. package/dist/providers/providerEvents.d.ts.map +1 -0
  162. package/dist/providers/providerEvents.js +86 -0
  163. package/dist/providers/providerEvents.js.map +1 -0
  164. package/dist/providers/providerRegistry.d.ts +31 -0
  165. package/dist/providers/providerRegistry.d.ts.map +1 -0
  166. package/dist/providers/providerRegistry.js +234 -0
  167. package/dist/providers/providerRegistry.js.map +1 -0
  168. package/dist/providers/providerSafety.d.ts +17 -0
  169. package/dist/providers/providerSafety.d.ts.map +1 -0
  170. package/dist/providers/providerSafety.js +36 -0
  171. package/dist/providers/providerSafety.js.map +1 -0
  172. package/dist/providers/providerTypes.d.ts +212 -0
  173. package/dist/providers/providerTypes.d.ts.map +1 -0
  174. package/dist/providers/providerTypes.js +15 -0
  175. package/dist/providers/providerTypes.js.map +1 -0
  176. package/dist/providers/xenoLocalProvider.d.ts +35 -0
  177. package/dist/providers/xenoLocalProvider.d.ts.map +1 -0
  178. package/dist/providers/xenoLocalProvider.js +159 -0
  179. package/dist/providers/xenoLocalProvider.js.map +1 -0
  180. package/dist/sandbox/providerSandbox.d.ts +35 -0
  181. package/dist/sandbox/providerSandbox.d.ts.map +1 -0
  182. package/dist/sandbox/providerSandbox.js +93 -0
  183. package/dist/sandbox/providerSandbox.js.map +1 -0
  184. package/dist/sandbox/providerSandboxAudit.d.ts +12 -0
  185. package/dist/sandbox/providerSandboxAudit.d.ts.map +1 -0
  186. package/dist/sandbox/providerSandboxAudit.js +25 -0
  187. package/dist/sandbox/providerSandboxAudit.js.map +1 -0
  188. package/dist/sandbox/providerSandboxDiagnostics.d.ts +13 -0
  189. package/dist/sandbox/providerSandboxDiagnostics.d.ts.map +1 -0
  190. package/dist/sandbox/providerSandboxDiagnostics.js +28 -0
  191. package/dist/sandbox/providerSandboxDiagnostics.js.map +1 -0
  192. package/dist/sandbox/providerSandboxTypes.d.ts +138 -0
  193. package/dist/sandbox/providerSandboxTypes.d.ts.map +1 -0
  194. package/dist/sandbox/providerSandboxTypes.js +17 -0
  195. package/dist/sandbox/providerSandboxTypes.js.map +1 -0
  196. package/dist/sandbox/sandboxCancellation.d.ts +6 -0
  197. package/dist/sandbox/sandboxCancellation.d.ts.map +1 -0
  198. package/dist/sandbox/sandboxCancellation.js +24 -0
  199. package/dist/sandbox/sandboxCancellation.js.map +1 -0
  200. package/dist/sandbox/sandboxErrors.d.ts +17 -0
  201. package/dist/sandbox/sandboxErrors.d.ts.map +1 -0
  202. package/dist/sandbox/sandboxErrors.js +21 -0
  203. package/dist/sandbox/sandboxErrors.js.map +1 -0
  204. package/dist/sandbox/sandboxFilesystem.d.ts +14 -0
  205. package/dist/sandbox/sandboxFilesystem.d.ts.map +1 -0
  206. package/dist/sandbox/sandboxFilesystem.js +51 -0
  207. package/dist/sandbox/sandboxFilesystem.js.map +1 -0
  208. package/dist/sandbox/sandboxNetwork.d.ts +14 -0
  209. package/dist/sandbox/sandboxNetwork.d.ts.map +1 -0
  210. package/dist/sandbox/sandboxNetwork.js +60 -0
  211. package/dist/sandbox/sandboxNetwork.js.map +1 -0
  212. package/dist/sandbox/sandboxSecrets.d.ts +17 -0
  213. package/dist/sandbox/sandboxSecrets.d.ts.map +1 -0
  214. package/dist/sandbox/sandboxSecrets.js +61 -0
  215. package/dist/sandbox/sandboxSecrets.js.map +1 -0
  216. package/dist/sandbox/sandboxTerminal.d.ts +14 -0
  217. package/dist/sandbox/sandboxTerminal.d.ts.map +1 -0
  218. package/dist/sandbox/sandboxTerminal.js +32 -0
  219. package/dist/sandbox/sandboxTerminal.js.map +1 -0
  220. package/dist/security/authPolicy.d.ts +31 -0
  221. package/dist/security/authPolicy.d.ts.map +1 -0
  222. package/dist/security/authPolicy.js +72 -0
  223. package/dist/security/authPolicy.js.map +1 -0
  224. package/dist/security/capabilityGate.d.ts +16 -0
  225. package/dist/security/capabilityGate.d.ts.map +1 -0
  226. package/dist/security/capabilityGate.js +101 -0
  227. package/dist/security/capabilityGate.js.map +1 -0
  228. package/dist/security/egressPolicy.d.ts +31 -0
  229. package/dist/security/egressPolicy.d.ts.map +1 -0
  230. package/dist/security/egressPolicy.js +120 -0
  231. package/dist/security/egressPolicy.js.map +1 -0
  232. package/dist/security/redaction.d.ts +16 -0
  233. package/dist/security/redaction.d.ts.map +1 -0
  234. package/dist/security/redaction.js +65 -0
  235. package/dist/security/redaction.js.map +1 -0
  236. package/dist/security/secretBinding.d.ts +34 -0
  237. package/dist/security/secretBinding.d.ts.map +1 -0
  238. package/dist/security/secretBinding.js +66 -0
  239. package/dist/security/secretBinding.js.map +1 -0
  240. package/dist/security/secretStore.d.ts +37 -0
  241. package/dist/security/secretStore.d.ts.map +1 -0
  242. package/dist/security/secretStore.js +55 -0
  243. package/dist/security/secretStore.js.map +1 -0
  244. package/dist/security/securityDiagnostics.d.ts +39 -0
  245. package/dist/security/securityDiagnostics.d.ts.map +1 -0
  246. package/dist/security/securityDiagnostics.js +36 -0
  247. package/dist/security/securityDiagnostics.js.map +1 -0
  248. package/dist/security/securityTypes.d.ts +77 -0
  249. package/dist/security/securityTypes.d.ts.map +1 -0
  250. package/dist/security/securityTypes.js +17 -0
  251. package/dist/security/securityTypes.js.map +1 -0
  252. package/dist/sessionStore.d.ts +33 -0
  253. package/dist/sessionStore.d.ts.map +1 -0
  254. package/dist/sessionStore.js +42 -0
  255. package/dist/sessionStore.js.map +1 -0
  256. package/dist/stdioJsonRpc.d.ts +43 -0
  257. package/dist/stdioJsonRpc.d.ts.map +1 -0
  258. package/dist/stdioJsonRpc.js +219 -0
  259. package/dist/stdioJsonRpc.js.map +1 -0
  260. package/dist/types.d.ts +78 -0
  261. package/dist/types.d.ts.map +1 -0
  262. package/dist/types.js +12 -0
  263. package/dist/types.js.map +1 -0
  264. package/dist/version.d.ts +7 -0
  265. package/dist/version.d.ts.map +1 -0
  266. package/dist/version.js +7 -0
  267. package/dist/version.js.map +1 -0
  268. package/package.json +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerTypes.d.ts","sourceRoot":"","sources":["../../src/providers/providerTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Provider adapter contract for @xenosystem/acp-agent (XACP-005 foundation).
3
+ *
4
+ * A *provider* produces an agent's response. The fixture provider is the only IMPLEMENTED
5
+ * provider in XACP-005 — this file defines the contract that future Codex/Claude/Gemini/
6
+ * OpenCode/Hermes/XENO-authored adapters will implement, so they can be added cleanly,
7
+ * safely, and testably WITHOUT mixing real-provider risk into the certified fixture endpoint.
8
+ *
9
+ * The contract is protocol-neutral: providers emit normalized `ProviderEvent`s (see
10
+ * providerEvents.ts); the ACP server maps those to ACP `session/update` notifications. A
11
+ * provider NEVER writes to stdout and NEVER executes tools/fs/terminal/network itself in
12
+ * XACP-005. The contract does NOT depend on XENO Hub.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=providerTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerTypes.js","sourceRoot":"","sources":["../../src/providers/providerTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * `xeno-local` — the FIRST real (non-fixture) provider adapter (XACP-014 spike).
3
+ *
4
+ * It is a XENO-OWNED, deterministic, LOCAL cooperative adapter. It is NOT a third-party provider
5
+ * and NOT Codex/Claude/Gemini/OpenCode/Kimi/GLM/Hermes. It proves the real provider-adapter path end to
6
+ * end through the FROZEN v1 contract: definition → policy → approval → safety gate → sandbox →
7
+ * minimal process supervisor → adapter stdout protocol → ProviderEvent → ACP session/update.
8
+ *
9
+ * It has NO auth, NO network, NO filesystem-write, NO terminal authority. It declares
10
+ * `filesystem: workspace-scoped` truthfully (its process runs in a supervisor-owned temp
11
+ * workspace), which routes it through the manual-approval gate — so it never runs "just because
12
+ * it exists". The runtime delegates to the XACP-011 harness (`runAdapterPrompt`); the adapter
13
+ * process is `node <cli.js> adapter --provider xeno-local` (this package's own source).
14
+ */
15
+ import type { ProviderCapabilitySet, ProviderDefinition } from "./providerTypes.js";
16
+ export declare const XENO_LOCAL_ID = "xeno-local";
17
+ export declare const XENO_LOCAL_FINAL_TEXT = "XENO Local Adapter completed the request through the v1 provider runtime contract.";
18
+ export declare const XENO_LOCAL_CAPABILITIES: ProviderCapabilitySet;
19
+ export type XenoLocalMode = "normal" | "delayed" | "failed" | "malformed" | "stderr-secret";
20
+ /**
21
+ * The deterministic adapter PROCESS output: emit v1 protocol JSON lines via `write`. This is the
22
+ * body of `cli.js adapter --provider xeno-local`. stdout = protocol only; no network/secrets/fs.
23
+ */
24
+ export declare function emitXenoLocalStream(write: (line: string) => void, opts?: {
25
+ mode?: XenoLocalMode;
26
+ requestId?: string;
27
+ }): void;
28
+ /** The canonical adapter PROCESS command for a given request/mode (no shell; argv only). */
29
+ export declare function xenoLocalAdapterCommand(requestId: string, mode?: XenoLocalMode): {
30
+ executable: string;
31
+ args: string[];
32
+ };
33
+ /** The XENO-owned `xeno-local` provider definition (a REAL, enabled, approval-gated provider). */
34
+ export declare function createXenoLocalDefinition(): ProviderDefinition;
35
+ //# sourceMappingURL=xenoLocalProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xenoLocalProvider.d.ts","sourceRoot":"","sources":["../../src/providers/xenoLocalProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAOnB,MAAM,oBAAoB,CAAC;AAG5B,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,qBAAqB,uFACoD,CAAC;AAEvF,eAAO,MAAM,uBAAuB,EAAE,qBAYrC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC;AAE5F;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,IAAI,CAuCN;AAED,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,aAAwB,GAAG;IAC1F,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAGA;AAwDD,kGAAkG;AAClG,wBAAgB,yBAAyB,IAAI,kBAAkB,CAuC9D"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * `xeno-local` — the FIRST real (non-fixture) provider adapter (XACP-014 spike).
3
+ *
4
+ * It is a XENO-OWNED, deterministic, LOCAL cooperative adapter. It is NOT a third-party provider
5
+ * and NOT Codex/Claude/Gemini/OpenCode/Kimi/GLM/Hermes. It proves the real provider-adapter path end to
6
+ * end through the FROZEN v1 contract: definition → policy → approval → safety gate → sandbox →
7
+ * minimal process supervisor → adapter stdout protocol → ProviderEvent → ACP session/update.
8
+ *
9
+ * It has NO auth, NO network, NO filesystem-write, NO terminal authority. It declares
10
+ * `filesystem: workspace-scoped` truthfully (its process runs in a supervisor-owned temp
11
+ * workspace), which routes it through the manual-approval gate — so it never runs "just because
12
+ * it exists". The runtime delegates to the XACP-011 harness (`runAdapterPrompt`); the adapter
13
+ * process is `node <cli.js> adapter --provider xeno-local` (this package's own source).
14
+ */
15
+ import { fileURLToPath } from "node:url";
16
+ import { runAdapterPrompt } from "../adapters/adapterProcessHarness.js";
17
+ import { ProviderConfigurationError } from "./providerErrors.js";
18
+ import { staticModelDiscovery } from "./providerDiscovery.js";
19
+ export const XENO_LOCAL_ID = "xeno-local";
20
+ export const XENO_LOCAL_FINAL_TEXT = "XENO Local Adapter completed the request through the v1 provider runtime contract.";
21
+ export const XENO_LOCAL_CAPABILITIES = {
22
+ streamsText: true,
23
+ emitsPlan: true,
24
+ emitsToolCalls: true,
25
+ emitsUsage: true,
26
+ supportsCancel: true,
27
+ supportsMultipleSessions: true,
28
+ requiresAuth: false,
29
+ usesNetwork: false,
30
+ canReadFiles: true, // within the supervisor-owned temp workspace (honest → requires approval)
31
+ canWriteFiles: false,
32
+ canRunTerminal: false,
33
+ };
34
+ /**
35
+ * The deterministic adapter PROCESS output: emit v1 protocol JSON lines via `write`. This is the
36
+ * body of `cli.js adapter --provider xeno-local`. stdout = protocol only; no network/secrets/fs.
37
+ */
38
+ export function emitXenoLocalStream(write, opts = {}) {
39
+ const mode = opts.mode ?? "normal";
40
+ const requestId = opts.requestId ?? "xeno-local-req";
41
+ let seq = 0;
42
+ const emit = (payload) => {
43
+ seq += 1;
44
+ write(JSON.stringify({ version: 1, eventId: `${requestId}-evt-${seq}`, timestamp: `t${seq}`, requestId, ...payload }) +
45
+ "\n");
46
+ };
47
+ if (mode === "malformed") {
48
+ emit({ type: "message_delta", text: "valid line" });
49
+ write("THIS IS NOT JSON\n");
50
+ return;
51
+ }
52
+ if (mode === "stderr-secret") {
53
+ // FAKE token to stderr (handled by the caller); stdout stays clean.
54
+ process.stderr.write("[xeno-local-adapter] debug token: sk-XENOLOCALFAKEKEY0000000000000000\n");
55
+ emit({ type: "message_delta", text: "normal visible output" });
56
+ emit({ type: "completed", stopReason: "end_turn" });
57
+ return;
58
+ }
59
+ if (mode === "failed") {
60
+ emit({ type: "message_delta", text: "partial output before failure" });
61
+ emit({ type: "failed", message: "xeno-local adapter failure (deterministic)" });
62
+ return;
63
+ }
64
+ // normal + delayed share the full deterministic stream.
65
+ emit({ type: "plan", entries: [{ content: "Interpret the request", priority: "high", status: "completed" }] });
66
+ emit({ type: "message_delta", text: "XENO Local Adapter " });
67
+ emit({ type: "message_delta", text: "processed the request deterministically. " });
68
+ emit({ type: "message_delta", text: XENO_LOCAL_FINAL_TEXT });
69
+ emit({ type: "tool_started", toolCallId: "xeno-local-1", title: "Local inspection", kind: "read" });
70
+ emit({ type: "tool_completed", toolCallId: "xeno-local-1" });
71
+ emit({ type: "usage", used: 9, size: 1000 });
72
+ emit({ type: "completed", stopReason: "end_turn" });
73
+ }
74
+ /** The canonical adapter PROCESS command for a given request/mode (no shell; argv only). */
75
+ export function xenoLocalAdapterCommand(requestId, mode = "normal") {
76
+ const cli = fileURLToPath(new URL("../cli.js", import.meta.url));
77
+ return { executable: process.execPath, args: [cli, "adapter", "--provider", XENO_LOCAL_ID, "--mode", mode, "--request-id", requestId] };
78
+ }
79
+ class XenoLocalRuntime {
80
+ definition;
81
+ options;
82
+ sessionSeq = 0;
83
+ promptCount = 0;
84
+ constructor(definition, config) {
85
+ this.definition = definition;
86
+ this.options = (config?.options ?? {});
87
+ }
88
+ initialize() { }
89
+ createSession() {
90
+ this.sessionSeq += 1;
91
+ return { sessionId: `${XENO_LOCAL_ID}-session-${this.sessionSeq}`, createdAt: `s${this.sessionSeq}` };
92
+ }
93
+ cancel() {
94
+ /* cancellation flows via the prompt AbortSignal into the supervisor */
95
+ }
96
+ dispose() { }
97
+ diagnostics() {
98
+ return { provider: this.definition.id, sessionsCreated: this.sessionSeq, promptsRun: this.promptCount };
99
+ }
100
+ async prompt(request, ctx) {
101
+ this.promptCount += 1;
102
+ if (!this.options.runnability) {
103
+ // Fail closed: the harness must be able to re-verify runnability (policy + approval).
104
+ throw new ProviderConfigurationError({
105
+ safeMessage: "xeno-local requires runnability inputs (policy + approval) at runtime",
106
+ providerId: this.definition.id,
107
+ });
108
+ }
109
+ const mode = this.options.mode ?? "normal";
110
+ const harness = await runAdapterPrompt({
111
+ definition: this.definition,
112
+ runnability: this.options.runnability,
113
+ request,
114
+ adapter: xenoLocalAdapterCommand(request.requestId, mode),
115
+ signal: ctx.signal,
116
+ emit: ctx.emit,
117
+ ...(this.options.timeoutMs !== undefined ? { timeoutMs: this.options.timeoutMs } : {}),
118
+ });
119
+ return harness.result;
120
+ }
121
+ }
122
+ /** The XENO-owned `xeno-local` provider definition (a REAL, enabled, approval-gated provider). */
123
+ export function createXenoLocalDefinition() {
124
+ const definition = {
125
+ id: XENO_LOCAL_ID,
126
+ displayName: "XENO Local Adapter",
127
+ description: "Deterministic XENO-owned local adapter proving the real provider-adapter path (no auth, no network, no fs-write, no terminal).",
128
+ kind: "local-adapter",
129
+ trustClass: "xeno-owned",
130
+ authRequirement: "none",
131
+ networkRequirement: "none",
132
+ ioAuthority: { filesystem: "workspace-scoped", terminal: "none" },
133
+ capabilities: XENO_LOCAL_CAPABILITIES,
134
+ enabled: true,
135
+ metadata: {
136
+ acpEntrypoint: "adapter",
137
+ installedLocally: true,
138
+ displayAlias: "XENO Local",
139
+ note: "XACP-014 XENO-owned local adapter spike",
140
+ versionReadiness: {
141
+ status: "known_good",
142
+ installedVersion: "built-in",
143
+ minimumKnownGoodVersion: "built-in",
144
+ safeUpgradeHint: "Upgrade xeno-acp to update xeno-local.",
145
+ },
146
+ streaming: {
147
+ mode: "buffered",
148
+ safeMessage: "xeno-local adapter stdout is buffered by the minimal supervisor before ACP updates are emitted.",
149
+ },
150
+ setupHints: ["Review policy.", "Approve provider.", "Run providers test.", "Launch or certify the ACP endpoint."],
151
+ },
152
+ modelDiscovery: staticModelDiscovery("xeno-local exposes one deterministic local adapter mode.", [{ id: "xeno-local-default", label: "XENO Local default", default: true, available: true, reason: null }]),
153
+ createRuntime(config) {
154
+ return new XenoLocalRuntime(definition, config);
155
+ },
156
+ };
157
+ return definition;
158
+ }
159
+ //# sourceMappingURL=xenoLocalProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xenoLocalProvider.js","sourceRoot":"","sources":["../../src/providers/xenoLocalProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAa9D,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAC1C,MAAM,CAAC,MAAM,qBAAqB,GAChC,oFAAoF,CAAC;AAEvF,MAAM,CAAC,MAAM,uBAAuB,GAA0B;IAC5D,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,IAAI;IACpB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;IACpB,wBAAwB,EAAE,IAAI;IAC9B,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,IAAI,EAAE,0EAA0E;IAC9F,aAAa,EAAE,KAAK;IACpB,cAAc,EAAE,KAAK;CACtB,CAAC;AAIF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAA6B,EAC7B,OAAqD,EAAE;IAEvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC;IACrD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,IAAI,GAAG,CAAC,OAAgC,EAAQ,EAAE;QACtD,GAAG,IAAI,CAAC,CAAC;QACT,KAAK,CACH,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;YAC7G,IAAI,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACpD,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IACD,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,oEAAoE;QACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAChG,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/G,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAC,CAAC;IACnF,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,OAAsB,QAAQ;IAIvF,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,CAAC;AAC1I,CAAC;AASD,MAAM,gBAAgB;IACX,UAAU,CAAqB;IACvB,OAAO,CAAmB;IACnC,UAAU,GAAG,CAAC,CAAC;IACf,WAAW,GAAG,CAAC,CAAC;IAExB,YAAY,UAA8B,EAAE,MAA8B;QACxE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAqB,CAAC;IAC7D,CAAC;IAED,UAAU,KAAU,CAAC;IACrB,aAAa;QACX,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,OAAO,EAAE,SAAS,EAAE,GAAG,aAAa,YAAY,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;IACxG,CAAC;IACD,MAAM;QACJ,uEAAuE;IACzE,CAAC;IACD,OAAO,KAAU,CAAC;IAClB,WAAW;QACT,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1G,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA8B,EAAE,GAA2B;QACtE,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC9B,sFAAsF;YACtF,MAAM,IAAI,0BAA0B,CAAC;gBACnC,WAAW,EAAE,uEAAuE;gBACpF,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;YACrC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,OAAO;YACP,OAAO,EAAE,uBAAuB,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC;YACzD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvF,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;CACF;AAED,kGAAkG;AAClG,MAAM,UAAU,yBAAyB;IACvC,MAAM,UAAU,GAAuB;QACrC,EAAE,EAAE,aAAa;QACjB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EACT,gIAAgI;QAClI,IAAI,EAAE,eAAe;QACrB,UAAU,EAAE,YAAY;QACxB,eAAe,EAAE,MAAM;QACvB,kBAAkB,EAAE,MAAM;QAC1B,WAAW,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE;QACjE,YAAY,EAAE,uBAAuB;QACrC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE;YACR,aAAa,EAAE,SAAS;YACxB,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,yCAAyC;YAC/C,gBAAgB,EAAE;gBAChB,MAAM,EAAE,YAAY;gBACpB,gBAAgB,EAAE,UAAU;gBAC5B,uBAAuB,EAAE,UAAU;gBACnC,eAAe,EAAE,wCAAwC;aAC1D;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,iGAAiG;aAC/G;YACD,UAAU,EAAE,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,qCAAqC,CAAC;SAClH;QACD,cAAc,EAAE,oBAAoB,CAClC,0DAA0D,EAC1D,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC1G;QACD,aAAa,CAAC,MAA8B;YAC1C,OAAO,IAAI,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * `createProviderSandboxContext` — the runtime enforcement boundary.
3
+ *
4
+ * Created ONLY after a provider resolves to `runnable` (definition + policy + approval). For a
5
+ * blocked / unimplemented / unapproved provider, creation fails closed. Every capability is
6
+ * deny-by-default and policy-gated; the fixture provider receives an allowed context but uses
7
+ * none of the guarded capabilities.
8
+ *
9
+ * In-process, DI-based enforcement — NOT a hostile-code OS sandbox.
10
+ */
11
+ import type { ProviderDefinition } from "../providers/providerTypes.js";
12
+ import type { ProviderPolicyEntry } from "../config/providerPolicySchema.js";
13
+ import type { ProviderApprovalRecord } from "../config/providerApprovalTypes.js";
14
+ import type { FsBackend, NetworkTransport, ProviderSandboxContext, SecretResolver, TerminalRunner } from "./providerSandboxTypes.js";
15
+ /** TEST-ONLY injected backends. None of these exist in production; defaults deny everything. */
16
+ export interface SandboxTransports {
17
+ network?: NetworkTransport;
18
+ secrets?: SecretResolver;
19
+ filesystem?: FsBackend;
20
+ filesystemRoot?: string;
21
+ terminal?: TerminalRunner;
22
+ }
23
+ export interface CreateSandboxOptions {
24
+ def: ProviderDefinition;
25
+ sessionId: string;
26
+ requestId: string;
27
+ signal: AbortSignal;
28
+ policyEntry?: ProviderPolicyEntry;
29
+ approval?: ProviderApprovalRecord;
30
+ policyInvalid?: boolean;
31
+ transports?: SandboxTransports;
32
+ now?: () => string;
33
+ }
34
+ export declare function createProviderSandboxContext(opts: CreateSandboxOptions): ProviderSandboxContext;
35
+ //# sourceMappingURL=providerSandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/providerSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACf,MAAM,2BAA2B,CAAC;AAEnC,gGAAgG;AAChG,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,kBAAkB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,oBAAoB,GAAG,sBAAsB,CA4E/F"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * `createProviderSandboxContext` — the runtime enforcement boundary.
3
+ *
4
+ * Created ONLY after a provider resolves to `runnable` (definition + policy + approval). For a
5
+ * blocked / unimplemented / unapproved provider, creation fails closed. Every capability is
6
+ * deny-by-default and policy-gated; the fixture provider receives an allowed context but uses
7
+ * none of the guarded capabilities.
8
+ *
9
+ * In-process, DI-based enforcement — NOT a hostile-code OS sandbox.
10
+ */
11
+ import { createSandboxAudit } from "./providerSandboxAudit.js";
12
+ import { createSandboxNetwork } from "./sandboxNetwork.js";
13
+ import { createSandboxSecrets } from "./sandboxSecrets.js";
14
+ import { createSandboxFilesystem } from "./sandboxFilesystem.js";
15
+ import { createSandboxTerminal } from "./sandboxTerminal.js";
16
+ import { createSandboxCancellation } from "./sandboxCancellation.js";
17
+ import { createSandboxDiagnostics } from "./providerSandboxDiagnostics.js";
18
+ import { SandboxError } from "./sandboxErrors.js";
19
+ import { applyPolicyToDefinition } from "../config/providerPolicyConfig.js";
20
+ import { resolveProviderStatus } from "../config/providerRunnability.js";
21
+ export function createProviderSandboxContext(opts) {
22
+ const now = opts.now ?? (() => new Date().toISOString());
23
+ const status = resolveProviderStatus(opts.def, {
24
+ ...(opts.policyEntry ? { policyEntry: opts.policyEntry } : {}),
25
+ ...(opts.approval ? { approval: opts.approval } : {}),
26
+ ...(opts.policyInvalid !== undefined ? { policyInvalid: opts.policyInvalid } : {}),
27
+ });
28
+ const merged = opts.policyEntry ? applyPolicyToDefinition(opts.def, opts.policyEntry) : opts.def;
29
+ const audit = createSandboxAudit({
30
+ providerId: opts.def.id,
31
+ sessionId: opts.sessionId,
32
+ requestId: opts.requestId,
33
+ now,
34
+ });
35
+ if (!status.runnable) {
36
+ audit.record("sandbox.context.denied", `sandbox context denied: ${status.status}`, { status: status.status });
37
+ throw new SandboxError({
38
+ code: "SANDBOX_NOT_ALLOWED",
39
+ safeMessage: `cannot create a sandbox context for '${opts.def.id}': ${status.status}`,
40
+ providerId: opts.def.id,
41
+ });
42
+ }
43
+ const network = createSandboxNetwork({
44
+ providerId: opts.def.id,
45
+ ...(merged.egressPolicy ? { egressPolicy: merged.egressPolicy } : {}),
46
+ audit,
47
+ ...(opts.transports?.network ? { transport: opts.transports.network } : {}),
48
+ });
49
+ const secrets = createSandboxSecrets({
50
+ providerId: opts.def.id,
51
+ ...(merged.authPolicy ? { authPolicy: merged.authPolicy } : {}),
52
+ audit,
53
+ ...(opts.transports?.secrets ? { resolver: opts.transports.secrets } : {}),
54
+ });
55
+ const filesystem = createSandboxFilesystem({
56
+ providerId: opts.def.id,
57
+ filesystem: merged.ioAuthority.filesystem,
58
+ audit,
59
+ ...(opts.transports?.filesystemRoot ? { workspaceRoot: opts.transports.filesystemRoot } : {}),
60
+ ...(opts.transports?.filesystem ? { backend: opts.transports.filesystem } : {}),
61
+ });
62
+ const terminal = createSandboxTerminal({
63
+ providerId: opts.def.id,
64
+ terminal: merged.ioAuthority.terminal,
65
+ audit,
66
+ ...(opts.transports?.terminal ? { runner: opts.transports.terminal } : {}),
67
+ });
68
+ const cancellation = createSandboxCancellation(opts.signal);
69
+ const diagnostics = createSandboxDiagnostics({
70
+ providerId: opts.def.id,
71
+ policyHash: status.policyHash ?? "",
72
+ definitionHash: status.defHash,
73
+ decisionStatus: status.status,
74
+ audit,
75
+ });
76
+ audit.record("sandbox.context.created", `sandbox context created for '${opts.def.id}'`);
77
+ return {
78
+ providerId: opts.def.id,
79
+ sessionId: opts.sessionId,
80
+ requestId: opts.requestId,
81
+ policyHash: status.policyHash ?? "",
82
+ definitionHash: status.defHash,
83
+ safetyDecision: status.gate.overallDecision,
84
+ network,
85
+ secrets,
86
+ filesystem,
87
+ terminal,
88
+ diagnostics,
89
+ audit,
90
+ cancellation,
91
+ };
92
+ }
93
+ //# sourceMappingURL=providerSandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSandbox.js","sourceRoot":"","sources":["../../src/sandbox/providerSandbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Append-only sandbox audit log. Events carry safe messages + redacted details only — never
3
+ * secret values, raw headers/bodies, or stack traces.
4
+ */
5
+ import type { SandboxAudit } from "./providerSandboxTypes.js";
6
+ export declare function createSandboxAudit(opts: {
7
+ providerId: string;
8
+ sessionId: string;
9
+ requestId: string;
10
+ now: () => string;
11
+ }): SandboxAudit;
12
+ //# sourceMappingURL=providerSandboxAudit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSandboxAudit.d.ts","sourceRoot":"","sources":["../../src/sandbox/providerSandboxAudit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAuC,MAAM,2BAA2B,CAAC;AAEnG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,MAAM,CAAC;CACnB,GAAG,YAAY,CAmBf"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Append-only sandbox audit log. Events carry safe messages + redacted details only — never
3
+ * secret values, raw headers/bodies, or stack traces.
4
+ */
5
+ export function createSandboxAudit(opts) {
6
+ const events = [];
7
+ let seq = 0;
8
+ return {
9
+ record(kind, safeMessage, redactedDetails) {
10
+ seq += 1;
11
+ events.push({
12
+ eventId: `${opts.requestId}-aud-${seq}`,
13
+ timestamp: opts.now(),
14
+ providerId: opts.providerId,
15
+ sessionId: opts.sessionId,
16
+ requestId: opts.requestId,
17
+ kind,
18
+ safeMessage,
19
+ ...(redactedDetails ? { redactedDetails } : {}),
20
+ });
21
+ },
22
+ events: () => [...events],
23
+ };
24
+ }
25
+ //# sourceMappingURL=providerSandboxAudit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSandboxAudit.js","sourceRoot":"","sources":["../../src/sandbox/providerSandboxAudit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,UAAU,kBAAkB,CAAC,IAKlC;IACC,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,OAAO;QACL,MAAM,CAAC,IAAsB,EAAE,WAAmB,EAAE,eAAyC;YAC3F,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,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,13 @@
1
+ /**
2
+ * Redacted sandbox diagnostics summary (deny counts, audit count, decision status). No secret
3
+ * values, headers, bodies, or paths.
4
+ */
5
+ import type { SandboxAudit, SandboxDiagnosticsApi } from "./providerSandboxTypes.js";
6
+ export declare function createSandboxDiagnostics(opts: {
7
+ providerId: string;
8
+ policyHash: string;
9
+ definitionHash: string;
10
+ decisionStatus: string;
11
+ audit: SandboxAudit;
12
+ }): SandboxDiagnosticsApi;
13
+ //# sourceMappingURL=providerSandboxDiagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSandboxDiagnostics.d.ts","sourceRoot":"","sources":["../../src/sandbox/providerSandboxDiagnostics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAErF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;CACrB,GAAG,qBAAqB,CAsBxB"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Redacted sandbox diagnostics summary (deny counts, audit count, decision status). No secret
3
+ * values, headers, bodies, or paths.
4
+ */
5
+ export function createSandboxDiagnostics(opts) {
6
+ return {
7
+ summary() {
8
+ const events = opts.audit.events();
9
+ const count = (k) => events.filter((e) => e.kind === k).length;
10
+ const lastErr = [...events]
11
+ .reverse()
12
+ .find((e) => e.kind.endsWith("denied") || e.kind === "sandbox.provider.failed");
13
+ return {
14
+ providerId: opts.providerId,
15
+ policyHash: opts.policyHash,
16
+ definitionHash: opts.definitionHash,
17
+ decisionStatus: opts.decisionStatus,
18
+ auditEventCount: events.length,
19
+ deniedNetworkCount: count("sandbox.network.denied"),
20
+ deniedSecretCount: count("sandbox.secret.denied"),
21
+ deniedFilesystemCount: count("sandbox.filesystem.denied"),
22
+ deniedTerminalCount: count("sandbox.terminal.denied"),
23
+ ...(lastErr ? { lastErrorCode: lastErr.kind } : {}),
24
+ };
25
+ },
26
+ };
27
+ }
28
+ //# sourceMappingURL=providerSandboxDiagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSandboxDiagnostics.js","sourceRoot":"","sources":["../../src/sandbox/providerSandboxDiagnostics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,UAAU,wBAAwB,CAAC,IAMxC;IACC,OAAO;QACL,OAAO;YACL,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC/E,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC;iBACxB,OAAO,EAAE;iBACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC;YAClF,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,eAAe,EAAE,MAAM,CAAC,MAAM;gBAC9B,kBAAkB,EAAE,KAAK,CAAC,wBAAwB,CAAC;gBACnD,iBAAiB,EAAE,KAAK,CAAC,uBAAuB,CAAC;gBACjD,qBAAqB,EAAE,KAAK,CAAC,2BAA2B,CAAC;gBACzD,mBAAmB,EAAE,KAAK,CAAC,yBAAyB,CAAC;gBACrD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Provider sandbox execution types (XACP-008).
3
+ *
4
+ * The runtime ENFORCEMENT boundary future adapters run inside. A provider receives only a
5
+ * `ProviderSandboxContext` — never raw Node globals — and every capability is deny-by-default
6
+ * and policy-gated.
7
+ *
8
+ * HONEST SCOPE: this is an IN-PROCESS, dependency-injected provider sandbox. It enforces
9
+ * XENO-authored adapter behavior through guarded interfaces + audit + fail-closed defaults.
10
+ * It is NOT a hostile-code OS sandbox — true containment of untrusted native code would require
11
+ * a later process/OS-level isolation milestone.
12
+ *
13
+ * Leaf module: imports only from `../security/securityTypes.js` (avoids cycles with
14
+ * `../providers/providerTypes.js`, which references `ProviderSandboxContext`).
15
+ */
16
+ import type { ProviderSafetyDecision, ProviderSecretReference } from "../security/securityTypes.js";
17
+ export type SandboxIoLevel = "none" | "workspace-scoped" | "unknown";
18
+ export type SandboxAuditKind = "sandbox.context.created" | "sandbox.context.denied" | "sandbox.network.allowed" | "sandbox.network.denied" | "sandbox.secret.resolved" | "sandbox.secret.denied" | "sandbox.filesystem.denied" | "sandbox.terminal.denied" | "sandbox.provider.cancelled" | "sandbox.provider.failed";
19
+ export interface SandboxAuditEvent {
20
+ eventId: string;
21
+ timestamp: string;
22
+ providerId: string;
23
+ sessionId: string;
24
+ requestId: string;
25
+ kind: SandboxAuditKind;
26
+ safeMessage: string;
27
+ redactedDetails?: Record<string, unknown>;
28
+ }
29
+ export interface SandboxAudit {
30
+ record(kind: SandboxAuditKind, safeMessage: string, redactedDetails?: Record<string, unknown>): void;
31
+ events(): SandboxAuditEvent[];
32
+ }
33
+ export interface SandboxNetworkRequest {
34
+ url: string;
35
+ method?: string;
36
+ headers?: Record<string, string>;
37
+ bodyBytes?: number;
38
+ }
39
+ export interface SandboxNetworkResponse {
40
+ status: number;
41
+ headerCount?: number;
42
+ bodyBytes?: number;
43
+ }
44
+ /** Injected, TEST-ONLY transport. There is no default transport (default = deny). */
45
+ export type NetworkTransport = (req: SandboxNetworkRequest) => Promise<SandboxNetworkResponse>;
46
+ export interface SandboxNetwork {
47
+ validate(req: SandboxNetworkRequest): ProviderSafetyDecision;
48
+ request(req: SandboxNetworkRequest): Promise<SandboxNetworkResponse>;
49
+ diagnostics(): {
50
+ mode: string;
51
+ allowedHosts: string[];
52
+ attempts: number;
53
+ denied: number;
54
+ };
55
+ }
56
+ export interface ProviderSecretValue {
57
+ kind: "opaque-secret";
58
+ refId: string;
59
+ /** Opaque value — diagnostics/audit MUST NOT stringify this. */
60
+ value: string;
61
+ }
62
+ /** Injected, TEST-ONLY resolver. No default (default = unavailable/requires_binding). */
63
+ export type SecretResolver = (refId: string) => string | Promise<string>;
64
+ export interface SandboxSecrets {
65
+ listRefs(): ProviderSecretReference[];
66
+ resolve(refId: string): Promise<ProviderSecretValue>;
67
+ diagnostics(): {
68
+ refIds: string[];
69
+ resolved: number;
70
+ denied: number;
71
+ };
72
+ }
73
+ /** Injected, TEST-ONLY filesystem backend. No default (default = deny); paths are workspace-contained first. */
74
+ export interface FsBackend {
75
+ readText(path: string): Promise<string>;
76
+ writeText(path: string, content: string): Promise<void>;
77
+ }
78
+ export interface SandboxFilesystem {
79
+ readText(path: string): Promise<string>;
80
+ writeText(path: string, content: string): Promise<void>;
81
+ diagnostics(): {
82
+ filesystem: SandboxIoLevel;
83
+ denied: number;
84
+ };
85
+ }
86
+ export interface SandboxTerminalOptions {
87
+ cwd?: string;
88
+ timeoutMs?: number;
89
+ }
90
+ export interface SandboxTerminalResult {
91
+ exitCode: number | null;
92
+ outputBytes?: number;
93
+ }
94
+ /** Injected, TEST-ONLY runner. No default (default = deny). NEVER spawns in source. */
95
+ export type TerminalRunner = (command: string, args: string[], opts?: SandboxTerminalOptions) => Promise<SandboxTerminalResult>;
96
+ export interface SandboxTerminal {
97
+ run(command: string, args: string[], opts?: SandboxTerminalOptions): Promise<SandboxTerminalResult>;
98
+ diagnostics(): {
99
+ terminal: SandboxIoLevel;
100
+ denied: number;
101
+ };
102
+ }
103
+ export interface SandboxCancellation {
104
+ signal: AbortSignal;
105
+ throwIfCancelled(): void;
106
+ onCancel(fn: () => void): () => void;
107
+ }
108
+ export interface SandboxDiagnosticsSummary {
109
+ providerId: string;
110
+ policyHash: string;
111
+ definitionHash: string;
112
+ decisionStatus: string;
113
+ auditEventCount: number;
114
+ deniedNetworkCount: number;
115
+ deniedSecretCount: number;
116
+ deniedFilesystemCount: number;
117
+ deniedTerminalCount: number;
118
+ lastErrorCode?: string;
119
+ }
120
+ export interface SandboxDiagnosticsApi {
121
+ summary(): SandboxDiagnosticsSummary;
122
+ }
123
+ export interface ProviderSandboxContext {
124
+ providerId: string;
125
+ sessionId: string;
126
+ requestId: string;
127
+ policyHash: string;
128
+ definitionHash: string;
129
+ safetyDecision: ProviderSafetyDecision;
130
+ network: SandboxNetwork;
131
+ secrets: SandboxSecrets;
132
+ filesystem: SandboxFilesystem;
133
+ terminal: SandboxTerminal;
134
+ diagnostics: SandboxDiagnosticsApi;
135
+ audit: SandboxAudit;
136
+ cancellation: SandboxCancellation;
137
+ }
138
+ //# sourceMappingURL=providerSandboxTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSandboxTypes.d.ts","sourceRoot":"","sources":["../../src/sandbox/providerSandboxTypes.ts"],"names":[],"mappings":"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"}