@integrity-labs/agt-cli 0.28.793 → 0.28.795
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-3T7VL4PY.js → chunk-FWMZ2SLT.js} +2 -2
- package/dist/{chunk-3T7VL4PY.js.map → chunk-FWMZ2SLT.js.map} +1 -1
- package/dist/{chunk-TYKVGDNI.js → chunk-PHQQM44E.js} +4 -4
- package/dist/{chunk-6DWVW3Y3.js → chunk-UKFIAO43.js} +1 -1
- package/dist/chunk-UKFIAO43.js.map +1 -0
- package/dist/{claude-pair-runtime-4HEEAXSO.js → claude-pair-runtime-FPLEFK4P.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/index.js +32 -6
- package/dist/{persistent-session-MEXNOIDP.js → persistent-session-QY4Q45VM.js} +3 -3
- package/dist/{responsiveness-probe-CK4Z2AYM.js → responsiveness-probe-DCLY6FKF.js} +3 -3
- package/dist/{session-auth-dead-4GZDGAWS.js → session-auth-dead-NKW22VWF.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-6DWVW3Y3.js.map +0 -1
- /package/dist/{chunk-TYKVGDNI.js.map → chunk-PHQQM44E.js.map} +0 -0
- /package/dist/{claude-pair-runtime-4HEEAXSO.js.map → claude-pair-runtime-FPLEFK4P.js.map} +0 -0
- /package/dist/{persistent-session-MEXNOIDP.js.map → persistent-session-QY4Q45VM.js.map} +0 -0
- /package/dist/{responsiveness-probe-CK4Z2AYM.js.map → responsiveness-probe-DCLY6FKF.js.map} +0 -0
- /package/dist/{session-auth-dead-4GZDGAWS.js.map → session-auth-dead-NKW22VWF.js.map} +0 -0
|
@@ -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-QY4Q45VM.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-FPLEFK4P.js.map
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
safeWriteJsonAtomic,
|
|
59
59
|
setConfigHash,
|
|
60
60
|
tripClass
|
|
61
|
-
} from "../chunk-
|
|
61
|
+
} from "../chunk-PHQQM44E.js";
|
|
62
62
|
import {
|
|
63
63
|
getProjectDir as getProjectDir2,
|
|
64
64
|
getReadyTasks,
|
|
@@ -122,7 +122,7 @@ import {
|
|
|
122
122
|
takeZombieDetection,
|
|
123
123
|
toOpencodeModel,
|
|
124
124
|
writeEgressAllowlist
|
|
125
|
-
} from "../chunk-
|
|
125
|
+
} from "../chunk-FWMZ2SLT.js";
|
|
126
126
|
import {
|
|
127
127
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
128
128
|
AnchorSessionClient,
|
|
@@ -214,7 +214,7 @@ import {
|
|
|
214
214
|
subagentActivityAgeSeconds,
|
|
215
215
|
sumTranscriptUsageInWindow,
|
|
216
216
|
transcriptActivityAgeSeconds
|
|
217
|
-
} from "../chunk-
|
|
217
|
+
} from "../chunk-UKFIAO43.js";
|
|
218
218
|
import {
|
|
219
219
|
reapOrphanChannelMcps
|
|
220
220
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -12917,7 +12917,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
12917
12917
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
12918
12918
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
12919
12919
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
12920
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
12920
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-DCLY6FKF.js");
|
|
12921
12921
|
const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
|
|
12922
12922
|
if (newest === null) return null;
|
|
12923
12923
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -13577,7 +13577,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
13577
13577
|
var lastVersionCheckAt = 0;
|
|
13578
13578
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
13579
13579
|
var lastResponsivenessProbeAt = 0;
|
|
13580
|
-
var agtCliVersion = true ? "0.28.
|
|
13580
|
+
var agtCliVersion = true ? "0.28.795" : "dev";
|
|
13581
13581
|
function resolveBrewPath(execFileSync2) {
|
|
13582
13582
|
try {
|
|
13583
13583
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -15124,7 +15124,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
15124
15124
|
if (codeNames.length === 0) return;
|
|
15125
15125
|
void (async () => {
|
|
15126
15126
|
try {
|
|
15127
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15127
|
+
const { collectDiagnostics } = await import("../persistent-session-QY4Q45VM.js");
|
|
15128
15128
|
await api.post("/host/heartbeat", {
|
|
15129
15129
|
host_id: hostId,
|
|
15130
15130
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -15265,7 +15265,7 @@ async function pollCycleInner() {
|
|
|
15265
15265
|
}
|
|
15266
15266
|
try {
|
|
15267
15267
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
15268
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15268
|
+
const { collectDiagnostics } = await import("../persistent-session-QY4Q45VM.js");
|
|
15269
15269
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
15270
15270
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
|
|
15271
15271
|
let tailscaleHostname;
|
|
@@ -15434,7 +15434,7 @@ async function pollCycleInner() {
|
|
|
15434
15434
|
collectPanelessActivityProbes,
|
|
15435
15435
|
getResponsivenessIntervalMs,
|
|
15436
15436
|
occupancyQualificationClassifications
|
|
15437
|
-
} = await import("../responsiveness-probe-
|
|
15437
|
+
} = await import("../responsiveness-probe-DCLY6FKF.js");
|
|
15438
15438
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
15439
15439
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
15440
15440
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -15551,7 +15551,7 @@ async function pollCycleInner() {
|
|
|
15551
15551
|
collectResponsivenessProbes,
|
|
15552
15552
|
livePendingInboundOldestAgeSeconds,
|
|
15553
15553
|
parkPendingInbound
|
|
15554
|
-
} = await import("../responsiveness-probe-
|
|
15554
|
+
} = await import("../responsiveness-probe-DCLY6FKF.js");
|
|
15555
15555
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
15556
15556
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
15557
15557
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -15707,7 +15707,7 @@ async function pollCycleInner() {
|
|
|
15707
15707
|
}
|
|
15708
15708
|
try {
|
|
15709
15709
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
15710
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
15710
|
+
const { probeSessionAuth } = await import("../session-auth-dead-NKW22VWF.js");
|
|
15711
15711
|
const observations = [];
|
|
15712
15712
|
const pendingCacheCommits = [];
|
|
15713
15713
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -19808,7 +19808,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
19808
19808
|
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}`));
|
|
19809
19809
|
void (async () => {
|
|
19810
19810
|
try {
|
|
19811
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
19811
|
+
const { collectDiagnostics } = await import("../persistent-session-QY4Q45VM.js");
|
|
19812
19812
|
await api.post("/host/heartbeat", {
|
|
19813
19813
|
host_id: hostId,
|
|
19814
19814
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -19854,7 +19854,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
19854
19854
|
}
|
|
19855
19855
|
try {
|
|
19856
19856
|
const hostId = await getHostId();
|
|
19857
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
19857
|
+
const { collectDiagnostics } = await import("../persistent-session-QY4Q45VM.js");
|
|
19858
19858
|
await api.post("/host/heartbeat", {
|
|
19859
19859
|
host_id: hostId,
|
|
19860
19860
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -20490,7 +20490,7 @@ async function processClaudePairSessions(agents) {
|
|
|
20490
20490
|
killPairSession,
|
|
20491
20491
|
pairTmuxSession,
|
|
20492
20492
|
finalizeClaudePairOnboarding
|
|
20493
|
-
} = await import("../claude-pair-runtime-
|
|
20493
|
+
} = await import("../claude-pair-runtime-FPLEFK4P.js");
|
|
20494
20494
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
20495
20495
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
20496
20496
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
package/dist/mcp/index.js
CHANGED
|
@@ -46833,13 +46833,22 @@ server.tool(
|
|
|
46833
46833
|
};
|
|
46834
46834
|
}
|
|
46835
46835
|
);
|
|
46836
|
+
var ROUTINE_CADENCE_GUESS = external_exports.enum(["hourly", "daily", "weekdays", "weekly", "unknown"]).describe(
|
|
46837
|
+
'Best guess at the cadence the user asked for. Use "hourly" ONLY for once-per-hour - for hourly, `at` supplies only the MINUTE past the hour, and any hour in it is ignored. Anything SUB-hourly ("every 15 minutes", "every 5 minutes") cannot be proposed here: do not pick the nearest option, and do not omit cadence_guess either (that compiles to DAILY). Tell the person this surface cannot express it, and let them decide - a routine that fires 4x an hour less often than they asked, accepted because the card said something plausible, is worse than not proposing one.'
|
|
46838
|
+
);
|
|
46836
46839
|
server.tool(
|
|
46837
46840
|
"routine_propose",
|
|
46838
|
-
|
|
46841
|
+
'Propose a recurring ROUTINE the user just asked you to take on. The platform sends them an accept/decline offer; on acceptance it creates the routine and its schedule with full lifecycle (hand-back anytime, approval ramp). Prefer this over schedule_create for recurring responsibilities. If the user named a time, pass it as `at` - the reply tells you the schedule that was actually compiled, so check it matches what they asked for before you go quiet. For a routine with MORE THAN ONE cadence (e.g. "check hourly, but only report once a day"), use `schedules` instead of the flat cadence_guess/at/day_of_week - one entry per role, each with its own cadence.',
|
|
46839
46842
|
{
|
|
46840
46843
|
name: external_exports.string().describe('Short routine name (e.g. "Morning inbox summary")'),
|
|
46841
46844
|
description: external_exports.string().describe("What the routine does, self-contained (this text is shown to the user and becomes the routine prompt basis)"),
|
|
46842
|
-
|
|
46845
|
+
// ENG-9843: 'hourly' is here because nothing faster than daily could be
|
|
46846
|
+
// expressed, so every hourly routine was proposed wrong and retimed by hand
|
|
46847
|
+
// after acceptance - which inverts the accept card, the one moment a human
|
|
46848
|
+
// reviews what they are agreeing to.
|
|
46849
|
+
cadence_guess: ROUTINE_CADENCE_GUESS.optional().describe(
|
|
46850
|
+
ROUTINE_CADENCE_GUESS.description + " Omit this (and `at`/`day_of_week`) if you are sending `schedules` instead."
|
|
46851
|
+
),
|
|
46843
46852
|
// ENG-9393: the time and weekday used to be inexpressible here, so a
|
|
46844
46853
|
// routine asked for at 08:00 was created at 09:00 and the requested time
|
|
46845
46854
|
// survived only inside `description`, where nothing reads it.
|
|
@@ -46847,11 +46856,27 @@ server.tool(
|
|
|
46847
46856
|
'The time of day it should run, as 24-hour "HH:MM" (e.g. "08:00", "16:30"). Defaults to 09:00. State it whenever the user named a time - writing the time in the description does NOT schedule it, the description is prose and nothing reads it.'
|
|
46848
46857
|
),
|
|
46849
46858
|
timezone: external_exports.string().optional().describe(
|
|
46850
|
-
|
|
46859
|
+
'IANA timezone the time is in (e.g. "Australia/Melbourne"). Defaults to YOUR configured timezone, which is almost always what you want - pass this only when the routine must run on someone else\'s clock. Shared across every entry in `schedules` too - one routine, one clock.'
|
|
46851
46860
|
),
|
|
46852
|
-
day_of_week: external_exports.number().int().min(0).max(6).optional().describe('For cadence_guess "weekly" only: 0 = Sunday .. 6 = Saturday. Defaults to Monday.')
|
|
46861
|
+
day_of_week: external_exports.number().int().min(0).max(6).optional().describe('For cadence_guess "weekly" only: 0 = Sunday .. 6 = Saturday. Defaults to Monday.'),
|
|
46862
|
+
// ENG-9843: a routine that needs more than one cadence - hourly execute
|
|
46863
|
+
// plus a once-a-day report is the canonical case. Mutually exclusive with
|
|
46864
|
+
// cadence_guess/at/day_of_week above (the route 400s if you send both);
|
|
46865
|
+
// put each schedule's own timing inside its entry here instead.
|
|
46866
|
+
schedules: external_exports.array(
|
|
46867
|
+
external_exports.object({
|
|
46868
|
+
role: external_exports.enum(["execute", "progress", "daily-report", "weekly-report"]).describe(
|
|
46869
|
+
'"execute" does the actual work and is REQUIRED, exactly once. "progress" / "daily-report" / "weekly-report" are cheap narrations of what execute already did - they do not redo the work, they report on it, so only add one if the user actually wants a separate check-in on a different cadence from the work itself.'
|
|
46870
|
+
),
|
|
46871
|
+
cadence_guess: ROUTINE_CADENCE_GUESS.optional(),
|
|
46872
|
+
at: external_exports.string().optional().describe(`This entry's time of day, "HH:MM". Defaults to 09:00.`),
|
|
46873
|
+
day_of_week: external_exports.number().int().min(0).max(6).optional().describe(`This entry's weekday, for cadence_guess "weekly" only: 0 = Sunday .. 6 = Saturday.`)
|
|
46874
|
+
})
|
|
46875
|
+
).optional().describe(
|
|
46876
|
+
'A schedule per role, for a routine that runs on more than one cadence. Exactly one entry must have role "execute". Example: hourly execute plus a daily report at 17:00 - [{role:"execute", cadence_guess:"hourly"}, {role:"daily-report", cadence_guess:"daily", at:"17:00"}]. Omit entirely for a routine with one job on one cadence and use the flat cadence_guess/at/day_of_week instead - simpler, and what most routines want.'
|
|
46877
|
+
)
|
|
46853
46878
|
},
|
|
46854
|
-
async ({ name, description, cadence_guess, at, timezone, day_of_week }) => {
|
|
46879
|
+
async ({ name, description, cadence_guess, at, timezone, day_of_week, schedules }) => {
|
|
46855
46880
|
let data;
|
|
46856
46881
|
try {
|
|
46857
46882
|
data = await apiPost("/host/routines/propose", {
|
|
@@ -46861,7 +46886,8 @@ server.tool(
|
|
|
46861
46886
|
...cadence_guess ? { cadence_guess } : {},
|
|
46862
46887
|
...at ? { at } : {},
|
|
46863
46888
|
...timezone ? { timezone } : {},
|
|
46864
|
-
...day_of_week !== void 0 ? { day_of_week } : {}
|
|
46889
|
+
...day_of_week !== void 0 ? { day_of_week } : {},
|
|
46890
|
+
...schedules ? { schedules } : {}
|
|
46865
46891
|
});
|
|
46866
46892
|
} catch (err) {
|
|
46867
46893
|
return { content: [{ type: "text", text: `Could not propose: ${err.message}` }] };
|
|
@@ -49,8 +49,8 @@ import {
|
|
|
49
49
|
writeDirectChatSessionState,
|
|
50
50
|
writeEgressAllowlist,
|
|
51
51
|
writePersistentClaudeWrapper
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import "./chunk-
|
|
52
|
+
} from "./chunk-FWMZ2SLT.js";
|
|
53
|
+
import "./chunk-UKFIAO43.js";
|
|
54
54
|
import "./chunk-XWVM4KPK.js";
|
|
55
55
|
export {
|
|
56
56
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -104,4 +104,4 @@ export {
|
|
|
104
104
|
writeEgressAllowlist,
|
|
105
105
|
writePersistentClaudeWrapper
|
|
106
106
|
};
|
|
107
|
-
//# sourceMappingURL=persistent-session-
|
|
107
|
+
//# sourceMappingURL=persistent-session-QY4Q45VM.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-FWMZ2SLT.js";
|
|
4
|
+
import "./chunk-UKFIAO43.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -745,4 +745,4 @@ export {
|
|
|
745
745
|
readAndResetSlackReplyBindingClassifications,
|
|
746
746
|
readAndResetSlackReplyTargetClassifications
|
|
747
747
|
};
|
|
748
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
748
|
+
//# sourceMappingURL=responsiveness-probe-DCLY6FKF.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UKFIAO43.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-NKW22VWF.js.map
|