@integrity-labs/agt-cli 0.28.751 → 0.28.753

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.
@@ -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-Z3NHK5IW.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-6YR3ZHZV.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-MOUA66HF.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-7MWDR3RS.js.map
@@ -57,7 +57,7 @@ import {
57
57
  safeWriteJsonAtomic,
58
58
  setConfigHash,
59
59
  tripClass
60
- } from "../chunk-QYAJHOZB.js";
60
+ } from "../chunk-6HFHZR3Z.js";
61
61
  import {
62
62
  getProjectDir as getProjectDir2,
63
63
  getReadyTasks,
@@ -118,7 +118,7 @@ import {
118
118
  takeZombieDetection,
119
119
  toOpencodeModel,
120
120
  writeEgressAllowlist
121
- } from "../chunk-LCHGVH7O.js";
121
+ } from "../chunk-VA6UHKFG.js";
122
122
  import {
123
123
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
124
124
  AnchorSessionClient,
@@ -207,7 +207,7 @@ import {
207
207
  subagentActivityAgeSeconds,
208
208
  sumTranscriptUsageInWindow,
209
209
  transcriptActivityAgeSeconds
210
- } from "../chunk-TZOMZFXF.js";
210
+ } from "../chunk-GPDHLGBD.js";
211
211
  import {
212
212
  reapOrphanChannelMcps
213
213
  } from "../chunk-XWVM4KPK.js";
@@ -12738,7 +12738,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
12738
12738
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
12739
12739
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
12740
12740
  async function channelInboundActivityAgeSecondsFor(codeName) {
12741
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-62LL7XTQ.js");
12741
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-Y5M7V5EC.js");
12742
12742
  const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
12743
12743
  if (newest === null) return null;
12744
12744
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13391,7 +13391,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13391
13391
  var lastVersionCheckAt = 0;
13392
13392
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13393
13393
  var lastResponsivenessProbeAt = 0;
13394
- var agtCliVersion = true ? "0.28.751" : "dev";
13394
+ var agtCliVersion = true ? "0.28.753" : "dev";
13395
13395
  function resolveBrewPath(execFileSync3) {
13396
13396
  try {
13397
13397
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -14932,7 +14932,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
14932
14932
  if (codeNames.length === 0) return;
14933
14933
  void (async () => {
14934
14934
  try {
14935
- const { collectDiagnostics } = await import("../persistent-session-Z3NHK5IW.js");
14935
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
14936
14936
  await api.post("/host/heartbeat", {
14937
14937
  host_id: hostId,
14938
14938
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15073,7 +15073,7 @@ async function pollCycleInner() {
15073
15073
  }
15074
15074
  try {
15075
15075
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15076
- const { collectDiagnostics } = await import("../persistent-session-Z3NHK5IW.js");
15076
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
15077
15077
  const diagCodeNames = [...agentState.persistentSessionAgents];
15078
15078
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15079
15079
  let tailscaleHostname;
@@ -15242,7 +15242,7 @@ async function pollCycleInner() {
15242
15242
  collectPanelessActivityProbes,
15243
15243
  getResponsivenessIntervalMs,
15244
15244
  occupancyQualificationClassifications
15245
- } = await import("../responsiveness-probe-62LL7XTQ.js");
15245
+ } = await import("../responsiveness-probe-Y5M7V5EC.js");
15246
15246
  const probeIntervalMs = getResponsivenessIntervalMs();
15247
15247
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15248
15248
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15352,7 +15352,7 @@ async function pollCycleInner() {
15352
15352
  collectResponsivenessProbes,
15353
15353
  livePendingInboundOldestAgeSeconds,
15354
15354
  parkPendingInbound
15355
- } = await import("../responsiveness-probe-62LL7XTQ.js");
15355
+ } = await import("../responsiveness-probe-Y5M7V5EC.js");
15356
15356
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15357
15357
  const wedgeNow = /* @__PURE__ */ new Date();
15358
15358
  const liveAgents = agentState.persistentSessionAgents;
@@ -15508,7 +15508,7 @@ async function pollCycleInner() {
15508
15508
  }
15509
15509
  try {
15510
15510
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15511
- const { probeSessionAuth } = await import("../session-auth-dead-GEIXRAIM.js");
15511
+ const { probeSessionAuth } = await import("../session-auth-dead-EDLHHI3H.js");
15512
15512
  const observations = [];
15513
15513
  const pendingCacheCommits = [];
15514
15514
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -19472,7 +19472,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
19472
19472
  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}`));
19473
19473
  void (async () => {
19474
19474
  try {
19475
- const { collectDiagnostics } = await import("../persistent-session-Z3NHK5IW.js");
19475
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
19476
19476
  await api.post("/host/heartbeat", {
19477
19477
  host_id: hostId,
19478
19478
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -19518,7 +19518,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
19518
19518
  }
19519
19519
  try {
19520
19520
  const hostId = await getHostId();
19521
- const { collectDiagnostics } = await import("../persistent-session-Z3NHK5IW.js");
19521
+ const { collectDiagnostics } = await import("../persistent-session-6YR3ZHZV.js");
19522
19522
  await api.post("/host/heartbeat", {
19523
19523
  host_id: hostId,
19524
19524
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20154,7 +20154,7 @@ async function processClaudePairSessions(agents) {
20154
20154
  killPairSession,
20155
20155
  pairTmuxSession,
20156
20156
  finalizeClaudePairOnboarding
20157
- } = await import("../claude-pair-runtime-MOUA66HF.js");
20157
+ } = await import("../claude-pair-runtime-7MWDR3RS.js");
20158
20158
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20159
20159
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20160
20160
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -30375,6 +30375,13 @@ function recordChannelDeflection(agentDir, channel, cause) {
30375
30375
  import { readdirSync as readdirSync5, statSync as statSync2 } from "fs";
30376
30376
  import { join as join9 } from "path";
30377
30377
 
30378
+ // ../core/dist/types/agent.js
30379
+ var FRAMEWORK_MODEL_SLOTS = {
30380
+ "claude-code": ["primary", "small_fast"],
30381
+ "opencode": ["primary"]
30382
+ };
30383
+ var KNOWN_MODEL_SLOTS = new Set(Object.values(FRAMEWORK_MODEL_SLOTS).flat());
30384
+
30378
30385
  // ../core/dist/types/integration.js
30379
30386
  var HITL_TIER_ORDER = [
30380
30387
  "read",
@@ -31805,6 +31812,7 @@ var ROLE_PERMISSIONS = {
31805
31812
  "agent.pause",
31806
31813
  "agent.impersonate",
31807
31814
  "agent.viewAuditLog",
31815
+ "agent.viewMemories",
31808
31816
  "template.manage",
31809
31817
  "audit_log.view",
31810
31818
  "host.create",
@@ -31832,6 +31840,7 @@ var ROLE_PERMISSIONS = {
31832
31840
  "agent.pause",
31833
31841
  "agent.impersonate",
31834
31842
  "agent.viewAuditLog",
31843
+ "agent.viewMemories",
31835
31844
  "template.manage",
31836
31845
  "audit_log.view",
31837
31846
  "host.create",
package/dist/mcp/index.js CHANGED
@@ -37767,6 +37767,55 @@ function describeAssignHumanResult(resp, email2) {
37767
37767
  };
37768
37768
  }
37769
37769
 
37770
+ // src/artefact-source.ts
37771
+ var SOURCE_READBACK_MAX_CHUNKS = 128;
37772
+ var SOURCE_READBACK_CHUNK_BYTES = 65536;
37773
+ async function assembleArtefactSource(fetchChunk, maxChunks = SOURCE_READBACK_MAX_CHUNKS) {
37774
+ const parts = [];
37775
+ let offset = 0;
37776
+ let totalLength = 0;
37777
+ let chunks = 0;
37778
+ for (; ; ) {
37779
+ const data = await fetchChunk(offset);
37780
+ parts.push(data.chunk);
37781
+ totalLength = data.total_length;
37782
+ chunks += 1;
37783
+ if (data.end_of_content) break;
37784
+ if (data.length <= 0) {
37785
+ throw new Error(
37786
+ `source read stalled at offset ${offset} of ${totalLength} bytes (server returned an empty chunk without signalling end of content)`
37787
+ );
37788
+ }
37789
+ if (chunks >= maxChunks) {
37790
+ throw new Error(
37791
+ `source read exceeded ${maxChunks} chunks (${totalLength} bytes reported); refusing to continue`
37792
+ );
37793
+ }
37794
+ offset = data.offset + data.length;
37795
+ }
37796
+ return { html: parts.join(""), totalLength, chunks };
37797
+ }
37798
+ function classifyRevision(before, after) {
37799
+ if (before === null || after === null) return "unknown";
37800
+ return before === after ? "stable" : "changed";
37801
+ }
37802
+ function describeSourceIntegrity(bytes, totalLength, revisionState = "stable") {
37803
+ if (revisionState === "changed") {
37804
+ return "WARNING: the artefact was re-published while this was being read, so the file may mix two versions - re-read it before editing, and do NOT re-publish this copy";
37805
+ }
37806
+ if (revisionState === "unknown") {
37807
+ return bytes === totalLength ? "assembled OK, but UNVERIFIED: the revision marker could not be read, so we cannot confirm the artefact stayed unchanged during the read - safe to read, but re-read before re-publishing" : `WARNING: assembled ${bytes} bytes but the server reports ${totalLength}, and the revision marker could not be read - do NOT re-publish this as-is`;
37808
+ }
37809
+ return bytes === totalLength ? "complete" : `WARNING: assembled ${bytes} bytes but the server reports ${totalLength} - do NOT re-publish this as-is`;
37810
+ }
37811
+
37812
+ // ../core/dist/types/agent.js
37813
+ var FRAMEWORK_MODEL_SLOTS = {
37814
+ "claude-code": ["primary", "small_fast"],
37815
+ "opencode": ["primary"]
37816
+ };
37817
+ var KNOWN_MODEL_SLOTS = new Set(Object.values(FRAMEWORK_MODEL_SLOTS).flat());
37818
+
37770
37819
  // ../core/dist/types/integration.js
37771
37820
  var HITL_TIER_ORDER = [
37772
37821
  "read",
@@ -39197,6 +39246,7 @@ var ROLE_PERMISSIONS = {
39197
39246
  "agent.pause",
39198
39247
  "agent.impersonate",
39199
39248
  "agent.viewAuditLog",
39249
+ "agent.viewMemories",
39200
39250
  "template.manage",
39201
39251
  "audit_log.view",
39202
39252
  "host.create",
@@ -39224,6 +39274,7 @@ var ROLE_PERMISSIONS = {
39224
39274
  "agent.pause",
39225
39275
  "agent.impersonate",
39226
39276
  "agent.viewAuditLog",
39277
+ "agent.viewMemories",
39227
39278
  "template.manage",
39228
39279
  "audit_log.view",
39229
39280
  "host.create",
@@ -46999,6 +47050,7 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
46999
47050
  "artefacts_list",
47000
47051
  "artefacts_get",
47001
47052
  "artefacts_get_source_chunk",
47053
+ "artefacts_get_source",
47002
47054
  "artefacts_download",
47003
47055
  "artefacts_resolve",
47004
47056
  "artefacts_analytics",
@@ -47118,7 +47170,7 @@ async function getPublishedArtefactText(artefactId) {
47118
47170
  `Published: ${p2.published_at}`,
47119
47171
  p2.expires_at ? `Expires: ${p2.expires_at}` : null,
47120
47172
  `Last modified: ${p2.last_modified_at}`,
47121
- p2.has_source_html ? `Source HTML: ${p2.source_html_length} bytes (call artefacts_get_source_chunk to fetch)` : "(source HTML not preserved for this artefact)"
47173
+ p2.has_source_html ? `Source HTML: ${p2.source_html_length} bytes (call artefacts_get_source to save it to a file)` : "(source HTML not preserved for this artefact)"
47122
47174
  ].filter((s) => s !== null).join("\n");
47123
47175
  }
47124
47176
  async function getPublishedArtefactSourceChunkText(artefactId, offset, limit) {
@@ -47203,7 +47255,7 @@ server.tool(
47203
47255
  );
47204
47256
  server.tool(
47205
47257
  "artefacts_get",
47206
- "Fetch metadata for a single published artefact. Returns the artefact record without the source HTML \u2014 call artefacts_get_source_chunk to retrieve the HTML in chunks when you need to modify it.",
47258
+ "Fetch metadata for a single published artefact. Returns the artefact record without the source HTML \u2014 call artefacts_get_source to save the HTML to a file when you need to modify it.",
47207
47259
  {
47208
47260
  artefact_id: external_exports.string().uuid().describe("The artefact id returned by artefacts_list")
47209
47261
  },
@@ -47224,7 +47276,7 @@ server.tool(
47224
47276
  );
47225
47277
  server.tool(
47226
47278
  "artefacts_get_source_chunk",
47227
- "Fetch a chunk of source HTML for a published artefact. Use this to assemble the HTML for modification when artefacts_get reports a non-zero source_html_length.",
47279
+ "Fetch ONE chunk of source HTML for a published artefact. For editing a page, prefer artefacts_get_source, which saves the whole document to a file in a single call - assembling a large document from chunks by hand costs one round trip per 64KB and puts every byte in your context.",
47228
47280
  {
47229
47281
  artefact_id: external_exports.string().uuid().describe("The artefact id returned by artefacts_list"),
47230
47282
  offset: external_exports.number().int().min(0).describe("Byte offset into the source HTML to start from"),
@@ -47236,6 +47288,61 @@ server.tool(
47236
47288
  ]
47237
47289
  })
47238
47290
  );
47291
+ async function fetchArtefactRevision(artefactId) {
47292
+ try {
47293
+ const data = await apiPost(
47294
+ `/host/published-artefact/${encodeURIComponent(artefactId)}`,
47295
+ { agent_id: AGT_AGENT_ID }
47296
+ );
47297
+ return data.artefact?.last_modified_at ?? null;
47298
+ } catch {
47299
+ return null;
47300
+ }
47301
+ }
47302
+ async function saveArtefactSourceToFile(artefactId) {
47303
+ const dir = await mkdtemp(join4(tmpdir(), "augmented-artefact-source-"));
47304
+ const readOnce = async () => {
47305
+ const before = await fetchArtefactRevision(artefactId);
47306
+ const assembled = await assembleArtefactSource(
47307
+ (offset) => apiPost(
47308
+ `/host/published-artefact/${encodeURIComponent(artefactId)}/source-chunk`,
47309
+ { agent_id: AGT_AGENT_ID, offset, limit: SOURCE_READBACK_CHUNK_BYTES }
47310
+ )
47311
+ );
47312
+ const after = await fetchArtefactRevision(artefactId);
47313
+ return { ...assembled, revisionState: classifyRevision(before, after) };
47314
+ };
47315
+ let result = await readOnce();
47316
+ if (result.revisionState !== "stable") result = await readOnce();
47317
+ const filePath = join4(dir, safeDownloadName(`${artefactId}.html`, `${artefactId}.html`));
47318
+ await writeFile(filePath, result.html, "utf8");
47319
+ return {
47320
+ path: filePath,
47321
+ bytes: Buffer.byteLength(result.html, "utf8"),
47322
+ totalLength: result.totalLength,
47323
+ chunks: result.chunks,
47324
+ revisionState: result.revisionState
47325
+ };
47326
+ }
47327
+ async function saveArtefactSourceText(artefactId) {
47328
+ const r = await saveArtefactSourceToFile(artefactId);
47329
+ const integrity = describeSourceIntegrity(r.bytes, r.totalLength, r.revisionState);
47330
+ return [
47331
+ `Saved source HTML to ${r.path}`,
47332
+ `${r.bytes} bytes in ${r.chunks} chunk(s) \u2014 ${integrity}`,
47333
+ "Read/edit that file, then pass the edited HTML back as `content` to agt_live_publish with the same slug."
47334
+ ].join("\n");
47335
+ }
47336
+ server.tool(
47337
+ "artefacts_get_source",
47338
+ "Save a published artefact's FULL source HTML to a file on this host and return the path \u2014 one call, no paging. Use this when you need to EDIT a page you published: read the file, change it, then re-publish with the same slug. Works on your own gated artefacts (the content URL does not). Prefer this over artefacts_get_source_chunk, which exists for the rare case you want to inspect a slice without loading the document.",
47339
+ {
47340
+ artefact_id: external_exports.string().uuid().describe("The artefact id returned by artefacts_list")
47341
+ },
47342
+ async (params) => ({
47343
+ content: [{ type: "text", text: await saveArtefactSourceText(params.artefact_id) }]
47344
+ })
47345
+ );
47239
47346
  var ARTEFACT_DOWNLOAD_MAX_ITEMS = 50;
47240
47347
  function safeDownloadName(name, fallback) {
47241
47348
  const base = basename(name).replace(/[^a-zA-Z0-9._-]/g, "_").replace(/^\.+/, "");
@@ -47310,7 +47417,7 @@ async function downloadArtefactText(params) {
47310
47417
  }
47311
47418
  server.tool(
47312
47419
  "artefacts_download",
47313
- "Download a published artefact as a PDF or image (PNG) file(s) on this host, returning the saved file path(s) so you can attach, upload, or send them. pdf gives one multi-page document (one page per carousel item). png with an item index gives that single page. png with NO item index gives one PNG per item for a multi-item carousel (or a single PNG for a one-item artefact). Video downloads are not supported yet (tracked in ENG-6776).",
47420
+ 'Download a published artefact as a PDF or image (PNG) file(s) on this host, returning the saved file path(s) so you can attach, upload, or send them. pdf gives one multi-page document (one page per carousel item). png with an item index gives that single page. png with NO item index gives one PNG per item for a multi-item carousel (or a single PNG for a one-item artefact). TO PREVIEW A DOCUMENT before sending it, call this with format="png" and NO item: you get one image per section in a single call, which is what to check a contract with rather than exporting pages one index at a time. Capped at the first 50 sections - a longer document returns 50 PNGs and says so, so do not read "no more files" as "no more pages". Video downloads are not supported yet (tracked in ENG-6776).',
47314
47421
  {
47315
47422
  artefact_id: external_exports.string().uuid().describe("The artefact id returned by artefacts_list"),
47316
47423
  format: external_exports.enum(["pdf", "png"]).describe('Output format: "pdf" (carousel document) or "png" (image)'),
@@ -36376,6 +36376,13 @@ var Server = class extends Protocol {
36376
36376
  }
36377
36377
  };
36378
36378
 
36379
+ // ../core/dist/types/agent.js
36380
+ var FRAMEWORK_MODEL_SLOTS = {
36381
+ "claude-code": ["primary", "small_fast"],
36382
+ "opencode": ["primary"]
36383
+ };
36384
+ var KNOWN_MODEL_SLOTS = new Set(Object.values(FRAMEWORK_MODEL_SLOTS).flat());
36385
+
36379
36386
  // ../core/dist/types/integration.js
36380
36387
  var HITL_TIER_ORDER = [
36381
36388
  "read",
@@ -37989,6 +37996,7 @@ var ROLE_PERMISSIONS = {
37989
37996
  "agent.pause",
37990
37997
  "agent.impersonate",
37991
37998
  "agent.viewAuditLog",
37999
+ "agent.viewMemories",
37992
38000
  "template.manage",
37993
38001
  "audit_log.view",
37994
38002
  "host.create",
@@ -38016,6 +38024,7 @@ var ROLE_PERMISSIONS = {
38016
38024
  "agent.pause",
38017
38025
  "agent.impersonate",
38018
38026
  "agent.viewAuditLog",
38027
+ "agent.viewMemories",
38019
38028
  "template.manage",
38020
38029
  "audit_log.view",
38021
38030
  "host.create",
@@ -30670,6 +30670,13 @@ function isMaintenanceModeActive(opts) {
30670
30670
  });
30671
30671
  }
30672
30672
 
30673
+ // ../core/dist/types/agent.js
30674
+ var FRAMEWORK_MODEL_SLOTS = {
30675
+ "claude-code": ["primary", "small_fast"],
30676
+ "opencode": ["primary"]
30677
+ };
30678
+ var KNOWN_MODEL_SLOTS = new Set(Object.values(FRAMEWORK_MODEL_SLOTS).flat());
30679
+
30673
30680
  // ../core/dist/types/integration.js
30674
30681
  var HITL_TIER_ORDER = [
30675
30682
  "read",
@@ -32099,6 +32106,7 @@ var ROLE_PERMISSIONS = {
32099
32106
  "agent.pause",
32100
32107
  "agent.impersonate",
32101
32108
  "agent.viewAuditLog",
32109
+ "agent.viewMemories",
32102
32110
  "template.manage",
32103
32111
  "audit_log.view",
32104
32112
  "host.create",
@@ -32126,6 +32134,7 @@ var ROLE_PERMISSIONS = {
32126
32134
  "agent.pause",
32127
32135
  "agent.impersonate",
32128
32136
  "agent.viewAuditLog",
32137
+ "agent.viewMemories",
32129
32138
  "template.manage",
32130
32139
  "audit_log.view",
32131
32140
  "host.create",
@@ -30834,6 +30834,13 @@ function isMaintenanceModeActive(opts) {
30834
30834
  });
30835
30835
  }
30836
30836
 
30837
+ // ../core/dist/types/agent.js
30838
+ var FRAMEWORK_MODEL_SLOTS = {
30839
+ "claude-code": ["primary", "small_fast"],
30840
+ "opencode": ["primary"]
30841
+ };
30842
+ var KNOWN_MODEL_SLOTS = new Set(Object.values(FRAMEWORK_MODEL_SLOTS).flat());
30843
+
30837
30844
  // ../core/dist/types/integration.js
30838
30845
  var HITL_TIER_ORDER = [
30839
30846
  "read",
@@ -32263,6 +32270,7 @@ var ROLE_PERMISSIONS = {
32263
32270
  "agent.pause",
32264
32271
  "agent.impersonate",
32265
32272
  "agent.viewAuditLog",
32273
+ "agent.viewMemories",
32266
32274
  "template.manage",
32267
32275
  "audit_log.view",
32268
32276
  "host.create",
@@ -32290,6 +32298,7 @@ var ROLE_PERMISSIONS = {
32290
32298
  "agent.pause",
32291
32299
  "agent.impersonate",
32292
32300
  "agent.viewAuditLog",
32301
+ "agent.viewMemories",
32293
32302
  "template.manage",
32294
32303
  "audit_log.view",
32295
32304
  "host.create",
@@ -49,8 +49,8 @@ import {
49
49
  writeDirectChatSessionState,
50
50
  writeEgressAllowlist,
51
51
  writePersistentClaudeWrapper
52
- } from "./chunk-LCHGVH7O.js";
53
- import "./chunk-TZOMZFXF.js";
52
+ } from "./chunk-VA6UHKFG.js";
53
+ import "./chunk-GPDHLGBD.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-Z3NHK5IW.js.map
107
+ //# sourceMappingURL=persistent-session-6YR3ZHZV.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-LCHGVH7O.js";
4
- import "./chunk-TZOMZFXF.js";
3
+ } from "./chunk-VA6UHKFG.js";
4
+ import "./chunk-GPDHLGBD.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-62LL7XTQ.js.map
748
+ //# sourceMappingURL=responsiveness-probe-Y5M7V5EC.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-TZOMZFXF.js";
3
+ } from "./chunk-GPDHLGBD.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-GEIXRAIM.js.map
206
+ //# sourceMappingURL=session-auth-dead-EDLHHI3H.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.751",
3
+ "version": "0.28.753",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {