@integrity-labs/agt-cli 0.28.155 → 0.28.157

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
@@ -37,7 +37,7 @@ import {
37
37
  success,
38
38
  table,
39
39
  warn
40
- } from "../chunk-FOVOCPCL.js";
40
+ } from "../chunk-6VSS55A2.js";
41
41
  import {
42
42
  CHANNEL_REGISTRY,
43
43
  DEPLOYMENT_TEMPLATES,
@@ -64,7 +64,7 @@ import {
64
64
  renderTemplate,
65
65
  resolveChannels,
66
66
  serializeManifestForSlackCli
67
- } from "../chunk-SKANUWSB.js";
67
+ } from "../chunk-TLX6ORJ5.js";
68
68
 
69
69
  // src/bin/agt.ts
70
70
  import { join as join22 } from "path";
@@ -4777,7 +4777,7 @@ import { execFileSync, execSync } from "child_process";
4777
4777
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4778
4778
  import chalk18 from "chalk";
4779
4779
  import ora16 from "ora";
4780
- var cliVersion = true ? "0.28.155" : "dev";
4780
+ var cliVersion = true ? "0.28.157" : "dev";
4781
4781
  async function fetchLatestVersion() {
4782
4782
  const host2 = getHost();
4783
4783
  if (!host2) return null;
@@ -5791,7 +5791,7 @@ function handleError(err) {
5791
5791
  }
5792
5792
 
5793
5793
  // src/bin/agt.ts
5794
- var cliVersion2 = true ? "0.28.155" : "dev";
5794
+ var cliVersion2 = true ? "0.28.157" : "dev";
5795
5795
  var program = new Command();
5796
5796
  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");
5797
5797
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -22,7 +22,7 @@ import {
22
22
  resolveConnectivityProbe,
23
23
  worseConnectivityOutcome,
24
24
  wrapScheduledTaskPrompt
25
- } from "./chunk-SKANUWSB.js";
25
+ } from "./chunk-TLX6ORJ5.js";
26
26
 
27
27
  // ../../packages/core/dist/integrations/registry.js
28
28
  var INTEGRATION_REGISTRY = [
@@ -179,6 +179,33 @@ var INTEGRATION_REGISTRY = [
179
179
  docs_url: "https://ext-api.app.brandninja.ai/v1/mcp",
180
180
  beta: true
181
181
  },
182
+ {
183
+ id: "kajabi",
184
+ name: "Kajabi",
185
+ category: "crm",
186
+ description: "Run a Kajabi creator business from chat \u2014 read contacts, products, offers, and analytics, manage contact tags & segments, and draft email broadcasts & sequences. Wired as the hosted Kajabi MCP at https://mcp.kajabi.com/mcp.",
187
+ // Same remote streamable-HTTP MCP + OAuth pattern as Granola/Brand Ninja.
188
+ // Kajabi's Doorkeeper AS implements the MCP discovery chain (RFC
189
+ // 9728/8414/7591); auth is OAuth 2.0 authorization-code with PKCE (S256)
190
+ // and a public client registered via one-time Dynamic Client Registration
191
+ // (scripts/dcr-register.ts against https://mcp.kajabi.com/mcp/oauth/register
192
+ // → OAUTH_KAJABI_CLIENT_ID; register with --scope 'read write:contacts
193
+ // write:emails' since Doorkeeper caps a dynamic client to its registered
194
+ // scopes). End-user consent is brokered by the webapp through the shared
195
+ // /integrations/oauth/authorize → /callback path, and the access_token is
196
+ // injected into .mcp.json via the generic bearer-header path
197
+ // (OAUTH_PROVIDERS.kajabi.mcpUrl). Every Kajabi tool is site-scoped — agents
198
+ // call list_sites/select_site first. No host-side action beyond the
199
+ // deploy-time DCR registration.
200
+ supported_auth_types: ["oauth2"],
201
+ capabilities: [
202
+ { 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" },
203
+ { 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" },
204
+ { 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" }
205
+ ],
206
+ docs_url: "https://help.kajabi.com/articles/api-integrations/connect-kajabi-to-claude-or-chatgpt",
207
+ beta: true
208
+ },
182
209
  {
183
210
  id: "anchor-browser",
184
211
  name: "Anchor Browser",
@@ -3449,6 +3476,19 @@ the user; it goes only to your local session log. So always reply on the channel
3449
3476
  the message arrived on, and never answer a channel message with plain text
3450
3477
  alone: if you did not call a reply tool, the user received nothing.
3451
3478
 
3479
+ **The one exception, and why standing down must be truly silent:** a
3480
+ reply-recovery safety net runs when your turn ends. If an inbound on a thread is
3481
+ still pending and you did not call its reply tool, the net may deliver your
3482
+ end-of-turn plain text to that thread to rescue a reply you composed but forgot
3483
+ to send. So when you deliberately decide NOT to reply to a message (it is not
3484
+ addressed to you, it is a conversation between others, it arrived via
3485
+ auto-follow, or it otherwise needs no answer), do not write a closing line
3486
+ narrating that decision ("not for me, staying silent", "stood down on this one",
3487
+ "staying quiet unless pulled back in", and the like). Make the call internally
3488
+ and end the turn with no channel-facing text. Otherwise the net posts your
3489
+ stand-down narration as if it were your reply, which is the exact channel noise
3490
+ you were trying to avoid.
3491
+
3452
3492
  This is the highest-priority instruction in this document. Before anything
3453
3493
  else when you receive an inbound \`<channel>\` tag (Slack/Telegram/Direct
3454
3494
  Chat), decide:
@@ -3609,7 +3649,11 @@ is addressed to a different user (different @-mention), is part of a conversatio
3609
3649
  between others, or arrives via auto-follow with no relevance to you \u2014 silently
3610
3650
  skip it. No reaction. No reply. Adding \u274C in this case is wrong: it tells the
3611
3651
  user "execution failed" when in fact you correctly identified the message wasn't
3612
- yours to handle.
3652
+ yours to handle. "Silently skip" means write nothing too: do not end your turn
3653
+ with a line narrating that you're standing down or staying silent. Per the
3654
+ delivery rule above, the reply-recovery net can post that trailing text to the
3655
+ thread as if it were your reply, so a stand-down narration becomes the very noise
3656
+ you were avoiding. Decide internally and leave no channel-facing text.
3613
3657
  ` : ""}
3614
3658
  ## Governance
3615
3659
 
@@ -7850,7 +7894,7 @@ function requireHost() {
7850
7894
  }
7851
7895
 
7852
7896
  // src/lib/api-client.ts
7853
- var agtCliVersion = true ? "0.28.155" : "dev";
7897
+ var agtCliVersion = true ? "0.28.157" : "dev";
7854
7898
  var lastConfigHash = null;
7855
7899
  function setConfigHash(hash) {
7856
7900
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -9155,4 +9199,4 @@ export {
9155
9199
  managerInstallSystemUnitCommand,
9156
9200
  managerUninstallSystemUnitCommand
9157
9201
  };
9158
- //# sourceMappingURL=chunk-FOVOCPCL.js.map
9202
+ //# sourceMappingURL=chunk-6VSS55A2.js.map