@integrity-labs/agt-cli 0.28.1112 → 0.28.1113

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-TJUDOE53.js";
43
+ } from "../chunk-TXNVB3DN.js";
44
44
  import {
45
45
  getProjectDir,
46
46
  isSessionResumeDisabled,
47
47
  readDirectChatSessionState
48
- } from "../chunk-5EYINOIW.js";
48
+ } from "../chunk-JX7ZXCNZ.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-NO57I56V.js";
82
+ } from "../chunk-OBZB6MUE.js";
83
83
  import "../chunk-OCMJ5E6J.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.1112" : "dev";
5477
+ var cliVersion = true ? "0.28.1113" : "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.1112" : "dev";
6737
+ var cliVersion2 = true ? "0.28.1113" : "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) => {
@@ -24,7 +24,7 @@ import {
24
24
  rotateDailySession,
25
25
  sessionFileExists,
26
26
  todayLocalIso
27
- } from "./chunk-NO57I56V.js";
27
+ } from "./chunk-OBZB6MUE.js";
28
28
  import {
29
29
  classifyUnanswerablePane,
30
30
  findUsageLimitResetHint,
@@ -6113,4 +6113,4 @@ export {
6113
6113
  stopAllSessionsAndWait,
6114
6114
  getProjectDir
6115
6115
  };
6116
- //# sourceMappingURL=chunk-5EYINOIW.js.map
6116
+ //# sourceMappingURL=chunk-JX7ZXCNZ.js.map
@@ -2049,6 +2049,34 @@ var INTEGRATION_REGISTRY = [
2049
2049
  docs_url: "https://help.kajabi.com/articles/api-integrations/connect-kajabi-to-claude-or-chatgpt",
2050
2050
  beta: true
2051
2051
  },
2052
+ {
2053
+ id: "otter",
2054
+ name: "Otter.ai",
2055
+ category: "knowledge",
2056
+ description: "Read Otter.ai meetings: search recordings by date, attendee or topic, and read summaries, action items and full speaker-attributed transcripts.",
2057
+ // CS-2029: same remote streamable-HTTP MCP + OAuth pattern as Granola/Kajabi.
2058
+ // Otter's server implements the MCP discovery chain (RFC 9728 protected-
2059
+ // resource metadata at mcp.otter.ai → RFC 8414 AS metadata at otter.ai →
2060
+ // RFC 7591 registration); auth is OAuth 2.0 authorization-code with PKCE
2061
+ // (S256) and a public client registered via one-time Dynamic Client
2062
+ // Registration (scripts/dcr-register.ts against https://otter.ai/oauth/register
2063
+ // → OAUTH_OTTER_CLIENT_ID, --scope 'profile:read conversations:read').
2064
+ // Consent is brokered by the webapp through the shared
2065
+ // /integrations/oauth/authorize → /callback path, and the access_token
2066
+ // reaches the host via the generic remote-oauth-proxy
2067
+ // (OAUTH_PROVIDERS.otter.mcpUrl). Read-only by construction: Otter
2068
+ // advertises no write scope.
2069
+ supported_auth_types: ["oauth2"],
2070
+ capabilities: [
2071
+ { id: "otter:read", name: "Read Meetings & Transcripts", description: "Find recorded meetings by date, attendee, topic or title, and read their summaries, action items, outlines and full transcripts (otter_get_user_info, otter_search, otter_fetch)", access: "read" }
2072
+ ],
2073
+ // Otter's own Help Center article for the MCP server (CodeRabbit, #6906). It
2074
+ // exists even though help.otter.ai answers 403 to non-browser clients; the
2075
+ // help-centre API confirmed it (title "Otter MCP Server"). The MCP endpoint
2076
+ // itself is a JSON-RPC URL, not a page (Obi Wan 8305072d5414).
2077
+ docs_url: "https://help.otter.ai/hc/en-us/articles/35287607569687-Otter-MCP-Server",
2078
+ beta: true
2079
+ },
2052
2080
  {
2053
2081
  id: "anchor-browser",
2054
2082
  name: "Anchor Browser",
@@ -11725,6 +11753,51 @@ var OAUTH_PROVIDERS = {
11725
11753
  }
11726
11754
  ]
11727
11755
  },
11756
+ "otter": {
11757
+ // CS-2029: Otter.ai's official MCP — remote streamable-HTTP at
11758
+ // https://mcp.otter.ai/mcp. Same Granola/Kajabi shape: OAuth 2.0
11759
+ // authorization-code with PKCE (S256) and a public client
11760
+ // (token_endpoint_auth_method 'none') issued via Dynamic Client
11761
+ // Registration (RFC 7591). Values below are taken verbatim from the
11762
+ // metadata, not inferred:
11763
+ // - https://mcp.otter.ai/.well-known/oauth-protected-resource names the
11764
+ // AS as https://otter.ai/ and advertises scopes profile:read,
11765
+ // conversations:read;
11766
+ // - https://otter.ai/.well-known/oauth-authorization-server gives
11767
+ // authorize /oauth2/authorize, token /oauth/token, revoke
11768
+ // /oauth/revoke_token, register /oauth/register, PKCE S256, `none`,
11769
+ // and the refresh_token grant.
11770
+ // NOTE the authorize path is /oauth2/authorize while token/revoke live
11771
+ // under /oauth/ — that is Otter's own split, do not "normalise" it.
11772
+ // The prod client was registered 2026-10-10 against /oauth/register with
11773
+ // scope 'profile:read conversations:read' and BOTH API callbacks,
11774
+ // https://api.augmented.team/... and https://api.ninjafy.com/integrations/oauth/callback,
11775
+ // because redirect_uri follows API_PUBLIC_URL and the ENG-11060 flip makes
11776
+ // the ninjafy name canonical; Otter returns no RFC 7592 handle, so a redirect
11777
+ // cannot be added later without a new client and a re-consent per connection.
11778
+ // OAUTH_OTTER_CLIENT_ID is set from its output (docs/runbooks/otter-dogfood.md). Otter advertises ONLY
11779
+ // read scopes, so this integration is read-only by construction: there is
11780
+ // no write scope to request even by mistake.
11781
+ definitionId: "otter",
11782
+ authorizeUrl: "https://otter.ai/oauth2/authorize",
11783
+ tokenUrl: "https://otter.ai/oauth/token",
11784
+ revokeUrl: "https://otter.ai/oauth/revoke_token",
11785
+ defaultScopes: ["profile:read", "conversations:read"],
11786
+ supportsRefresh: true,
11787
+ extraAuthorizeParams: {},
11788
+ clientAuthMethod: "body",
11789
+ pkce: "S256",
11790
+ publicClient: true,
11791
+ mcpUrl: "https://mcp.otter.ai/mcp",
11792
+ // Curated surface (matches the catalog seed's defined_scopes[].tools).
11793
+ // These are the server's three tools, all read-only. The names are
11794
+ // Otter's own, quoted from the tools' descriptions ("use `otter_search`
11795
+ // first", "call otter_get_user_info() first"), not Composio's wrapped
11796
+ // OTTER_AI_MCP_* slugs. An allowlisted name the server does not advertise
11797
+ // is logged and SKIPPED by the proxy, so confirm against the first live
11798
+ // tools/list after a real consent (runbook Step 3).
11799
+ toolAllowlist: ["otter_get_user_info", "otter_search", "otter_fetch"]
11800
+ },
11728
11801
  "notion-cli": {
11729
11802
  // Notion's public OAuth app. Tokens are workspace-scoped and long-lived —
11730
11803
  // Notion does not issue refresh_tokens, so `supportsRefresh: false` and
@@ -16626,4 +16699,4 @@ export {
16626
16699
  peekCurrentSession,
16627
16700
  readDailySessionPin
16628
16701
  };
16629
- //# sourceMappingURL=chunk-NO57I56V.js.map
16702
+ //# sourceMappingURL=chunk-OBZB6MUE.js.map