@chanl-ai/sdk 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/openai.d.ts +106 -0
- package/dist/adapters/openai.d.ts.map +1 -0
- package/dist/adapters/openai.js +185 -0
- package/dist/adapters/openai.js.map +1 -0
- package/dist/client.d.ts +74 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +293 -0
- package/dist/client.js.map +1 -0
- package/dist/errors/index.d.ts +179 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +319 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/live/index.d.ts +9 -0
- package/dist/live/index.d.ts.map +1 -0
- package/dist/live/index.js +16 -0
- package/dist/live/index.js.map +1 -0
- package/dist/live/live-call.d.ts +48 -0
- package/dist/live/live-call.d.ts.map +1 -0
- package/dist/live/live-call.js +148 -0
- package/dist/live/live-call.js.map +1 -0
- package/dist/live/live-chat.d.ts +71 -0
- package/dist/live/live-chat.d.ts.map +1 -0
- package/dist/live/live-chat.js +95 -0
- package/dist/live/live-chat.js.map +1 -0
- package/dist/live/live-execution.d.ts +55 -0
- package/dist/live/live-execution.d.ts.map +1 -0
- package/dist/live/live-execution.js +170 -0
- package/dist/live/live-execution.js.map +1 -0
- package/dist/live/typed-emitter.d.ts +15 -0
- package/dist/live/typed-emitter.d.ts.map +1 -0
- package/dist/live/typed-emitter.js +40 -0
- package/dist/live/typed-emitter.js.map +1 -0
- package/dist/live/types.d.ts +24 -0
- package/dist/live/types.d.ts.map +1 -0
- package/dist/live/types.js +6 -0
- package/dist/live/types.js.map +1 -0
- package/dist/modules/agents.d.ts +378 -0
- package/dist/modules/agents.d.ts.map +1 -0
- package/dist/modules/agents.js +259 -0
- package/dist/modules/agents.js.map +1 -0
- package/dist/modules/alerts.d.ts +43 -0
- package/dist/modules/alerts.d.ts.map +1 -0
- package/dist/modules/alerts.js +56 -0
- package/dist/modules/alerts.js.map +1 -0
- package/dist/modules/audio.d.ts +47 -0
- package/dist/modules/audio.d.ts.map +1 -0
- package/dist/modules/audio.js +75 -0
- package/dist/modules/audio.js.map +1 -0
- package/dist/modules/auth.d.ts +76 -0
- package/dist/modules/auth.d.ts.map +1 -0
- package/dist/modules/auth.js +59 -0
- package/dist/modules/auth.js.map +1 -0
- package/dist/modules/calls.d.ts +825 -0
- package/dist/modules/calls.d.ts.map +1 -0
- package/dist/modules/calls.js +398 -0
- package/dist/modules/calls.js.map +1 -0
- package/dist/modules/chat.d.ts +165 -0
- package/dist/modules/chat.d.ts.map +1 -0
- package/dist/modules/chat.js +169 -0
- package/dist/modules/chat.js.map +1 -0
- package/dist/modules/health.d.ts +45 -0
- package/dist/modules/health.d.ts.map +1 -0
- package/dist/modules/health.js +22 -0
- package/dist/modules/health.js.map +1 -0
- package/dist/modules/knowledge.d.ts +202 -0
- package/dist/modules/knowledge.d.ts.map +1 -0
- package/dist/modules/knowledge.js +147 -0
- package/dist/modules/knowledge.js.map +1 -0
- package/dist/modules/mcp.d.ts +140 -0
- package/dist/modules/mcp.d.ts.map +1 -0
- package/dist/modules/mcp.js +110 -0
- package/dist/modules/mcp.js.map +1 -0
- package/dist/modules/memory.d.ts +163 -0
- package/dist/modules/memory.d.ts.map +1 -0
- package/dist/modules/memory.js +208 -0
- package/dist/modules/memory.js.map +1 -0
- package/dist/modules/personas.d.ts +168 -0
- package/dist/modules/personas.d.ts.map +1 -0
- package/dist/modules/personas.js +106 -0
- package/dist/modules/personas.js.map +1 -0
- package/dist/modules/prompts.d.ts +128 -0
- package/dist/modules/prompts.d.ts.map +1 -0
- package/dist/modules/prompts.js +93 -0
- package/dist/modules/prompts.js.map +1 -0
- package/dist/modules/scenarios.d.ts +294 -0
- package/dist/modules/scenarios.d.ts.map +1 -0
- package/dist/modules/scenarios.js +349 -0
- package/dist/modules/scenarios.js.map +1 -0
- package/dist/modules/scorecard.d.ts +642 -0
- package/dist/modules/scorecard.d.ts.map +1 -0
- package/dist/modules/scorecard.js +327 -0
- package/dist/modules/scorecard.js.map +1 -0
- package/dist/modules/tools.d.ts +222 -0
- package/dist/modules/tools.d.ts.map +1 -0
- package/dist/modules/tools.js +302 -0
- package/dist/modules/tools.js.map +1 -0
- package/dist/modules/toolsets.d.ts +173 -0
- package/dist/modules/toolsets.d.ts.map +1 -0
- package/dist/modules/toolsets.js +216 -0
- package/dist/modules/toolsets.js.map +1 -0
- package/dist/modules/transcript.d.ts +60 -0
- package/dist/modules/transcript.d.ts.map +1 -0
- package/dist/modules/transcript.js +69 -0
- package/dist/modules/transcript.js.map +1 -0
- package/dist/modules/workspace.d.ts +48 -0
- package/dist/modules/workspace.d.ts.map +1 -0
- package/dist/modules/workspace.js +49 -0
- package/dist/modules/workspace.js.map +1 -0
- package/dist/types/api.d.ts +8 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +25 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/config.d.ts +70 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/memory.d.ts +243 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +9 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/tool-calls.d.ts +61 -0
- package/dist/types/tool-calls.d.ts.map +1 -0
- package/dist/types/tool-calls.js +9 -0
- package/dist/types/tool-calls.js.map +1 -0
- package/dist/types/tools.d.ts +321 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +9 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/toolsets.d.ts +149 -0
- package/dist/types/toolsets.d.ts.map +1 -0
- package/dist/types/toolsets.js +8 -0
- package/dist/types/toolsets.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AgentsModule - SDK module for agent management
|
|
4
|
+
*
|
|
5
|
+
* Provides operations for AI agents.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.AgentsModule = void 0;
|
|
9
|
+
class AgentsModule {
|
|
10
|
+
constructor(sdk) {
|
|
11
|
+
this.sdk = sdk;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* List all agents with optional filters
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const { data } = await sdk.agents.list();
|
|
19
|
+
* console.log(data.agents);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
async list(filters) {
|
|
23
|
+
const queryParams = new URLSearchParams();
|
|
24
|
+
if (filters?.status)
|
|
25
|
+
queryParams.append('status', filters.status);
|
|
26
|
+
if (filters?.provider)
|
|
27
|
+
queryParams.append('provider', filters.provider);
|
|
28
|
+
if (filters?.page)
|
|
29
|
+
queryParams.append('page', filters.page.toString());
|
|
30
|
+
if (filters?.limit)
|
|
31
|
+
queryParams.append('limit', filters.limit.toString());
|
|
32
|
+
if (filters?.sortBy)
|
|
33
|
+
queryParams.append('sortBy', filters.sortBy);
|
|
34
|
+
if (filters?.sortOrder)
|
|
35
|
+
queryParams.append('sortOrder', filters.sortOrder);
|
|
36
|
+
const url = `/api/v1/agents${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
|
|
37
|
+
return this.sdk.request('GET', url);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get a single agent by ID
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const { data } = await sdk.agents.get('agent_abc');
|
|
45
|
+
* console.log(data.agent.name);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
async get(id) {
|
|
49
|
+
return this.sdk.request('GET', `/api/v1/agents/${id}`);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Create a new agent
|
|
53
|
+
*
|
|
54
|
+
* Creates an agent with platform configuration. Use platform 'custom' for
|
|
55
|
+
* internally-managed agents, or specify a platform like 'vapi' for external
|
|
56
|
+
* integrations.
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* // Create a custom agent
|
|
61
|
+
* const { data } = await sdk.agents.create({
|
|
62
|
+
* platform: 'custom',
|
|
63
|
+
* name: 'Support Agent',
|
|
64
|
+
* type: 'Voice Assistant',
|
|
65
|
+
* useCase: 'support',
|
|
66
|
+
* configuration: {
|
|
67
|
+
* prompt: 'You are a helpful customer support agent.',
|
|
68
|
+
* model: 'gpt-4o'
|
|
69
|
+
* }
|
|
70
|
+
* });
|
|
71
|
+
*
|
|
72
|
+
* // Create a VAPI agent
|
|
73
|
+
* const { data } = await sdk.agents.create({
|
|
74
|
+
* platform: 'vapi',
|
|
75
|
+
* platformAgentId: 'asst_abc123',
|
|
76
|
+
* name: 'VAPI Sales Bot',
|
|
77
|
+
* type: 'Voice Assistant',
|
|
78
|
+
* phoneNumbers: ['+1234567890']
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
async create(data) {
|
|
83
|
+
return this.sdk.request('POST', '/api/v1/agents', data);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Update an existing agent
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const { data } = await sdk.agents.update('agent_abc', {
|
|
91
|
+
* status: 'active',
|
|
92
|
+
* configuration: { prompt: 'Updated prompt' },
|
|
93
|
+
* syncToVapi: true // Sync changes back to VAPI
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
async update(id, data) {
|
|
98
|
+
return this.sdk.request('PATCH', `/api/v1/agents/${id}`, data);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Delete an agent
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* // Delete locally only
|
|
106
|
+
* await sdk.agents.delete('agent_abc');
|
|
107
|
+
*
|
|
108
|
+
* // Also delete from integration platform
|
|
109
|
+
* await sdk.agents.delete('agent_abc', {
|
|
110
|
+
* deleteFromIntegration: true
|
|
111
|
+
* });
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
async delete(id, options) {
|
|
115
|
+
const queryParams = new URLSearchParams();
|
|
116
|
+
if (options?.deleteFromIntegration) {
|
|
117
|
+
queryParams.append('deleteFromIntegration', 'true');
|
|
118
|
+
}
|
|
119
|
+
const url = `/api/v1/agents/${id}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
|
|
120
|
+
return this.sdk.request('DELETE', url);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Sync agents from an external platform
|
|
124
|
+
*
|
|
125
|
+
* Imports agents from VAPI, ElevenLabs, or other platforms into your workspace.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* // Sync all agents from VAPI
|
|
130
|
+
* const { data } = await sdk.agents.sync('vapi');
|
|
131
|
+
*
|
|
132
|
+
* // Force update with clean sync
|
|
133
|
+
* const { data } = await sdk.agents.sync('vapi', {
|
|
134
|
+
* forceUpdate: true,
|
|
135
|
+
* cleanBeforeSync: true
|
|
136
|
+
* });
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
async sync(platform, options) {
|
|
140
|
+
return this.sdk.request('POST', `/api/v1/agents/sync/${platform}`, options || {});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Sync agents from all configured platforms
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* ```typescript
|
|
147
|
+
* const { data } = await sdk.agents.syncAll('ws_123', {
|
|
148
|
+
* forceUpdate: true
|
|
149
|
+
* });
|
|
150
|
+
* console.log(`Synced ${data.result.processed} agents`);
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
async syncAll(options) {
|
|
154
|
+
return this.sdk.request('POST', '/api/v1/agents/sync/all', options || {});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Import a specific agent from a third-party platform
|
|
158
|
+
*
|
|
159
|
+
* Imports one agent by its external ID from VAPI, Retell, Bland, or other
|
|
160
|
+
* platforms. The agent is created in Chanl with a deployment reference
|
|
161
|
+
* linking it back to the external platform.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* // Import a VAPI agent
|
|
166
|
+
* const { data } = await sdk.agents.importFromPlatform('ws_123', {
|
|
167
|
+
* platform: 'vapi',
|
|
168
|
+
* externalAgentId: 'asst_abc123',
|
|
169
|
+
* });
|
|
170
|
+
* console.log(data.agent.name);
|
|
171
|
+
* console.log(data.agent.deployments[0].externalId);
|
|
172
|
+
*
|
|
173
|
+
* // Import with name override
|
|
174
|
+
* const { data } = await sdk.agents.importFromPlatform('ws_123', {
|
|
175
|
+
* platform: 'retell',
|
|
176
|
+
* externalAgentId: 'ret_xyz',
|
|
177
|
+
* name: 'My Custom Name',
|
|
178
|
+
* });
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
async importFromPlatform(options) {
|
|
182
|
+
return this.sdk.request('POST', '/api/v1/agents/import', options);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Publish an agent to a third-party platform
|
|
186
|
+
*
|
|
187
|
+
* Creates or updates the agent on an external platform (VAPI, Retell, Bland).
|
|
188
|
+
* Optionally includes the MCP URL for tool access.
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* // Publish to VAPI (creates new)
|
|
193
|
+
* const { data } = await sdk.agents.publish('agent_abc', {
|
|
194
|
+
* platform: 'vapi',
|
|
195
|
+
* includeMcp: true,
|
|
196
|
+
* });
|
|
197
|
+
* console.log(data.action); // 'created'
|
|
198
|
+
* console.log(data.externalId); // 'ext_vapi_789'
|
|
199
|
+
*
|
|
200
|
+
* // Update existing external agent
|
|
201
|
+
* const { data } = await sdk.agents.publish('agent_abc', {
|
|
202
|
+
* platform: 'vapi',
|
|
203
|
+
* targetExternalId: 'existing_ext_456',
|
|
204
|
+
* });
|
|
205
|
+
* console.log(data.action); // 'updated'
|
|
206
|
+
* ```
|
|
207
|
+
*/
|
|
208
|
+
async publish(agentId, options) {
|
|
209
|
+
return this.sdk.request('POST', `/api/v1/agents/${agentId}/deploy`, options);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Push MCP URL to a third-party agent
|
|
213
|
+
*
|
|
214
|
+
* Configures a third-party agent to use the Chanl MCP server for tool access.
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* const { data } = await sdk.agents.pushMcp('ws_123', 'agent_abc', {
|
|
219
|
+
* platform: 'vapi',
|
|
220
|
+
* });
|
|
221
|
+
* console.log(data.mcpUrl); // 'https://my-workspace.chanl.dev/mcp'
|
|
222
|
+
* console.log(data.externalId); // 'ext_vapi_789'
|
|
223
|
+
*
|
|
224
|
+
* // Push to specific external agent
|
|
225
|
+
* const { data } = await sdk.agents.pushMcp('ws_123', 'agent_abc', {
|
|
226
|
+
* platform: 'vapi',
|
|
227
|
+
* targetExternalId: 'existing_ext_456',
|
|
228
|
+
* });
|
|
229
|
+
* ```
|
|
230
|
+
*/
|
|
231
|
+
async pushMcp(agentId, options) {
|
|
232
|
+
return this.sdk.request('POST', `/api/v1/agents/${agentId}/push-mcp`, options);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get agent statistics for the workspace
|
|
236
|
+
*
|
|
237
|
+
* Returns aggregate stats including total agents, average scores,
|
|
238
|
+
* tool failures, and breakdowns by platform and status.
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* ```typescript
|
|
242
|
+
* const { data } = await sdk.agents.getStats('ws_123');
|
|
243
|
+
* console.log('Total agents:', data.stats.totalAgents);
|
|
244
|
+
* console.log('By platform:', data.stats.byPlatform);
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
async getStats() {
|
|
248
|
+
return this.sdk.request('GET', '/api/v1/agents/stats');
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Build full agent context in one call.
|
|
252
|
+
* Returns system prompt, memories, knowledge, tools, and token usage.
|
|
253
|
+
*/
|
|
254
|
+
async context(agentId, options) {
|
|
255
|
+
return this.sdk.request('POST', `/api/v1/agents/${agentId}/context`, options || {});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
exports.AgentsModule = AgentsModule;
|
|
259
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/modules/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ChanlSDK } from "../client";
|
|
2
|
+
import { ApiResponse } from "../types/config";
|
|
3
|
+
export type AlertMetadata = Record<string, unknown>;
|
|
4
|
+
export interface Alert {
|
|
5
|
+
id: string;
|
|
6
|
+
type: string;
|
|
7
|
+
message: string;
|
|
8
|
+
severity: "info" | "warning" | "error";
|
|
9
|
+
workspaceId: string;
|
|
10
|
+
metadata?: AlertMetadata;
|
|
11
|
+
read: boolean;
|
|
12
|
+
createdAt: string;
|
|
13
|
+
updatedAt: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class AlertModule {
|
|
16
|
+
private sdk;
|
|
17
|
+
constructor(sdk: ChanlSDK);
|
|
18
|
+
/**
|
|
19
|
+
* Get all alerts
|
|
20
|
+
*/
|
|
21
|
+
getAll(params?: {
|
|
22
|
+
workspaceId?: string;
|
|
23
|
+
severity?: string;
|
|
24
|
+
read?: boolean;
|
|
25
|
+
page?: number;
|
|
26
|
+
limit?: number;
|
|
27
|
+
}): Promise<ApiResponse<Alert[]>>;
|
|
28
|
+
/**
|
|
29
|
+
* Mark alert as read
|
|
30
|
+
*/
|
|
31
|
+
markAsRead(id: string): Promise<ApiResponse<void>>;
|
|
32
|
+
/**
|
|
33
|
+
* Mark all alerts as read
|
|
34
|
+
*/
|
|
35
|
+
markAllAsRead(params?: {
|
|
36
|
+
workspaceId?: string;
|
|
37
|
+
}): Promise<ApiResponse<void>>;
|
|
38
|
+
/**
|
|
39
|
+
* Delete alert
|
|
40
|
+
*/
|
|
41
|
+
delete(id: string): Promise<ApiResponse<void>>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=alerts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.d.ts","sourceRoot":"","sources":["../../src/modules/alerts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,QAAQ;IAEjC;;OAEG;IACG,MAAM,CAAC,MAAM,CAAC,EAAE;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAuBjC;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAIxD;;OAEG;IACG,aAAa,CAAC,MAAM,CAAC,EAAE;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAW9B;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CAGrD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlertModule = void 0;
|
|
4
|
+
class AlertModule {
|
|
5
|
+
constructor(sdk) {
|
|
6
|
+
this.sdk = sdk;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get all alerts
|
|
10
|
+
*/
|
|
11
|
+
async getAll(params) {
|
|
12
|
+
const queryParams = new URLSearchParams();
|
|
13
|
+
if (params?.workspaceId) {
|
|
14
|
+
queryParams.append("workspaceId", params.workspaceId);
|
|
15
|
+
}
|
|
16
|
+
if (params?.severity) {
|
|
17
|
+
queryParams.append("severity", params.severity);
|
|
18
|
+
}
|
|
19
|
+
if (params?.read !== undefined) {
|
|
20
|
+
queryParams.append("read", params.read.toString());
|
|
21
|
+
}
|
|
22
|
+
if (params?.page) {
|
|
23
|
+
queryParams.append("page", params.page.toString());
|
|
24
|
+
}
|
|
25
|
+
if (params?.limit) {
|
|
26
|
+
queryParams.append("limit", params.limit.toString());
|
|
27
|
+
}
|
|
28
|
+
const url = `/v1/alerts${queryParams.toString() ? `?${queryParams.toString()}` : ""}`;
|
|
29
|
+
return this.sdk.request("GET", url);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Mark alert as read
|
|
33
|
+
*/
|
|
34
|
+
async markAsRead(id) {
|
|
35
|
+
return this.sdk.request("PUT", `/v1/alerts/${id}/read`);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Mark all alerts as read
|
|
39
|
+
*/
|
|
40
|
+
async markAllAsRead(params) {
|
|
41
|
+
const queryParams = new URLSearchParams();
|
|
42
|
+
if (params?.workspaceId) {
|
|
43
|
+
queryParams.append("workspaceId", params.workspaceId);
|
|
44
|
+
}
|
|
45
|
+
const url = `/v1/alerts/read-all${queryParams.toString() ? `?${queryParams.toString()}` : ""}`;
|
|
46
|
+
return this.sdk.request("PUT", url);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Delete alert
|
|
50
|
+
*/
|
|
51
|
+
async delete(id) {
|
|
52
|
+
return this.sdk.request("DELETE", `/v1/alerts/${id}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.AlertModule = AlertModule;
|
|
56
|
+
//# sourceMappingURL=alerts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../src/modules/alerts.ts"],"names":[],"mappings":";;;AAiBA,MAAa,WAAW;IACtB,YAAoB,GAAa;QAAb,QAAG,GAAH,GAAG,CAAU;IAAG,CAAC;IAErC;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAMZ;QACC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAE1C,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;YACxB,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrB,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,MAAM,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,GAAG,GAAG,aAAa,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAEnB;QACC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAE1C,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;YACxB,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,GAAG,GAAG,sBAAsB,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAhED,kCAgEC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ChanlSDK } from "../client";
|
|
2
|
+
import { ApiResponse } from "../types/config";
|
|
3
|
+
export interface AudioUploadOptions {
|
|
4
|
+
metadata?: Record<string, unknown>;
|
|
5
|
+
filename?: string;
|
|
6
|
+
mimetype?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface Audio {
|
|
9
|
+
id: string;
|
|
10
|
+
filename: string;
|
|
11
|
+
originalName: string;
|
|
12
|
+
mimetype: string;
|
|
13
|
+
size: number;
|
|
14
|
+
duration?: number;
|
|
15
|
+
workspaceId: string;
|
|
16
|
+
url?: string;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class AudioModule {
|
|
21
|
+
private sdk;
|
|
22
|
+
constructor(sdk: ChanlSDK);
|
|
23
|
+
/**
|
|
24
|
+
* Get the workspaceId from SDK config, throwing if not set.
|
|
25
|
+
*/
|
|
26
|
+
private getWsId;
|
|
27
|
+
/**
|
|
28
|
+
* Upload an audio file
|
|
29
|
+
*/
|
|
30
|
+
upload(file: Buffer | File, options?: AudioUploadOptions): Promise<ApiResponse<Audio>>;
|
|
31
|
+
/**
|
|
32
|
+
* Get audio by ID
|
|
33
|
+
*/
|
|
34
|
+
getById(id: string): Promise<ApiResponse<Audio>>;
|
|
35
|
+
/**
|
|
36
|
+
* Get all audio files with optional filtering
|
|
37
|
+
*/
|
|
38
|
+
getAll(params?: {
|
|
39
|
+
page?: number;
|
|
40
|
+
limit?: number;
|
|
41
|
+
}): Promise<ApiResponse<Audio[]>>;
|
|
42
|
+
/**
|
|
43
|
+
* Delete audio file
|
|
44
|
+
*/
|
|
45
|
+
delete(id: string): Promise<ApiResponse<void>>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=audio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/modules/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,QAAQ;IAEjC;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAgC9B;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAQtD;;OAEG;IACG,MAAM,CACV,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAehC;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CAOrD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AudioModule = void 0;
|
|
4
|
+
class AudioModule {
|
|
5
|
+
constructor(sdk) {
|
|
6
|
+
this.sdk = sdk;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get the workspaceId from SDK config, throwing if not set.
|
|
10
|
+
*/
|
|
11
|
+
getWsId() {
|
|
12
|
+
const wsId = this.sdk.getConfig().workspaceId;
|
|
13
|
+
if (!wsId)
|
|
14
|
+
throw new Error('workspaceId required for audio operations. Set it in ChanlSDK config.');
|
|
15
|
+
return wsId;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Upload an audio file
|
|
19
|
+
*/
|
|
20
|
+
async upload(file, options) {
|
|
21
|
+
const wsId = this.getWsId();
|
|
22
|
+
const formData = new FormData();
|
|
23
|
+
if (file instanceof Buffer) {
|
|
24
|
+
// Determine filename from options or use default based on mimetype
|
|
25
|
+
let filename = options?.filename || "audio.unknown";
|
|
26
|
+
if (!options?.filename && options?.mimetype) {
|
|
27
|
+
const extension = options.mimetype.split("/")[1] || "unknown";
|
|
28
|
+
filename = `audio.${extension}`;
|
|
29
|
+
}
|
|
30
|
+
formData.append("audio", new Blob([file]), filename);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
formData.append("audio", file);
|
|
34
|
+
}
|
|
35
|
+
if (options?.metadata) {
|
|
36
|
+
formData.append("metadata", JSON.stringify(options.metadata));
|
|
37
|
+
}
|
|
38
|
+
return this.sdk.request("POST", `/api/v1/workspace/${wsId}/calls/upload`, formData, {
|
|
39
|
+
headers: {
|
|
40
|
+
"Content-Type": "multipart/form-data",
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get audio by ID
|
|
46
|
+
*/
|
|
47
|
+
async getById(id) {
|
|
48
|
+
const wsId = this.getWsId();
|
|
49
|
+
return this.sdk.request("GET", `/api/v1/workspace/${wsId}/calls/${id}`);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get all audio files with optional filtering
|
|
53
|
+
*/
|
|
54
|
+
async getAll(params) {
|
|
55
|
+
const wsId = this.getWsId();
|
|
56
|
+
const queryParams = new URLSearchParams();
|
|
57
|
+
if (params?.page) {
|
|
58
|
+
queryParams.append("page", params.page.toString());
|
|
59
|
+
}
|
|
60
|
+
if (params?.limit) {
|
|
61
|
+
queryParams.append("limit", params.limit.toString());
|
|
62
|
+
}
|
|
63
|
+
const url = `/api/v1/workspace/${wsId}/calls${queryParams.toString() ? `?${queryParams.toString()}` : ""}`;
|
|
64
|
+
return this.sdk.request("GET", url);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Delete audio file
|
|
68
|
+
*/
|
|
69
|
+
async delete(id) {
|
|
70
|
+
const wsId = this.getWsId();
|
|
71
|
+
return this.sdk.request("DELETE", `/api/v1/workspace/${wsId}/calls/${id}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.AudioModule = AudioModule;
|
|
75
|
+
//# sourceMappingURL=audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/modules/audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ChanlSDK } from '../client';
|
|
2
|
+
import { ApiResponse } from '../types/config';
|
|
3
|
+
export interface ApiKey {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
key: string;
|
|
7
|
+
workspaceId: string;
|
|
8
|
+
userId: string;
|
|
9
|
+
permissions: string[];
|
|
10
|
+
createdAt: string;
|
|
11
|
+
lastUsed?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CreateApiKeyRequest {
|
|
14
|
+
name: string;
|
|
15
|
+
workspaceId: string;
|
|
16
|
+
userId: string;
|
|
17
|
+
permissions?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface AuthTokenResponse {
|
|
20
|
+
accessToken: string;
|
|
21
|
+
refreshToken: string;
|
|
22
|
+
expiresIn: number;
|
|
23
|
+
user: {
|
|
24
|
+
id: string;
|
|
25
|
+
email: string;
|
|
26
|
+
displayName?: string;
|
|
27
|
+
};
|
|
28
|
+
defaultWorkspaceId?: string;
|
|
29
|
+
workspaces?: Array<{
|
|
30
|
+
workspaceId: string;
|
|
31
|
+
name?: string;
|
|
32
|
+
role: string;
|
|
33
|
+
}>;
|
|
34
|
+
}
|
|
35
|
+
export declare class AuthModule {
|
|
36
|
+
private sdk;
|
|
37
|
+
constructor(sdk: ChanlSDK);
|
|
38
|
+
/**
|
|
39
|
+
* Exchange a Firebase ID token for platform JWT tokens.
|
|
40
|
+
* Used by CLI browser login flow.
|
|
41
|
+
*/
|
|
42
|
+
exchangeFirebaseToken(firebaseToken: string): Promise<ApiResponse<AuthTokenResponse>>;
|
|
43
|
+
/**
|
|
44
|
+
* Refresh an access token using a refresh token.
|
|
45
|
+
*/
|
|
46
|
+
refreshToken(refreshToken: string): Promise<ApiResponse<{
|
|
47
|
+
accessToken: string;
|
|
48
|
+
refreshToken: string;
|
|
49
|
+
expiresIn: number;
|
|
50
|
+
}>>;
|
|
51
|
+
/**
|
|
52
|
+
* Create a new API key
|
|
53
|
+
*/
|
|
54
|
+
createApiKey(data: CreateApiKeyRequest): Promise<ApiResponse<ApiKey>>;
|
|
55
|
+
/**
|
|
56
|
+
* Get all API keys
|
|
57
|
+
*/
|
|
58
|
+
getApiKeys(params?: {
|
|
59
|
+
workspaceId?: string;
|
|
60
|
+
userId?: string;
|
|
61
|
+
}): Promise<ApiResponse<ApiKey[]>>;
|
|
62
|
+
/**
|
|
63
|
+
* Revoke API key
|
|
64
|
+
*/
|
|
65
|
+
revokeApiKey(keyId: string): Promise<ApiResponse<void>>;
|
|
66
|
+
/**
|
|
67
|
+
* Validate API key
|
|
68
|
+
*/
|
|
69
|
+
validateApiKey(apiKey: string): Promise<ApiResponse<{
|
|
70
|
+
valid: boolean;
|
|
71
|
+
workspaceId?: string;
|
|
72
|
+
userId?: string;
|
|
73
|
+
permissions?: string[];
|
|
74
|
+
}>>;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,QAAQ;IAEjC;;;OAGG;IACG,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAM3F;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5D,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IAMH;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAI3E;;OAEG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE;QACxB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAclC;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAI7D;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;QACxD,KAAK,EAAE,OAAO,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC,CAAC;CAGJ"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthModule = void 0;
|
|
4
|
+
class AuthModule {
|
|
5
|
+
constructor(sdk) {
|
|
6
|
+
this.sdk = sdk;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Exchange a Firebase ID token for platform JWT tokens.
|
|
10
|
+
* Used by CLI browser login flow.
|
|
11
|
+
*/
|
|
12
|
+
async exchangeFirebaseToken(firebaseToken) {
|
|
13
|
+
return this.sdk.request('POST', '/api/v1/auth/firebase/exchange', {
|
|
14
|
+
firebaseToken,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Refresh an access token using a refresh token.
|
|
19
|
+
*/
|
|
20
|
+
async refreshToken(refreshToken) {
|
|
21
|
+
return this.sdk.request('POST', '/api/v1/auth/token/refresh', {
|
|
22
|
+
refreshToken,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a new API key
|
|
27
|
+
*/
|
|
28
|
+
async createApiKey(data) {
|
|
29
|
+
return this.sdk.request('POST', '/api/v1/auth/api-keys', data);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get all API keys
|
|
33
|
+
*/
|
|
34
|
+
async getApiKeys(params) {
|
|
35
|
+
const queryParams = new URLSearchParams();
|
|
36
|
+
if (params?.workspaceId) {
|
|
37
|
+
queryParams.append('workspaceId', params.workspaceId);
|
|
38
|
+
}
|
|
39
|
+
if (params?.userId) {
|
|
40
|
+
queryParams.append('userId', params.userId);
|
|
41
|
+
}
|
|
42
|
+
const url = `/api/v1/auth/api-keys${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
|
|
43
|
+
return this.sdk.request('GET', url);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Revoke API key
|
|
47
|
+
*/
|
|
48
|
+
async revokeApiKey(keyId) {
|
|
49
|
+
return this.sdk.request('DELETE', `/api/v1/auth/api-keys/${keyId}`);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Validate API key
|
|
53
|
+
*/
|
|
54
|
+
async validateApiKey(apiKey) {
|
|
55
|
+
return this.sdk.request('POST', '/api/v1/auth/validate', { apiKey });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.AuthModule = AuthModule;
|
|
59
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/modules/auth.ts"],"names":[],"mappings":";;;AAsCA,MAAa,UAAU;IACrB,YAAoB,GAAa;QAAb,QAAG,GAAH,GAAG,CAAU;IAAG,CAAC;IAErC;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,aAAqB;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,gCAAgC,EAAE;YAChE,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,YAAoB;QAKrC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,4BAA4B,EAAE;YAC5D,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAyB;QAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAGhB;QACC,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAE1C,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;YACxB,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,GAAG,GAAG,wBAAwB,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjG,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,yBAAyB,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc;QAMjC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;CACF;AAvED,gCAuEC"}
|