@integrity-labs/agt-cli 0.28.1002 → 0.28.1004

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.
@@ -35716,6 +35716,52 @@ var INTEGRATION_REGISTRY = [
35716
35716
  }]
35717
35717
  }
35718
35718
  },
35719
+ {
35720
+ // ENG-10854 / ADR-0110. The POLICY half of the catalog definition: this
35721
+ // registry is what `isPremiumDefinition` reads, so the premium descriptor
35722
+ // here is what makes the per-org opt-in required at all. The CUSTOMER-FACING
35723
+ // half - the seeded `integration_definitions` row that the Add Integration
35724
+ // picker lists - is deliberately NOT in this change. `/integrations/installs`
35725
+ // reads the DB catalog with a status filter; this registry is not a listing.
35726
+ //
35727
+ // The order matters and is not bookkeeping: `isOrgEntitledToPremium` returns
35728
+ // TRUE for a definition it does not know as premium, because a free
35729
+ // integration has no opt-in concept. So a broker shipped ahead of this entry
35730
+ // would serve an org that had never opted in. The broker additionally fails
35731
+ // closed on `isPremiumDefinition` being false, so the two halves cannot come
35732
+ // apart in that direction either.
35733
+ id: "typed-evaluation",
35734
+ name: "Typed Evaluation",
35735
+ category: "knowledge",
35736
+ description: "Ask closed questions about a piece of text and get calibrated answers back \u2014 yes/no, pick-one, or a position on your own scale \u2014 with a probability for each. It never writes text and cannot answer outside the set of options you give it, which is what makes it safe to point at content you do not trust. Typical uses: is this message a repeat request, which category does this belong to, how urgent does this sound. Answers arrive in about half a second, so an agent can branch on one without spending a model turn.",
35737
+ // No customer credential exists: the call runs on Ninjafy's own gateway key.
35738
+ supported_auth_types: ["none"],
35739
+ capabilities: [
35740
+ {
35741
+ id: "typed-evaluation:evaluate",
35742
+ name: "Evaluate Text",
35743
+ description: "Ask closed questions about text the agent already holds and receive typed answers with probabilities (evaluate_text).",
35744
+ access: "read"
35745
+ }
35746
+ ],
35747
+ beta: true,
35748
+ // ENG-8842's `included`, and the reason is the consent dialog rather than
35749
+ // the price. `pricing` drives the org admin's acknowledgement modal, where
35750
+ // `usage` renders as "manages and bills by usage" and `monthly` as a
35751
+ // subscription. Both would be false statements here: a call costs about
35752
+ // $0.000076 and nothing is metered or billed, so the opt-in exists to record
35753
+ // a decision about a SUB-PROCESSOR, not about money.
35754
+ //
35755
+ // ADR-0110 Decision 11 keeps the door open deliberately: if a genuinely
35756
+ // high-volume capability arrives later - bulk classification of a customer's
35757
+ // own corpus - it is priced at THAT capability's grain and this definition
35758
+ // stays `included`. Ninja Notes is the precedent (ENG-9278): it acquired a
35759
+ // metered capability and did not flip.
35760
+ premium: {
35761
+ pricing: "included",
35762
+ note: "Typed evaluation is included in your plan \u2014 nothing is metered per question. Turning it on is a decision about data, not cost: the text an agent asks about is sent to Typesafe, through our own gateway, to be scored. It is never used to train a model and we store only the answers, never the text."
35763
+ }
35764
+ },
35719
35765
  {
35720
35766
  // Ninja Notes (ADR-0063, ENG-8842). Meeting capture on the user's own Mac,
35721
35767
  // delivered to an agent as a tag-granted note the agent reads and summarises.
@@ -36215,6 +36261,14 @@ var CONDITIONAL_DELIVERY_BODY = [
36215
36261
  // ../core/dist/liveness/agent-liveness.js
36216
36262
  var FRESH_HEARTBEAT_THRESHOLD_MS = 2 * 60 * 1e3;
36217
36263
 
36264
+ // ../core/dist/claude-code-usage/host-usage-reading.js
36265
+ var HOST_USAGE_POLL_INTERVAL_MS = 15 * 60 * 1e3;
36266
+ var READING_EXPIRY_INTERVALS = 2;
36267
+ var RESET_JITTER_TOLERANCE_MS = 5 * 60 * 1e3;
36268
+
36269
+ // ../core/dist/liveness/claude-usage-reading.js
36270
+ var STALE_READING_MS = HOST_USAGE_POLL_INTERVAL_MS * READING_EXPIRY_INTERVALS;
36271
+
36218
36272
  // ../core/dist/claude-code-usage/reset-time.js
36219
36273
  var MONTHS = [
36220
36274
  "jan",
@@ -36514,10 +36568,6 @@ function buildUsageLimitReplyText(limitedUntil) {
36514
36568
  var SEP2 = /[\s·\-–—]+/.source;
36515
36569
  var WINDOW_LINE = new RegExp(`^\\s*Current\\s+(session|week)(?:\\s*\\(([^)]*)\\))?\\s*:\\s*(\\d{1,3})%\\s+used(?:${SEP2}resets\\s+(${RESET_DATE_SOURCE}))?\\s*$`, "gim");
36516
36570
 
36517
- // ../core/dist/claude-code-usage/host-usage-reading.js
36518
- var HOST_USAGE_POLL_INTERVAL_MS = 15 * 60 * 1e3;
36519
- var RESET_JITTER_TOLERANCE_MS = 5 * 60 * 1e3;
36520
-
36521
36571
  // ../core/dist/claude-code-usage/rate-limit-classifier.js
36522
36572
  var UNKNOWN_RATE_LIMIT = Object.freeze({
36523
36573
  verdict: "unknown",
@@ -38158,6 +38208,33 @@ var FLAG_REGISTRY = [
38158
38208
  // "these hosts are unreadable". Both outlive this particular version.
38159
38209
  since: "0.28.667"
38160
38210
  },
38211
+ {
38212
+ // ADR-0110 Decision 5 (ENG-10854). Gates PLATFORM-INTERNAL consumers of the
38213
+ // typed evaluation capability - inbound triage, kanban classification,
38214
+ // memory-extraction sensitivity gating, and later the conversation
38215
+ // evaluator. Nobody "installs" those; they are ours, so they are gated
38216
+ // centrally.
38217
+ //
38218
+ // IT DOES NOT GATE THE AGENT TOOL, and that separation is the point. The
38219
+ // agent tool's gate is the customer's own premium opt-in plus a per-agent
38220
+ // install (Decision 4). Pointing this flag at the tool as well would give
38221
+ // it two masters and let a staff flag silently override a decision the
38222
+ // customer made about their own data reaching a sub-processor.
38223
+ //
38224
+ // Ships with no readers: the consumers land in later slices, and the flag
38225
+ // exists now so the first of them has a gate to be born behind rather than
38226
+ // acquiring one afterwards.
38227
+ key: "typed-evaluation",
38228
+ description: "ADR-0110: platform-internal consumers of the typed evaluation model (Jev, via our AI Gateway). OFF (default) = no internal consumer calls it; ON = consumers that have shipped may call, each still subject to the per-org quota, per-agent rate limit and audit row enforced in the broker. Does NOT gate the agent-facing tool, which is governed by the premium opt-in and a per-agent install instead. Customer orgs stay off until the Decision 9 vendor gates close (sub-processor listing with DPA coverage, the legal read on emotion inference, and a recorded disclosure).",
38229
+ flagType: "boolean",
38230
+ // Ships dark. Every consumer degrades to its current behaviour when off,
38231
+ // so the safe value and the no-op value are the same one.
38232
+ defaultValue: false,
38233
+ // Turning it on starts sending customer text to an external sub-processor
38234
+ // on paths the customer did not individually opt into, which is exactly the
38235
+ // class ADR-0022 section 4 reserves the confirmation for.
38236
+ sensitive: true
38237
+ },
38161
38238
  {
38162
38239
  key: "conversation-eval-backend",
38163
38240
  description: "Backend for host-side conversation-success scoring AND memory extraction (ENG-6581), which share one scorer: anthropic-api = Haiku via a direct Anthropic Messages API fetch (no subprocess); claude-p = Haiku via the `claude -p` subprocess (reuses the agent auth, effectively free under Max but a heavy spawn); local = an OpenAI-compatible loopback endpoint (transcript never leaves the host). Auth for the anthropic-api path comes from AGT_CONV_EVAL_ANTHROPIC_API_KEY (falls back to ANTHROPIC_API_KEY); with no key that path fails closed (eval disabled) rather than reverting to claude-p. Enum.",
@@ -64,8 +64,8 @@ import {
64
64
  writeDirectChatSessionState,
65
65
  writeEgressAllowlist,
66
66
  writePersistentClaudeWrapper
67
- } from "./chunk-S6GIPDPI.js";
68
- import "./chunk-DGVA3EGS.js";
67
+ } from "./chunk-HHBAQ6ZV.js";
68
+ import "./chunk-532V7ZSC.js";
69
69
  import "./chunk-DHWNVVX4.js";
70
70
  import "./chunk-XWVM4KPK.js";
71
71
  import "./chunk-DGUM43GV.js";
@@ -136,4 +136,4 @@ export {
136
136
  writeEgressAllowlist,
137
137
  writePersistentClaudeWrapper
138
138
  };
139
- //# sourceMappingURL=persistent-session-TJCQT3PO.js.map
139
+ //# sourceMappingURL=persistent-session-JUGGNJSB.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-S6GIPDPI.js";
4
- import "./chunk-DGVA3EGS.js";
3
+ } from "./chunk-HHBAQ6ZV.js";
4
+ import "./chunk-532V7ZSC.js";
5
5
  import "./chunk-DHWNVVX4.js";
6
6
  import "./chunk-XWVM4KPK.js";
7
7
  import "./chunk-DGUM43GV.js";
@@ -801,4 +801,4 @@ export {
801
801
  readAndResetSlackReplyBindingClassifications,
802
802
  readAndResetSlackReplyTargetClassifications
803
803
  };
804
- //# sourceMappingURL=responsiveness-probe-735NGRLO.js.map
804
+ //# sourceMappingURL=responsiveness-probe-QLOVCTVA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-DGVA3EGS.js";
3
+ } from "./chunk-532V7ZSC.js";
4
4
  import "./chunk-DGUM43GV.js";
5
5
 
6
6
  // src/lib/session-auth-dead.ts
@@ -204,4 +204,4 @@ export {
204
204
  decideSessionAuthState,
205
205
  probeSessionAuth
206
206
  };
207
- //# sourceMappingURL=session-auth-dead-YP4EGJTE.js.map
207
+ //# sourceMappingURL=session-auth-dead-7F2QBEAZ.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.1002",
3
+ "version": "0.28.1004",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {