@integrity-labs/agt-cli 0.28.853 → 0.28.855

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 (24) hide show
  1. package/dist/bin/agt.js +5 -5
  2. package/dist/{chunk-XCAI3GSF.js → chunk-7YVKIYVW.js} +2 -2
  3. package/dist/{chunk-WUXQVP7A.js → chunk-IHBWFKOW.js} +172 -3
  4. package/dist/chunk-IHBWFKOW.js.map +1 -0
  5. package/dist/{chunk-6BA2US4B.js → chunk-RKCG63PT.js} +4 -4
  6. package/dist/{claude-pair-runtime-CJXQTVSC.js → claude-pair-runtime-FFUPKRVC.js} +2 -2
  7. package/dist/lib/manager-worker.js +37 -21
  8. package/dist/lib/manager-worker.js.map +1 -1
  9. package/dist/mcp/direct-chat-channel.js +133 -0
  10. package/dist/mcp/index.js +133 -0
  11. package/dist/mcp/origami.js +133 -0
  12. package/dist/mcp/slack-channel.js +133 -0
  13. package/dist/mcp/telegram-channel.js +133 -0
  14. package/dist/{persistent-session-YGK7YHPR.js → persistent-session-CNVU25IF.js} +3 -3
  15. package/dist/{responsiveness-probe-NGWO3JK3.js → responsiveness-probe-TZOKOH6C.js} +3 -3
  16. package/dist/{session-auth-dead-4UZR5655.js → session-auth-dead-GRYXFDYD.js} +2 -2
  17. package/package.json +1 -1
  18. package/dist/chunk-WUXQVP7A.js.map +0 -1
  19. /package/dist/{chunk-XCAI3GSF.js.map → chunk-7YVKIYVW.js.map} +0 -0
  20. /package/dist/{chunk-6BA2US4B.js.map → chunk-RKCG63PT.js.map} +0 -0
  21. /package/dist/{claude-pair-runtime-CJXQTVSC.js.map → claude-pair-runtime-FFUPKRVC.js.map} +0 -0
  22. /package/dist/{persistent-session-YGK7YHPR.js.map → persistent-session-CNVU25IF.js.map} +0 -0
  23. /package/dist/{responsiveness-probe-NGWO3JK3.js.map → responsiveness-probe-TZOKOH6C.js.map} +0 -0
  24. /package/dist/{session-auth-dead-4UZR5655.js.map → session-auth-dead-GRYXFDYD.js.map} +0 -0
@@ -32447,6 +32447,110 @@ var HOURLY_BY_REGION = {
32447
32447
  };
32448
32448
  var KNOWN_PRICING_REGIONS = Object.keys(HOURLY_BY_REGION);
32449
32449
 
32450
+ // ../core/dist/guardrails/enforcer-registry.js
32451
+ var GUARDRAIL_ENFORCERS = [
32452
+ // ---- Enforced: this definition has its own enforcement point -------------
32453
+ {
32454
+ id: "email.domain_restrict",
32455
+ mechanism: "enforced",
32456
+ stage: "live",
32457
+ enforcer: "packages/api/src/lib/email-domain-guard.ts",
32458
+ effect: "enforceEmailDomainGuard runs at the top of both agent-egress paths; internal_only with zero verified domains takes an explicit AUDITED no-op branch rather than failing open silently."
32459
+ },
32460
+ {
32461
+ // MEASURED, and it corrects a claim ADR-0080 makes about this definition.
32462
+ //
32463
+ // The ADR reports calendar as `enforced` + `stage: 'shadow'`, blocked by
32464
+ // ENG-5868 (caller identity is not threaded to `callIntegrationTool`). Read
32465
+ // literally that says an org cannot get redaction today, and that is not
32466
+ // what the code does. `decideCalendarRedactionMode` (calendar-policy.ts) is
32467
+ // FAIL-CLOSED: with the caller unresolvable it returns `redact`, not
32468
+ // pass-through. `redactCalendarToolResponseIfNeeded` then calls
32469
+ // `applyRedactionToResponse` for every response whenever `config.stage` is
32470
+ // `enforce`. So an org that sets the stage gets real redaction — ENG-5868
32471
+ // costs the control its PRECISION (it cannot spare the principal), not its
32472
+ // ability to act.
32473
+ //
32474
+ // The stage is therefore per-ORG configuration, which ADR-0080 decision 1
32475
+ // is explicit is the effectiveness axis the static union deliberately does
32476
+ // not carry. `effectiveCalendarEnforcement` in the CLAUDE.md renderer owns
32477
+ // it, and since ENG-10104 caps `enforce` to `warn` whenever the org's stage
32478
+ // is not `enforce`.
32479
+ id: "calendar.confidentiality",
32480
+ mechanism: "enforced",
32481
+ stage: "live",
32482
+ enforcer: "packages/api/src/lib/calendar-confidentiality-guard.ts",
32483
+ effect: "at config.stage=enforce, redacts summary/description/attendees/location out of calendar read responses; at shadow/warn it writes a would_redact audit row and returns the response unchanged."
32484
+ },
32485
+ // ---- Delegated: read by another definition's enforcement point -----------
32486
+ //
32487
+ // Both can block, because their owner's point is live — which is the question
32488
+ // `guardrailCanBlock` asks and the right answer to it. It is NOT the whole
32489
+ // story for these two, and the gap has its own ticket: the org's email guard
32490
+ // STAGE is threaded into the prompt shape for `email.domain_restrict`'s id
32491
+ // alone (`host-runtime.ts`, the ENG-7829 fix), so a row of either id stored at
32492
+ // `enforce` on a shadow-stage org still renders under "must comply" with
32493
+ // nothing capping it. That is the effectiveness axis, not the mechanism one —
32494
+ // ENG-10110.
32495
+ {
32496
+ id: "email.require_approval",
32497
+ mechanism: "delegated",
32498
+ ownedBy: "email.domain_restrict",
32499
+ enforcer: "packages/api/src/lib/email-domain-guard.ts",
32500
+ effect: "routes a send to an approver instead of letting it leave."
32501
+ },
32502
+ {
32503
+ id: "email.mail_rules",
32504
+ mechanism: "delegated",
32505
+ ownedBy: "email.domain_restrict",
32506
+ enforcer: "packages/api/src/lib/email-domain-guard.ts",
32507
+ effect: "gates mail-rule creation/modification on the same egress path."
32508
+ },
32509
+ // ---- Advisory: seeded, applied, rendered — and read by nothing -----------
32510
+ //
32511
+ // These are NOT dead config. They are presented to operators in the console
32512
+ // and to agents in CLAUDE.md, three of them under a heading that promises the
32513
+ // violation is blocked. Listed individually rather than as a wildcard so that
32514
+ // fixing one is a one-line diff from `advisory` to `enforced`.
32515
+ //
32516
+ // The ticket is ENG-9800, not ENG-9874. ENG-9874 catalogued these and is
32517
+ // closed; a closed ticket tracks nothing, which is the same shrug an absent
32518
+ // one would be. ENG-9800 is the open sweep that owns making them real.
32519
+ {
32520
+ id: "require-approval-for-actions",
32521
+ mechanism: "advisory",
32522
+ reason: "unimplemented",
32523
+ ticket: "ENG-9800",
32524
+ note: `Rendered to agents as "violation blocks the action". Nothing reads it. The ENG-8562 incident is this guardrail's promise, unkept.`
32525
+ },
32526
+ {
32527
+ id: "data.pii_access",
32528
+ mechanism: "advisory",
32529
+ reason: "unimplemented",
32530
+ ticket: "ENG-9800",
32531
+ note: "Rendered as Enforced with block_export semantics; no export path consults it."
32532
+ },
32533
+ {
32534
+ id: "data.credential_access",
32535
+ mechanism: "advisory",
32536
+ reason: "unimplemented",
32537
+ ticket: "ENG-9800",
32538
+ note: "Rendered as Enforced with block_read/block_write; no credential path consults it."
32539
+ },
32540
+ { id: "comm.social_posting", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32541
+ { id: "compliance.audit_all", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32542
+ { id: "no-external-network", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32543
+ { id: "no-pii-in-output", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32544
+ { id: "restrict-file-access", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32545
+ { id: "schedule.operating_hours", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32546
+ { id: "spend.hourly_limit", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32547
+ { id: "tool.allow_list", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32548
+ { id: "tool.block_list", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32549
+ { id: "tool.financial_txn", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" },
32550
+ { id: "working-hours-only", mechanism: "advisory", reason: "unimplemented", ticket: "ENG-9800" }
32551
+ ];
32552
+ var BY_ID = new Map(GUARDRAIL_ENFORCERS.map((e) => [e.id, e]));
32553
+
32450
32554
  // ../core/dist/provisioning/frameworks/claudecode/agent-rules.js
32451
32555
  var MAX_AGENT_RULES = 8;
32452
32556
  var MAX_AGENT_RULE_CHARS = 200;
@@ -37022,6 +37126,35 @@ var FLAG_REGISTRY = [
37022
37126
  defaultValue: false,
37023
37127
  envVar: "AGT_MODEL_API_ERROR_REPORTING_ENABLED"
37024
37128
  },
37129
+ {
37130
+ key: "model-policy-failover-trigger",
37131
+ description: "Automatic model-policy failover (ENG-10156, ADR-0074). off = the trigger does not run. shadow = it evaluates every ingested model-API error against the policy's failover_trigger config and LOGS the decision with its inputs, acting on nothing. Enum gate; ships OFF.",
37132
+ flagType: "enum",
37133
+ // `armed` is DELIBERATELY not an allowed value yet.
37134
+ //
37135
+ // Nothing writes model_policy_failover_state with source='auto' — that is
37136
+ // the actuation half, and it is gated behind a recorded shadow soak
37137
+ // (ENG-10156 AC8). Offering `armed` now would be a setting an operator can
37138
+ // select, that reports success, and that does nothing: the failure mode is
37139
+ // worse than the missing feature, because it looks like a fleet running
37140
+ // with automatic failover enabled. Add it in the same change that makes it
37141
+ // act, not before.
37142
+ allowedValues: ["off", "shadow"],
37143
+ // OFF, not `shadow`, and the contrast with `channel-quarantine-mode` is the
37144
+ // reason: that flag defaults to `shadow` because shadow WAS the live
37145
+ // manager's compiled behaviour, so anything else would have changed the
37146
+ // fleet. Here there is no incumbent behaviour to preserve — nothing has ever
37147
+ // evaluated this — so `off` is the honest default and turning shadow on is a
37148
+ // deliberate act with a soak attached to it.
37149
+ defaultValue: "off",
37150
+ envVar: "AGT_MODEL_POLICY_FAILOVER_TRIGGER_MODE",
37151
+ // Marked sensitive ahead of `armed` existing: the value this flag will
37152
+ // eventually carry moves a host onto a secondary binding whose credential
37153
+ // may be ours (credential_owner: 'platform'), i.e. it spends money with no
37154
+ // human in the loop. Declaring that now costs nothing and means the audited
37155
+ // -flip behaviour is already in place on the day the value is added.
37156
+ sensitive: true
37157
+ },
37025
37158
  {
37026
37159
  key: "claude-md-skills-index",
37027
37160
  description: `Manager injects the "## Available Skills" bullet list (one line per installed skill, name + frontmatter description) into the agent's project CLAUDE.md. Claude Code already surfaces installed skills to the model natively from .claude/skills/*/SKILL.md, so on current models the list is duplicated context - and an expensive one: it measured 12,045 chars across 29 skills on a prod agent, pushing project/CLAUDE.md to 51k against Claude Code's 40,000-char ceiling, past which the tail of the agent's own system prompt is silently truncated. OFF suppresses ONLY the skill bullets; the "Updating Integrations" guidance in the same managed block is real instruction and is always kept. Defaults ON (today's behaviour) - flip OFF per org to reclaim the headroom.`,
@@ -54,8 +54,8 @@ import {
54
54
  writeDirectChatSessionState,
55
55
  writeEgressAllowlist,
56
56
  writePersistentClaudeWrapper
57
- } from "./chunk-XCAI3GSF.js";
58
- import "./chunk-WUXQVP7A.js";
57
+ } from "./chunk-7YVKIYVW.js";
58
+ import "./chunk-IHBWFKOW.js";
59
59
  import "./chunk-XWVM4KPK.js";
60
60
  export {
61
61
  EGRESS_BASELINE_DOMAINS,
@@ -114,4 +114,4 @@ export {
114
114
  writeEgressAllowlist,
115
115
  writePersistentClaudeWrapper
116
116
  };
117
- //# sourceMappingURL=persistent-session-YGK7YHPR.js.map
117
+ //# sourceMappingURL=persistent-session-CNVU25IF.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-XCAI3GSF.js";
4
- import "./chunk-WUXQVP7A.js";
3
+ } from "./chunk-7YVKIYVW.js";
4
+ import "./chunk-IHBWFKOW.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -764,4 +764,4 @@ export {
764
764
  readAndResetSlackReplyBindingClassifications,
765
765
  readAndResetSlackReplyTargetClassifications
766
766
  };
767
- //# sourceMappingURL=responsiveness-probe-NGWO3JK3.js.map
767
+ //# sourceMappingURL=responsiveness-probe-TZOKOH6C.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-WUXQVP7A.js";
3
+ } from "./chunk-IHBWFKOW.js";
4
4
 
5
5
  // src/lib/session-auth-dead.ts
6
6
  import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
@@ -203,4 +203,4 @@ export {
203
203
  decideSessionAuthState,
204
204
  probeSessionAuth
205
205
  };
206
- //# sourceMappingURL=session-auth-dead-4UZR5655.js.map
206
+ //# sourceMappingURL=session-auth-dead-GRYXFDYD.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.853",
3
+ "version": "0.28.855",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {