@integrity-labs/agt-cli 0.28.857 → 0.28.859

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
  parseEnvIntegrations,
17
17
  shellQuote,
18
18
  summarizeUnanswerablePane
19
- } from "./chunk-6CLS6G7Y.js";
19
+ } from "./chunk-R2NHRLD7.js";
20
20
  import {
21
21
  BIND_FAILURE_QUARANTINE_THRESHOLD,
22
22
  INTEGRATIONS_SECTION_END,
@@ -76,7 +76,7 @@ import {
76
76
  sessionTranscriptDir,
77
77
  worseConnectivityOutcome,
78
78
  wrapScheduledTaskPrompt
79
- } from "./chunk-M6E42Z4Z.js";
79
+ } from "./chunk-FJ372WWE.js";
80
80
  import {
81
81
  parsePsRows
82
82
  } from "./chunk-XWVM4KPK.js";
@@ -6728,7 +6728,7 @@ function exchangeFailureKind(err) {
6728
6728
  }
6729
6729
 
6730
6730
  // src/lib/api-client.ts
6731
- var agtCliVersion = true ? "0.28.857" : "dev";
6731
+ var agtCliVersion = true ? "0.28.859" : "dev";
6732
6732
  var lastConfigHash = null;
6733
6733
  function setConfigHash(hash) {
6734
6734
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -11086,4 +11086,4 @@ export {
11086
11086
  managerInstallSystemUnitCommand,
11087
11087
  managerUninstallSystemUnitCommand
11088
11088
  };
11089
- //# sourceMappingURL=chunk-N54KXALT.js.map
11089
+ //# sourceMappingURL=chunk-JTDX6A6V.js.map
@@ -18,7 +18,7 @@ import {
18
18
  rotateDailySession,
19
19
  sessionFileExists,
20
20
  todayLocalIso
21
- } from "./chunk-M6E42Z4Z.js";
21
+ } from "./chunk-FJ372WWE.js";
22
22
  import {
23
23
  reapOrphanChannelMcps
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -5431,4 +5431,4 @@ export {
5431
5431
  stopAllSessionsAndWait,
5432
5432
  getProjectDir
5433
5433
  };
5434
- //# sourceMappingURL=chunk-6CLS6G7Y.js.map
5434
+ //# sourceMappingURL=chunk-R2NHRLD7.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-GZLPDUMN.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-6ZJR4HYE.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-QQSSCLXU.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-SC2TO4SG.js.map
@@ -60,7 +60,7 @@ import {
60
60
  safeWriteJsonAtomic,
61
61
  setConfigHash,
62
62
  tripClass
63
- } from "../chunk-N54KXALT.js";
63
+ } from "../chunk-JTDX6A6V.js";
64
64
  import {
65
65
  getProjectDir as getProjectDir2,
66
66
  getReadyTasks,
@@ -126,7 +126,7 @@ import {
126
126
  takeZombieDetection,
127
127
  toOpencodeModel,
128
128
  writeEgressAllowlist
129
- } from "../chunk-6CLS6G7Y.js";
129
+ } from "../chunk-R2NHRLD7.js";
130
130
  import {
131
131
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
132
132
  AnchorSessionClient,
@@ -221,7 +221,7 @@ import {
221
221
  subagentActivityAgeSeconds,
222
222
  sumTranscriptUsageInWindow,
223
223
  transcriptActivityAgeSeconds
224
- } from "../chunk-M6E42Z4Z.js";
224
+ } from "../chunk-FJ372WWE.js";
225
225
  import {
226
226
  reapOrphanChannelMcps
227
227
  } from "../chunk-XWVM4KPK.js";
@@ -13001,7 +13001,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13001
13001
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13002
13002
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13003
13003
  async function channelInboundActivityAgeSecondsFor(codeName) {
13004
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-GSCW4NBC.js");
13004
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-UIYBJC7G.js");
13005
13005
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13006
13006
  if (newest === null) return null;
13007
13007
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13669,7 +13669,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13669
13669
  var lastVersionCheckAt = 0;
13670
13670
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13671
13671
  var lastResponsivenessProbeAt = 0;
13672
- var agtCliVersion = true ? "0.28.857" : "dev";
13672
+ var agtCliVersion = true ? "0.28.859" : "dev";
13673
13673
  function resolveBrewPath(execFileSync2) {
13674
13674
  try {
13675
13675
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15259,7 +15259,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15259
15259
  if (codeNames.length === 0) return;
15260
15260
  void (async () => {
15261
15261
  try {
15262
- const { collectDiagnostics } = await import("../persistent-session-GZLPDUMN.js");
15262
+ const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
15263
15263
  await api.post("/host/heartbeat", {
15264
15264
  host_id: hostId,
15265
15265
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15401,7 +15401,7 @@ async function pollCycleInner() {
15401
15401
  }
15402
15402
  try {
15403
15403
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15404
- const { collectDiagnostics } = await import("../persistent-session-GZLPDUMN.js");
15404
+ const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
15405
15405
  const diagCodeNames = [...agentState.persistentSessionAgents];
15406
15406
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15407
15407
  let tailscaleHostname;
@@ -15570,7 +15570,7 @@ async function pollCycleInner() {
15570
15570
  collectPanelessActivityProbes,
15571
15571
  getResponsivenessIntervalMs,
15572
15572
  occupancyQualificationClassifications
15573
- } = await import("../responsiveness-probe-GSCW4NBC.js");
15573
+ } = await import("../responsiveness-probe-UIYBJC7G.js");
15574
15574
  const probeIntervalMs = getResponsivenessIntervalMs();
15575
15575
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15576
15576
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15687,7 +15687,7 @@ async function pollCycleInner() {
15687
15687
  collectResponsivenessProbes,
15688
15688
  livePendingInboundOldestAgeSeconds,
15689
15689
  parkPendingInbound
15690
- } = await import("../responsiveness-probe-GSCW4NBC.js");
15690
+ } = await import("../responsiveness-probe-UIYBJC7G.js");
15691
15691
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15692
15692
  const wedgeNow = /* @__PURE__ */ new Date();
15693
15693
  const liveAgents = agentState.persistentSessionAgents;
@@ -15843,7 +15843,7 @@ async function pollCycleInner() {
15843
15843
  }
15844
15844
  try {
15845
15845
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15846
- const { probeSessionAuth } = await import("../session-auth-dead-NWLDIYTW.js");
15846
+ const { probeSessionAuth } = await import("../session-auth-dead-S6QREVV3.js");
15847
15847
  const observations = [];
15848
15848
  const pendingCacheCommits = [];
15849
15849
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20073,7 +20073,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20073
20073
  try {
20074
20074
  const freshId = rotateSessionForWedge(codeName);
20075
20075
  consecutiveWedgeCycles.delete(codeName);
20076
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-GSCW4NBC.js");
20076
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-UIYBJC7G.js");
20077
20077
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20078
20078
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20079
20079
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20111,7 +20111,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20111
20111
  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}`));
20112
20112
  void (async () => {
20113
20113
  try {
20114
- const { collectDiagnostics } = await import("../persistent-session-GZLPDUMN.js");
20114
+ const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
20115
20115
  await api.post("/host/heartbeat", {
20116
20116
  host_id: hostId,
20117
20117
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20157,7 +20157,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20157
20157
  }
20158
20158
  try {
20159
20159
  const hostId = await getHostId();
20160
- const { collectDiagnostics } = await import("../persistent-session-GZLPDUMN.js");
20160
+ const { collectDiagnostics } = await import("../persistent-session-6ZJR4HYE.js");
20161
20161
  await api.post("/host/heartbeat", {
20162
20162
  host_id: hostId,
20163
20163
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20793,7 +20793,7 @@ async function processClaudePairSessions(agents) {
20793
20793
  killPairSession,
20794
20794
  pairTmuxSession,
20795
20795
  finalizeClaudePairOnboarding
20796
- } = await import("../claude-pair-runtime-QQSSCLXU.js");
20796
+ } = await import("../claude-pair-runtime-SC2TO4SG.js");
20797
20797
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20798
20798
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20799
20799
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -34788,6 +34788,10 @@ var DEFAULT_RESUME_LOOKBACK_MS = 14 * 24 * 60 * 60 * 1e3;
34788
34788
  // ../core/dist/admin-debug/index.js
34789
34789
  var STUCK_RESTART_THRESHOLD_SECONDS = 15 * 60;
34790
34790
 
34791
+ // ../core/dist/memory/tier-lifetime.js
34792
+ var DAILY_MEMORY_TTL_HOURS = 48;
34793
+ var DAILY_MEMORY_TTL_MS = DAILY_MEMORY_TTL_HOURS * 60 * 60 * 1e3;
34794
+
34791
34795
  // ../core/dist/scheduled-tasks/prompt-wrapper.js
34792
34796
  var PREAMBLE_HEAD = [
34793
34797
  "[SCHEDULED TASK \u2014 EXECUTION MODE]",
package/dist/mcp/index.js CHANGED
@@ -24119,6 +24119,31 @@ var BY_ID = new Map(GUARDRAIL_ENFORCERS.map((e) => [e.id, e]));
24119
24119
  var MAX_AGENT_RULES = 8;
24120
24120
  var MAX_AGENT_RULE_CHARS = 200;
24121
24121
  var MAX_AGENT_RULES_CHARS = MAX_AGENT_RULES * (MAX_AGENT_RULE_CHARS + 4);
24122
+ var AGENT_RULE_NO_END_DATE_NOTE = ' Rules have no end date: this one applies on every turn until someone removes it. If it is only meant to hold for a while, say so IN the rule ("until the migration ships") so the reason to drop it is visible later \u2014 rule_list shows how old each rule is.';
24123
+ function describeAgentRuleList(rules, max, maxChars, now = Date.now()) {
24124
+ if (rules.length === 0) {
24125
+ return `No standing rules yet. You can hold up to ${max}, each up to ${maxChars} characters.`;
24126
+ }
24127
+ const lines = rules.map((r) => {
24128
+ const days = agentRuleAgeInDays(r.createdAt, now);
24129
+ if (days === null)
24130
+ return `- ${r.text} (id: ${r.id})`;
24131
+ const age = days === 0 ? "added today" : `added ${days} day${days === 1 ? "" : "s"} ago`;
24132
+ return `- ${r.text} (id: ${r.id}, ${age})`;
24133
+ }).join("\n");
24134
+ const note = ' Rules never expire \u2014 nothing will remove one for you. If any of these was meant to be temporary ("until X lifts this", "while we are mid-migration"), check with the person whether it still applies, and use rule_remove with a reason if it does not.';
24135
+ return `${rules.length} of ${max} standing rules in force:
24136
+ ${lines}
24137
+ ${note}`;
24138
+ }
24139
+ function agentRuleAgeInDays(createdAt, now = Date.now()) {
24140
+ if (!createdAt)
24141
+ return null;
24142
+ const t = Date.parse(createdAt);
24143
+ if (Number.isNaN(t))
24144
+ return null;
24145
+ return Math.max(0, Math.floor((now - t) / (24 * 60 * 60 * 1e3)));
24146
+ }
24122
24147
 
24123
24148
  // ../core/dist/provisioning/frameworks/claudecode/identity.js
24124
24149
  var CLAUDE_MD_CHARS_PER_TOKEN = 3.57;
@@ -27259,6 +27284,10 @@ var DEFAULT_RESUME_LOOKBACK_MS = 14 * 24 * 60 * 60 * 1e3;
27259
27284
  // ../core/dist/admin-debug/index.js
27260
27285
  var STUCK_RESTART_THRESHOLD_SECONDS = 15 * 60;
27261
27286
 
27287
+ // ../core/dist/memory/tier-lifetime.js
27288
+ var DAILY_MEMORY_TTL_HOURS = 48;
27289
+ var DAILY_MEMORY_TTL_MS = DAILY_MEMORY_TTL_HOURS * 60 * 60 * 1e3;
27290
+
27262
27291
  // ../core/dist/cron-coverage.js
27263
27292
  function expandCronField(field, min, max) {
27264
27293
  const out = /* @__PURE__ */ new Set();
@@ -48171,19 +48200,8 @@ server.tool(
48171
48200
  if (!data.ok) {
48172
48201
  return { content: [{ type: "text", text: "Could not read your standing rules." }], isError: true };
48173
48202
  }
48174
- if (!data.rules.length) {
48175
- return {
48176
- content: [
48177
- { type: "text", text: `No standing rules yet. You can hold up to ${data.max}, each up to ${data.max_chars} characters.` }
48178
- ]
48179
- };
48180
- }
48181
- const lines = data.rules.map((r) => `- ${r.text} (id: ${r.id})`).join("\n");
48182
48203
  return {
48183
- content: [
48184
- { type: "text", text: `${data.rules.length} of ${data.max} standing rules in force:
48185
- ${lines}` }
48186
- ]
48204
+ content: [{ type: "text", text: describeAgentRuleList(data.rules, data.max, data.max_chars) }]
48187
48205
  };
48188
48206
  }
48189
48207
  );
@@ -48207,7 +48225,7 @@ server.tool(
48207
48225
  };
48208
48226
  }
48209
48227
  const said = data.evicted ? `Added the rule. To make room I dropped: "${data.evicted.text}". Tell the person BOTH of these, not just the addition.` : `Added the rule: "${data.rule?.text}".`;
48210
- return { content: [{ type: "text", text: said }] };
48228
+ return { content: [{ type: "text", text: said + AGENT_RULE_NO_END_DATE_NOTE }] };
48211
48229
  }
48212
48230
  );
48213
48231
  server.tool(
@@ -41415,6 +41415,10 @@ var DEFAULT_RESUME_LOOKBACK_MS = 14 * 24 * 60 * 60 * 1e3;
41415
41415
  // ../core/dist/admin-debug/index.js
41416
41416
  var STUCK_RESTART_THRESHOLD_SECONDS = 15 * 60;
41417
41417
 
41418
+ // ../core/dist/memory/tier-lifetime.js
41419
+ var DAILY_MEMORY_TTL_HOURS = 48;
41420
+ var DAILY_MEMORY_TTL_MS = DAILY_MEMORY_TTL_HOURS * 60 * 60 * 1e3;
41421
+
41418
41422
  // ../core/dist/scheduled-tasks/prompt-wrapper.js
41419
41423
  var PREAMBLE_HEAD = [
41420
41424
  "[SCHEDULED TASK \u2014 EXECUTION MODE]",
@@ -35563,6 +35563,10 @@ var DEFAULT_RESUME_LOOKBACK_MS = 14 * 24 * 60 * 60 * 1e3;
35563
35563
  // ../core/dist/admin-debug/index.js
35564
35564
  var STUCK_RESTART_THRESHOLD_SECONDS = 15 * 60;
35565
35565
 
35566
+ // ../core/dist/memory/tier-lifetime.js
35567
+ var DAILY_MEMORY_TTL_HOURS = 48;
35568
+ var DAILY_MEMORY_TTL_MS = DAILY_MEMORY_TTL_HOURS * 60 * 60 * 1e3;
35569
+
35566
35570
  // ../core/dist/scheduled-tasks/prompt-wrapper.js
35567
35571
  var PREAMBLE_HEAD = [
35568
35572
  "[SCHEDULED TASK \u2014 EXECUTION MODE]",
@@ -35695,6 +35695,10 @@ var DEFAULT_RESUME_LOOKBACK_MS = 14 * 24 * 60 * 60 * 1e3;
35695
35695
  // ../core/dist/admin-debug/index.js
35696
35696
  var STUCK_RESTART_THRESHOLD_SECONDS = 15 * 60;
35697
35697
 
35698
+ // ../core/dist/memory/tier-lifetime.js
35699
+ var DAILY_MEMORY_TTL_HOURS = 48;
35700
+ var DAILY_MEMORY_TTL_MS = DAILY_MEMORY_TTL_HOURS * 60 * 60 * 1e3;
35701
+
35698
35702
  // ../core/dist/scheduled-tasks/prompt-wrapper.js
35699
35703
  var PREAMBLE_HEAD = [
35700
35704
  "[SCHEDULED TASK \u2014 EXECUTION MODE]",
@@ -54,8 +54,8 @@ import {
54
54
  writeDirectChatSessionState,
55
55
  writeEgressAllowlist,
56
56
  writePersistentClaudeWrapper
57
- } from "./chunk-6CLS6G7Y.js";
58
- import "./chunk-M6E42Z4Z.js";
57
+ } from "./chunk-R2NHRLD7.js";
58
+ import "./chunk-FJ372WWE.js";
59
59
  import "./chunk-XWVM4KPK.js";
60
60
  export {
61
61
  EGRESS_BASELINE_DOMAINS,
@@ -114,4 +114,4 @@ export {
114
114
  writeEgressAllowlist,
115
115
  writePersistentClaudeWrapper
116
116
  };
117
- //# sourceMappingURL=persistent-session-GZLPDUMN.js.map
117
+ //# sourceMappingURL=persistent-session-6ZJR4HYE.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-6CLS6G7Y.js";
4
- import "./chunk-M6E42Z4Z.js";
3
+ } from "./chunk-R2NHRLD7.js";
4
+ import "./chunk-FJ372WWE.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -764,4 +764,4 @@ export {
764
764
  readAndResetSlackReplyBindingClassifications,
765
765
  readAndResetSlackReplyTargetClassifications
766
766
  };
767
- //# sourceMappingURL=responsiveness-probe-GSCW4NBC.js.map
767
+ //# sourceMappingURL=responsiveness-probe-UIYBJC7G.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-M6E42Z4Z.js";
3
+ } from "./chunk-FJ372WWE.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-NWLDIYTW.js.map
206
+ //# sourceMappingURL=session-auth-dead-S6QREVV3.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.857",
3
+ "version": "0.28.859",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {