@integrity-labs/agt-cli 0.28.875 → 0.28.877

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.
@@ -35146,6 +35146,97 @@ var INTEGRATION_REGISTRY = [
35146
35146
  ]
35147
35147
  }
35148
35148
  },
35149
+ {
35150
+ id: "origami",
35151
+ name: "origami.chat",
35152
+ category: "crm",
35153
+ description: "Lead data + outbound: build and enrich lead lists, drive origami's AI worker from a natural-language brief, and read the tables it builds. Available on the platform-managed account, or with your own origami key.",
35154
+ // ENG-7423: origami migrates from a customer-key-only integration to a
35155
+ // PREMIUM one that ALSO keeps BYO — the Firecrawl / ADR-0055 model, with one
35156
+ // structural difference that drives most of the design.
35157
+ //
35158
+ // Firecrawl's premium tier is a single platform account key that every
35159
+ // customer's calls bill back to, and isolation is not a concern because a
35160
+ // scrape has no tenancy. origami is the opposite: it stores the customer's
35161
+ // LEAD LISTS, tables, chats and campaigns. Putting every customer on one
35162
+ // parent org would make every customer's data mutually readable, so the
35163
+ // managed tier gives each ORGANIZATION its own origami project (child org)
35164
+ // and mints a key BOUND to that project (`POST /account/keys` with
35165
+ // `project_id`, v3). See `packages/core/src/origami/provision.ts` for why a
35166
+ // bound key rather than the `x-origami-project` header — in short, the
35167
+ // header is a per-call assertion and the tool argument is deliberately
35168
+ // nullable, so under a shared parent an ordinary tool call could reach it.
35169
+ //
35170
+ // ── auth types, and the ENG-9235 trap this deliberately re-enters ─────────
35171
+ // Both are offered, unlike Firecrawl, which PARKED `api_key` down to
35172
+ // `['none']` because a 2+-auth-type wizard renders a picker that is not
35173
+ // entitlement-aware: a customer picks BYO, goes and fetches a vendor key,
35174
+ // and is then rejected with `byo_not_entitled_by_plan` (BYO on a premium def
35175
+ // needs `plans.byo_credentials`, enterprise-only today).
35176
+ //
35177
+ // origami cannot take that exit. BYO is the INCUMBENT here — every existing
35178
+ // install is a customer's own key — so dropping `api_key` would remove the
35179
+ // only mode its current customers use. The known gap is therefore accepted
35180
+ // and pointed at its owner: the picker will still let a non-entitled org
35181
+ // choose BYO and reject it afterwards. ENG-9236 (entitlement-aware wizard)
35182
+ // is the fix; until it lands the rejection is at least loud, specific, and
35183
+ // ahead of any charge.
35184
+ //
35185
+ // EXISTING installs are unaffected by that gate: the premium migration
35186
+ // backfills them to `credential_source='byo'` AND stamps
35187
+ // `config.byo_grandfathered_at`, which the call-time resolver honours in
35188
+ // place of the plan check. Grandfathering is per-install and set only by
35189
+ // that one migration — a NEW BYO install still needs the entitlement.
35190
+ //
35191
+ // KEEP IN LOCKSTEP with the `origami` rows in
35192
+ // packages/supabase/seeds/integration-definitions.json and
35193
+ // toolkit-definitions.json: those seeds carry their own auth types and are
35194
+ // what `db:catalog:seed` upserts on every prod deploy, so editing this array
35195
+ // alone changes nothing a customer can see.
35196
+ supported_auth_types: ["none", "api_key"],
35197
+ capabilities: [
35198
+ { id: "origami:read", name: "Read Lists & Runs", description: "Discover projects and tables, read built tables and rows, poll runs/batches, and check credit balance. Credit-free.", access: "read" },
35199
+ { id: "origami:write", name: "Enrich Leads", description: "Insert raw rows into an enrichment table (submit_enrichment). Consumes credits.", access: "write" },
35200
+ { id: "origami:agent", name: "Drive the AI Worker", description: "Create an origami agent, send follow-up runs, cancel a run, archive an agent. Consumes credits.", access: "write" }
35201
+ ],
35202
+ docs_url: "https://docs.origami.chat/v3/overview",
35203
+ // ENG-7423: premium (billable). origami bills internally in CREDITS, so the
35204
+ // integration is usage-priced on one meter whose unit is the vendor's own
35205
+ // billing unit. Priced at 2.0 c USD / 3.5 c AUD per credit by
35206
+ // `20260907000050_origami_credits_rate_card.sql`, against a retail cost of
35207
+ // 1.29-1.43 c/credit depending on which origami tier we hold.
35208
+ //
35209
+ // The note deliberately does NOT say "at cost". origami sells a
35210
+ // SUBSCRIPTION WITH AN INCLUDED BUNDLE while this meters PER CREDIT
35211
+ // CONSUMED, so a per-credit price recovers the subscription only at full
35212
+ // utilisation — around 72% of the bundle at this rate. Calling that "at
35213
+ // cost" in a customer-facing pricing string would be a claim about our
35214
+ // margin that is only true at one utilisation level we do not control.
35215
+ //
35216
+ // ONE meter, not one per tool, because of where the number comes from. Every
35217
+ // other premium integration meters at a server-side broker chokepoint, which
35218
+ // sees each call and can attribute it. origami's agent surface is a
35219
+ // host-resident stdio MCP server (ADR-0040) that calls origami.chat DIRECTLY
35220
+ // — the control plane never sees the tool call, so there is no per-operation
35221
+ // quantity to meter. What the control plane CAN see is the project's own
35222
+ // spend (`GET /account/projects/{id}` → `usage.spent`), which the credit
35223
+ // reconciler polls and meters as a delta. That is a per-project total, so it
35224
+ // can only ever be one meter; splitting it per tool would require the vendor
35225
+ // to break spend down by operation, which v3 does not expose.
35226
+ //
35227
+ // `unit_label` is set because the machine unit is the vendor's internal
35228
+ // billing unit rather than a thing the customer asked for — "(per credit)"
35229
+ // is the honest rendering, in the ADR-0053 cost-pass-through spirit.
35230
+ //
35231
+ // Only a MANAGED install is metered. A BYO install spends the customer's own
35232
+ // origami credits on their own bill (`isBilledInstall` → false), which is why
35233
+ // the reconciler polls only projects it provisioned.
35234
+ premium: {
35235
+ pricing: "usage",
35236
+ note: "Billed per origami credit the agent consumes. Bring your own origami key instead and usage is billed to you by origami directly.",
35237
+ meters: [{ event_type: "credits", unit: "credit", label: "origami credits", unit_label: "credit" }]
35238
+ }
35239
+ },
35149
35240
  {
35150
35241
  id: "ayrshare",
35151
35242
  name: "Ayrshare",
@@ -54,8 +54,8 @@ import {
54
54
  writeDirectChatSessionState,
55
55
  writeEgressAllowlist,
56
56
  writePersistentClaudeWrapper
57
- } from "./chunk-SQ7PB5A6.js";
58
- import "./chunk-Q2OVEMUG.js";
57
+ } from "./chunk-CA46EUVN.js";
58
+ import "./chunk-EARM456T.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-MG6FEYRY.js.map
117
+ //# sourceMappingURL=persistent-session-XQG5H4KI.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-SQ7PB5A6.js";
4
- import "./chunk-Q2OVEMUG.js";
3
+ } from "./chunk-CA46EUVN.js";
4
+ import "./chunk-EARM456T.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-2OGWHDXE.js.map
767
+ //# sourceMappingURL=responsiveness-probe-LA4VGH5W.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-Q2OVEMUG.js";
3
+ } from "./chunk-EARM456T.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-AHL6D3CM.js.map
206
+ //# sourceMappingURL=session-auth-dead-DFLSWVAQ.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.875",
3
+ "version": "0.28.877",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {