@integrity-labs/agt-cli 0.28.1131 → 0.28.1132

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/bin/agt.js CHANGED
@@ -40,12 +40,12 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-4BKN4EUH.js";
43
+ } from "../chunk-K2V6JUIQ.js";
44
44
  import {
45
45
  getProjectDir,
46
46
  isSessionResumeDisabled,
47
47
  readDirectChatSessionState
48
- } from "../chunk-KG4IEJEF.js";
48
+ } from "../chunk-LIWZ3QER.js";
49
49
  import {
50
50
  AnchorSessionClient,
51
51
  CHANNEL_REGISTRY,
@@ -79,7 +79,7 @@ import {
79
79
  serializeManifestForSlackCli,
80
80
  sessionFileExists,
81
81
  sessionTranscriptDir
82
- } from "../chunk-TKBGHAN3.js";
82
+ } from "../chunk-CA4OFLW4.js";
83
83
  import "../chunk-B6UYVEMD.js";
84
84
  import "../chunk-XWVM4KPK.js";
85
85
  import "../chunk-EL5MWGGH.js";
@@ -5474,7 +5474,7 @@ import { execFileSync, execSync } from "child_process";
5474
5474
  import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
5475
5475
  import chalk18 from "chalk";
5476
5476
  import ora16 from "ora";
5477
- var cliVersion = true ? "0.28.1131" : "dev";
5477
+ var cliVersion = true ? "0.28.1132" : "dev";
5478
5478
  async function fetchLatestVersion() {
5479
5479
  const host2 = getHost();
5480
5480
  if (!host2) return null;
@@ -6734,7 +6734,7 @@ function handleError(err) {
6734
6734
  }
6735
6735
 
6736
6736
  // src/bin/agt.ts
6737
- var cliVersion2 = true ? "0.28.1131" : "dev";
6737
+ var cliVersion2 = true ? "0.28.1132" : "dev";
6738
6738
  var program = new Command();
6739
6739
  program.name("agt").description("Augmented CLI \u2014 agent provisioning and management").version(cliVersion2).option("--json", "Emit machine-readable JSON output (suppress spinners and colors)").option("--skip-update-check", "Skip the automatic update check on startup");
6740
6740
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -2085,6 +2085,36 @@ var INTEGRATION_REGISTRY = [
2085
2085
  docs_url: "https://help.otter.ai/hc/en-us/articles/35287607569687-Otter-MCP-Server",
2086
2086
  beta: true
2087
2087
  },
2088
+ {
2089
+ id: "plaud",
2090
+ name: "Plaud",
2091
+ category: "knowledge",
2092
+ description: "Read Plaud recordings: list and search recordings by name or date, and read their AI notes (summary, action items, key topics) and full speaker-labelled transcripts.",
2093
+ // ENG-11543 (CS-2134): same remote streamable-HTTP MCP + OAuth pattern as
2094
+ // Granola/Kajabi/Otter, against Plaud's HOSTED server (https://mcp.plaud.ai/mcp),
2095
+ // not the stdio `npx @plaud-ai/mcp` package. Discovery chain: RFC 9728
2096
+ // protected-resource metadata at mcp.plaud.ai -> RFC 8414 AS metadata on the
2097
+ // same host -> RFC 7591 registration at /register. Auth is OAuth 2.0
2098
+ // authorization-code with PKCE (S256) and a public client registered once by
2099
+ // an operator (docs/runbooks/plaud-dogfood.md -> OAUTH_PLAUD_CLIENT_ID).
2100
+ // Consent is brokered through the shared /integrations/oauth/authorize ->
2101
+ // /callback path, and the token reaches the host via the generic
2102
+ // remote-oauth-proxy (OAUTH_PROVIDERS.plaud.mcpUrl).
2103
+ //
2104
+ // READ-ONLY RESTS ENTIRELY ON THE TOOL ALLOWLIST. Unlike Otter, Plaud
2105
+ // advertises NO scopes_supported, so there is no read scope to request and
2106
+ // the granted token is not scope-limited. What keeps this integration
2107
+ // read-only is OAUTH_PROVIDERS.plaud.toolAllowlist (the five documented
2108
+ // reads), which the proxy enforces on tools/list and tools/call. `login` and
2109
+ // `logout` are excluded; `logout` would revoke the user's authorization.
2110
+ // Anything that widens the allowlist widens what the token can do.
2111
+ supported_auth_types: ["oauth2"],
2112
+ capabilities: [
2113
+ { id: "plaud:read", name: "Read Recordings & Transcripts", description: "List and search recordings by name or date, and read their details, AI notes (summary, action items, key topics) and full transcripts with speaker labels (get_current_user, list_files, get_file, get_note, get_transcript)", access: "read" }
2114
+ ],
2115
+ docs_url: "https://docs.plaud.ai/plaud-mcp-cli/mcp",
2116
+ beta: true
2117
+ },
2088
2118
  {
2089
2119
  id: "anchor-browser",
2090
2120
  name: "Anchor Browser",
@@ -11981,6 +12011,61 @@ var OAUTH_PROVIDERS = {
11981
12011
  // tools/list after a real consent (runbook Step 3).
11982
12012
  toolAllowlist: ["otter_get_user_info", "otter_search", "otter_fetch"]
11983
12013
  },
12014
+ "plaud": {
12015
+ // ENG-11543 (CS-2134): Plaud's hosted MCP - remote streamable-HTTP at
12016
+ // https://mcp.plaud.ai/mcp. Same Granola/Kajabi/Otter shape: OAuth 2.0
12017
+ // authorization-code with PKCE (S256) and a public client
12018
+ // (token_endpoint_auth_method 'none') issued via Dynamic Client
12019
+ // Registration (RFC 7591). NOT the stdio `npx @plaud-ai/mcp` package,
12020
+ // which runs its own local browser sign-in and token file. Values below
12021
+ // are taken verbatim from the metadata (re-read 2026-10-16), not inferred:
12022
+ // - https://mcp.plaud.ai/.well-known/oauth-protected-resource (and the
12023
+ // path-suffixed /.well-known/oauth-protected-resource/mcp the server's
12024
+ // 401 points at) give resource https://mcp.plaud.ai/mcp, AS
12025
+ // https://mcp.plaud.ai/, bearer in the header;
12026
+ // - https://mcp.plaud.ai/.well-known/oauth-authorization-server (and
12027
+ // the identical openid-configuration) give authorize /authorize, token
12028
+ // /token, register /register, PKCE S256 only, `none` among the token
12029
+ // auth methods, and the authorization_code + refresh_token grants.
12030
+ // NOT advertised: `scopes_supported` (so defaultScopes is empty, the
12031
+ // notion-cli precedent, and the authorize URL carries `scope=`) and
12032
+ // `revocation_endpoint` (so there is no revokeUrl: disconnecting here
12033
+ // deletes our copy of the token but cannot revoke Plaud's grant; the user
12034
+ // revokes it in their Plaud account).
12035
+ //
12036
+ // DCR (operator step, NOT done as of this commit): POST the registration
12037
+ // body by hand to https://mcp.plaud.ai/register with client_name
12038
+ // `Ninjafy`, token_endpoint_auth_method `none`, grant_types
12039
+ // authorization_code + refresh_token, and BOTH API callbacks in
12040
+ // redirect_uris (https://api.augmented.team/integrations/oauth/callback
12041
+ // and https://api.ninjafy.com/integrations/oauth/callback). Do not use
12042
+ // scripts/dcr-register.ts: it takes a single --redirect-uri. Store the
12043
+ // returned client id as OAUTH_PLAUD_CLIENT_ID; unset, Connect soft-fails
12044
+ // "not configured". Full procedure: docs/runbooks/plaud-dogfood.md.
12045
+ definitionId: "plaud",
12046
+ authorizeUrl: "https://mcp.plaud.ai/authorize",
12047
+ tokenUrl: "https://mcp.plaud.ai/token",
12048
+ defaultScopes: [],
12049
+ supportsRefresh: true,
12050
+ extraAuthorizeParams: {},
12051
+ clientAuthMethod: "body",
12052
+ pkce: "S256",
12053
+ publicClient: true,
12054
+ mcpUrl: "https://mcp.plaud.ai/mcp",
12055
+ // Curated surface (matches the catalog seed's defined_scopes[].tools).
12056
+ // Plaud advertises NO scopes, so the token is not scope-limited: the
12057
+ // read-only property of this integration rests ENTIRELY on this
12058
+ // allowlist, which the remote-oauth-proxy enforces on tools/list and
12059
+ // tools/call. The five names are Plaud's documented read tools
12060
+ // (https://docs.plaud.ai/plaud-mcp-cli/mcp). `login` and `logout` are
12061
+ // deliberately excluded: sign-in is our OAuth broker's job, and `logout`
12062
+ // revokes the user's authorization, which an agent must never do. The
12063
+ // names come from the docs, not from an authenticated tools/list (that
12064
+ // needs a consented token), and the proxy SKIPS an allowlisted name the
12065
+ // server does not serve, so confirm against the first live tools/list
12066
+ // (runbook Step 3, a gate before customer use).
12067
+ toolAllowlist: ["get_current_user", "list_files", "get_file", "get_note", "get_transcript"]
12068
+ },
11984
12069
  "notion-cli": {
11985
12070
  // Notion's public OAuth app. Tokens are workspace-scoped and long-lived —
11986
12071
  // Notion does not issue refresh_tokens, so `supportsRefresh: false` and
@@ -17010,4 +17095,4 @@ export {
17010
17095
  peekCurrentSession,
17011
17096
  readDailySessionPin
17012
17097
  };
17013
- //# sourceMappingURL=chunk-TKBGHAN3.js.map
17098
+ //# sourceMappingURL=chunk-CA4OFLW4.js.map