@alfe.ai/agent-api-client 0.13.0 → 0.14.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.
- package/dist/index.cjs +1037 -786
- package/dist/index.d.cts +947 -703
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +947 -703
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1037 -786
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -54,40 +54,111 @@ interface InstallToolErrorCaptureOptions {
|
|
|
54
54
|
declare function installToolErrorCapture(api: ToolCaptureApi, options: InstallToolErrorCaptureOptions): void;
|
|
55
55
|
//# sourceMappingURL=tool-error-capture.d.ts.map
|
|
56
56
|
//#endregion
|
|
57
|
-
//#region src/
|
|
57
|
+
//#region src/transport.d.ts
|
|
58
|
+
/**
|
|
59
|
+
* Shared HTTP transport for the Agent API client — request core, retry
|
|
60
|
+
* policy, error formatting, and the `ApiBase` class the domain method
|
|
61
|
+
* groups under `./domains/` build on.
|
|
62
|
+
*/
|
|
58
63
|
interface AgentApiClientConfig {
|
|
59
64
|
apiKey: string;
|
|
60
65
|
apiUrl: string;
|
|
61
66
|
}
|
|
62
67
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* unpriceable product, so keep the literal union in lockstep with the service.
|
|
68
|
+
* Encode each path segment but keep the `/` separators — `encodeURIComponent`
|
|
69
|
+
* would escape the slashes too, breaking greedy proxy routes.
|
|
66
70
|
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
|
|
72
|
+
declare class AgentApiTransport {
|
|
73
|
+
private readonly apiKey;
|
|
74
|
+
private readonly apiUrl;
|
|
75
|
+
constructor(config: AgentApiClientConfig);
|
|
76
|
+
/**
|
|
77
|
+
* Binary sibling of `request<T>()`. `request()` forces
|
|
78
|
+
* `Content-Type: application/json` and parses a `{ data: T }` envelope,
|
|
79
|
+
* neither of which fits a raw-audio flow (voice TTS/STT), so those go
|
|
80
|
+
* through this instead. Auth (Bearer), the request budget, and the single
|
|
81
|
+
* retry on transient 5xx / network errors are kept in sync with
|
|
82
|
+
* `request()`. Retries fire only on statuses produced BEFORE the route
|
|
83
|
+
* handler runs (authorizer-timeout 500 + LB 502/503/504), so re-issuing a
|
|
84
|
+
* POST does not risk a duplicate side effect.
|
|
85
|
+
*/
|
|
86
|
+
rawRequest(path: string, init: {
|
|
87
|
+
method: string;
|
|
88
|
+
headers: Headers;
|
|
89
|
+
body?: BodyInit | Uint8Array;
|
|
90
|
+
}): Promise<Response>;
|
|
91
|
+
/**
|
|
92
|
+
* @param extra.timeoutMs Per-request abort timeout (default REQUEST_TIMEOUT_MS).
|
|
93
|
+
* Long endpoints (image generation) pass a larger value so the gateway's
|
|
94
|
+
* own timeout wins with a readable status instead of a client-side abort.
|
|
95
|
+
* @param extra.retry Whether to retry once on transient failures (default
|
|
96
|
+
* true). Expensive/non-idempotent endpoints pass false.
|
|
97
|
+
*/
|
|
98
|
+
request<T>(path: string, options?: RequestInit, extra?: {
|
|
99
|
+
timeoutMs?: number;
|
|
100
|
+
retry?: boolean;
|
|
101
|
+
}): Promise<T>;
|
|
76
102
|
}
|
|
77
|
-
/**
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Base class for the domain method groups. Holds the shared transport;
|
|
105
|
+
* `AgentApiClient` assembles the groups onto one class via `applyMixins`
|
|
106
|
+
* (prototype copy), so methods keep their original `this`-on-the-client
|
|
107
|
+
* call shape.
|
|
108
|
+
*/
|
|
109
|
+
declare class ApiBase {
|
|
110
|
+
protected readonly transport: AgentApiTransport;
|
|
111
|
+
constructor(transport: AgentApiTransport);
|
|
81
112
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
113
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
114
|
+
//#endregion
|
|
115
|
+
//#region src/domains/workspace.d.ts
|
|
116
|
+
/** Response of GET /agents/me/workspace (services/agents). */
|
|
117
|
+
interface AgentWorkspaceInfo {
|
|
118
|
+
templateKey?: string;
|
|
119
|
+
defaultModel?: string;
|
|
120
|
+
installedFrom?: {
|
|
121
|
+
templateKey: string;
|
|
122
|
+
authorTenantId: string;
|
|
123
|
+
version: number;
|
|
124
|
+
};
|
|
125
|
+
runtime?: string;
|
|
126
|
+
teams?: {
|
|
127
|
+
teamId: string;
|
|
128
|
+
name: string;
|
|
129
|
+
description?: string;
|
|
130
|
+
parentTeamId?: string;
|
|
131
|
+
}[];
|
|
132
|
+
projects?: {
|
|
133
|
+
projectId: string;
|
|
134
|
+
name: string;
|
|
135
|
+
description?: string;
|
|
136
|
+
status: string;
|
|
137
|
+
parentProjectId?: string;
|
|
138
|
+
}[];
|
|
139
|
+
teamIds?: string[];
|
|
140
|
+
projectIds?: string[];
|
|
141
|
+
}
|
|
142
|
+
declare class WorkspaceApi extends ApiBase {
|
|
143
|
+
/**
|
|
144
|
+
* GET /agents/me/workspace — workspace config for the authenticated agent
|
|
145
|
+
* (template assignment, default model, org roster).
|
|
146
|
+
*/
|
|
147
|
+
getWorkspace(): Promise<AgentWorkspaceInfo>;
|
|
148
|
+
/**
|
|
149
|
+
* GET /templates/{key}/files — persona/workspace file contents for a
|
|
150
|
+
* template the agent has access to. Pass `version` to pin to the version
|
|
151
|
+
* the agent was installed from (omit → the endpoint resolves `latest`).
|
|
152
|
+
*/
|
|
153
|
+
getTemplateFiles(templateKey: string, opts?: {
|
|
154
|
+
version?: number;
|
|
155
|
+
}): Promise<{
|
|
156
|
+
files: Record<string, string>;
|
|
157
|
+
}>;
|
|
90
158
|
}
|
|
159
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
160
|
+
//#endregion
|
|
161
|
+
//#region src/domains/sync.d.ts
|
|
91
162
|
interface SyncAgentInfo {
|
|
92
163
|
agentId: string;
|
|
93
164
|
tenantId: string;
|
|
@@ -172,6 +243,63 @@ interface SharedFileEntry {
|
|
|
172
243
|
size: number;
|
|
173
244
|
contentType?: string;
|
|
174
245
|
}
|
|
246
|
+
declare class SyncApi extends ApiBase {
|
|
247
|
+
syncRegister(args?: {
|
|
248
|
+
displayName?: string;
|
|
249
|
+
}): Promise<{
|
|
250
|
+
agent: SyncAgentInfo;
|
|
251
|
+
}>;
|
|
252
|
+
syncGetManifest(): Promise<SyncManifest>;
|
|
253
|
+
syncPresign(args: {
|
|
254
|
+
files: {
|
|
255
|
+
path: string;
|
|
256
|
+
operation: "put" | "get";
|
|
257
|
+
contentType?: string;
|
|
258
|
+
}[];
|
|
259
|
+
}): Promise<{
|
|
260
|
+
urls: SyncPresignedUrl[];
|
|
261
|
+
}>;
|
|
262
|
+
syncConfirmUpload(args: {
|
|
263
|
+
filePath: string;
|
|
264
|
+
hash: string;
|
|
265
|
+
size: number;
|
|
266
|
+
storageClass?: "STANDARD" | "GLACIER_IR";
|
|
267
|
+
}): Promise<SyncConfirmedUpload>;
|
|
268
|
+
syncReconstruct(args: {
|
|
269
|
+
mode: "full" | "active" | "memory";
|
|
270
|
+
}): Promise<SyncReconstructBundle>;
|
|
271
|
+
syncGetStats(): Promise<SyncAgentStats>;
|
|
272
|
+
syncListFiles(args?: {
|
|
273
|
+
prefix?: string;
|
|
274
|
+
}): Promise<{
|
|
275
|
+
files: SyncFileEntry[];
|
|
276
|
+
}>;
|
|
277
|
+
syncListSessions(): Promise<{
|
|
278
|
+
sessions: SyncSessionEntry[];
|
|
279
|
+
}>;
|
|
280
|
+
syncGetSession(sessionId: string): Promise<SyncSessionContent>;
|
|
281
|
+
syncDeleteFile(filePath: string): Promise<{
|
|
282
|
+
removed: boolean;
|
|
283
|
+
}>;
|
|
284
|
+
sharedListFiles(args: {
|
|
285
|
+
scope: "org" | "team" | "project";
|
|
286
|
+
scopeId: string;
|
|
287
|
+
}): Promise<{
|
|
288
|
+
files: SharedFileEntry[];
|
|
289
|
+
nextCursor: string | null;
|
|
290
|
+
}>;
|
|
291
|
+
sharedDownloadUrl(args: {
|
|
292
|
+
scope: "org" | "team" | "project";
|
|
293
|
+
scopeId: string;
|
|
294
|
+
filePath: string;
|
|
295
|
+
}): Promise<{
|
|
296
|
+
downloadUrl: string;
|
|
297
|
+
expiresIn: number;
|
|
298
|
+
}>;
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
301
|
+
//#endregion
|
|
302
|
+
//#region src/domains/knowledge.d.ts
|
|
175
303
|
type KnowledgeScopeType = "org" | "team" | "project";
|
|
176
304
|
interface KnowledgeScope {
|
|
177
305
|
scopeType: KnowledgeScopeType;
|
|
@@ -214,15 +342,6 @@ interface KnowledgeProfile {
|
|
|
214
342
|
updatedAt: string | null;
|
|
215
343
|
updatedBy: string | null;
|
|
216
344
|
}
|
|
217
|
-
interface KnowledgeDoc {
|
|
218
|
-
filePath: string;
|
|
219
|
-
fileName: string;
|
|
220
|
-
contentType?: string;
|
|
221
|
-
size: number;
|
|
222
|
-
uploadedBy?: string;
|
|
223
|
-
createdAt: string;
|
|
224
|
-
updatedAt: string;
|
|
225
|
-
}
|
|
226
345
|
type ChangeRequestResourceType = "doc" | "profile";
|
|
227
346
|
type ChangeRequestOperation = "create" | "update" | "delete";
|
|
228
347
|
type ChangeRequestStatus = "open" | "approved" | "rejected" | "withdrawn" | "superseded";
|
|
@@ -264,6 +383,202 @@ interface ProposeScopeChangeInput {
|
|
|
264
383
|
/** profile: the proposed value ({ about, description, links }). */
|
|
265
384
|
proposedValue?: unknown;
|
|
266
385
|
}
|
|
386
|
+
interface KnowledgeDoc {
|
|
387
|
+
filePath: string;
|
|
388
|
+
fileName: string;
|
|
389
|
+
contentType?: string;
|
|
390
|
+
size: number;
|
|
391
|
+
uploadedBy?: string;
|
|
392
|
+
createdAt: string;
|
|
393
|
+
updatedAt: string;
|
|
394
|
+
}
|
|
395
|
+
declare class KnowledgeApi extends ApiBase {
|
|
396
|
+
/**
|
|
397
|
+
* Semantic search across the agent's member scopes. Fan-out is gated
|
|
398
|
+
* server-side by `listScopes` set-inclusion (fail-closed). Pass
|
|
399
|
+
* `scopeType` + `scopeId` to narrow to one scope; a non-member scope
|
|
400
|
+
* yields empty results (never a cross-scope leak).
|
|
401
|
+
*/
|
|
402
|
+
knowledgeSearch(query: string, opts?: {
|
|
403
|
+
limit?: number;
|
|
404
|
+
scopeType?: KnowledgeScopeType;
|
|
405
|
+
scopeId?: string;
|
|
406
|
+
}): Promise<KnowledgeSearchResult>;
|
|
407
|
+
/** Enumerate the scopes (org + teams + projects) this agent belongs to. */
|
|
408
|
+
listScopes(): Promise<{
|
|
409
|
+
scopes: KnowledgeScope[];
|
|
410
|
+
}>;
|
|
411
|
+
/** Read a scope's structured knowledge profile (after membership check). */
|
|
412
|
+
getScopeProfile(scopeType: KnowledgeScopeType, scopeId: string): Promise<KnowledgeProfile>;
|
|
413
|
+
/**
|
|
414
|
+
* Open a change request against a scope's knowledge resource. For a doc
|
|
415
|
+
* create/update, `services/org` returns a presigned staging PUT; this method
|
|
416
|
+
* uploads the proposed `content` to it (echoing the same Content-Type that
|
|
417
|
+
* was signed), mirroring `writeScopeDoc`. The staged body is applied to the
|
|
418
|
+
* canonical doc — attributed to this agent — only when a reviewer approves.
|
|
419
|
+
*/
|
|
420
|
+
proposeScopeChange(scopeType: KnowledgeScopeType, scopeId: string, input: ProposeScopeChangeInput): Promise<KnowledgeChangeRequest>;
|
|
421
|
+
/**
|
|
422
|
+
* List the agent's OWN change requests in a scope (filtered server-side to
|
|
423
|
+
* this agent as proposer). Pass `status` to narrow to open / approved / etc.
|
|
424
|
+
*/
|
|
425
|
+
listScopeChangeRequests(scopeType: KnowledgeScopeType, scopeId: string, opts?: {
|
|
426
|
+
status?: ChangeRequestStatus;
|
|
427
|
+
limit?: number;
|
|
428
|
+
cursor?: string;
|
|
429
|
+
}): Promise<{
|
|
430
|
+
changeRequests: KnowledgeChangeRequest[];
|
|
431
|
+
nextCursor: string | null;
|
|
432
|
+
}>;
|
|
433
|
+
/** List a scope's docs (the org-files corpus; mirrored to shared/<scope>/). */
|
|
434
|
+
listScopeDocs(scopeType: KnowledgeScopeType, scopeId: string, opts?: {
|
|
435
|
+
limit?: number;
|
|
436
|
+
cursor?: string;
|
|
437
|
+
}): Promise<{
|
|
438
|
+
files: KnowledgeDoc[];
|
|
439
|
+
nextCursor: string | null;
|
|
440
|
+
}>;
|
|
441
|
+
/**
|
|
442
|
+
* Read the full text of a scope doc. Resolves a presigned download URL
|
|
443
|
+
* from `services/org`, then fetches the bytes directly from S3 (the one
|
|
444
|
+
* legitimate raw fetch in a plugin — same pattern as sync).
|
|
445
|
+
*/
|
|
446
|
+
readScopeDoc(scopeType: KnowledgeScopeType, scopeId: string, filePath: string): Promise<{
|
|
447
|
+
filePath: string;
|
|
448
|
+
text: string;
|
|
449
|
+
}>;
|
|
450
|
+
/**
|
|
451
|
+
* Write (create or overwrite) a scope doc. Two-step presigned upload:
|
|
452
|
+
* `services/org` returns a signed URL plus `requiredHeaders` (author /
|
|
453
|
+
* authorKind / message as `x-amz-meta-*`) that MUST be sent verbatim on
|
|
454
|
+
* the PUT, alongside the same `Content-Type` that was signed. Author and
|
|
455
|
+
* authorKind are server-set from the agent token — never trusted here.
|
|
456
|
+
*/
|
|
457
|
+
writeScopeDoc(scopeType: KnowledgeScopeType, scopeId: string, filePath: string, content: string, opts?: {
|
|
458
|
+
contentType?: string;
|
|
459
|
+
message?: string;
|
|
460
|
+
}): Promise<{
|
|
461
|
+
filePath: string;
|
|
462
|
+
}>;
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=knowledge.d.ts.map
|
|
465
|
+
//#endregion
|
|
466
|
+
//#region src/domains/mobile.d.ts
|
|
467
|
+
/** Response of GET /mobile/numbers for an agent (services/mobile). */
|
|
468
|
+
interface MobileNumberInfo {
|
|
469
|
+
phoneNumber: string;
|
|
470
|
+
countryCode: string;
|
|
471
|
+
monthlyPrice?: number;
|
|
472
|
+
status: string;
|
|
473
|
+
errorMessage?: string;
|
|
474
|
+
}
|
|
475
|
+
/** One purchasable number from GET /mobile/numbers/search. */
|
|
476
|
+
interface MobileAvailableNumber {
|
|
477
|
+
number: string;
|
|
478
|
+
friendlyName: string;
|
|
479
|
+
locality: string;
|
|
480
|
+
region: string;
|
|
481
|
+
country: string;
|
|
482
|
+
}
|
|
483
|
+
/** Approved WhatsApp content template from GET /mobile/whatsapp/templates. */
|
|
484
|
+
interface WhatsAppTemplate {
|
|
485
|
+
sid: string;
|
|
486
|
+
friendlyName: string;
|
|
487
|
+
language: string;
|
|
488
|
+
body: string;
|
|
489
|
+
variables: Record<string, string>;
|
|
490
|
+
dateCreated: string;
|
|
491
|
+
dateUpdated: string;
|
|
492
|
+
approvalStatus?: string;
|
|
493
|
+
rejectionReason?: string;
|
|
494
|
+
category?: string;
|
|
495
|
+
}
|
|
496
|
+
declare class MobileApi extends ApiBase {
|
|
497
|
+
getMobileNumber(): Promise<MobileNumberInfo>;
|
|
498
|
+
searchMobileNumbers(args?: {
|
|
499
|
+
country?: string;
|
|
500
|
+
query?: string;
|
|
501
|
+
}): Promise<{
|
|
502
|
+
numbers: MobileAvailableNumber[];
|
|
503
|
+
monthlyPrice: number;
|
|
504
|
+
}>;
|
|
505
|
+
assignMobileNumber(args: {
|
|
506
|
+
phoneNumber: string;
|
|
507
|
+
countryCode: string;
|
|
508
|
+
}): Promise<{
|
|
509
|
+
phoneNumber: string;
|
|
510
|
+
countryCode: string;
|
|
511
|
+
status: "pending";
|
|
512
|
+
}>;
|
|
513
|
+
releaseMobileNumber(): Promise<{
|
|
514
|
+
released: true;
|
|
515
|
+
}>;
|
|
516
|
+
sendSms(args: {
|
|
517
|
+
to: string;
|
|
518
|
+
body: string;
|
|
519
|
+
}): Promise<{
|
|
520
|
+
sent: true;
|
|
521
|
+
sid: string;
|
|
522
|
+
}>;
|
|
523
|
+
startOutboundCall(args: {
|
|
524
|
+
to: string;
|
|
525
|
+
}): Promise<{
|
|
526
|
+
callSid: string;
|
|
527
|
+
status: string;
|
|
528
|
+
}>;
|
|
529
|
+
getWhatsAppSession(to: string): Promise<{
|
|
530
|
+
active: boolean;
|
|
531
|
+
expiresAt?: string;
|
|
532
|
+
}>;
|
|
533
|
+
sendWhatsAppMessage(args: {
|
|
534
|
+
to: string;
|
|
535
|
+
body: string;
|
|
536
|
+
}): Promise<{
|
|
537
|
+
sent: true;
|
|
538
|
+
sid: string;
|
|
539
|
+
}>;
|
|
540
|
+
sendWhatsAppTemplate(args: {
|
|
541
|
+
to: string;
|
|
542
|
+
contentSid: string;
|
|
543
|
+
contentVariables: Record<string, string>;
|
|
544
|
+
bodyPreview?: string;
|
|
545
|
+
}): Promise<{
|
|
546
|
+
sent: true;
|
|
547
|
+
sid: string;
|
|
548
|
+
}>;
|
|
549
|
+
listWhatsAppTemplates(): Promise<{
|
|
550
|
+
templates: WhatsAppTemplate[];
|
|
551
|
+
}>;
|
|
552
|
+
}
|
|
553
|
+
//# sourceMappingURL=mobile.d.ts.map
|
|
554
|
+
//#endregion
|
|
555
|
+
//#region src/domains/remote.d.ts
|
|
556
|
+
interface RemoteSessionInfo {
|
|
557
|
+
sessionId: string;
|
|
558
|
+
agentId: string;
|
|
559
|
+
surface: "browser" | "terminal";
|
|
560
|
+
status: "agent_driving" | "awaiting_human" | "human_in_control" | "resuming" | "completed" | "expired" | "failed";
|
|
561
|
+
url?: string;
|
|
562
|
+
instructions?: string;
|
|
563
|
+
requestedAt?: string;
|
|
564
|
+
}
|
|
565
|
+
declare class RemoteApi extends ApiBase {
|
|
566
|
+
requestBrowserTakeover(args: {
|
|
567
|
+
instructions: string;
|
|
568
|
+
url?: string;
|
|
569
|
+
conversationId?: string;
|
|
570
|
+
}): Promise<{
|
|
571
|
+
sessionId: string;
|
|
572
|
+
status: string;
|
|
573
|
+
}>;
|
|
574
|
+
getRemoteSession(sessionId: string): Promise<RemoteSessionInfo>;
|
|
575
|
+
completeRemoteSession(sessionId: string): Promise<{
|
|
576
|
+
ok: boolean;
|
|
577
|
+
}>;
|
|
578
|
+
}
|
|
579
|
+
//# sourceMappingURL=remote.d.ts.map
|
|
580
|
+
//#endregion
|
|
581
|
+
//#region src/domains/self.d.ts
|
|
267
582
|
/** Voice settings — core agent config. Mirrors `VoiceConfig` in `@alfe/types`. */
|
|
268
583
|
interface AgentVoiceConfig {
|
|
269
584
|
/** ElevenLabs voice ID; platform default when unset. */
|
|
@@ -305,16 +620,55 @@ interface AgentVoice {
|
|
|
305
620
|
labels: Record<string, string>;
|
|
306
621
|
category: string;
|
|
307
622
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
623
|
+
declare class SelfApi extends ApiBase {
|
|
624
|
+
/** Update the agent's own name and/or voice config. Returns the updated agent. */
|
|
625
|
+
updateSelf(update: {
|
|
626
|
+
name?: string;
|
|
627
|
+
voiceConfig?: AgentVoiceConfig;
|
|
628
|
+
}): Promise<AgentSelf>;
|
|
629
|
+
/**
|
|
630
|
+
* Generate the agent's own avatar from a text prompt. The image is generated,
|
|
631
|
+
* stored, and set on the agent server-side; returns the updated agent.
|
|
632
|
+
*
|
|
633
|
+
* ASYNC (same reason as `generateImage`): avatar gen runs `gpt-image-1`
|
|
634
|
+
* (30–60s) which exceeds the API Gateway 30s ceiling, so this enqueues a job
|
|
635
|
+
* (`POST /agent/avatar/generate` → `jobId`) then polls (`GET /agent/avatar/{jobId}`)
|
|
636
|
+
* until the avatar is set. Signature unchanged — the plugin is unaffected.
|
|
637
|
+
*/
|
|
638
|
+
generateAvatar(args: {
|
|
639
|
+
prompt: string;
|
|
640
|
+
}): Promise<AgentSelf>;
|
|
641
|
+
/**
|
|
642
|
+
* Get a presigned PUT URL to upload a new avatar image. Upload the bytes to
|
|
643
|
+
* `uploadUrl`, then call `finalizeAvatar(s3Key)` to set it on the agent.
|
|
644
|
+
*/
|
|
645
|
+
presignAvatar(args: {
|
|
646
|
+
mimeType: string;
|
|
647
|
+
size: number;
|
|
648
|
+
}): Promise<AgentAvatarPresign>;
|
|
649
|
+
/**
|
|
650
|
+
* Finalize an avatar upload — validates ownership + size, then sets the
|
|
651
|
+
* agent's `avatarUrl` server-side. Returns the updated agent.
|
|
652
|
+
*/
|
|
653
|
+
finalizeAvatar(s3Key: string): Promise<AgentSelf>;
|
|
654
|
+
/** List the platform voice catalogue (ElevenLabs) so the agent can pick its own voice. */
|
|
655
|
+
listVoices(): Promise<{
|
|
656
|
+
voices: AgentVoice[];
|
|
657
|
+
}>;
|
|
658
|
+
}
|
|
659
|
+
//# sourceMappingURL=self.d.ts.map
|
|
660
|
+
//#endregion
|
|
661
|
+
//#region src/domains/voice.d.ts
|
|
662
|
+
/** The ElevenLabs models with a pricing row — the TTS endpoint rejects any other value. */
|
|
663
|
+
type VoiceTtsModel = "eleven_turbo_v2_5" | "eleven_multilingual_v2";
|
|
664
|
+
interface VoiceTtsArgs {
|
|
665
|
+
/** Text to synthesize (1–5000 chars — the endpoint enforces this). */
|
|
666
|
+
text: string;
|
|
667
|
+
/** ElevenLabs voice id; platform default when unset. */
|
|
668
|
+
voiceId?: string;
|
|
669
|
+
/** TTS model; `eleven_turbo_v2_5` (lower latency) when unset. */
|
|
670
|
+
model?: VoiceTtsModel;
|
|
671
|
+
}
|
|
318
672
|
/** Raw synthesized audio plus its PCM framing (from the response headers). */
|
|
319
673
|
interface VoiceTtsResult {
|
|
320
674
|
/** Raw little-endian PCM samples — no container. Wrap in WAV to make a playable file. */
|
|
@@ -337,84 +691,112 @@ interface VoiceSttResult {
|
|
|
337
691
|
/** Deepgram confidence in (0,1]. */
|
|
338
692
|
confidence: number;
|
|
339
693
|
}
|
|
340
|
-
declare class
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
694
|
+
declare class VoiceApi extends ApiBase {
|
|
695
|
+
/**
|
|
696
|
+
* Text-to-speech. Returns raw PCM audio bytes plus their framing — the
|
|
697
|
+
* voice service defaults to 24 kHz / mono / 16-bit. Wrap in a WAV container
|
|
698
|
+
* to produce a playable file. Metered per character against the tenant
|
|
699
|
+
* credit pool server-side; TTS completes regardless of metering outcome.
|
|
700
|
+
*/
|
|
701
|
+
tts(args: VoiceTtsArgs): Promise<VoiceTtsResult>;
|
|
702
|
+
/**
|
|
703
|
+
* Speech-to-text. Accepts raw linear16 (16-bit LE) mono PCM — NOT a WAV or
|
|
704
|
+
* other container (the endpoint transcribes with a fixed linear16 encoding,
|
|
705
|
+
* so a container header would be transcribed as noise). Strip any WAV header
|
|
706
|
+
* and pass `sampleRate` from it before calling. Metered by transcribed
|
|
707
|
+
* duration against the tenant credit pool server-side.
|
|
708
|
+
*/
|
|
709
|
+
stt(args: VoiceSttArgs): Promise<VoiceSttResult>;
|
|
710
|
+
}
|
|
711
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
712
|
+
//#endregion
|
|
713
|
+
//#region src/domains/search.d.ts
|
|
714
|
+
/**
|
|
715
|
+
* The broad-news providers behind the metered `services/news` Lambda. The
|
|
716
|
+
* server validates this with a zod enum; a value outside the union is an
|
|
717
|
+
* unpriceable product, so keep the literal union in lockstep with the service.
|
|
718
|
+
*/
|
|
719
|
+
type NewsProvider = "apitube" | "newsdata";
|
|
720
|
+
/** One normalized article. `sentiment` is provider-shaped (APITube supplies it). */
|
|
721
|
+
interface NewsArticle {
|
|
722
|
+
title: string;
|
|
723
|
+
url: string;
|
|
724
|
+
source: string;
|
|
725
|
+
publishedAt: string;
|
|
726
|
+
snippet: string;
|
|
727
|
+
sentiment?: unknown;
|
|
728
|
+
}
|
|
729
|
+
/** Provider-agnostic result — the server normalizes every adapter to this. */
|
|
730
|
+
interface NewsResult {
|
|
731
|
+
articles: NewsArticle[];
|
|
732
|
+
provider: string;
|
|
733
|
+
}
|
|
734
|
+
declare class SearchApi extends ApiBase {
|
|
735
|
+
searchWeb(params: {
|
|
736
|
+
query: string;
|
|
737
|
+
count?: number;
|
|
738
|
+
offset?: number;
|
|
739
|
+
country?: string;
|
|
740
|
+
freshness?: string;
|
|
741
|
+
}): Promise<unknown>;
|
|
742
|
+
searchImages(params: {
|
|
743
|
+
query: string;
|
|
744
|
+
count?: number;
|
|
745
|
+
}): Promise<unknown>;
|
|
746
|
+
searchNews(params: {
|
|
747
|
+
query: string;
|
|
748
|
+
count?: number;
|
|
749
|
+
freshness?: string;
|
|
750
|
+
}): Promise<unknown>;
|
|
751
|
+
/** Search news across the selected provider's corpus. → POST /agent/news/search */
|
|
752
|
+
newsSearch(params: {
|
|
753
|
+
query: string;
|
|
754
|
+
provider?: NewsProvider;
|
|
755
|
+
source?: string;
|
|
756
|
+
from?: string;
|
|
757
|
+
to?: string;
|
|
758
|
+
language?: string;
|
|
759
|
+
category?: string;
|
|
760
|
+
limit?: number;
|
|
761
|
+
}): Promise<NewsResult>;
|
|
762
|
+
/** Top headlines for the selected provider. → POST /agent/news/headlines */
|
|
763
|
+
newsHeadlines(params?: {
|
|
764
|
+
provider?: NewsProvider;
|
|
765
|
+
category?: string;
|
|
766
|
+
source?: string;
|
|
767
|
+
language?: string;
|
|
768
|
+
limit?: number;
|
|
769
|
+
}): Promise<NewsResult>;
|
|
770
|
+
}
|
|
771
|
+
//# sourceMappingURL=search.d.ts.map
|
|
772
|
+
//#endregion
|
|
773
|
+
//#region src/domains/chat.d.ts
|
|
774
|
+
declare class ChatApi extends ApiBase {
|
|
775
|
+
presignAttachments(files: {
|
|
776
|
+
filename: string;
|
|
777
|
+
mimeType: string;
|
|
363
778
|
size: number;
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
}): Promise<{
|
|
373
|
-
files: SyncFileEntry[];
|
|
374
|
-
}>;
|
|
375
|
-
syncListSessions(): Promise<{
|
|
376
|
-
sessions: SyncSessionEntry[];
|
|
377
|
-
}>;
|
|
378
|
-
syncGetSession(sessionId: string): Promise<SyncSessionContent>;
|
|
379
|
-
syncDeleteFile(filePath: string): Promise<{
|
|
380
|
-
removed: boolean;
|
|
381
|
-
}>;
|
|
382
|
-
sharedListFiles(args: {
|
|
383
|
-
scope: "org" | "team" | "project";
|
|
384
|
-
scopeId: string;
|
|
385
|
-
}): Promise<{
|
|
386
|
-
files: SharedFileEntry[];
|
|
387
|
-
nextCursor: string | null;
|
|
779
|
+
}[]): Promise<{
|
|
780
|
+
attachments: {
|
|
781
|
+
id: string;
|
|
782
|
+
uploadUrl: string;
|
|
783
|
+
downloadUrl: string;
|
|
784
|
+
s3Key: string;
|
|
785
|
+
expiresAt: string;
|
|
786
|
+
}[];
|
|
388
787
|
}>;
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
788
|
+
recordActivity(data: {
|
|
789
|
+
userId?: string;
|
|
790
|
+
channel: string;
|
|
791
|
+
role: "user" | "assistant";
|
|
393
792
|
}): Promise<{
|
|
394
|
-
|
|
395
|
-
expiresIn: number;
|
|
396
|
-
}>;
|
|
397
|
-
listIntegrations(): Promise<IntegrationInstall$1[]>;
|
|
398
|
-
getIntegrationConfig(integrationId: string): Promise<IntegrationConfigResult$1>;
|
|
399
|
-
updateIntegrationConfig(integrationId: string, config: Record<string, unknown>): Promise<void>;
|
|
400
|
-
installIntegration(integrationId: string, options?: {
|
|
401
|
-
version?: string;
|
|
402
|
-
config?: Record<string, unknown>;
|
|
403
|
-
}): Promise<IntegrationInstall$1>;
|
|
404
|
-
removeIntegration(integrationId: string): Promise<IntegrationInstall$1>;
|
|
405
|
-
getOAuthUrl(provider: string, scopes?: string[]): Promise<{
|
|
406
|
-
url: string;
|
|
407
|
-
provider: string;
|
|
408
|
-
expiresIn: number;
|
|
409
|
-
}>;
|
|
410
|
-
getOAuthStatus(provider: string): Promise<{
|
|
411
|
-
provider: string;
|
|
412
|
-
connected: boolean;
|
|
413
|
-
config?: Record<string, string>;
|
|
414
|
-
}>;
|
|
415
|
-
getRegistry(): Promise<{
|
|
416
|
-
integrations: RegistryEntry$1[];
|
|
793
|
+
recorded: boolean;
|
|
417
794
|
}>;
|
|
795
|
+
}
|
|
796
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
797
|
+
//#endregion
|
|
798
|
+
//#region src/domains/connect-credentials.d.ts
|
|
799
|
+
declare class ConnectCredentialsApi extends ApiBase {
|
|
418
800
|
/**
|
|
419
801
|
* Returns every connected Google account for the agent. Multi-account by
|
|
420
802
|
* design — the openclaw-google plugin requires the LLM to pass `email`
|
|
@@ -471,90 +853,27 @@ declare class AgentApiClient {
|
|
|
471
853
|
[key: string]: unknown;
|
|
472
854
|
}>;
|
|
473
855
|
/**
|
|
474
|
-
*
|
|
475
|
-
*
|
|
476
|
-
*
|
|
477
|
-
*
|
|
478
|
-
*
|
|
479
|
-
*
|
|
480
|
-
* endpoint injects — they are never persisted on the connection. `host` is
|
|
481
|
-
* the resolved TLS endpoint (`live.ctraderapi.com` / `demo.ctraderapi.com`)
|
|
482
|
-
* derived from the selected account's live/demo flag.
|
|
856
|
+
* @deprecated Returns a single primary credential blob (legacy "pick-the-
|
|
857
|
+
* default-connection" shape). Use `getGithubAccounts()` for the multi-
|
|
858
|
+
* account shape required by Pattern A — explicit selector args on every
|
|
859
|
+
* tool. Retained because the `@alfe.ai/github-mcp` proxy is the
|
|
860
|
+
* only consumer that knows about Pattern A; legacy env-interpolation
|
|
861
|
+
* callers will keep hitting `/credentials` until they move to the proxy.
|
|
483
862
|
*/
|
|
484
|
-
|
|
863
|
+
getGithubCredentials(): Promise<{
|
|
864
|
+
login: string;
|
|
485
865
|
accessToken: string;
|
|
486
|
-
refreshToken: string;
|
|
487
|
-
accountId: string;
|
|
488
|
-
host: string;
|
|
489
|
-
clientId: string;
|
|
490
|
-
clientSecret: string;
|
|
491
866
|
}>;
|
|
492
867
|
/**
|
|
493
|
-
* Pattern A: multi-account credential fetch for
|
|
868
|
+
* Pattern A: multi-account credential fetch for GitHub.
|
|
494
869
|
*
|
|
495
|
-
*
|
|
496
|
-
*
|
|
497
|
-
*
|
|
498
|
-
* ctid:<userId>` (Phase 1). This aggregates the *trading accounts* across
|
|
499
|
-
* ALL of those Connection rows — each row contributes its `availableAccounts`
|
|
500
|
-
* flattened, and every account carries ITS OWN grant's `accessToken` (the
|
|
501
|
-
* token that authenticates that account against the cTrader Open API). One
|
|
502
|
-
* OAuth grant still covers all accounts under that single login on one shared
|
|
503
|
-
* token; only the `ctidTraderAccountId` and the protobuf socket `host` (live
|
|
504
|
-
* vs demo) differ within a grant. Across grants the tokens differ, so the
|
|
505
|
-
* token is now PER-ACCOUNT rather than hoisted to the top level.
|
|
870
|
+
* Returns every agent-scoped GitHub connection. The caller is expected
|
|
871
|
+
* to require a `login` selector on every credential-touching tool and
|
|
872
|
+
* look up the matching account at dispatch time.
|
|
506
873
|
*
|
|
507
|
-
*
|
|
508
|
-
*
|
|
509
|
-
*
|
|
510
|
-
*
|
|
511
|
-
* `clientId` / `clientSecret` are the SST-sourced GLOBAL app credentials the
|
|
512
|
-
* connect endpoint injects — identical across every Connection row (one
|
|
513
|
-
* cTrader app), never persisted on a connection. We take them from the first
|
|
514
|
-
* row that carries them.
|
|
515
|
-
*
|
|
516
|
-
* Accounts are deduped on `ctidTraderAccountId` first-wins: Spotware ids are
|
|
517
|
-
* globally unique across logins, so a duplicate can only appear if the same
|
|
518
|
-
* account somehow surfaced under two grants — first-wins keeps it
|
|
519
|
-
* deterministic.
|
|
520
|
-
*
|
|
521
|
-
* `accounts` may be empty (no cTrader Connection at all), in which case we
|
|
522
|
-
* return empty creds rather than throwing.
|
|
523
|
-
*/
|
|
524
|
-
getCTraderAccounts(): Promise<{
|
|
525
|
-
accounts: {
|
|
526
|
-
ctidTraderAccountId: string;
|
|
527
|
-
host: string;
|
|
528
|
-
isLive: boolean;
|
|
529
|
-
brokerName?: string;
|
|
530
|
-
accountNumber?: string;
|
|
531
|
-
accessToken: string;
|
|
532
|
-
}[];
|
|
533
|
-
clientId: string;
|
|
534
|
-
clientSecret: string;
|
|
535
|
-
}>;
|
|
536
|
-
/**
|
|
537
|
-
* @deprecated Returns a single primary credential blob (legacy "pick-the-
|
|
538
|
-
* default-connection" shape). Use `getGithubAccounts()` for the multi-
|
|
539
|
-
* account shape required by Pattern A — explicit selector args on every
|
|
540
|
-
* tool. Retained because the `@alfe.ai/github-mcp` proxy is the
|
|
541
|
-
* only consumer that knows about Pattern A; legacy env-interpolation
|
|
542
|
-
* callers will keep hitting `/credentials` until they move to the proxy.
|
|
543
|
-
*/
|
|
544
|
-
getGithubCredentials(): Promise<{
|
|
545
|
-
login: string;
|
|
546
|
-
accessToken: string;
|
|
547
|
-
}>;
|
|
548
|
-
/**
|
|
549
|
-
* Pattern A: multi-account credential fetch for GitHub.
|
|
550
|
-
*
|
|
551
|
-
* Returns every agent-scoped GitHub connection. The caller is expected
|
|
552
|
-
* to require a `login` selector on every credential-touching tool and
|
|
553
|
-
* look up the matching account at dispatch time.
|
|
554
|
-
*
|
|
555
|
-
* GitHub OAuth tokens have no expiry (`tokenLifecycle: "no_expiry"`),
|
|
556
|
-
* so there is intentionally no `refreshGithubAccountToken` method — if
|
|
557
|
-
* a token is revoked the user must re-run the OAuth flow.
|
|
874
|
+
* GitHub OAuth tokens have no expiry (`tokenLifecycle: "no_expiry"`),
|
|
875
|
+
* so there is intentionally no `refreshGithubAccountToken` method — if
|
|
876
|
+
* a token is revoked the user must re-run the OAuth flow.
|
|
558
877
|
*
|
|
559
878
|
* Returned `accounts[i].login` is the GitHub username — the stable
|
|
560
879
|
* cross-session identifier the LLM should pass.
|
|
@@ -570,67 +889,6 @@ declare class AgentApiClient {
|
|
|
570
889
|
scopes: string;
|
|
571
890
|
}[];
|
|
572
891
|
}>;
|
|
573
|
-
/**
|
|
574
|
-
* Pattern A: provider-parameterized multi-account credential fetch for the
|
|
575
|
-
* social connectors (Bluesky, and the approval-gated backlog: X, Meta,
|
|
576
|
-
* Threads, LinkedIn, Pinterest, TikTok, Reddit, YouTube).
|
|
577
|
-
*
|
|
578
|
-
* Unlike the bespoke `getGithubAccounts()` / `getXeroAccounts()` shapes,
|
|
579
|
-
* this returns a UNIFORM normalized account shape so `@alfe.ai/social-mcp`'s
|
|
580
|
-
* shared driver can require a single `account` selector on every
|
|
581
|
-
* credential-touching tool regardless of platform. The backend
|
|
582
|
-
* `api-agents/{provider}/accounts` route is already provider-generic; this
|
|
583
|
-
* is the client-side normalization the plan (`do-we-need-any-moonlit-toucan`
|
|
584
|
-
* Phase 0, step 5) calls for.
|
|
585
|
-
*
|
|
586
|
-
* `accountIdentifier` is the stable per-account selector the LLM should
|
|
587
|
-
* pass back (for Bluesky: the account DID). `accessToken` carries whatever
|
|
588
|
-
* the provider's `buildCredentialsResponse` bundles (for Bluesky: the JSON
|
|
589
|
-
* session bundle — the driver parses the `accessJwt` out of it, or reads the
|
|
590
|
-
* top-level `accessJwt` from `providerMetadata`-adjacent fields). Everything
|
|
591
|
-
* else the driver needs for routing (handle, pdsHost, did, …) is on
|
|
592
|
-
* `providerMetadata`.
|
|
593
|
-
*
|
|
594
|
-
* Token refresh is delegated to connect (never done in-plugin) via the
|
|
595
|
-
* per-account route `POST /agent/connect/{provider}/accounts/{accountIdentifier}/refresh`
|
|
596
|
-
* — call `refreshSocialAccount(provider, accountIdentifier)`. (The non-account
|
|
597
|
-
* `POST /agent/connect/{provider}/refresh` route refreshes the provider's
|
|
598
|
-
* PRIMARY connection, which is wrong under multi-account Pattern A.)
|
|
599
|
-
*/
|
|
600
|
-
getSocialAccounts(provider: string): Promise<{
|
|
601
|
-
provider: string;
|
|
602
|
-
accounts: {
|
|
603
|
-
connectionId: string;
|
|
604
|
-
accountIdentifier: string;
|
|
605
|
-
displayName: string | null;
|
|
606
|
-
accessToken: string;
|
|
607
|
-
providerMetadata: Record<string, unknown>;
|
|
608
|
-
connectedAt: string;
|
|
609
|
-
}[];
|
|
610
|
-
}>;
|
|
611
|
-
/**
|
|
612
|
-
* Pattern A: refresh a specific social Connection by its stable
|
|
613
|
-
* `accountIdentifier` (for Bluesky: the account DID) via the
|
|
614
|
-
* provider-generic per-account refresh route. The counterpart to
|
|
615
|
-
* `getSocialAccounts(provider)`; `@alfe.ai/social-mcp` calls this on a
|
|
616
|
-
* 401/ExpiredToken from the platform PDS/API, then re-fetches accounts to
|
|
617
|
-
* pick up the rotated bundle.
|
|
618
|
-
*
|
|
619
|
-
* Refresh itself is ALWAYS delegated to connect — the plugin never calls
|
|
620
|
-
* the platform's own refresh XRPC (e.g. `com.atproto.server.refreshSession`)
|
|
621
|
-
* because connect owns the encrypted refresh token + rotation persistence
|
|
622
|
-
* (Bluesky rotates the refreshJwt; a missed rotation kills the connection
|
|
623
|
-
* after one refresh). The returned `accessToken` is whatever the provider's
|
|
624
|
-
* `refreshToken` hook re-bundled (for Bluesky: the JSON session bundle with
|
|
625
|
-
* the fresh `accessJwt`) — callers typically ignore it and re-fetch via
|
|
626
|
-
* `getSocialAccounts` for a consistent shape.
|
|
627
|
-
*/
|
|
628
|
-
refreshSocialAccount(provider: string, accountIdentifier: string): Promise<{
|
|
629
|
-
accountIdentifier: string;
|
|
630
|
-
accessToken: string;
|
|
631
|
-
accessTokenExpiresAt: string;
|
|
632
|
-
expiresAt: string;
|
|
633
|
-
}>;
|
|
634
892
|
/**
|
|
635
893
|
* @deprecated Returns a single primary credential blob (legacy "pick-the-
|
|
636
894
|
* default-connection" shape). Use `getXeroAccounts()` for the multi-
|
|
@@ -866,67 +1124,6 @@ declare class AgentApiClient {
|
|
|
866
1124
|
accessTokenExpiresAt: string;
|
|
867
1125
|
expiresAt: string;
|
|
868
1126
|
}>;
|
|
869
|
-
/**
|
|
870
|
-
* @deprecated Returns a single primary credential blob. Use
|
|
871
|
-
* `getShopifyAccounts()` for the multi-account shape required by Pattern A
|
|
872
|
-
* (`@alfe.ai/shopify-mcp` keys per-shop on the myshopify domain).
|
|
873
|
-
*/
|
|
874
|
-
getShopifyCredentials(): Promise<{
|
|
875
|
-
accessToken: string;
|
|
876
|
-
shopDomain: string;
|
|
877
|
-
shopGid: string;
|
|
878
|
-
shopName: string;
|
|
879
|
-
apiVersion: string;
|
|
880
|
-
}>;
|
|
881
|
-
/**
|
|
882
|
-
* Pattern A: multi-account credential fetch for Shopify. Returns every
|
|
883
|
-
* agent-scoped Shopify Connection. One OAuth grant maps to one store, so the
|
|
884
|
-
* stable per-call selector is the store's myshopify domain (`shopDomain`),
|
|
885
|
-
* NOT `accountIdentifier` — the connect provider keys `accountIdentifier` on
|
|
886
|
-
* the immutable shop GID (falling back to the domain), so `shopDomain` is the
|
|
887
|
-
* value the LLM passes and the plugin routes on.
|
|
888
|
-
*
|
|
889
|
-
* Each entry is shaped by the connect provider's `buildCredentialsResponse`:
|
|
890
|
-
* `{ accessToken, shopDomain, shopGid, shopName, apiVersion }` — offline
|
|
891
|
-
* Shopify tokens never expire, so there is NO token / expiry field and no
|
|
892
|
-
* refresh method (unlike Salesforce). The GraphQL Admin API authenticates
|
|
893
|
-
* purely on `X-Shopify-Access-Token`; no client credentials are on the wire.
|
|
894
|
-
*/
|
|
895
|
-
getShopifyAccounts(): Promise<{
|
|
896
|
-
accounts: {
|
|
897
|
-
connectionId: string;
|
|
898
|
-
accountIdentifier: string;
|
|
899
|
-
displayName: string | null;
|
|
900
|
-
connectedAt: string;
|
|
901
|
-
accessToken: string;
|
|
902
|
-
shopDomain: string;
|
|
903
|
-
shopGid: string;
|
|
904
|
-
shopName: string;
|
|
905
|
-
apiVersion: string;
|
|
906
|
-
}[];
|
|
907
|
-
}>;
|
|
908
|
-
/**
|
|
909
|
-
* Disconnects one connected Microsoft 365 account for the agent, by its
|
|
910
|
-
* `accountIdentifier`. Hits the generic per-account disconnect route
|
|
911
|
-
* (`DELETE /agent/connect/microsoft/accounts/{accountIdentifier}`), which
|
|
912
|
-
* resolves across the agent's full effective scope chain and deletes the
|
|
913
|
-
* matching Connection row. Returns the remaining accounts.
|
|
914
|
-
*
|
|
915
|
-
* IMPORTANT: pass the `accountIdentifier` from `getMicrosoftAccounts()`, NOT
|
|
916
|
-
* a synthesised email. For Microsoft, `accountIdentifier` is the user's email
|
|
917
|
-
* only when the Graph profile fetch succeeded at connect time; it falls back
|
|
918
|
-
* to the Azure tenant id (`tid` claim) otherwise. The backend matches on
|
|
919
|
-
* `accountIdentifier` exactly, so passing an email would 404 on those
|
|
920
|
-
* fallback-identifier accounts. (This is why the param is not named `email`,
|
|
921
|
-
* unlike `disconnectGoogleAccount` where the identifier is always the email.)
|
|
922
|
-
*/
|
|
923
|
-
disconnectMicrosoftAccount(accountIdentifier: string): Promise<{
|
|
924
|
-
accounts: {
|
|
925
|
-
accountIdentifier: string;
|
|
926
|
-
displayName?: string;
|
|
927
|
-
connectedAt?: string;
|
|
928
|
-
}[];
|
|
929
|
-
}>;
|
|
930
1127
|
/**
|
|
931
1128
|
* Pattern A: multi-account credential fetch for Microsoft 365.
|
|
932
1129
|
*
|
|
@@ -977,242 +1174,213 @@ declare class AgentApiClient {
|
|
|
977
1174
|
accessTokenExpiresAt: string;
|
|
978
1175
|
expiresAt: string;
|
|
979
1176
|
}>;
|
|
980
|
-
getTeamsCredentials(): Promise<{
|
|
981
|
-
agentId: string;
|
|
982
|
-
tenantId: string;
|
|
983
|
-
azureAppId: string;
|
|
984
|
-
azureBotId: string;
|
|
985
|
-
azureClientSecret: string;
|
|
986
|
-
botDisplayName?: string;
|
|
987
|
-
teamsTenantId?: string;
|
|
988
|
-
serviceUrl?: string;
|
|
989
|
-
}>;
|
|
990
|
-
sendTeamsMessage(data: {
|
|
991
|
-
conversationId: string;
|
|
992
|
-
text?: string;
|
|
993
|
-
adaptiveCard?: Record<string, unknown>;
|
|
994
|
-
}): Promise<{
|
|
995
|
-
ok: boolean;
|
|
996
|
-
activityId: string;
|
|
997
|
-
}>;
|
|
998
|
-
listTeamsChannels(): Promise<{
|
|
999
|
-
channels: {
|
|
1000
|
-
id: string;
|
|
1001
|
-
name: string;
|
|
1002
|
-
description?: string;
|
|
1003
|
-
}[];
|
|
1004
|
-
}>;
|
|
1005
|
-
presignAttachments(files: {
|
|
1006
|
-
filename: string;
|
|
1007
|
-
mimeType: string;
|
|
1008
|
-
size: number;
|
|
1009
|
-
}[]): Promise<{
|
|
1010
|
-
attachments: {
|
|
1011
|
-
id: string;
|
|
1012
|
-
uploadUrl: string;
|
|
1013
|
-
downloadUrl: string;
|
|
1014
|
-
s3Key: string;
|
|
1015
|
-
expiresAt: string;
|
|
1016
|
-
}[];
|
|
1017
|
-
}>;
|
|
1018
1177
|
/**
|
|
1019
|
-
*
|
|
1020
|
-
*
|
|
1021
|
-
* `
|
|
1178
|
+
* Disconnects one connected Microsoft 365 account for the agent, by its
|
|
1179
|
+
* `accountIdentifier`. Hits the generic per-account disconnect route
|
|
1180
|
+
* (`DELETE /agent/connect/microsoft/accounts/{accountIdentifier}`), which
|
|
1181
|
+
* resolves across the agent's full effective scope chain and deletes the
|
|
1182
|
+
* matching Connection row. Returns the remaining accounts.
|
|
1022
1183
|
*
|
|
1023
|
-
*
|
|
1024
|
-
*
|
|
1025
|
-
*
|
|
1026
|
-
*
|
|
1027
|
-
*
|
|
1184
|
+
* IMPORTANT: pass the `accountIdentifier` from `getMicrosoftAccounts()`, NOT
|
|
1185
|
+
* a synthesised email. For Microsoft, `accountIdentifier` is the user's email
|
|
1186
|
+
* only when the Graph profile fetch succeeded at connect time; it falls back
|
|
1187
|
+
* to the Azure tenant id (`tid` claim) otherwise. The backend matches on
|
|
1188
|
+
* `accountIdentifier` exactly, so passing an email would 404 on those
|
|
1189
|
+
* fallback-identifier accounts. (This is why the param is not named `email`,
|
|
1190
|
+
* unlike `disconnectGoogleAccount` where the identifier is always the email.)
|
|
1028
1191
|
*/
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
imageUrl: string;
|
|
1036
|
-
model: string;
|
|
1037
|
-
}>;
|
|
1038
|
-
recordActivity(data: {
|
|
1039
|
-
userId?: string;
|
|
1040
|
-
channel: string;
|
|
1041
|
-
role: "user" | "assistant";
|
|
1042
|
-
}): Promise<{
|
|
1043
|
-
recorded: boolean;
|
|
1192
|
+
disconnectMicrosoftAccount(accountIdentifier: string): Promise<{
|
|
1193
|
+
accounts: {
|
|
1194
|
+
accountIdentifier: string;
|
|
1195
|
+
displayName?: string;
|
|
1196
|
+
connectedAt?: string;
|
|
1197
|
+
}[];
|
|
1044
1198
|
}>;
|
|
1045
|
-
/** Update the agent's own name and/or voice config. Returns the updated agent. */
|
|
1046
|
-
updateSelf(update: {
|
|
1047
|
-
name?: string;
|
|
1048
|
-
voiceConfig?: AgentVoiceConfig;
|
|
1049
|
-
}): Promise<AgentSelf>;
|
|
1050
1199
|
/**
|
|
1051
|
-
*
|
|
1052
|
-
*
|
|
1053
|
-
*
|
|
1054
|
-
*
|
|
1055
|
-
*
|
|
1056
|
-
*
|
|
1057
|
-
*
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
prompt: string;
|
|
1061
|
-
}): Promise<AgentSelf>;
|
|
1062
|
-
/**
|
|
1063
|
-
* Get a presigned PUT URL to upload a new avatar image. Upload the bytes to
|
|
1064
|
-
* `uploadUrl`, then call `finalizeAvatar(s3Key)` to set it on the agent.
|
|
1200
|
+
* Resolve the primary cTrader Connection's credentials for the calling
|
|
1201
|
+
* agent. Unlike most providers, the cTrader Open API needs app-level auth
|
|
1202
|
+
* (`clientId` + `clientSecret`) AND account auth (`accessToken` +
|
|
1203
|
+
* `accountId`) on the socket, so `@alfe.ai/ctrader-mcp` self-fetches the
|
|
1204
|
+
* full set here at startup (the atlassian/google pattern). `clientId` /
|
|
1205
|
+
* `clientSecret` are the SST-sourced global app credentials the connect
|
|
1206
|
+
* endpoint injects — they are never persisted on the connection. `host` is
|
|
1207
|
+
* the resolved TLS endpoint (`live.ctraderapi.com` / `demo.ctraderapi.com`)
|
|
1208
|
+
* derived from the selected account's live/demo flag.
|
|
1065
1209
|
*/
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1210
|
+
getCTraderCredentials(): Promise<{
|
|
1211
|
+
accessToken: string;
|
|
1212
|
+
refreshToken: string;
|
|
1213
|
+
accountId: string;
|
|
1214
|
+
host: string;
|
|
1215
|
+
clientId: string;
|
|
1216
|
+
clientSecret: string;
|
|
1217
|
+
}>;
|
|
1070
1218
|
/**
|
|
1071
|
-
*
|
|
1072
|
-
*
|
|
1219
|
+
* Pattern A: multi-account credential fetch for cTrader.
|
|
1220
|
+
*
|
|
1221
|
+
* Unlike atlassian/salesforce (one Connection row per account/site), a
|
|
1222
|
+
* cTrader is MULTI-grant per agent: an agent may connect several distinct
|
|
1223
|
+
* cTrader logins, each its own Connection row keyed on `accountIdentifier =
|
|
1224
|
+
* ctid:<userId>` (Phase 1). This aggregates the *trading accounts* across
|
|
1225
|
+
* ALL of those Connection rows — each row contributes its `availableAccounts`
|
|
1226
|
+
* flattened, and every account carries ITS OWN grant's `accessToken` (the
|
|
1227
|
+
* token that authenticates that account against the cTrader Open API). One
|
|
1228
|
+
* OAuth grant still covers all accounts under that single login on one shared
|
|
1229
|
+
* token; only the `ctidTraderAccountId` and the protobuf socket `host` (live
|
|
1230
|
+
* vs demo) differ within a grant. Across grants the tokens differ, so the
|
|
1231
|
+
* token is now PER-ACCOUNT rather than hoisted to the top level.
|
|
1232
|
+
*
|
|
1233
|
+
* `host` per account is derived from the account's `isLive` flag
|
|
1234
|
+
* (`live.ctraderapi.com` / `demo.ctraderapi.com`) — the same mapping the
|
|
1235
|
+
* connect provider applies server-side when an account is auto-selected.
|
|
1236
|
+
*
|
|
1237
|
+
* `clientId` / `clientSecret` are the SST-sourced GLOBAL app credentials the
|
|
1238
|
+
* connect endpoint injects — identical across every Connection row (one
|
|
1239
|
+
* cTrader app), never persisted on a connection. We take them from the first
|
|
1240
|
+
* row that carries them.
|
|
1241
|
+
*
|
|
1242
|
+
* Accounts are deduped on `ctidTraderAccountId` first-wins: Spotware ids are
|
|
1243
|
+
* globally unique across logins, so a duplicate can only appear if the same
|
|
1244
|
+
* account somehow surfaced under two grants — first-wins keeps it
|
|
1245
|
+
* deterministic.
|
|
1246
|
+
*
|
|
1247
|
+
* `accounts` may be empty (no cTrader Connection at all), in which case we
|
|
1248
|
+
* return empty creds rather than throwing.
|
|
1073
1249
|
*/
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1250
|
+
getCTraderAccounts(): Promise<{
|
|
1251
|
+
accounts: {
|
|
1252
|
+
ctidTraderAccountId: string;
|
|
1253
|
+
host: string;
|
|
1254
|
+
isLive: boolean;
|
|
1255
|
+
brokerName?: string;
|
|
1256
|
+
accountNumber?: string;
|
|
1257
|
+
accessToken: string;
|
|
1258
|
+
}[];
|
|
1259
|
+
clientId: string;
|
|
1260
|
+
clientSecret: string;
|
|
1078
1261
|
}>;
|
|
1079
1262
|
/**
|
|
1080
|
-
*
|
|
1081
|
-
*
|
|
1082
|
-
*
|
|
1083
|
-
* or field it doesn't own. Legacy single-envelope secrets are migrated to
|
|
1084
|
-
* `field#value` rows by the data migration, so call with `fieldKey: "value"`
|
|
1085
|
-
* to reach them.
|
|
1263
|
+
* @deprecated Returns a single primary credential blob. Use
|
|
1264
|
+
* `getShopifyAccounts()` for the multi-account shape required by Pattern A
|
|
1265
|
+
* (`@alfe.ai/shopify-mcp` keys per-shop on the myshopify domain).
|
|
1086
1266
|
*/
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1267
|
+
getShopifyCredentials(): Promise<{
|
|
1268
|
+
accessToken: string;
|
|
1269
|
+
shopDomain: string;
|
|
1270
|
+
shopGid: string;
|
|
1271
|
+
shopName: string;
|
|
1272
|
+
apiVersion: string;
|
|
1273
|
+
}>;
|
|
1093
1274
|
/**
|
|
1094
|
-
*
|
|
1095
|
-
*
|
|
1096
|
-
*
|
|
1097
|
-
* `
|
|
1275
|
+
* Pattern A: multi-account credential fetch for Shopify. Returns every
|
|
1276
|
+
* agent-scoped Shopify Connection. One OAuth grant maps to one store, so the
|
|
1277
|
+
* stable per-call selector is the store's myshopify domain (`shopDomain`),
|
|
1278
|
+
* NOT `accountIdentifier` — the connect provider keys `accountIdentifier` on
|
|
1279
|
+
* the immutable shop GID (falling back to the domain), so `shopDomain` is the
|
|
1280
|
+
* value the LLM passes and the plugin routes on.
|
|
1281
|
+
*
|
|
1282
|
+
* Each entry is shaped by the connect provider's `buildCredentialsResponse`:
|
|
1283
|
+
* `{ accessToken, shopDomain, shopGid, shopName, apiVersion }` — offline
|
|
1284
|
+
* Shopify tokens never expire, so there is NO token / expiry field and no
|
|
1285
|
+
* refresh method (unlike Salesforce). The GraphQL Admin API authenticates
|
|
1286
|
+
* purely on `X-Shopify-Access-Token`; no client credentials are on the wire.
|
|
1098
1287
|
*/
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1288
|
+
getShopifyAccounts(): Promise<{
|
|
1289
|
+
accounts: {
|
|
1290
|
+
connectionId: string;
|
|
1291
|
+
accountIdentifier: string;
|
|
1292
|
+
displayName: string | null;
|
|
1293
|
+
connectedAt: string;
|
|
1294
|
+
accessToken: string;
|
|
1295
|
+
shopDomain: string;
|
|
1296
|
+
shopGid: string;
|
|
1297
|
+
shopName: string;
|
|
1298
|
+
apiVersion: string;
|
|
1299
|
+
}[];
|
|
1107
1300
|
}>;
|
|
1108
1301
|
/**
|
|
1109
|
-
*
|
|
1110
|
-
*
|
|
1111
|
-
*
|
|
1112
|
-
*
|
|
1302
|
+
* Pattern A: provider-parameterized multi-account credential fetch for the
|
|
1303
|
+
* social connectors (Bluesky, and the approval-gated backlog: X, Meta,
|
|
1304
|
+
* Threads, LinkedIn, Pinterest, TikTok, Reddit, YouTube).
|
|
1305
|
+
*
|
|
1306
|
+
* Unlike the bespoke `getGithubAccounts()` / `getXeroAccounts()` shapes,
|
|
1307
|
+
* this returns a UNIFORM normalized account shape so `@alfe.ai/social-mcp`'s
|
|
1308
|
+
* shared driver can require a single `account` selector on every
|
|
1309
|
+
* credential-touching tool regardless of platform. The backend
|
|
1310
|
+
* `api-agents/{provider}/accounts` route is already provider-generic; this
|
|
1311
|
+
* is the client-side normalization the plan (`do-we-need-any-moonlit-toucan`
|
|
1312
|
+
* Phase 0, step 5) calls for.
|
|
1313
|
+
*
|
|
1314
|
+
* `accountIdentifier` is the stable per-account selector the LLM should
|
|
1315
|
+
* pass back (for Bluesky: the account DID). `accessToken` carries whatever
|
|
1316
|
+
* the provider's `buildCredentialsResponse` bundles (for Bluesky: the JSON
|
|
1317
|
+
* session bundle — the driver parses the `accessJwt` out of it, or reads the
|
|
1318
|
+
* top-level `accessJwt` from `providerMetadata`-adjacent fields). Everything
|
|
1319
|
+
* else the driver needs for routing (handle, pdsHost, did, …) is on
|
|
1320
|
+
* `providerMetadata`.
|
|
1321
|
+
*
|
|
1322
|
+
* Token refresh is delegated to connect (never done in-plugin) via the
|
|
1323
|
+
* per-account route `POST /agent/connect/{provider}/accounts/{accountIdentifier}/refresh`
|
|
1324
|
+
* — call `refreshSocialAccount(provider, accountIdentifier)`. (The non-account
|
|
1325
|
+
* `POST /agent/connect/{provider}/refresh` route refreshes the provider's
|
|
1326
|
+
* PRIMARY connection, which is wrong under multi-account Pattern A.)
|
|
1113
1327
|
*/
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
key: string;
|
|
1124
|
-
format?: FieldFormat$1;
|
|
1125
|
-
sensitivity: FieldSensitivity$1;
|
|
1126
|
-
value?: string;
|
|
1127
|
-
envelope?: EncryptedEnvelopeV1$1;
|
|
1328
|
+
getSocialAccounts(provider: string): Promise<{
|
|
1329
|
+
provider: string;
|
|
1330
|
+
accounts: {
|
|
1331
|
+
connectionId: string;
|
|
1332
|
+
accountIdentifier: string;
|
|
1333
|
+
displayName: string | null;
|
|
1334
|
+
accessToken: string;
|
|
1335
|
+
providerMetadata: Record<string, unknown>;
|
|
1336
|
+
connectedAt: string;
|
|
1128
1337
|
}[];
|
|
1129
|
-
reason?: string;
|
|
1130
|
-
}): Promise<SecretAggregate$1>;
|
|
1131
|
-
/** Fetch the secret aggregate plus per-field encrypted envelopes. */
|
|
1132
|
-
getSecret(args: {
|
|
1133
|
-
scope: SecretScope$1;
|
|
1134
|
-
scopeId: string;
|
|
1135
|
-
secretId: string;
|
|
1136
|
-
}): Promise<{
|
|
1137
|
-
aggregate: SecretAggregate$1;
|
|
1138
|
-
envelopes: FieldEnvelope$1[];
|
|
1139
1338
|
}>;
|
|
1140
|
-
/**
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
sensitivity: FieldSensitivity$1;
|
|
1163
|
-
format?: FieldFormat$1;
|
|
1164
|
-
value?: string;
|
|
1165
|
-
envelope?: EncryptedEnvelopeV1$1;
|
|
1166
|
-
reason?: string;
|
|
1167
|
-
}): Promise<{
|
|
1168
|
-
fieldKey: string;
|
|
1169
|
-
rotated: boolean;
|
|
1339
|
+
/**
|
|
1340
|
+
* Pattern A: refresh a specific social Connection by its stable
|
|
1341
|
+
* `accountIdentifier` (for Bluesky: the account DID) via the
|
|
1342
|
+
* provider-generic per-account refresh route. The counterpart to
|
|
1343
|
+
* `getSocialAccounts(provider)`; `@alfe.ai/social-mcp` calls this on a
|
|
1344
|
+
* 401/ExpiredToken from the platform PDS/API, then re-fetches accounts to
|
|
1345
|
+
* pick up the rotated bundle.
|
|
1346
|
+
*
|
|
1347
|
+
* Refresh itself is ALWAYS delegated to connect — the plugin never calls
|
|
1348
|
+
* the platform's own refresh XRPC (e.g. `com.atproto.server.refreshSession`)
|
|
1349
|
+
* because connect owns the encrypted refresh token + rotation persistence
|
|
1350
|
+
* (Bluesky rotates the refreshJwt; a missed rotation kills the connection
|
|
1351
|
+
* after one refresh). The returned `accessToken` is whatever the provider's
|
|
1352
|
+
* `refreshToken` hook re-bundled (for Bluesky: the JSON session bundle with
|
|
1353
|
+
* the fresh `accessJwt`) — callers typically ignore it and re-fetch via
|
|
1354
|
+
* `getSocialAccounts` for a consistent shape.
|
|
1355
|
+
*/
|
|
1356
|
+
refreshSocialAccount(provider: string, accountIdentifier: string): Promise<{
|
|
1357
|
+
accountIdentifier: string;
|
|
1358
|
+
accessToken: string;
|
|
1359
|
+
accessTokenExpiresAt: string;
|
|
1360
|
+
expiresAt: string;
|
|
1170
1361
|
}>;
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
scopeId: string;
|
|
1182
|
-
secretId: string;
|
|
1183
|
-
secretName?: string;
|
|
1184
|
-
description?: string;
|
|
1185
|
-
tags?: string[];
|
|
1186
|
-
category?: SecretCategory$1;
|
|
1187
|
-
reason?: string;
|
|
1188
|
-
}): Promise<SecretAggregate$1>;
|
|
1189
|
-
/** List metadata for secrets in a scope. Optional filters route through the byFacet GSI. */
|
|
1190
|
-
listSecrets(args: {
|
|
1191
|
-
scope: SecretScope$1;
|
|
1192
|
-
scopeId: string;
|
|
1193
|
-
category?: SecretCategory$1;
|
|
1194
|
-
tag?: string;
|
|
1195
|
-
fieldKey?: string;
|
|
1196
|
-
}): Promise<SecretMetadata$1[]>;
|
|
1197
|
-
/** Bounded changelog read — metadata-only audit entries. */
|
|
1198
|
-
getSecretHistory(args: {
|
|
1199
|
-
scope: SecretScope$1;
|
|
1200
|
-
scopeId: string;
|
|
1201
|
-
secretId: string;
|
|
1202
|
-
limit?: number;
|
|
1203
|
-
cursor?: string;
|
|
1204
|
-
}): Promise<{
|
|
1205
|
-
entries: ChangelogEntry$1[];
|
|
1206
|
-
nextCursor?: string;
|
|
1362
|
+
}
|
|
1363
|
+
//# sourceMappingURL=connect-credentials.d.ts.map
|
|
1364
|
+
//#endregion
|
|
1365
|
+
//#region src/domains/database.d.ts
|
|
1366
|
+
declare class DatabaseApi extends ApiBase {
|
|
1367
|
+
registerDatabaseCredentials(): Promise<{
|
|
1368
|
+
connectionString: string;
|
|
1369
|
+
username: string;
|
|
1370
|
+
password: string;
|
|
1371
|
+
databases: string[];
|
|
1207
1372
|
}>;
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1373
|
+
reportDatabaseAudit(entry: {
|
|
1374
|
+
database: string;
|
|
1375
|
+
collection: string;
|
|
1376
|
+
operation: string;
|
|
1377
|
+
summary?: string;
|
|
1213
1378
|
}): Promise<void>;
|
|
1214
|
-
|
|
1215
|
-
|
|
1379
|
+
}
|
|
1380
|
+
//# sourceMappingURL=database.d.ts.map
|
|
1381
|
+
//#endregion
|
|
1382
|
+
//#region src/domains/identity.d.ts
|
|
1383
|
+
declare class IdentityApi extends ApiBase {
|
|
1216
1384
|
/**
|
|
1217
1385
|
* Returns the calling agent's own identity context — `{ agentId, tenantId }`
|
|
1218
1386
|
* decoded server-side from the agent API token. Used by the
|
|
@@ -1375,6 +1543,62 @@ declare class AgentApiClient {
|
|
|
1375
1543
|
identityId: string | null;
|
|
1376
1544
|
status: string;
|
|
1377
1545
|
}>;
|
|
1546
|
+
}
|
|
1547
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
1548
|
+
//#endregion
|
|
1549
|
+
//#region src/domains/images.d.ts
|
|
1550
|
+
declare class ImagesApi extends ApiBase {
|
|
1551
|
+
/**
|
|
1552
|
+
* Generate an image from a text prompt and get back a STABLE, public URL
|
|
1553
|
+
* (served from the agent-assets CDN — it does not expire). Embed the returned
|
|
1554
|
+
* `imageUrl` in a reply as markdown to show it to the user.
|
|
1555
|
+
*
|
|
1556
|
+
* ASYNC: `gpt-image-1` routinely runs 30–60s, which exceeds the API Gateway
|
|
1557
|
+
* 30s ceiling, so this enqueues a job (`POST /agent/images/generate` →
|
|
1558
|
+
* `jobId`) then polls (`GET /agent/images/{jobId}`) until it completes. The
|
|
1559
|
+
* worker's real failure message (e.g. an unsupported `size`) surfaces via the
|
|
1560
|
+
* job's `error` field.
|
|
1561
|
+
*/
|
|
1562
|
+
generateImage(args: {
|
|
1563
|
+
prompt: string;
|
|
1564
|
+
model?: string;
|
|
1565
|
+
size?: string;
|
|
1566
|
+
quality?: string;
|
|
1567
|
+
}): Promise<{
|
|
1568
|
+
imageUrl: string;
|
|
1569
|
+
model: string;
|
|
1570
|
+
}>;
|
|
1571
|
+
}
|
|
1572
|
+
//# sourceMappingURL=images.d.ts.map
|
|
1573
|
+
//#endregion
|
|
1574
|
+
//#region src/domains/integrations.d.ts
|
|
1575
|
+
declare class IntegrationsApi extends ApiBase {
|
|
1576
|
+
listIntegrations(): Promise<IntegrationInstall$1[]>;
|
|
1577
|
+
getIntegrationConfig(integrationId: string): Promise<IntegrationConfigResult$1>;
|
|
1578
|
+
updateIntegrationConfig(integrationId: string, config: Record<string, unknown>): Promise<void>;
|
|
1579
|
+
installIntegration(integrationId: string, options?: {
|
|
1580
|
+
version?: string;
|
|
1581
|
+
config?: Record<string, unknown>;
|
|
1582
|
+
}): Promise<IntegrationInstall$1>;
|
|
1583
|
+
removeIntegration(integrationId: string): Promise<IntegrationInstall$1>;
|
|
1584
|
+
getOAuthUrl(provider: string, scopes?: string[]): Promise<{
|
|
1585
|
+
url: string;
|
|
1586
|
+
provider: string;
|
|
1587
|
+
expiresIn: number;
|
|
1588
|
+
}>;
|
|
1589
|
+
getOAuthStatus(provider: string): Promise<{
|
|
1590
|
+
provider: string;
|
|
1591
|
+
connected: boolean;
|
|
1592
|
+
config?: Record<string, string>;
|
|
1593
|
+
}>;
|
|
1594
|
+
getRegistry(): Promise<{
|
|
1595
|
+
integrations: RegistryEntry$1[];
|
|
1596
|
+
}>;
|
|
1597
|
+
}
|
|
1598
|
+
//# sourceMappingURL=integrations.d.ts.map
|
|
1599
|
+
//#endregion
|
|
1600
|
+
//#region src/domains/memory.d.ts
|
|
1601
|
+
declare class MemoryApi extends ApiBase {
|
|
1378
1602
|
memorySearch(query: string, opts?: {
|
|
1379
1603
|
limit?: number;
|
|
1380
1604
|
topic?: string;
|
|
@@ -1451,196 +1675,216 @@ declare class AgentApiClient {
|
|
|
1451
1675
|
vectorCount: number;
|
|
1452
1676
|
tripleCount: number;
|
|
1453
1677
|
storageEstimateBytes: number;
|
|
1454
|
-
lastIngestionAt?: string;
|
|
1455
|
-
}>;
|
|
1456
|
-
memoryLearn(args: {
|
|
1457
|
-
text: string;
|
|
1458
|
-
source?: string;
|
|
1459
|
-
sourceType?: "file" | "url" | "inline";
|
|
1460
|
-
metadata?: {
|
|
1461
|
-
sessionId?: string;
|
|
1462
|
-
channelId?: string;
|
|
1463
|
-
userName?: string;
|
|
1464
|
-
};
|
|
1465
|
-
}): Promise<{
|
|
1466
|
-
memoriesStored: number;
|
|
1467
|
-
triplesStored: number;
|
|
1468
|
-
chunks: number;
|
|
1469
|
-
source?: string;
|
|
1470
|
-
}>;
|
|
1471
|
-
memoryBootstrapStatus(): Promise<{
|
|
1472
|
-
synced: boolean;
|
|
1473
|
-
syncedAt?: string;
|
|
1474
|
-
sessionsBackfillSynced?: boolean;
|
|
1475
|
-
sessionsBackfillSyncedAt?: string;
|
|
1476
|
-
}>;
|
|
1477
|
-
memoryBootstrapStatusMark(scope?: "files" | "sessions"): Promise<{
|
|
1478
|
-
synced: true;
|
|
1479
|
-
syncedAt: string;
|
|
1480
|
-
}>;
|
|
1481
|
-
sendSms(args: {
|
|
1482
|
-
to: string;
|
|
1483
|
-
body: string;
|
|
1484
|
-
}): Promise<{
|
|
1485
|
-
sent: boolean;
|
|
1486
|
-
sid: string;
|
|
1487
|
-
}>;
|
|
1488
|
-
searchWeb(params: {
|
|
1489
|
-
query: string;
|
|
1490
|
-
count?: number;
|
|
1491
|
-
offset?: number;
|
|
1492
|
-
country?: string;
|
|
1493
|
-
freshness?: string;
|
|
1494
|
-
}): Promise<unknown>;
|
|
1495
|
-
searchImages(params: {
|
|
1496
|
-
query: string;
|
|
1497
|
-
count?: number;
|
|
1498
|
-
}): Promise<unknown>;
|
|
1499
|
-
searchNews(params: {
|
|
1500
|
-
query: string;
|
|
1501
|
-
count?: number;
|
|
1502
|
-
freshness?: string;
|
|
1503
|
-
}): Promise<unknown>;
|
|
1504
|
-
/** Search news across the selected provider's corpus. → POST /agent/news/search */
|
|
1505
|
-
newsSearch(params: {
|
|
1506
|
-
query: string;
|
|
1507
|
-
provider?: NewsProvider;
|
|
1508
|
-
source?: string;
|
|
1509
|
-
from?: string;
|
|
1510
|
-
to?: string;
|
|
1511
|
-
language?: string;
|
|
1512
|
-
category?: string;
|
|
1513
|
-
limit?: number;
|
|
1514
|
-
}): Promise<NewsResult>;
|
|
1515
|
-
/** Top headlines for the selected provider. → POST /agent/news/headlines */
|
|
1516
|
-
newsHeadlines(params?: {
|
|
1517
|
-
provider?: NewsProvider;
|
|
1518
|
-
category?: string;
|
|
1519
|
-
source?: string;
|
|
1520
|
-
language?: string;
|
|
1521
|
-
limit?: number;
|
|
1522
|
-
}): Promise<NewsResult>;
|
|
1523
|
-
/**
|
|
1524
|
-
* Semantic search across the agent's member scopes. Fan-out is gated
|
|
1525
|
-
* server-side by `listScopes` set-inclusion (fail-closed). Pass
|
|
1526
|
-
* `scopeType` + `scopeId` to narrow to one scope; a non-member scope
|
|
1527
|
-
* yields empty results (never a cross-scope leak).
|
|
1528
|
-
*/
|
|
1529
|
-
knowledgeSearch(query: string, opts?: {
|
|
1530
|
-
limit?: number;
|
|
1531
|
-
scopeType?: KnowledgeScopeType;
|
|
1532
|
-
scopeId?: string;
|
|
1533
|
-
}): Promise<KnowledgeSearchResult>;
|
|
1534
|
-
/** Enumerate the scopes (org + teams + projects) this agent belongs to. */
|
|
1535
|
-
listScopes(): Promise<{
|
|
1536
|
-
scopes: KnowledgeScope[];
|
|
1678
|
+
lastIngestionAt?: string;
|
|
1537
1679
|
}>;
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1680
|
+
memoryLearn(args: {
|
|
1681
|
+
text: string;
|
|
1682
|
+
source?: string;
|
|
1683
|
+
sourceType?: "file" | "url" | "inline";
|
|
1684
|
+
metadata?: {
|
|
1685
|
+
sessionId?: string;
|
|
1686
|
+
channelId?: string;
|
|
1687
|
+
userName?: string;
|
|
1688
|
+
};
|
|
1544
1689
|
}): Promise<{
|
|
1545
|
-
|
|
1546
|
-
|
|
1690
|
+
memoriesStored: number;
|
|
1691
|
+
triplesStored: number;
|
|
1692
|
+
chunks: number;
|
|
1693
|
+
source?: string;
|
|
1694
|
+
}>;
|
|
1695
|
+
memoryBootstrapStatus(): Promise<{
|
|
1696
|
+
synced: boolean;
|
|
1697
|
+
syncedAt?: string;
|
|
1698
|
+
sessionsBackfillSynced?: boolean;
|
|
1699
|
+
sessionsBackfillSyncedAt?: string;
|
|
1700
|
+
}>;
|
|
1701
|
+
memoryBootstrapStatusMark(scope?: "files" | "sessions"): Promise<{
|
|
1702
|
+
synced: true;
|
|
1703
|
+
syncedAt: string;
|
|
1547
1704
|
}>;
|
|
1705
|
+
}
|
|
1706
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
1707
|
+
//#endregion
|
|
1708
|
+
//#region src/domains/secrets.d.ts
|
|
1709
|
+
declare class SecretsApi extends ApiBase {
|
|
1548
1710
|
/**
|
|
1549
|
-
*
|
|
1550
|
-
*
|
|
1551
|
-
*
|
|
1711
|
+
* Mint a fresh AES-256 data key for a specific (secret, field) pair. The
|
|
1712
|
+
* encryption context is rebuilt server-side from `auth.tenantId` + the body
|
|
1713
|
+
* fields including `fieldKey`; the agent cannot forge context for a scope
|
|
1714
|
+
* or field it doesn't own. Legacy single-envelope secrets are migrated to
|
|
1715
|
+
* `field#value` rows by the data migration, so call with `fieldKey: "value"`
|
|
1716
|
+
* to reach them.
|
|
1552
1717
|
*/
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1718
|
+
generateSecretDataKey(args: {
|
|
1719
|
+
scope: SecretScope$1;
|
|
1720
|
+
scopeId: string;
|
|
1721
|
+
secretId: string;
|
|
1722
|
+
fieldKey: string;
|
|
1723
|
+
}): Promise<GeneratedDataKey$1>;
|
|
1557
1724
|
/**
|
|
1558
|
-
*
|
|
1559
|
-
* `
|
|
1560
|
-
*
|
|
1561
|
-
*
|
|
1562
|
-
* authorKind are server-set from the agent token — never trusted here.
|
|
1725
|
+
* Unwrap a wrapped data key so the agent can decrypt the envelope locally.
|
|
1726
|
+
* `fieldKey` MUST match the value supplied when the data key was generated
|
|
1727
|
+
* (it's bound into KMS encryption context); mismatch fails with
|
|
1728
|
+
* `InvalidCiphertextException`.
|
|
1563
1729
|
*/
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1730
|
+
decryptSecretDataKey(args: {
|
|
1731
|
+
scope: SecretScope$1;
|
|
1732
|
+
scopeId: string;
|
|
1733
|
+
secretId: string;
|
|
1734
|
+
fieldKey: string;
|
|
1735
|
+
dataKeyCiphertext: string;
|
|
1567
1736
|
}): Promise<{
|
|
1568
|
-
|
|
1737
|
+
plaintextKey: string;
|
|
1569
1738
|
}>;
|
|
1570
1739
|
/**
|
|
1571
|
-
*
|
|
1572
|
-
*
|
|
1573
|
-
*
|
|
1574
|
-
*
|
|
1575
|
-
* canonical doc — attributed to this agent — only when a reviewer approves.
|
|
1576
|
-
*/
|
|
1577
|
-
proposeScopeChange(scopeType: KnowledgeScopeType, scopeId: string, input: ProposeScopeChangeInput): Promise<KnowledgeChangeRequest>;
|
|
1578
|
-
/**
|
|
1579
|
-
* List the agent's OWN change requests in a scope (filtered server-side to
|
|
1580
|
-
* this agent as proposer). Pass `status` to narrow to open / approved / etc.
|
|
1740
|
+
* Create a new secret with one or more fields. Encrypted fields must arrive
|
|
1741
|
+
* pre-sealed (the agent has already obtained per-field data keys via
|
|
1742
|
+
* `generateSecretDataKey({ ..., fieldKey })` and AES-encrypted locally).
|
|
1743
|
+
* Plaintext fields ship the value inline.
|
|
1581
1744
|
*/
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1745
|
+
createSecret(args: {
|
|
1746
|
+
scope: SecretScope$1;
|
|
1747
|
+
scopeId: string;
|
|
1748
|
+
secretId: string;
|
|
1749
|
+
secretName: string;
|
|
1750
|
+
category?: SecretCategory$1;
|
|
1751
|
+
description?: string;
|
|
1752
|
+
tags?: string[];
|
|
1753
|
+
fields: {
|
|
1754
|
+
key: string;
|
|
1755
|
+
format?: FieldFormat$1;
|
|
1756
|
+
sensitivity: FieldSensitivity$1;
|
|
1757
|
+
value?: string;
|
|
1758
|
+
envelope?: EncryptedEnvelopeV1$1;
|
|
1759
|
+
}[];
|
|
1760
|
+
reason?: string;
|
|
1761
|
+
}): Promise<SecretAggregate$1>;
|
|
1762
|
+
/** Fetch the secret aggregate plus per-field encrypted envelopes. */
|
|
1763
|
+
getSecret(args: {
|
|
1764
|
+
scope: SecretScope$1;
|
|
1765
|
+
scopeId: string;
|
|
1766
|
+
secretId: string;
|
|
1586
1767
|
}): Promise<{
|
|
1587
|
-
|
|
1588
|
-
|
|
1768
|
+
aggregate: SecretAggregate$1;
|
|
1769
|
+
envelopes: FieldEnvelope$1[];
|
|
1589
1770
|
}>;
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1771
|
+
/** Fetch one field. Plaintext: value inline. Encrypted: envelope. */
|
|
1772
|
+
getSecretField(args: {
|
|
1773
|
+
scope: SecretScope$1;
|
|
1774
|
+
scopeId: string;
|
|
1775
|
+
secretId: string;
|
|
1776
|
+
fieldKey: string;
|
|
1777
|
+
}): Promise<{
|
|
1778
|
+
key: string;
|
|
1779
|
+
sensitivity: FieldSensitivity$1;
|
|
1780
|
+
format?: FieldFormat$1;
|
|
1781
|
+
value?: string;
|
|
1782
|
+
envelope?: EncryptedEnvelopeV1$1;
|
|
1783
|
+
rotatedAt?: string;
|
|
1784
|
+
createdAt: string;
|
|
1785
|
+
updatedAt: string;
|
|
1595
1786
|
}>;
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1787
|
+
/** Add OR rotate one field. */
|
|
1788
|
+
setSecretField(args: {
|
|
1789
|
+
scope: SecretScope$1;
|
|
1790
|
+
scopeId: string;
|
|
1791
|
+
secretId: string;
|
|
1792
|
+
fieldKey: string;
|
|
1793
|
+
sensitivity: FieldSensitivity$1;
|
|
1794
|
+
format?: FieldFormat$1;
|
|
1795
|
+
value?: string;
|
|
1796
|
+
envelope?: EncryptedEnvelopeV1$1;
|
|
1797
|
+
reason?: string;
|
|
1798
|
+
}): Promise<{
|
|
1799
|
+
fieldKey: string;
|
|
1800
|
+
rotated: boolean;
|
|
1801
|
+
}>;
|
|
1802
|
+
/** Remove one field. */
|
|
1803
|
+
removeSecretField(args: {
|
|
1804
|
+
scope: SecretScope$1;
|
|
1805
|
+
scopeId: string;
|
|
1806
|
+
secretId: string;
|
|
1807
|
+
fieldKey: string;
|
|
1601
1808
|
}): Promise<void>;
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1809
|
+
/** Update secret-level metadata (name/description/tags/category). */
|
|
1810
|
+
updateSecretMetadata(args: {
|
|
1811
|
+
scope: SecretScope$1;
|
|
1812
|
+
scopeId: string;
|
|
1813
|
+
secretId: string;
|
|
1814
|
+
secretName?: string;
|
|
1815
|
+
description?: string;
|
|
1816
|
+
tags?: string[];
|
|
1817
|
+
category?: SecretCategory$1;
|
|
1818
|
+
reason?: string;
|
|
1819
|
+
}): Promise<SecretAggregate$1>;
|
|
1820
|
+
/** List metadata for secrets in a scope. Optional filters route through the byFacet GSI. */
|
|
1821
|
+
listSecrets(args: {
|
|
1822
|
+
scope: SecretScope$1;
|
|
1823
|
+
scopeId: string;
|
|
1824
|
+
category?: SecretCategory$1;
|
|
1825
|
+
tag?: string;
|
|
1826
|
+
fieldKey?: string;
|
|
1827
|
+
}): Promise<SecretMetadata$1[]>;
|
|
1828
|
+
/** Bounded changelog read — metadata-only audit entries. */
|
|
1829
|
+
getSecretHistory(args: {
|
|
1830
|
+
scope: SecretScope$1;
|
|
1831
|
+
scopeId: string;
|
|
1832
|
+
secretId: string;
|
|
1833
|
+
limit?: number;
|
|
1834
|
+
cursor?: string;
|
|
1606
1835
|
}): Promise<{
|
|
1607
|
-
|
|
1608
|
-
|
|
1836
|
+
entries: ChangelogEntry$1[];
|
|
1837
|
+
nextCursor?: string;
|
|
1609
1838
|
}>;
|
|
1610
|
-
|
|
1611
|
-
|
|
1839
|
+
/** Delete a secret (and all its field rows + tag rows + changelog rows). */
|
|
1840
|
+
deleteSecret(args: {
|
|
1841
|
+
scope: SecretScope$1;
|
|
1842
|
+
scopeId: string;
|
|
1843
|
+
secretId: string;
|
|
1844
|
+
}): Promise<void>;
|
|
1845
|
+
/** Enumerate scopes (org/team/project/agent) this agent can access. */
|
|
1846
|
+
listSecretScopes(): Promise<ScopeInfo$1[]>;
|
|
1847
|
+
}
|
|
1848
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
1849
|
+
//#endregion
|
|
1850
|
+
//#region src/domains/teams.d.ts
|
|
1851
|
+
declare class TeamsApi extends ApiBase {
|
|
1852
|
+
getTeamsCredentials(): Promise<{
|
|
1853
|
+
agentId: string;
|
|
1854
|
+
tenantId: string;
|
|
1855
|
+
azureAppId: string;
|
|
1856
|
+
azureBotId: string;
|
|
1857
|
+
azureClientSecret: string;
|
|
1858
|
+
botDisplayName?: string;
|
|
1859
|
+
teamsTenantId?: string;
|
|
1860
|
+
serviceUrl?: string;
|
|
1861
|
+
}>;
|
|
1862
|
+
sendTeamsMessage(data: {
|
|
1863
|
+
conversationId: string;
|
|
1864
|
+
text?: string;
|
|
1865
|
+
adaptiveCard?: Record<string, unknown>;
|
|
1866
|
+
}): Promise<{
|
|
1612
1867
|
ok: boolean;
|
|
1868
|
+
activityId: string;
|
|
1613
1869
|
}>;
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
* voice service defaults to 24 kHz / mono / 16-bit. Wrap in a WAV container
|
|
1630
|
-
* to produce a playable file. Metered per character against the tenant
|
|
1631
|
-
* credit pool server-side; TTS completes regardless of metering outcome.
|
|
1632
|
-
*/
|
|
1633
|
-
tts(args: VoiceTtsArgs): Promise<VoiceTtsResult>;
|
|
1634
|
-
/**
|
|
1635
|
-
* Speech-to-text. Accepts raw linear16 (16-bit LE) mono PCM — NOT a WAV or
|
|
1636
|
-
* other container (the endpoint transcribes with a fixed linear16 encoding,
|
|
1637
|
-
* so a container header would be transcribed as noise). Strip any WAV header
|
|
1638
|
-
* and pass `sampleRate` from it before calling. Metered by transcribed
|
|
1639
|
-
* duration against the tenant credit pool server-side.
|
|
1640
|
-
*/
|
|
1641
|
-
stt(args: VoiceSttArgs): Promise<VoiceSttResult>;
|
|
1870
|
+
listTeamsChannels(): Promise<{
|
|
1871
|
+
channels: {
|
|
1872
|
+
id: string;
|
|
1873
|
+
name: string;
|
|
1874
|
+
description?: string;
|
|
1875
|
+
}[];
|
|
1876
|
+
}>;
|
|
1877
|
+
}
|
|
1878
|
+
//# sourceMappingURL=teams.d.ts.map
|
|
1879
|
+
|
|
1880
|
+
//#endregion
|
|
1881
|
+
//#region src/index.d.ts
|
|
1882
|
+
interface AgentApiClient extends SyncApi, IntegrationsApi, WorkspaceApi, ConnectCredentialsApi, TeamsApi, ChatApi, SecretsApi, IdentityApi, MemoryApi, SearchApi, KnowledgeApi, DatabaseApi, MobileApi, RemoteApi, SelfApi, VoiceApi, ImagesApi {}
|
|
1883
|
+
declare class AgentApiClient extends ApiBase {
|
|
1884
|
+
constructor(config: AgentApiClientConfig);
|
|
1642
1885
|
}
|
|
1643
1886
|
//# sourceMappingURL=index.d.ts.map
|
|
1887
|
+
|
|
1644
1888
|
//#endregion
|
|
1645
|
-
export { AgentApiClient, AgentApiClientConfig, AgentAvatarPresign, AgentSelf, AgentVoice, AgentVoiceConfig, ChangeRequestActorKind, ChangeRequestOperation, ChangeRequestResourceType, ChangeRequestStatus, type ChangelogAction, type ChangelogActor, type ChangelogEntry, type EncryptedEnvelopeV1, type Field, type FieldEnvelope, type FieldFormat, type FieldSensitivity, type FieldView, type GeneratedDataKey, type InstallToolErrorCaptureOptions, type IntegrationConfigResult, type IntegrationConfigSchemaField, type IntegrationInstall, KnowledgeChangeRequest, KnowledgeDoc, KnowledgeProfile, KnowledgeProfileLink, KnowledgeScope, KnowledgeScopeType, KnowledgeSearchHit, KnowledgeSearchResult, NewsArticle, NewsProvider, NewsResult, ProposeScopeChangeInput, type RegistryEntry, RemoteSessionInfo, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, SharedFileEntry, SyncAgentInfo, SyncAgentStats, SyncConfirmedUpload, SyncFileEntry, SyncManifest, SyncManifestEntry, SyncPresignedUrl, SyncReconstructBundle, SyncReconstructFile, SyncSessionContent, SyncSessionEntry, type ToolCaptureApi, VoiceSttArgs, VoiceSttResult, VoiceTtsArgs, VoiceTtsModel, VoiceTtsResult, installToolErrorCapture };
|
|
1889
|
+
export { AgentApiClient, type AgentApiClientConfig, type AgentAvatarPresign, type AgentSelf, type AgentVoice, type AgentVoiceConfig, type AgentWorkspaceInfo, type ChangeRequestActorKind, type ChangeRequestOperation, type ChangeRequestResourceType, type ChangeRequestStatus, type ChangelogAction, type ChangelogActor, type ChangelogEntry, type EncryptedEnvelopeV1, type Field, type FieldEnvelope, type FieldFormat, type FieldSensitivity, type FieldView, type GeneratedDataKey, type InstallToolErrorCaptureOptions, type IntegrationConfigResult, type IntegrationConfigSchemaField, type IntegrationInstall, type KnowledgeChangeRequest, type KnowledgeDoc, type KnowledgeProfile, type KnowledgeProfileLink, type KnowledgeScope, type KnowledgeScopeType, type KnowledgeSearchHit, type KnowledgeSearchResult, type MobileAvailableNumber, type MobileNumberInfo, type NewsArticle, type NewsProvider, type NewsResult, type ProposeScopeChangeInput, type RegistryEntry, type RemoteSessionInfo, type ScopeInfo, type SecretAggregate, type SecretCategory, type SecretMetadata, type SecretScope, type SharedFileEntry, type SyncAgentInfo, type SyncAgentStats, type SyncConfirmedUpload, type SyncFileEntry, type SyncManifest, type SyncManifestEntry, type SyncPresignedUrl, type SyncReconstructBundle, type SyncReconstructFile, type SyncSessionContent, type SyncSessionEntry, type ToolCaptureApi, type VoiceSttArgs, type VoiceSttResult, type VoiceTtsArgs, type VoiceTtsModel, type VoiceTtsResult, type WhatsAppTemplate, installToolErrorCapture };
|
|
1646
1890
|
//# sourceMappingURL=index.d.cts.map
|