@integrity-labs/agt-cli 0.28.262 → 0.28.263

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
@@ -38,7 +38,7 @@ import {
38
38
  success,
39
39
  table,
40
40
  warn
41
- } from "../chunk-G3ETF363.js";
41
+ } from "../chunk-77QMM7RI.js";
42
42
  import {
43
43
  CHANNEL_REGISTRY,
44
44
  DEFAULT_FRAMEWORK,
@@ -67,7 +67,7 @@ import {
67
67
  renderTemplate,
68
68
  resolveChannels,
69
69
  serializeManifestForSlackCli
70
- } from "../chunk-DMNWHJ65.js";
70
+ } from "../chunk-E45AAMBQ.js";
71
71
  import "../chunk-XWVM4KPK.js";
72
72
 
73
73
  // src/bin/agt.ts
@@ -4826,7 +4826,7 @@ import { execFileSync, execSync } from "child_process";
4826
4826
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4827
4827
  import chalk18 from "chalk";
4828
4828
  import ora16 from "ora";
4829
- var cliVersion = true ? "0.28.262" : "dev";
4829
+ var cliVersion = true ? "0.28.263" : "dev";
4830
4830
  async function fetchLatestVersion() {
4831
4831
  const host2 = getHost();
4832
4832
  if (!host2) return null;
@@ -5840,7 +5840,7 @@ function handleError(err) {
5840
5840
  }
5841
5841
 
5842
5842
  // src/bin/agt.ts
5843
- var cliVersion2 = true ? "0.28.262" : "dev";
5843
+ var cliVersion2 = true ? "0.28.263" : "dev";
5844
5844
  var program = new Command();
5845
5845
  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");
5846
5846
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -18,7 +18,7 @@ import {
18
18
  resolveConnectivityProbe,
19
19
  worseConnectivityOutcome,
20
20
  wrapScheduledTaskPrompt
21
- } from "./chunk-DMNWHJ65.js";
21
+ } from "./chunk-E45AAMBQ.js";
22
22
  import {
23
23
  parsePsRows
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -5876,7 +5876,7 @@ function requireHost() {
5876
5876
  }
5877
5877
 
5878
5878
  // src/lib/api-client.ts
5879
- var agtCliVersion = true ? "0.28.262" : "dev";
5879
+ var agtCliVersion = true ? "0.28.263" : "dev";
5880
5880
  var lastConfigHash = null;
5881
5881
  function setConfigHash(hash) {
5882
5882
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -8146,4 +8146,4 @@ export {
8146
8146
  managerInstallSystemUnitCommand,
8147
8147
  managerUninstallSystemUnitCommand
8148
8148
  };
8149
- //# sourceMappingURL=chunk-G3ETF363.js.map
8149
+ //# sourceMappingURL=chunk-77QMM7RI.js.map
@@ -3625,19 +3625,27 @@ var OAUTH_PROVIDERS = {
3625
3625
  // registers a client once at deploy time against
3626
3626
  // https://mcp.kajabi.com/mcp/oauth/register; OAUTH_KAJABI_CLIENT_ID is set
3627
3627
  // from its output. Doorkeeper RESTRICTS a dynamic client to the scopes it
3628
- // registered with, so register with the union of defaultScopes below
3629
- // (--scope 'read write:contacts write:emails'). The AS advertises the
3630
- // refresh_token grant (no openid/offline_access scope needed), so the
3631
- // shared oauth-refresh cron rotates the bearer without operator action.
3628
+ // registered with, so register with at least the union of defaultScopes
3629
+ // below (--scope 'read write:contacts write:emails write:content
3630
+ // write:commerce'). Widening defaultScopes forces a client re-register
3631
+ // (new client_id) AND a per-connection re-consent: existing tokens keep
3632
+ // the old scope set and their refreshes fail under the new client_id, so
3633
+ // each connection flips to needs_reauth until the user re-runs Connect
3634
+ // (ENG-7483). The AS advertises the refresh_token grant (no
3635
+ // openid/offline_access scope needed), so the shared oauth-refresh cron
3636
+ // rotates the bearer without operator action.
3632
3637
  definitionId: "kajabi",
3633
3638
  authorizeUrl: "https://app.kajabi.com/mcp/oauth/authorize",
3634
3639
  tokenUrl: "https://mcp.kajabi.com/mcp/oauth/token",
3635
3640
  revokeUrl: "https://mcp.kajabi.com/mcp/oauth/revoke",
3636
- // Coarse Doorkeeper scopes (NOT openid-style). Least-privilege v1: cross-
3637
- // domain reads (`read`) plus the two write surfaces this integration ships
3638
- // (contact tags/segments, email broadcasts/sequences). Widen here (and
3639
- // re-register the DCR client) when adding commerce/content/publish scopes.
3640
- defaultScopes: ["read", "write:contacts", "write:emails"],
3641
+ // Coarse Doorkeeper scopes (NOT openid-style). Cross-domain reads (`read`)
3642
+ // plus the write surfaces this integration ships: contact tags/segments,
3643
+ // email broadcasts/sequences, and course updates (write:content gates
3644
+ // update_course, the course-thumbnail path, ENG-7483). write:commerce is
3645
+ // requested now (Brad's call on ENG-7483) so a later offer/pricing-write
3646
+ // enablement needs no extra re-consent round; the tool allowlist below
3647
+ // still exposes no commerce write, so the callable surface stays minimal.
3648
+ defaultScopes: ["read", "write:contacts", "write:emails", "write:content", "write:commerce"],
3641
3649
  supportsRefresh: true,
3642
3650
  extraAuthorizeParams: {},
3643
3651
  clientAuthMethod: "body",
@@ -3645,12 +3653,16 @@ var OAUTH_PROVIDERS = {
3645
3653
  publicClient: true,
3646
3654
  mcpUrl: "https://mcp.kajabi.com/mcp",
3647
3655
  // Curated surface (matches the catalog seed's defined_scopes[].tools). Kajabi's
3648
- // live MCP advertises ~111 tools; the agent only needs these 26.
3656
+ // live MCP advertises ~111 tools; the agent only needs these 28.
3649
3657
  // CS-1427: `enable_toolset` is included so an agent can activate its own
3650
3658
  // products/commerce + analytics toolsets on the connection (Kajabi gates those
3651
3659
  // tool groups behind a runtime toolset that returns "not active" until enabled).
3652
3660
  // Low-risk: this proxy still caps every tools/call to the allowlist, so a broad
3653
3661
  // activation can't widen what's actually callable.
3662
+ // ENG-7483: `get_course`/`update_course` enable the course-thumbnail refresh
3663
+ // (update_course covers title/description/thumbnail per Kajabi's MCP docs).
3664
+ // Fail-safe on naming drift: an allowlisted tool the server doesn't advertise
3665
+ // is logged and skipped by the proxy, never a break.
3654
3666
  toolAllowlist: [
3655
3667
  "list_sites",
3656
3668
  "get_site_summary",
@@ -3677,7 +3689,9 @@ var OAUTH_PROVIDERS = {
3677
3689
  "list_sequences",
3678
3690
  "get_sequence",
3679
3691
  "create_sequence",
3680
- "enable_toolset"
3692
+ "enable_toolset",
3693
+ "get_course",
3694
+ "update_course"
3681
3695
  ]
3682
3696
  },
3683
3697
  "notion-cli": {
@@ -4757,14 +4771,15 @@ var INTEGRATION_REGISTRY = [
4757
4771
  id: "kajabi",
4758
4772
  name: "Kajabi",
4759
4773
  category: "crm",
4760
- description: "Run a Kajabi creator business from chat: read contacts, products, offers, and analytics, manage contact tags & segments, and draft email broadcasts & sequences.",
4774
+ description: "Run a Kajabi creator business from chat: read contacts, products, offers, and analytics, manage contact tags & segments, draft email broadcasts & sequences, and update course details & thumbnails.",
4761
4775
  // Same remote streamable-HTTP MCP + OAuth pattern as Granola/Brand Ninja.
4762
4776
  // Kajabi's Doorkeeper AS implements the MCP discovery chain (RFC
4763
4777
  // 9728/8414/7591); auth is OAuth 2.0 authorization-code with PKCE (S256)
4764
4778
  // and a public client registered via one-time Dynamic Client Registration
4765
4779
  // (scripts/dcr-register.ts against https://mcp.kajabi.com/mcp/oauth/register
4766
4780
  // → OAUTH_KAJABI_CLIENT_ID; register with --scope 'read write:contacts
4767
- // write:emails' since Doorkeeper caps a dynamic client to its registered
4781
+ // write:emails write:content write:commerce' (ENG-7483) since Doorkeeper
4782
+ // caps a dynamic client to its registered
4768
4783
  // scopes). End-user consent is brokered by the webapp through the shared
4769
4784
  // /integrations/oauth/authorize → /callback path, and the access_token is
4770
4785
  // injected into .mcp.json via the generic bearer-header path
@@ -4775,7 +4790,8 @@ var INTEGRATION_REGISTRY = [
4775
4790
  capabilities: [
4776
4791
  { id: "kajabi:read", name: "Read & Discover", description: "List sites and read contacts, products, offers, purchases, and revenue/contacts analytics (list_sites, select_site, search_contacts, get_contact, list_offers, get_offer, search_products, get_revenue_analytics, \u2026)", access: "read" },
4777
4792
  { id: "kajabi:contacts", name: "Manage Contacts", description: "Create and apply contact tags, and create/update saved contact segments (create_tag, tag_contact, untag_contact, create_segment, update_segment)", access: "write" },
4778
- { id: "kajabi:emails", name: "Manage Emails", description: "Read and draft email broadcasts and sequences \u2014 drafts only, sending stays a human action in Kajabi (create_broadcast, create_sequence, list_broadcasts, get_sequence)", access: "write" }
4793
+ { id: "kajabi:emails", name: "Manage Emails", description: "Read and draft email broadcasts and sequences \u2014 drafts only, sending stays a human action in Kajabi (create_broadcast, create_sequence, list_broadcasts, get_sequence)", access: "write" },
4794
+ { id: "kajabi:courses", name: "Manage Courses", description: "Read course structure and update course details: title, description, and thumbnail (get_course, update_course). ENG-7483: the course-thumbnail refresh path.", access: "write" }
4779
4795
  ],
4780
4796
  docs_url: "https://help.kajabi.com/articles/api-integrations/connect-kajabi-to-claude-or-chatgpt",
4781
4797
  beta: true
@@ -9213,4 +9229,4 @@ export {
9213
9229
  stopAllSessionsAndWait,
9214
9230
  getProjectDir
9215
9231
  };
9216
- //# sourceMappingURL=chunk-DMNWHJ65.js.map
9232
+ //# sourceMappingURL=chunk-E45AAMBQ.js.map