@integrity-labs/agt-cli 0.28.344 → 0.28.346

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
@@ -40,7 +40,7 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-AJ23F3MU.js";
43
+ } from "../chunk-2ZXC5NUI.js";
44
44
  import {
45
45
  AnchorSessionClient,
46
46
  CHANNEL_REGISTRY,
@@ -70,7 +70,7 @@ import {
70
70
  renderTemplate,
71
71
  resolveChannels,
72
72
  serializeManifestForSlackCli
73
- } from "../chunk-7MP37HYR.js";
73
+ } from "../chunk-NUL7IYDV.js";
74
74
  import "../chunk-XWVM4KPK.js";
75
75
 
76
76
  // src/bin/agt.ts
@@ -4829,7 +4829,7 @@ import { execFileSync, execSync } from "child_process";
4829
4829
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4830
4830
  import chalk18 from "chalk";
4831
4831
  import ora16 from "ora";
4832
- var cliVersion = true ? "0.28.344" : "dev";
4832
+ var cliVersion = true ? "0.28.346" : "dev";
4833
4833
  async function fetchLatestVersion() {
4834
4834
  const host2 = getHost();
4835
4835
  if (!host2) return null;
@@ -6001,7 +6001,7 @@ function handleError(err) {
6001
6001
  }
6002
6002
 
6003
6003
  // src/bin/agt.ts
6004
- var cliVersion2 = true ? "0.28.344" : "dev";
6004
+ var cliVersion2 = true ? "0.28.346" : "dev";
6005
6005
  var program = new Command();
6006
6006
  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");
6007
6007
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -20,7 +20,7 @@ import {
20
20
  resolveConnectivityProbe,
21
21
  worseConnectivityOutcome,
22
22
  wrapScheduledTaskPrompt
23
- } from "./chunk-7MP37HYR.js";
23
+ } from "./chunk-NUL7IYDV.js";
24
24
  import {
25
25
  parsePsRows
26
26
  } from "./chunk-XWVM4KPK.js";
@@ -7052,7 +7052,7 @@ function requireHost() {
7052
7052
  }
7053
7053
 
7054
7054
  // src/lib/api-client.ts
7055
- var agtCliVersion = true ? "0.28.344" : "dev";
7055
+ var agtCliVersion = true ? "0.28.346" : "dev";
7056
7056
  var lastConfigHash = null;
7057
7057
  function setConfigHash(hash) {
7058
7058
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -9501,4 +9501,4 @@ export {
9501
9501
  managerInstallSystemUnitCommand,
9502
9502
  managerUninstallSystemUnitCommand
9503
9503
  };
9504
- //# sourceMappingURL=chunk-AJ23F3MU.js.map
9504
+ //# sourceMappingURL=chunk-2ZXC5NUI.js.map
@@ -5660,16 +5660,19 @@ var INTEGRATION_REGISTRY = [
5660
5660
  beta: true,
5661
5661
  // ADR-0046: premium (billable). Unlike the usage-priced premiums (Deck,
5662
5662
  // Firecrawl), Ayrshare's true cost is a SUBSCRIPTION - USD $7.99 per active
5663
- // User Profile per month - so it is priced on the same axis: a flat USD $18 per
5664
- // agent per month, billed only for an ACTIVE profile (>=1 linked social
5663
+ // User Profile per month - so it is priced on the same axis: a flat monthly
5664
+ // fee per agent, billed only for an ACTIVE profile (>=1 linked social
5665
5665
  // account). Per the PremiumDescriptor contract, a monthly premium carries NO
5666
- // per-operation `meters` (it meters nothing per call); the descriptor here only
5667
- // arms the per-org opt-in entitlement gate (isPremiumDefinition /
5668
- // isOrgEntitledToPremium). The monthly-charge consumer is deferred with the
5669
- // shared billing (Stripe) slice, as it is for every premium integration.
5666
+ // per-operation `meters` (it meters nothing per call), so it has no rate-card
5667
+ // rows; ENG-7907 puts the per-currency amount on `monthlyPrice` (the single
5668
+ // machine source the acknowledgement modal renders and the deferred Stripe
5669
+ // billing slice reads). The descriptor also arms the per-org opt-in
5670
+ // entitlement gate (isPremiumDefinition / isOrgEntitledToPremium).
5670
5671
  premium: {
5671
5672
  pricing: "monthly",
5672
- note: "Billed USD $18/month per active social profile (an agent with at least one connected social account)."
5673
+ // ENG-7907: USD $15 / AUD $20 per active social profile per month.
5674
+ monthlyPrice: { usdPriceMinor: 1500, audPriceMinor: 2e3 },
5675
+ note: "Billed USD $15/month (A$20) per active social profile (an agent with at least one connected social account)."
5673
5676
  }
5674
5677
  },
5675
5678
  {
@@ -6835,14 +6838,18 @@ var FRESH_HEARTBEAT_THRESHOLD_MS = 2 * 60 * 1e3;
6835
6838
  // ../../packages/core/dist/claude-code-usage/banner-parser.js
6836
6839
  var SEP = /[\s·\-–—]+/.source;
6837
6840
  var SUBJECT = /(?:You(?:['’]ve|\s+have)?\s+)?/.source;
6838
- var RESET_DATE = /[A-Za-z]{3,9}\s+\d{1,2}(?:\s*,\s*\d{1,2}(?::\d{2})?\s*(?:am|pm)(?:\s*\(?UTC\)?)?)?/.source;
6841
+ var TIME_OF_DAY = /\d{1,2}(?::\d{2})?\s*(?:am|pm)(?:\s*\(?UTC\)?)?/.source;
6842
+ var RESET_DATE = `(?:[A-Za-z]{3,9}\\s+\\d{1,2}(?:\\s*,\\s*${TIME_OF_DAY})?|${TIME_OF_DAY})`;
6839
6843
  var BANNER_PATTERNS = [
6840
6844
  // Percentage form — pct in group 1, reset in group 2.
6841
6845
  new RegExp(`${SUBJECT}used\\s+(\\d{1,3})%\\s+of\\s+your\\s+weekly\\s+limit${SEP}resets\\s+(${RESET_DATE})`, "i"),
6842
- // Saturated form (ENG-5434) — no pct, reset in group 1. Wrapped to keep
6843
- // the per-pattern shape consistent with the percentage form: the parser
6844
- // checks group 1 for a digit string and treats a missing one as pct=100.
6845
- new RegExp(`${SUBJECT}hit\\s+your\\s+limit${SEP}resets\\s+(${RESET_DATE})`, "i")
6846
+ // Saturated form (ENG-5434, extended by ENG-7904) — no pct, reset in group 1.
6847
+ // An optional qualifier word ("weekly", "5-hour", …) may sit between "your"
6848
+ // and "limit"; matching it keeps the parser resilient to CC's phrasing drift.
6849
+ // Wrapped to keep the per-pattern shape consistent with the percentage form:
6850
+ // the parser checks group 1 for a digit string and treats a missing one as
6851
+ // pct=100.
6852
+ new RegExp(`${SUBJECT}hit\\s+your\\s+(?:[a-z0-9-]+\\s+)?limit${SEP}resets\\s+(${RESET_DATE})`, "i")
6846
6853
  ];
6847
6854
  function parseUsageBanner(text, now = /* @__PURE__ */ new Date()) {
6848
6855
  let bestIndex = -1;
@@ -6890,8 +6897,31 @@ var MONTHS = [
6890
6897
  "dec"
6891
6898
  ];
6892
6899
  var TIME_TAIL = /,\s*(\d{1,2})(?::(\d{2}))?\s*(am|pm)(?:\s*\(?UTC\)?)?\s*$/i;
6900
+ var TIME_ONLY = /^(\d{1,2})(?::(\d{2}))?\s*(am|pm)(?:\s*\(?UTC\)?)?$/i;
6901
+ var MS_PER_DAY = 24 * 60 * 60 * 1e3;
6902
+ function parseAmPm(hourStr, minStr, ampm) {
6903
+ const rawHour = Number.parseInt(hourStr, 10);
6904
+ if (!Number.isFinite(rawHour) || rawHour < 1 || rawHour > 12)
6905
+ return null;
6906
+ let minute = 0;
6907
+ if (minStr) {
6908
+ minute = Number.parseInt(minStr, 10);
6909
+ if (!Number.isFinite(minute) || minute < 0 || minute > 59)
6910
+ return null;
6911
+ }
6912
+ const isPm = ampm.toLowerCase() === "pm";
6913
+ return { hour: rawHour % 12 + (isPm ? 12 : 0), minute };
6914
+ }
6893
6915
  function parseResetDateTime(humanDate, now) {
6894
6916
  const trimmed = humanDate.trim();
6917
+ const timeOnly = trimmed.match(TIME_ONLY);
6918
+ if (timeOnly) {
6919
+ const hm = parseAmPm(timeOnly[1], timeOnly[2], timeOnly[3]);
6920
+ if (!hm)
6921
+ return null;
6922
+ const todayAt = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), hm.hour, hm.minute);
6923
+ return new Date(todayAt <= now.getTime() ? todayAt + MS_PER_DAY : todayAt);
6924
+ }
6895
6925
  const timeMatch = trimmed.match(TIME_TAIL);
6896
6926
  const dateOnly = timeMatch ? trimmed.slice(0, timeMatch.index).trim() : trimmed;
6897
6927
  const parts = dateOnly.split(/\s+/);
@@ -6906,16 +6936,11 @@ function parseResetDateTime(humanDate, now) {
6906
6936
  let hour = 0;
6907
6937
  let minute = 0;
6908
6938
  if (timeMatch) {
6909
- const rawHour = Number.parseInt(timeMatch[1], 10);
6910
- if (!Number.isFinite(rawHour) || rawHour < 1 || rawHour > 12)
6939
+ const hm = parseAmPm(timeMatch[1], timeMatch[2], timeMatch[3]);
6940
+ if (!hm)
6911
6941
  return null;
6912
- if (timeMatch[2]) {
6913
- minute = Number.parseInt(timeMatch[2], 10);
6914
- if (!Number.isFinite(minute) || minute < 0 || minute > 59)
6915
- return null;
6916
- }
6917
- const isPm = timeMatch[3].toLowerCase() === "pm";
6918
- hour = rawHour % 12 + (isPm ? 12 : 0);
6942
+ hour = hm.hour;
6943
+ minute = hm.minute;
6919
6944
  }
6920
6945
  const baseYear = now.getUTCFullYear();
6921
6946
  let resolved = null;
@@ -7162,6 +7187,17 @@ function attributeTranscriptUsageByRun(jsonl) {
7162
7187
  return { perRunModel: [...agg.values()], runIds: [...runIds] };
7163
7188
  }
7164
7189
 
7190
+ // ../../packages/core/dist/claude-code-usage/usage-limit-marker.js
7191
+ var USAGE_LIMIT_MARKER_FILENAME = "claude-usage-limit.json";
7192
+ var USAGE_LIMIT_MARKER_VERSION = 1;
7193
+ function serializeUsageLimitMarker(limitedUntil) {
7194
+ const marker = {
7195
+ version: USAGE_LIMIT_MARKER_VERSION,
7196
+ limited_until: limitedUntil.toISOString()
7197
+ };
7198
+ return JSON.stringify(marker);
7199
+ }
7200
+
7165
7201
  // ../../packages/core/dist/loops/kanban-check.js
7166
7202
  var KANBAN_CHECK_COMMAND = "kanban_list \u2014 pick up any actionable items if you are free.";
7167
7203
  var KANBAN_NUDGE_ACTIONABLE_STATUSES = ["todo", "in_progress"];
@@ -10050,6 +10086,8 @@ export {
10050
10086
  sumTranscriptUsageInWindow,
10051
10087
  isEmptyTotals,
10052
10088
  attributeTranscriptUsageByRun,
10089
+ USAGE_LIMIT_MARKER_FILENAME,
10090
+ serializeUsageLimitMarker,
10053
10091
  KANBAN_CHECK_COMMAND,
10054
10092
  KANBAN_NUDGE_ACTIONABLE_STATUSES,
10055
10093
  isSystemInjectedContent,
@@ -10114,4 +10152,4 @@ export {
10114
10152
  stopAllSessionsAndWait,
10115
10153
  getProjectDir
10116
10154
  };
10117
- //# sourceMappingURL=chunk-7MP37HYR.js.map
10155
+ //# sourceMappingURL=chunk-NUL7IYDV.js.map