@integrity-labs/agt-cli 0.28.974 → 0.28.976
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 +5 -5
- package/dist/{chunk-3PYNSD4I.js → chunk-CIC25QXS.js} +14 -14
- package/dist/{chunk-3PYNSD4I.js.map → chunk-CIC25QXS.js.map} +1 -1
- package/dist/{chunk-PHPOHMSK.js → chunk-KTFN2AIB.js} +2 -2
- package/dist/{chunk-HRHDATT5.js → chunk-VF5BT7BP.js} +42 -21
- package/dist/{chunk-HRHDATT5.js.map → chunk-VF5BT7BP.js.map} +1 -1
- package/dist/{claude-pair-runtime-U6GBR7KM.js → claude-pair-runtime-XOIAF3ZU.js} +2 -2
- package/dist/lib/manager-worker.js +14 -14
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +71 -24
- package/dist/mcp/index.js +38 -17
- package/dist/mcp/origami.js +34 -13
- package/dist/mcp/slack-channel.js +56 -35
- package/dist/mcp/teams-channel.js +5 -5
- package/dist/mcp/telegram-channel.js +49 -28
- package/dist/mcp/whatsapp-channel.js +9 -9
- package/dist/{persistent-session-YJJXZSUE.js → persistent-session-26W47NVS.js} +3 -3
- package/dist/{responsiveness-probe-SQZGSNVI.js → responsiveness-probe-KMHYGGYP.js} +3 -3
- package/dist/{session-auth-dead-7OLNDHJC.js → session-auth-dead-CRG2ESD2.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-PHPOHMSK.js.map → chunk-KTFN2AIB.js.map} +0 -0
- /package/dist/{claude-pair-runtime-U6GBR7KM.js.map → claude-pair-runtime-XOIAF3ZU.js.map} +0 -0
- /package/dist/{persistent-session-YJJXZSUE.js.map → persistent-session-26W47NVS.js.map} +0 -0
- /package/dist/{responsiveness-probe-SQZGSNVI.js.map → responsiveness-probe-KMHYGGYP.js.map} +0 -0
- /package/dist/{session-auth-dead-7OLNDHJC.js.map → session-auth-dead-CRG2ESD2.js.map} +0 -0
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
rotateDailySession,
|
|
21
21
|
sessionFileExists,
|
|
22
22
|
todayLocalIso
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-VF5BT7BP.js";
|
|
24
24
|
import {
|
|
25
25
|
classifyUnanswerablePane,
|
|
26
26
|
findUsageLimitResetHint,
|
|
@@ -5575,4 +5575,4 @@ export {
|
|
|
5575
5575
|
stopAllSessionsAndWait,
|
|
5576
5576
|
getProjectDir
|
|
5577
5577
|
};
|
|
5578
|
-
//# sourceMappingURL=chunk-
|
|
5578
|
+
//# sourceMappingURL=chunk-KTFN2AIB.js.map
|
|
@@ -1303,8 +1303,8 @@ ${desc}
|
|
|
1303
1303
|
|
|
1304
1304
|
**The delivery rule, true of every reply below:** the ONLY way a channel user
|
|
1305
1305
|
(Slack, Telegram, Microsoft Teams, Direct Chat) receives anything from you is a
|
|
1306
|
-
channel reply tool call - \`
|
|
1307
|
-
or \`
|
|
1306
|
+
channel reply tool call - \`slack_reply\`, \`telegram_reply\`, \`teams_reply\`,
|
|
1307
|
+
or \`direct_chat_reply\`. Plain text you write in your turn is NOT delivered to
|
|
1308
1308
|
the user; it goes only to your local session log. So always reply on the channel
|
|
1309
1309
|
the message arrived on, and never answer a channel message with plain text
|
|
1310
1310
|
alone: if you did not call a reply tool, the user received nothing.
|
|
@@ -1412,17 +1412,17 @@ ${resolvedChannels?.includes("slack") ? `
|
|
|
1412
1412
|
## Slack
|
|
1413
1413
|
|
|
1414
1414
|
Slack MCP server connected. Triage per \xA7 FIRST ACTION on
|
|
1415
|
-
every channel message; acknowledge before slow work. Only a \`
|
|
1415
|
+
every channel message; acknowledge before slow work. Only a \`slack_reply\`
|
|
1416
1416
|
call reaches the user; plain text does not. Tools:
|
|
1417
1417
|
|
|
1418
|
-
- **
|
|
1419
|
-
- **
|
|
1418
|
+
- **slack_reply** \u2014 reply in a channel/thread
|
|
1419
|
+
- **slack_react** \u2014 an emoji reaction (sparingly \u2014 see taxonomy)
|
|
1420
1420
|
- **slack_read_thread** / **slack_read_history** \u2014 re-read a thread, or a
|
|
1421
1421
|
channel's recent messages (\xA7 Reading a conversation back)
|
|
1422
1422
|
|
|
1423
1423
|
Inbound gets an automatic \u{1F440}; don't duplicate it. Prefer a reply to a reaction.
|
|
1424
1424
|
|
|
1425
|
-
**Reaction taxonomy (the only emoji for
|
|
1425
|
+
**Reaction taxonomy (the only emoji for slack_react):**
|
|
1426
1426
|
- \u2705 (\`white_check_mark\`) \u2014 done, and a text reply isn't warranted.
|
|
1427
1427
|
- \u274C (\`x\`) \u2014 **execution failure only**: you tried it and it errored. Never for
|
|
1428
1428
|
"skipped", "disagree", "not addressed to me", "n/a" or "noted".
|
|
@@ -1641,7 +1641,7 @@ When you reply to a user via any channel (Slack, Telegram, direct chat, schedule
|
|
|
1641
1641
|
- **Match the scope of the request.** A yes/no question gets a one-line answer; a "quick summary" gets a summary, not a dissertation. Cut any section, caveat, or restatement that doesn't directly answer what was asked.
|
|
1642
1642
|
- **Never reference internal state.** Memory files, \`/tmp/\` paths, kanban task IDs, filesystem locations, "saved to \u2026" / "logged to \u2026" notes \u2014 these are invisible to the recipient and waste their attention. Only the deliverable content belongs in your reply.
|
|
1643
1643
|
- **Put the full deliverable in the reply itself.** Don't tease ("I've prepared a detailed brief"), don't point "above" or "attached", and don't assume the recipient can see intermediate tool output. If they asked for a brief, the brief goes verbatim into your reply.
|
|
1644
|
-
- **If the deliverable is a file** (PDF, CSV, screenshot, export, report), upload it with the channel's file-upload tool (e.g. \`
|
|
1644
|
+
- **If the deliverable is a file** (PDF, CSV, screenshot, export, report), upload it with the channel's file-upload tool (e.g. \`slack_upload_file\`) rather than describing its path. The recipient cannot access your filesystem.
|
|
1645
1645
|
|
|
1646
1646
|
## Standards
|
|
1647
1647
|
|
|
@@ -7378,11 +7378,18 @@ var FLAG_REGISTRY = [
|
|
|
7378
7378
|
},
|
|
7379
7379
|
{
|
|
7380
7380
|
key: "ip-allowlist-enforce-admin-debug",
|
|
7381
|
-
description: "ENG-10594 - whether the IP allowlist on the admin-debug surface (/admin/debug/*, including the deliberately unauthenticated POST /admin/debug/token that exchanges a tlk_ key) REFUSES, or merely observes. OFF (default) = shadow: every request is still evaluated and logged with verdict=admit or verdict=would-refuse, and nothing is ever rejected. ON = a caller whose platform-attested source address is outside AGT_IP_ALLOWLIST_ADMIN_DEBUG gets a bare 403. THE SSM PARAMETER IS A SECOND LEVER AND BOTH ARE NEEDED: with the list unset this flag does nothing, because an unconfigured allowlist admits everyone by design. Arm in that order - populate the list, read the shadow logs until the would-refuse set is understood, then flip this. Deliberately global (evaluated with an empty context): the middleware runs BEFORE authentication, so there is no verified org to scope by, and taking one from an unverified request would let a caller choose its own enforcement posture.
|
|
7381
|
+
description: "ENG-10594 - whether the IP allowlist on the admin-debug surface (/admin/debug/*, including the deliberately unauthenticated POST /admin/debug/token that exchanges a tlk_ key) REFUSES, or merely observes. OFF (default) = shadow: every request is still evaluated and logged with verdict=admit or verdict=would-refuse, and nothing is ever rejected. ON = a caller whose platform-attested source address is outside AGT_IP_ALLOWLIST_ADMIN_DEBUG gets a bare 403. THE SSM PARAMETER IS A SECOND LEVER AND BOTH ARE NEEDED: with the list unset this flag does nothing, because an unconfigured allowlist admits everyone by design. Arm in that order - populate the list, read the shadow logs until the would-refuse set is understood, then flip this. Deliberately global (evaluated with an empty context): the middleware runs BEFORE authentication, so there is no verified org to scope by, and taking one from an unverified request would let a caller choose its own enforcement posture. There is deliberately NO counterpart flag for the per-agent MCP surface: that one is shadow-only structurally (its ENFORCE_FLAG entry is null), so arming this one does not and cannot arm that one. See the comment below this entry for why.",
|
|
7382
7382
|
flagType: "boolean",
|
|
7383
|
-
// Shadow. The measurement comes first
|
|
7384
|
-
//
|
|
7385
|
-
//
|
|
7383
|
+
// Shadow. The measurement comes first - and ENG-10664 corrected what the
|
|
7384
|
+
// measurement is OF. This comment used to say "nobody yet knows the real set
|
|
7385
|
+
// of staff addresses": there is no such set. Measured over 48h, all 315
|
|
7386
|
+
// requests to this surface came from ONE address, the agt-hosts AZ-2a NAT
|
|
7387
|
+
// EIP - an AGENT calling the debug_* tools, not a person. The decided policy
|
|
7388
|
+
// is that it stays that way (admin-debug is only ever reached from our own
|
|
7389
|
+
// NAT gateways). So the pre-arm check is not "does my laptop appear" but
|
|
7390
|
+
// "is every NAT EIP in the list", because an AZ whose NAT has not yet
|
|
7391
|
+
// carried a debug_* call is absent from the log and would be refused the
|
|
7392
|
+
// instant this flips. See docs/runbooks/ip-allowlist-rollout.md step 3.
|
|
7386
7393
|
defaultValue: false,
|
|
7387
7394
|
// Arming it changes who can reach production diagnostics. Worth one
|
|
7388
7395
|
// confirmation.
|
|
@@ -7397,20 +7404,34 @@ var FLAG_REGISTRY = [
|
|
|
7397
7404
|
// ENFORCE_FLAG (packages/api/src/middleware/ip-allowlist.ts) is null, so no
|
|
7398
7405
|
// flag is consulted and no flag flip can arm it.
|
|
7399
7406
|
//
|
|
7400
|
-
// Why it is not simply a second flag defaulting false
|
|
7401
|
-
//
|
|
7402
|
-
//
|
|
7403
|
-
//
|
|
7404
|
-
//
|
|
7405
|
-
//
|
|
7406
|
-
//
|
|
7407
|
+
// Why it is not simply a second flag defaulting false (CORRECTED, ENG-10664):
|
|
7408
|
+
//
|
|
7409
|
+
// This comment used to say the callers are agent HOSTS, most of which have no
|
|
7410
|
+
// allowlistable address per ADR-0032. That is the wrong caller. Agent hosts do
|
|
7411
|
+
// not call this surface at all: its handler's first act is
|
|
7412
|
+
// validateMcpAccessToken() against `mcp_oauth_tokens` (routes/mcp.ts:87, token
|
|
7413
|
+
// check at :91), so a host JWT is rejected outright - routes/host-runtime.ts
|
|
7414
|
+
// :33421 says so in as many words, which is why the ENG-4724 /host/* twins
|
|
7415
|
+
// exist. The caller set is remote MCP OAuth clients, structurally.
|
|
7416
|
+
//
|
|
7417
|
+
// The conclusion is unchanged and ONLY the reason has moved. Allowlisting this
|
|
7418
|
+
// surface would mean pinning a THIRD PARTY's egress ranges rather than our own
|
|
7419
|
+
// NAT EIPs - a different control, a different owner, a different failure mode:
|
|
7420
|
+
// they move a range and agent MCP access breaks with no signal on our side.
|
|
7421
|
+
// Per docs/runbooks/composio-allowlist-rollout.md this class of change has no
|
|
7407
7422
|
// fleet-level undo. A flag would leave that one toggle away during an
|
|
7408
7423
|
// incident, from someone who had just armed the admin-debug surface and
|
|
7409
7424
|
// reasonably assumed the pair moved together. Requiring a code change puts
|
|
7410
7425
|
// review in front of an irreversible action, which is the right price.
|
|
7411
7426
|
//
|
|
7412
|
-
//
|
|
7413
|
-
//
|
|
7427
|
+
// Keeping the false rationale would have been worse than having none: a reader
|
|
7428
|
+
// who checked it would find it does not hold and might "fix" it by adding the
|
|
7429
|
+
// flag. That is the failure this rewrite exists to prevent.
|
|
7430
|
+
//
|
|
7431
|
+
// If we ever DECIDE to take on that third-party dependency deliberately,
|
|
7432
|
+
// adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
|
|
7433
|
+
// decision to own someone else's egress, not a discovery that the population
|
|
7434
|
+
// was allowlistable all along.
|
|
7414
7435
|
];
|
|
7415
7436
|
var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
|
|
7416
7437
|
function getFlagDefinition(key) {
|
|
@@ -15179,4 +15200,4 @@ export {
|
|
|
15179
15200
|
peekCurrentSession,
|
|
15180
15201
|
readDailySessionPin
|
|
15181
15202
|
};
|
|
15182
|
-
//# sourceMappingURL=chunk-
|
|
15203
|
+
//# sourceMappingURL=chunk-VF5BT7BP.js.map
|