@integrity-labs/agt-cli 0.28.1104 → 0.28.1106

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.
@@ -16,7 +16,7 @@ import {
16
16
  parseEnvFileEntries,
17
17
  parseEnvIntegrations,
18
18
  shellQuote
19
- } from "./chunk-F2QKXVS3.js";
19
+ } from "./chunk-UUCJYW6D.js";
20
20
  import {
21
21
  BIND_FAILURE_QUARANTINE_THRESHOLD,
22
22
  INTEGRATIONS_SECTION_END,
@@ -79,7 +79,7 @@ import {
79
79
  sessionTranscriptDir,
80
80
  worseConnectivityOutcome,
81
81
  wrapScheduledTaskPrompt
82
- } from "./chunk-ONBBX6NQ.js";
82
+ } from "./chunk-FWWOW7YA.js";
83
83
  import {
84
84
  classifyUnanswerablePane,
85
85
  isConsumerTermsDialogVisible,
@@ -7518,7 +7518,7 @@ function exchangeFailureKind(err) {
7518
7518
  }
7519
7519
 
7520
7520
  // src/lib/api-client.ts
7521
- var agtCliVersion = true ? "0.28.1104" : "dev";
7521
+ var agtCliVersion = true ? "0.28.1106" : "dev";
7522
7522
  var lastConfigHash = null;
7523
7523
  function setConfigHash(hash) {
7524
7524
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -12492,4 +12492,4 @@ export {
12492
12492
  managerInstallSystemUnitCommand,
12493
12493
  managerUninstallSystemUnitCommand
12494
12494
  };
12495
- //# sourceMappingURL=chunk-KYVEFPSA.js.map
12495
+ //# sourceMappingURL=chunk-IU4PRYD3.js.map
@@ -24,7 +24,7 @@ import {
24
24
  rotateDailySession,
25
25
  sessionFileExists,
26
26
  todayLocalIso
27
- } from "./chunk-ONBBX6NQ.js";
27
+ } from "./chunk-FWWOW7YA.js";
28
28
  import {
29
29
  classifyUnanswerablePane,
30
30
  findUsageLimitResetHint,
@@ -6113,4 +6113,4 @@ export {
6113
6113
  stopAllSessionsAndWait,
6114
6114
  getProjectDir
6115
6115
  };
6116
- //# sourceMappingURL=chunk-F2QKXVS3.js.map
6116
+ //# sourceMappingURL=chunk-UUCJYW6D.js.map
@@ -266,7 +266,7 @@ async function spawnPairSession(session) {
266
266
  return { ok: true };
267
267
  } catch {
268
268
  }
269
- const { resolveClaudeBinary } = await import("./persistent-session-O667M26R.js");
269
+ const { resolveClaudeBinary } = await import("./persistent-session-SE2HUCIQ.js");
270
270
  const claudeBin = resolveClaudeBinary();
271
271
  const pairEnv = {
272
272
  ...process.env,
@@ -734,4 +734,4 @@ export {
734
734
  startClaudePair,
735
735
  submitClaudePairCode
736
736
  };
737
- //# sourceMappingURL=claude-pair-runtime-4L7M4WHN.js.map
737
+ //# sourceMappingURL=claude-pair-runtime-4YLAYMDB.js.map
@@ -68,7 +68,7 @@ import {
68
68
  safeWriteJsonAtomic,
69
69
  setConfigHash,
70
70
  tripClass
71
- } from "../chunk-KYVEFPSA.js";
71
+ } from "../chunk-IU4PRYD3.js";
72
72
  import {
73
73
  getProjectDir as getProjectDir2,
74
74
  getReadyTasks,
@@ -155,7 +155,7 @@ import {
155
155
  webFetchBaselineValue,
156
156
  webFetchRestartNeeded,
157
157
  writeEgressAllowlist
158
- } from "../chunk-F2QKXVS3.js";
158
+ } from "../chunk-UUCJYW6D.js";
159
159
  import {
160
160
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
161
161
  AnchorSessionClient,
@@ -265,7 +265,7 @@ import {
265
265
  subagentActivityAgeSeconds,
266
266
  sumTranscriptUsageInWindow,
267
267
  transcriptActivityAgeSeconds
268
- } from "../chunk-ONBBX6NQ.js";
268
+ } from "../chunk-FWWOW7YA.js";
269
269
  import {
270
270
  classifyUnanswerablePane,
271
271
  paneRemedy
@@ -14143,7 +14143,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
14143
14143
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
14144
14144
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
14145
14145
  async function channelInboundActivityAgeSecondsFor(codeName) {
14146
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-NC6336CB.js");
14146
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-C2KROIRU.js");
14147
14147
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
14148
14148
  if (newest === null) return null;
14149
14149
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -14901,7 +14901,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
14901
14901
  var lastVersionCheckAt = 0;
14902
14902
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
14903
14903
  var lastResponsivenessProbeAt = 0;
14904
- var agtCliVersion = true ? "0.28.1104" : "dev";
14904
+ var agtCliVersion = true ? "0.28.1106" : "dev";
14905
14905
  function resolveBrewPath(execFileSync3) {
14906
14906
  try {
14907
14907
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -16518,7 +16518,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
16518
16518
  if (codeNames.length === 0) return;
16519
16519
  void (async () => {
16520
16520
  try {
16521
- const { collectDiagnostics } = await import("../persistent-session-O667M26R.js");
16521
+ const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
16522
16522
  await api.post("/host/heartbeat", {
16523
16523
  host_id: hostId,
16524
16524
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -16660,7 +16660,7 @@ async function pollCycleInner() {
16660
16660
  }
16661
16661
  try {
16662
16662
  const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
16663
- const { collectDiagnostics } = await import("../persistent-session-O667M26R.js");
16663
+ const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
16664
16664
  const diagCodeNames = [...agentState.persistentSessionAgents];
16665
16665
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
16666
16666
  let tailscaleHostname;
@@ -16868,7 +16868,7 @@ async function pollCycleInner() {
16868
16868
  collectPanelessActivityProbes,
16869
16869
  getResponsivenessIntervalMs,
16870
16870
  occupancyQualificationClassifications
16871
- } = await import("../responsiveness-probe-NC6336CB.js");
16871
+ } = await import("../responsiveness-probe-C2KROIRU.js");
16872
16872
  const probeIntervalMs = getResponsivenessIntervalMs();
16873
16873
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
16874
16874
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -16985,7 +16985,7 @@ async function pollCycleInner() {
16985
16985
  collectResponsivenessProbes,
16986
16986
  livePendingInboundOldestAgeSeconds,
16987
16987
  parkPendingInbound
16988
- } = await import("../responsiveness-probe-NC6336CB.js");
16988
+ } = await import("../responsiveness-probe-C2KROIRU.js");
16989
16989
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
16990
16990
  const wedgeNow = /* @__PURE__ */ new Date();
16991
16991
  const liveAgents = agentState.persistentSessionAgents;
@@ -17271,7 +17271,7 @@ async function pollCycleInner() {
17271
17271
  }
17272
17272
  }
17273
17273
  );
17274
- const { parkPendingInbound } = await import("../responsiveness-probe-NC6336CB.js");
17274
+ const { parkPendingInbound } = await import("../responsiveness-probe-C2KROIRU.js");
17275
17275
  const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
17276
17276
  paneFatalStreak.delete(codeName);
17277
17277
  paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
@@ -17302,7 +17302,7 @@ async function pollCycleInner() {
17302
17302
  TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
17303
17303
  bindSourceEscalations
17304
17304
  } = await import("../transcript-mount-health-OHE6IVJV.js");
17305
- const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-O667M26R.js");
17305
+ const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-SE2HUCIQ.js");
17306
17306
  const mountConfig = resolveTranscriptMountConfig();
17307
17307
  const liveAgents = agentState.persistentSessionAgents;
17308
17308
  for (const tracked of [
@@ -17467,7 +17467,7 @@ async function pollCycleInner() {
17467
17467
  }
17468
17468
  try {
17469
17469
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
17470
- const { probeSessionAuth } = await import("../session-auth-dead-XSLSLYB4.js");
17470
+ const { probeSessionAuth } = await import("../session-auth-dead-CXGA6GYP.js");
17471
17471
  const observations = [];
17472
17472
  const pendingCacheCommits = [];
17473
17473
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -22054,7 +22054,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
22054
22054
  try {
22055
22055
  const freshId = rotateSessionForWedge(codeName);
22056
22056
  consecutiveWedgeCycles.delete(codeName);
22057
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-NC6336CB.js");
22057
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-C2KROIRU.js");
22058
22058
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
22059
22059
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
22060
22060
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -22097,7 +22097,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
22097
22097
  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}`));
22098
22098
  void (async () => {
22099
22099
  try {
22100
- const { collectDiagnostics } = await import("../persistent-session-O667M26R.js");
22100
+ const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
22101
22101
  await api.post("/host/heartbeat", {
22102
22102
  host_id: hostId,
22103
22103
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -22148,7 +22148,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
22148
22148
  }
22149
22149
  try {
22150
22150
  const hostId = await getHostId();
22151
- const { collectDiagnostics } = await import("../persistent-session-O667M26R.js");
22151
+ const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
22152
22152
  await api.post("/host/heartbeat", {
22153
22153
  host_id: hostId,
22154
22154
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -22821,7 +22821,7 @@ async function processClaudePairSessions(agents) {
22821
22821
  // cannot take it for itself — by the time it runs, the write it is looking
22822
22822
  // for may already have happened.
22823
22823
  snapshotPairConfig
22824
- } = await import("../claude-pair-runtime-4L7M4WHN.js");
22824
+ } = await import("../claude-pair-runtime-4YLAYMDB.js");
22825
22825
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
22826
22826
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
22827
22827
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -49963,16 +49963,21 @@ ${body}`
49963
49963
  );
49964
49964
  server.tool(
49965
49965
  "routine_revise",
49966
- "Propose a CORRECTION to a routine you already own, for your manager to accept or decline. Use this when a routine you run is wrong: bad instructions, a gate that never fires, a step that no longer applies, or a defect you spotted before it ever ran. This is the only way to change what a routine DOES - schedule_update deliberately refuses prompt edits, and it will point you here. It does NOT change when the routine runs: to retime it, send only schedule fields to schedule_update instead. Nothing changes until your manager accepts: they get an accept/decline card, and the live routine keeps running as-is until they tap. On acceptance the SAME routine is updated in place - no duplicate is created. Pass the full replacement description, not a diff or a patch: it replaces the routine's substance wholesale, so anything you leave out is gone.",
49966
+ "Propose a CORRECTION to a routine you already own, for your manager to accept or decline. Use this when a routine you run is wrong: bad instructions, a gate that never fires, a step that no longer applies, or a defect you spotted before it ever ran. This is the only way to change what a routine DOES - schedule_update deliberately refuses prompt edits, and it will point you here. It does NOT change when the routine runs: to retime it, send only schedule fields to schedule_update instead. Nothing changes until your manager accepts: they get an accept/decline card, and the live routine keeps running as-is until they tap. On acceptance the SAME routine is updated in place - no duplicate is created. Pass the full replacement description, not a diff or a patch: it replaces the routine's substance wholesale, so anything you leave out is gone. A routine with SEVERAL jobs (routine_list shows them in `schedules`): to change one job, pass `job` (that job's schedule_id) and `description` becomes that job's new instructions - every other job is left exactly as it is. A routine-level revision (no `job`) is refused when any job has its own instructions, because it would overwrite them.",
49967
49967
  {
49968
- routine_id: external_exports.string().trim().min(1).describe("The routine to revise. Get this from routine_list. A schedule_id from schedule_list is also accepted and resolved server-side. It must be a routine YOU own; anything else reads as not-found."),
49968
+ routine_id: external_exports.string().trim().min(1).describe(
49969
+ "The routine to revise. Get this from routine_list. A schedule_id from schedule_list is also accepted and resolved server-side. If that schedule is a job with its OWN instructions (one of several independent jobs), the call revises THAT job, exactly as if you had also passed it as `job`: `description` becomes the job's instructions and `name` its label. Any other schedule_id means the routine as a whole. It must be a routine YOU own; anything else reads as not-found."
49970
+ ),
49969
49971
  description: external_exports.string().trim().min(1).describe(
49970
49972
  "The FULL replacement description - what the routine should do, from scratch. This becomes the routine's instructions verbatim, so write it as a complete brief rather than as a change to the old one. Anything you omit is removed."
49971
49973
  ),
49972
49974
  summary: external_exports.string().trim().min(1).describe(
49973
49975
  "What changed and WHY, in one or two sentences. This is what your manager reads on the accept/decline card before deciding, so it is the difference between a considered tap and a reluctant one. Required."
49974
49976
  ),
49975
- name: external_exports.string().trim().min(1).optional().describe("Optional new name for the routine. Omit to keep the current one.")
49977
+ name: external_exports.string().trim().min(1).optional().describe("Optional new name for the routine - or, when the revision targets one job (via `job`, or a job's own schedule_id as routine_id), that job's new label. Omit to keep the current one."),
49978
+ job: external_exports.string().trim().min(1).optional().describe(
49979
+ "Revise ONE job of a multi-job routine: the job's schedule_id from routine_list `schedules` (its label also works). When set, `description` is that job's full replacement instructions and only that job changes. Omit to revise the routine as a whole."
49980
+ )
49976
49981
  },
49977
49982
  async (params) => {
49978
49983
  try {
@@ -49981,7 +49986,8 @@ server.tool(
49981
49986
  routine_id: params.routine_id,
49982
49987
  description: params.description,
49983
49988
  summary: params.summary,
49984
- ...params.name !== void 0 ? { name: params.name } : {}
49989
+ ...params.name !== void 0 ? { name: params.name } : {},
49990
+ ...params.job !== void 0 ? { job: params.job } : {}
49985
49991
  });
49986
49992
  if (!data.ok) {
49987
49993
  return {
@@ -68,8 +68,8 @@ import {
68
68
  writeDirectChatSessionState,
69
69
  writeEgressAllowlist,
70
70
  writePersistentClaudeWrapper
71
- } from "./chunk-F2QKXVS3.js";
72
- import "./chunk-ONBBX6NQ.js";
71
+ } from "./chunk-UUCJYW6D.js";
72
+ import "./chunk-FWWOW7YA.js";
73
73
  import "./chunk-OCMJ5E6J.js";
74
74
  import "./chunk-XWVM4KPK.js";
75
75
  import "./chunk-EL5MWGGH.js";
@@ -145,4 +145,4 @@ export {
145
145
  writeEgressAllowlist,
146
146
  writePersistentClaudeWrapper
147
147
  };
148
- //# sourceMappingURL=persistent-session-O667M26R.js.map
148
+ //# sourceMappingURL=persistent-session-SE2HUCIQ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-F2QKXVS3.js";
4
- import "./chunk-ONBBX6NQ.js";
3
+ } from "./chunk-UUCJYW6D.js";
4
+ import "./chunk-FWWOW7YA.js";
5
5
  import "./chunk-OCMJ5E6J.js";
6
6
  import "./chunk-XWVM4KPK.js";
7
7
  import "./chunk-EL5MWGGH.js";
@@ -802,4 +802,4 @@ export {
802
802
  readAndResetSlackReplyBindingClassifications,
803
803
  readAndResetSlackReplyTargetClassifications
804
804
  };
805
- //# sourceMappingURL=responsiveness-probe-NC6336CB.js.map
805
+ //# sourceMappingURL=responsiveness-probe-C2KROIRU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-ONBBX6NQ.js";
3
+ } from "./chunk-FWWOW7YA.js";
4
4
  import "./chunk-DGUM43GV.js";
5
5
 
6
6
  // src/lib/session-auth-dead.ts
@@ -204,4 +204,4 @@ export {
204
204
  decideSessionAuthState,
205
205
  probeSessionAuth
206
206
  };
207
- //# sourceMappingURL=session-auth-dead-XSLSLYB4.js.map
207
+ //# sourceMappingURL=session-auth-dead-CXGA6GYP.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.1104",
3
+ "version": "0.28.1106",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {