@integrity-labs/agt-cli 0.28.210 → 0.28.212

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 CHANGED
@@ -38,7 +38,7 @@ import {
38
38
  success,
39
39
  table,
40
40
  warn
41
- } from "../chunk-G42GLXB6.js";
41
+ } from "../chunk-PJCSU3OI.js";
42
42
  import {
43
43
  CHANNEL_REGISTRY,
44
44
  DEFAULT_FRAMEWORK,
@@ -49,7 +49,6 @@ import {
49
49
  createSlackApp,
50
50
  deriveConsoleUrl,
51
51
  detectDrift,
52
- directChatSessionStatePath,
53
52
  extractFrontmatter,
54
53
  generateCharterMd,
55
54
  generateSlackAppManifest,
@@ -64,10 +63,11 @@ import {
64
63
  lintAll,
65
64
  lintCharter,
66
65
  lintTools,
66
+ readDirectChatSessionState,
67
67
  renderTemplate,
68
68
  resolveChannels,
69
69
  serializeManifestForSlackCli
70
- } from "../chunk-WFCCBTA6.js";
70
+ } from "../chunk-ZV4PUS7E.js";
71
71
  import "../chunk-XWVM4KPK.js";
72
72
 
73
73
  // src/bin/agt.ts
@@ -208,7 +208,6 @@ function flagsResolveCommand(opts) {
208
208
  // src/commands/probe-tools.ts
209
209
  import { homedir as homedir2 } from "os";
210
210
  import { join as join2 } from "path";
211
- import { readFileSync } from "fs";
212
211
  async function probeToolsCommand(opts) {
213
212
  const agentId = opts.agentId;
214
213
  const codeName = opts.codeName;
@@ -230,18 +229,15 @@ async function probeToolsCommand(opts) {
230
229
  emit({ ok: true, agent_id: agentId, code_name: codeName, probed: 0, reported: 0, due: 0, skipped: 0, results: [] });
231
230
  return;
232
231
  }
233
- let sessionStartedMs = null;
234
- try {
235
- const raw = JSON.parse(readFileSync(directChatSessionStatePath(agentId), "utf-8"));
236
- sessionStartedMs = typeof raw.startedAtMs === "number" ? raw.startedAtMs : null;
237
- } catch {
238
- }
232
+ const sessionLoadedServerKeys = new Set(
233
+ readDirectChatSessionState(agentId)?.mcpServerKeys ?? []
234
+ );
239
235
  const projectDir = join2(homedir2(), ".augmented", codeName, "project");
240
236
  const result = await gatherSessionToolBindProbe(
241
237
  { agent_id: agentId, code_name: codeName },
242
238
  integrations,
243
239
  projectDir,
244
- { sessionStartedMs, intervalMs: 0, maxPerRun: integrations.length }
240
+ { sessionLoadedServerKeys, intervalMs: 0, maxPerRun: integrations.length }
245
241
  );
246
242
  if (!result) {
247
243
  emit({
@@ -269,7 +265,7 @@ async function probeToolsCommand(opts) {
269
265
  reported: result.reports.length,
270
266
  due: result.due,
271
267
  skipped: result.skipped,
272
- session_started_ms: sessionStartedMs,
268
+ session_loaded_server_keys: [...sessionLoadedServerKeys],
273
269
  results: result.reports.map((r) => ({
274
270
  integration_id: r.integration_id,
275
271
  definition_id: defById.get(r.integration_id) ?? null,
@@ -666,7 +662,7 @@ async function initCommand(opts) {
666
662
  // src/commands/lint.ts
667
663
  import chalk4 from "chalk";
668
664
  import ora4 from "ora";
669
- import { readFileSync as readFileSync2, existsSync } from "fs";
665
+ import { readFileSync, existsSync } from "fs";
670
666
  import { join as join4, resolve } from "path";
671
667
  function printDiagnostics2(diagnostics) {
672
668
  for (const d of diagnostics) {
@@ -769,8 +765,8 @@ Linting ${name}:`));
769
765
  if (json) jsonResults.push({ agent: name, skipped: true });
770
766
  continue;
771
767
  }
772
- const charterContent = hasCharter ? readFileSync2(charterPath, "utf-8") : void 0;
773
- const toolsContent = hasTools ? readFileSync2(toolsPath, "utf-8") : void 0;
768
+ const charterContent = hasCharter ? readFileSync(charterPath, "utf-8") : void 0;
769
+ const toolsContent = hasTools ? readFileSync(toolsPath, "utf-8") : void 0;
774
770
  let result;
775
771
  if (charterContent && toolsContent) {
776
772
  result = lintAll(charterContent, toolsContent, { orgChannelPolicy: orgPolicy });
@@ -1748,7 +1744,7 @@ async function provisionCommand(codeName, options) {
1748
1744
  import chalk10 from "chalk";
1749
1745
  import ora10 from "ora";
1750
1746
  import { spawn } from "child_process";
1751
- import { existsSync as existsSync6, readFileSync as readFileSync6, writeFileSync as writeFileSync7 } from "fs";
1747
+ import { existsSync as existsSync6, readFileSync as readFileSync5, writeFileSync as writeFileSync7 } from "fs";
1752
1748
  import { delimiter, dirname as dirname3, join as join12 } from "path";
1753
1749
  import { fileURLToPath as fileURLToPath2 } from "url";
1754
1750
 
@@ -1788,7 +1784,7 @@ import {
1788
1784
  existsSync as existsSync2,
1789
1785
  mkdirSync as mkdirSync4,
1790
1786
  readdirSync,
1791
- readFileSync as readFileSync3,
1787
+ readFileSync as readFileSync2,
1792
1788
  renameSync,
1793
1789
  rmSync,
1794
1790
  writeFileSync as writeFileSync4
@@ -1845,7 +1841,7 @@ function validateManifest(parsed) {
1845
1841
  function readManifestFile(path) {
1846
1842
  if (!existsSync2(path)) return null;
1847
1843
  try {
1848
- return validateManifest(JSON.parse(readFileSync3(path, "utf-8")));
1844
+ return validateManifest(JSON.parse(readFileSync2(path, "utf-8")));
1849
1845
  } catch {
1850
1846
  return null;
1851
1847
  }
@@ -2005,7 +2001,7 @@ import {
2005
2001
  existsSync as existsSync4,
2006
2002
  mkdirSync as mkdirSync5,
2007
2003
  readdirSync as readdirSync2,
2008
- readFileSync as readFileSync4,
2004
+ readFileSync as readFileSync3,
2009
2005
  renameSync as renameSync3,
2010
2006
  rmdirSync,
2011
2007
  unlinkSync as unlinkSync2,
@@ -2026,7 +2022,7 @@ function registerIntroduceHook(projectCwd, command = INTRODUCE_HOOK_COMMAND) {
2026
2022
  if (!existsSync4(backupPath)) {
2027
2023
  copyFileSync(settingsPath, backupPath);
2028
2024
  }
2029
- settings = asPlainObject(safeParseJson(readFileSync4(settingsPath, "utf-8")));
2025
+ settings = asPlainObject(safeParseJson(readFileSync3(settingsPath, "utf-8")));
2030
2026
  }
2031
2027
  const hooks = asPlainObject(settings["hooks"]);
2032
2028
  const existing = Array.isArray(hooks[SESSION_START_KEY]) ? [...hooks[SESSION_START_KEY]] : [];
@@ -2099,7 +2095,7 @@ import {
2099
2095
  existsSync as existsSync5,
2100
2096
  mkdirSync as mkdirSync6,
2101
2097
  readdirSync as readdirSync3,
2102
- readFileSync as readFileSync5,
2098
+ readFileSync as readFileSync4,
2103
2099
  renameSync as renameSync4,
2104
2100
  rmdirSync as rmdirSync2,
2105
2101
  unlinkSync as unlinkSync3,
@@ -2118,7 +2114,7 @@ var STATUS_LINE_COMMAND_TYPE = "command";
2118
2114
  function installStatusLineAsset(targetPath = INSTALLED_STATUSLINE_PATH) {
2119
2115
  mkdirSync6(dirname2(targetPath), { recursive: true });
2120
2116
  const source = resolveBundledAssetPath();
2121
- const needsCopy = !existsSync5(targetPath) || readFileSync5(source, "utf-8") !== readFileSync5(targetPath, "utf-8");
2117
+ const needsCopy = !existsSync5(targetPath) || readFileSync4(source, "utf-8") !== readFileSync4(targetPath, "utf-8");
2122
2118
  if (needsCopy) {
2123
2119
  copyFileSync2(source, targetPath);
2124
2120
  chmodSync2(targetPath, 493);
@@ -2139,7 +2135,7 @@ function registerStatusLine(projectCwd, options = {}) {
2139
2135
  if (!existsSync5(backupPath)) {
2140
2136
  copyFileSync2(settingsPath, backupPath);
2141
2137
  }
2142
- settings = asPlainObject2(safeParseJson2(readFileSync5(settingsPath, "utf-8")));
2138
+ settings = asPlainObject2(safeParseJson2(readFileSync4(settingsPath, "utf-8")));
2143
2139
  }
2144
2140
  settings[STATUS_LINE_KEY] = {
2145
2141
  type: STATUS_LINE_COMMAND_TYPE,
@@ -2194,7 +2190,7 @@ function resolveBundledAssetPath() {
2194
2190
  );
2195
2191
  }
2196
2192
  function stripStatusLineKey(settingsPath) {
2197
- const settings = asPlainObject2(safeParseJson2(readFileSync5(settingsPath, "utf-8")));
2193
+ const settings = asPlainObject2(safeParseJson2(readFileSync4(settingsPath, "utf-8")));
2198
2194
  if (!(STATUS_LINE_KEY in settings)) return;
2199
2195
  delete settings[STATUS_LINE_KEY];
2200
2196
  writeFileSync6(settingsPath, JSON.stringify(settings, null, 2) + "\n");
@@ -2761,14 +2757,14 @@ async function impersonateIntroduceCommand() {
2761
2757
  }
2762
2758
  function readClaudeMdIdentity(path) {
2763
2759
  try {
2764
- return parseIdentityFromClaudeMd(readFileSync6(path, "utf-8"));
2760
+ return parseIdentityFromClaudeMd(readFileSync5(path, "utf-8"));
2765
2761
  } catch {
2766
2762
  return { displayName: null, role: null };
2767
2763
  }
2768
2764
  }
2769
2765
  function readMcpIntegrations(path) {
2770
2766
  try {
2771
- return parseIntegrationsFromMcpJson(readFileSync6(path, "utf-8"));
2767
+ return parseIntegrationsFromMcpJson(readFileSync5(path, "utf-8"));
2772
2768
  } catch {
2773
2769
  return [];
2774
2770
  }
@@ -3548,7 +3544,7 @@ function terminate(child) {
3548
3544
  // src/commands/manager-watch.tsx
3549
3545
  import { useEffect, useState, useMemo } from "react";
3550
3546
  import { render, Box, Text, useApp, useInput } from "ink";
3551
- import { existsSync as existsSync7, readFileSync as readFileSync7, statSync, openSync, readSync, closeSync } from "fs";
3547
+ import { existsSync as existsSync7, readFileSync as readFileSync6, statSync, openSync, readSync, closeSync } from "fs";
3552
3548
  import { homedir as homedir6 } from "os";
3553
3549
  import { join as join14 } from "path";
3554
3550
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -3581,7 +3577,7 @@ function managerWatchCommand(opts = {}) {
3581
3577
  function readState(stateFile) {
3582
3578
  try {
3583
3579
  if (!existsSync7(stateFile)) return null;
3584
- const raw = readFileSync7(stateFile, "utf-8");
3580
+ const raw = readFileSync6(stateFile, "utf-8");
3585
3581
  return JSON.parse(raw);
3586
3582
  } catch {
3587
3583
  return null;
@@ -3838,7 +3834,7 @@ Start the manager first: agt manager start
3838
3834
  }
3839
3835
  let lastSize = 0;
3840
3836
  try {
3841
- const initial = readFileSync7(logFile, "utf-8");
3837
+ const initial = readFileSync6(logFile, "utf-8");
3842
3838
  process.stdout.write(initial);
3843
3839
  lastSize = statSync(logFile).size;
3844
3840
  } catch (err) {
@@ -3874,7 +3870,7 @@ Start the manager first: agt manager start
3874
3870
 
3875
3871
  // src/commands/agent.ts
3876
3872
  import chalk14 from "chalk";
3877
- import { readFileSync as readFileSync8, existsSync as existsSync8 } from "fs";
3873
+ import { readFileSync as readFileSync7, existsSync as existsSync8 } from "fs";
3878
3874
  import { join as join15 } from "path";
3879
3875
  async function agentShowCommand(codeName, opts) {
3880
3876
  const json = isJsonMode();
@@ -3915,7 +3911,7 @@ async function agentShowCommand(codeName, opts) {
3915
3911
  if (hasLocalConfig) {
3916
3912
  const charterPath = join15(agentDir, "CHARTER.md");
3917
3913
  if (existsSync8(charterPath)) {
3918
- const raw = readFileSync8(charterPath, "utf-8");
3914
+ const raw = readFileSync7(charterPath, "utf-8");
3919
3915
  const parsed = extractFrontmatter(raw);
3920
3916
  if (parsed.frontmatter) {
3921
3917
  charter = parsed.frontmatter;
@@ -3923,7 +3919,7 @@ async function agentShowCommand(codeName, opts) {
3923
3919
  }
3924
3920
  const toolsPath = join15(agentDir, "TOOLS.md");
3925
3921
  if (existsSync8(toolsPath)) {
3926
- const raw = readFileSync8(toolsPath, "utf-8");
3922
+ const raw = readFileSync7(toolsPath, "utf-8");
3927
3923
  const parsed = extractFrontmatter(raw);
3928
3924
  if (parsed.frontmatter) {
3929
3925
  tools = parsed.frontmatter;
@@ -3932,7 +3928,7 @@ async function agentShowCommand(codeName, opts) {
3932
3928
  const statePath = join15(opts.configDir, "manager-state.json");
3933
3929
  if (existsSync8(statePath)) {
3934
3930
  try {
3935
- const raw = readFileSync8(statePath, "utf-8");
3931
+ const raw = readFileSync7(statePath, "utf-8");
3936
3932
  const state = JSON.parse(raw);
3937
3933
  agentState = state.agents?.find((a) => a.codeName === codeName) ?? null;
3938
3934
  } catch {
@@ -4251,7 +4247,7 @@ async function kanbanRecurringDisableCommand(titleOrId, opts) {
4251
4247
  }
4252
4248
 
4253
4249
  // src/commands/setup.ts
4254
- import { existsSync as existsSync9, readFileSync as readFileSync9, writeFileSync as writeFileSync8, mkdirSync as mkdirSync7, accessSync, constants as fsConstants } from "fs";
4250
+ import { existsSync as existsSync9, readFileSync as readFileSync8, writeFileSync as writeFileSync8, mkdirSync as mkdirSync7, accessSync, constants as fsConstants } from "fs";
4255
4251
  import { join as join16, dirname as dirname4 } from "path";
4256
4252
  import { homedir as homedir7 } from "os";
4257
4253
  import chalk16 from "chalk";
@@ -4301,7 +4297,7 @@ function writeEtcEnvironment(apiUrl, apiKey, consoleUrl) {
4301
4297
  return false;
4302
4298
  }
4303
4299
  try {
4304
- const current = readFileSync9(envPath, "utf-8");
4300
+ const current = readFileSync8(envPath, "utf-8");
4305
4301
  const stripped = current.split(/\r?\n/).filter((line) => !/^\s*(?:export\s+)?AGT_(?:HOST|API_KEY|CONSOLE_URL)=/.test(line)).join("\n");
4306
4302
  const base = stripped.endsWith("\n") || stripped.length === 0 ? stripped : `${stripped}
4307
4303
  `;
@@ -4350,7 +4346,7 @@ function ensureBashrcSourcesProfileD() {
4350
4346
  return false;
4351
4347
  }
4352
4348
  try {
4353
- const current = readFileSync9(bashrc, "utf-8");
4349
+ const current = readFileSync8(bashrc, "utf-8");
4354
4350
  const marker = "# Augmented (agt) \u2014 source system-wide AGT env";
4355
4351
  if (current.includes(marker)) return true;
4356
4352
  const snippet = [
@@ -4494,7 +4490,7 @@ async function setupCommand(token, options = {}) {
4494
4490
  mkdirSync7(profileDir, { recursive: true });
4495
4491
  }
4496
4492
  const marker = "# Augmented (agt) host configuration";
4497
- const current = existsSync9(profilePath) ? readFileSync9(profilePath, "utf-8") : "";
4493
+ const current = existsSync9(profilePath) ? readFileSync8(profilePath, "utf-8") : "";
4498
4494
  let updated;
4499
4495
  if (current.includes(marker)) {
4500
4496
  updated = current.replace(
@@ -4830,7 +4826,7 @@ import { execFileSync, execSync } from "child_process";
4830
4826
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4831
4827
  import chalk18 from "chalk";
4832
4828
  import ora16 from "ora";
4833
- var cliVersion = true ? "0.28.210" : "dev";
4829
+ var cliVersion = true ? "0.28.212" : "dev";
4834
4830
  async function fetchLatestVersion() {
4835
4831
  const host2 = getHost();
4836
4832
  if (!host2) return null;
@@ -5066,7 +5062,7 @@ import { homedir as homedir8 } from "os";
5066
5062
  import { join as join18 } from "path";
5067
5063
 
5068
5064
  // src/lib/subagent-mcp-audit.ts
5069
- import { readdirSync as readdirSync4, readFileSync as readFileSync10, statSync as statSync2 } from "fs";
5065
+ import { readdirSync as readdirSync4, readFileSync as readFileSync9, statSync as statSync2 } from "fs";
5070
5066
  import { join as join17 } from "path";
5071
5067
  function parseFrontmatter(content) {
5072
5068
  const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
@@ -5141,7 +5137,7 @@ function auditSubagentMcpBindings(rootDirs) {
5141
5137
  seen.add(file);
5142
5138
  let content;
5143
5139
  try {
5144
- content = readFileSync10(file, "utf-8");
5140
+ content = readFileSync9(file, "utf-8");
5145
5141
  } catch {
5146
5142
  continue;
5147
5143
  }
@@ -5203,7 +5199,7 @@ async function auditSubagentsCommand(options = {}) {
5203
5199
  }
5204
5200
 
5205
5201
  // src/lib/mcp-render-allowlist-audit.ts
5206
- import { readdirSync as readdirSync5, readFileSync as readFileSync11, statSync as statSync3 } from "fs";
5202
+ import { readdirSync as readdirSync5, readFileSync as readFileSync10, statSync as statSync3 } from "fs";
5207
5203
  import { homedir as homedir9 } from "os";
5208
5204
  import { join as join19 } from "path";
5209
5205
  function expectedWildcard(serverKey) {
@@ -5218,7 +5214,7 @@ function parseMcpWildcardsFromToolsLine(content) {
5218
5214
  }
5219
5215
  function readMcpServerKeys(mcpJsonPath) {
5220
5216
  try {
5221
- const config = JSON.parse(readFileSync11(mcpJsonPath, "utf-8"));
5217
+ const config = JSON.parse(readFileSync10(mcpJsonPath, "utf-8"));
5222
5218
  return Object.keys(config.mcpServers ?? {});
5223
5219
  } catch {
5224
5220
  return null;
@@ -5250,7 +5246,7 @@ function auditMcpRenderAllowlist(rootDir = join19(homedir9(), ".augmented")) {
5250
5246
  const mdPath = scope === "provision" ? join19(agentDir, ".claude", "agents", `${subagent}.md`) : join19(agentDir, "project", ".claude", "agents", `${subagent}.md`);
5251
5247
  let content;
5252
5248
  try {
5253
- content = readFileSync11(mdPath, "utf-8");
5249
+ content = readFileSync10(mdPath, "utf-8");
5254
5250
  } catch {
5255
5251
  continue;
5256
5252
  }
@@ -5312,7 +5308,7 @@ import { homedir as homedir10 } from "os";
5312
5308
  import { join as join21 } from "path";
5313
5309
 
5314
5310
  // src/lib/secret-leak-audit.ts
5315
- import { readdirSync as readdirSync6, readFileSync as readFileSync12, statSync as statSync4 } from "fs";
5311
+ import { readdirSync as readdirSync6, readFileSync as readFileSync11, statSync as statSync4 } from "fs";
5316
5312
  import { join as join20 } from "path";
5317
5313
  var SECRET_KEY_NAME_RE = /TOKEN|KEY|SECRET|BEARER|PASSWORD/i;
5318
5314
  function isTemplated(value) {
@@ -5339,7 +5335,7 @@ function scanMcpFile(file, agent2, findings) {
5339
5335
  }
5340
5336
  let parsed;
5341
5337
  try {
5342
- parsed = JSON.parse(readFileSync12(file, "utf-8"));
5338
+ parsed = JSON.parse(readFileSync11(file, "utf-8"));
5343
5339
  } catch {
5344
5340
  return;
5345
5341
  }
@@ -5844,7 +5840,7 @@ function handleError(err) {
5844
5840
  }
5845
5841
 
5846
5842
  // src/bin/agt.ts
5847
- var cliVersion2 = true ? "0.28.210" : "dev";
5843
+ var cliVersion2 = true ? "0.28.212" : "dev";
5848
5844
  var program = new Command();
5849
5845
  program.name("agt").description("Augmented CLI \u2014 agent provisioning and management").version(cliVersion2).option("--json", "Emit machine-readable JSON output (suppress spinners and colors)").option("--skip-update-check", "Skip the automatic update check on startup");
5850
5846
  program.hook("preAction", async (thisCommand, actionCommand) => {