@adcp/client 4.14.0 → 4.16.0

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 (161) hide show
  1. package/bin/adcp.js +2 -0
  2. package/dist/lib/adapters/governance-adapter.d.ts +2 -2
  3. package/dist/lib/adapters/governance-adapter.d.ts.map +1 -1
  4. package/dist/lib/adapters/governance-adapter.js +1 -3
  5. package/dist/lib/adapters/governance-adapter.js.map +1 -1
  6. package/dist/lib/adapters/si-session-manager.d.ts.map +1 -1
  7. package/dist/lib/adapters/si-session-manager.js +8 -3
  8. package/dist/lib/adapters/si-session-manager.js.map +1 -1
  9. package/dist/lib/agents/index.generated.d.ts +9 -1
  10. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  11. package/dist/lib/agents/index.generated.js +12 -0
  12. package/dist/lib/agents/index.generated.js.map +1 -1
  13. package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
  14. package/dist/lib/core/ADCPMultiAgentClient.js +10 -3
  15. package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
  16. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  17. package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
  18. package/dist/lib/core/AsyncHandler.js +1 -1
  19. package/dist/lib/core/AsyncHandler.js.map +1 -1
  20. package/dist/lib/core/GovernanceMiddleware.d.ts +2 -10
  21. package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -1
  22. package/dist/lib/core/GovernanceMiddleware.js +8 -51
  23. package/dist/lib/core/GovernanceMiddleware.js.map +1 -1
  24. package/dist/lib/core/GovernanceTypes.d.ts +4 -4
  25. package/dist/lib/core/GovernanceTypes.d.ts.map +1 -1
  26. package/dist/lib/core/GovernanceTypes.js +1 -0
  27. package/dist/lib/core/GovernanceTypes.js.map +1 -1
  28. package/dist/lib/core/SingleAgentClient.d.ts +1 -1
  29. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  30. package/dist/lib/core/SingleAgentClient.js +7 -4
  31. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  32. package/dist/lib/core/TaskExecutor.d.ts +4 -0
  33. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  34. package/dist/lib/core/TaskExecutor.js +61 -18
  35. package/dist/lib/core/TaskExecutor.js.map +1 -1
  36. package/dist/lib/index.d.ts +5 -3
  37. package/dist/lib/index.d.ts.map +1 -1
  38. package/dist/lib/index.js +12 -6
  39. package/dist/lib/index.js.map +1 -1
  40. package/dist/lib/protocols/index.d.ts +1 -0
  41. package/dist/lib/protocols/index.d.ts.map +1 -1
  42. package/dist/lib/protocols/index.js +14 -4
  43. package/dist/lib/protocols/index.js.map +1 -1
  44. package/dist/lib/protocols/mcp-tasks.d.ts +55 -0
  45. package/dist/lib/protocols/mcp-tasks.d.ts.map +1 -0
  46. package/dist/lib/protocols/mcp-tasks.js +334 -0
  47. package/dist/lib/protocols/mcp-tasks.js.map +1 -0
  48. package/dist/lib/protocols/mcp.d.ts +9 -0
  49. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  50. package/dist/lib/protocols/mcp.js +4 -0
  51. package/dist/lib/protocols/mcp.js.map +1 -1
  52. package/dist/lib/registry/types.generated.d.ts +9 -9
  53. package/dist/lib/registry/types.generated.d.ts.map +1 -1
  54. package/dist/lib/registry/types.generated.js +1 -1
  55. package/dist/lib/server/index.d.ts +2 -0
  56. package/dist/lib/server/index.d.ts.map +1 -1
  57. package/dist/lib/server/index.js +7 -1
  58. package/dist/lib/server/index.js.map +1 -1
  59. package/dist/lib/server/tasks.d.ts +86 -0
  60. package/dist/lib/server/tasks.d.ts.map +1 -0
  61. package/dist/lib/server/tasks.js +110 -0
  62. package/dist/lib/server/tasks.js.map +1 -0
  63. package/dist/lib/testing/agent-tester.d.ts +1 -1
  64. package/dist/lib/testing/agent-tester.d.ts.map +1 -1
  65. package/dist/lib/testing/agent-tester.js +52 -2
  66. package/dist/lib/testing/agent-tester.js.map +1 -1
  67. package/dist/lib/testing/client.d.ts +18 -0
  68. package/dist/lib/testing/client.d.ts.map +1 -1
  69. package/dist/lib/testing/client.js +39 -1
  70. package/dist/lib/testing/client.js.map +1 -1
  71. package/dist/lib/testing/compliance/comply.d.ts +4 -0
  72. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  73. package/dist/lib/testing/compliance/comply.js +406 -173
  74. package/dist/lib/testing/compliance/comply.js.map +1 -1
  75. package/dist/lib/testing/compliance/types.d.ts +7 -1
  76. package/dist/lib/testing/compliance/types.d.ts.map +1 -1
  77. package/dist/lib/testing/index.d.ts +3 -1
  78. package/dist/lib/testing/index.d.ts.map +1 -1
  79. package/dist/lib/testing/index.js +13 -2
  80. package/dist/lib/testing/index.js.map +1 -1
  81. package/dist/lib/testing/orchestrator.d.ts +4 -0
  82. package/dist/lib/testing/orchestrator.d.ts.map +1 -1
  83. package/dist/lib/testing/orchestrator.js +19 -2
  84. package/dist/lib/testing/orchestrator.js.map +1 -1
  85. package/dist/lib/testing/scenarios/capabilities.js +2 -2
  86. package/dist/lib/testing/scenarios/capabilities.js.map +1 -1
  87. package/dist/lib/testing/scenarios/creative.js +4 -4
  88. package/dist/lib/testing/scenarios/creative.js.map +1 -1
  89. package/dist/lib/testing/scenarios/deterministic.d.ts +37 -0
  90. package/dist/lib/testing/scenarios/deterministic.d.ts.map +1 -0
  91. package/dist/lib/testing/scenarios/deterministic.js +705 -0
  92. package/dist/lib/testing/scenarios/deterministic.js.map +1 -0
  93. package/dist/lib/testing/scenarios/discovery.js +2 -2
  94. package/dist/lib/testing/scenarios/discovery.js.map +1 -1
  95. package/dist/lib/testing/scenarios/edge-cases.d.ts.map +1 -1
  96. package/dist/lib/testing/scenarios/edge-cases.js +18 -25
  97. package/dist/lib/testing/scenarios/edge-cases.js.map +1 -1
  98. package/dist/lib/testing/scenarios/error-compliance.d.ts.map +1 -1
  99. package/dist/lib/testing/scenarios/error-compliance.js +9 -13
  100. package/dist/lib/testing/scenarios/error-compliance.js.map +1 -1
  101. package/dist/lib/testing/scenarios/governance.d.ts +15 -0
  102. package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
  103. package/dist/lib/testing/scenarios/governance.js +386 -49
  104. package/dist/lib/testing/scenarios/governance.js.map +1 -1
  105. package/dist/lib/testing/scenarios/health.js +2 -2
  106. package/dist/lib/testing/scenarios/health.js.map +1 -1
  107. package/dist/lib/testing/scenarios/index.d.ts +2 -1
  108. package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
  109. package/dist/lib/testing/scenarios/index.js +12 -1
  110. package/dist/lib/testing/scenarios/index.js.map +1 -1
  111. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  112. package/dist/lib/testing/scenarios/media-buy.js +258 -31
  113. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  114. package/dist/lib/testing/scenarios/schema-compliance.js +2 -2
  115. package/dist/lib/testing/scenarios/schema-compliance.js.map +1 -1
  116. package/dist/lib/testing/scenarios/signals.d.ts.map +1 -1
  117. package/dist/lib/testing/scenarios/signals.js +35 -2
  118. package/dist/lib/testing/scenarios/signals.js.map +1 -1
  119. package/dist/lib/testing/scenarios/sponsored-intelligence.d.ts.map +1 -1
  120. package/dist/lib/testing/scenarios/sponsored-intelligence.js +8 -7
  121. package/dist/lib/testing/scenarios/sponsored-intelligence.js.map +1 -1
  122. package/dist/lib/testing/stubs/governance-agent-stub.d.ts +72 -0
  123. package/dist/lib/testing/stubs/governance-agent-stub.d.ts.map +1 -0
  124. package/dist/lib/testing/stubs/governance-agent-stub.js +295 -0
  125. package/dist/lib/testing/stubs/governance-agent-stub.js.map +1 -0
  126. package/dist/lib/testing/stubs/index.d.ts +3 -0
  127. package/dist/lib/testing/stubs/index.d.ts.map +1 -0
  128. package/dist/lib/testing/stubs/index.js +6 -0
  129. package/dist/lib/testing/stubs/index.js.map +1 -0
  130. package/dist/lib/testing/test-controller.d.ts +46 -0
  131. package/dist/lib/testing/test-controller.d.ts.map +1 -0
  132. package/dist/lib/testing/test-controller.js +143 -0
  133. package/dist/lib/testing/test-controller.js.map +1 -0
  134. package/dist/lib/testing/types.d.ts +8 -1
  135. package/dist/lib/testing/types.d.ts.map +1 -1
  136. package/dist/lib/types/core.generated.d.ts +562 -97
  137. package/dist/lib/types/core.generated.d.ts.map +1 -1
  138. package/dist/lib/types/core.generated.js +1 -1
  139. package/dist/lib/types/error-codes.d.ts +4 -4
  140. package/dist/lib/types/error-codes.d.ts.map +1 -1
  141. package/dist/lib/types/error-codes.js +26 -2
  142. package/dist/lib/types/error-codes.js.map +1 -1
  143. package/dist/lib/types/schemas.generated.d.ts +4625 -8682
  144. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  145. package/dist/lib/types/schemas.generated.js +711 -403
  146. package/dist/lib/types/schemas.generated.js.map +1 -1
  147. package/dist/lib/types/tools.generated.d.ts +1188 -405
  148. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  149. package/dist/lib/utils/response-schemas.d.ts.map +1 -1
  150. package/dist/lib/utils/response-schemas.js +2 -0
  151. package/dist/lib/utils/response-schemas.js.map +1 -1
  152. package/dist/lib/utils/response-unwrapper.d.ts.map +1 -1
  153. package/dist/lib/utils/response-unwrapper.js +12 -0
  154. package/dist/lib/utils/response-unwrapper.js.map +1 -1
  155. package/dist/lib/utils/union-errors.d.ts +16 -0
  156. package/dist/lib/utils/union-errors.d.ts.map +1 -0
  157. package/dist/lib/utils/union-errors.js +34 -0
  158. package/dist/lib/utils/union-errors.js.map +1 -0
  159. package/dist/lib/version.d.ts +3 -3
  160. package/dist/lib/version.js +3 -3
  161. package/package.json +1 -1
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ /**
3
+ * Stub Governance Agent
4
+ *
5
+ * Minimal MCP server that implements check_governance and report_plan_outcome.
6
+ * Used by comply() to verify sellers correctly call governance agents with
7
+ * governance_context during the media buy lifecycle.
8
+ *
9
+ * - Always returns "approved" with a deterministic governance_context
10
+ * - Records every inbound call for assertion by test scenarios
11
+ * - Starts on an ephemeral port (HTTP or HTTPS), shuts down cleanly
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.GovernanceAgentStub = void 0;
15
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
16
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
17
+ const http_1 = require("http");
18
+ const https_1 = require("https");
19
+ const crypto_1 = require("crypto");
20
+ const child_process_1 = require("child_process");
21
+ const os_1 = require("os");
22
+ const path_1 = require("path");
23
+ const fs_1 = require("fs");
24
+ const schemas_generated_1 = require("../../types/schemas.generated");
25
+ /**
26
+ * Generate a self-signed certificate using openssl CLI.
27
+ * Returns PEM-encoded key and cert strings.
28
+ */
29
+ function generateSelfSignedCert() {
30
+ const id = (0, crypto_1.randomUUID)().slice(0, 8);
31
+ const keyPath = (0, path_1.join)((0, os_1.tmpdir)(), `stub-key-${id}.pem`);
32
+ const certPath = (0, path_1.join)((0, os_1.tmpdir)(), `stub-cert-${id}.pem`);
33
+ try {
34
+ (0, child_process_1.execFileSync)('openssl', [
35
+ 'req',
36
+ '-x509',
37
+ '-newkey',
38
+ 'rsa:2048',
39
+ '-keyout',
40
+ keyPath,
41
+ '-out',
42
+ certPath,
43
+ '-days',
44
+ '1',
45
+ '-nodes',
46
+ '-subj',
47
+ '/CN=localhost',
48
+ '-addext',
49
+ 'subjectAltName=IP:127.0.0.1',
50
+ ], { stdio: 'ignore' });
51
+ const key = (0, fs_1.readFileSync)(keyPath, 'utf8');
52
+ const cert = (0, fs_1.readFileSync)(certPath, 'utf8');
53
+ return { key, cert };
54
+ }
55
+ finally {
56
+ try {
57
+ (0, fs_1.unlinkSync)(keyPath);
58
+ }
59
+ catch { }
60
+ try {
61
+ (0, fs_1.unlinkSync)(certPath);
62
+ }
63
+ catch { }
64
+ }
65
+ }
66
+ class GovernanceAgentStub {
67
+ httpServer = null;
68
+ callLog = [];
69
+ governanceContextPrefix;
70
+ expectedToken;
71
+ constructor() {
72
+ this.governanceContextPrefix = `stub-gc-${(0, crypto_1.randomUUID)().slice(0, 8)}`;
73
+ this.expectedToken = `stub-token-${(0, crypto_1.randomUUID)()}`;
74
+ }
75
+ /**
76
+ * The bearer token this stub expects. Pass this to register_governance
77
+ * so the seller can authenticate when calling check_governance.
78
+ */
79
+ get authToken() {
80
+ return this.expectedToken;
81
+ }
82
+ handleRequest() {
83
+ return async (req, res) => {
84
+ const url = req.url || '';
85
+ if (url === '/mcp' || url === '/mcp/') {
86
+ // Validate bearer token if present (sellers should send the token from register_governance)
87
+ const authHeader = req.headers.authorization;
88
+ if (authHeader && !authHeader.startsWith(`Bearer ${this.expectedToken}`)) {
89
+ res.writeHead(401, { 'Content-Type': 'application/json' });
90
+ res.end(JSON.stringify({ error: 'Invalid bearer token' }));
91
+ return;
92
+ }
93
+ const server = this.createMCPServer();
94
+ const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
95
+ try {
96
+ await server.connect(transport);
97
+ await transport.handleRequest(req, res);
98
+ }
99
+ catch {
100
+ if (!res.headersSent) {
101
+ res.writeHead(500, { 'Content-Type': 'application/json' });
102
+ res.end(JSON.stringify({ error: 'Internal server error' }));
103
+ }
104
+ }
105
+ finally {
106
+ await server.close();
107
+ }
108
+ }
109
+ else {
110
+ res.writeHead(404);
111
+ res.end('Not found');
112
+ }
113
+ };
114
+ }
115
+ /**
116
+ * Start the stub server on an ephemeral port (HTTP).
117
+ * Returns the MCP endpoint URL.
118
+ */
119
+ async start() {
120
+ this.httpServer = (0, http_1.createServer)(this.handleRequest());
121
+ return this.listen('http');
122
+ }
123
+ /**
124
+ * Start the stub server on an ephemeral port with HTTPS (self-signed cert).
125
+ * The seller under test needs NODE_TLS_REJECT_UNAUTHORIZED=0 or a custom CA
126
+ * to connect. Returns the HTTPS MCP endpoint URL.
127
+ */
128
+ async startHttps() {
129
+ const { key, cert } = generateSelfSignedCert();
130
+ this.httpServer = (0, https_1.createServer)({ key, cert }, this.handleRequest());
131
+ return this.listen('https');
132
+ }
133
+ listen(protocol) {
134
+ return new Promise((resolve, reject) => {
135
+ this.httpServer.listen(0, '127.0.0.1', () => {
136
+ const addr = this.httpServer.address();
137
+ if (!addr || typeof addr === 'string') {
138
+ reject(new Error('Failed to get server address'));
139
+ return;
140
+ }
141
+ resolve({ url: `${protocol}://127.0.0.1:${addr.port}/mcp` });
142
+ });
143
+ this.httpServer.on('error', reject);
144
+ });
145
+ }
146
+ /**
147
+ * Stop the stub server.
148
+ */
149
+ async stop() {
150
+ return new Promise(resolve => {
151
+ if (this.httpServer) {
152
+ this.httpServer.close(() => resolve());
153
+ }
154
+ else {
155
+ resolve();
156
+ }
157
+ });
158
+ }
159
+ /**
160
+ * Get the call log — every tool call received by this stub.
161
+ */
162
+ getCallLog() {
163
+ return [...this.callLog];
164
+ }
165
+ /**
166
+ * Get calls for a specific tool.
167
+ */
168
+ getCallsForTool(tool) {
169
+ return this.callLog.filter(c => c.tool === tool);
170
+ }
171
+ /**
172
+ * Check if any call included the expected governance_context.
173
+ */
174
+ hasGovernanceContext(expectedContext) {
175
+ return this.callLog.some(c => c.params.governance_context === expectedContext);
176
+ }
177
+ /**
178
+ * Clear the call log.
179
+ */
180
+ clearCallLog() {
181
+ this.callLog = [];
182
+ }
183
+ /**
184
+ * Generate the governance_context string this stub issues.
185
+ */
186
+ generateContext(planId) {
187
+ return `${this.governanceContextPrefix}-${planId}`;
188
+ }
189
+ recordCall(tool, params) {
190
+ this.callLog.push({
191
+ tool,
192
+ params: structuredClone(params),
193
+ timestamp: new Date().toISOString(),
194
+ });
195
+ }
196
+ createMCPServer() {
197
+ const server = new mcp_js_1.McpServer({ name: 'Governance Agent Stub', version: '1.0.0' });
198
+ // --- get_adcp_capabilities ---
199
+ server.tool('get_adcp_capabilities', {}, async () => {
200
+ this.recordCall('get_adcp_capabilities', {});
201
+ return {
202
+ content: [
203
+ {
204
+ type: 'text',
205
+ text: JSON.stringify({
206
+ adcp: { major_versions: [3] },
207
+ supported_protocols: ['governance'],
208
+ }),
209
+ },
210
+ ],
211
+ };
212
+ });
213
+ // --- sync_plans ---
214
+ server.tool('sync_plans', schemas_generated_1.SyncPlansRequestSchema.shape, async (args) => {
215
+ this.recordCall('sync_plans', args);
216
+ const plans = args.plans || [];
217
+ return {
218
+ content: [
219
+ {
220
+ type: 'text',
221
+ text: JSON.stringify({
222
+ plans: plans.map((p) => ({
223
+ plan_id: p.plan_id,
224
+ status: 'active',
225
+ version: 1,
226
+ categories: [{ category_id: 'budget_authority' }, { category_id: 'geo_compliance' }],
227
+ })),
228
+ }),
229
+ },
230
+ ],
231
+ };
232
+ });
233
+ // --- check_governance ---
234
+ server.tool('check_governance', schemas_generated_1.CheckGovernanceRequestSchema.shape, async (args) => {
235
+ this.recordCall('check_governance', args);
236
+ const planId = args.plan_id;
237
+ const binding = args.binding;
238
+ const checkId = `chk_stub_${(0, crypto_1.randomUUID)().slice(0, 8)}`;
239
+ const gc = this.generateContext(planId);
240
+ return {
241
+ content: [
242
+ {
243
+ type: 'text',
244
+ text: JSON.stringify({
245
+ check_id: checkId,
246
+ status: 'approved',
247
+ binding,
248
+ plan_id: planId,
249
+ explanation: 'Stub governance agent: approved for testing.',
250
+ governance_context: gc,
251
+ expires_at: new Date(Date.now() + 3600_000).toISOString(),
252
+ }),
253
+ },
254
+ ],
255
+ };
256
+ });
257
+ // --- report_plan_outcome ---
258
+ server.tool('report_plan_outcome', schemas_generated_1.ReportPlanOutcomeRequestSchema.shape, async (args) => {
259
+ this.recordCall('report_plan_outcome', args);
260
+ return {
261
+ content: [
262
+ {
263
+ type: 'text',
264
+ text: JSON.stringify({
265
+ outcome_id: `out_stub_${(0, crypto_1.randomUUID)().slice(0, 8)}`,
266
+ status: 'accepted',
267
+ }),
268
+ },
269
+ ],
270
+ };
271
+ });
272
+ // --- get_plan_audit_logs ---
273
+ server.tool('get_plan_audit_logs', schemas_generated_1.GetPlanAuditLogsRequestSchema.shape, async (args) => {
274
+ this.recordCall('get_plan_audit_logs', args);
275
+ const planIds = args.plan_ids || [];
276
+ return {
277
+ content: [
278
+ {
279
+ type: 'text',
280
+ text: JSON.stringify({
281
+ plans: planIds.map(id => ({
282
+ plan_id: id,
283
+ budget: { total_committed: 0, budget_remaining: 10000 },
284
+ entries: [],
285
+ })),
286
+ }),
287
+ },
288
+ ],
289
+ };
290
+ });
291
+ return server;
292
+ }
293
+ }
294
+ exports.GovernanceAgentStub = GovernanceAgentStub;
295
+ //# sourceMappingURL=governance-agent-stub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-agent-stub.js","sourceRoot":"","sources":["../../../../src/lib/testing/stubs/governance-agent-stub.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { GovernanceAgentStub } from './governance-agent-stub';
2
+ export type { StubCallRecord } from './governance-agent-stub';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/stubs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GovernanceAgentStub = void 0;
4
+ var governance_agent_stub_1 = require("./governance-agent-stub");
5
+ Object.defineProperty(exports, "GovernanceAgentStub", { enumerable: true, get: function () { return governance_agent_stub_1.GovernanceAgentStub; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/testing/stubs/index.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Test Controller Client — comply_test_controller integration
3
+ *
4
+ * Encapsulates all interaction with the comply_test_controller tool.
5
+ * Handles detection, scenario discovery, and typed invocations.
6
+ */
7
+ import type { TestClient } from './client';
8
+ import type { AgentProfile, TaskResult, TestOptions } from './types';
9
+ import type { ComplyTestControllerResponse, ListScenariosSuccess, StateTransitionSuccess, SimulationSuccess, ControllerError } from '../types/tools.generated';
10
+ /** Scenarios the controller can support */
11
+ export type ControllerScenario = 'force_creative_status' | 'force_account_status' | 'force_media_buy_status' | 'force_session_status' | 'simulate_delivery' | 'simulate_budget_spend';
12
+ /** What capabilities the seller's test controller exposes */
13
+ export interface ControllerCapabilities {
14
+ detected: true;
15
+ scenarios: ControllerScenario[];
16
+ }
17
+ /** No test controller available */
18
+ export interface NoController {
19
+ detected: false;
20
+ }
21
+ export type ControllerDetection = ControllerCapabilities | NoController;
22
+ /** Public wrapper for scenarios that need raw controller access (e.g., controller validation) */
23
+ export declare function callControllerRaw(client: TestClient, params: Record<string, unknown>, options?: TestOptions): Promise<TaskResult>;
24
+ /** Check if the agent exposes comply_test_controller */
25
+ export declare function hasTestController(profile: AgentProfile): boolean;
26
+ /**
27
+ * Detect the test controller and discover supported scenarios.
28
+ * Returns ControllerCapabilities if the tool is present and list_scenarios succeeds.
29
+ */
30
+ export declare function detectController(client: TestClient, profile: AgentProfile, options?: TestOptions): Promise<ControllerDetection>;
31
+ /** Check if a specific scenario is supported */
32
+ export declare function supportsScenario(controller: ControllerDetection, scenario: ControllerScenario): boolean;
33
+ /**
34
+ * Call a force_* scenario on the test controller.
35
+ * Returns the typed response or a ControllerError on transport failure.
36
+ */
37
+ export declare function forceStatus(client: TestClient, scenario: 'force_creative_status' | 'force_account_status' | 'force_media_buy_status' | 'force_session_status', params: Record<string, unknown>, options?: TestOptions): Promise<StateTransitionSuccess | ControllerError>;
38
+ /**
39
+ * Call a simulate_* scenario on the test controller.
40
+ */
41
+ export declare function simulate(client: TestClient, scenario: 'simulate_delivery' | 'simulate_budget_spend', params: Record<string, unknown>, options?: TestOptions): Promise<SimulationSuccess | ControllerError>;
42
+ /** Type guard: is the response a success? */
43
+ export declare function isSuccess(response: ComplyTestControllerResponse): response is StateTransitionSuccess | SimulationSuccess | ListScenariosSuccess;
44
+ /** Type guard: is the response an error? */
45
+ export declare function isControllerError(response: ComplyTestControllerResponse): response is ControllerError;
46
+ //# sourceMappingURL=test-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-controller.d.ts","sourceRoot":"","sources":["../../../src/lib/testing/test-controller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC,2CAA2C;AAC3C,MAAM,MAAM,kBAAkB,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,wBAAwB,GACxB,sBAAsB,GACtB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,6DAA6D;AAC7D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,KAAK,CAAC;CACjB;AAED,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,GAAG,YAAY,CAAC;AAyDxE,iGAAiG;AACjG,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,mBAAmB,CAAC,CAiC9B;AAED,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAEvG;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,uBAAuB,GAAG,sBAAsB,GAAG,wBAAwB,GAAG,sBAAsB,EAC9G,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,sBAAsB,GAAG,eAAe,CAAC,CAYnD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,mBAAmB,GAAG,uBAAuB,EACvD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,iBAAiB,GAAG,eAAe,CAAC,CAY9C;AAED,6CAA6C;AAC7C,wBAAgB,SAAS,CACvB,QAAQ,EAAE,4BAA4B,GACrC,QAAQ,IAAI,sBAAsB,GAAG,iBAAiB,GAAG,oBAAoB,CAE/E;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,4BAA4B,GAAG,QAAQ,IAAI,eAAe,CAErG"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ /**
3
+ * Test Controller Client — comply_test_controller integration
4
+ *
5
+ * Encapsulates all interaction with the comply_test_controller tool.
6
+ * Handles detection, scenario discovery, and typed invocations.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.callControllerRaw = callControllerRaw;
10
+ exports.hasTestController = hasTestController;
11
+ exports.detectController = detectController;
12
+ exports.supportsScenario = supportsScenario;
13
+ exports.forceStatus = forceStatus;
14
+ exports.simulate = simulate;
15
+ exports.isSuccess = isSuccess;
16
+ exports.isControllerError = isControllerError;
17
+ const client_1 = require("./client");
18
+ const TOOL_NAME = 'comply_test_controller';
19
+ /** Fallback sandbox account when no options are available (detection phase) */
20
+ const DEFAULT_SANDBOX_ACCOUNT = { brand: { domain: 'test.example.com' }, operator: 'test.example.com', sandbox: true };
21
+ /**
22
+ * Build the account ref for controller calls.
23
+ * Uses the same resolution as test scenarios so entities are in the same session.
24
+ */
25
+ function buildAccount(options) {
26
+ if (options) {
27
+ const account = (0, client_1.resolveAccount)(options);
28
+ // Ensure sandbox is set — controller requires it
29
+ return { ...account, sandbox: true };
30
+ }
31
+ return DEFAULT_SANDBOX_ACCOUNT;
32
+ }
33
+ /**
34
+ * Call executeTask on the test client and parse the MCP content envelope.
35
+ * executeTask returns { success, data: { content: [{ type: 'text', text: '...' }] } }
36
+ * where the text is the JSON-serialized tool response. This helper extracts and parses it.
37
+ */
38
+ async function callController(client, params, options) {
39
+ const withAccount = { account: buildAccount(options), ...params };
40
+ const raw = await client.executeTask(TOOL_NAME, withAccount);
41
+ // Parse the MCP content envelope to extract the JSON response.
42
+ // Success responses come as { content: [{ type: 'text', text: '...' }] }.
43
+ // Error responses are already parsed by the client (data has the fields directly).
44
+ if (raw.data) {
45
+ const data = raw.data;
46
+ const content = data.content;
47
+ if (content?.[0]?.text) {
48
+ try {
49
+ return { success: true, data: JSON.parse(content[0].text) };
50
+ }
51
+ catch {
52
+ // Fall through to return raw
53
+ }
54
+ }
55
+ // Error responses: data is already the parsed controller response
56
+ if (data.error && data.success === false) {
57
+ return { success: true, data };
58
+ }
59
+ }
60
+ return raw;
61
+ }
62
+ /** Public wrapper for scenarios that need raw controller access (e.g., controller validation) */
63
+ async function callControllerRaw(client, params, options) {
64
+ return callController(client, params, options);
65
+ }
66
+ /** Check if the agent exposes comply_test_controller */
67
+ function hasTestController(profile) {
68
+ return profile.tools.includes(TOOL_NAME);
69
+ }
70
+ /**
71
+ * Detect the test controller and discover supported scenarios.
72
+ * Returns ControllerCapabilities if the tool is present and list_scenarios succeeds.
73
+ */
74
+ async function detectController(client, profile, options) {
75
+ if (!hasTestController(profile)) {
76
+ return { detected: false };
77
+ }
78
+ try {
79
+ const result = await callController(client, { scenario: 'list_scenarios' }, options);
80
+ if (!result.success || !result.data) {
81
+ (0, client_1.getLogger)().warn({ tool: TOOL_NAME }, 'comply_test_controller exists but list_scenarios returned no data');
82
+ return { detected: false };
83
+ }
84
+ const data = result.data;
85
+ if (data.success && data.scenarios) {
86
+ // Handle both array format (spec) and object format (training agent returns scenario descriptions)
87
+ const scenarios = Array.isArray(data.scenarios)
88
+ ? data.scenarios
89
+ : Object.keys(data.scenarios);
90
+ return {
91
+ detected: true,
92
+ scenarios,
93
+ };
94
+ }
95
+ return { detected: false };
96
+ }
97
+ catch (error) {
98
+ (0, client_1.getLogger)().warn({ tool: TOOL_NAME, error: error instanceof Error ? error.message : String(error) }, 'comply_test_controller list_scenarios failed — treating as unavailable');
99
+ return { detected: false };
100
+ }
101
+ }
102
+ /** Check if a specific scenario is supported */
103
+ function supportsScenario(controller, scenario) {
104
+ return controller.detected && controller.scenarios.includes(scenario);
105
+ }
106
+ /**
107
+ * Call a force_* scenario on the test controller.
108
+ * Returns the typed response or a ControllerError on transport failure.
109
+ */
110
+ async function forceStatus(client, scenario, params, options) {
111
+ const result = await callController(client, { scenario, params }, options);
112
+ if (!result.success || !result.data) {
113
+ return {
114
+ success: false,
115
+ error: 'INTERNAL_ERROR',
116
+ error_detail: result.error || 'Controller call failed',
117
+ };
118
+ }
119
+ return result.data;
120
+ }
121
+ /**
122
+ * Call a simulate_* scenario on the test controller.
123
+ */
124
+ async function simulate(client, scenario, params, options) {
125
+ const result = await callController(client, { scenario, params }, options);
126
+ if (!result.success || !result.data) {
127
+ return {
128
+ success: false,
129
+ error: 'INTERNAL_ERROR',
130
+ error_detail: result.error || 'Controller call failed',
131
+ };
132
+ }
133
+ return result.data;
134
+ }
135
+ /** Type guard: is the response a success? */
136
+ function isSuccess(response) {
137
+ return response.success === true;
138
+ }
139
+ /** Type guard: is the response an error? */
140
+ function isControllerError(response) {
141
+ return response.success === false;
142
+ }
143
+ //# sourceMappingURL=test-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-controller.js","sourceRoot":"","sources":["../../../src/lib/testing/test-controller.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA2FH,8CAMC;AAGD,8CAEC;AAMD,4CAqCC;AAGD,4CAEC;AAMD,kCAiBC;AAKD,4BAiBC;AAGD,8BAIC;AAGD,8CAEC;AA5MD,qCAAqD;AAgCrD,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,uBAAuB,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEvH;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAqB;IACzC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;QACxC,iDAAiD;QACjD,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAC3B,MAAkB,EAClB,MAA+B,EAC/B,OAAqB;IAErB,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAClE,MAAM,GAAG,GAAG,MACV,MACD,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEtC,+DAA+D;IAC/D,0EAA0E;IAC1E,mFAAmF;IACnF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,IAA+B,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAA6D,CAAC;QACnF,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;QACH,CAAC;QACD,kEAAkE;QAClE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iGAAiG;AAC1F,KAAK,UAAU,iBAAiB,CACrC,MAAkB,EAClB,MAA+B,EAC/B,OAAqB;IAErB,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,wDAAwD;AACxD,SAAgB,iBAAiB,CAAC,OAAqB;IACrD,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAkB,EAClB,OAAqB,EACrB,OAAqB;IAErB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;QAErF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,IAAA,kBAAS,GAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,mEAAmE,CAAC,CAAC;YAC3G,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAA+B,CAAC;QACpD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,mGAAmG;YACnG,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC7C,CAAC,CAAE,IAAI,CAAC,SAAkC;gBAC1C,CAAC,CAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAA0B,CAAC;YAC1D,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,SAAS;aACV,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,kBAAS,GAAE,CAAC,IAAI,CACd,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAClF,wEAAwE,CACzE,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,SAAgB,gBAAgB,CAAC,UAA+B,EAAE,QAA4B;IAC5F,OAAO,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,WAAW,CAC/B,MAAkB,EAClB,QAA8G,EAC9G,MAA+B,EAC/B,OAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAE3E,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,gBAAgB;YACvB,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,wBAAwB;SACpC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,IAAgD,CAAC;AACjE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,QAAQ,CAC5B,MAAkB,EAClB,QAAuD,EACvD,MAA+B,EAC/B,OAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;IAE3E,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,gBAAgB;YACvB,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,wBAAwB;SACpC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,IAA2C,CAAC;AAC5D,CAAC;AAED,6CAA6C;AAC7C,SAAgB,SAAS,CACvB,QAAsC;IAEtC,OAAO,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC;AACnC,CAAC;AAED,4CAA4C;AAC5C,SAAgB,iBAAiB,CAAC,QAAsC;IACtE,OAAO,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC;AACpC,CAAC"}
@@ -2,7 +2,8 @@
2
2
  * Types for AdCP Agent E2E Testing
3
3
  */
4
4
  import type { FormatID } from '../types/core.generated';
5
- export type TestScenario = 'health_check' | 'discovery' | 'create_media_buy' | 'full_sales_flow' | 'creative_sync' | 'creative_inline' | 'creative_reference' | 'pricing_models' | 'creative_flow' | 'creative_lifecycle' | 'signals_flow' | 'error_handling' | 'validation' | 'pricing_edge_cases' | 'temporal_validation' | 'behavior_analysis' | 'response_consistency' | 'governance_property_lists' | 'governance_content_standards' | 'property_list_filters' | 'campaign_governance' | 'campaign_governance_denied' | 'campaign_governance_conditions' | 'campaign_governance_delivery' | 'si_session_lifecycle' | 'si_availability' | 'si_handoff' | 'capability_discovery' | 'schema_compliance' | 'sync_audiences' | 'media_buy_lifecycle' | 'terminal_state_enforcement' | 'package_lifecycle' | 'error_codes' | 'error_structure' | 'error_transport';
5
+ import type { ControllerDetection } from './test-controller';
6
+ export type TestScenario = 'health_check' | 'discovery' | 'create_media_buy' | 'full_sales_flow' | 'creative_sync' | 'creative_inline' | 'creative_reference' | 'pricing_models' | 'creative_flow' | 'creative_lifecycle' | 'signals_flow' | 'error_handling' | 'validation' | 'pricing_edge_cases' | 'temporal_validation' | 'behavior_analysis' | 'response_consistency' | 'governance_property_lists' | 'governance_content_standards' | 'property_list_filters' | 'campaign_governance' | 'campaign_governance_denied' | 'campaign_governance_conditions' | 'campaign_governance_delivery' | 'seller_governance_context' | 'si_session_lifecycle' | 'si_availability' | 'si_handoff' | 'capability_discovery' | 'schema_compliance' | 'sync_audiences' | 'media_buy_lifecycle' | 'terminal_state_enforcement' | 'package_lifecycle' | 'error_codes' | 'error_structure' | 'error_transport' | 'deterministic_creative' | 'deterministic_media_buy' | 'deterministic_account' | 'deterministic_session' | 'deterministic_delivery' | 'deterministic_budget' | 'controller_validation';
6
7
  export interface TestOptions {
7
8
  protocol?: 'mcp' | 'a2a';
8
9
  brand?: {
@@ -69,6 +70,12 @@ export interface TestOptions {
69
70
  si_context?: string;
70
71
  audience_account_id?: string;
71
72
  sandbox?: boolean;
73
+ /** @internal Pre-created client from comply() — avoids per-scenario MCP reconnection */
74
+ _client?: unknown;
75
+ /** @internal Pre-discovered profile from comply() — skips per-scenario discovery */
76
+ _profile?: AgentProfile;
77
+ /** @internal Test controller capabilities from comply() — set when comply_test_controller detected */
78
+ _controllerCapabilities?: ControllerDetection;
72
79
  }
73
80
  export interface TestStepResult {
74
81
  step: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/testing/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/testing/types.ts"],"names":[],"mappings":"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"}