@adcp/client 4.8.0 → 4.10.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 (149) hide show
  1. package/bin/adcp.js +346 -0
  2. package/dist/lib/adapters/governance-adapter.d.ts +88 -0
  3. package/dist/lib/adapters/governance-adapter.d.ts.map +1 -0
  4. package/dist/lib/adapters/governance-adapter.js +96 -0
  5. package/dist/lib/adapters/governance-adapter.js.map +1 -0
  6. package/dist/lib/adapters/index.d.ts +1 -0
  7. package/dist/lib/adapters/index.d.ts.map +1 -1
  8. package/dist/lib/adapters/index.js +7 -1
  9. package/dist/lib/adapters/index.js.map +1 -1
  10. package/dist/lib/agents/index.generated.d.ts +33 -1
  11. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  12. package/dist/lib/agents/index.generated.js +48 -0
  13. package/dist/lib/agents/index.generated.js.map +1 -1
  14. package/dist/lib/core/AgentClient.d.ts +92 -1
  15. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  16. package/dist/lib/core/AgentClient.js +237 -0
  17. package/dist/lib/core/AgentClient.js.map +1 -1
  18. package/dist/lib/core/AsyncHandler.d.ts +19 -2
  19. package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
  20. package/dist/lib/core/AsyncHandler.js.map +1 -1
  21. package/dist/lib/core/ConversationTypes.d.ts +8 -2
  22. package/dist/lib/core/ConversationTypes.d.ts.map +1 -1
  23. package/dist/lib/core/GovernanceMiddleware.d.ts +86 -0
  24. package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -0
  25. package/dist/lib/core/GovernanceMiddleware.js +289 -0
  26. package/dist/lib/core/GovernanceMiddleware.js.map +1 -0
  27. package/dist/lib/core/GovernanceTypes.d.ts +118 -0
  28. package/dist/lib/core/GovernanceTypes.d.ts.map +1 -0
  29. package/dist/lib/core/GovernanceTypes.js +69 -0
  30. package/dist/lib/core/GovernanceTypes.js.map +1 -0
  31. package/dist/lib/core/SingleAgentClient.d.ts +103 -1
  32. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  33. package/dist/lib/core/SingleAgentClient.js +151 -0
  34. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  35. package/dist/lib/core/TaskExecutor.d.ts +10 -0
  36. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  37. package/dist/lib/core/TaskExecutor.js +95 -10
  38. package/dist/lib/core/TaskExecutor.js.map +1 -1
  39. package/dist/lib/index.d.ts +6 -2
  40. package/dist/lib/index.d.ts.map +1 -1
  41. package/dist/lib/index.js +22 -4
  42. package/dist/lib/index.js.map +1 -1
  43. package/dist/lib/observability/index.d.ts +8 -0
  44. package/dist/lib/observability/index.d.ts.map +1 -0
  45. package/dist/lib/observability/index.js +17 -0
  46. package/dist/lib/observability/index.js.map +1 -0
  47. package/dist/lib/observability/tracing.d.ts +42 -0
  48. package/dist/lib/observability/tracing.d.ts.map +1 -0
  49. package/dist/lib/observability/tracing.js +126 -0
  50. package/dist/lib/observability/tracing.js.map +1 -0
  51. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  52. package/dist/lib/protocols/a2a.js +16 -1
  53. package/dist/lib/protocols/a2a.js.map +1 -1
  54. package/dist/lib/protocols/index.d.ts.map +1 -1
  55. package/dist/lib/protocols/index.js +37 -29
  56. package/dist/lib/protocols/index.js.map +1 -1
  57. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  58. package/dist/lib/protocols/mcp.js +21 -1
  59. package/dist/lib/protocols/mcp.js.map +1 -1
  60. package/dist/lib/registry/types.generated.d.ts +754 -5
  61. package/dist/lib/registry/types.generated.d.ts.map +1 -1
  62. package/dist/lib/registry/types.generated.js +1 -1
  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 +36 -11
  66. package/dist/lib/testing/agent-tester.js.map +1 -1
  67. package/dist/lib/testing/client.d.ts +6 -1
  68. package/dist/lib/testing/client.d.ts.map +1 -1
  69. package/dist/lib/testing/client.js +36 -19
  70. package/dist/lib/testing/client.js.map +1 -1
  71. package/dist/lib/testing/compliance/briefs.d.ts +12 -0
  72. package/dist/lib/testing/compliance/briefs.d.ts.map +1 -0
  73. package/dist/lib/testing/compliance/briefs.js +157 -0
  74. package/dist/lib/testing/compliance/briefs.js.map +1 -0
  75. package/dist/lib/testing/compliance/comply.d.ts +26 -0
  76. package/dist/lib/testing/compliance/comply.d.ts.map +1 -0
  77. package/dist/lib/testing/compliance/comply.js +540 -0
  78. package/dist/lib/testing/compliance/comply.js.map +1 -0
  79. package/dist/lib/testing/compliance/convince.d.ts +27 -0
  80. package/dist/lib/testing/compliance/convince.d.ts.map +1 -0
  81. package/dist/lib/testing/compliance/convince.js +418 -0
  82. package/dist/lib/testing/compliance/convince.js.map +1 -0
  83. package/dist/lib/testing/compliance/index.d.ts +13 -0
  84. package/dist/lib/testing/compliance/index.d.ts.map +1 -0
  85. package/dist/lib/testing/compliance/index.js +22 -0
  86. package/dist/lib/testing/compliance/index.js.map +1 -0
  87. package/dist/lib/testing/compliance/types.d.ts +123 -0
  88. package/dist/lib/testing/compliance/types.d.ts.map +1 -0
  89. package/dist/lib/testing/compliance/types.js +9 -0
  90. package/dist/lib/testing/compliance/types.js.map +1 -0
  91. package/dist/lib/testing/index.d.ts +1 -0
  92. package/dist/lib/testing/index.d.ts.map +1 -1
  93. package/dist/lib/testing/index.js +15 -1
  94. package/dist/lib/testing/index.js.map +1 -1
  95. package/dist/lib/testing/orchestrator.d.ts +0 -2
  96. package/dist/lib/testing/orchestrator.d.ts.map +1 -1
  97. package/dist/lib/testing/orchestrator.js +14 -3
  98. package/dist/lib/testing/orchestrator.js.map +1 -1
  99. package/dist/lib/testing/scenarios/capabilities.d.ts.map +1 -1
  100. package/dist/lib/testing/scenarios/capabilities.js +70 -9
  101. package/dist/lib/testing/scenarios/capabilities.js.map +1 -1
  102. package/dist/lib/testing/scenarios/creative.d.ts +14 -0
  103. package/dist/lib/testing/scenarios/creative.d.ts.map +1 -1
  104. package/dist/lib/testing/scenarios/creative.js +261 -55
  105. package/dist/lib/testing/scenarios/creative.js.map +1 -1
  106. package/dist/lib/testing/scenarios/discovery.d.ts.map +1 -1
  107. package/dist/lib/testing/scenarios/discovery.js +7 -5
  108. package/dist/lib/testing/scenarios/discovery.js.map +1 -1
  109. package/dist/lib/testing/scenarios/edge-cases.d.ts.map +1 -1
  110. package/dist/lib/testing/scenarios/edge-cases.js +90 -112
  111. package/dist/lib/testing/scenarios/edge-cases.js.map +1 -1
  112. package/dist/lib/testing/scenarios/governance.d.ts +48 -0
  113. package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
  114. package/dist/lib/testing/scenarios/governance.js +725 -39
  115. package/dist/lib/testing/scenarios/governance.js.map +1 -1
  116. package/dist/lib/testing/scenarios/index.d.ts +3 -3
  117. package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
  118. package/dist/lib/testing/scenarios/index.js +8 -1
  119. package/dist/lib/testing/scenarios/index.js.map +1 -1
  120. package/dist/lib/testing/scenarios/media-buy.d.ts +14 -5
  121. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  122. package/dist/lib/testing/scenarios/media-buy.js +358 -63
  123. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  124. package/dist/lib/testing/scenarios/schema-compliance.d.ts.map +1 -1
  125. package/dist/lib/testing/scenarios/schema-compliance.js +26 -22
  126. package/dist/lib/testing/scenarios/schema-compliance.js.map +1 -1
  127. package/dist/lib/testing/scenarios/signals.d.ts +4 -8
  128. package/dist/lib/testing/scenarios/signals.d.ts.map +1 -1
  129. package/dist/lib/testing/scenarios/signals.js +17 -59
  130. package/dist/lib/testing/scenarios/signals.js.map +1 -1
  131. package/dist/lib/testing/scenarios/sponsored-intelligence.d.ts.map +1 -1
  132. package/dist/lib/testing/scenarios/sponsored-intelligence.js +23 -19
  133. package/dist/lib/testing/scenarios/sponsored-intelligence.js.map +1 -1
  134. package/dist/lib/testing/types.d.ts +3 -2
  135. package/dist/lib/testing/types.d.ts.map +1 -1
  136. package/dist/lib/types/core.generated.d.ts +629 -5
  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/schemas.generated.d.ts +13059 -11101
  140. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  141. package/dist/lib/types/schemas.generated.js +573 -107
  142. package/dist/lib/types/schemas.generated.js.map +1 -1
  143. package/dist/lib/types/tools.generated.d.ts +1827 -360
  144. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  145. package/dist/lib/utils/capabilities.d.ts +17 -2
  146. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  147. package/dist/lib/utils/capabilities.js +26 -2
  148. package/dist/lib/utils/capabilities.js.map +1 -1
  149. package/package.json +13 -3
package/bin/adcp.js CHANGED
@@ -56,6 +56,10 @@ const TEST_SCENARIOS = [
56
56
  'governance_content_standards',
57
57
  'si_session_lifecycle',
58
58
  'si_availability',
59
+ 'campaign_governance',
60
+ 'campaign_governance_denied',
61
+ 'campaign_governance_conditions',
62
+ 'campaign_governance_delivery',
59
63
  ];
60
64
 
61
65
  // Built-in test agent aliases (shared between main CLI and test command)
@@ -248,6 +252,10 @@ async function handleTestCommand(args) {
248
252
  governance_content_standards: 'Test content standards listing and calibration',
249
253
  si_session_lifecycle: 'Test full SI session: initiate → messages → terminate',
250
254
  si_availability: 'Quick check for SI offering availability',
255
+ campaign_governance: 'Full governance lifecycle: sync_plans → check → execute → report',
256
+ campaign_governance_denied: 'Denied flow: over-budget, unauthorized market',
257
+ campaign_governance_conditions: 'Conditions flow: apply conditions → re-check',
258
+ campaign_governance_delivery: 'Delivery monitoring with drift detection',
251
259
  };
252
260
 
253
261
  for (const scenario of TEST_SCENARIOS) {
@@ -452,6 +460,321 @@ async function handleTestCommand(args) {
452
460
  }
453
461
  }
454
462
 
463
+ /**
464
+ * Parse common agent/auth options shared by test, comply, and convince commands.
465
+ */
466
+ function parseAgentOptions(args) {
467
+ const authIndex = args.indexOf('--auth');
468
+ let authToken = process.env.ADCP_AUTH_TOKEN;
469
+ if (authIndex !== -1 && authIndex + 1 < args.length && !args[authIndex + 1].startsWith('--')) {
470
+ authToken = args[authIndex + 1];
471
+ }
472
+
473
+ const protocolIndex = args.indexOf('--protocol');
474
+ let protocolFlag = null;
475
+ if (protocolIndex !== -1 && protocolIndex + 1 < args.length && !args[protocolIndex + 1].startsWith('--')) {
476
+ protocolFlag = args[protocolIndex + 1];
477
+ }
478
+
479
+ const briefIndex = args.indexOf('--brief');
480
+ let brief;
481
+ if (briefIndex !== -1 && briefIndex + 1 < args.length && !args[briefIndex + 1].startsWith('--')) {
482
+ brief = args[briefIndex + 1];
483
+ }
484
+
485
+ const jsonOutput = args.includes('--json');
486
+ const debug = args.includes('--debug') || process.env.ADCP_DEBUG === 'true';
487
+ const dryRun = !args.includes('--no-dry-run');
488
+
489
+ // Filter out flags to find positional args
490
+ const positionalArgs = args.filter(
491
+ arg => !arg.startsWith('--') && arg !== authToken && arg !== protocolFlag && arg !== brief
492
+ );
493
+
494
+ return { authToken, protocolFlag, brief, jsonOutput, debug, dryRun, positionalArgs };
495
+ }
496
+
497
+ /**
498
+ * Resolve an agent argument (alias or URL) to { agentUrl, protocol, authToken }
499
+ *
500
+ * Auth resolution order:
501
+ * 1. Explicit --auth token from CLI
502
+ * 2. ADCP_AUTH_TOKEN env var
503
+ * 3. Saved OAuth tokens (if alias has them and they're valid)
504
+ * 4. Static auth_token from alias or built-in
505
+ * 5. None
506
+ */
507
+ async function resolveAgent(agentArg, authToken, protocolFlag, jsonOutput) {
508
+ let agentUrl;
509
+ let protocol = protocolFlag;
510
+ let finalAuthToken = authToken;
511
+
512
+ if (BUILT_IN_AGENTS[agentArg]) {
513
+ const builtIn = BUILT_IN_AGENTS[agentArg];
514
+ agentUrl = builtIn.url;
515
+ protocol = protocol || builtIn.protocol;
516
+ finalAuthToken = finalAuthToken || builtIn.auth_token;
517
+ } else if (isAlias(agentArg)) {
518
+ const savedAgent = getAgent(agentArg);
519
+ agentUrl = savedAgent.url;
520
+ protocol = protocol || savedAgent.protocol;
521
+ // Use getEffectiveAuthToken: prefers valid OAuth tokens, falls back to static token
522
+ finalAuthToken = finalAuthToken || getEffectiveAuthToken(savedAgent);
523
+ } else if (agentArg.startsWith('http://') || agentArg.startsWith('https://')) {
524
+ agentUrl = agentArg;
525
+ } else {
526
+ console.error(`ERROR: '${agentArg}' is not a valid agent alias or URL\n`);
527
+ console.error('Built-in aliases: test-mcp, test-a2a, creative');
528
+ console.error(`Saved aliases: ${Object.keys(listAgents()).join(', ') || 'none'}\n`);
529
+ process.exit(2);
530
+ }
531
+
532
+ // Auto-detect protocol if not specified
533
+ if (!protocol) {
534
+ if (!jsonOutput) console.error('Auto-detecting protocol...');
535
+ try {
536
+ protocol = await detectProtocol(agentUrl);
537
+ if (!jsonOutput) console.error(`Detected protocol: ${protocol.toUpperCase()}\n`);
538
+ } catch (error) {
539
+ console.error(`ERROR: Failed to detect protocol: ${error.message}\n`);
540
+ process.exit(2);
541
+ }
542
+ }
543
+
544
+ return { agentUrl, protocol, authToken: finalAuthToken };
545
+ }
546
+
547
+ async function handleComplyCommand(args) {
548
+ if (args.includes('--help') || args.length === 0) {
549
+ console.log(`
550
+ AdCP Comply - Compliance Assessment
551
+
552
+ USAGE:
553
+ adcp comply <agent> [options]
554
+
555
+ DESCRIPTION:
556
+ Runs all applicable capability tracks against an agent and reports
557
+ results for every track. Never stops at the first failure — shows
558
+ the full picture.
559
+
560
+ Tracks: core, products, media_buy, creative, reporting, governance,
561
+ signals, si, audiences
562
+
563
+ OPTIONS:
564
+ --auth TOKEN Authentication token (overrides saved tokens)
565
+ --protocol PROTO Force protocol: mcp or a2a
566
+ --tracks TRACKS Comma-separated tracks to run (default: all applicable)
567
+ --brief TEXT Custom brief for product discovery
568
+ --json Output raw JSON
569
+ --debug Show debug output
570
+ --no-dry-run Run in live mode (default: dry run)
571
+
572
+ EXAMPLES:
573
+ adcp comply test-mcp
574
+ adcp comply myagent # uses saved OAuth tokens automatically
575
+ adcp comply test-mcp --tracks core,products,media_buy
576
+ adcp comply https://my-agent.com/mcp --auth my-token
577
+ adcp comply test-mcp --json | jq '.summary'
578
+ `);
579
+ return;
580
+ }
581
+
582
+ const opts = parseAgentOptions(args);
583
+
584
+ if (opts.positionalArgs.length === 0) {
585
+ console.error('ERROR: comply requires an agent alias or URL\n');
586
+ process.exit(2);
587
+ }
588
+
589
+ const {
590
+ agentUrl,
591
+ protocol,
592
+ authToken: finalAuthToken,
593
+ } = await resolveAgent(opts.positionalArgs[0], opts.authToken, opts.protocolFlag, opts.jsonOutput);
594
+
595
+ // Parse --tracks
596
+ const tracksIndex = args.indexOf('--tracks');
597
+ let tracks;
598
+ if (tracksIndex !== -1 && tracksIndex + 1 < args.length) {
599
+ tracks = args[tracksIndex + 1].split(',');
600
+ }
601
+
602
+ const testOptions = {
603
+ protocol,
604
+ dry_run: opts.dryRun,
605
+ brief: opts.brief,
606
+ tracks,
607
+ ...(finalAuthToken && { auth: { type: 'bearer', token: finalAuthToken } }),
608
+ };
609
+
610
+ if (!opts.jsonOutput) {
611
+ console.log(`\n🔍 Running compliance assessment against ${agentUrl}`);
612
+ console.log(` Protocol: ${protocol.toUpperCase()}`);
613
+ console.log(` Mode: ${opts.dryRun ? 'Dry Run' : 'Live'}`);
614
+ console.log(` Auth: ${finalAuthToken ? 'configured' : 'none'}\n`);
615
+ }
616
+
617
+ try {
618
+ const { comply, formatComplianceResults, formatComplianceResultsJSON } =
619
+ await import('../dist/lib/testing/compliance/index.js');
620
+
621
+ // Silence logger unless debug
622
+ const { setAgentTesterLogger } = await import('../dist/lib/testing/client.js');
623
+ if (!opts.debug) {
624
+ setAgentTesterLogger({ info: () => {}, error: () => {}, warn: () => {}, debug: () => {} });
625
+ }
626
+
627
+ const result = await comply(agentUrl, testOptions);
628
+
629
+ if (opts.jsonOutput) {
630
+ console.log(formatComplianceResultsJSON(result));
631
+ } else {
632
+ console.log(formatComplianceResults(result));
633
+ }
634
+
635
+ const hasFailures = result.summary.tracks_failed > 0;
636
+ process.exit(hasFailures ? 3 : 0);
637
+ } catch (error) {
638
+ console.error(`\n❌ Compliance assessment failed: ${error.message}`);
639
+ if (opts.debug) console.error(error.stack);
640
+ process.exit(1);
641
+ }
642
+ }
643
+
644
+ async function handleConvinceCommand(args) {
645
+ if (args.includes('--help') || args.length === 0) {
646
+ console.log(`
647
+ AdCP Convince - AI-Assessed Merchandising Quality
648
+
649
+ USAGE:
650
+ adcp convince <agent> [options]
651
+
652
+ DESCRIPTION:
653
+ Runs sample briefs against the agent's get_products endpoint and
654
+ uses an LLM to evaluate the quality of responses. Tests whether
655
+ your products would convince a buyer to transact.
656
+
657
+ Dimensions assessed: relevance, specificity, completeness, pricing,
658
+ merchandising
659
+
660
+ OPTIONS:
661
+ --auth TOKEN Authentication token (overrides saved tokens)
662
+ --protocol PROTO Force protocol: mcp or a2a
663
+ --anthropic-key KEY Anthropic API key (or set ANTHROPIC_API_KEY env var)
664
+ --gemini-key KEY Google Gemini API key (or set GEMINI_API_KEY env var)
665
+ --briefs IDS Comma-separated brief IDs to run (default: all)
666
+ --list-briefs List available sample briefs
667
+ --brief TEXT Custom brief for product discovery
668
+ --model MODEL LLM model override
669
+ --json Output raw JSON
670
+ --debug Show debug output
671
+ --no-dry-run Run in live mode (default: dry run)
672
+
673
+ EXAMPLES:
674
+ adcp convince myagent --anthropic-key sk-ant-... # uses saved OAuth tokens automatically
675
+ adcp convince test-mcp --anthropic-key sk-ant-...
676
+ adcp convince test-mcp --briefs luxury_auto_ev,dtc_skincare_genZ
677
+ adcp convince test-mcp --list-briefs
678
+ ANTHROPIC_API_KEY=sk-ant-... adcp convince test-mcp
679
+ `);
680
+ return;
681
+ }
682
+
683
+ // Handle --list-briefs
684
+ if (args.includes('--list-briefs')) {
685
+ const { SAMPLE_BRIEFS } = await import('../dist/lib/testing/compliance/briefs.js');
686
+ console.log('\n📋 Available Sample Briefs:\n');
687
+ for (const brief of SAMPLE_BRIEFS) {
688
+ console.log(` ${brief.id}`);
689
+ console.log(` ${brief.name} (${brief.vertical})`);
690
+ console.log(` Budget: ${brief.budget_context || 'Not specified'}`);
691
+ console.log(` ${brief.brief.slice(0, 100)}...`);
692
+ console.log('');
693
+ }
694
+ return;
695
+ }
696
+
697
+ const opts = parseAgentOptions(args);
698
+
699
+ if (opts.positionalArgs.length === 0) {
700
+ console.error('ERROR: convince requires an agent alias or URL\n');
701
+ process.exit(2);
702
+ }
703
+
704
+ const {
705
+ agentUrl,
706
+ protocol,
707
+ authToken: finalAuthToken,
708
+ } = await resolveAgent(opts.positionalArgs[0], opts.authToken, opts.protocolFlag, opts.jsonOutput);
709
+
710
+ // Parse LLM keys
711
+ const anthropicKeyIndex = args.indexOf('--anthropic-key');
712
+ const geminiKeyIndex = args.indexOf('--gemini-key');
713
+ const modelIndex = args.indexOf('--model');
714
+ const briefsIndex = args.indexOf('--briefs');
715
+
716
+ const anthropic_api_key = anthropicKeyIndex !== -1 ? args[anthropicKeyIndex + 1] : process.env.ANTHROPIC_API_KEY;
717
+ const gemini_api_key = geminiKeyIndex !== -1 ? args[geminiKeyIndex + 1] : process.env.GEMINI_API_KEY;
718
+ const model = modelIndex !== -1 ? args[modelIndex + 1] : undefined;
719
+ const brief_ids = briefsIndex !== -1 ? args[briefsIndex + 1].split(',') : undefined;
720
+
721
+ if (!anthropic_api_key && !gemini_api_key) {
722
+ console.error('ERROR: convince requires an LLM API key\n');
723
+ console.error('Provide one of:');
724
+ console.error(' --anthropic-key KEY or set ANTHROPIC_API_KEY');
725
+ console.error(' --gemini-key KEY or set GEMINI_API_KEY\n');
726
+ process.exit(2);
727
+ }
728
+
729
+ const testOptions = {
730
+ protocol,
731
+ dry_run: opts.dryRun,
732
+ brief: opts.brief,
733
+ anthropic_api_key,
734
+ gemini_api_key,
735
+ model,
736
+ brief_ids,
737
+ ...(finalAuthToken && { auth: { type: 'bearer', token: finalAuthToken } }),
738
+ };
739
+
740
+ const evaluator = anthropic_api_key ? 'Anthropic' : 'Gemini';
741
+ const briefCount = brief_ids ? brief_ids.length : 'all';
742
+
743
+ if (!opts.jsonOutput) {
744
+ console.log(`\n🎯 Running convince assessment against ${agentUrl}`);
745
+ console.log(` Protocol: ${protocol.toUpperCase()}`);
746
+ console.log(` Evaluator: ${evaluator}`);
747
+ console.log(` Briefs: ${briefCount}`);
748
+ console.log(` Mode: ${opts.dryRun ? 'Dry Run' : 'Live'}`);
749
+ console.log(` Auth: ${finalAuthToken ? 'configured' : 'none'}\n`);
750
+ }
751
+
752
+ try {
753
+ const { convince, formatConvinceResults, formatConvinceResultsJSON } =
754
+ await import('../dist/lib/testing/compliance/index.js');
755
+
756
+ // Silence logger unless debug
757
+ const { setAgentTesterLogger } = await import('../dist/lib/testing/client.js');
758
+ if (!opts.debug) {
759
+ setAgentTesterLogger({ info: () => {}, error: () => {}, warn: () => {}, debug: () => {} });
760
+ }
761
+
762
+ const result = await convince(agentUrl, testOptions);
763
+
764
+ if (opts.jsonOutput) {
765
+ console.log(formatConvinceResultsJSON(result));
766
+ } else {
767
+ console.log(formatConvinceResults(result));
768
+ }
769
+
770
+ process.exit(0);
771
+ } catch (error) {
772
+ console.error(`\n❌ Convince assessment failed: ${error.message}`);
773
+ if (opts.debug) console.error(error.stack);
774
+ process.exit(1);
775
+ }
776
+ }
777
+
455
778
  function printUsage() {
456
779
  console.log(`
457
780
  AdCP CLI Tool - Direct Agent Communication
@@ -503,6 +826,17 @@ AGENT TESTING:
503
826
  Default scenario: discovery
504
827
  test --list-scenarios List all available test scenarios
505
828
 
829
+ COMPLIANCE & QUALITY:
830
+ comply <agent> [options] Run compliance assessment across all capability tracks
831
+ Tracks: core, products, media_buy, creative, reporting,
832
+ governance, signals, si, audiences
833
+ comply --help Full comply usage
834
+
835
+ convince <agent> [options] AI-assessed merchandising quality against sample briefs
836
+ Requires: --anthropic-key or --gemini-key (or env vars)
837
+ convince --list-briefs List available sample briefs
838
+ convince --help Full convince usage
839
+
506
840
  REGISTRY:
507
841
  registry brand <domain> Look up a brand
508
842
  registry brands <d1> <d2> ... Bulk brand lookup
@@ -861,6 +1195,18 @@ async function main() {
861
1195
  return; // handleTestCommand exits, but return for clarity
862
1196
  }
863
1197
 
1198
+ // Handle comply command
1199
+ if (args[0] === 'comply') {
1200
+ await handleComplyCommand(args.slice(1));
1201
+ return;
1202
+ }
1203
+
1204
+ // Handle convince command
1205
+ if (args[0] === 'convince') {
1206
+ await handleConvinceCommand(args.slice(1));
1207
+ return;
1208
+ }
1209
+
864
1210
  // Parse arguments
865
1211
  if (args.length < 1) {
866
1212
  console.error('ERROR: Missing required arguments\n');
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Governance Adapter
3
+ *
4
+ * Server-side adapter for implementing committed governance checks.
5
+ * Sellers use this to check governance before executing media buys.
6
+ *
7
+ * The committed check verifies that the seller's planned delivery
8
+ * parameters comply with the buyer's campaign governance plan.
9
+ */
10
+ import type { CheckGovernanceRequest, CheckGovernanceResponse, PlannedDelivery, GovernancePhase } from '../types/tools.generated';
11
+ import type { AgentConfig } from '../types';
12
+ /**
13
+ * Configuration for the seller-side governance adapter.
14
+ */
15
+ export interface GovernanceAdapterConfig {
16
+ /** The governance agent to call for committed checks */
17
+ agent: AgentConfig;
18
+ /** The seller's caller URL for governance checks */
19
+ callerUrl: string;
20
+ }
21
+ /**
22
+ * Committed governance check request from the seller's perspective.
23
+ */
24
+ export interface CommittedCheckRequest {
25
+ /** Campaign governance plan ID */
26
+ planId: string;
27
+ /** Buyer's campaign reference */
28
+ buyerCampaignRef: string;
29
+ /** The seller's media buy ID */
30
+ mediaBuyId: string;
31
+ /** What the seller will actually deliver */
32
+ plannedDelivery: PlannedDelivery;
33
+ /** Lifecycle phase of the check */
34
+ phase?: GovernancePhase;
35
+ /** Delivery metrics for delivery-phase checks */
36
+ deliveryMetrics?: CheckGovernanceRequest['delivery_metrics'];
37
+ /** Summary of changes for modification-phase checks */
38
+ modificationSummary?: string;
39
+ }
40
+ /**
41
+ * Interface for seller-side governance adapters.
42
+ * Sellers implement this to integrate governance checks into their execution path.
43
+ */
44
+ export interface IGovernanceAdapter {
45
+ /** Whether governance is supported by this server */
46
+ isSupported(): boolean;
47
+ /** Run a committed governance check before executing a media buy */
48
+ checkCommitted(request: CommittedCheckRequest): Promise<CheckGovernanceResponse>;
49
+ }
50
+ /**
51
+ * Error codes for governance adapter responses.
52
+ */
53
+ export declare const GovernanceAdapterErrorCodes: {
54
+ readonly NOT_SUPPORTED: "governance_not_supported";
55
+ readonly CHECK_FAILED: "governance_check_failed";
56
+ readonly AGENT_UNREACHABLE: "governance_agent_unreachable";
57
+ };
58
+ export type GovernanceAdapterErrorCode = (typeof GovernanceAdapterErrorCodes)[keyof typeof GovernanceAdapterErrorCodes];
59
+ /**
60
+ * Type guard: check if a response is a governance adapter error.
61
+ */
62
+ export declare function isGovernanceAdapterError(response: unknown): response is {
63
+ error: {
64
+ code: GovernanceAdapterErrorCode;
65
+ message?: string;
66
+ };
67
+ };
68
+ /**
69
+ * Governance adapter that calls a governance agent via AdCP protocol.
70
+ *
71
+ * Sellers configure this with their governance agent and caller URL,
72
+ * then call checkCommitted() before executing media buys.
73
+ *
74
+ * For custom governance logic, extend this class and override checkCommitted().
75
+ */
76
+ export declare class GovernanceAdapter implements IGovernanceAdapter {
77
+ private agentConfig?;
78
+ constructor(config?: GovernanceAdapterConfig);
79
+ isSupported(): boolean;
80
+ checkCommitted(request: CommittedCheckRequest): Promise<CheckGovernanceResponse>;
81
+ }
82
+ /**
83
+ * Pre-configured governance adapter with no agent.
84
+ * isSupported() returns false and checkCommitted() returns a denial.
85
+ * Replace with a configured instance when connecting to a governance agent.
86
+ */
87
+ export declare const defaultGovernanceAdapter: GovernanceAdapter;
88
+ //# sourceMappingURL=governance-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/governance-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wDAAwD;IACxD,KAAK,EAAE,WAAW,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,eAAe,EAAE,eAAe,CAAC;IACjC,mCAAmC;IACnC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,iDAAiD;IACjD,eAAe,CAAC,EAAE,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,WAAW,IAAI,OAAO,CAAC;IACvB,oEAAoE;IACpE,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAClF;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;CAI9B,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAC;AAExH;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,OAAO,GAChB,QAAQ,IAAI;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,0BAA0B,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAI/E;AAED;;;;;;;GAOG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,WAAW,CAAC,CAA0B;gBAElC,MAAM,CAAC,EAAE,uBAAuB;IAI5C,WAAW,IAAI,OAAO;IAIhB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA6CvF;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,mBAA0B,CAAC"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /**
3
+ * Governance Adapter
4
+ *
5
+ * Server-side adapter for implementing committed governance checks.
6
+ * Sellers use this to check governance before executing media buys.
7
+ *
8
+ * The committed check verifies that the seller's planned delivery
9
+ * parameters comply with the buyer's campaign governance plan.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.defaultGovernanceAdapter = exports.GovernanceAdapter = exports.GovernanceAdapterErrorCodes = void 0;
13
+ exports.isGovernanceAdapterError = isGovernanceAdapterError;
14
+ const protocols_1 = require("../protocols");
15
+ const response_unwrapper_1 = require("../utils/response-unwrapper");
16
+ /**
17
+ * Error codes for governance adapter responses.
18
+ */
19
+ exports.GovernanceAdapterErrorCodes = {
20
+ NOT_SUPPORTED: 'governance_not_supported',
21
+ CHECK_FAILED: 'governance_check_failed',
22
+ AGENT_UNREACHABLE: 'governance_agent_unreachable',
23
+ };
24
+ /**
25
+ * Type guard: check if a response is a governance adapter error.
26
+ */
27
+ function isGovernanceAdapterError(response) {
28
+ if (!response || typeof response !== 'object')
29
+ return false;
30
+ const r = response;
31
+ return r.error?.code && Object.values(exports.GovernanceAdapterErrorCodes).includes(r.error.code);
32
+ }
33
+ /**
34
+ * Governance adapter that calls a governance agent via AdCP protocol.
35
+ *
36
+ * Sellers configure this with their governance agent and caller URL,
37
+ * then call checkCommitted() before executing media buys.
38
+ *
39
+ * For custom governance logic, extend this class and override checkCommitted().
40
+ */
41
+ class GovernanceAdapter {
42
+ agentConfig;
43
+ constructor(config) {
44
+ this.agentConfig = config;
45
+ }
46
+ isSupported() {
47
+ return !!this.agentConfig;
48
+ }
49
+ async checkCommitted(request) {
50
+ if (!this.agentConfig) {
51
+ return {
52
+ check_id: '',
53
+ status: 'denied',
54
+ binding: 'committed',
55
+ plan_id: request.planId,
56
+ buyer_campaign_ref: request.buyerCampaignRef,
57
+ explanation: 'Governance not configured on this server',
58
+ error_code: exports.GovernanceAdapterErrorCodes.NOT_SUPPORTED,
59
+ };
60
+ }
61
+ const checkRequest = {
62
+ plan_id: request.planId,
63
+ buyer_campaign_ref: request.buyerCampaignRef,
64
+ binding: 'committed',
65
+ caller: this.agentConfig.callerUrl,
66
+ media_buy_id: request.mediaBuyId,
67
+ planned_delivery: request.plannedDelivery,
68
+ phase: request.phase,
69
+ delivery_metrics: request.deliveryMetrics,
70
+ modification_summary: request.modificationSummary,
71
+ };
72
+ try {
73
+ const response = await protocols_1.ProtocolClient.callTool(this.agentConfig.agent, 'check_governance', checkRequest);
74
+ return (0, response_unwrapper_1.unwrapProtocolResponse)(response);
75
+ }
76
+ catch (err) {
77
+ return {
78
+ check_id: '',
79
+ status: 'denied',
80
+ binding: 'committed',
81
+ plan_id: request.planId,
82
+ buyer_campaign_ref: request.buyerCampaignRef,
83
+ explanation: `Governance agent unreachable: ${err.message}`,
84
+ error_code: exports.GovernanceAdapterErrorCodes.AGENT_UNREACHABLE,
85
+ };
86
+ }
87
+ }
88
+ }
89
+ exports.GovernanceAdapter = GovernanceAdapter;
90
+ /**
91
+ * Pre-configured governance adapter with no agent.
92
+ * isSupported() returns false and checkCommitted() returns a denial.
93
+ * Replace with a configured instance when connecting to a governance agent.
94
+ */
95
+ exports.defaultGovernanceAdapter = new GovernanceAdapter();
96
+ //# sourceMappingURL=governance-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-adapter.js","sourceRoot":"","sources":["../../../src/lib/adapters/governance-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAmEH,4DAMC;AAjED,4CAA8C;AAE9C,oEAAqE;AA2CrE;;GAEG;AACU,QAAA,2BAA2B,GAAG;IACzC,aAAa,EAAE,0BAA0B;IACzC,YAAY,EAAE,yBAAyB;IACvC,iBAAiB,EAAE,8BAA8B;CACzC,CAAC;AAIX;;GAEG;AACH,SAAgB,wBAAwB,CACtC,QAAiB;IAEjB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,CAAC,GAAG,QAA+B,CAAC;IAC1C,OAAO,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,mCAA2B,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;;;GAOG;AACH,MAAa,iBAAiB;IACpB,WAAW,CAA2B;IAE9C,YAAY,MAAgC;QAC1C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAA8B;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,kBAAkB,EAAE,OAAO,CAAC,gBAAgB;gBAC5C,WAAW,EAAE,0CAA0C;gBACvD,UAAU,EAAE,mCAA2B,CAAC,aAAa;aAC3B,CAAC;QAC/B,CAAC;QAED,MAAM,YAAY,GAA2B;YAC3C,OAAO,EAAE,OAAO,CAAC,MAAM;YACvB,kBAAkB,EAAE,OAAO,CAAC,gBAAgB;YAC5C,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;YAClC,YAAY,EAAE,OAAO,CAAC,UAAU;YAChC,gBAAgB,EAAE,OAAO,CAAC,eAAe;YACzC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,gBAAgB,EAAE,OAAO,CAAC,eAAe;YACzC,oBAAoB,EAAE,OAAO,CAAC,mBAAmB;SAClD,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,0BAAc,CAAC,QAAQ,CAC5C,IAAI,CAAC,WAAW,CAAC,KAAK,EACtB,kBAAkB,EAClB,YAAmC,CACpC,CAAC;YAEF,OAAO,IAAA,2CAAsB,EAAC,QAAQ,CAAuC,CAAC;QAChF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,MAAM;gBACvB,kBAAkB,EAAE,OAAO,CAAC,gBAAgB;gBAC5C,WAAW,EAAE,iCAAkC,GAAa,CAAC,OAAO,EAAE;gBACtE,UAAU,EAAE,mCAA2B,CAAC,iBAAiB;aAC/B,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAxDD,8CAwDC;AAED;;;;GAIG;AACU,QAAA,wBAAwB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
@@ -14,5 +14,6 @@
14
14
  export { ContentStandardsAdapter, type IContentStandardsAdapter, type ContentEvaluationResult, ContentStandardsErrorCodes, isContentStandardsError, defaultContentStandardsAdapter, } from './content-standards-adapter';
15
15
  export { PropertyListAdapter, type IPropertyListAdapter, type ResolvedProperty, PropertyListErrorCodes, isPropertyListError, defaultPropertyListAdapter, } from './property-list-adapter';
16
16
  export { ProposalManager, AIProposalManager, type IProposalManager, type ProposalContext, ProposalErrorCodes, defaultProposalManager, } from './proposal-manager';
17
+ export { GovernanceAdapter, defaultGovernanceAdapter, type IGovernanceAdapter, type GovernanceAdapterConfig, type GovernanceAdapterErrorCode, type CommittedCheckRequest, GovernanceAdapterErrorCodes, isGovernanceAdapterError, } from './governance-adapter';
17
18
  export { SISessionManager, AISISessionManager, type ISISessionManager, type SISession, SIErrorCodes, defaultSISessionManager, } from './si-session-manager';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,YAAY,EACZ,uBAAuB,GACxB,MAAM,sBAAsB,CAAC"}
@@ -13,7 +13,7 @@
13
13
  * - SISessionManager: Handle Sponsored Intelligence conversational sessions
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.defaultSISessionManager = exports.SIErrorCodes = exports.AISISessionManager = exports.SISessionManager = exports.defaultProposalManager = exports.ProposalErrorCodes = exports.AIProposalManager = exports.ProposalManager = exports.defaultPropertyListAdapter = exports.isPropertyListError = exports.PropertyListErrorCodes = exports.PropertyListAdapter = exports.defaultContentStandardsAdapter = exports.isContentStandardsError = exports.ContentStandardsErrorCodes = exports.ContentStandardsAdapter = void 0;
16
+ exports.defaultSISessionManager = exports.SIErrorCodes = exports.AISISessionManager = exports.SISessionManager = exports.isGovernanceAdapterError = exports.GovernanceAdapterErrorCodes = exports.defaultGovernanceAdapter = exports.GovernanceAdapter = exports.defaultProposalManager = exports.ProposalErrorCodes = exports.AIProposalManager = exports.ProposalManager = exports.defaultPropertyListAdapter = exports.isPropertyListError = exports.PropertyListErrorCodes = exports.PropertyListAdapter = exports.defaultContentStandardsAdapter = exports.isContentStandardsError = exports.ContentStandardsErrorCodes = exports.ContentStandardsAdapter = void 0;
17
17
  // Content Standards
18
18
  var content_standards_adapter_1 = require("./content-standards-adapter");
19
19
  Object.defineProperty(exports, "ContentStandardsAdapter", { enumerable: true, get: function () { return content_standards_adapter_1.ContentStandardsAdapter; } });
@@ -32,6 +32,12 @@ Object.defineProperty(exports, "ProposalManager", { enumerable: true, get: funct
32
32
  Object.defineProperty(exports, "AIProposalManager", { enumerable: true, get: function () { return proposal_manager_1.AIProposalManager; } });
33
33
  Object.defineProperty(exports, "ProposalErrorCodes", { enumerable: true, get: function () { return proposal_manager_1.ProposalErrorCodes; } });
34
34
  Object.defineProperty(exports, "defaultProposalManager", { enumerable: true, get: function () { return proposal_manager_1.defaultProposalManager; } });
35
+ // Governance (seller-side committed checks)
36
+ var governance_adapter_1 = require("./governance-adapter");
37
+ Object.defineProperty(exports, "GovernanceAdapter", { enumerable: true, get: function () { return governance_adapter_1.GovernanceAdapter; } });
38
+ Object.defineProperty(exports, "defaultGovernanceAdapter", { enumerable: true, get: function () { return governance_adapter_1.defaultGovernanceAdapter; } });
39
+ Object.defineProperty(exports, "GovernanceAdapterErrorCodes", { enumerable: true, get: function () { return governance_adapter_1.GovernanceAdapterErrorCodes; } });
40
+ Object.defineProperty(exports, "isGovernanceAdapterError", { enumerable: true, get: function () { return governance_adapter_1.isGovernanceAdapterError; } });
35
41
  // Sponsored Intelligence Sessions
36
42
  var si_session_manager_1 = require("./si-session-manager");
37
43
  Object.defineProperty(exports, "SISessionManager", { enumerable: true, get: function () { return si_session_manager_1.SISessionManager; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,oBAAoB;AACpB,yEAOqC;AANnC,oIAAA,uBAAuB,OAAA;AAGvB,uIAAA,0BAA0B,OAAA;AAC1B,oIAAA,uBAAuB,OAAA;AACvB,2IAAA,8BAA8B,OAAA;AAGhC,iBAAiB;AACjB,iEAOiC;AAN/B,4HAAA,mBAAmB,OAAA;AAGnB,+HAAA,sBAAsB,OAAA;AACtB,4HAAA,mBAAmB,OAAA;AACnB,mIAAA,0BAA0B,OAAA;AAG5B,sBAAsB;AACtB,uDAO4B;AAN1B,mHAAA,eAAe,OAAA;AACf,qHAAA,iBAAiB,OAAA;AAGjB,sHAAA,kBAAkB,OAAA;AAClB,0HAAA,sBAAsB,OAAA;AAGxB,kCAAkC;AAClC,2DAO8B;AAN5B,sHAAA,gBAAgB,OAAA;AAChB,wHAAA,kBAAkB,OAAA;AAGlB,kHAAA,YAAY,OAAA;AACZ,6HAAA,uBAAuB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,oBAAoB;AACpB,yEAOqC;AANnC,oIAAA,uBAAuB,OAAA;AAGvB,uIAAA,0BAA0B,OAAA;AAC1B,oIAAA,uBAAuB,OAAA;AACvB,2IAAA,8BAA8B,OAAA;AAGhC,iBAAiB;AACjB,iEAOiC;AAN/B,4HAAA,mBAAmB,OAAA;AAGnB,+HAAA,sBAAsB,OAAA;AACtB,4HAAA,mBAAmB,OAAA;AACnB,mIAAA,0BAA0B,OAAA;AAG5B,sBAAsB;AACtB,uDAO4B;AAN1B,mHAAA,eAAe,OAAA;AACf,qHAAA,iBAAiB,OAAA;AAGjB,sHAAA,kBAAkB,OAAA;AAClB,0HAAA,sBAAsB,OAAA;AAGxB,4CAA4C;AAC5C,2DAS8B;AAR5B,uHAAA,iBAAiB,OAAA;AACjB,8HAAA,wBAAwB,OAAA;AAKxB,iIAAA,2BAA2B,OAAA;AAC3B,8HAAA,wBAAwB,OAAA;AAG1B,kCAAkC;AAClC,2DAO8B;AAN5B,sHAAA,gBAAgB,OAAA;AAChB,wHAAA,kBAAkB,OAAA;AAGlB,kHAAA,YAAY,OAAA;AACZ,6HAAA,uBAAuB,OAAA"}