@axonflow/sdk 1.2.0 → 1.3.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 (101) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +313 -9
  3. package/dist/cjs/client.d.ts +106 -41
  4. package/dist/cjs/client.d.ts.map +1 -1
  5. package/dist/cjs/client.js +446 -198
  6. package/dist/cjs/client.js.map +1 -1
  7. package/dist/cjs/errors.d.ts +51 -0
  8. package/dist/cjs/errors.d.ts.map +1 -0
  9. package/dist/cjs/errors.js +84 -0
  10. package/dist/cjs/errors.js.map +1 -0
  11. package/dist/cjs/index.d.ts +6 -2
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +16 -2
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/interceptors/anthropic.d.ts +1 -1
  16. package/dist/cjs/interceptors/anthropic.d.ts.map +1 -1
  17. package/dist/cjs/interceptors/anthropic.js +6 -6
  18. package/dist/cjs/interceptors/anthropic.js.map +1 -1
  19. package/dist/cjs/interceptors/bedrock.d.ts +141 -0
  20. package/dist/cjs/interceptors/bedrock.d.ts.map +1 -0
  21. package/dist/cjs/interceptors/bedrock.js +259 -0
  22. package/dist/cjs/interceptors/bedrock.js.map +1 -0
  23. package/dist/cjs/interceptors/gemini.d.ts +81 -0
  24. package/dist/cjs/interceptors/gemini.d.ts.map +1 -0
  25. package/dist/cjs/interceptors/gemini.js +110 -0
  26. package/dist/cjs/interceptors/gemini.js.map +1 -0
  27. package/dist/cjs/interceptors/ollama.d.ts +143 -0
  28. package/dist/cjs/interceptors/ollama.d.ts.map +1 -0
  29. package/dist/cjs/interceptors/ollama.js +150 -0
  30. package/dist/cjs/interceptors/ollama.js.map +1 -0
  31. package/dist/cjs/interceptors/openai.d.ts +1 -1
  32. package/dist/cjs/interceptors/openai.d.ts.map +1 -1
  33. package/dist/cjs/interceptors/openai.js +5 -5
  34. package/dist/cjs/interceptors/openai.js.map +1 -1
  35. package/dist/cjs/types/config.d.ts +7 -1
  36. package/dist/cjs/types/config.d.ts.map +1 -1
  37. package/dist/cjs/types/gateway.d.ts +51 -114
  38. package/dist/cjs/types/gateway.d.ts.map +1 -1
  39. package/dist/cjs/types/gateway.js +2 -7
  40. package/dist/cjs/types/gateway.js.map +1 -1
  41. package/dist/cjs/types/index.d.ts +1 -0
  42. package/dist/cjs/types/index.d.ts.map +1 -1
  43. package/dist/cjs/types/index.js +1 -0
  44. package/dist/cjs/types/index.js.map +1 -1
  45. package/dist/cjs/types/proxy.d.ts +78 -0
  46. package/dist/cjs/types/proxy.d.ts.map +1 -0
  47. package/dist/cjs/types/proxy.js +9 -0
  48. package/dist/cjs/types/proxy.js.map +1 -0
  49. package/dist/cjs/utils/helpers.d.ts.map +1 -1
  50. package/dist/cjs/utils/helpers.js +3 -1
  51. package/dist/cjs/utils/helpers.js.map +1 -1
  52. package/dist/esm/client.d.ts +106 -41
  53. package/dist/esm/client.d.ts.map +1 -1
  54. package/dist/esm/client.js +446 -198
  55. package/dist/esm/client.js.map +1 -1
  56. package/dist/esm/errors.d.ts +51 -0
  57. package/dist/esm/errors.d.ts.map +1 -0
  58. package/dist/esm/errors.js +75 -0
  59. package/dist/esm/errors.js.map +1 -0
  60. package/dist/esm/index.d.ts +6 -2
  61. package/dist/esm/index.d.ts.map +1 -1
  62. package/dist/esm/index.js +6 -1
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/interceptors/anthropic.d.ts +1 -1
  65. package/dist/esm/interceptors/anthropic.d.ts.map +1 -1
  66. package/dist/esm/interceptors/anthropic.js +6 -6
  67. package/dist/esm/interceptors/anthropic.js.map +1 -1
  68. package/dist/esm/interceptors/bedrock.d.ts +141 -0
  69. package/dist/esm/interceptors/bedrock.d.ts.map +1 -0
  70. package/dist/esm/interceptors/bedrock.js +220 -0
  71. package/dist/esm/interceptors/bedrock.js.map +1 -0
  72. package/dist/esm/interceptors/gemini.d.ts +81 -0
  73. package/dist/esm/interceptors/gemini.d.ts.map +1 -0
  74. package/dist/esm/interceptors/gemini.js +105 -0
  75. package/dist/esm/interceptors/gemini.js.map +1 -0
  76. package/dist/esm/interceptors/ollama.d.ts +143 -0
  77. package/dist/esm/interceptors/ollama.d.ts.map +1 -0
  78. package/dist/esm/interceptors/ollama.js +144 -0
  79. package/dist/esm/interceptors/ollama.js.map +1 -0
  80. package/dist/esm/interceptors/openai.d.ts +1 -1
  81. package/dist/esm/interceptors/openai.d.ts.map +1 -1
  82. package/dist/esm/interceptors/openai.js +5 -5
  83. package/dist/esm/interceptors/openai.js.map +1 -1
  84. package/dist/esm/types/config.d.ts +7 -1
  85. package/dist/esm/types/config.d.ts.map +1 -1
  86. package/dist/esm/types/gateway.d.ts +51 -114
  87. package/dist/esm/types/gateway.d.ts.map +1 -1
  88. package/dist/esm/types/gateway.js +2 -7
  89. package/dist/esm/types/gateway.js.map +1 -1
  90. package/dist/esm/types/index.d.ts +1 -0
  91. package/dist/esm/types/index.d.ts.map +1 -1
  92. package/dist/esm/types/index.js +1 -0
  93. package/dist/esm/types/index.js.map +1 -1
  94. package/dist/esm/types/proxy.d.ts +78 -0
  95. package/dist/esm/types/proxy.d.ts.map +1 -0
  96. package/dist/esm/types/proxy.js +8 -0
  97. package/dist/esm/types/proxy.js.map +1 -0
  98. package/dist/esm/utils/helpers.d.ts.map +1 -1
  99. package/dist/esm/utils/helpers.js +3 -1
  100. package/dist/esm/utils/helpers.js.map +1 -1
  101. package/package.json +22 -7
@@ -1,4 +1,4 @@
1
- import { AxonFlowConfig, ConnectorMetadata, ConnectorInstallRequest, ConnectorResponse, PlanResponse, PlanExecutionResponse, PreCheckRequest, PolicyApprovalResult, TokenUsage, AuditResult } from './types';
1
+ import { AxonFlowConfig, ConnectorMetadata, ConnectorInstallRequest, ConnectorResponse, PlanResponse, PlanExecutionResponse, PolicyApprovalResult, PolicyApprovalOptions, AuditResult, AuditOptions, ExecuteQueryOptions, ExecuteQueryResponse, HealthStatus } from './types';
2
2
  /**
3
3
  * Main AxonFlow client for invisible AI governance
4
4
  */
@@ -32,6 +32,47 @@ export declare class AxonFlow {
32
32
  * Create a sandbox client for testing
33
33
  */
34
34
  static sandbox(apiKey?: string): AxonFlow;
35
+ /**
36
+ * Check if AxonFlow Agent is healthy and available.
37
+ *
38
+ * @returns HealthStatus object with agent health information
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const health = await axonflow.healthCheck();
43
+ * if (health.status === 'healthy') {
44
+ * console.log('Agent is healthy');
45
+ * }
46
+ * ```
47
+ */
48
+ healthCheck(): Promise<HealthStatus>;
49
+ /**
50
+ * Execute a query through AxonFlow with policy enforcement (Proxy Mode).
51
+ *
52
+ * This is the primary method for Proxy Mode, where AxonFlow handles policy
53
+ * checking and optionally routes requests to LLM providers.
54
+ *
55
+ * @param options - Query execution options
56
+ * @returns ExecuteQueryResponse with results or error information
57
+ * @throws PolicyViolationError if request is blocked by policy
58
+ * @throws AuthenticationError if credentials are invalid
59
+ * @throws APIError for other API errors
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * const response = await axonflow.executeQuery({
64
+ * userToken: 'user-123',
65
+ * query: 'Explain quantum computing',
66
+ * requestType: 'chat',
67
+ * context: { provider: 'openai', model: 'gpt-4' }
68
+ * });
69
+ *
70
+ * if (response.success) {
71
+ * console.log('Response:', response.data);
72
+ * }
73
+ * ```
74
+ */
75
+ executeQuery(options: ExecuteQueryOptions): Promise<ExecuteQueryResponse>;
35
76
  /**
36
77
  * List all available MCP connectors from the marketplace
37
78
  */
@@ -46,66 +87,90 @@ export declare class AxonFlow {
46
87
  queryConnector(connectorName: string, query: string, params?: any): Promise<ConnectorResponse>;
47
88
  /**
48
89
  * Generate a multi-agent execution plan from a natural language query
90
+ * @param query - Natural language query describing the task
91
+ * @param domain - Optional domain hint (travel, healthcare, etc.)
92
+ * @param userToken - Optional user token for authentication (defaults to tenant/client_id)
49
93
  */
50
- generatePlan(query: string, domain?: string): Promise<PlanResponse>;
94
+ generatePlan(query: string, domain?: string, userToken?: string): Promise<PlanResponse>;
51
95
  /**
52
96
  * Execute a previously generated multi-agent plan
97
+ * @param planId - ID of the plan to execute
98
+ * @param userToken - Optional user token for authentication (defaults to tenant/client_id)
53
99
  */
54
- executePlan(planId: string): Promise<PlanExecutionResponse>;
100
+ executePlan(planId: string, userToken?: string): Promise<PlanExecutionResponse>;
55
101
  /**
56
102
  * Get the status of a running or completed plan
57
103
  */
58
104
  getPlanStatus(planId: string): Promise<PlanExecutionResponse>;
59
105
  /**
60
- * Perform policy pre-check before making LLM call
61
- *
62
- * This is the first step in Gateway Mode. Call this before making your
63
- * LLM call to ensure policy compliance.
106
+ * Gateway Mode: Pre-check policy approval before making a direct LLM call.
107
+ * Alias for getPolicyApprovedContext() for simpler API.
108
+ */
109
+ preCheck(options: PolicyApprovalOptions): Promise<PolicyApprovalResult>;
110
+ /**
111
+ * Gateway Mode: Get policy-approved context before making a direct LLM call.
64
112
  *
65
- * @param request Pre-check request containing user token, query, and optional data sources
66
- * @returns PolicyApprovalResult with context ID and approved data (if any)
113
+ * Use this when you want to:
114
+ * - Make direct LLM calls (not through AxonFlow proxy)
115
+ * - Have full control over your LLM provider/model selection
116
+ * - Minimize latency by calling LLM directly
67
117
  *
68
118
  * @example
69
- * const result = await axonflow.getPolicyApprovedContext({
70
- * userToken: 'user-jwt-token',
71
- * dataSources: ['postgres', 'salesforce'],
72
- * query: 'Find all patients with recent lab results'
119
+ * ```typescript
120
+ * const ctx = await axonflow.getPolicyApprovedContext({
121
+ * userToken: 'user-jwt',
122
+ * query: 'Analyze this customer data',
123
+ * dataSources: ['postgres']
73
124
  * });
74
125
  *
75
- * if (!result.approved) {
76
- * throw new Error(`Request blocked: ${result.blockReason}`);
126
+ * if (!ctx.approved) {
127
+ * throw new Error(`Blocked: ${ctx.blockReason}`);
77
128
  * }
78
129
  *
79
- * // Use result.approvedData to build your LLM prompt
80
- * const prompt = buildPrompt(result.approvedData);
130
+ * // Make direct LLM call with approved data
131
+ * const response = await openai.chat.completions.create({
132
+ * model: 'gpt-4',
133
+ * messages: [{ role: 'user', content: JSON.stringify(ctx.approvedData) }]
134
+ * });
135
+ *
136
+ * // Audit the call
137
+ * await axonflow.auditLLMCall({
138
+ * contextId: ctx.contextId,
139
+ * responseSummary: response.choices[0].message.content.substring(0, 100),
140
+ * provider: 'openai',
141
+ * model: 'gpt-4',
142
+ * tokenUsage: {
143
+ * promptTokens: response.usage.prompt_tokens,
144
+ * completionTokens: response.usage.completion_tokens,
145
+ * totalTokens: response.usage.total_tokens
146
+ * },
147
+ * latencyMs: 250
148
+ * });
149
+ * ```
81
150
  */
82
- getPolicyApprovedContext(request: PreCheckRequest): Promise<PolicyApprovalResult>;
151
+ getPolicyApprovedContext(options: PolicyApprovalOptions): Promise<PolicyApprovalResult>;
83
152
  /**
84
- * Report LLM call details for audit logging
153
+ * Gateway Mode: Audit an LLM call after completion.
85
154
  *
86
- * This is the second step in Gateway Mode. Call this after making your
87
- * LLM call to record it in the audit trail.
88
- *
89
- * @param contextId Context ID from getPolicyApprovedContext()
90
- * @param responseSummary Brief summary of the LLM response (not full response)
91
- * @param provider LLM provider name
92
- * @param model Model name
93
- * @param tokenUsage Token counts from LLM response
94
- * @param latencyMs Time taken for LLM call in milliseconds
95
- * @param metadata Optional additional metadata
96
- * @returns AuditResult confirming the audit was recorded
155
+ * Call this after making a direct LLM call to log the audit trail.
156
+ * This is required for compliance and monitoring.
97
157
  *
98
158
  * @example
99
- * const result = await axonflow.auditLLMCall(
100
- * ctx.contextId,
101
- * 'Found 5 patients with recent lab results',
102
- * 'openai',
103
- * 'gpt-4',
104
- * { promptTokens: 100, completionTokens: 50, totalTokens: 150 },
105
- * 250,
106
- * { sessionId: 'session-123' }
107
- * );
108
- */
109
- auditLLMCall(contextId: string, responseSummary: string, provider: string, model: string, tokenUsage: TokenUsage, latencyMs: number, metadata?: Record<string, any>): Promise<AuditResult>;
159
+ * ```typescript
160
+ * await axonflow.auditLLMCall({
161
+ * contextId: ctx.contextId,
162
+ * responseSummary: 'Generated report with 5 items',
163
+ * provider: 'openai',
164
+ * model: 'gpt-4',
165
+ * tokenUsage: {
166
+ * promptTokens: 100,
167
+ * completionTokens: 50,
168
+ * totalTokens: 150
169
+ * },
170
+ * latencyMs: 250
171
+ * });
172
+ * ```
173
+ */
174
+ auditLLMCall(options: AuditOptions): Promise<AuditResult>;
110
175
  }
111
176
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAId,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,WAAW,EACZ,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,YAAY,CAAyB;gBAEjC,MAAM,EAAE,cAAc;IAwBlC;;;;OAIG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqD5D;;OAEG;YACW,cAAc;IAiB5B;;OAEG;YACW,aAAa;IAuD3B;;OAEG;YACW,QAAQ;IAYtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,MAAmB,GAAG,QAAQ;IASrD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqBpD;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvE;;OAEG;IACG,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0CpG;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6CzE;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAyCjE;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAuDnE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8DvF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,WAAW,CAAC;CA4DxB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAId,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACb,MAAM,SAAS,CAAC;AAOjB;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAUZ;IACF,OAAO,CAAC,YAAY,CAAyB;gBAEjC,MAAM,EAAE,cAAc;IAqDlC;;;;OAIG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuD5D;;OAEG;YACW,cAAc;IAiB5B;;OAEG;YACW,aAAa;IAyE3B;;OAEG;YACW,QAAQ;IAYtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,MAAmB,GAAG,QAAQ;IAarD;;;;;;;;;;;;OAYG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IA0C1C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwG/E;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqBpD;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvE;;OAEG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,GAAG,GACX,OAAO,CAAC,iBAAiB,CAAC;IAkD7B;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqD7F;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiDrF;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA+BnE;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACG,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkF7F;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAqEhE"}