@integrity-labs/agt-cli 0.28.226 → 0.28.228

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-IRMBTIZO.js";
41
+ } from "../chunk-STDJAYQQ.js";
42
42
  import {
43
43
  CHANNEL_REGISTRY,
44
44
  DEFAULT_FRAMEWORK,
@@ -67,7 +67,7 @@ import {
67
67
  renderTemplate,
68
68
  resolveChannels,
69
69
  serializeManifestForSlackCli
70
- } from "../chunk-C2EXC6LY.js";
70
+ } from "../chunk-VV5IXUN6.js";
71
71
  import "../chunk-XWVM4KPK.js";
72
72
 
73
73
  // src/bin/agt.ts
@@ -4826,7 +4826,7 @@ import { execFileSync, execSync } from "child_process";
4826
4826
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4827
4827
  import chalk18 from "chalk";
4828
4828
  import ora16 from "ora";
4829
- var cliVersion = true ? "0.28.226" : "dev";
4829
+ var cliVersion = true ? "0.28.228" : "dev";
4830
4830
  async function fetchLatestVersion() {
4831
4831
  const host2 = getHost();
4832
4832
  if (!host2) return null;
@@ -5840,7 +5840,7 @@ function handleError(err) {
5840
5840
  }
5841
5841
 
5842
5842
  // src/bin/agt.ts
5843
- var cliVersion2 = true ? "0.28.226" : "dev";
5843
+ var cliVersion2 = true ? "0.28.228" : "dev";
5844
5844
  var program = new Command();
5845
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");
5846
5846
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -18,7 +18,7 @@ import {
18
18
  resolveConnectivityProbe,
19
19
  worseConnectivityOutcome,
20
20
  wrapScheduledTaskPrompt
21
- } from "./chunk-C2EXC6LY.js";
21
+ } from "./chunk-VV5IXUN6.js";
22
22
  import {
23
23
  parsePsRows
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -648,6 +648,32 @@ you MUST use the Augmented MCP tools \u2014 never write to
648
648
  this team
649
649
  - **\`mcp__augmented__skill_improve\`** \u2014 propose targeted edits
650
650
 
651
+ ### Proactively offer to codify repeated instructions
652
+
653
+ Do not wait to be asked. When a user's instruction shows a **codify-worthy
654
+ signal**, offer in the moment to turn it into a skill. You still never create
655
+ one silently - you *propose*, the human confirms scope, then you create it.
656
+ Signals:
657
+
658
+ - The same instruction or preference given across **two or more sessions**,
659
+ or asked of you **2+ times**.
660
+ - Standing-rule phrasing - "always", "every time", "from now on",
661
+ "going forward" - framing a durable rule, not a one-off ask.
662
+ - A **correction you have had to apply more than once**.
663
+ - A **formatting or procedure standard** stated as a rule (an email shell, a
664
+ signature block, a report layout, a review checklist).
665
+
666
+ When you spot one, say so - e.g. "You've asked for this a few times; want me
667
+ to codify it as a skill so it auto-applies every time instead of me redoing it
668
+ by hand?" - then on a yes, confirm scope (below) and \`skill_create\` it,
669
+ writing the skill's *description* so it auto-activates on the matching task
670
+ (e.g. "Use when drafting any email for <client>").
671
+
672
+ Skill vs memory: a **repeated procedure** (a how-to you keep re-applying)
673
+ belongs in a **skill** (auto-loads on the task); a one-off fact or preference
674
+ belongs in **memory** (recall). Route repeated procedures to skills, not just
675
+ memory. Either way the human approves first - you offer, they confirm.
676
+
651
677
  ### Always confirm scope before creating
652
678
 
653
679
  Before invoking \`skill_create\`, ask the user: **"Should this skill be
@@ -5667,7 +5693,7 @@ function requireHost() {
5667
5693
  }
5668
5694
 
5669
5695
  // src/lib/api-client.ts
5670
- var agtCliVersion = true ? "0.28.226" : "dev";
5696
+ var agtCliVersion = true ? "0.28.228" : "dev";
5671
5697
  var lastConfigHash = null;
5672
5698
  function setConfigHash(hash) {
5673
5699
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -6784,7 +6810,13 @@ import { join as join6 } from "path";
6784
6810
  function classifyMcpServer(entry) {
6785
6811
  if (!entry || typeof entry !== "object") return "unknown";
6786
6812
  const e = entry;
6787
- if (typeof e.command === "string") return "stdio";
6813
+ if (typeof e.command === "string") {
6814
+ const env = e.env;
6815
+ if (env && typeof env === "object" && typeof env["AGT_REMOTE_MCP_URL"] === "string" && typeof env["AGT_REMOTE_MCP_TOKEN_VAR"] === "string") {
6816
+ return "oauth-proxy";
6817
+ }
6818
+ return "stdio";
6819
+ }
6788
6820
  if (typeof e.url === "string") return "http";
6789
6821
  return "unknown";
6790
6822
  }
@@ -6792,17 +6824,31 @@ function splitServerKeysByKind(mcpJson, serverKeys) {
6792
6824
  const servers = mcpJson?.mcpServers ?? {};
6793
6825
  const stdio = [];
6794
6826
  const http = [];
6827
+ const proxy = [];
6795
6828
  for (const key of serverKeys) {
6796
6829
  const kind = classifyMcpServer(servers[key]);
6797
6830
  if (kind === "stdio") stdio.push(key);
6798
6831
  else if (kind === "http") http.push(key);
6832
+ else if (kind === "oauth-proxy") proxy.push(key);
6799
6833
  }
6800
- return { stdio, http };
6834
+ return { stdio, http, proxy };
6801
6835
  }
6802
6836
  function computeSessionToolBindStatus(input) {
6803
- const { stdioServerKeys, httpServerKeys, missingStdioKeys, httpReachable, sessionLoadedServerKeys } = input;
6804
- if (stdioServerKeys.length === 0 && httpServerKeys.length === 0) return "unknown";
6837
+ const {
6838
+ stdioServerKeys,
6839
+ httpServerKeys,
6840
+ proxyServerKeys,
6841
+ missingStdioKeys,
6842
+ httpReachable,
6843
+ sessionLoadedServerKeys
6844
+ } = input;
6845
+ if (stdioServerKeys.length === 0 && httpServerKeys.length === 0 && proxyServerKeys.length === 0)
6846
+ return "unknown";
6805
6847
  if (stdioServerKeys.some((k) => missingStdioKeys.has(k))) return "missing";
6848
+ if (proxyServerKeys.some((k) => missingStdioKeys.has(k))) return "missing";
6849
+ for (const k of proxyServerKeys) {
6850
+ if (httpReachable.get(k) === false) return "unreachable";
6851
+ }
6806
6852
  let anyHttpUnconfirmed = false;
6807
6853
  for (const k of httpServerKeys) {
6808
6854
  if (!sessionLoadedServerKeys.has(k)) {
@@ -6813,7 +6859,8 @@ function computeSessionToolBindStatus(input) {
6813
6859
  if (reachable === false) return "unreachable";
6814
6860
  if (reachable === void 0) anyHttpUnconfirmed = true;
6815
6861
  }
6816
- if (anyHttpUnconfirmed && stdioServerKeys.length === 0) return "unknown";
6862
+ if (anyHttpUnconfirmed && stdioServerKeys.length === 0 && proxyServerKeys.length === 0)
6863
+ return "unknown";
6817
6864
  return "bound";
6818
6865
  }
6819
6866
 
@@ -6850,6 +6897,7 @@ async function runSessionToolBindProbes(integrations, options) {
6850
6897
  const batch = due.slice(0, maxPerRun);
6851
6898
  const declaredKeys = Object.keys(options.mcpJson?.mcpServers ?? {});
6852
6899
  const reports = [];
6900
+ const rebindCandidates = [];
6853
6901
  let skipped = 0;
6854
6902
  let probed = 0;
6855
6903
  for (const integ of batch) {
@@ -6863,9 +6911,9 @@ async function runSessionToolBindProbes(integrations, options) {
6863
6911
  continue;
6864
6912
  }
6865
6913
  probed += 1;
6866
- const { stdio, http } = splitServerKeysByKind(options.mcpJson, keys);
6914
+ const { stdio, http, proxy } = splitServerKeysByKind(options.mcpJson, keys);
6867
6915
  const httpReachable = /* @__PURE__ */ new Map();
6868
- for (const key of http) {
6916
+ for (const key of [...http, ...proxy]) {
6869
6917
  let reachable;
6870
6918
  try {
6871
6919
  reachable = await options.probeHttp(key);
@@ -6877,6 +6925,7 @@ async function runSessionToolBindProbes(integrations, options) {
6877
6925
  const status = computeSessionToolBindStatus({
6878
6926
  stdioServerKeys: stdio,
6879
6927
  httpServerKeys: http,
6928
+ proxyServerKeys: proxy,
6880
6929
  missingStdioKeys: options.missingStdioKeys,
6881
6930
  httpReachable,
6882
6931
  sessionLoadedServerKeys: options.sessionLoadedServerKeys ?? /* @__PURE__ */ new Set()
@@ -6886,8 +6935,25 @@ async function runSessionToolBindProbes(integrations, options) {
6886
6935
  continue;
6887
6936
  }
6888
6937
  reports.push({ integration_id: integ.id, scope: integ.scope, status });
6938
+ if (status === "missing" || status === "unreachable") {
6939
+ const failingKeys = /* @__PURE__ */ new Set();
6940
+ for (const k of [...stdio, ...proxy]) {
6941
+ if (options.missingStdioKeys.has(k)) failingKeys.add(k);
6942
+ }
6943
+ for (const k of proxy) {
6944
+ if (httpReachable.get(k) === false) failingKeys.add(k);
6945
+ }
6946
+ if (failingKeys.size > 0) {
6947
+ rebindCandidates.push({
6948
+ integration_id: integ.id,
6949
+ scope: integ.scope,
6950
+ status,
6951
+ serverKeys: [...failingKeys]
6952
+ });
6953
+ }
6954
+ }
6889
6955
  }
6890
- return { reports, due: due.length, probed, skipped };
6956
+ return { reports, rebindCandidates, due: due.length, probed, skipped };
6891
6957
  }
6892
6958
 
6893
6959
  // src/lib/session-tool-bind-probe-host.ts
@@ -7720,4 +7786,4 @@ export {
7720
7786
  managerInstallSystemUnitCommand,
7721
7787
  managerUninstallSystemUnitCommand
7722
7788
  };
7723
- //# sourceMappingURL=chunk-IRMBTIZO.js.map
7789
+ //# sourceMappingURL=chunk-STDJAYQQ.js.map