@integrity-labs/agt-cli 0.28.156 → 0.28.158

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-OINH6USQ.js";
40
+ } from "../chunk-3OLFOA4F.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.156" : "dev";
4780
+ var cliVersion = true ? "0.28.158" : "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.156" : "dev";
5794
+ var cliVersion2 = true ? "0.28.158" : "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:
@@ -3606,10 +3646,18 @@ to add it yourself. After working, prefer a text reply via slack.reply over a re
3606
3646
 
3607
3647
  **When a thread message is not for you, do nothing.** If a message in a thread
3608
3648
  is addressed to a different user (different @-mention), is part of a conversation
3609
- between others, or arrives via auto-follow with no relevance to you \u2014 silently
3610
- skip it. No reaction. No reply. Adding \u274C in this case is wrong: it tells the
3611
- user "execution failed" when in fact you correctly identified the message wasn't
3612
- yours to handle.
3649
+ between others, or arrives via auto-follow with no relevance to you \u2014 skip it
3650
+ and do not post a text reply. Whether you also mark it with a "seen, skipping"
3651
+ reaction is governed by your Slack MCP server's own instructions, which reflect
3652
+ the current channel policy: if it tells you to react when you skip, do that; if
3653
+ it doesn't, skip with no reaction at all. Follow that guidance rather than
3654
+ assuming either way here. The one reaction that is always wrong in this case is
3655
+ \u274C: it tells the user "execution failed" when in fact you correctly identified
3656
+ the message wasn't yours to handle. Skipping also means writing nothing: do not
3657
+ end your turn with a line narrating that you're standing down or staying silent.
3658
+ Per the delivery rule above, the reply-recovery net can post that trailing text
3659
+ to the thread as if it were your reply, so a stand-down narration becomes the
3660
+ very noise you were avoiding. Decide internally and leave no channel-facing text.
3613
3661
  ` : ""}
3614
3662
  ## Governance
3615
3663
 
@@ -7850,7 +7898,7 @@ function requireHost() {
7850
7898
  }
7851
7899
 
7852
7900
  // src/lib/api-client.ts
7853
- var agtCliVersion = true ? "0.28.156" : "dev";
7901
+ var agtCliVersion = true ? "0.28.158" : "dev";
7854
7902
  var lastConfigHash = null;
7855
7903
  function setConfigHash(hash) {
7856
7904
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -9155,4 +9203,4 @@ export {
9155
9203
  managerInstallSystemUnitCommand,
9156
9204
  managerUninstallSystemUnitCommand
9157
9205
  };
9158
- //# sourceMappingURL=chunk-OINH6USQ.js.map
9206
+ //# sourceMappingURL=chunk-3OLFOA4F.js.map