@integrity-labs/agt-cli 0.28.931 → 0.28.932
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-HSXAGIVO.js → chunk-7BQR2GIS.js} +4 -4
- package/dist/{chunk-7F32775G.js → chunk-7KVUXOE4.js} +9 -8
- package/dist/chunk-7KVUXOE4.js.map +1 -0
- package/dist/{chunk-HC3EDWKC.js → chunk-RZXKHPTJ.js} +2 -2
- package/dist/{claude-pair-runtime-TDP2NJTT.js → claude-pair-runtime-XJUTHQBY.js} +2 -2
- package/dist/lib/manager-worker.js +14 -14
- package/dist/mcp/direct-chat-channel.js +1 -1
- package/dist/mcp/slack-channel.js +1 -1
- package/dist/mcp/teams-channel.js +1 -1
- package/dist/mcp/telegram-channel.js +1 -1
- package/dist/mcp/whatsapp-channel.js +2 -2
- package/dist/{persistent-session-Z7S2MMRH.js → persistent-session-SJ5ANAFY.js} +3 -3
- package/dist/{responsiveness-probe-SR62Y32C.js → responsiveness-probe-ROU7HNBP.js} +3 -3
- package/dist/{session-auth-dead-25KP23AU.js → session-auth-dead-7IA3OFBT.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-7F32775G.js.map +0 -1
- /package/dist/{chunk-HSXAGIVO.js.map → chunk-7BQR2GIS.js.map} +0 -0
- /package/dist/{chunk-HC3EDWKC.js.map → chunk-RZXKHPTJ.js.map} +0 -0
- /package/dist/{claude-pair-runtime-TDP2NJTT.js.map → claude-pair-runtime-XJUTHQBY.js.map} +0 -0
- /package/dist/{persistent-session-Z7S2MMRH.js.map → persistent-session-SJ5ANAFY.js.map} +0 -0
- /package/dist/{responsiveness-probe-SR62Y32C.js.map → responsiveness-probe-ROU7HNBP.js.map} +0 -0
- /package/dist/{session-auth-dead-25KP23AU.js.map → session-auth-dead-7IA3OFBT.js.map} +0 -0
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
rotateDailySession,
|
|
20
20
|
sessionFileExists,
|
|
21
21
|
todayLocalIso
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-7KVUXOE4.js";
|
|
23
23
|
import {
|
|
24
24
|
reapOrphanChannelMcps
|
|
25
25
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -5730,4 +5730,4 @@ export {
|
|
|
5730
5730
|
stopAllSessionsAndWait,
|
|
5731
5731
|
getProjectDir
|
|
5732
5732
|
};
|
|
5733
|
-
//# sourceMappingURL=chunk-
|
|
5733
|
+
//# sourceMappingURL=chunk-RZXKHPTJ.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-SJ5ANAFY.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-XJUTHQBY.js.map
|
|
@@ -63,7 +63,7 @@ import {
|
|
|
63
63
|
safeWriteJsonAtomic,
|
|
64
64
|
setConfigHash,
|
|
65
65
|
tripClass
|
|
66
|
-
} from "../chunk-
|
|
66
|
+
} from "../chunk-7BQR2GIS.js";
|
|
67
67
|
import {
|
|
68
68
|
getProjectDir as getProjectDir2,
|
|
69
69
|
getReadyTasks,
|
|
@@ -136,7 +136,7 @@ import {
|
|
|
136
136
|
takeZombieDetection,
|
|
137
137
|
toOpencodeModel,
|
|
138
138
|
writeEgressAllowlist
|
|
139
|
-
} from "../chunk-
|
|
139
|
+
} from "../chunk-RZXKHPTJ.js";
|
|
140
140
|
import {
|
|
141
141
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
142
142
|
AnchorSessionClient,
|
|
@@ -232,7 +232,7 @@ import {
|
|
|
232
232
|
subagentActivityAgeSeconds,
|
|
233
233
|
sumTranscriptUsageInWindow,
|
|
234
234
|
transcriptActivityAgeSeconds
|
|
235
|
-
} from "../chunk-
|
|
235
|
+
} from "../chunk-7KVUXOE4.js";
|
|
236
236
|
import {
|
|
237
237
|
reapOrphanChannelMcps
|
|
238
238
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -13230,7 +13230,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
13230
13230
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
13231
13231
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
13232
13232
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
13233
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
13233
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-ROU7HNBP.js");
|
|
13234
13234
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
13235
13235
|
if (newest === null) return null;
|
|
13236
13236
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -13915,7 +13915,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
13915
13915
|
var lastVersionCheckAt = 0;
|
|
13916
13916
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
13917
13917
|
var lastResponsivenessProbeAt = 0;
|
|
13918
|
-
var agtCliVersion = true ? "0.28.
|
|
13918
|
+
var agtCliVersion = true ? "0.28.932" : "dev";
|
|
13919
13919
|
function resolveBrewPath(execFileSync2) {
|
|
13920
13920
|
try {
|
|
13921
13921
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -15505,7 +15505,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
15505
15505
|
if (codeNames.length === 0) return;
|
|
15506
15506
|
void (async () => {
|
|
15507
15507
|
try {
|
|
15508
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15508
|
+
const { collectDiagnostics } = await import("../persistent-session-SJ5ANAFY.js");
|
|
15509
15509
|
await api.post("/host/heartbeat", {
|
|
15510
15510
|
host_id: hostId,
|
|
15511
15511
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -15647,7 +15647,7 @@ async function pollCycleInner() {
|
|
|
15647
15647
|
}
|
|
15648
15648
|
try {
|
|
15649
15649
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
15650
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15650
|
+
const { collectDiagnostics } = await import("../persistent-session-SJ5ANAFY.js");
|
|
15651
15651
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
15652
15652
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
|
|
15653
15653
|
let tailscaleHostname;
|
|
@@ -15822,7 +15822,7 @@ async function pollCycleInner() {
|
|
|
15822
15822
|
collectPanelessActivityProbes,
|
|
15823
15823
|
getResponsivenessIntervalMs,
|
|
15824
15824
|
occupancyQualificationClassifications
|
|
15825
|
-
} = await import("../responsiveness-probe-
|
|
15825
|
+
} = await import("../responsiveness-probe-ROU7HNBP.js");
|
|
15826
15826
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
15827
15827
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
15828
15828
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -15939,7 +15939,7 @@ async function pollCycleInner() {
|
|
|
15939
15939
|
collectResponsivenessProbes,
|
|
15940
15940
|
livePendingInboundOldestAgeSeconds,
|
|
15941
15941
|
parkPendingInbound
|
|
15942
|
-
} = await import("../responsiveness-probe-
|
|
15942
|
+
} = await import("../responsiveness-probe-ROU7HNBP.js");
|
|
15943
15943
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
15944
15944
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
15945
15945
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -16095,7 +16095,7 @@ async function pollCycleInner() {
|
|
|
16095
16095
|
}
|
|
16096
16096
|
try {
|
|
16097
16097
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
16098
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
16098
|
+
const { probeSessionAuth } = await import("../session-auth-dead-7IA3OFBT.js");
|
|
16099
16099
|
const observations = [];
|
|
16100
16100
|
const pendingCacheCommits = [];
|
|
16101
16101
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -20359,7 +20359,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
20359
20359
|
try {
|
|
20360
20360
|
const freshId = rotateSessionForWedge(codeName);
|
|
20361
20361
|
consecutiveWedgeCycles.delete(codeName);
|
|
20362
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
20362
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-ROU7HNBP.js");
|
|
20363
20363
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
20364
20364
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
20365
20365
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -20402,7 +20402,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
20402
20402
|
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}`));
|
|
20403
20403
|
void (async () => {
|
|
20404
20404
|
try {
|
|
20405
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
20405
|
+
const { collectDiagnostics } = await import("../persistent-session-SJ5ANAFY.js");
|
|
20406
20406
|
await api.post("/host/heartbeat", {
|
|
20407
20407
|
host_id: hostId,
|
|
20408
20408
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -20453,7 +20453,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
20453
20453
|
}
|
|
20454
20454
|
try {
|
|
20455
20455
|
const hostId = await getHostId();
|
|
20456
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
20456
|
+
const { collectDiagnostics } = await import("../persistent-session-SJ5ANAFY.js");
|
|
20457
20457
|
await api.post("/host/heartbeat", {
|
|
20458
20458
|
host_id: hostId,
|
|
20459
20459
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -21095,7 +21095,7 @@ async function processClaudePairSessions(agents) {
|
|
|
21095
21095
|
killPairSession,
|
|
21096
21096
|
pairTmuxSession,
|
|
21097
21097
|
finalizeClaudePairOnboarding
|
|
21098
|
-
} = await import("../claude-pair-runtime-
|
|
21098
|
+
} = await import("../claude-pair-runtime-XJUTHQBY.js");
|
|
21099
21099
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
21100
21100
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
21101
21101
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -39891,7 +39891,7 @@ async function readCursorAdvanceBody(res) {
|
|
|
39891
39891
|
function buildDirectChatMcpInstructions() {
|
|
39892
39892
|
return [
|
|
39893
39893
|
"CRITICAL: every response to a direct-chat <channel> tag MUST go through direct_chat.reply (passing the session_id verbatim). Text in your session WITHOUT a direct_chat.reply call never reaches the operator \u2014 the reply dies inside the agent process.",
|
|
39894
|
-
|
|
39894
|
+
"Messages from the webapp Direct Chat arrive as a channel tag whose source is direct-chat, carrying session_id and user.",
|
|
39895
39895
|
"When the tag carries user_name (and sometimes user_email / user_role), that is the verified human you are talking with; address them by name and tailor your reply to who they are. If those attributes are absent, the sender is unknown, so just reply helpfully without personalization.",
|
|
39896
39896
|
"Reply using the direct_chat.reply tool, passing the session_id from the tag.",
|
|
39897
39897
|
"Always reply to every direct chat message that expects a reply (its meta has requires_reply=true, or no requires_reply field) \u2014 the user is waiting in the webapp.",
|
|
@@ -42842,7 +42842,7 @@ function buildSlackMcpInstructions(opts) {
|
|
|
42842
42842
|
const { ackReaction, skipReactionOn, skipReaction } = opts;
|
|
42843
42843
|
return [
|
|
42844
42844
|
"CRITICAL: every response to a Slack <channel> tag MUST go through slack.reply - typed text never reaches the user. Slow work: interim ack (slack.reply interim:true), then your FINAL answer as a separate slack.reply (interim omitted). An ack is not the answer.",
|
|
42845
|
-
|
|
42845
|
+
"Each inbound tag carries inbound_id and message_ts, and sometimes thread_context. Reply with slack.reply passing inbound_id (copy it verbatim from the tag you are answering) + text; the server routes it to the right thread. Multiple <channel> tags = separate conversations: NEVER answer one user in another's inbound_id/thread. thread_context = pre-loaded thread; ground replies ONLY in it. For a self-initiated message (not a reply) set proactive:true.",
|
|
42846
42846
|
"Attachments: <channel> `files` is a JSON string - JSON.parse it. Entry with `path` (or a top-level `image_path`) is already downloaded - Read it; do NOT call slack.download_attachment. Only entries with `file_id` and no `path` (PDF/docx/csv) need slack.download_attachment (pass file_id + channel), then Read the returned path. Don't surface file-handling errors that don't affect the answer.",
|
|
42847
42847
|
"Address users by user_name, never raw user ID. In multi-participant threads the CURRENT speaker is on the latest <channel> tag.",
|
|
42848
42848
|
`Reactions (slack.react sparingly - prefer a reply): :${ackReaction}: = ack (auto-added on inbound, don't duplicate); \u2705 = success.` + (skipReactionOn ? ` "${skipReaction}" = seen, not replying.` : "") + " NEVER react to signal failure of your work - on failure slack.reply one sentence explaining it (no stack traces/secrets). \u23F3 and \u274C are system-only; never add them.",
|
|
@@ -15707,7 +15707,7 @@ var mcp = new Server(
|
|
|
15707
15707
|
// High-priority lines first — Claude Code truncates instructions at
|
|
15708
15708
|
// 2048 chars, so anything appended late silently disappears.
|
|
15709
15709
|
"CRITICAL: every response to an MS Teams <channel> tag MUST go through teams.reply. Text in your session without a teams.reply call never reaches the user.",
|
|
15710
|
-
|
|
15710
|
+
"Messages from Teams arrive as a channel tag carrying user (an AAD id), user_name, conversation_id, service_url and reply_to_id. Pass conversation_id + service_url + reply_to_id from the tag to teams.reply verbatim; threaded replies must include reply_to_id.",
|
|
15711
15711
|
"Address users by user_name, never by raw user id (AAD object ids leak directory information).",
|
|
15712
15712
|
"service_url is region-specific and arrives on every inbound \u2014 NEVER hardcode it, always echo the inbound value.",
|
|
15713
15713
|
'Channel message + auto_followed="true": only reply if you have something useful to add; otherwise silently skip.',
|
|
@@ -42288,7 +42288,7 @@ function buildTelegramMcpInstructions(opts) {
|
|
|
42288
42288
|
const skipReactionOn = opts.skipReactionOn && emoji2.length > 0 && emoji2.length <= MAX_SKIP_REACTION_UNITS;
|
|
42289
42289
|
return [
|
|
42290
42290
|
"CRITICAL: every response to a Telegram <channel> tag MUST go through telegram.reply with the chat_id from the tag \u2014 typed text never reaches the user. Slow work: interim ack (telegram.reply interim:true), then your FINAL answer as a separate telegram.reply (interim omitted). An ack is not the answer.",
|
|
42291
|
-
|
|
42291
|
+
"Messages from Telegram arrive as a channel tag carrying chat_id, user, user_name and message_id. Pass reply_to_message_id from the tag so the response lands as a quote-reply in busy chats.",
|
|
42292
42292
|
"Deliberately NOT replying (a standing rule bars you from that chat, or the message only changed state)? Call telegram.consume with the chat_id and a short reason: it settles the message without posting anything. Without a reply or a consume it counts as undelivered and re-delivers to you forever.",
|
|
42293
42293
|
"Inbound attachments: `files` on the tag is a JSON string \u2014 JSON.parse it. An entry with `path` (or top-level `image_path`) is already downloaded \u2014 Read it. Entries with `file_id` and no `path` need telegram.download_attachment (file_id + chat_id), then Read the returned path.",
|
|
42294
42294
|
'For work >30s follow the CLAUDE.md kanban flow: kanban_add \u2192 reply "On it \u2014 tracking here: <kanban URL>" \u2192 in_progress \u2192 reply the result. Simple lookups skip kanban but still reply.',
|
|
@@ -156050,11 +156050,11 @@ var mcp = new Server(
|
|
|
156050
156050
|
},
|
|
156051
156051
|
instructions: (IS_BAILEYS ? [
|
|
156052
156052
|
"CRITICAL: every response to a WhatsApp <channel> tag MUST go through whatsapp.reply. Text in your session without a tool call never reaches the user.",
|
|
156053
|
-
|
|
156053
|
+
"Messages arrive as a channel tag carrying sender (a JID), conversation_id and message_id. Pass the `sender` value verbatim as the `to` argument to whatsapp.reply.",
|
|
156054
156054
|
"whatsapp.reply sends free-form text with no restrictions (this is a linked personal number, not a business template flow)."
|
|
156055
156055
|
] : [
|
|
156056
156056
|
"CRITICAL: every response to a WhatsApp <channel> tag MUST go through whatsapp.reply (or whatsapp.send_template). Text in your session without a tool call never reaches the user.",
|
|
156057
|
-
|
|
156057
|
+
"Messages arrive as a channel tag carrying sender, conversation_id and message_id. Pass the `sender` value verbatim as the `to` argument to whatsapp.reply.",
|
|
156058
156058
|
"whatsapp.reply sends free-form text and only works inside the 24h customer-service window (24h since the user last messaged). If it reports the window is closed, use whatsapp.send_template with a pre-approved template instead."
|
|
156059
156059
|
]).join(" ")
|
|
156060
156060
|
}
|
|
@@ -62,8 +62,8 @@ import {
|
|
|
62
62
|
writeDirectChatSessionState,
|
|
63
63
|
writeEgressAllowlist,
|
|
64
64
|
writePersistentClaudeWrapper
|
|
65
|
-
} from "./chunk-
|
|
66
|
-
import "./chunk-
|
|
65
|
+
} from "./chunk-RZXKHPTJ.js";
|
|
66
|
+
import "./chunk-7KVUXOE4.js";
|
|
67
67
|
import "./chunk-XWVM4KPK.js";
|
|
68
68
|
export {
|
|
69
69
|
CLAUDE_HOST_WIDE,
|
|
@@ -130,4 +130,4 @@ export {
|
|
|
130
130
|
writeEgressAllowlist,
|
|
131
131
|
writePersistentClaudeWrapper
|
|
132
132
|
};
|
|
133
|
-
//# sourceMappingURL=persistent-session-
|
|
133
|
+
//# sourceMappingURL=persistent-session-SJ5ANAFY.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-RZXKHPTJ.js";
|
|
4
|
+
import "./chunk-7KVUXOE4.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -799,4 +799,4 @@ export {
|
|
|
799
799
|
readAndResetSlackReplyBindingClassifications,
|
|
800
800
|
readAndResetSlackReplyTargetClassifications
|
|
801
801
|
};
|
|
802
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
802
|
+
//# sourceMappingURL=responsiveness-probe-ROU7HNBP.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7KVUXOE4.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-auth-dead.ts
|
|
6
6
|
import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
|
|
@@ -203,4 +203,4 @@ export {
|
|
|
203
203
|
decideSessionAuthState,
|
|
204
204
|
probeSessionAuth
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=session-auth-dead-
|
|
206
|
+
//# sourceMappingURL=session-auth-dead-7IA3OFBT.js.map
|