@axonflow/sdk 3.4.0 → 3.6.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 (52) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/client.d.ts +59 -1
  3. package/dist/cjs/client.d.ts.map +1 -1
  4. package/dist/cjs/client.js +138 -0
  5. package/dist/cjs/client.js.map +1 -1
  6. package/dist/cjs/index.d.ts +2 -0
  7. package/dist/cjs/index.d.ts.map +1 -1
  8. package/dist/cjs/index.js +6 -1
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/types/index.d.ts +1 -0
  11. package/dist/cjs/types/index.d.ts.map +1 -1
  12. package/dist/cjs/types/index.js +1 -0
  13. package/dist/cjs/types/index.js.map +1 -1
  14. package/dist/cjs/types/media.d.ts +112 -0
  15. package/dist/cjs/types/media.d.ts.map +1 -0
  16. package/dist/cjs/types/media.js +9 -0
  17. package/dist/cjs/types/media.js.map +1 -0
  18. package/dist/cjs/types/policies.d.ts +8 -1
  19. package/dist/cjs/types/policies.d.ts.map +1 -1
  20. package/dist/cjs/types/policies.js +8 -0
  21. package/dist/cjs/types/policies.js.map +1 -1
  22. package/dist/cjs/types/proxy.d.ts +5 -0
  23. package/dist/cjs/types/proxy.d.ts.map +1 -1
  24. package/dist/cjs/types/workflows.d.ts +6 -0
  25. package/dist/cjs/types/workflows.d.ts.map +1 -1
  26. package/dist/cjs/types/workflows.js.map +1 -1
  27. package/dist/esm/client.d.ts +59 -1
  28. package/dist/esm/client.d.ts.map +1 -1
  29. package/dist/esm/client.js +138 -0
  30. package/dist/esm/client.js.map +1 -1
  31. package/dist/esm/index.d.ts +2 -0
  32. package/dist/esm/index.d.ts.map +1 -1
  33. package/dist/esm/index.js +1 -0
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/types/index.d.ts +1 -0
  36. package/dist/esm/types/index.d.ts.map +1 -1
  37. package/dist/esm/types/index.js +1 -0
  38. package/dist/esm/types/index.js.map +1 -1
  39. package/dist/esm/types/media.d.ts +112 -0
  40. package/dist/esm/types/media.d.ts.map +1 -0
  41. package/dist/esm/types/media.js +8 -0
  42. package/dist/esm/types/media.js.map +1 -0
  43. package/dist/esm/types/policies.d.ts +8 -1
  44. package/dist/esm/types/policies.d.ts.map +1 -1
  45. package/dist/esm/types/policies.js +7 -1
  46. package/dist/esm/types/policies.js.map +1 -1
  47. package/dist/esm/types/proxy.d.ts +5 -0
  48. package/dist/esm/types/proxy.d.ts.map +1 -1
  49. package/dist/esm/types/workflows.d.ts +6 -0
  50. package/dist/esm/types/workflows.d.ts.map +1 -1
  51. package/dist/esm/types/workflows.js.map +1 -1
  52. package/package.json +2 -2
@@ -434,6 +434,14 @@ export class AxonFlow {
434
434
  request_type: options.requestType,
435
435
  context: options.context || {},
436
436
  };
437
+ if (options.media && options.media.length > 0) {
438
+ agentRequest.media = options.media.map(m => ({
439
+ source: m.source,
440
+ base64_data: m.base64Data,
441
+ url: m.url,
442
+ mime_type: m.mimeType,
443
+ }));
444
+ }
437
445
  const url = `${this.config.endpoint}/api/request`;
438
446
  const headers = {
439
447
  'Content-Type': 'application/json',
@@ -533,6 +541,31 @@ export class AxonFlow {
533
541
  action: data.budget_info.action,
534
542
  };
535
543
  }
544
+ // Parse media analysis if present
545
+ if (data.media_analysis) {
546
+ result.mediaAnalysis = {
547
+ results: (data.media_analysis.results ?? []).map((r) => ({
548
+ mediaIndex: r.media_index ?? 0,
549
+ sha256Hash: r.sha256_hash ?? '',
550
+ hasFaces: r.has_faces ?? false,
551
+ faceCount: r.face_count ?? 0,
552
+ hasBiometricData: r.has_biometric_data ?? false,
553
+ nsfwScore: r.nsfw_score ?? 0,
554
+ violenceScore: r.violence_score ?? 0,
555
+ contentSafe: r.content_safe !== undefined ? r.content_safe : true,
556
+ documentType: r.document_type,
557
+ isSensitiveDocument: r.is_sensitive_document ?? false,
558
+ hasPII: r.has_pii ?? false,
559
+ piiTypes: r.pii_types,
560
+ hasExtractedText: r.has_extracted_text ?? false,
561
+ extractedTextLength: r.extracted_text_length ?? 0,
562
+ estimatedCostUsd: r.estimated_cost_usd ?? 0,
563
+ warnings: r.warnings,
564
+ })),
565
+ totalCostUsd: data.media_analysis.total_cost_usd ?? 0,
566
+ analysisTimeMs: data.media_analysis.analysis_time_ms ?? 0,
567
+ };
568
+ }
536
569
  if (this.config.debug) {
537
570
  debugLog('Proxy Mode: proxyLLMCall result', {
538
571
  success: result.success,
@@ -4541,6 +4574,111 @@ export class AxonFlow {
4541
4574
  const response = await this.orchestratorRequest('GET', '/api/v1/hitl/stats');
4542
4575
  return response.data;
4543
4576
  }
4577
+ // ============================================================================
4578
+ // Media Governance Config Methods (Issue #1222)
4579
+ // ============================================================================
4580
+ /**
4581
+ * Get the current media governance configuration for the authenticated tenant.
4582
+ *
4583
+ * Returns whether media analysis is enabled, which analyzers are allowed,
4584
+ * and when the config was last updated.
4585
+ *
4586
+ * @returns Media governance configuration for the tenant
4587
+ *
4588
+ * @example
4589
+ * ```typescript
4590
+ * const config = await client.getMediaGovernanceConfig();
4591
+ * console.log(`Media governance enabled: ${config.enabled}`);
4592
+ * if (config.allowedAnalyzers) {
4593
+ * console.log(`Allowed analyzers: ${config.allowedAnalyzers.join(', ')}`);
4594
+ * }
4595
+ * ```
4596
+ */
4597
+ async getMediaGovernanceConfig() {
4598
+ if (this.config.debug) {
4599
+ debugLog('Getting media governance config');
4600
+ }
4601
+ const data = await this.orchestratorRequest('GET', '/api/v1/media-governance/config');
4602
+ // Transform snake_case response to camelCase
4603
+ return {
4604
+ tenantId: data.tenant_id,
4605
+ enabled: data.enabled,
4606
+ allowedAnalyzers: data.allowed_analyzers,
4607
+ updatedAt: data.updated_at,
4608
+ updatedBy: data.updated_by,
4609
+ };
4610
+ }
4611
+ /**
4612
+ * Update the media governance configuration for the authenticated tenant.
4613
+ *
4614
+ * Use this to enable/disable media analysis or restrict which analyzers
4615
+ * are available for the tenant.
4616
+ *
4617
+ * @param request - Fields to update
4618
+ * @returns Updated media governance configuration
4619
+ *
4620
+ * @example
4621
+ * ```typescript
4622
+ * // Disable media governance
4623
+ * const updated = await client.updateMediaGovernanceConfig({ enabled: false });
4624
+ *
4625
+ * // Enable with specific analyzers only
4626
+ * const config = await client.updateMediaGovernanceConfig({
4627
+ * enabled: true,
4628
+ * allowedAnalyzers: ['nsfw', 'pii']
4629
+ * });
4630
+ * ```
4631
+ */
4632
+ async updateMediaGovernanceConfig(request) {
4633
+ if (this.config.debug) {
4634
+ debugLog('Updating media governance config', { request });
4635
+ }
4636
+ // Convert camelCase to snake_case for API compatibility
4637
+ const requestBody = {};
4638
+ if (request.enabled !== undefined)
4639
+ requestBody.enabled = request.enabled;
4640
+ if (request.allowedAnalyzers !== undefined)
4641
+ requestBody.allowed_analyzers = request.allowedAnalyzers;
4642
+ const data = await this.orchestratorRequest('PUT', '/api/v1/media-governance/config', requestBody);
4643
+ // Transform snake_case response to camelCase
4644
+ return {
4645
+ tenantId: data.tenant_id,
4646
+ enabled: data.enabled,
4647
+ allowedAnalyzers: data.allowed_analyzers,
4648
+ updatedAt: data.updated_at,
4649
+ updatedBy: data.updated_by,
4650
+ };
4651
+ }
4652
+ /**
4653
+ * Get the platform-level media governance status.
4654
+ *
4655
+ * Reports whether media governance is available on this platform instance,
4656
+ * the default enablement state, whether per-tenant control is supported,
4657
+ * and the required license tier.
4658
+ *
4659
+ * @returns Media governance platform status
4660
+ *
4661
+ * @example
4662
+ * ```typescript
4663
+ * const status = await client.getMediaGovernanceStatus();
4664
+ * console.log(`Available: ${status.available}`);
4665
+ * console.log(`Tier: ${status.tier}`);
4666
+ * console.log(`Per-tenant control: ${status.perTenantControl}`);
4667
+ * ```
4668
+ */
4669
+ async getMediaGovernanceStatus() {
4670
+ if (this.config.debug) {
4671
+ debugLog('Getting media governance status');
4672
+ }
4673
+ const data = await this.orchestratorRequest('GET', '/api/v1/media-governance/status');
4674
+ // Transform snake_case response to camelCase
4675
+ return {
4676
+ available: data.available,
4677
+ enabledByDefault: data.enabled_by_default,
4678
+ perTenantControl: data.per_tenant_control,
4679
+ tier: data.tier,
4680
+ };
4681
+ }
4544
4682
  /**
4545
4683
  * Stream real-time execution status updates via Server-Sent Events (SSE).
4546
4684
  *