@alfe.ai/agent-api-client 0.10.0 → 0.11.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/index.cjs +119 -25
- package/dist/index.d.cts +105 -14
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +105 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +119 -25
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/tool-error-capture.ts","../src/index.ts"],"mappings":";;;;;;;AA6BA;AAIA;AA0GA;;;;;;;;ACtFA;AAOA;AAmBA;AAWA;AASA;;;;;AAOA;AAMA;AAQA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/tool-error-capture.ts","../src/index.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -137,6 +137,7 @@ var AgentApiClient = class {
|
|
|
137
137
|
if (!res.ok) {
|
|
138
138
|
await res.text();
|
|
139
139
|
const error = /* @__PURE__ */ new Error(`Agent API request failed (${String(res.status)})`);
|
|
140
|
+
error.status = res.status;
|
|
140
141
|
if (attempt === 1 && RETRYABLE_STATUS.has(res.status)) {
|
|
141
142
|
lastError = error;
|
|
142
143
|
await sleep(RETRY_DELAY_MS);
|
|
@@ -210,7 +211,17 @@ var AgentApiClient = class {
|
|
|
210
211
|
return this.request("/agent/integrations");
|
|
211
212
|
}
|
|
212
213
|
async getIntegrationConfig(integrationId) {
|
|
213
|
-
|
|
214
|
+
try {
|
|
215
|
+
return await this.request(`/agent/integrations/${encodeURIComponent(integrationId)}/config`);
|
|
216
|
+
} catch (err) {
|
|
217
|
+
if (err.status === 404) return {
|
|
218
|
+
integrationId,
|
|
219
|
+
config: {},
|
|
220
|
+
configSchema: [],
|
|
221
|
+
installed: false
|
|
222
|
+
};
|
|
223
|
+
throw err;
|
|
224
|
+
}
|
|
214
225
|
}
|
|
215
226
|
async updateIntegrationConfig(integrationId, config) {
|
|
216
227
|
await this.request(`/agent/integrations/${encodeURIComponent(integrationId)}`, {
|
|
@@ -314,49 +325,71 @@ var AgentApiClient = class {
|
|
|
314
325
|
* Pattern A: multi-account credential fetch for cTrader.
|
|
315
326
|
*
|
|
316
327
|
* Unlike atlassian/salesforce (one Connection row per account/site), a
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
328
|
+
* cTrader is MULTI-grant per agent: an agent may connect several distinct
|
|
329
|
+
* cTrader logins, each its own Connection row keyed on `accountIdentifier =
|
|
330
|
+
* ctid:<userId>` (Phase 1). This aggregates the *trading accounts* across
|
|
331
|
+
* ALL of those Connection rows — each row contributes its `availableAccounts`
|
|
332
|
+
* flattened, and every account carries ITS OWN grant's `accessToken` (the
|
|
333
|
+
* token that authenticates that account against the cTrader Open API). One
|
|
334
|
+
* OAuth grant still covers all accounts under that single login on one shared
|
|
335
|
+
* token; only the `ctidTraderAccountId` and the protobuf socket `host` (live
|
|
336
|
+
* vs demo) differ within a grant. Across grants the tokens differ, so the
|
|
337
|
+
* token is now PER-ACCOUNT rather than hoisted to the top level.
|
|
325
338
|
*
|
|
326
339
|
* `host` per account is derived from the account's `isLive` flag
|
|
327
340
|
* (`live.ctraderapi.com` / `demo.ctraderapi.com`) — the same mapping the
|
|
328
341
|
* connect provider applies server-side when an account is auto-selected.
|
|
329
342
|
*
|
|
330
|
-
*
|
|
331
|
-
*
|
|
332
|
-
*
|
|
333
|
-
*
|
|
343
|
+
* `clientId` / `clientSecret` are the SST-sourced GLOBAL app credentials the
|
|
344
|
+
* connect endpoint injects — identical across every Connection row (one
|
|
345
|
+
* cTrader app), never persisted on a connection. We take them from the first
|
|
346
|
+
* row that carries them.
|
|
347
|
+
*
|
|
348
|
+
* Accounts are deduped on `ctidTraderAccountId` first-wins: Spotware ids are
|
|
349
|
+
* globally unique across logins, so a duplicate can only appear if the same
|
|
350
|
+
* account somehow surfaced under two grants — first-wins keeps it
|
|
351
|
+
* deterministic.
|
|
352
|
+
*
|
|
353
|
+
* `accounts` may be empty (no cTrader Connection at all), in which case we
|
|
354
|
+
* return empty creds rather than throwing.
|
|
334
355
|
*/
|
|
335
356
|
async getCTraderAccounts() {
|
|
336
357
|
const raw = await this.request("/agent/connect/ctrader/accounts");
|
|
337
358
|
if (raw.accounts.length === 0) return {
|
|
338
359
|
accounts: [],
|
|
339
360
|
clientId: "",
|
|
340
|
-
clientSecret: ""
|
|
341
|
-
accessToken: ""
|
|
361
|
+
clientSecret: ""
|
|
342
362
|
};
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
363
|
+
let clientId = "";
|
|
364
|
+
let clientSecret = "";
|
|
365
|
+
for (const row of raw.accounts) {
|
|
366
|
+
if (!clientId && row.clientId) clientId = row.clientId;
|
|
367
|
+
if (!clientSecret && row.clientSecret) clientSecret = row.clientSecret;
|
|
368
|
+
if (clientId && clientSecret) break;
|
|
369
|
+
}
|
|
370
|
+
const seen = /* @__PURE__ */ new Set();
|
|
371
|
+
const accounts = [];
|
|
372
|
+
for (const row of raw.accounts) {
|
|
373
|
+
const rowToken = row.accessToken ?? "";
|
|
374
|
+
for (const a of row.availableAccounts ?? []) {
|
|
347
375
|
const id = a.ctidTraderAccountId != null ? String(a.ctidTraderAccountId) : a.accountId != null ? String(a.accountId) : "";
|
|
376
|
+
if (id.length === 0 || seen.has(id)) continue;
|
|
377
|
+
seen.add(id);
|
|
348
378
|
const isLive = a.isLive === true;
|
|
349
|
-
|
|
379
|
+
accounts.push({
|
|
350
380
|
ctidTraderAccountId: id,
|
|
351
381
|
host: isLive ? "live.ctraderapi.com" : "demo.ctraderapi.com",
|
|
352
382
|
isLive,
|
|
353
383
|
...a.brokerName != null ? { brokerName: a.brokerName } : {},
|
|
354
|
-
...a.accountNumber != null ? { accountNumber: String(a.accountNumber) } : {}
|
|
355
|
-
|
|
356
|
-
|
|
384
|
+
...a.accountNumber != null ? { accountNumber: String(a.accountNumber) } : {},
|
|
385
|
+
accessToken: rowToken
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return {
|
|
390
|
+
accounts,
|
|
357
391
|
clientId,
|
|
358
|
-
clientSecret
|
|
359
|
-
accessToken
|
|
392
|
+
clientSecret
|
|
360
393
|
};
|
|
361
394
|
}
|
|
362
395
|
/**
|
|
@@ -400,6 +433,44 @@ var AgentApiClient = class {
|
|
|
400
433
|
})) };
|
|
401
434
|
}
|
|
402
435
|
/**
|
|
436
|
+
* Pattern A: provider-parameterized multi-account credential fetch for the
|
|
437
|
+
* social connectors (Bluesky, and the approval-gated backlog: X, Meta,
|
|
438
|
+
* Threads, LinkedIn, Pinterest, TikTok, Reddit, YouTube).
|
|
439
|
+
*
|
|
440
|
+
* Unlike the bespoke `getGithubAccounts()` / `getXeroAccounts()` shapes,
|
|
441
|
+
* this returns a UNIFORM normalized account shape so `@alfe.ai/social-mcp`'s
|
|
442
|
+
* shared driver can require a single `account` selector on every
|
|
443
|
+
* credential-touching tool regardless of platform. The backend
|
|
444
|
+
* `api-agents/{provider}/accounts` route is already provider-generic; this
|
|
445
|
+
* is the client-side normalization the plan (`do-we-need-any-moonlit-toucan`
|
|
446
|
+
* Phase 0, step 5) calls for.
|
|
447
|
+
*
|
|
448
|
+
* `accountIdentifier` is the stable per-account selector the LLM should
|
|
449
|
+
* pass back (for Bluesky: the account DID). `accessToken` carries whatever
|
|
450
|
+
* the provider's `buildCredentialsResponse` bundles (for Bluesky: the JSON
|
|
451
|
+
* session bundle — the driver parses the `accessJwt` out of it, or reads the
|
|
452
|
+
* top-level `accessJwt` from `providerMetadata`-adjacent fields). Everything
|
|
453
|
+
* else the driver needs for routing (handle, pdsHost, did, …) is on
|
|
454
|
+
* `providerMetadata`.
|
|
455
|
+
*
|
|
456
|
+
* Token refresh is delegated to connect (never done in-plugin) via
|
|
457
|
+
* `POST /agent/connect/{provider}/refresh` — not exposed here.
|
|
458
|
+
*/
|
|
459
|
+
async getSocialAccounts(provider) {
|
|
460
|
+
const raw = await this.request(`/agent/connect/${encodeURIComponent(provider)}/accounts`);
|
|
461
|
+
return {
|
|
462
|
+
provider: raw.provider ?? provider,
|
|
463
|
+
accounts: raw.accounts.map((a) => ({
|
|
464
|
+
connectionId: a.connectionId,
|
|
465
|
+
accountIdentifier: a.accountIdentifier,
|
|
466
|
+
displayName: a.displayName,
|
|
467
|
+
accessToken: a.accessToken ?? "",
|
|
468
|
+
providerMetadata: a.providerMetadata ?? {},
|
|
469
|
+
connectedAt: a.connectedAt
|
|
470
|
+
}))
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
403
474
|
* @deprecated Returns a single primary credential blob (legacy "pick-the-
|
|
404
475
|
* default-connection" shape). Use `getXeroAccounts()` for the multi-
|
|
405
476
|
* account shape required by Pattern A — explicit selector args on every
|
|
@@ -1139,6 +1210,15 @@ var AgentApiClient = class {
|
|
|
1139
1210
|
...scope ? { body: JSON.stringify({ scope }) } : {}
|
|
1140
1211
|
});
|
|
1141
1212
|
}
|
|
1213
|
+
async sendSms(args) {
|
|
1214
|
+
return this.request("/mobile/sms/send", {
|
|
1215
|
+
method: "POST",
|
|
1216
|
+
body: JSON.stringify({
|
|
1217
|
+
to: args.to,
|
|
1218
|
+
body: args.body
|
|
1219
|
+
})
|
|
1220
|
+
});
|
|
1221
|
+
}
|
|
1142
1222
|
async searchWeb(params) {
|
|
1143
1223
|
return this.request("/agent/search/web", {
|
|
1144
1224
|
method: "POST",
|
|
@@ -1157,6 +1237,20 @@ var AgentApiClient = class {
|
|
|
1157
1237
|
body: JSON.stringify(params)
|
|
1158
1238
|
});
|
|
1159
1239
|
}
|
|
1240
|
+
/** Search news across the selected provider's corpus. → POST /agent/news/search */
|
|
1241
|
+
async newsSearch(params) {
|
|
1242
|
+
return this.request("/agent/news/search", {
|
|
1243
|
+
method: "POST",
|
|
1244
|
+
body: JSON.stringify(params)
|
|
1245
|
+
});
|
|
1246
|
+
}
|
|
1247
|
+
/** Top headlines for the selected provider. → POST /agent/news/headlines */
|
|
1248
|
+
async newsHeadlines(params) {
|
|
1249
|
+
return this.request("/agent/news/headlines", {
|
|
1250
|
+
method: "POST",
|
|
1251
|
+
body: JSON.stringify(params ?? {})
|
|
1252
|
+
});
|
|
1253
|
+
}
|
|
1160
1254
|
/**
|
|
1161
1255
|
* Semantic search across the agent's member scopes. Fan-out is gated
|
|
1162
1256
|
* server-side by `listScopes` set-inclusion (fail-closed). Pass
|