@integrity-labs/agt-cli 0.28.896 → 0.28.898

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.
Files changed (23) hide show
  1. package/dist/bin/agt.js +5 -5
  2. package/dist/{chunk-HKG6EMAM.js → chunk-DDNFLITA.js} +4 -4
  3. package/dist/{chunk-5464FJVN.js → chunk-HQKGVPIV.js} +56 -2
  4. package/dist/{chunk-5464FJVN.js.map → chunk-HQKGVPIV.js.map} +1 -1
  5. package/dist/{chunk-RAEBKUW2.js → chunk-IVJVMR3S.js} +2 -2
  6. package/dist/{claude-pair-runtime-3MK5MUPN.js → claude-pair-runtime-CUFG7UQD.js} +2 -2
  7. package/dist/lib/manager-worker.js +144 -29
  8. package/dist/lib/manager-worker.js.map +1 -1
  9. package/dist/mcp/direct-chat-channel.js +55 -1
  10. package/dist/mcp/index.js +52 -1
  11. package/dist/mcp/origami.js +52 -1
  12. package/dist/mcp/slack-channel.js +55 -1
  13. package/dist/mcp/telegram-channel.js +55 -1
  14. package/dist/{persistent-session-5HSYQBF7.js → persistent-session-6QB3XNY2.js} +3 -3
  15. package/dist/{responsiveness-probe-ZSB3DLLI.js → responsiveness-probe-ULU4DHEO.js} +3 -3
  16. package/dist/{session-auth-dead-J7SQAYRR.js → session-auth-dead-UXZ5DDKQ.js} +2 -2
  17. package/package.json +1 -1
  18. /package/dist/{chunk-HKG6EMAM.js.map → chunk-DDNFLITA.js.map} +0 -0
  19. /package/dist/{chunk-RAEBKUW2.js.map → chunk-IVJVMR3S.js.map} +0 -0
  20. /package/dist/{claude-pair-runtime-3MK5MUPN.js.map → claude-pair-runtime-CUFG7UQD.js.map} +0 -0
  21. /package/dist/{persistent-session-5HSYQBF7.js.map → persistent-session-6QB3XNY2.js.map} +0 -0
  22. /package/dist/{responsiveness-probe-ZSB3DLLI.js.map → responsiveness-probe-ULU4DHEO.js.map} +0 -0
  23. /package/dist/{session-auth-dead-J7SQAYRR.js.map → session-auth-dead-UXZ5DDKQ.js.map} +0 -0
package/dist/bin/agt.js CHANGED
@@ -40,12 +40,12 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-HKG6EMAM.js";
43
+ } from "../chunk-DDNFLITA.js";
44
44
  import {
45
45
  getProjectDir,
46
46
  isSessionResumeDisabled,
47
47
  readDirectChatSessionState
48
- } from "../chunk-RAEBKUW2.js";
48
+ } from "../chunk-IVJVMR3S.js";
49
49
  import {
50
50
  AnchorSessionClient,
51
51
  CHANNEL_REGISTRY,
@@ -79,7 +79,7 @@ import {
79
79
  serializeManifestForSlackCli,
80
80
  sessionFileExists,
81
81
  sessionTranscriptDir
82
- } from "../chunk-5464FJVN.js";
82
+ } from "../chunk-HQKGVPIV.js";
83
83
  import "../chunk-XWVM4KPK.js";
84
84
 
85
85
  // src/bin/agt.ts
@@ -5467,7 +5467,7 @@ import { execFileSync, execSync } from "child_process";
5467
5467
  import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
5468
5468
  import chalk18 from "chalk";
5469
5469
  import ora16 from "ora";
5470
- var cliVersion = true ? "0.28.896" : "dev";
5470
+ var cliVersion = true ? "0.28.898" : "dev";
5471
5471
  async function fetchLatestVersion() {
5472
5472
  const host2 = getHost();
5473
5473
  if (!host2) return null;
@@ -6658,7 +6658,7 @@ function handleError(err) {
6658
6658
  }
6659
6659
 
6660
6660
  // src/bin/agt.ts
6661
- var cliVersion2 = true ? "0.28.896" : "dev";
6661
+ var cliVersion2 = true ? "0.28.898" : "dev";
6662
6662
  var program = new Command();
6663
6663
  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");
6664
6664
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -16,7 +16,7 @@ import {
16
16
  parseEnvIntegrations,
17
17
  shellQuote,
18
18
  summarizeUnanswerablePane
19
- } from "./chunk-RAEBKUW2.js";
19
+ } from "./chunk-IVJVMR3S.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-5464FJVN.js";
79
+ } from "./chunk-HQKGVPIV.js";
80
80
  import {
81
81
  parsePsRows
82
82
  } from "./chunk-XWVM4KPK.js";
@@ -6841,7 +6841,7 @@ function exchangeFailureKind(err) {
6841
6841
  }
6842
6842
 
6843
6843
  // src/lib/api-client.ts
6844
- var agtCliVersion = true ? "0.28.896" : "dev";
6844
+ var agtCliVersion = true ? "0.28.898" : "dev";
6845
6845
  var lastConfigHash = null;
6846
6846
  function setConfigHash(hash) {
6847
6847
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -11451,4 +11451,4 @@ export {
11451
11451
  managerInstallSystemUnitCommand,
11452
11452
  managerUninstallSystemUnitCommand
11453
11453
  };
11454
- //# sourceMappingURL=chunk-HKG6EMAM.js.map
11454
+ //# sourceMappingURL=chunk-DDNFLITA.js.map
@@ -12889,12 +12889,15 @@ function parseResetDateTime(humanDate, now) {
12889
12889
 
12890
12890
  // ../../packages/core/dist/claude-code-usage/banner-parser.js
12891
12891
  var SESSION_QUALIFIER = /^(?:session|\d{1,2}\s*-?\s*hours?|\d{1,2}h)$/i;
12892
+ var SPEND_QUALIFIER = /^(?:individual\s+)?spend$/i;
12892
12893
  function classifyLimitScope(qualifier) {
12893
12894
  const q = (qualifier ?? "").trim();
12894
12895
  if (!q)
12895
12896
  return "weekly";
12896
12897
  if (SESSION_QUALIFIER.test(q))
12897
12898
  return "session";
12899
+ if (SPEND_QUALIFIER.test(q))
12900
+ return "spend";
12898
12901
  if (/^weekly$/i.test(q))
12899
12902
  return "weekly";
12900
12903
  return "unknown";
@@ -12931,7 +12934,58 @@ var BANNER_PATTERNS = [
12931
12934
  // bounding the count, keeps it linear.
12932
12935
  `${SUBJECT}hit\\s+your\\s+(?<qualifier>[a-z0-9]+(?:[\\s-]+[a-z0-9]+){0,3}\\s+)?limit${SEP}resets\\s+(?<reset>${RESET_DATE})`,
12933
12936
  "i"
12934
- )
12937
+ ),
12938
+ // ENG-10365 — the Claude Team seat's INDIVIDUAL SPEND LIMIT.
12939
+ //
12940
+ // WHY THE TWO PATTERNS ABOVE CANNOT MATCH IT. Both require `limit` to be
12941
+ // followed immediately by a separator and then `resets`. The spend banner puts
12942
+ // its remedy between the two:
12943
+ //
12944
+ // You've hit your individual spend limit · run /usage-credits to ask your
12945
+ // admin for a higher limit · your weekly limit resets Sep 12, 5pm (UTC)
12946
+ // Continuing automatically at Sep 12, 5pm · esc to cancel
12947
+ //
12948
+ // so the adjacency fails and `parseUsageBanner` returned null — verified
12949
+ // against origin/main on the verbatim pane capture in ENG-10365 before this
12950
+ // pattern was written. Null means NO observation is POSTed, which means the
12951
+ // `claude_code_usage_observations` row never exists, which means
12952
+ // `usage-limit-monitor` never hears of the agent at all. cindy ran zero-second
12953
+ // turns for ~32 hours with `heartbeat_verdict fresh` and no usage alert of any
12954
+ // kind, because the whole chain starts here.
12955
+ //
12956
+ // THE GAP IS BOUNDED AND LAZY, deliberately. The real banner's gap is ~78
12957
+ // characters; 160 leaves 2x headroom for phrasing drift and for the pane's own
12958
+ // line wrap (which lands mid-sentence, as above, so `[\s\S]` and not `.`).
12959
+ // Lazy + bounded keeps it linear on the pane.log tails this parser runs over —
12960
+ // the same reason the saturated pattern refuses the naive `(a+)+` shape.
12961
+ //
12962
+ // WHAT IT INHERITS BY MATCHING AT ALL. Everything downstream keys on the
12963
+ // `usage_limit_reached` ALERT KIND rather than on the scope, so one matching
12964
+ // banner reaches the roster's `usage_limit_alert_open` flag (ENG-9634),
12965
+ // `resolveCappedAgents`, and both monitors that suppress on a capped agent.
12966
+ // That is why this fix is a regex and not a subsystem.
12967
+ //
12968
+ // AND A SECOND CONSUMER, which is worth stating precisely because it is easy
12969
+ // to overclaim. `rate-limit-classifier.ts:160` calls this parser to read the
12970
+ // RESET TIME out of a `rate_limit` / 429 transcript refusal, and
12971
+ // `readUsageCapUntil` (agent-serving-probe.ts:296) returns null — i.e. does NOT
12972
+ // defer — when that reset comes back null. So a parse failure here has always
12973
+ // disarmed the ENG-8197 host-side dispatch deferral for this banner, which
12974
+ // would explain cindy being dispatched into hourly while visibly blocked.
12975
+ //
12976
+ // NOT VERIFIED, and deliberately not claimed: whether a spend refusal is
12977
+ // written to the transcript as `error: 'rate_limit'` / `apiErrorStatus: 429`
12978
+ // at all. The classifier's verdict keys on those fields, not on this text. If
12979
+ // it is, the deferral starts working as a side effect of this fix; if it is
12980
+ // not, ENG-8197 is still blind to the spend ceiling and that is a separate
12981
+ // ticket. Nothing here depends on which.
12982
+ //
12983
+ // KNOWN LIMIT, stated rather than papered over: a spend banner that carries no
12984
+ // `resets` clause at all still yields null. `week_resets_at` drives the
12985
+ // monitor's auto-close, and synthesising an instant we never read is the exact
12986
+ // confident-and-false reporting ENG-8901 exists to stop. Every spend banner
12987
+ // observed so far carries one.
12988
+ new RegExp(`${SUBJECT}hit\\s+your\\s+(?<qualifier>(?:individual\\s+)?spend)\\s+limit[\\s\\S]{0,160}?resets\\s+(?<reset>${RESET_DATE})`, "i")
12935
12989
  ];
12936
12990
  function parseUsageBanner(text, now = /* @__PURE__ */ new Date()) {
12937
12991
  let bestIndex = -1;
@@ -14483,4 +14537,4 @@ export {
14483
14537
  peekCurrentSession,
14484
14538
  readDailySessionPin
14485
14539
  };
14486
- //# sourceMappingURL=chunk-5464FJVN.js.map
14540
+ //# sourceMappingURL=chunk-HQKGVPIV.js.map