replicas-cli 0.3.46 → 0.3.48
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 +54 -14
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -25297,6 +25297,8 @@ Use this when:
|
|
|
25297
25297
|
- The user asks to inspect Vanta controls, tests, evidence, vendors, risks, or compliance data
|
|
25298
25298
|
- The user asks to query or update a connected turbopuffer namespace
|
|
25299
25299
|
- The user asks for PlanetScale organizations, databases, branches, or Insights data
|
|
25300
|
+
- The user asks to read, triage, label, or draft replies to LinkedIn messages through Kondo
|
|
25301
|
+
- The user asks to query Sazabi logs, investigate Sazabi issues, or ask the Sazabi agent about production
|
|
25300
25302
|
- The user asks to analyze text with Pangram`;
|
|
25301
25303
|
var REFERENCE9 = `# Plugins
|
|
25302
25304
|
|
|
@@ -25393,6 +25395,29 @@ const databases = await replicas.planetscale.request('/organizations/acme/databa
|
|
|
25393
25395
|
|
|
25394
25396
|
OAuth scopes control permitted operations. Confirm mutations before using POST, PUT, PATCH, or DELETE.
|
|
25395
25397
|
|
|
25398
|
+
## Sazabi
|
|
25399
|
+
|
|
25400
|
+
Sazabi is a native OAuth integration. Its MCP server has two tools: \`search\` finds an operation and \`execute\` runs it. Replicas refreshes access tokens server-side:
|
|
25401
|
+
|
|
25402
|
+
\`\`\`ts
|
|
25403
|
+
const hits = await replicas.sazabi.call('search', { query: 'log query', namespace: 'sazabi' });
|
|
25404
|
+
const schema = await replicas.sazabi.call('search', { query: 'sazabi/logs.ask', namespace: 'sazabi', includeInputSchema: true });
|
|
25405
|
+
const answer = await replicas.sazabi.call('execute', { name: 'sazabi/logs.ask', arguments: { question: 'Why did checkout 500 in the last hour?' } });
|
|
25406
|
+
\`\`\`
|
|
25407
|
+
|
|
25408
|
+
Copy each hit's \`name\` into \`execute\` and match its input schema. Agent runs that outlive \`execute\` return a run ID; poll it with \`sazabi/runs.get\`. Calls act as the user who connected Sazabi, with that user's read and write access, so confirm mutations first. See [Sazabi's MCP reference](https://docs.sazabi.com/reference/mcp-server).
|
|
25409
|
+
|
|
25410
|
+
## Kondo
|
|
25411
|
+
|
|
25412
|
+
Kondo is a native OAuth integration for the user's LinkedIn inbox. List its MCP tools first, since Kondo adds tools over time, then call one by name:
|
|
25413
|
+
|
|
25414
|
+
\`\`\`ts
|
|
25415
|
+
const { tools } = await replicas.kondo.tools();
|
|
25416
|
+
const inboxes = await replicas.kondo.call('list_inboxes');
|
|
25417
|
+
\`\`\`
|
|
25418
|
+
|
|
25419
|
+
Calls reach LinkedIn through Kondo in the user's browser: if they fail or time out, ask the user to keep Kondo open in exactly one tab. Label tools take ids from \`list_inboxes\`. \`set_chat_draft\` only fills the compose box; never say a message was sent. See [Kondo's LinkedIn guide](https://www.trykondo.com/skills/kondo-linkedin.md).
|
|
25420
|
+
|
|
25396
25421
|
## Vercel
|
|
25397
25422
|
|
|
25398
25423
|
Vercel is a native access-token integration. Pass a relative path from the Vercel REST API, including a \`teamId\` query parameter for team-owned resources:
|
|
@@ -28449,7 +28474,7 @@ var headlessAgentRequestSchema = external_exports.object({
|
|
|
28449
28474
|
});
|
|
28450
28475
|
|
|
28451
28476
|
// ../shared/src/cli-version.ts
|
|
28452
|
-
var CLI_VERSION = "0.3.
|
|
28477
|
+
var CLI_VERSION = "0.3.48";
|
|
28453
28478
|
|
|
28454
28479
|
// ../shared/src/version.ts
|
|
28455
28480
|
function compareVersions(v1, v2) {
|
|
@@ -28732,6 +28757,15 @@ var EXPLICIT_PLUGIN_CATALOG = [
|
|
|
28732
28757
|
name: "PlanetScale",
|
|
28733
28758
|
description: "Manage organizations, databases, branches, deploy requests, and Insights."
|
|
28734
28759
|
},
|
|
28760
|
+
{
|
|
28761
|
+
id: "sazabi",
|
|
28762
|
+
backend: "native",
|
|
28763
|
+
toolkit: "sazabi",
|
|
28764
|
+
authType: "oauth",
|
|
28765
|
+
category: "data",
|
|
28766
|
+
name: "Sazabi",
|
|
28767
|
+
description: "Query logs, investigate issues, and run the Sazabi observability agent."
|
|
28768
|
+
},
|
|
28735
28769
|
{
|
|
28736
28770
|
id: "stripe",
|
|
28737
28771
|
backend: "composio",
|
|
@@ -28741,6 +28775,15 @@ var EXPLICIT_PLUGIN_CATALOG = [
|
|
|
28741
28775
|
name: "Stripe",
|
|
28742
28776
|
description: "Manage customers, payments, invoices, subscriptions, and balances."
|
|
28743
28777
|
},
|
|
28778
|
+
{
|
|
28779
|
+
id: "kondo",
|
|
28780
|
+
backend: "native",
|
|
28781
|
+
toolkit: "kondo",
|
|
28782
|
+
authType: "oauth",
|
|
28783
|
+
category: "business",
|
|
28784
|
+
name: "Kondo",
|
|
28785
|
+
description: "Manage LinkedIn chats, labels, reminders, drafts, connections, and invites."
|
|
28786
|
+
},
|
|
28744
28787
|
{
|
|
28745
28788
|
id: "lightfield",
|
|
28746
28789
|
backend: "native",
|
|
@@ -30757,10 +30800,11 @@ var import_readline = __toESM(require("readline"));
|
|
|
30757
30800
|
var import_chalk15 = __toESM(require("chalk"));
|
|
30758
30801
|
var DEFAULT_CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
|
|
30759
30802
|
var CLAUDE_CLIENT_ID = process.env.CLAUDE_OAUTH_CLIENT_ID || DEFAULT_CLIENT_ID;
|
|
30760
|
-
var AUTHORIZATION_ENDPOINT2 = "https://claude.
|
|
30761
|
-
var TOKEN_ENDPOINT2 = "https://
|
|
30762
|
-
var REDIRECT_URI = "https://
|
|
30763
|
-
var SCOPES = "
|
|
30803
|
+
var AUTHORIZATION_ENDPOINT2 = "https://claude.com/cai/oauth/authorize";
|
|
30804
|
+
var TOKEN_ENDPOINT2 = "https://platform.claude.com/v1/oauth/token";
|
|
30805
|
+
var REDIRECT_URI = "https://platform.claude.com/oauth/code/callback";
|
|
30806
|
+
var SCOPES = "user:inference";
|
|
30807
|
+
var TOKEN_LIFETIME_SECONDS = 365 * 24 * 60 * 60;
|
|
30764
30808
|
function buildAuthorizationUrl2(codeChallenge, state) {
|
|
30765
30809
|
const params = new URLSearchParams({
|
|
30766
30810
|
code: "true",
|
|
@@ -30819,7 +30863,8 @@ async function exchangeCodeForTokens2(code, state, expectedState, codeVerifier)
|
|
|
30819
30863
|
grant_type: "authorization_code",
|
|
30820
30864
|
client_id: CLAUDE_CLIENT_ID,
|
|
30821
30865
|
redirect_uri: REDIRECT_URI,
|
|
30822
|
-
code_verifier: codeVerifier
|
|
30866
|
+
code_verifier: codeVerifier,
|
|
30867
|
+
expires_in: TOKEN_LIFETIME_SECONDS
|
|
30823
30868
|
};
|
|
30824
30869
|
const response = await fetch(TOKEN_ENDPOINT2, {
|
|
30825
30870
|
method: "POST",
|
|
@@ -30833,16 +30878,12 @@ async function exchangeCodeForTokens2(code, state, expectedState, codeVerifier)
|
|
|
30833
30878
|
throw new Error(`Failed to exchange authorization code: ${response.status} ${text2}`);
|
|
30834
30879
|
}
|
|
30835
30880
|
const data = await response.json();
|
|
30836
|
-
const now = Date.now();
|
|
30837
|
-
const expiresAt = new Date(now + data.expires_in * 1e3).toISOString();
|
|
30838
|
-
const refreshTokenExpiresAt = data.refresh_token_expires_in ? new Date(now + data.refresh_token_expires_in * 1e3).toISOString() : void 0;
|
|
30839
30881
|
return {
|
|
30840
30882
|
accessToken: data.access_token,
|
|
30841
|
-
refreshToken: data.refresh_token,
|
|
30842
30883
|
tokenType: data.token_type,
|
|
30843
30884
|
scope: data.scope,
|
|
30844
|
-
expiresAt,
|
|
30845
|
-
|
|
30885
|
+
expiresAt: new Date(Date.now() + (data.expires_in ?? TOKEN_LIFETIME_SECONDS) * 1e3).toISOString(),
|
|
30886
|
+
accountEmail: data.account?.email_address
|
|
30846
30887
|
};
|
|
30847
30888
|
}
|
|
30848
30889
|
async function runClaudeOAuthFlow(totalSteps) {
|
|
@@ -30878,11 +30919,10 @@ async function claudeAuthCommand(options = {}) {
|
|
|
30878
30919
|
},
|
|
30879
30920
|
toRequestBody: (tokens) => ({
|
|
30880
30921
|
access_token: tokens.accessToken,
|
|
30881
|
-
refresh_token: tokens.refreshToken,
|
|
30882
30922
|
token_type: tokens.tokenType,
|
|
30883
30923
|
scope: tokens.scope,
|
|
30884
30924
|
expires_at: tokens.expiresAt,
|
|
30885
|
-
|
|
30925
|
+
account_email: tokens.accountEmail
|
|
30886
30926
|
})
|
|
30887
30927
|
});
|
|
30888
30928
|
}
|