@integrity-labs/agt-cli 0.28.716 → 0.28.718

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 (25) hide show
  1. package/dist/bin/agt.js +5 -5
  2. package/dist/{chunk-LHYYO4NY.js → chunk-7LH3SVAD.js} +124 -1
  3. package/dist/chunk-7LH3SVAD.js.map +1 -0
  4. package/dist/{chunk-OOYUWMTR.js → chunk-EEZHSNQ2.js} +4 -4
  5. package/dist/{chunk-ILDRNSOB.js → chunk-FNALM4HG.js} +120 -19
  6. package/dist/chunk-FNALM4HG.js.map +1 -0
  7. package/dist/{claude-pair-runtime-JK7GQU25.js → claude-pair-runtime-PDG74SAT.js} +2 -2
  8. package/dist/lib/manager-worker.js +535 -347
  9. package/dist/lib/manager-worker.js.map +1 -1
  10. package/dist/mcp/direct-chat-channel.js +123 -0
  11. package/dist/mcp/index.js +123 -0
  12. package/dist/mcp/origami.js +123 -0
  13. package/dist/mcp/slack-channel.js +123 -0
  14. package/dist/mcp/telegram-channel.js +132 -9
  15. package/dist/{persistent-session-DJSSEIR6.js → persistent-session-2AWYIUCX.js} +7 -3
  16. package/dist/{responsiveness-probe-A5335ORT.js → responsiveness-probe-JQS4WA2L.js} +3 -3
  17. package/dist/{session-auth-dead-KUYVUOK5.js → session-auth-dead-VBMZW4GG.js} +2 -2
  18. package/package.json +1 -1
  19. package/dist/chunk-ILDRNSOB.js.map +0 -1
  20. package/dist/chunk-LHYYO4NY.js.map +0 -1
  21. /package/dist/{chunk-OOYUWMTR.js.map → chunk-EEZHSNQ2.js.map} +0 -0
  22. /package/dist/{claude-pair-runtime-JK7GQU25.js.map → claude-pair-runtime-PDG74SAT.js.map} +0 -0
  23. /package/dist/{persistent-session-DJSSEIR6.js.map → persistent-session-2AWYIUCX.js.map} +0 -0
  24. /package/dist/{responsiveness-probe-A5335ORT.js.map → responsiveness-probe-JQS4WA2L.js.map} +0 -0
  25. /package/dist/{session-auth-dead-KUYVUOK5.js.map → session-auth-dead-VBMZW4GG.js.map} +0 -0
package/dist/bin/agt.js CHANGED
@@ -41,12 +41,12 @@ import {
41
41
  success,
42
42
  table,
43
43
  warn
44
- } from "../chunk-OOYUWMTR.js";
44
+ } from "../chunk-EEZHSNQ2.js";
45
45
  import {
46
46
  getProjectDir,
47
47
  isSessionResumeDisabled,
48
48
  readDirectChatSessionState
49
- } from "../chunk-ILDRNSOB.js";
49
+ } from "../chunk-FNALM4HG.js";
50
50
  import {
51
51
  AnchorSessionClient,
52
52
  CHANNEL_REGISTRY,
@@ -79,7 +79,7 @@ import {
79
79
  serializeManifestForSlackCli,
80
80
  sessionFileExists,
81
81
  sessionTranscriptDir
82
- } from "../chunk-LHYYO4NY.js";
82
+ } from "../chunk-7LH3SVAD.js";
83
83
  import "../chunk-XWVM4KPK.js";
84
84
 
85
85
  // src/bin/agt.ts
@@ -5459,7 +5459,7 @@ import { execFileSync, execSync } from "child_process";
5459
5459
  import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
5460
5460
  import chalk18 from "chalk";
5461
5461
  import ora16 from "ora";
5462
- var cliVersion = true ? "0.28.716" : "dev";
5462
+ var cliVersion = true ? "0.28.718" : "dev";
5463
5463
  async function fetchLatestVersion() {
5464
5464
  const host2 = getHost();
5465
5465
  if (!host2) return null;
@@ -6646,7 +6646,7 @@ function handleError(err) {
6646
6646
  }
6647
6647
 
6648
6648
  // src/bin/agt.ts
6649
- var cliVersion2 = true ? "0.28.716" : "dev";
6649
+ var cliVersion2 = true ? "0.28.718" : "dev";
6650
6650
  var program = new Command();
6651
6651
  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");
6652
6652
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -3770,6 +3770,104 @@ var AGENT_DIRECTED_NOTICE_KINDS = [
3770
3770
  "waiting_on_agent"
3771
3771
  ];
3772
3772
  var AGENT_DIRECTED_KIND_SET = new Set(AGENT_DIRECTED_NOTICE_KINDS);
3773
+ var NOTICE_KIND_AUDIENCE = {
3774
+ // ---- USER -------------------------------------------------------------
3775
+ // An integration broke and only the customer can reconnect it. Carries the
3776
+ // ENG-7652 deep link and renders as the ENG-9256 card — the one notice kind
3777
+ // that already earned a bespoke renderer.
3778
+ integration_failure: "user",
3779
+ // The other half of that pair: the thing you were asked to reconnect is working
3780
+ // again. Kept visible even though it needs no ACTION, because it closes a loop
3781
+ // the customer was explicitly pulled into — hiding it would leave the reconnect
3782
+ // card as the last word on a problem that is now fixed.
3783
+ //
3784
+ // ENG-9592 left a wart here and recorded it: two of the three recovery arms
3785
+ // were written in the second person to the AGENT ("mention it to your owner",
3786
+ // "your session will pick it up"), which reads as nonsense to the customer now
3787
+ // seeing the same string. ENG-9609 rewrote all three to be true for both
3788
+ // readers and pinned it in `eng-9609-recovery-copy-dual-audience.test.ts`.
3789
+ // The note is deleted rather than updated: a deferral that outlives the thing
3790
+ // it defers is just a false claim about the code.
3791
+ integration_recovered: "user",
3792
+ // The form itself. `direct-chat-form.ts` calls it "the agent→user render
3793
+ // message"; hiding it would remove the control the user is meant to fill in.
3794
+ form_request_render: "user",
3795
+ // ENG-9592: the outcome chip for a button the user just pressed — "already
3796
+ // resolved", "only the manager can approve", the re-prompt. Its producer says
3797
+ // it exists so the click does not "look like it did nothing", which is exactly
3798
+ // an answer owed to a person. See the note on the stamped payload below.
3799
+ approval_outcome: "user",
3800
+ // ---- AGENT ------------------------------------------------------------
3801
+ // The ENG-9592 report's headline kind: parked-card pickup instructions, in the
3802
+ // second person, ending in an order not to reply in direct-chat.
3803
+ waiting_response: "agent",
3804
+ // Already agent-directed before this change; each is summarised above and its
3805
+ // reasoning lives beside its entry in AGENT_DIRECTED_NOTICE_KINDS.
3806
+ scheduled_task_nudge: "agent",
3807
+ kanban_check: "agent",
3808
+ manager_feedback: "agent",
3809
+ form_timeout: "agent",
3810
+ integration_connected: "agent",
3811
+ offer_result: "agent",
3812
+ waiting_on_agent: "agent",
3813
+ // "The user submitted your form … Use payload.values to continue the user's
3814
+ // task" — a delivery mechanism, with a raw request uuid. The user submitted it;
3815
+ // they do not need to be told they did.
3816
+ form_result: "agent",
3817
+ // Same shape for a tapped button: "The user tapped X on your button prompt
3818
+ // (request `<uuid>`)". They tapped it.
3819
+ button_click: "agent",
3820
+ // ENG-9397: tells the agent a question was answered AFTER it stopped listening
3821
+ // so it does not report the person as silent. The person's own answer goes
3822
+ // back on the channel they tapped in, not here.
3823
+ late_button_click: "agent",
3824
+ // Broker grant resolutions. Second person to the agent, and each carries the
3825
+ // grant uuid the tool contracts explicitly forbid showing a user ("NEVER paste
3826
+ // the grant UUID into user-facing prose"). Two of these are in the report.
3827
+ supabase_grant_resolved: "agent",
3828
+ supabase_grant_denied: "agent",
3829
+ aws_grant_resolved: "agent",
3830
+ aws_grant_denied: "agent",
3831
+ gcp_grant_resolved: "agent",
3832
+ gcp_grant_denied: "agent",
3833
+ // HITL tool-call approvals: "Do NOT call this tool again, do NOT claim the
3834
+ // action happened, and do NOT poll".
3835
+ integration_invoke_resolved: "agent",
3836
+ integration_invoke_denied: "agent",
3837
+ // Support/recruit approvals — same shape, agent resumes the provisioning.
3838
+ recruit_resolved: "agent",
3839
+ recruit_denied: "agent",
3840
+ // "Your `<verb>` approval request (`<uuid>`) EXPIRED at …" — in the report,
3841
+ // uuid and all.
3842
+ approval_expired: "agent",
3843
+ // A routine fired; the agent picks the work up.
3844
+ routine_firing_result: "agent",
3845
+ // Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
3846
+ // call addressed to the machine.
3847
+ live_advisor_escalation: "agent",
3848
+ live_advisor_session_open: "agent",
3849
+ // The assigner reopened a card and the agent must work it again.
3850
+ assigner_reopen: "agent",
3851
+ // An inbound trigger event delivered onto the rail for the agent to handle.
3852
+ // Named `trigger_event` by `triggerDeliveryPayload` — NOT `trigger_delivery`,
3853
+ // which is what the producing module is called. Read from the builder.
3854
+ trigger_event: "agent",
3855
+ // Operational degradation routed into the agent's chat by the alert bridge.
3856
+ degradation_alert: "agent",
3857
+ // ENG-9592: probes and synthetic prompts, previously carrying NO payload at
3858
+ // all and therefore unclassifiable. Stamped at their producers so the verdict
3859
+ // is recorded rather than inherited from the default. `agent_probe` covers
3860
+ // both probe kinds (liveness and the board nudge); the specific one is
3861
+ // `payload.probe_kind`, so a new probe kind needs no entry here.
3862
+ agent_probe: "agent",
3863
+ agent_question_probe: "agent",
3864
+ kanban_confirm_prompt: "agent"
3865
+ };
3866
+ var USER_FACING_KIND_SET = new Set(Object.entries(NOTICE_KIND_AUDIENCE).filter(([, audience]) => audience === "user").map(([kind]) => kind));
3867
+ var USER_FACING_NOTICE_KINDS = Object.freeze([
3868
+ ...USER_FACING_KIND_SET
3869
+ ]);
3870
+ var HIDDEN_NOTICE_KINDS = Object.freeze(Object.entries(NOTICE_KIND_AUDIENCE).filter(([, audience]) => audience === "agent").map(([kind]) => kind));
3773
3871
 
3774
3872
  // ../../packages/core/dist/onboarding/state-machine.js
3775
3873
  var AREA_ORDER = [
@@ -5353,6 +5451,25 @@ var FLAG_REGISTRY = [
5353
5451
  // deliberate, audited per-org flip (ADR-0022 §4).
5354
5452
  sensitive: true
5355
5453
  },
5454
+ {
5455
+ key: "email-require-approval-enforcement",
5456
+ description: 'Enforcement gate for the `email.require_approval` guardrail (ENG-9611). That guardrail has been `default_for_new_orgs` since ~2026-05-03 and its display text promises "Require human approval before sending any email", but nothing ever read it: its only runtime path was toGuardrailForPrompt, i.e. a line in the agent CLAUDE.md. When ON for an org, a DISPATCHING email send (never a draft-create, ENG-7980) is held and routed to Human Approval regardless of recipient domain \u2014 which is what "any email" means, and is what distinguishes it from email-guard-require-approval-enabled, whose require_approval stage only intercepts a would-be DOMAIN block. Deliberately separate from the guardrail row: roughly four months of orgs already carry an inert `enforce`-level row, so reading the row alone would arm a blocking control across all of them on deploy. New orgs are armed by an org-scoped override written at org creation; existing orgs stay off until an operator flips them. Evaluated per-org. Ships dark.',
5457
+ flagType: "boolean",
5458
+ // Declared safe value is `false` (no hold). A flag-DB read error degrades here, so a flags
5459
+ // outage can never silently start holding real customer email — the same fail-OPEN posture
5460
+ // enforceEmailDomainGuard already takes, and the opposite of the enforcement resolver's
5461
+ // fail-CLOSED, deliberately: a control that cannot verify itself must not block mail.
5462
+ // No envVar: net-new control with no pre-flags env gate to migrate (ADR-0022).
5463
+ defaultValue: false,
5464
+ // Turning it on holds real customer email pending a human tap, so it is a deliberate,
5465
+ // audited per-org flip (ADR-0022 §4).
5466
+ sensitive: true,
5467
+ // ENG-9629: NEW orgs are armed on. Declared here rather than hardcoded in the
5468
+ // seeding code, so `listNewOrgFlagOverrides()` is the one answer to "which flags
5469
+ // does a new org get". `defaultValue` stays false so the ~4 months of orgs already
5470
+ // carrying an inert enforce-level email.require_approval row are NOT armed on deploy.
5471
+ newOrgOverride: true
5472
+ },
5356
5473
  {
5357
5474
  key: "email-guard-require-approval-enabled",
5358
5475
  description: "Platform enable-gate for the email-domain guardrail REQUIRE_APPROVAL stage (ENG-7939). When ON for an org, a scope at email_guard_stage=require_approval routes a send to a non-allowed domain into Human Approval (an Approve/Deny card) instead of a hard block: the rollout UI unlocks the option and the write routes accept require_approval. When OFF (default) the write routes reject require_approval and the UI shows it as not yet available, so no scope can select it. Structurally also depends on hitl-approval-routing being on (the approval broker fails closed to a hard block when routing is off). Evaluated per-org. Ships dark.",
@@ -12057,6 +12174,12 @@ var WAITING_KINDS = [
12057
12174
  ];
12058
12175
  var WAITING_KIND_SET = new Set(WAITING_KINDS);
12059
12176
 
12177
+ // ../../packages/core/dist/alerts/age.js
12178
+ var MINUTE_MS = 6e4;
12179
+ var HOUR_MS = 60 * MINUTE_MS;
12180
+ var DAY_MS = 24 * HOUR_MS;
12181
+ var ALERT_AGE_SEVERITY_FLOORS = [{ afterMs: 24 * HOUR_MS, floor: "critical" }];
12182
+
12060
12183
  // ../../packages/core/dist/conversations/classify.js
12061
12184
  var SYSTEM_CONTENT_MARKERS = [
12062
12185
  /\(synthetic-health-check\b/i
@@ -12837,4 +12960,4 @@ export {
12837
12960
  peekCurrentSession,
12838
12961
  readDailySessionPin
12839
12962
  };
12840
- //# sourceMappingURL=chunk-LHYYO4NY.js.map
12963
+ //# sourceMappingURL=chunk-7LH3SVAD.js.map