@xenosystem/acp-agent 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +9 -0
- package/README.md +22 -0
- package/dist/acpAgentServer.d.ts +43 -0
- package/dist/acpAgentServer.d.ts.map +1 -0
- package/dist/acpAgentServer.js +450 -0
- package/dist/acpAgentServer.js.map +1 -0
- package/dist/adapters/adapterContractVersion.d.ts +24 -0
- package/dist/adapters/adapterContractVersion.d.ts.map +1 -0
- package/dist/adapters/adapterContractVersion.js +29 -0
- package/dist/adapters/adapterContractVersion.js.map +1 -0
- package/dist/adapters/adapterDiagnostics.d.ts +19 -0
- package/dist/adapters/adapterDiagnostics.d.ts.map +1 -0
- package/dist/adapters/adapterDiagnostics.js +18 -0
- package/dist/adapters/adapterDiagnostics.js.map +1 -0
- package/dist/adapters/adapterErrors.d.ts +19 -0
- package/dist/adapters/adapterErrors.d.ts.map +1 -0
- package/dist/adapters/adapterErrors.js +23 -0
- package/dist/adapters/adapterErrors.js.map +1 -0
- package/dist/adapters/adapterEventMapper.d.ts +22 -0
- package/dist/adapters/adapterEventMapper.d.ts.map +1 -0
- package/dist/adapters/adapterEventMapper.js +70 -0
- package/dist/adapters/adapterEventMapper.js.map +1 -0
- package/dist/adapters/adapterEventParser.d.ts +16 -0
- package/dist/adapters/adapterEventParser.d.ts.map +1 -0
- package/dist/adapters/adapterEventParser.js +95 -0
- package/dist/adapters/adapterEventParser.js.map +1 -0
- package/dist/adapters/adapterEventProtocol.d.ts +85 -0
- package/dist/adapters/adapterEventProtocol.d.ts.map +1 -0
- package/dist/adapters/adapterEventProtocol.js +74 -0
- package/dist/adapters/adapterEventProtocol.js.map +1 -0
- package/dist/adapters/adapterFailureTaxonomy.d.ts +19 -0
- package/dist/adapters/adapterFailureTaxonomy.d.ts.map +1 -0
- package/dist/adapters/adapterFailureTaxonomy.js +62 -0
- package/dist/adapters/adapterFailureTaxonomy.js.map +1 -0
- package/dist/adapters/adapterHarnessTypes.d.ts +103 -0
- package/dist/adapters/adapterHarnessTypes.d.ts.map +1 -0
- package/dist/adapters/adapterHarnessTypes.js +15 -0
- package/dist/adapters/adapterHarnessTypes.js.map +1 -0
- package/dist/adapters/adapterProcessHarness.d.ts +23 -0
- package/dist/adapters/adapterProcessHarness.d.ts.map +1 -0
- package/dist/adapters/adapterProcessHarness.js +235 -0
- package/dist/adapters/adapterProcessHarness.js.map +1 -0
- package/dist/adapters/providerContractTypes.d.ts +64 -0
- package/dist/adapters/providerContractTypes.d.ts.map +1 -0
- package/dist/adapters/providerContractTypes.js +79 -0
- package/dist/adapters/providerContractTypes.js.map +1 -0
- package/dist/adapters/testAdapterProvider.d.ts +19 -0
- package/dist/adapters/testAdapterProvider.d.ts.map +1 -0
- package/dist/adapters/testAdapterProvider.js +95 -0
- package/dist/adapters/testAdapterProvider.js.map +1 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1059 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/providerApprovalStore.d.ts +39 -0
- package/dist/config/providerApprovalStore.d.ts.map +1 -0
- package/dist/config/providerApprovalStore.js +87 -0
- package/dist/config/providerApprovalStore.js.map +1 -0
- package/dist/config/providerApprovalTypes.d.ts +30 -0
- package/dist/config/providerApprovalTypes.d.ts.map +1 -0
- package/dist/config/providerApprovalTypes.js +11 -0
- package/dist/config/providerApprovalTypes.js.map +1 -0
- package/dist/config/providerPolicyConfig.d.ts +31 -0
- package/dist/config/providerPolicyConfig.d.ts.map +1 -0
- package/dist/config/providerPolicyConfig.js +111 -0
- package/dist/config/providerPolicyConfig.js.map +1 -0
- package/dist/config/providerPolicyDiagnostics.d.ts +49 -0
- package/dist/config/providerPolicyDiagnostics.d.ts.map +1 -0
- package/dist/config/providerPolicyDiagnostics.js +76 -0
- package/dist/config/providerPolicyDiagnostics.js.map +1 -0
- package/dist/config/providerPolicyHash.d.ts +14 -0
- package/dist/config/providerPolicyHash.d.ts.map +1 -0
- package/dist/config/providerPolicyHash.js +65 -0
- package/dist/config/providerPolicyHash.js.map +1 -0
- package/dist/config/providerPolicySchema.d.ts +32 -0
- package/dist/config/providerPolicySchema.d.ts.map +1 -0
- package/dist/config/providerPolicySchema.js +130 -0
- package/dist/config/providerPolicySchema.js.map +1 -0
- package/dist/config/providerRunnability.d.ts +36 -0
- package/dist/config/providerRunnability.d.ts.map +1 -0
- package/dist/config/providerRunnability.js +72 -0
- package/dist/config/providerRunnability.js.map +1 -0
- package/dist/errors.d.ts +31 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +45 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/process/providerProcessAudit.d.ts +14 -0
- package/dist/process/providerProcessAudit.d.ts.map +1 -0
- package/dist/process/providerProcessAudit.js +27 -0
- package/dist/process/providerProcessAudit.js.map +1 -0
- package/dist/process/providerProcessDiagnostics.d.ts +30 -0
- package/dist/process/providerProcessDiagnostics.d.ts.map +1 -0
- package/dist/process/providerProcessDiagnostics.js +51 -0
- package/dist/process/providerProcessDiagnostics.js.map +1 -0
- package/dist/process/providerProcessEnvironment.d.ts +29 -0
- package/dist/process/providerProcessEnvironment.d.ts.map +1 -0
- package/dist/process/providerProcessEnvironment.js +37 -0
- package/dist/process/providerProcessEnvironment.js.map +1 -0
- package/dist/process/providerProcessErrors.d.ts +21 -0
- package/dist/process/providerProcessErrors.d.ts.map +1 -0
- package/dist/process/providerProcessErrors.js +25 -0
- package/dist/process/providerProcessErrors.js.map +1 -0
- package/dist/process/providerProcessOutput.d.ts +24 -0
- package/dist/process/providerProcessOutput.d.ts.map +1 -0
- package/dist/process/providerProcessOutput.js +52 -0
- package/dist/process/providerProcessOutput.js.map +1 -0
- package/dist/process/providerProcessSupervisor.d.ts +40 -0
- package/dist/process/providerProcessSupervisor.d.ts.map +1 -0
- package/dist/process/providerProcessSupervisor.js +305 -0
- package/dist/process/providerProcessSupervisor.js.map +1 -0
- package/dist/process/providerProcessTypes.d.ts +114 -0
- package/dist/process/providerProcessTypes.d.ts.map +1 -0
- package/dist/process/providerProcessTypes.js +30 -0
- package/dist/process/providerProcessTypes.js.map +1 -0
- package/dist/process/providerProcessValidation.d.ts +26 -0
- package/dist/process/providerProcessValidation.d.ts.map +1 -0
- package/dist/process/providerProcessValidation.js +112 -0
- package/dist/process/providerProcessValidation.js.map +1 -0
- package/dist/process/providerProcessWorkspace.d.ts +38 -0
- package/dist/process/providerProcessWorkspace.d.ts.map +1 -0
- package/dist/process/providerProcessWorkspace.js +86 -0
- package/dist/process/providerProcessWorkspace.js.map +1 -0
- package/dist/providers/claudeLocalProvider.d.ts +68 -0
- package/dist/providers/claudeLocalProvider.d.ts.map +1 -0
- package/dist/providers/claudeLocalProvider.js +217 -0
- package/dist/providers/claudeLocalProvider.js.map +1 -0
- package/dist/providers/claudeStreamJsonParser.d.ts +39 -0
- package/dist/providers/claudeStreamJsonParser.d.ts.map +1 -0
- package/dist/providers/claudeStreamJsonParser.js +180 -0
- package/dist/providers/claudeStreamJsonParser.js.map +1 -0
- package/dist/providers/codexExecJsonParser.d.ts +38 -0
- package/dist/providers/codexExecJsonParser.d.ts.map +1 -0
- package/dist/providers/codexExecJsonParser.js +245 -0
- package/dist/providers/codexExecJsonParser.js.map +1 -0
- package/dist/providers/codexLocalProvider.d.ts +46 -0
- package/dist/providers/codexLocalProvider.d.ts.map +1 -0
- package/dist/providers/codexLocalProvider.js +430 -0
- package/dist/providers/codexLocalProvider.js.map +1 -0
- package/dist/providers/codexModelCatalog.d.ts +13 -0
- package/dist/providers/codexModelCatalog.d.ts.map +1 -0
- package/dist/providers/codexModelCatalog.js +133 -0
- package/dist/providers/codexModelCatalog.js.map +1 -0
- package/dist/providers/fixtureProvider.d.ts +14 -0
- package/dist/providers/fixtureProvider.d.ts.map +1 -0
- package/dist/providers/fixtureProvider.js +160 -0
- package/dist/providers/fixtureProvider.js.map +1 -0
- package/dist/providers/providerDiscovery.d.ts +24 -0
- package/dist/providers/providerDiscovery.d.ts.map +1 -0
- package/dist/providers/providerDiscovery.js +128 -0
- package/dist/providers/providerDiscovery.js.map +1 -0
- package/dist/providers/providerErrors.d.ts +64 -0
- package/dist/providers/providerErrors.d.ts.map +1 -0
- package/dist/providers/providerErrors.js +101 -0
- package/dist/providers/providerErrors.js.map +1 -0
- package/dist/providers/providerEvents.d.ts +63 -0
- package/dist/providers/providerEvents.d.ts.map +1 -0
- package/dist/providers/providerEvents.js +86 -0
- package/dist/providers/providerEvents.js.map +1 -0
- package/dist/providers/providerRegistry.d.ts +31 -0
- package/dist/providers/providerRegistry.d.ts.map +1 -0
- package/dist/providers/providerRegistry.js +234 -0
- package/dist/providers/providerRegistry.js.map +1 -0
- package/dist/providers/providerSafety.d.ts +17 -0
- package/dist/providers/providerSafety.d.ts.map +1 -0
- package/dist/providers/providerSafety.js +36 -0
- package/dist/providers/providerSafety.js.map +1 -0
- package/dist/providers/providerTypes.d.ts +212 -0
- package/dist/providers/providerTypes.d.ts.map +1 -0
- package/dist/providers/providerTypes.js +15 -0
- package/dist/providers/providerTypes.js.map +1 -0
- package/dist/providers/xenoLocalProvider.d.ts +35 -0
- package/dist/providers/xenoLocalProvider.d.ts.map +1 -0
- package/dist/providers/xenoLocalProvider.js +159 -0
- package/dist/providers/xenoLocalProvider.js.map +1 -0
- package/dist/sandbox/providerSandbox.d.ts +35 -0
- package/dist/sandbox/providerSandbox.d.ts.map +1 -0
- package/dist/sandbox/providerSandbox.js +93 -0
- package/dist/sandbox/providerSandbox.js.map +1 -0
- package/dist/sandbox/providerSandboxAudit.d.ts +12 -0
- package/dist/sandbox/providerSandboxAudit.d.ts.map +1 -0
- package/dist/sandbox/providerSandboxAudit.js +25 -0
- package/dist/sandbox/providerSandboxAudit.js.map +1 -0
- package/dist/sandbox/providerSandboxDiagnostics.d.ts +13 -0
- package/dist/sandbox/providerSandboxDiagnostics.d.ts.map +1 -0
- package/dist/sandbox/providerSandboxDiagnostics.js +28 -0
- package/dist/sandbox/providerSandboxDiagnostics.js.map +1 -0
- package/dist/sandbox/providerSandboxTypes.d.ts +138 -0
- package/dist/sandbox/providerSandboxTypes.d.ts.map +1 -0
- package/dist/sandbox/providerSandboxTypes.js +17 -0
- package/dist/sandbox/providerSandboxTypes.js.map +1 -0
- package/dist/sandbox/sandboxCancellation.d.ts +6 -0
- package/dist/sandbox/sandboxCancellation.d.ts.map +1 -0
- package/dist/sandbox/sandboxCancellation.js +24 -0
- package/dist/sandbox/sandboxCancellation.js.map +1 -0
- package/dist/sandbox/sandboxErrors.d.ts +17 -0
- package/dist/sandbox/sandboxErrors.d.ts.map +1 -0
- package/dist/sandbox/sandboxErrors.js +21 -0
- package/dist/sandbox/sandboxErrors.js.map +1 -0
- package/dist/sandbox/sandboxFilesystem.d.ts +14 -0
- package/dist/sandbox/sandboxFilesystem.d.ts.map +1 -0
- package/dist/sandbox/sandboxFilesystem.js +51 -0
- package/dist/sandbox/sandboxFilesystem.js.map +1 -0
- package/dist/sandbox/sandboxNetwork.d.ts +14 -0
- package/dist/sandbox/sandboxNetwork.d.ts.map +1 -0
- package/dist/sandbox/sandboxNetwork.js +60 -0
- package/dist/sandbox/sandboxNetwork.js.map +1 -0
- package/dist/sandbox/sandboxSecrets.d.ts +17 -0
- package/dist/sandbox/sandboxSecrets.d.ts.map +1 -0
- package/dist/sandbox/sandboxSecrets.js +61 -0
- package/dist/sandbox/sandboxSecrets.js.map +1 -0
- package/dist/sandbox/sandboxTerminal.d.ts +14 -0
- package/dist/sandbox/sandboxTerminal.d.ts.map +1 -0
- package/dist/sandbox/sandboxTerminal.js +32 -0
- package/dist/sandbox/sandboxTerminal.js.map +1 -0
- package/dist/security/authPolicy.d.ts +31 -0
- package/dist/security/authPolicy.d.ts.map +1 -0
- package/dist/security/authPolicy.js +72 -0
- package/dist/security/authPolicy.js.map +1 -0
- package/dist/security/capabilityGate.d.ts +16 -0
- package/dist/security/capabilityGate.d.ts.map +1 -0
- package/dist/security/capabilityGate.js +101 -0
- package/dist/security/capabilityGate.js.map +1 -0
- package/dist/security/egressPolicy.d.ts +31 -0
- package/dist/security/egressPolicy.d.ts.map +1 -0
- package/dist/security/egressPolicy.js +120 -0
- package/dist/security/egressPolicy.js.map +1 -0
- package/dist/security/redaction.d.ts +16 -0
- package/dist/security/redaction.d.ts.map +1 -0
- package/dist/security/redaction.js +65 -0
- package/dist/security/redaction.js.map +1 -0
- package/dist/security/secretBinding.d.ts +34 -0
- package/dist/security/secretBinding.d.ts.map +1 -0
- package/dist/security/secretBinding.js +66 -0
- package/dist/security/secretBinding.js.map +1 -0
- package/dist/security/secretStore.d.ts +37 -0
- package/dist/security/secretStore.d.ts.map +1 -0
- package/dist/security/secretStore.js +55 -0
- package/dist/security/secretStore.js.map +1 -0
- package/dist/security/securityDiagnostics.d.ts +39 -0
- package/dist/security/securityDiagnostics.d.ts.map +1 -0
- package/dist/security/securityDiagnostics.js +36 -0
- package/dist/security/securityDiagnostics.js.map +1 -0
- package/dist/security/securityTypes.d.ts +77 -0
- package/dist/security/securityTypes.d.ts.map +1 -0
- package/dist/security/securityTypes.js +17 -0
- package/dist/security/securityTypes.js.map +1 -0
- package/dist/sessionStore.d.ts +33 -0
- package/dist/sessionStore.d.ts.map +1 -0
- package/dist/sessionStore.js +42 -0
- package/dist/sessionStore.js.map +1 -0
- package/dist/stdioJsonRpc.d.ts +43 -0
- package/dist/stdioJsonRpc.d.ts.map +1 -0
- package/dist/stdioJsonRpc.js +219 -0
- package/dist/stdioJsonRpc.js.map +1 -0
- package/dist/types.d.ts +78 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic fixture provider (XACP-005 — refactored onto the provider contract).
|
|
3
|
+
*
|
|
4
|
+
* Emits normalized `ProviderEvent`s which the ACP server maps to the SAME ACP `session/update`
|
|
5
|
+
* sequence the certified fixture endpoint has always produced (plan → 2× message → tool_call
|
|
6
|
+
* → in_progress → completed → usage → end_turn). Zero I/O authority: no model, network,
|
|
7
|
+
* filesystem mutation, terminal execution, provider CLI, or secrets.
|
|
8
|
+
*/
|
|
9
|
+
import { createEventFactory } from "./providerEvents.js";
|
|
10
|
+
import { ProviderInternalError } from "./providerErrors.js";
|
|
11
|
+
import { staticModelDiscovery } from "./providerDiscovery.js";
|
|
12
|
+
export const FIXTURE_FINAL_TEXT = "XENO ACP fixture endpoint completed the requested task.";
|
|
13
|
+
/** Conservative capability declaration — the fixture does nothing risky. */
|
|
14
|
+
export const FIXTURE_CAPABILITIES = {
|
|
15
|
+
streamsText: true,
|
|
16
|
+
emitsPlan: true,
|
|
17
|
+
emitsToolCalls: true,
|
|
18
|
+
emitsUsage: true,
|
|
19
|
+
supportsCancel: true,
|
|
20
|
+
supportsMultipleSessions: true,
|
|
21
|
+
requiresAuth: false,
|
|
22
|
+
usesNetwork: false,
|
|
23
|
+
canReadFiles: false,
|
|
24
|
+
canWriteFiles: false,
|
|
25
|
+
canRunTerminal: false,
|
|
26
|
+
};
|
|
27
|
+
class FixtureRuntime {
|
|
28
|
+
definition;
|
|
29
|
+
options;
|
|
30
|
+
now;
|
|
31
|
+
sessionSeq = 0;
|
|
32
|
+
promptCount = 0;
|
|
33
|
+
constructor(definition, config) {
|
|
34
|
+
this.definition = definition;
|
|
35
|
+
const o = (config?.options ?? {});
|
|
36
|
+
this.options = {
|
|
37
|
+
...(o.delayMs !== undefined ? { delayMs: Number(o.delayMs) } : {}),
|
|
38
|
+
fail: Boolean(o.fail),
|
|
39
|
+
stderrTest: Boolean(o.stderrTest),
|
|
40
|
+
};
|
|
41
|
+
this.now = () => new Date().toISOString();
|
|
42
|
+
}
|
|
43
|
+
initialize() {
|
|
44
|
+
/* nothing to set up */
|
|
45
|
+
}
|
|
46
|
+
createSession() {
|
|
47
|
+
this.sessionSeq += 1;
|
|
48
|
+
return { sessionId: `fixture-session-${this.sessionSeq}`, createdAt: this.now() };
|
|
49
|
+
}
|
|
50
|
+
cancel() {
|
|
51
|
+
/* cancellation is delivered via the prompt's AbortSignal; nothing extra to do */
|
|
52
|
+
}
|
|
53
|
+
dispose() {
|
|
54
|
+
/* no resources */
|
|
55
|
+
}
|
|
56
|
+
diagnostics() {
|
|
57
|
+
return {
|
|
58
|
+
provider: this.definition.id,
|
|
59
|
+
sessionsCreated: this.sessionSeq,
|
|
60
|
+
promptsRun: this.promptCount,
|
|
61
|
+
options: this.options,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async prompt(request, ctx) {
|
|
65
|
+
this.promptCount += 1;
|
|
66
|
+
const factory = createEventFactory({
|
|
67
|
+
providerId: this.definition.id,
|
|
68
|
+
sessionId: request.sessionId,
|
|
69
|
+
requestId: request.requestId,
|
|
70
|
+
now: this.now,
|
|
71
|
+
});
|
|
72
|
+
const emit = (kind, payload) => ctx.emit(factory.next(kind, payload));
|
|
73
|
+
const cancelled = () => ctx.signal.aborted;
|
|
74
|
+
if (this.options.stderrTest) {
|
|
75
|
+
ctx.log("stderr-test: diagnostic line A");
|
|
76
|
+
ctx.log("stderr-test: diagnostic line B — must not reach stdout");
|
|
77
|
+
emit("diagnostic", { message: "stderr-test active" });
|
|
78
|
+
}
|
|
79
|
+
if (this.options.fail) {
|
|
80
|
+
emit("tool_failed", { toolCallId: "fixture-1", status: "failed" });
|
|
81
|
+
const error = new ProviderInternalError({
|
|
82
|
+
safeMessage: "fixture failure (test mode)",
|
|
83
|
+
providerId: this.definition.id,
|
|
84
|
+
});
|
|
85
|
+
emit("failed", { disposition: "failed", message: error.safeMessage });
|
|
86
|
+
return { disposition: "failed", error };
|
|
87
|
+
}
|
|
88
|
+
emit("plan", {
|
|
89
|
+
entries: [
|
|
90
|
+
{ content: "Inspect the request", priority: "high", status: "completed" },
|
|
91
|
+
{ content: "Produce a deterministic response", priority: "medium", status: "in_progress" },
|
|
92
|
+
],
|
|
93
|
+
});
|
|
94
|
+
if (cancelled())
|
|
95
|
+
return this.cancelledResult(emit);
|
|
96
|
+
emit("message_delta", { text: "XENO ACP fixture endpoint " });
|
|
97
|
+
emit("message_delta", { text: "completed the requested task." });
|
|
98
|
+
emit("tool_started", { toolCallId: "fixture-1", title: "Fixture inspection", kind: "read" });
|
|
99
|
+
emit("tool_updated", { toolCallId: "fixture-1", status: "in_progress" });
|
|
100
|
+
if (this.options.delayMs && this.options.delayMs > 0) {
|
|
101
|
+
const aborted = await delayOrAbort(this.options.delayMs, ctx.signal);
|
|
102
|
+
if (aborted)
|
|
103
|
+
return this.cancelledResult(emit);
|
|
104
|
+
}
|
|
105
|
+
if (cancelled())
|
|
106
|
+
return this.cancelledResult(emit);
|
|
107
|
+
emit("tool_completed", { toolCallId: "fixture-1", status: "completed" });
|
|
108
|
+
emit("usage", { used: 8, size: 1000 });
|
|
109
|
+
emit("completed", { disposition: "completed" });
|
|
110
|
+
return { disposition: "completed", usage: { inputTokens: 7, outputTokens: 9, totalTokens: 16 } };
|
|
111
|
+
}
|
|
112
|
+
cancelledResult(emit) {
|
|
113
|
+
emit("cancelled", { disposition: "cancelled" });
|
|
114
|
+
return { disposition: "cancelled" };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function createFixtureProviderDefinition() {
|
|
118
|
+
const definition = {
|
|
119
|
+
id: "fixture",
|
|
120
|
+
displayName: "XENO Fixture",
|
|
121
|
+
description: "Deterministic fixture provider (no model, network, filesystem, or terminal).",
|
|
122
|
+
kind: "fixture",
|
|
123
|
+
trustClass: "xeno-owned",
|
|
124
|
+
authRequirement: "none",
|
|
125
|
+
networkRequirement: "none",
|
|
126
|
+
ioAuthority: { filesystem: "none", terminal: "none" },
|
|
127
|
+
capabilities: FIXTURE_CAPABILITIES,
|
|
128
|
+
enabled: true,
|
|
129
|
+
metadata: {
|
|
130
|
+
displayAlias: "XENO Fixture",
|
|
131
|
+
streaming: { mode: "streaming", safeMessage: "Fixture emits deterministic streaming ACP updates." },
|
|
132
|
+
setupHints: ["No setup required."],
|
|
133
|
+
},
|
|
134
|
+
modelDiscovery: staticModelDiscovery("Fixture exposes one deterministic test model.", [{ id: "fixture-default", label: "Fixture default", default: true, available: true, reason: null }]),
|
|
135
|
+
createRuntime(config) {
|
|
136
|
+
return new FixtureRuntime(definition, config);
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
return definition;
|
|
140
|
+
}
|
|
141
|
+
function delayOrAbort(ms, signal) {
|
|
142
|
+
return new Promise((resolve) => {
|
|
143
|
+
if (signal.aborted)
|
|
144
|
+
return resolve(true);
|
|
145
|
+
const timer = setTimeout(() => {
|
|
146
|
+
cleanup();
|
|
147
|
+
resolve(false);
|
|
148
|
+
}, ms);
|
|
149
|
+
const onAbort = () => {
|
|
150
|
+
cleanup();
|
|
151
|
+
resolve(true);
|
|
152
|
+
};
|
|
153
|
+
const cleanup = () => {
|
|
154
|
+
clearTimeout(timer);
|
|
155
|
+
signal.removeEventListener("abort", onAbort);
|
|
156
|
+
};
|
|
157
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=fixtureProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtureProvider.js","sourceRoot":"","sources":["../../src/providers/fixtureProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { RunnabilityResult } from "../config/providerRunnability.js";
|
|
2
|
+
import type { ProviderDefinition, ProviderModelChoice, ProviderModelDiscovery, ProviderStreamingMetadata, ProviderVersionReadiness } from "./providerTypes.js";
|
|
3
|
+
export interface ProviderDiscoverySummary {
|
|
4
|
+
providerId: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
runnability?: Pick<RunnabilityResult, "status" | "runnable" | "safeMessage">;
|
|
7
|
+
modelDiscovery: ProviderModelDiscovery;
|
|
8
|
+
versionReadiness: ProviderVersionReadiness;
|
|
9
|
+
streaming: ProviderStreamingMetadata;
|
|
10
|
+
setupHints: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface ProviderModelValidation {
|
|
13
|
+
ok: boolean;
|
|
14
|
+
model?: string;
|
|
15
|
+
safeMessage?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function providerDisplayName(def: ProviderDefinition): string;
|
|
18
|
+
export declare function isSafeProviderModelId(model: string): boolean;
|
|
19
|
+
export declare function buildProviderDiscoverySummary(def: ProviderDefinition, runnability?: RunnabilityResult): ProviderDiscoverySummary;
|
|
20
|
+
export declare function resolveProviderModelDiscovery(def: ProviderDefinition, runnability?: RunnabilityResult): ProviderModelDiscovery;
|
|
21
|
+
export declare function validateProviderModelSelection(def: ProviderDefinition, model: string | undefined): ProviderModelValidation;
|
|
22
|
+
export declare function defaultOnlyModelDiscovery(displayName: string): ProviderModelDiscovery;
|
|
23
|
+
export declare function staticModelDiscovery(safeMessage: string, models: ProviderModelChoice[], defaultModelId?: string | null): ProviderModelDiscovery;
|
|
24
|
+
//# sourceMappingURL=providerDiscovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerDiscovery.d.ts","sourceRoot":"","sources":["../../src/providers/providerDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EAEtB,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC;IAC7E,cAAc,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,EAAE,wBAAwB,CAAC;IAC3C,SAAS,EAAE,yBAAyB,CAAC;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAEnE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,kBAAkB,EACvB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,wBAAwB,CAgB1B;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,kBAAkB,EACvB,WAAW,CAAC,EAAE,iBAAiB,GAC9B,sBAAsB,CA4BxB;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,kBAAkB,EACvB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,uBAAuB,CAazB;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,sBAAsB,CAIrF;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,EAAE,EAC7B,cAAc,GAAE,MAAM,GAAG,IAAwD,GAChF,sBAAsB,CASxB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
const SAFE_MODEL_ID = /^[A-Za-z0-9._:/+-]{1,120}$/;
|
|
2
|
+
export function providerDisplayName(def) {
|
|
3
|
+
return def.metadata?.displayAlias || def.displayName;
|
|
4
|
+
}
|
|
5
|
+
export function isSafeProviderModelId(model) {
|
|
6
|
+
return SAFE_MODEL_ID.test(model);
|
|
7
|
+
}
|
|
8
|
+
export function buildProviderDiscoverySummary(def, runnability) {
|
|
9
|
+
return {
|
|
10
|
+
providerId: def.id,
|
|
11
|
+
displayName: providerDisplayName(def),
|
|
12
|
+
...(runnability ? {
|
|
13
|
+
runnability: {
|
|
14
|
+
status: runnability.status,
|
|
15
|
+
runnable: runnability.runnable,
|
|
16
|
+
safeMessage: runnability.safeMessage,
|
|
17
|
+
},
|
|
18
|
+
} : {}),
|
|
19
|
+
modelDiscovery: resolveProviderModelDiscovery(def, runnability),
|
|
20
|
+
versionReadiness: resolveVersionReadiness(def),
|
|
21
|
+
streaming: resolveStreaming(def),
|
|
22
|
+
setupHints: def.metadata?.setupHints ?? [],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function resolveProviderModelDiscovery(def, runnability) {
|
|
26
|
+
if (runnability && !runnability.runnable) {
|
|
27
|
+
return modelDiscovery("blocked", "none", {
|
|
28
|
+
safeMessage: runnability.safeMessage,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const declared = def.modelDiscovery;
|
|
32
|
+
if (!declared) {
|
|
33
|
+
return modelDiscovery("default_only", "none", {
|
|
34
|
+
safeMessage: `${providerDisplayName(def)} does not expose provider-owned model discovery; use CLI default.`,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const models = declared.models
|
|
38
|
+
.filter((model) => isSafeProviderModelId(model.id))
|
|
39
|
+
.map(normalizeModelChoice);
|
|
40
|
+
const defaultModelId = declared.defaultModelId && models.some((model) => model.id === declared.defaultModelId)
|
|
41
|
+
? declared.defaultModelId
|
|
42
|
+
: null;
|
|
43
|
+
return {
|
|
44
|
+
status: declared.status,
|
|
45
|
+
source: declared.source,
|
|
46
|
+
defaultModelId,
|
|
47
|
+
allowCustomModel: Boolean(declared.allowCustomModel),
|
|
48
|
+
models,
|
|
49
|
+
safeMessage: declared.safeMessage || defaultSafeMessage(def, declared.status),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function validateProviderModelSelection(def, model) {
|
|
53
|
+
if (!model)
|
|
54
|
+
return { ok: true };
|
|
55
|
+
if (!isSafeProviderModelId(model)) {
|
|
56
|
+
return { ok: false, safeMessage: `invalid provider model id for ${providerDisplayName(def)}` };
|
|
57
|
+
}
|
|
58
|
+
const discovery = resolveProviderModelDiscovery(def);
|
|
59
|
+
if (discovery.allowCustomModel)
|
|
60
|
+
return { ok: true, model };
|
|
61
|
+
const match = discovery.models.find((candidate) => candidate.id === model);
|
|
62
|
+
if (match && match.available)
|
|
63
|
+
return { ok: true, model };
|
|
64
|
+
if (discovery.status === "default_only") {
|
|
65
|
+
return { ok: false, safeMessage: `${providerDisplayName(def)} supports CLI default only.` };
|
|
66
|
+
}
|
|
67
|
+
return { ok: false, safeMessage: `${providerDisplayName(def)} does not expose model '${model}'.` };
|
|
68
|
+
}
|
|
69
|
+
export function defaultOnlyModelDiscovery(displayName) {
|
|
70
|
+
return modelDiscovery("default_only", "none", {
|
|
71
|
+
safeMessage: `${displayName} does not expose a safe model-list command; use CLI default.`,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export function staticModelDiscovery(safeMessage, models, defaultModelId = models.find((model) => model.default)?.id ?? null) {
|
|
75
|
+
return {
|
|
76
|
+
status: "available",
|
|
77
|
+
source: "adapter_static",
|
|
78
|
+
defaultModelId,
|
|
79
|
+
allowCustomModel: false,
|
|
80
|
+
models: models.map(normalizeModelChoice),
|
|
81
|
+
safeMessage,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function modelDiscovery(status, source, opts) {
|
|
85
|
+
return {
|
|
86
|
+
status,
|
|
87
|
+
source,
|
|
88
|
+
defaultModelId: null,
|
|
89
|
+
allowCustomModel: false,
|
|
90
|
+
models: [],
|
|
91
|
+
safeMessage: opts.safeMessage,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function normalizeModelChoice(model) {
|
|
95
|
+
return {
|
|
96
|
+
id: model.id,
|
|
97
|
+
label: model.label || model.id,
|
|
98
|
+
default: Boolean(model.default),
|
|
99
|
+
available: model.available !== false,
|
|
100
|
+
reason: typeof model.reason === "string" && model.reason.trim() ? model.reason.trim() : null,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function resolveVersionReadiness(def) {
|
|
104
|
+
return def.metadata?.versionReadiness ?? {
|
|
105
|
+
status: "not_checked",
|
|
106
|
+
installedVersion: null,
|
|
107
|
+
minimumKnownGoodVersion: null,
|
|
108
|
+
safeUpgradeHint: "No provider version probe is defined.",
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function resolveStreaming(def) {
|
|
112
|
+
return def.metadata?.streaming ?? {
|
|
113
|
+
mode: def.capabilities.streamsText ? "streaming" : "none",
|
|
114
|
+
safeMessage: def.capabilities.streamsText
|
|
115
|
+
? `${providerDisplayName(def)} reports streaming text capability.`
|
|
116
|
+
: `${providerDisplayName(def)} does not stream text.`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function defaultSafeMessage(def, status) {
|
|
120
|
+
if (status === "default_only")
|
|
121
|
+
return `${providerDisplayName(def)} supports CLI default only.`;
|
|
122
|
+
if (status === "blocked")
|
|
123
|
+
return `${providerDisplayName(def)} is blocked.`;
|
|
124
|
+
if (status === "unavailable")
|
|
125
|
+
return `${providerDisplayName(def)} model discovery is unavailable.`;
|
|
126
|
+
return `${providerDisplayName(def)} exposes provider-owned model choices.`;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=providerDiscovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerDiscovery.js","sourceRoot":"","sources":["../../src/providers/providerDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed provider error taxonomy.
|
|
3
|
+
*
|
|
4
|
+
* Every provider error carries a SAFE message (deterministic, no stack trace, no secrets).
|
|
5
|
+
* The ACP server maps a failed prompt to a JSON-RPC error using `safeMessage` only — raw
|
|
6
|
+
* stack traces never reach stdout.
|
|
7
|
+
*/
|
|
8
|
+
export type ProviderErrorCode = "PROVIDER_CONFIGURATION" | "PROVIDER_AUTH_REQUIRED" | "PROVIDER_RATE_LIMIT" | "PROVIDER_UNAVAILABLE" | "PROVIDER_TIMEOUT" | "PROVIDER_CANCELLED" | "PROVIDER_PROTOCOL" | "PROVIDER_SAFETY_VIOLATION" | "PROVIDER_NOT_IMPLEMENTED" | "PROVIDER_INTERNAL";
|
|
9
|
+
export interface ProviderErrorInit {
|
|
10
|
+
code: ProviderErrorCode;
|
|
11
|
+
safeMessage: string;
|
|
12
|
+
providerId?: string;
|
|
13
|
+
retryable?: boolean;
|
|
14
|
+
redactedDetails?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ProviderAuthFailureDiagnostic {
|
|
17
|
+
providerId?: string;
|
|
18
|
+
code: "PROVIDER_AUTH_REQUIRED";
|
|
19
|
+
safeMessage: string;
|
|
20
|
+
retryable: boolean;
|
|
21
|
+
requiredAction: "authenticate_provider_cli_or_bind_required_secret_refs";
|
|
22
|
+
redactionState: "active";
|
|
23
|
+
}
|
|
24
|
+
export declare class ProviderError extends Error {
|
|
25
|
+
readonly code: ProviderErrorCode;
|
|
26
|
+
readonly providerId?: string;
|
|
27
|
+
readonly retryable: boolean;
|
|
28
|
+
readonly redactedDetails?: string;
|
|
29
|
+
constructor(init: ProviderErrorInit);
|
|
30
|
+
/** The safe, user-presentable message (alias of `message`). */
|
|
31
|
+
get safeMessage(): string;
|
|
32
|
+
}
|
|
33
|
+
export declare class ProviderConfigurationError extends ProviderError {
|
|
34
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
35
|
+
}
|
|
36
|
+
export declare class ProviderAuthRequiredError extends ProviderError {
|
|
37
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
38
|
+
}
|
|
39
|
+
export declare class ProviderRateLimitError extends ProviderError {
|
|
40
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
41
|
+
}
|
|
42
|
+
export declare class ProviderUnavailableError extends ProviderError {
|
|
43
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
44
|
+
}
|
|
45
|
+
export declare class ProviderTimeoutError extends ProviderError {
|
|
46
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
47
|
+
}
|
|
48
|
+
export declare class ProviderCancelledError extends ProviderError {
|
|
49
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
50
|
+
}
|
|
51
|
+
export declare class ProviderProtocolError extends ProviderError {
|
|
52
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
53
|
+
}
|
|
54
|
+
export declare class ProviderSafetyViolationError extends ProviderError {
|
|
55
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
56
|
+
}
|
|
57
|
+
export declare class ProviderNotImplementedError extends ProviderError {
|
|
58
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
59
|
+
}
|
|
60
|
+
export declare class ProviderInternalError extends ProviderError {
|
|
61
|
+
constructor(init: Omit<ProviderErrorInit, "code">);
|
|
62
|
+
}
|
|
63
|
+
export declare function buildProviderAuthFailureDiagnostic(error: ProviderError): ProviderAuthFailureDiagnostic | undefined;
|
|
64
|
+
//# sourceMappingURL=providerErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerErrors.d.ts","sourceRoot":"","sources":["../../src/providers/providerErrors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,iBAAiB,GACzB,wBAAwB,GACxB,wBAAwB,GACxB,qBAAqB,GACrB,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GACpB,mBAAmB,GACnB,2BAA2B,GAC3B,0BAA0B,GAC1B,mBAAmB,CAAC;AAExB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,wDAAwD,CAAC;IACzE,cAAc,EAAE,QAAQ,CAAC;CAC1B;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;gBAEtB,IAAI,EAAE,iBAAiB;IASnC,+DAA+D;IAC/D,IAAI,WAAW,IAAI,MAAM,CAExB;CACF;AAGD,qBAAa,0BAA2B,SAAQ,aAAa;gBAC/C,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,yBAA0B,SAAQ,aAAa;gBAC9C,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,sBAAuB,SAAQ,aAAa;gBAC3C,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,wBAAyB,SAAQ,aAAa;gBAC7C,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,oBAAqB,SAAQ,aAAa;gBACzC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,sBAAuB,SAAQ,aAAa;gBAC3C,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,4BAA6B,SAAQ,aAAa;gBACjD,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,2BAA4B,SAAQ,aAAa;gBAChD,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AACD,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;CAIlD;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,aAAa,GAAG,6BAA6B,GAAG,SAAS,CAUlH"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed provider error taxonomy.
|
|
3
|
+
*
|
|
4
|
+
* Every provider error carries a SAFE message (deterministic, no stack trace, no secrets).
|
|
5
|
+
* The ACP server maps a failed prompt to a JSON-RPC error using `safeMessage` only — raw
|
|
6
|
+
* stack traces never reach stdout.
|
|
7
|
+
*/
|
|
8
|
+
export class ProviderError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
providerId;
|
|
11
|
+
retryable;
|
|
12
|
+
redactedDetails;
|
|
13
|
+
constructor(init) {
|
|
14
|
+
super(init.safeMessage);
|
|
15
|
+
this.name = "ProviderError";
|
|
16
|
+
this.code = init.code;
|
|
17
|
+
if (init.providerId !== undefined)
|
|
18
|
+
this.providerId = init.providerId;
|
|
19
|
+
this.retryable = init.retryable ?? false;
|
|
20
|
+
if (init.redactedDetails !== undefined)
|
|
21
|
+
this.redactedDetails = init.redactedDetails;
|
|
22
|
+
}
|
|
23
|
+
/** The safe, user-presentable message (alias of `message`). */
|
|
24
|
+
get safeMessage() {
|
|
25
|
+
return this.message;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Named subclasses for an explicit, matchable taxonomy. Each fixes its `code`.
|
|
29
|
+
export class ProviderConfigurationError extends ProviderError {
|
|
30
|
+
constructor(init) {
|
|
31
|
+
super({ ...init, code: "PROVIDER_CONFIGURATION" });
|
|
32
|
+
this.name = "ProviderConfigurationError";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class ProviderAuthRequiredError extends ProviderError {
|
|
36
|
+
constructor(init) {
|
|
37
|
+
super({ ...init, code: "PROVIDER_AUTH_REQUIRED" });
|
|
38
|
+
this.name = "ProviderAuthRequiredError";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class ProviderRateLimitError extends ProviderError {
|
|
42
|
+
constructor(init) {
|
|
43
|
+
super({ retryable: true, ...init, code: "PROVIDER_RATE_LIMIT" });
|
|
44
|
+
this.name = "ProviderRateLimitError";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class ProviderUnavailableError extends ProviderError {
|
|
48
|
+
constructor(init) {
|
|
49
|
+
super({ ...init, code: "PROVIDER_UNAVAILABLE" });
|
|
50
|
+
this.name = "ProviderUnavailableError";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export class ProviderTimeoutError extends ProviderError {
|
|
54
|
+
constructor(init) {
|
|
55
|
+
super({ ...init, code: "PROVIDER_TIMEOUT" });
|
|
56
|
+
this.name = "ProviderTimeoutError";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export class ProviderCancelledError extends ProviderError {
|
|
60
|
+
constructor(init) {
|
|
61
|
+
super({ ...init, code: "PROVIDER_CANCELLED" });
|
|
62
|
+
this.name = "ProviderCancelledError";
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export class ProviderProtocolError extends ProviderError {
|
|
66
|
+
constructor(init) {
|
|
67
|
+
super({ ...init, code: "PROVIDER_PROTOCOL" });
|
|
68
|
+
this.name = "ProviderProtocolError";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export class ProviderSafetyViolationError extends ProviderError {
|
|
72
|
+
constructor(init) {
|
|
73
|
+
super({ ...init, code: "PROVIDER_SAFETY_VIOLATION" });
|
|
74
|
+
this.name = "ProviderSafetyViolationError";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export class ProviderNotImplementedError extends ProviderError {
|
|
78
|
+
constructor(init) {
|
|
79
|
+
super({ ...init, code: "PROVIDER_NOT_IMPLEMENTED" });
|
|
80
|
+
this.name = "ProviderNotImplementedError";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export class ProviderInternalError extends ProviderError {
|
|
84
|
+
constructor(init) {
|
|
85
|
+
super({ ...init, code: "PROVIDER_INTERNAL" });
|
|
86
|
+
this.name = "ProviderInternalError";
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export function buildProviderAuthFailureDiagnostic(error) {
|
|
90
|
+
if (error.code !== "PROVIDER_AUTH_REQUIRED")
|
|
91
|
+
return undefined;
|
|
92
|
+
return {
|
|
93
|
+
...(error.providerId ? { providerId: error.providerId } : {}),
|
|
94
|
+
code: "PROVIDER_AUTH_REQUIRED",
|
|
95
|
+
safeMessage: error.safeMessage,
|
|
96
|
+
retryable: error.retryable,
|
|
97
|
+
requiredAction: "authenticate_provider_cli_or_bind_required_secret_refs",
|
|
98
|
+
redactionState: "active",
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=providerErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerErrors.js","sourceRoot":"","sources":["../../src/providers/providerErrors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized provider event model.
|
|
3
|
+
*
|
|
4
|
+
* Providers emit append-only `ProviderEvent`s; the ACP server maps the streamable ones to ACP
|
|
5
|
+
* `session/update` notifications (`providerEventToAcpUpdate`). Terminal events
|
|
6
|
+
* (`completed`/`cancelled`/`failed`) and `diagnostic` do NOT map to ACP updates — the prompt's
|
|
7
|
+
* disposition is the source of truth, and diagnostics go to stderr. A provider never writes to
|
|
8
|
+
* stdout and never executes a tool by itself.
|
|
9
|
+
*/
|
|
10
|
+
import type { SessionUpdate } from "../types.js";
|
|
11
|
+
export type ProviderEventKind = "plan" | "message_delta" | "tool_started" | "tool_updated" | "tool_completed" | "tool_failed" | "usage" | "completed" | "cancelled" | "failed" | "diagnostic";
|
|
12
|
+
export interface PlanPayload {
|
|
13
|
+
entries: Array<{
|
|
14
|
+
content: string;
|
|
15
|
+
priority: "high" | "medium" | "low";
|
|
16
|
+
status: "pending" | "in_progress" | "completed";
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
export interface MessageDeltaPayload {
|
|
20
|
+
text: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ToolPayload {
|
|
23
|
+
toolCallId: string;
|
|
24
|
+
title?: string;
|
|
25
|
+
kind?: "read" | "edit" | "delete" | "move" | "search" | "execute" | "think" | "fetch" | "other";
|
|
26
|
+
status?: "pending" | "in_progress" | "completed" | "failed";
|
|
27
|
+
outcome?: "succeeded" | "cancelled" | "failed";
|
|
28
|
+
}
|
|
29
|
+
export interface UsagePayload {
|
|
30
|
+
used: number;
|
|
31
|
+
size: number;
|
|
32
|
+
}
|
|
33
|
+
export interface DiagnosticPayload {
|
|
34
|
+
message: string;
|
|
35
|
+
}
|
|
36
|
+
export interface TerminalPayload {
|
|
37
|
+
disposition: "completed" | "cancelled" | "failed";
|
|
38
|
+
message?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ProviderEvent {
|
|
41
|
+
eventId: string;
|
|
42
|
+
providerId: string;
|
|
43
|
+
sessionId: string;
|
|
44
|
+
requestId: string;
|
|
45
|
+
timestamp: string;
|
|
46
|
+
kind: ProviderEventKind;
|
|
47
|
+
payload: unknown;
|
|
48
|
+
}
|
|
49
|
+
/** Helper to build a well-formed, append-only provider event. */
|
|
50
|
+
export interface ProviderEventFactory {
|
|
51
|
+
next(kind: ProviderEventKind, payload: unknown): ProviderEvent;
|
|
52
|
+
}
|
|
53
|
+
export declare function createEventFactory(opts: {
|
|
54
|
+
providerId: string;
|
|
55
|
+
sessionId: string;
|
|
56
|
+
requestId: string;
|
|
57
|
+
now: () => string;
|
|
58
|
+
}): ProviderEventFactory;
|
|
59
|
+
/** Map a streamable provider event to an ACP `session/update` payload (or null). */
|
|
60
|
+
export declare function providerEventToAcpUpdate(event: ProviderEvent): SessionUpdate | null;
|
|
61
|
+
/** True for the terminal event kinds (completed/cancelled/failed). */
|
|
62
|
+
export declare function isTerminalEvent(kind: ProviderEventKind): boolean;
|
|
63
|
+
//# sourceMappingURL=providerEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providerEvents.d.ts","sourceRoot":"","sources":["../../src/providers/providerEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,eAAe,GACf,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,OAAO,GACP,WAAW,GACX,WAAW,GACX,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;QACpC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;KACjD,CAAC,CAAC;CACJ;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAChG,MAAM,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5D,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;CAChD;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,iEAAiE;AACjE,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,GAAG,aAAa,CAAC;CAChE;AAED,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,oBAAoB,CAgBvB;AAED,oFAAoF;AACpF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAqDnF;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAEhE"}
|