@integrity-labs/agt-cli 0.28.261 → 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 +4 -4
- package/dist/{chunk-6R7TDVCE.js → chunk-77QMM7RI.js} +3 -3
- package/dist/{chunk-RPM3FGSV.js → chunk-E45AAMBQ.js} +49 -19
- package/dist/chunk-E45AAMBQ.js.map +1 -0
- package/dist/{claude-pair-runtime-OVZ4NZK5.js → claude-pair-runtime-X5NJYZSK.js} +2 -2
- package/dist/lib/manager-worker.js +10 -10
- package/dist/mcp/origami.js +23 -7
- package/dist/mcp/slack-channel.js +89 -21
- package/dist/mcp/teams-channel.js +89 -21
- package/dist/mcp/telegram-channel.js +89 -21
- package/dist/{persistent-session-2SO5QQ56.js → persistent-session-OP4TXILO.js} +2 -2
- package/dist/{responsiveness-probe-XAMFIB2G.js → responsiveness-probe-K2RGVZCR.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-RPM3FGSV.js.map +0 -1
- /package/dist/{chunk-6R7TDVCE.js.map → chunk-77QMM7RI.js.map} +0 -0
- /package/dist/{claude-pair-runtime-OVZ4NZK5.js.map → claude-pair-runtime-X5NJYZSK.js.map} +0 -0
- /package/dist/{persistent-session-2SO5QQ56.js.map → persistent-session-OP4TXILO.js.map} +0 -0
- /package/dist/{responsiveness-probe-XAMFIB2G.js.map → responsiveness-probe-K2RGVZCR.js.map} +0 -0
package/dist/bin/agt.js
CHANGED
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
success,
|
|
39
39
|
table,
|
|
40
40
|
warn
|
|
41
|
-
} from "../chunk-
|
|
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-
|
|
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.
|
|
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.
|
|
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-
|
|
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.
|
|
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-
|
|
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
|
|
3629
|
-
// (--scope 'read write:contacts write:emails
|
|
3630
|
-
//
|
|
3631
|
-
//
|
|
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).
|
|
3637
|
-
//
|
|
3638
|
-
//
|
|
3639
|
-
//
|
|
3640
|
-
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
@@ -7047,10 +7063,24 @@ var FLAG_REGISTRY = [
|
|
|
7047
7063
|
},
|
|
7048
7064
|
{
|
|
7049
7065
|
key: "ghost-reply-intent-classifier",
|
|
7050
|
-
description:
|
|
7051
|
-
flagType: "
|
|
7052
|
-
|
|
7053
|
-
|
|
7066
|
+
description: `Intentional-non-reply suppression on the ghost-reply RECOVERY path (ENG-7096, ENG-7478). The recovery-outbox consumer in the channel MCP only ever fires for turns where the agent ended with text but did NOT call the matching reply tool for that conversation - a set that includes DELIBERATE non-replies and internal third-person self-status narration ("Filed CS-1443... standing by"). A cheap model (the conversation-eval backend, AGT_CONV_EVAL_*) classifies the recovered text as a real message for the user (deliver) or internal not-replying / self-status narration (suppress), keyed on grammatical person, biased to DELIVER and fail-open (a classifier outage degrades to today's behaviour, never a dropped real reply). off = classifier never runs, every recovered reply is posted exactly as today (ships dark, == the old boolean-false). shadow = classify + log the would-suppress verdict for operator adjudication but STILL DELIVER (measure the suppression rate before acting). enforce = actually suppress on a clean high-confidence suppress verdict. The channel server reads this live from the heartbeat flags-cache (or the env override); enforce is a deliberate, audited per-org flip after a shadow soak.`,
|
|
7067
|
+
flagType: "enum",
|
|
7068
|
+
allowedValues: ["off", "shadow", "enforce"],
|
|
7069
|
+
// Declared safe value is `off`, NOT `shadow` (deliberately diverging from
|
|
7070
|
+
// channel-quarantine-mode). quarantine's shadow is a free local log line;
|
|
7071
|
+
// THIS shadow spends a live Haiku classify per recovery candidate, so
|
|
7072
|
+
// defaulting to shadow would newly bill every host that never opted in. off
|
|
7073
|
+
// preserves the old boolean-false behaviour exactly (classifier never called).
|
|
7074
|
+
// Shadow is opt-in per canary; enforce is the audited flip after soak.
|
|
7075
|
+
defaultValue: "off",
|
|
7076
|
+
// Enum override AGT_GHOST_REPLY_INTENT_CLASSIFIER_MODE (off|shadow|enforce);
|
|
7077
|
+
// resolveGhostReplyMode also grandfathers the old boolean
|
|
7078
|
+
// AGT_GHOST_REPLY_INTENT_CLASSIFIER_ENABLED (true->enforce, false->off).
|
|
7079
|
+
envVar: "AGT_GHOST_REPLY_INTENT_CLASSIFIER_MODE",
|
|
7080
|
+
// enforce suppresses channel egress, and a false-suppress is silent,
|
|
7081
|
+
// unrecoverable loss - so flipping toward enforce is a deliberate, audited
|
|
7082
|
+
// change (ADR-0022 sensitive-flag confirm).
|
|
7083
|
+
sensitive: true
|
|
7054
7084
|
},
|
|
7055
7085
|
{
|
|
7056
7086
|
key: "compaction-notice",
|
|
@@ -9199,4 +9229,4 @@ export {
|
|
|
9199
9229
|
stopAllSessionsAndWait,
|
|
9200
9230
|
getProjectDir
|
|
9201
9231
|
};
|
|
9202
|
-
//# sourceMappingURL=chunk-
|
|
9232
|
+
//# sourceMappingURL=chunk-E45AAMBQ.js.map
|