@integrity-labs/agt-cli 0.28.1076 → 0.28.1078

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,12 +40,12 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-DSRPF6KS.js";
43
+ } from "../chunk-R5IN7H32.js";
44
44
  import {
45
45
  getProjectDir,
46
46
  isSessionResumeDisabled,
47
47
  readDirectChatSessionState
48
- } from "../chunk-XNIN4UH6.js";
48
+ } from "../chunk-PJWMW6ET.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-HE3ZAMGG.js";
82
+ } from "../chunk-UDJINPUK.js";
83
83
  import "../chunk-OCMJ5E6J.js";
84
84
  import "../chunk-XWVM4KPK.js";
85
85
  import "../chunk-EL5MWGGH.js";
@@ -5474,7 +5474,7 @@ import { execFileSync, execSync } from "child_process";
5474
5474
  import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
5475
5475
  import chalk18 from "chalk";
5476
5476
  import ora16 from "ora";
5477
- var cliVersion = true ? "0.28.1076" : "dev";
5477
+ var cliVersion = true ? "0.28.1078" : "dev";
5478
5478
  async function fetchLatestVersion() {
5479
5479
  const host2 = getHost();
5480
5480
  if (!host2) return null;
@@ -6734,7 +6734,7 @@ function handleError(err) {
6734
6734
  }
6735
6735
 
6736
6736
  // src/bin/agt.ts
6737
- var cliVersion2 = true ? "0.28.1076" : "dev";
6737
+ var cliVersion2 = true ? "0.28.1078" : "dev";
6738
6738
  var program = new Command();
6739
6739
  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");
6740
6740
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -24,7 +24,7 @@ import {
24
24
  rotateDailySession,
25
25
  sessionFileExists,
26
26
  todayLocalIso
27
- } from "./chunk-HE3ZAMGG.js";
27
+ } from "./chunk-UDJINPUK.js";
28
28
  import {
29
29
  classifyUnanswerablePane,
30
30
  findUsageLimitResetHint,
@@ -6113,4 +6113,4 @@ export {
6113
6113
  stopAllSessionsAndWait,
6114
6114
  getProjectDir
6115
6115
  };
6116
- //# sourceMappingURL=chunk-XNIN4UH6.js.map
6116
+ //# sourceMappingURL=chunk-PJWMW6ET.js.map
@@ -16,7 +16,7 @@ import {
16
16
  parseEnvFileEntries,
17
17
  parseEnvIntegrations,
18
18
  shellQuote
19
- } from "./chunk-XNIN4UH6.js";
19
+ } from "./chunk-PJWMW6ET.js";
20
20
  import {
21
21
  BIND_FAILURE_QUARANTINE_THRESHOLD,
22
22
  INTEGRATIONS_SECTION_END,
@@ -79,7 +79,7 @@ import {
79
79
  sessionTranscriptDir,
80
80
  worseConnectivityOutcome,
81
81
  wrapScheduledTaskPrompt
82
- } from "./chunk-HE3ZAMGG.js";
82
+ } from "./chunk-UDJINPUK.js";
83
83
  import {
84
84
  classifyUnanswerablePane,
85
85
  isConsumerTermsDialogVisible,
@@ -7122,7 +7122,7 @@ function exchangeFailureKind(err) {
7122
7122
  }
7123
7123
 
7124
7124
  // src/lib/api-client.ts
7125
- var agtCliVersion = true ? "0.28.1076" : "dev";
7125
+ var agtCliVersion = true ? "0.28.1078" : "dev";
7126
7126
  var lastConfigHash = null;
7127
7127
  function setConfigHash(hash) {
7128
7128
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -12095,4 +12095,4 @@ export {
12095
12095
  managerInstallSystemUnitCommand,
12096
12096
  managerUninstallSystemUnitCommand
12097
12097
  };
12098
- //# sourceMappingURL=chunk-DSRPF6KS.js.map
12098
+ //# sourceMappingURL=chunk-R5IN7H32.js.map
@@ -1170,6 +1170,34 @@ function formatEmptyChannelAllowlistLines() {
1170
1170
  ` the removal (ENG-9663).`
1171
1171
  ];
1172
1172
  }
1173
+ var EMAIL_MAIL_RULES_DEF = "email.mail_rules";
1174
+ var MAIL_RULE_DISPOSITION_TEXT = {
1175
+ egress: "forwards or redirects mail to another address",
1176
+ suppression: "hides mail from its owner (trash, delete, archive or mark as read)",
1177
+ opaque: "has an effect that can't be read from the request (including deleting a rule)"
1178
+ };
1179
+ function formatMailRuleHoldLines(hold) {
1180
+ const which = hold.heldDispositions.map((d) => ` - a rule that ${MAIL_RULE_DISPOSITION_TEXT[d] ?? d}`);
1181
+ if (hold.live) {
1182
+ return [
1183
+ ` The platform holds these mail-rule changes for an Approve/Deny card, and approving`,
1184
+ ` the card releases the change:`,
1185
+ ...which,
1186
+ ` When asked for one, attempt it: do not decline on this guardrail's basis. Tell the`,
1187
+ ` user it is waiting for approval, and do not say it was made until it is approved.`
1188
+ ];
1189
+ }
1190
+ return [` Not held by the platform yet: these mail-rule changes go through and are only recorded:`, ...which];
1191
+ }
1192
+ function effectiveMailRuleEnforcement(g) {
1193
+ if (g.definitionId !== EMAIL_MAIL_RULES_DEF)
1194
+ return g.enforcement;
1195
+ if (g.mailRuleHold === void 0)
1196
+ return g.enforcement;
1197
+ if (g.enforcement !== "enforce")
1198
+ return g.enforcement;
1199
+ return g.mailRuleHold.live ? "warn" : "log";
1200
+ }
1173
1201
  function renderGuardrailBullet(g) {
1174
1202
  const lines = [];
1175
1203
  const header = `- **${g.displayName}** (${g.category}, from ${g.source})`;
@@ -1177,7 +1205,7 @@ function renderGuardrailBullet(g) {
1177
1205
  if (g.description?.trim()) {
1178
1206
  lines.push(` ${g.description.trim()}`);
1179
1207
  }
1180
- lines.push(...g.definitionId === EMAIL_DOMAIN_RESTRICT_DEF ? formatEmailDomainConfigLines(g.config) : g.definitionId === CALENDAR_CONFIDENTIALITY_DEF ? formatCalendarConfidentialityLines(g.config) : (
1208
+ lines.push(...g.definitionId === EMAIL_DOMAIN_RESTRICT_DEF ? formatEmailDomainConfigLines(g.config) : g.definitionId === CALENDAR_CONFIDENTIALITY_DEF ? formatCalendarConfidentialityLines(g.config) : g.definitionId === EMAIL_MAIL_RULES_DEF && g.mailRuleHold ? formatMailRuleHoldLines(g.mailRuleHold) : (
1181
1209
  // ENG-9663: checked AFTER the two named formatters, so an email or
1182
1210
  // calendar guardrail can never be captured by the structural match.
1183
1211
  hasEmptyChannelAllowlist(g) ? formatEmptyChannelAllowlistLines() : formatConfigLines(g.config)
@@ -1197,12 +1225,14 @@ var REQUIRE_APPROVAL_HOW = {
1197
1225
  ` with the request_id and act only once it is approved; if it is denied or expires, do`,
1198
1226
  ` not act, and tell the user. Never just say you are waiting for, or cannot reach, your`,
1199
1227
  ` manager without filing the request. If \`request_approval\` fails, say so and leave the`,
1200
- ` action undone.`
1228
+ ` action undone. For an email, pass \`detail.email\` = { to, from, subject } so your`,
1229
+ ` manager sees who it goes to.`
1201
1230
  ],
1202
1231
  warn: [
1203
1232
  ` When one of these actions is not clearly justified, ask rather than decline: call`,
1204
1233
  ` \`request_approval\` (it goes to your manager), end your turn, and act only once`,
1205
- ` \`check_approval\` says it is approved.`
1234
+ ` \`check_approval\` says it is approved. For an email, pass \`detail.email\` =`,
1235
+ ` { to, from, subject }.`
1206
1236
  ]
1207
1237
  };
1208
1238
  var REQUIRE_APPROVAL_EMAIL_ACTION = "send_email";
@@ -1304,9 +1334,12 @@ function buildGuardrailsSection(guardrails) {
1304
1334
  const active = guardrails.map((g) => {
1305
1335
  const enforcement = effectiveChannelAllowlistEnforcement({
1306
1336
  ...g,
1307
- enforcement: effectiveEmailEnforcement({
1337
+ enforcement: effectiveMailRuleEnforcement({
1308
1338
  ...g,
1309
- enforcement: effectiveCalendarEnforcement(g)
1339
+ enforcement: effectiveEmailEnforcement({
1340
+ ...g,
1341
+ enforcement: effectiveCalendarEnforcement(g)
1342
+ })
1310
1343
  })
1311
1344
  });
1312
1345
  return { ...g, enforcement };
@@ -5043,7 +5076,14 @@ var NOTICE_KIND_AUDIENCE = {
5043
5076
  // text is explicitly second-person to the machine ("you are the only party who
5044
5077
  // can check the fix"). Deliberately out of scope: messaging that end user
5045
5078
  // automatically.
5046
- feature_request_resolved: "agent"
5079
+ feature_request_resolved: "agent",
5080
+ // ENG-11195: a customer replied by email to a support request. 'agent': the
5081
+ // text is second-person to the machine ("decide whether a reply is needed"),
5082
+ // names a raw request id, and carries the customer's email as quoted
5083
+ // UNTRUSTED data. Shown to a human reader in direct chat, it would be
5084
+ // platform-authored instructions addressed to someone else, wrapped around
5085
+ // a stranger's text.
5086
+ support_email_reply: "agent"
5047
5087
  };
5048
5088
  var USER_FACING_KIND_SET = new Set(Object.entries(NOTICE_KIND_AUDIENCE).filter(([, audience]) => audience === "user").map(([kind]) => kind));
5049
5089
  var USER_FACING_NOTICE_KINDS = Object.freeze([
@@ -5722,7 +5762,7 @@ var FLAG_REGISTRY = [
5722
5762
  },
5723
5763
  {
5724
5764
  key: "live-team-only-default",
5725
- description: "Make a NEW Ninja Canvas (Augmented Live) page team-only by default (ENG-11089, ADR-0122): when on, a publish that names no visibility is readable only by signed-in members of the publishing agent's team, and sharing it wider is an explicit choice. Evaluated per-org. Chooses the DEFAULT only: it never changes an existing page, and turning it off never un-protects a page that is already team-only. INERT until ENG-11150 lands - until then every publish is public and a non-public request is refused. Boolean gate; ships dark.",
5765
+ description: "Make a NEW Ninja Canvas (Augmented Live) page team-only by default (ENG-11089, ADR-0122): when on, a publish that names no visibility is readable only by signed-in members of the publishing agent's team, and sharing it wider is an explicit choice. Evaluated per-org. Chooses the DEFAULT only: it never changes an existing page, and turning it off never un-protects a page that is already team-only, and an explicit visibility always wins. The edge can enforce it since ENG-11150; ENG-11094 wires it into the publish default. It is the PLATFORM default: an org's own canvas_default_visibility setting (ENG-11159) wins over it. Boolean gate; ships dark.",
5726
5766
  flagType: "boolean",
5727
5767
  defaultValue: false,
5728
5768
  // An org owner/admin must not arm a confidentiality default before the edge
@@ -16118,4 +16158,4 @@ export {
16118
16158
  peekCurrentSession,
16119
16159
  readDailySessionPin
16120
16160
  };
16121
- //# sourceMappingURL=chunk-HE3ZAMGG.js.map
16161
+ //# sourceMappingURL=chunk-UDJINPUK.js.map