@integrity-labs/agt-cli 0.28.687 → 0.28.689
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-WOWZLCF5.js → chunk-4CQEX55A.js} +4 -4
- package/dist/{chunk-ZKNKHAHX.js → chunk-QXDHGJBW.js} +2 -2
- package/dist/{chunk-OOFJUWMT.js → chunk-RBZWLHGD.js} +1 -1
- package/dist/{chunk-OOFJUWMT.js.map → chunk-RBZWLHGD.js.map} +1 -1
- package/dist/{claude-pair-runtime-HPCXQDVY.js → claude-pair-runtime-36BMP4AW.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/augmented-admin.js +1 -1
- package/dist/mcp/index.js +17 -4
- package/dist/{persistent-session-OQ7MFVEH.js → persistent-session-WDAQ4RML.js} +3 -3
- package/dist/{responsiveness-probe-ZQQLBARV.js → responsiveness-probe-NZH7PZEL.js} +3 -3
- package/dist/{session-auth-dead-4OJ2XLH4.js → session-auth-dead-JCK3BOVA.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-WOWZLCF5.js.map → chunk-4CQEX55A.js.map} +0 -0
- /package/dist/{chunk-ZKNKHAHX.js.map → chunk-QXDHGJBW.js.map} +0 -0
- /package/dist/{claude-pair-runtime-HPCXQDVY.js.map → claude-pair-runtime-36BMP4AW.js.map} +0 -0
- /package/dist/{persistent-session-OQ7MFVEH.js.map → persistent-session-WDAQ4RML.js.map} +0 -0
- /package/dist/{responsiveness-probe-ZQQLBARV.js.map → responsiveness-probe-NZH7PZEL.js.map} +0 -0
- /package/dist/{session-auth-dead-4OJ2XLH4.js.map → session-auth-dead-JCK3BOVA.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-WDAQ4RML.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-36BMP4AW.js.map
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
setConfigHash,
|
|
56
56
|
setSecretFileTmpfsBacking,
|
|
57
57
|
tripClass
|
|
58
|
-
} from "../chunk-
|
|
58
|
+
} from "../chunk-4CQEX55A.js";
|
|
59
59
|
import {
|
|
60
60
|
getProjectDir as getProjectDir2,
|
|
61
61
|
getReadyTasks,
|
|
@@ -113,7 +113,7 @@ import {
|
|
|
113
113
|
takeZombieDetection,
|
|
114
114
|
toOpencodeModel,
|
|
115
115
|
writeEgressAllowlist
|
|
116
|
-
} from "../chunk-
|
|
116
|
+
} from "../chunk-QXDHGJBW.js";
|
|
117
117
|
import {
|
|
118
118
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
119
119
|
AnchorSessionClient,
|
|
@@ -194,7 +194,7 @@ import {
|
|
|
194
194
|
subagentActivityAgeSeconds,
|
|
195
195
|
sumTranscriptUsageInWindow,
|
|
196
196
|
transcriptActivityAgeSeconds
|
|
197
|
-
} from "../chunk-
|
|
197
|
+
} from "../chunk-RBZWLHGD.js";
|
|
198
198
|
import {
|
|
199
199
|
reapOrphanChannelMcps
|
|
200
200
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -11755,7 +11755,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
11755
11755
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
11756
11756
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
11757
11757
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
11758
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
11758
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-NZH7PZEL.js");
|
|
11759
11759
|
const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
|
|
11760
11760
|
if (newest === null) return null;
|
|
11761
11761
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -12403,7 +12403,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
12403
12403
|
var lastVersionCheckAt = 0;
|
|
12404
12404
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
12405
12405
|
var lastResponsivenessProbeAt = 0;
|
|
12406
|
-
var agtCliVersion = true ? "0.28.
|
|
12406
|
+
var agtCliVersion = true ? "0.28.689" : "dev";
|
|
12407
12407
|
function resolveBrewPath(execFileSync3) {
|
|
12408
12408
|
try {
|
|
12409
12409
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -13864,7 +13864,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
13864
13864
|
if (codeNames.length === 0) return;
|
|
13865
13865
|
void (async () => {
|
|
13866
13866
|
try {
|
|
13867
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13867
|
+
const { collectDiagnostics } = await import("../persistent-session-WDAQ4RML.js");
|
|
13868
13868
|
await api.post("/host/heartbeat", {
|
|
13869
13869
|
host_id: hostId,
|
|
13870
13870
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -13981,7 +13981,7 @@ async function pollCycleInner() {
|
|
|
13981
13981
|
}
|
|
13982
13982
|
try {
|
|
13983
13983
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
13984
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
13984
|
+
const { collectDiagnostics } = await import("../persistent-session-WDAQ4RML.js");
|
|
13985
13985
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
13986
13986
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor) : void 0;
|
|
13987
13987
|
let tailscaleHostname;
|
|
@@ -14133,7 +14133,7 @@ async function pollCycleInner() {
|
|
|
14133
14133
|
collectPanelessActivityProbes,
|
|
14134
14134
|
getResponsivenessIntervalMs,
|
|
14135
14135
|
occupancyQualificationClassifications
|
|
14136
|
-
} = await import("../responsiveness-probe-
|
|
14136
|
+
} = await import("../responsiveness-probe-NZH7PZEL.js");
|
|
14137
14137
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
14138
14138
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
14139
14139
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -14243,7 +14243,7 @@ async function pollCycleInner() {
|
|
|
14243
14243
|
collectResponsivenessProbes,
|
|
14244
14244
|
livePendingInboundOldestAgeSeconds,
|
|
14245
14245
|
parkPendingInbound
|
|
14246
|
-
} = await import("../responsiveness-probe-
|
|
14246
|
+
} = await import("../responsiveness-probe-NZH7PZEL.js");
|
|
14247
14247
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
14248
14248
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
14249
14249
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -14399,7 +14399,7 @@ async function pollCycleInner() {
|
|
|
14399
14399
|
}
|
|
14400
14400
|
try {
|
|
14401
14401
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
14402
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
14402
|
+
const { probeSessionAuth } = await import("../session-auth-dead-JCK3BOVA.js");
|
|
14403
14403
|
const observations = [];
|
|
14404
14404
|
const pendingCacheCommits = [];
|
|
14405
14405
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -18160,7 +18160,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
18160
18160
|
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}`));
|
|
18161
18161
|
void (async () => {
|
|
18162
18162
|
try {
|
|
18163
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
18163
|
+
const { collectDiagnostics } = await import("../persistent-session-WDAQ4RML.js");
|
|
18164
18164
|
await api.post("/host/heartbeat", {
|
|
18165
18165
|
host_id: hostId,
|
|
18166
18166
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -18211,7 +18211,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
18211
18211
|
}
|
|
18212
18212
|
try {
|
|
18213
18213
|
const hostId = await getHostId();
|
|
18214
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
18214
|
+
const { collectDiagnostics } = await import("../persistent-session-WDAQ4RML.js");
|
|
18215
18215
|
await api.post("/host/heartbeat", {
|
|
18216
18216
|
host_id: hostId,
|
|
18217
18217
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
|
|
@@ -18843,7 +18843,7 @@ async function processClaudePairSessions(agents) {
|
|
|
18843
18843
|
killPairSession,
|
|
18844
18844
|
pairTmuxSession,
|
|
18845
18845
|
finalizeClaudePairOnboarding
|
|
18846
|
-
} = await import("../claude-pair-runtime-
|
|
18846
|
+
} = await import("../claude-pair-runtime-36BMP4AW.js");
|
|
18847
18847
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
18848
18848
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
18849
18849
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -21630,7 +21630,7 @@ server.registerTool(
|
|
|
21630
21630
|
);
|
|
21631
21631
|
server.registerTool(
|
|
21632
21632
|
"debug_get_agent_integrations",
|
|
21633
|
-
{ description: 'Resolve ONE agent\'s EFFECTIVE integration set \u2014 the focused read for "does this agent have integration X, and where is it installed from?" (ENG-8271). Same resolution as `debug_get_agent`\'s `effective_integrations`, without the host/alerts payload.\n\nReturns { agent_id, code_name, team_id, organization_id, effective_integrations: { effective_count, by_scope, inherited_definition_ids, excluded_control_plane_only, shadowed_by_more_specific, duplicate_merge_keys, scopes_queried, scopes_skipped, integrations[] } } - the same `effective_integrations` object `debug_get_agent` returns, so one shape covers both tools. Each entry: { definition_id, display_name, connection_key, scope ("agent" | "team" | "org"), source_id, status, status_message, auth_type, last_connectivity_check_at, last_connectivity_status, consecutive_connectivity_failures, wired_verdict, last_session_tool_bind_at }. Never credentials.\n\nPrefer this over reading `agent_integrations`: TEAM/ORG-scope installs are invisible to a per-agent read, so absence there is not evidence. `effective_count` reconciles against the manager\'s `Integrations provisioned for \'<code_name>\' (N)` or the tool-bind probe\'s `due=N`; docs/runbooks/admin-debug-dogfood.md lists the benign divergences to rule out before treating a mismatch as a bug. `wired_verdict` is the host\'s last session-tool-bind result (bound | missing | unreachable | unknown | not_applicable), the closest available answer to "is it in the agent\'s .mcp.json right now?". ENG-9114: `not_applicable` means the integration has NO .mcp.json server at all - CLI-delivered (github/gh, aws-cli, gcloud) or a builtin served through the platform\'s own MCP server - so "bound" is not a question about it and it is NOT broken. `null` means never probed, which is still NOT "not wired"; once a probe has run against a row, expect one of the five values rather than null.\n\nFails closed (uniform not-found) for an unauthorized/unknown agent; a failed scope query returns an error rather than a smaller count. Audited as a cross-org access. Pass { agent_id }.', inputSchema: getAgentIntegrationsSchema },
|
|
21633
|
+
{ description: 'Resolve ONE agent\'s EFFECTIVE integration set \u2014 the focused read for "does this agent have integration X, and where is it installed from?" (ENG-8271). Same resolution as `debug_get_agent`\'s `effective_integrations`, without the host/alerts payload.\n\nReturns { agent_id, code_name, team_id, organization_id, effective_integrations: { effective_count, by_scope, inherited_definition_ids, excluded_control_plane_only, excluded_unhealthy, excluded_unhealthy_definition_ids, shadowed_by_more_specific, duplicate_merge_keys, scopes_queried, scopes_skipped, integrations[] } } - the same `effective_integrations` object `debug_get_agent` returns, so one shape covers both tools. Each entry: { definition_id, display_name, connection_key, scope ("agent" | "team" | "org"), source_id, status, status_message, auth_type, last_connectivity_check_at, last_connectivity_status, consecutive_connectivity_failures, wired_verdict, last_session_tool_bind_at }. Never credentials.\n\nPrefer this over reading `agent_integrations`: TEAM/ORG-scope installs are invisible to a per-agent read, so absence there is not evidence. `excluded_unhealthy` + `excluded_unhealthy_definition_ids` (ENG-9285) name the rows that EXIST for this agent but were dropped for an unhealthy `status` \u2014 read them before concluding an integration is uninstalled, because a forced probe\'s `not_installed` verdict derives from the same status filter and CANNOT tell a deleted row (orphan, safe to reap) from a broken one (zombie, someone still has to fix it). `effective_count` reconciles against the manager\'s `Integrations provisioned for \'<code_name>\' (N)` or the tool-bind probe\'s `due=N`; docs/runbooks/admin-debug-dogfood.md lists the benign divergences to rule out before treating a mismatch as a bug. `wired_verdict` is the host\'s last session-tool-bind result (bound | missing | unreachable | unknown | not_applicable), the closest available answer to "is it in the agent\'s .mcp.json right now?". ENG-9114: `not_applicable` means the integration has NO .mcp.json server at all - CLI-delivered (github/gh, aws-cli, gcloud) or a builtin served through the platform\'s own MCP server - so "bound" is not a question about it and it is NOT broken. `null` means never probed, which is still NOT "not wired"; once a probe has run against a row, expect one of the five values rather than null.\n\nFails closed (uniform not-found) for an unauthorized/unknown agent; a failed scope query returns an error rather than a smaller count. Audited as a cross-org access. Pass { agent_id }.', inputSchema: getAgentIntegrationsSchema },
|
|
21634
21634
|
async (args) => {
|
|
21635
21635
|
try {
|
|
21636
21636
|
const result = await client.getAgentIntegrations(args.agent_id);
|
package/dist/mcp/index.js
CHANGED
|
@@ -45754,20 +45754,33 @@ server.tool(
|
|
|
45754
45754
|
);
|
|
45755
45755
|
server.tool(
|
|
45756
45756
|
"routine_propose",
|
|
45757
|
-
"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.",
|
|
45757
|
+
"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.",
|
|
45758
45758
|
{
|
|
45759
45759
|
name: external_exports.string().describe('Short routine name (e.g. "Morning inbox summary")'),
|
|
45760
45760
|
description: external_exports.string().describe("What the routine does, self-contained (this text is shown to the user and becomes the routine prompt basis)"),
|
|
45761
|
-
cadence_guess: external_exports.enum(["daily", "weekdays", "weekly", "unknown"]).optional().describe("Best guess at the cadence the user asked for")
|
|
45761
|
+
cadence_guess: external_exports.enum(["daily", "weekdays", "weekly", "unknown"]).optional().describe("Best guess at the cadence the user asked for"),
|
|
45762
|
+
// ENG-9393: the time and weekday used to be inexpressible here, so a
|
|
45763
|
+
// routine asked for at 08:00 was created at 09:00 and the requested time
|
|
45764
|
+
// survived only inside `description`, where nothing reads it.
|
|
45765
|
+
at: external_exports.string().optional().describe(
|
|
45766
|
+
'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.'
|
|
45767
|
+
),
|
|
45768
|
+
timezone: external_exports.string().optional().describe(
|
|
45769
|
+
`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.`
|
|
45770
|
+
),
|
|
45771
|
+
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.')
|
|
45762
45772
|
},
|
|
45763
|
-
async ({ name, description, cadence_guess }) => {
|
|
45773
|
+
async ({ name, description, cadence_guess, at, timezone, day_of_week }) => {
|
|
45764
45774
|
let data;
|
|
45765
45775
|
try {
|
|
45766
45776
|
data = await apiPost("/host/routines/propose", {
|
|
45767
45777
|
agent_id: AGT_AGENT_ID,
|
|
45768
45778
|
name,
|
|
45769
45779
|
description,
|
|
45770
|
-
...cadence_guess ? { cadence_guess } : {}
|
|
45780
|
+
...cadence_guess ? { cadence_guess } : {},
|
|
45781
|
+
...at ? { at } : {},
|
|
45782
|
+
...timezone ? { timezone } : {},
|
|
45783
|
+
...day_of_week !== void 0 ? { day_of_week } : {}
|
|
45771
45784
|
});
|
|
45772
45785
|
} catch (err) {
|
|
45773
45786
|
return { content: [{ type: "text", text: `Could not propose: ${err.message}` }] };
|
|
@@ -43,8 +43,8 @@ import {
|
|
|
43
43
|
writeDirectChatSessionState,
|
|
44
44
|
writeEgressAllowlist,
|
|
45
45
|
writePersistentClaudeWrapper
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-QXDHGJBW.js";
|
|
47
|
+
import "./chunk-RBZWLHGD.js";
|
|
48
48
|
import "./chunk-XWVM4KPK.js";
|
|
49
49
|
export {
|
|
50
50
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -92,4 +92,4 @@ export {
|
|
|
92
92
|
writeEgressAllowlist,
|
|
93
93
|
writePersistentClaudeWrapper
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=persistent-session-
|
|
95
|
+
//# sourceMappingURL=persistent-session-WDAQ4RML.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-QXDHGJBW.js";
|
|
4
|
+
import "./chunk-RBZWLHGD.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-NZH7PZEL.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RBZWLHGD.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-JCK3BOVA.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|