@integrity-labs/agt-cli 0.28.258 → 0.28.260
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-L2GVB37X.js → chunk-22BZ2WQM.js} +28 -4
- package/dist/chunk-22BZ2WQM.js.map +1 -0
- package/dist/{chunk-2AWMBQJD.js → chunk-PZJRZPJF.js} +3 -3
- package/dist/{claude-pair-runtime-HM6XZJWB.js → claude-pair-runtime-7ZP2OZ5T.js} +2 -2
- package/dist/lib/manager-worker.js +10 -10
- package/dist/mcp/index.js +15 -3
- package/dist/mcp/origami.js +13 -0
- package/dist/mcp/slack-channel.js +5 -1
- package/dist/mcp/telegram-channel.js +9 -2
- package/dist/{persistent-session-W4K5XKD7.js → persistent-session-XHJIV3VJ.js} +2 -2
- package/dist/{responsiveness-probe-Y4FBRFRW.js → responsiveness-probe-JMPLO34I.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-L2GVB37X.js.map +0 -1
- /package/dist/{chunk-2AWMBQJD.js.map → chunk-PZJRZPJF.js.map} +0 -0
- /package/dist/{claude-pair-runtime-HM6XZJWB.js.map → claude-pair-runtime-7ZP2OZ5T.js.map} +0 -0
- /package/dist/{persistent-session-W4K5XKD7.js.map → persistent-session-XHJIV3VJ.js.map} +0 -0
- /package/dist/{responsiveness-probe-Y4FBRFRW.js.map → responsiveness-probe-JMPLO34I.js.map} +0 -0
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
resolveConnectivityProbe,
|
|
19
19
|
worseConnectivityOutcome,
|
|
20
20
|
wrapScheduledTaskPrompt
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-22BZ2WQM.js";
|
|
22
22
|
import {
|
|
23
23
|
parsePsRows
|
|
24
24
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -5832,7 +5832,7 @@ function requireHost() {
|
|
|
5832
5832
|
}
|
|
5833
5833
|
|
|
5834
5834
|
// src/lib/api-client.ts
|
|
5835
|
-
var agtCliVersion = true ? "0.28.
|
|
5835
|
+
var agtCliVersion = true ? "0.28.260" : "dev";
|
|
5836
5836
|
var lastConfigHash = null;
|
|
5837
5837
|
function setConfigHash(hash) {
|
|
5838
5838
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -8102,4 +8102,4 @@ export {
|
|
|
8102
8102
|
managerInstallSystemUnitCommand,
|
|
8103
8103
|
managerUninstallSystemUnitCommand
|
|
8104
8104
|
};
|
|
8105
|
-
//# sourceMappingURL=chunk-
|
|
8105
|
+
//# sourceMappingURL=chunk-PZJRZPJF.js.map
|
|
@@ -100,7 +100,7 @@ async function spawnPairSession(session) {
|
|
|
100
100
|
return { ok: true };
|
|
101
101
|
} catch {
|
|
102
102
|
}
|
|
103
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
103
|
+
const { resolveClaudeBinary } = await import("./persistent-session-XHJIV3VJ.js");
|
|
104
104
|
const claudeBin = resolveClaudeBinary();
|
|
105
105
|
const pairEnv = {
|
|
106
106
|
...process.env,
|
|
@@ -373,4 +373,4 @@ export {
|
|
|
373
373
|
startClaudePair,
|
|
374
374
|
submitClaudePairCode
|
|
375
375
|
};
|
|
376
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
376
|
+
//# sourceMappingURL=claude-pair-runtime-7ZP2OZ5T.js.map
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
requireHost,
|
|
38
38
|
safeWriteJsonAtomic,
|
|
39
39
|
setConfigHash
|
|
40
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-PZJRZPJF.js";
|
|
41
41
|
import {
|
|
42
42
|
getProjectDir as getProjectDir2,
|
|
43
43
|
getReadyTasks,
|
|
@@ -122,7 +122,7 @@ import {
|
|
|
122
122
|
takeZombieDetection,
|
|
123
123
|
transcriptActivityAgeSeconds,
|
|
124
124
|
writeEgressAllowlist
|
|
125
|
-
} from "../chunk-
|
|
125
|
+
} from "../chunk-22BZ2WQM.js";
|
|
126
126
|
import {
|
|
127
127
|
reapOrphanChannelMcps
|
|
128
128
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -6669,7 +6669,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
6669
6669
|
var lastVersionCheckAt = 0;
|
|
6670
6670
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
6671
6671
|
var lastResponsivenessProbeAt = 0;
|
|
6672
|
-
var agtCliVersion = true ? "0.28.
|
|
6672
|
+
var agtCliVersion = true ? "0.28.260" : "dev";
|
|
6673
6673
|
function resolveBrewPath(execFileSync2) {
|
|
6674
6674
|
try {
|
|
6675
6675
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -7519,7 +7519,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
7519
7519
|
if (codeNames.length === 0) return;
|
|
7520
7520
|
void (async () => {
|
|
7521
7521
|
try {
|
|
7522
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
7522
|
+
const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
|
|
7523
7523
|
await api.post("/host/heartbeat", {
|
|
7524
7524
|
host_id: hostId,
|
|
7525
7525
|
agent_diagnostics: collectDiagnostics(codeNames)
|
|
@@ -7617,7 +7617,7 @@ async function pollCycle() {
|
|
|
7617
7617
|
}
|
|
7618
7618
|
try {
|
|
7619
7619
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
7620
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
7620
|
+
const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
|
|
7621
7621
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
7622
7622
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
|
|
7623
7623
|
let tailscaleHostname;
|
|
@@ -7765,7 +7765,7 @@ async function pollCycle() {
|
|
|
7765
7765
|
const {
|
|
7766
7766
|
collectResponsivenessProbes,
|
|
7767
7767
|
getResponsivenessIntervalMs
|
|
7768
|
-
} = await import("../responsiveness-probe-
|
|
7768
|
+
} = await import("../responsiveness-probe-JMPLO34I.js");
|
|
7769
7769
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
7770
7770
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
7771
7771
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -7797,7 +7797,7 @@ async function pollCycle() {
|
|
|
7797
7797
|
collectResponsivenessProbes,
|
|
7798
7798
|
livePendingInboundOldestAgeSeconds,
|
|
7799
7799
|
parkPendingInbound
|
|
7800
|
-
} = await import("../responsiveness-probe-
|
|
7800
|
+
} = await import("../responsiveness-probe-JMPLO34I.js");
|
|
7801
7801
|
const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
|
|
7802
7802
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
7803
7803
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -10623,7 +10623,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
10623
10623
|
void api.post("/host/restart-ack", { host_id: hostId, agent_id: agentId, restart_requested_at: requestedAt }).catch((err) => log(`[restart-lane] ack failed for '${codeName}': ${err.message}`));
|
|
10624
10624
|
void (async () => {
|
|
10625
10625
|
try {
|
|
10626
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10626
|
+
const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
|
|
10627
10627
|
await api.post("/host/heartbeat", {
|
|
10628
10628
|
host_id: hostId,
|
|
10629
10629
|
agent_diagnostics: collectDiagnostics([codeName])
|
|
@@ -10673,7 +10673,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
10673
10673
|
}
|
|
10674
10674
|
try {
|
|
10675
10675
|
const hostId = await getHostId();
|
|
10676
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10676
|
+
const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
|
|
10677
10677
|
await api.post("/host/heartbeat", {
|
|
10678
10678
|
host_id: hostId,
|
|
10679
10679
|
agent_diagnostics: collectDiagnostics([codeName])
|
|
@@ -11064,7 +11064,7 @@ async function processClaudePairSessions(agents) {
|
|
|
11064
11064
|
killPairSession,
|
|
11065
11065
|
pairTmuxSession,
|
|
11066
11066
|
finalizeClaudePairOnboarding
|
|
11067
|
-
} = await import("../claude-pair-runtime-
|
|
11067
|
+
} = await import("../claude-pair-runtime-7ZP2OZ5T.js");
|
|
11068
11068
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
11069
11069
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
11070
11070
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
package/dist/mcp/index.js
CHANGED
|
@@ -21506,7 +21506,14 @@ async function refreshToken() {
|
|
|
21506
21506
|
const res = await fetch(`${AGT_HOST}/host/exchange`, {
|
|
21507
21507
|
method: "POST",
|
|
21508
21508
|
headers: { "Content-Type": "application/json" },
|
|
21509
|
-
|
|
21509
|
+
// ENG-7449 (ADR-0042 P1): scope the main agent token to its own agent. The
|
|
21510
|
+
// general-purpose token verifies AS self (`body.agent_id = AGT_AGENT_ID`) on
|
|
21511
|
+
// every host route; cross-agent tools (kanban_assign / move) carry the peer
|
|
21512
|
+
// as `target_agent` and are gated by the cross-team peer-consent model, NOT
|
|
21513
|
+
// this token's host binding — so self-scope bounds the token without
|
|
21514
|
+
// breaking cross-agent delegation. `agent_id` drops out if AGT_AGENT_ID is
|
|
21515
|
+
// unset (claim-less, unchanged).
|
|
21516
|
+
body: JSON.stringify({ host_key: AGT_API_KEY, agent_id: AGT_AGENT_ID })
|
|
21510
21517
|
});
|
|
21511
21518
|
if (!res.ok) {
|
|
21512
21519
|
const text = await res.text().catch(() => res.statusText);
|
|
@@ -21989,7 +21996,10 @@ server.tool(
|
|
|
21989
21996
|
status: external_exports.enum(["backlog", "todo", "in_progress"]).optional().describe(
|
|
21990
21997
|
"Which column the card lands in on the recipient's board (default: todo). Use 'backlog' to stage it as not-yet-actionable work the teammate will pull later, 'todo' for ready-to-work, 'in_progress' if they should start immediately."
|
|
21991
21998
|
),
|
|
21992
|
-
deliverable: external_exports.string().optional().describe("Expected output/deliverable from the target")
|
|
21999
|
+
deliverable: external_exports.string().optional().describe("Expected output/deliverable from the target"),
|
|
22000
|
+
deliver_to: external_exports.string().trim().regex(/^[UW][A-Z0-9]{6,}$/, "deliver_to must be a Slack user id (e.g. U01234567)").optional().describe(
|
|
22001
|
+
"Optional: a Slack user id (e.g. U01234567) to DM the completion notice to directly when the target finishes, in ADDITION to the notice landing on your board. Use this to deliver the result straight to the person who wanted it (e.g. the requester's Slack id from the originating message) instead of hand-forwarding it yourself. Must be a Slack user id, not a @handle or display name."
|
|
22002
|
+
)
|
|
21993
22003
|
},
|
|
21994
22004
|
async (params) => {
|
|
21995
22005
|
try {
|
|
@@ -22007,7 +22017,9 @@ server.tool(
|
|
|
22007
22017
|
// ENG-6967: only send status when set, so the route applies its default
|
|
22008
22018
|
// ('todo') and the same-team handoff path stays byte-for-byte unchanged.
|
|
22009
22019
|
...params.status !== void 0 ? { status: params.status } : {},
|
|
22010
|
-
deliverable: params.deliverable
|
|
22020
|
+
deliverable: params.deliverable,
|
|
22021
|
+
// CS-1438: only sent when set; the route treats absence as board-ack-only.
|
|
22022
|
+
...params.deliver_to !== void 0 ? { deliver_to: params.deliver_to } : {}
|
|
22011
22023
|
});
|
|
22012
22024
|
const where = data.cross_team ? ` on team ${data.target_team ?? params.target_team}` : "";
|
|
22013
22025
|
return {
|
package/dist/mcp/origami.js
CHANGED
|
@@ -39740,6 +39740,19 @@ var FLAG_REGISTRY = [
|
|
|
39740
39740
|
defaultValue: false,
|
|
39741
39741
|
public: true
|
|
39742
39742
|
},
|
|
39743
|
+
{
|
|
39744
|
+
key: "onboarding-auto-deploy",
|
|
39745
|
+
description: `Auto-deploy the first agent during onboarding (ENG-7378): the agent edit page's Deploy & Test tab fires the existing deploy (draft -> active) automatically once the agent's host is fully deployed (active + manager heartbeating, not provisioning) AND Claude-authenticated (claude_auth_status=valid), replacing the manual "Deploy Agent" click in the recruit funnel. Only draft, non-system_support agents; a failed or timed-out attempt falls back to the manual button (no auto-retry loop).`,
|
|
39746
|
+
flagType: "boolean",
|
|
39747
|
+
// PUBLIC (ADR-0022 §2): a browser-read UI-behaviour gate (mirrors
|
|
39748
|
+
// direct-chat-drawer). Declared safe value is `false`: auto-deploy flips an
|
|
39749
|
+
// agent's status by itself, so a flag-read error must never switch it on.
|
|
39750
|
+
// Ships dark; enable per-org (or fleet-wide) from the admin Feature Flags
|
|
39751
|
+
// page. When off, the recruit funnel keeps the manual Deploy button. No
|
|
39752
|
+
// envVar: a browser-only gate has no host-side override.
|
|
39753
|
+
defaultValue: false,
|
|
39754
|
+
public: true
|
|
39755
|
+
},
|
|
39743
39756
|
{
|
|
39744
39757
|
key: "manager-failure-notify",
|
|
39745
39758
|
description: "Route terminal integration-failure notifications to the agent's human manager (reports_to \u2192 preferred channel) instead of only the agent's own direct-chat (ENG-6334). Boolean gate; ships dark.",
|
|
@@ -17459,7 +17459,11 @@ function createCrossTeamPeerAuditClient(args) {
|
|
|
17459
17459
|
const resp = await fetchImpl(`${base}/host/exchange`, {
|
|
17460
17460
|
method: "POST",
|
|
17461
17461
|
headers: { "Content-Type": "application/json" },
|
|
17462
|
-
|
|
17462
|
+
// ENG-7449 (ADR-0042 P1): scope the exchanged token to this agent. This
|
|
17463
|
+
// client acts strictly AS self (every event is posted with
|
|
17464
|
+
// `agent_id: agentId`); the foreign `peer_agent_id` is audit DATA, never
|
|
17465
|
+
// the auth subject, so a self-scoped token is correct and complete.
|
|
17466
|
+
body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
|
|
17463
17467
|
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS2)
|
|
17464
17468
|
});
|
|
17465
17469
|
if (!resp.ok) {
|
|
@@ -15480,7 +15480,10 @@ function createDefaultPeerRateApiClient(args) {
|
|
|
15480
15480
|
const resp = await fetchImpl(`${base}/host/exchange`, {
|
|
15481
15481
|
method: "POST",
|
|
15482
15482
|
headers: { "Content-Type": "application/json" },
|
|
15483
|
-
|
|
15483
|
+
// ENG-7449 (ADR-0042 P1): scope the token to this agent. Every rate event
|
|
15484
|
+
// is recorded/queried with `agent_id: args.agentId` (self); `peer_bot_id`
|
|
15485
|
+
// is a Telegram bot id, not an agent, so self-scope is correct.
|
|
15486
|
+
body: JSON.stringify({ host_key: args.agtApiKey, agent_id: args.agentId })
|
|
15484
15487
|
});
|
|
15485
15488
|
if (!resp.ok) {
|
|
15486
15489
|
const body = await resp.text().catch(() => "");
|
|
@@ -15553,7 +15556,11 @@ function createCrossTeamPeerAuditClient(args) {
|
|
|
15553
15556
|
const resp = await fetchImpl(`${base}/host/exchange`, {
|
|
15554
15557
|
method: "POST",
|
|
15555
15558
|
headers: { "Content-Type": "application/json" },
|
|
15556
|
-
|
|
15559
|
+
// ENG-7449 (ADR-0042 P1): scope the exchanged token to this agent. This
|
|
15560
|
+
// client acts strictly AS self (every event is posted with
|
|
15561
|
+
// `agent_id: agentId`); the foreign `peer_agent_id` is audit DATA, never
|
|
15562
|
+
// the auth subject, so a self-scoped token is correct and complete.
|
|
15563
|
+
body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
|
|
15557
15564
|
signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS)
|
|
15558
15565
|
});
|
|
15559
15566
|
if (!resp.ok) {
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
writeDirectChatSessionState,
|
|
37
37
|
writeEgressAllowlist,
|
|
38
38
|
writePersistentClaudeWrapper
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-22BZ2WQM.js";
|
|
40
40
|
import "./chunk-XWVM4KPK.js";
|
|
41
41
|
export {
|
|
42
42
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -77,4 +77,4 @@ export {
|
|
|
77
77
|
writeEgressAllowlist,
|
|
78
78
|
writePersistentClaudeWrapper
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=persistent-session-
|
|
80
|
+
//# sourceMappingURL=persistent-session-XHJIV3VJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-22BZ2WQM.js";
|
|
4
4
|
import "./chunk-XWVM4KPK.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/responsiveness-probe.ts
|
|
@@ -418,4 +418,4 @@ export {
|
|
|
418
418
|
readAndResetSlackReplyBindingClassifications,
|
|
419
419
|
readAndResetSlackReplyTargetClassifications
|
|
420
420
|
};
|
|
421
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
421
|
+
//# sourceMappingURL=responsiveness-probe-JMPLO34I.js.map
|