@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,23 @@
1
+ /**
2
+ * Provider-adapter TEST harness (XACP-011).
3
+ *
4
+ * Drives the FULL future adapter seam with a harmless, deterministic, XENO-owned fixture adapter:
5
+ *
6
+ * resolveProviderStatus (policy + approval) → createProviderSandboxContext (XACP-008)
7
+ * → ProviderProcessSupervisor (XACP-010, shell:false) → parse adapter stdout
8
+ * → mapAdapterEvents → ProviderEvent[] → providerEventToAcpUpdate → ACP session/update
9
+ * → audit + diagnostics
10
+ *
11
+ * It NEVER runs a real provider CLI, makes no network call, loads no secrets, and never spawns a
12
+ * real adapter — only the fixture process passed in `config.adapter`. The harness fails closed:
13
+ * a provider that is not runnable gets no sandbox and no process. The minimal supervisor's honest
14
+ * classification (network/filesystem NOT enforced) is preserved in diagnostics.
15
+ */
16
+ import type { AdapterHarnessConfig, AdapterHarnessResult } from "./adapterHarnessTypes.js";
17
+ /**
18
+ * Run one prompt through the test adapter harness. Returns a structured result (it does not throw
19
+ * for an expected not-runnable / failure path); it throws `AdapterHarnessError` only for an
20
+ * internal harness fault.
21
+ */
22
+ export declare function runAdapterPrompt(config: AdapterHarnessConfig): Promise<AdapterHarnessResult>;
23
+ //# sourceMappingURL=adapterProcessHarness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapterProcessHarness.d.ts","sourceRoot":"","sources":["../../src/adapters/adapterProcessHarness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAuBH,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAO3F;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwJlG"}
@@ -0,0 +1,235 @@
1
+ /**
2
+ * Provider-adapter TEST harness (XACP-011).
3
+ *
4
+ * Drives the FULL future adapter seam with a harmless, deterministic, XENO-owned fixture adapter:
5
+ *
6
+ * resolveProviderStatus (policy + approval) → createProviderSandboxContext (XACP-008)
7
+ * → ProviderProcessSupervisor (XACP-010, shell:false) → parse adapter stdout
8
+ * → mapAdapterEvents → ProviderEvent[] → providerEventToAcpUpdate → ACP session/update
9
+ * → audit + diagnostics
10
+ *
11
+ * It NEVER runs a real provider CLI, makes no network call, loads no secrets, and never spawns a
12
+ * real adapter — only the fixture process passed in `config.adapter`. The harness fails closed:
13
+ * a provider that is not runnable gets no sandbox and no process. The minimal supervisor's honest
14
+ * classification (network/filesystem NOT enforced) is preserved in diagnostics.
15
+ */
16
+ import { resolveProviderStatus } from "../config/providerRunnability.js";
17
+ import { createProviderSandboxContext } from "../sandbox/providerSandbox.js";
18
+ import { createProviderProcessSupervisor } from "../process/providerProcessSupervisor.js";
19
+ import { createTempWorkspace, useExistingWorkspace } from "../process/providerProcessWorkspace.js";
20
+ import { providerEventToAcpUpdate } from "../providers/providerEvents.js";
21
+ import { ProviderAuthRequiredError, ProviderInternalError, ProviderProtocolError, ProviderRateLimitError, ProviderTimeoutError, ProviderUnavailableError, buildProviderAuthFailureDiagnostic, } from "../providers/providerErrors.js";
22
+ import { parseAdapterOutput } from "./adapterEventParser.js";
23
+ import { mapAdapterEvents } from "./adapterEventMapper.js";
24
+ import { buildAdapterHarnessDiagnostics } from "./adapterDiagnostics.js";
25
+ import { AdapterHarnessError } from "./adapterErrors.js";
26
+ const DEFAULT_TIMEOUT_MS = 5_000;
27
+ const DEFAULT_LIMIT_BYTES = 32 * 1024;
28
+ /**
29
+ * Run one prompt through the test adapter harness. Returns a structured result (it does not throw
30
+ * for an expected not-runnable / failure path); it throws `AdapterHarnessError` only for an
31
+ * internal harness fault.
32
+ */
33
+ export async function runAdapterPrompt(config) {
34
+ const { definition: def, request } = config;
35
+ let nowSeq = 0;
36
+ const now = config.now ?? (() => `t${++nowSeq}`);
37
+ const signal = config.signal ?? new AbortController().signal;
38
+ const collected = [];
39
+ const emit = (e) => {
40
+ collected.push(e);
41
+ config.emit?.(e);
42
+ };
43
+ // 1. Gate: definition + policy + approval. Fail closed before any sandbox/process.
44
+ const runnability = resolveProviderStatus(def, config.runnability);
45
+ const failResult = (error, disposition, supervisorDiag, truncated) => {
46
+ const acpUpdates = toAcpUpdates(collected);
47
+ const authFailure = buildProviderAuthFailureDiagnostic(error);
48
+ return {
49
+ runnability,
50
+ result: disposition === "cancelled" ? { disposition } : { disposition, error },
51
+ events: collected,
52
+ acpUpdates,
53
+ diagnostics: buildAdapterHarnessDiagnostics({
54
+ providerId: def.id,
55
+ runnableStatus: runnability.status,
56
+ eventsEmitted: collected.length,
57
+ parseDiagnostics: 0,
58
+ acpUpdates: acpUpdates.length,
59
+ ...(supervisorDiag ? { supervisor: supervisorDiag } : {}),
60
+ ...(authFailure ? { authFailure } : {}),
61
+ stdoutTruncated: truncated?.stdout ?? false,
62
+ stderrTruncated: truncated?.stderr ?? false,
63
+ }),
64
+ };
65
+ };
66
+ if (!runnability.runnable) {
67
+ return failResult(new ProviderInternalError({ safeMessage: `provider not runnable: ${runnability.status}`, providerId: def.id }), "failed");
68
+ }
69
+ // 2. Sandbox context — created BEFORE the supervisor; fails closed for a non-runnable provider.
70
+ try {
71
+ createProviderSandboxContext({
72
+ def,
73
+ sessionId: request.sessionId,
74
+ requestId: request.requestId,
75
+ signal,
76
+ ...(config.runnability.policyEntry ? { policyEntry: config.runnability.policyEntry } : {}),
77
+ ...(config.runnability.approval ? { approval: config.runnability.approval } : {}),
78
+ ...(config.runnability.policyInvalid !== undefined ? { policyInvalid: config.runnability.policyInvalid } : {}),
79
+ now,
80
+ });
81
+ }
82
+ catch (err) {
83
+ throw new AdapterHarnessError({
84
+ code: "ADAPTER_SANDBOX_DENIED",
85
+ safeMessage: "sandbox context denied for a provider that passed the gate (internal inconsistency)",
86
+ providerId: def.id,
87
+ redactedDetails: { cause: err instanceof Error ? err.name : "error" },
88
+ });
89
+ }
90
+ // 3. Workspace + supervisor config (no-shell launch, empty/test-only env, isolated cwd).
91
+ const ws = config.cwd ? useExistingWorkspace(def.id, config.cwd) : await createTempWorkspace(def.id);
92
+ const supervisor = config.supervisor ?? createProviderProcessSupervisor({ now });
93
+ try {
94
+ const handle = supervisor.start({
95
+ providerId: def.id,
96
+ executable: config.adapter.executable,
97
+ args: config.adapter.args,
98
+ ...(config.adapter.stdin !== undefined ? { stdin: config.adapter.stdin } : {}),
99
+ cwd: ws.path,
100
+ envAllowlist: config.envAllowlist ?? {},
101
+ timeoutMs: config.timeoutMs ?? DEFAULT_TIMEOUT_MS,
102
+ stdoutLimitBytes: config.stdoutLimitBytes ?? DEFAULT_LIMIT_BYTES,
103
+ stderrLimitBytes: config.stderrLimitBytes ?? DEFAULT_LIMIT_BYTES,
104
+ killTree: true,
105
+ platformMode: "minimal",
106
+ });
107
+ // 4. Wire prompt cancellation → kill the supervised process.
108
+ const onAbort = () => void handle.cancel("prompt cancelled");
109
+ if (signal.aborted)
110
+ handle.cancel("prompt already cancelled");
111
+ else
112
+ signal.addEventListener("abort", onAbort, { once: true });
113
+ const procResult = await handle.wait();
114
+ signal.removeEventListener("abort", onAbort);
115
+ const supervisorDiag = handle.diagnostics();
116
+ const truncated = { stdout: procResult.stdoutTruncated, stderr: procResult.stderrTruncated };
117
+ // 5. Parse adapter stdout → ProviderEvents → ACP updates (works on partial output too).
118
+ // Default: the frozen XENO v1 protocol (parse + map). A real local provider (XACP-021)
119
+ // may inject `parseStdout` to translate its OWN native format (e.g. Claude stream-json)
120
+ // directly into ProviderEvents — same downstream path, frozen v1 protocol untouched.
121
+ const parseCtx = { providerId: def.id, sessionId: request.sessionId, requestId: request.requestId, now };
122
+ let mappedEvents;
123
+ let terminal;
124
+ let failureCode;
125
+ let failureMessage;
126
+ let parseDiagnostics;
127
+ if (config.parseStdout) {
128
+ const r = config.parseStdout(procResult.stdout, parseCtx);
129
+ mappedEvents = r.events;
130
+ terminal = r.terminal;
131
+ failureCode = r.failureCode;
132
+ failureMessage = r.failureMessage;
133
+ parseDiagnostics = r.diagnosticsCount;
134
+ }
135
+ else {
136
+ const parsed = parseAdapterOutput(procResult.stdout);
137
+ const mapped = mapAdapterEvents(parsed.events, parseCtx);
138
+ mappedEvents = mapped.events;
139
+ terminal = mapped.terminal ?? null;
140
+ failureMessage = mapped.failureMessage;
141
+ parseDiagnostics = parsed.diagnostics.length;
142
+ }
143
+ for (const e of mappedEvents)
144
+ emit(e);
145
+ const acpUpdates = toAcpUpdates(collected);
146
+ // 6. Decide disposition from process status + the (real or v1) terminal signal.
147
+ const result = decideDisposition(def.id, procResult.status, {
148
+ terminal,
149
+ failureCode,
150
+ failureMessage,
151
+ eventCount: mappedEvents.length,
152
+ events: collected,
153
+ });
154
+ const authFailure = result.disposition === "failed" && result.error
155
+ ? buildProviderAuthFailureDiagnostic(result.error)
156
+ : undefined;
157
+ const diagnostics = buildAdapterHarnessDiagnostics({
158
+ providerId: def.id,
159
+ runnableStatus: runnability.status,
160
+ eventsEmitted: collected.length,
161
+ parseDiagnostics,
162
+ acpUpdates: acpUpdates.length,
163
+ supervisor: supervisorDiag,
164
+ ...(authFailure ? { authFailure } : {}),
165
+ stdoutTruncated: truncated.stdout,
166
+ stderrTruncated: truncated.stderr,
167
+ });
168
+ return { runnability, result, events: collected, acpUpdates, diagnostics };
169
+ }
170
+ finally {
171
+ await ws.cleanup();
172
+ }
173
+ }
174
+ function toAcpUpdates(events) {
175
+ const updates = [];
176
+ for (const e of events) {
177
+ const u = providerEventToAcpUpdate(e);
178
+ if (u)
179
+ updates.push(u);
180
+ }
181
+ return updates;
182
+ }
183
+ function decideDisposition(providerId, procStatus, mapped) {
184
+ if (procStatus === "cancelled") {
185
+ return { disposition: "cancelled" };
186
+ }
187
+ if (procStatus === "timed_out") {
188
+ return {
189
+ disposition: "failed",
190
+ error: new ProviderTimeoutError({ safeMessage: "adapter timed out", providerId }),
191
+ };
192
+ }
193
+ if (mapped.terminal === "failed") {
194
+ return {
195
+ disposition: "failed",
196
+ error: providerErrorFromCode(providerId, mapped.failureCode, mapped.failureMessage ?? "adapter failed"),
197
+ };
198
+ }
199
+ if (mapped.terminal === "completed") {
200
+ const usage = deriveUsage(mapped.events);
201
+ return { disposition: "completed", ...(usage ? { usage } : {}) };
202
+ }
203
+ // Process ended but the adapter never signalled completion → protocol failure (fails safely).
204
+ return {
205
+ disposition: "failed",
206
+ error: new ProviderInternalError({
207
+ safeMessage: mapped.eventCount === 0 ? "adapter produced no valid events" : "adapter did not signal completion",
208
+ providerId,
209
+ }),
210
+ };
211
+ }
212
+ function providerErrorFromCode(providerId, code, safeMessage) {
213
+ switch (code) {
214
+ case "PROVIDER_AUTH_REQUIRED":
215
+ return new ProviderAuthRequiredError({ safeMessage, providerId });
216
+ case "PROVIDER_RATE_LIMIT":
217
+ return new ProviderRateLimitError({ safeMessage, providerId });
218
+ case "PROVIDER_TIMEOUT":
219
+ return new ProviderTimeoutError({ safeMessage, providerId, retryable: true });
220
+ case "PROVIDER_UNAVAILABLE":
221
+ return new ProviderUnavailableError({ safeMessage, providerId, retryable: true });
222
+ case "PROVIDER_PROTOCOL":
223
+ return new ProviderProtocolError({ safeMessage, providerId });
224
+ default:
225
+ return new ProviderInternalError({ safeMessage, providerId });
226
+ }
227
+ }
228
+ function deriveUsage(events) {
229
+ const usageEvent = [...events].reverse().find((e) => e.kind === "usage");
230
+ if (!usageEvent)
231
+ return undefined;
232
+ const p = usageEvent.payload;
233
+ return typeof p.used === "number" ? { totalTokens: p.used } : undefined;
234
+ }
235
+ //# sourceMappingURL=adapterProcessHarness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapterProcessHarness.js","sourceRoot":"","sources":["../../src/adapters/adapterProcessHarness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Frozen provider runtime contract surfaces (XACP-012 v1): the `ProviderEvent` schema, the
3
+ * `ProviderEvent → ACP session/update` mapping reference, and the diagnostics/audit shapes.
4
+ *
5
+ * These pin the shapes a real adapter and the ACP server rely on. Validators are pure and never
6
+ * throw. Diagnostics/audit carry NO secret values, raw env, tokens, credential paths, or stack
7
+ * traces, and explicitly surface that network/filesystem are NOT enforced.
8
+ */
9
+ import { type ProviderProcessEnforcement } from "../process/providerProcessTypes.js";
10
+ import type { ProviderEvent, ProviderEventKind } from "../providers/providerEvents.js";
11
+ import type { ProviderSafetyDecision } from "../security/securityTypes.js";
12
+ import type { AdapterFailureCode } from "./adapterFailureTaxonomy.js";
13
+ /** The frozen set of normalized ProviderEvent kinds (v1). */
14
+ export declare const PROVIDER_EVENT_KINDS: readonly ProviderEventKind[];
15
+ /** Terminal ProviderEvent kinds. */
16
+ export declare const TERMINAL_PROVIDER_EVENT_KINDS: readonly ProviderEventKind[];
17
+ /**
18
+ * Frozen reference of which ACP `session/update` each ProviderEvent kind maps to (or `null` for
19
+ * terminal/diagnostic kinds, which do not produce a streamed update). This MUST agree with
20
+ * `providerEventToAcpUpdate` — a conformance test asserts that.
21
+ */
22
+ export declare const PROVIDER_EVENT_TO_ACP: Record<ProviderEventKind, string | null>;
23
+ /** Pure, fail-safe validator for a normalized ProviderEvent (envelope + known kind). */
24
+ export declare function isValidProviderEvent(event: unknown): event is ProviderEvent;
25
+ export declare function isTerminalProviderEventKind(kind: ProviderEventKind): boolean;
26
+ export interface ProviderRuntimeDiagnosticsV1 {
27
+ providerId: string;
28
+ providerDisplayName: string;
29
+ contractVersion: number;
30
+ providerStatus: string;
31
+ safetyDecision: ProviderSafetyDecision;
32
+ policyHash: string;
33
+ definitionHash: string;
34
+ approvalStatus: "present" | "absent";
35
+ /** Honest process-enforcement classification (network/filesystem NOT enforced). */
36
+ enforcementClassification: ProviderProcessEnforcement;
37
+ auditEventCount: number;
38
+ lastErrorCode?: AdapterFailureCode;
39
+ redactionState: "active";
40
+ }
41
+ export interface ProviderAuditEventV1 {
42
+ eventId: string;
43
+ timestamp: string;
44
+ providerId: string;
45
+ sessionId?: string;
46
+ requestId?: string;
47
+ kind: string;
48
+ safeMessage: string;
49
+ redactedDetails?: Record<string, unknown>;
50
+ }
51
+ export interface BuildRuntimeDiagnosticsInput {
52
+ providerId: string;
53
+ providerDisplayName: string;
54
+ providerStatus: string;
55
+ safetyDecision: ProviderSafetyDecision;
56
+ policyHash?: string;
57
+ definitionHash: string;
58
+ approvalPresent: boolean;
59
+ auditEventCount: number;
60
+ lastErrorCode?: AdapterFailureCode;
61
+ enforcement?: ProviderProcessEnforcement;
62
+ }
63
+ export declare function buildProviderRuntimeDiagnostics(input: BuildRuntimeDiagnosticsInput): ProviderRuntimeDiagnosticsV1;
64
+ //# sourceMappingURL=providerContractTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerContractTypes.d.ts","sourceRoot":"","sources":["../../src/adapters/providerContractTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAkC,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAY5D,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,6BAA6B,EAAE,SAAS,iBAAiB,EAAyC,CAAC;AAEhH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAY1E,CAAC;AAIF,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAa3E;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAE5E;AAID,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,sBAAsB,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,SAAS,GAAG,QAAQ,CAAC;IACrC,mFAAmF;IACnF,yBAAyB,EAAE,0BAA0B,CAAC;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,cAAc,EAAE,QAAQ,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,sBAAsB,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,WAAW,CAAC,EAAE,0BAA0B,CAAC;CAC1C;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,4BAA4B,GAAG,4BAA4B,CAejH"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Frozen provider runtime contract surfaces (XACP-012 v1): the `ProviderEvent` schema, the
3
+ * `ProviderEvent → ACP session/update` mapping reference, and the diagnostics/audit shapes.
4
+ *
5
+ * These pin the shapes a real adapter and the ACP server rely on. Validators are pure and never
6
+ * throw. Diagnostics/audit carry NO secret values, raw env, tokens, credential paths, or stack
7
+ * traces, and explicitly surface that network/filesystem are NOT enforced.
8
+ */
9
+ import { MINIMAL_SUPERVISOR_ENFORCEMENT } from "../process/providerProcessTypes.js";
10
+ import { ADAPTER_RUNTIME_CONTRACT_VERSION } from "./adapterContractVersion.js";
11
+ /** The frozen set of normalized ProviderEvent kinds (v1). */
12
+ export const PROVIDER_EVENT_KINDS = [
13
+ "plan",
14
+ "message_delta",
15
+ "tool_started",
16
+ "tool_updated",
17
+ "tool_completed",
18
+ "tool_failed",
19
+ "usage",
20
+ "completed",
21
+ "cancelled",
22
+ "failed",
23
+ "diagnostic",
24
+ ];
25
+ /** Terminal ProviderEvent kinds. */
26
+ export const TERMINAL_PROVIDER_EVENT_KINDS = ["completed", "cancelled", "failed"];
27
+ /**
28
+ * Frozen reference of which ACP `session/update` each ProviderEvent kind maps to (or `null` for
29
+ * terminal/diagnostic kinds, which do not produce a streamed update). This MUST agree with
30
+ * `providerEventToAcpUpdate` — a conformance test asserts that.
31
+ */
32
+ export const PROVIDER_EVENT_TO_ACP = {
33
+ plan: "plan",
34
+ message_delta: "agent_message_chunk",
35
+ tool_started: "tool_call",
36
+ tool_updated: "tool_call_update",
37
+ tool_completed: "tool_call_update",
38
+ tool_failed: "tool_call_update",
39
+ usage: "usage_update",
40
+ completed: null,
41
+ cancelled: null,
42
+ failed: null,
43
+ diagnostic: null,
44
+ };
45
+ const KIND_SET = new Set(PROVIDER_EVENT_KINDS);
46
+ /** Pure, fail-safe validator for a normalized ProviderEvent (envelope + known kind). */
47
+ export function isValidProviderEvent(event) {
48
+ if (!event || typeof event !== "object")
49
+ return false;
50
+ const e = event;
51
+ return (typeof e.eventId === "string" &&
52
+ typeof e.providerId === "string" &&
53
+ typeof e.sessionId === "string" &&
54
+ typeof e.requestId === "string" &&
55
+ typeof e.timestamp === "string" &&
56
+ typeof e.kind === "string" &&
57
+ KIND_SET.has(e.kind) &&
58
+ "payload" in e);
59
+ }
60
+ export function isTerminalProviderEventKind(kind) {
61
+ return TERMINAL_PROVIDER_EVENT_KINDS.includes(kind);
62
+ }
63
+ export function buildProviderRuntimeDiagnostics(input) {
64
+ return {
65
+ providerId: input.providerId,
66
+ providerDisplayName: input.providerDisplayName,
67
+ contractVersion: ADAPTER_RUNTIME_CONTRACT_VERSION,
68
+ providerStatus: input.providerStatus,
69
+ safetyDecision: input.safetyDecision,
70
+ policyHash: input.policyHash ?? "",
71
+ definitionHash: input.definitionHash,
72
+ approvalStatus: input.approvalPresent ? "present" : "absent",
73
+ enforcementClassification: input.enforcement ?? MINIMAL_SUPERVISOR_ENFORCEMENT,
74
+ auditEventCount: input.auditEventCount,
75
+ ...(input.lastErrorCode ? { lastErrorCode: input.lastErrorCode } : {}),
76
+ redactionState: "active",
77
+ };
78
+ }
79
+ //# sourceMappingURL=providerContractTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerContractTypes.js","sourceRoot":"","sources":["../../src/adapters/providerContractTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,8BAA8B,EAAmC,MAAM,oCAAoC,CAAC;AACrH,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAK/E,6DAA6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,MAAM;IACN,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,OAAO;IACP,WAAW;IACX,WAAW;IACX,QAAQ;IACR,YAAY;CACb,CAAC;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,6BAA6B,GAAiC,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AAEhH;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA6C;IAC7E,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,qBAAqB;IACpC,YAAY,EAAE,WAAW;IACzB,YAAY,EAAE,kBAAkB;IAChC,cAAc,EAAE,kBAAkB;IAClC,WAAW,EAAE,kBAAkB;IAC/B,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,oBAAoB,CAAC,CAAC;AAEvD,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7B,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAChC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC/B,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACpB,SAAS,IAAI,CAAC,CACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAuB;IACjE,OAAQ,6BAAmD,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AA4CD,MAAM,UAAU,+BAA+B,CAAC,KAAmC;IACjF,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,eAAe,EAAE,gCAAgC;QACjD,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,cAAc,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QAC5D,yBAAyB,EAAE,KAAK,CAAC,WAAW,IAAI,8BAA8B;QAC9E,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,cAAc,EAAE,QAAQ;KACzB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `xeno-test-adapter` — a XENO-OWNED, harness-only provider definition (XACP-011).
3
+ *
4
+ * It exists to prove the future adapter seam end-to-end. It is **implemented for test/harness use
5
+ * only** and is intentionally NOT registered in the default registry (`createDefaultRegistry`),
6
+ * so the normal CLI/ACP path still presents only the fixture as runnable. It is xeno-owned with
7
+ * NO auth and NO network; it declares `filesystem: workspace-scoped` + `canReadFiles` truthfully
8
+ * (the fixture adapter runs in a supervisor-owned temp workspace), which routes it through the
9
+ * **requires_approval** gate so the manual-approval flow can be exercised.
10
+ *
11
+ * Its runtime delegates `prompt()` to the adapter harness (`runAdapterPrompt`). It launches only
12
+ * the harmless fixture adapter passed via `options.adapter` — never a real provider CLI.
13
+ */
14
+ import type { ProviderCapabilitySet, ProviderDefinition } from "../providers/providerTypes.js";
15
+ export declare const TEST_ADAPTER_ID = "xeno-test-adapter";
16
+ export declare const TEST_ADAPTER_CAPABILITIES: ProviderCapabilitySet;
17
+ /** Build the harness-only `xeno-test-adapter` definition. NOT added to the default registry. */
18
+ export declare function createTestAdapterDefinition(): ProviderDefinition;
19
+ //# sourceMappingURL=testAdapterProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testAdapterProvider.d.ts","sourceRoot":"","sources":["../../src/adapters/testAdapterProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAOnB,MAAM,+BAA+B,CAAC;AAGvC,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD,eAAO,MAAM,yBAAyB,EAAE,qBAYvC,CAAC;AAgEF,gGAAgG;AAChG,wBAAgB,2BAA2B,IAAI,kBAAkB,CAkBhE"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * `xeno-test-adapter` — a XENO-OWNED, harness-only provider definition (XACP-011).
3
+ *
4
+ * It exists to prove the future adapter seam end-to-end. It is **implemented for test/harness use
5
+ * only** and is intentionally NOT registered in the default registry (`createDefaultRegistry`),
6
+ * so the normal CLI/ACP path still presents only the fixture as runnable. It is xeno-owned with
7
+ * NO auth and NO network; it declares `filesystem: workspace-scoped` + `canReadFiles` truthfully
8
+ * (the fixture adapter runs in a supervisor-owned temp workspace), which routes it through the
9
+ * **requires_approval** gate so the manual-approval flow can be exercised.
10
+ *
11
+ * Its runtime delegates `prompt()` to the adapter harness (`runAdapterPrompt`). It launches only
12
+ * the harmless fixture adapter passed via `options.adapter` — never a real provider CLI.
13
+ */
14
+ import { ProviderConfigurationError } from "../providers/providerErrors.js";
15
+ import { runAdapterPrompt } from "./adapterProcessHarness.js";
16
+ export const TEST_ADAPTER_ID = "xeno-test-adapter";
17
+ export const TEST_ADAPTER_CAPABILITIES = {
18
+ streamsText: true,
19
+ emitsPlan: true,
20
+ emitsToolCalls: true,
21
+ emitsUsage: true,
22
+ supportsCancel: true,
23
+ supportsMultipleSessions: true,
24
+ requiresAuth: false,
25
+ usesNetwork: false,
26
+ canReadFiles: true, // reads within the supervisor-owned temp workspace (honest)
27
+ canWriteFiles: false,
28
+ canRunTerminal: false,
29
+ };
30
+ class TestAdapterRuntime {
31
+ definition;
32
+ options;
33
+ log;
34
+ sessionSeq = 0;
35
+ promptCount = 0;
36
+ constructor(definition, config) {
37
+ this.definition = definition;
38
+ this.options = (config?.options ?? {});
39
+ this.log = config?.log ?? (() => { });
40
+ }
41
+ initialize() { }
42
+ createSession() {
43
+ this.sessionSeq += 1;
44
+ return { sessionId: `${TEST_ADAPTER_ID}-session-${this.sessionSeq}`, createdAt: `s${this.sessionSeq}` };
45
+ }
46
+ cancel() {
47
+ /* cancellation flows via the prompt AbortSignal into the supervisor */
48
+ }
49
+ dispose() { }
50
+ diagnostics() {
51
+ return { provider: this.definition.id, sessionsCreated: this.sessionSeq, promptsRun: this.promptCount };
52
+ }
53
+ async prompt(request, ctx) {
54
+ this.promptCount += 1;
55
+ if (!this.options.adapter) {
56
+ throw new ProviderConfigurationError({
57
+ safeMessage: "xeno-test-adapter requires options.adapter (a harmless fixture command)",
58
+ providerId: this.definition.id,
59
+ });
60
+ }
61
+ const harness = await runAdapterPrompt({
62
+ definition: this.definition,
63
+ runnability: this.options.runnability ?? {},
64
+ request,
65
+ adapter: this.options.adapter,
66
+ signal: ctx.signal,
67
+ emit: ctx.emit,
68
+ ...(this.options.timeoutMs !== undefined ? { timeoutMs: this.options.timeoutMs } : {}),
69
+ ...(this.options.envAllowlist ? { envAllowlist: this.options.envAllowlist } : {}),
70
+ });
71
+ this.log(`test-adapter prompt: ${harness.result.disposition} (${harness.events.length} events)`);
72
+ return harness.result;
73
+ }
74
+ }
75
+ /** Build the harness-only `xeno-test-adapter` definition. NOT added to the default registry. */
76
+ export function createTestAdapterDefinition() {
77
+ const definition = {
78
+ id: TEST_ADAPTER_ID,
79
+ displayName: "XENO Test Adapter (harness only)",
80
+ description: "Harness-only cooperative adapter for proving the adapter seam. Not a real provider.",
81
+ kind: "local-adapter",
82
+ trustClass: "xeno-owned",
83
+ authRequirement: "none",
84
+ networkRequirement: "none",
85
+ ioAuthority: { filesystem: "workspace-scoped", terminal: "none" },
86
+ capabilities: TEST_ADAPTER_CAPABILITIES,
87
+ enabled: true,
88
+ metadata: { acpEntrypoint: "adapter", installedLocally: true, note: "XACP-011 test harness only" },
89
+ createRuntime(config) {
90
+ return new TestAdapterRuntime(definition, config);
91
+ },
92
+ };
93
+ return definition;
94
+ }
95
+ //# sourceMappingURL=testAdapterProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testAdapterProvider.js","sourceRoot":"","sources":["../../src/adapters/testAdapterProvider.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * xeno-acp-agent CLI.
4
+ *
5
+ * Commands:
6
+ * xeno-acp-agent --version
7
+ * xeno-acp-agent check # lists providers + safety (human-readable)
8
+ * xeno-acp-agent agent --provider fixture [--delay-ms N] [--fail] [--stderr-test]
9
+ *
10
+ * stdout contract: `--version`/`check`/`--help` are NON-ACP and print human text. `agent` is
11
+ * ACP mode → stdout is JSON-RPC ONLY; all diagnostics go to stderr. Provider selection goes
12
+ * through the registry; an unknown or not-implemented provider fails safely (never falls back
13
+ * to fixture).
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}