@warmhub/sdk-ts 0.140.0 → 0.141.0
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/CHANGELOG.md
CHANGED
package/changelog.json
CHANGED
|
@@ -176,6 +176,11 @@
|
|
|
176
176
|
"body": "In these notes, \"old grammar\" means the reference form used before this release (`Deal/acme`, operations with `kind`), and \"new grammar\" the form this release introduces (`acme`, operations with `shapes`).\n\n### Breaking\n\n#### Write operations take `name` and `shapes`\n\n**What it was.** Operations carried `kind`, an add name spelled\n`Shape/name`, a top-level `about`, or collection `type`/`members`, and the\nSDK converted them.\n\n**What it is now.** `Operation`, `AddOperation`, `ReviseOperation`,\n`RetractOperation`, `ReaffirmOperation` and `RenameOperation` keep their\nnames but have the new shape. An add or revise requires `name`, `shapes`\nand `data`. `kind` and `shape` are typed `never`. The new `WriteOperation`\ntype is one operation of that form.\n\n- A Shape is the Thing `hub/shapes/X` (`shapeName('X')`), written with\n `shapes: []`.\n- An assertion is a Thing one of whose declared Shapes composes `Assertion`,\n with its target in `data.about`.\n- A collection is a Thing of its collection Shape:\n `{ shapes: ['Set'], data: { members } }`.\n\n**Migration.**\n\n```ts\n// Before\nawait client.commit.apply('acme', 'world', 'seed', [\n { operation: 'add', kind: 'thing', name: 'Deal/acme', data: { company: 'Acme' } },\n])\n\n// After\nawait client.commit.apply('acme', 'world', 'seed', [\n { operation: 'add', name: 'acme', shapes: ['Deal'], data: { company: 'Acme' } },\n])\n```\n\n#### Old-grammar operations are refused before any request\n\n**What it was.** The SDK converted old-grammar operations.\n\n**What it is now.** An operation with `kind`, `shape`, `wref`,\n`declaredShapes`, `about`, collection `type` or `members`, or with no\n`operation`, is refused with a `WriteOperationError` before anything is\nsent. The message shows a suggested new form, with data values replaced by\n`\"...\"`. Names and `about` targets are copied as written, so check them: a\nsuggested `name: 'Deal/acme'` would address a Thing literally named\n`Deal/acme`. An add or revise with no `shapes` is refused with a message\nthat it states no Shapes.\n\nOld-grammar input no longer type-checks, so it reaches this refusal only\nthrough a cast.\n\n**Migration.**\n\n```ts\n// Before: converted and sent\nawait client.commit.apply('acme', 'world', 'rate', [\n { operation: 'add', kind: 'assertion', name: 'Rating/r1', about: 'Deal/acme', data: { score: 5 } },\n])\n\n// After\nawait client.commit.apply('acme', 'world', 'rate', [\n { operation: 'add', name: 'r1', shapes: ['Rating'], data: { about: 'acme', score: 5 } },\n])\n```\n\nOther operations refused locally:\n\n- a pinned Shape in `shapes` (`Deal@v2`), or an entry that is not a bare\n Shape name (`hub/shapes/Deal`, anything with `/`);\n- `shapeless` on a raw operation (spell it `shapes: []`);\n- non-empty `shapes` on a `hub/shapes/X` name;\n- an add or revise without `data`, and `keepShapes` on an add;\n- `affirmedTargets` on a shapeless write;\n- `expectedVersion` on an add, and `active` on a revise;\n- renaming a Shape to a non-Shape name, or the reverse;\n- `+` in an added or renamed-to name;\n- an added or renamed-to name under the reserved `hub` root\n (`RESERVED_NAME`);\n- the same name added twice in one submission (`ILLEGAL_OP_SEQUENCE`);\n- errors found by the local Shape-definition checks.\n\n#### `OperationBuilder` methods take the name first\n\n**What it was.** `add({ name, data })`, `revise({ name, data })`,\n`retract(target)`, `reaffirm({ name, kind, ... })`; no `rename`.\n\n**What it is now.**\n\n| Method | After |\n|---|---|\n| `add` | `add(name, { shapes \\| shapeless, data, ... })` |\n| `revise` | `revise(name, { shapes \\| shapeless \\| keepShapes, data, ... })` |\n| `retract` | `retract(name, { reason? })` |\n| `reaffirm` | `reaffirm(name, { add?, remove? })` |\n| `rename` | `rename(name, newName)` (new) |\n\nEach add and revise states its Shapes in exactly one way: `shapes: [...]`,\n`shapeless: true`, or (revise only) `keepShapes: true`. The builder refuses\nzero ways or more than one, `keepShapes` on an add, `shapeless` on a\n`hub/shapes/X` name, and `shapes: []` on a non-Shape name (spell that\n`shapeless: true`).\n\n**Migration.**\n\n```ts\n// Before\nimport { OperationBuilder } from '@warmhub/sdk-ts'\nconst ob = new OperationBuilder()\nob.add({ name: 'Deal/acme', data: { company: 'Acme' } })\nob.retract('Deal/old')\nawait ob.commit({ client, orgName: 'acme', repoName: 'world', message: 'seed' })\n\n// After\nimport { createOperationEventRequestId } from '@warmhub/sdk-ts'\n\nawait client.shape.create('acme', 'world', 'Deal', { company: 'string' }, {\n eventRequestId: createOperationEventRequestId(),\n})\n\nawait client.commit.apply(\n 'acme',\n 'world',\n 'seed',\n client\n .ops()\n .add('acme', { shapes: ['Deal'], data: { company: 'Acme' } })\n .add('scratch', { shapeless: true, data: { note: 'free' } })\n .rename('scratch', 'scratch-2')\n .retract('old'),\n)\n\n// A later submission: keepShapes revises a Thing that already exists\nawait client.commit.apply(\n 'acme',\n 'world',\n 'update',\n client.ops().revise('acme', { keepShapes: true, data: { company: 'Acme 2' } }),\n)\n```\n\nA `keepShapes` revise of a Thing added or renamed earlier in the same\nsubmission is refused; state `shapes` instead.\n\n#### Builder errors are `WriteOperationError`, raised when an operation is queued\n\n**What it was.** Some refusals surfaced only at commit.\n\n**What it is now.** A per-operation refusal throws at the `.add(...)` or\n`.revise(...)` call. Whole-batch refusals (\"already submitted\", \"in flight\")\nhave `operationIndex: undefined`. The code is usually `VALIDATION_ERROR`;\nit can also be `RESERVED_NAME`, `ILLEGAL_OP_SEQUENCE`, a Shape-name check\ncode, or (for `keepShapes`, at submit) `NOT_FOUND`.\n\n**Migration.**\n\n```ts\nimport { WriteOperationError, type AddInput } from '@warmhub/sdk-ts'\n\ntry {\n client.ops().add('acme', { data: {} } as AddInput) // no Shapes stated\n} catch (e) {\n if (e instanceof WriteOperationError) console.log(e.code, e.operationIndex) // VALIDATION_ERROR 0\n}\n```\n\n#### Every reference argument uses the new grammar\n\n**What it was.** Read and write calls took `Deal/acme`, and a Shape was\n`Deal`.\n\n**What it is now.** Pass the Thing name (`acme`) and `hub/shapes/Deal` for a\nShape where any Thing can appear. An old spelling is looked up literally: a\nsingle read gets `NOT_FOUND`, and `thing.getMany` lists it in `missing`.\nGlobs (`match`) match Thing names, and `*` does not cross `/`.\n\n**Migration.**\n\n```ts\n// Before\nawait client.thing.get('acme', 'world', 'Deal/acme')\n// After\nawait client.thing.get('acme', 'world', 'acme')\n```\n\n#### `thing.rename` takes full names\n\n**What it was.** `rename(org, repo, shapeName, oldName, newName, opts)`.\n\n**What it is now.** `rename(org, repo, name, newName, opts)`. A call in the\nold argument order is refused locally with `VALIDATION_ERROR`.\n\n**Migration.**\n\n```ts\n// Before\nawait client.thing.rename('acme', 'world', 'Deal', 'acme', 'acme-corp', { eventRequestId })\n// After\nawait client.thing.rename('acme', 'world', 'acme', 'acme-corp', { eventRequestId })\n```\n\n#### Read results drop `shape`, `shapeName` and `validatedShape`\n\n**What it was.** Results carried a single Shape.\n\n**What it is now.** Use `declaredShapes` (the Shapes the version states)\nand `validatedShapes` (the Shapes it satisfies, including composed ones).\nBoth hold version-pinned names such as `Deal@v3`. The removal covers\n`ThingDetail`, `ThingItem`, `thing.getMany` items, `thing.getWithLease`,\nhistory versions and history's `thing`, refs items, component owned Things\nand `view.evaluate` items. `SynthesizedRepoContent.shape` becomes\n`declaredShapes` / `validatedShapes`.\n\n`ThingDetail` allows extra keys, so `detail.shapeName` still compiles; it is\n`undefined` at run time. Search your code for these field names.\n\n`shape` as an input filter (`thing.head(org, repo, { shape: 'Deal' })`) is\nunchanged.\n\n**Migration.**\n\n```ts\n// Before\nconst shape = detail.shapeName\n// After\nconst shapes = (detail.declaredShapes ?? []).map((w) => w.replace(/@v\\d+$/, ''))\n```\n\n#### Token scopes use `grants`, on input and output\n\n**What it was.** A scope entry carried `allowedMatches` and `allowedShapes`.\n\n**What it is now.** Restrictions are a list of (paths, Shapes) pairs in\n`grants`.\n\n- Input (`token.create`): the entry-level fields are still typed `unknown`,\n so old code compiles, but the server refuses them with \"allowedMatches and\n allowedShapes are no longer scope-entry fields: give each (paths, Shapes)\n pair in grants…\".\n- Output (`TokenCreateResult`, token metadata, whoami scopes): the\n entry-level fields are removed, and reading them is a compile error. Read\n `grants`.\n- `org.setMemberScopes` takes entries with `resource` and `permissions`\n only; restrictions on member scopes are refused.\n- A pair must carry a non-empty `allowedMatches`, or an `allowedShapes`\n with at least one key. `grants: []`, `{}` and `{ allowedShapes: {} }` are\n refused.\n- `shapeless: true` in a clause is not a restriction of its own: it lets\n Things with no Shape through. Alone it admits every Thing the pair's paths\n match, shaped or shapeless; beside `shapes` it adds shapeless Things to\n the Things the clause covers. No clause restricts a pair to shapeless\n Things only.\n\n**Migration.**\n\n```ts\n// Before\nawait client.token.create({ name: 'ci', scopes: [\n { resource: 'acme/world', permissions: ['read'], allowedMatches: ['Deal/**'] },\n] })\n// After\nawait client.token.create({ name: 'ci', scopes: [\n { resource: 'acme/world', permissions: ['read'],\n grants: [{ allowedMatches: ['**'], allowedShapes: { shapes: ['Deal'] } }] },\n] })\n```\n\n#### Repository exports are format 6, and the delta fold needs formats\n\n**What it was.** Exports were format 5, and\n`applyRepositoryExportDelta(base, delta)` returned rows keyed by durable id.\n\n**What it is now.**\n\n- The server writes format 6. This SDK reads 5 and 6; older SDKs read only\n 5, so they cannot read exports made after this release reaches\n production.\n- Format 6 uses new-grammar references, has one row per Shape version, and\n may carry `retracted: true` on Shape rows. A Shape tombstone in format 6\n is rejected as `row_invalid`.\n- `applyRepositoryExportDelta` takes a third argument, the formats. Mixing\n format 5 and format 6 throws `RepositoryExportError` with reason\n `format_mismatch`.\n- In the returned map, format 6 Shape rows are keyed `durableId@vN`, not\n `durableId`. Code that looks a Shape up by durable id, or keys its own map\n by durable id, must account for versions.\n\n**Migration.**\n\n```ts\n// Before\nconst current = applyRepositoryExportDelta(base, delta)\n// After\nconst current = applyRepositoryExportDelta(base, delta, {\n base: baseSession.header!.formatVersion,\n delta: deltaSession.header!.formatVersion,\n})\n```\n\n#### `stream.append` takes new-grammar operations only\n\n**What it was.** `stream.append` took the old operation form.\n\n**What it is now.** It takes new-grammar operations and does not accept\n`keepShapes` (use `createKeepShapesResolver`). Its only local check is a\npinned Shape; everything else is checked by the server.\n\n**Migration.** Send `{ operation, name, shapes, data }` operations.\n\n#### Writes need a server running this release\n\n**What it was.** The SDK wrote to any current server.\n\n**What it is now.** Against an older server, writes fail the compatibility\ncheck with \"@warmhub/sdk-ts requires write contract 3, but the backend\nprovides 2.\"\n\n**Migration.** Upgrade the SDK after the server.\n\n### Added\n\n- **`client.ops(options?)`** — returns a new `OperationBuilder`.\n- **`shapeName(bare)`** — `'Deal'` to `'hub/shapes/Deal'`; idempotent.\n- **`isShapeReference(value)`** — true for a bare, unpinned Shape name.\n- **`WriteOperationError`** (extends `WarmHubError`) — with\n `operationIndex`; its message starts `Invalid operation at index N:`.\n- **Types** — `WriteOperation`, `KeepShapesRevise`, `AddInput`,\n `ReviseInput`, `RetractInput`, `ReaffirmInput`, `ShapesChoice`,\n `CommitValidateOperations`, `RepositoryExportDeltaFormats`,\n `ThingShapesReader`.\n- **`keepShapes: true` on a revise** — at submit the SDK reads the Thing's\n current Shapes and version and sends both, the version as\n `expectedVersion` (a supplied `expectedVersion` wins). Shapes are sent\n bare, so the revise is checked against each Shape's current version. A\n missing Thing is refused with `NOT_FOUND`. A Thing added, or renamed to or\n from, earlier in the same submission is refused. A Thing revised earlier in\n the same submission reuses that revise's Shapes and sends no version.\n Because the version is pinned, resubmitting the same `submissionId` from\n another process can conflict; explicit `shapes` is the retry-safe form.\n ```ts\n await client.commit.apply('acme', 'world', 'm',\n client.ops().revise('acme', { keepShapes: true, data: { company: 'Acme 2' } }))\n ```\n- **`createKeepShapesResolver(read)`** — resolves `keepShapes` revises for\n `stream.append`. It keeps state across calls, so use one resolver per\n submission.\n ```ts\n const resolve = createKeepShapesResolver((names) => client.thing.getMany('acme', 'world', names))\n await client.stream.append({ /* ... */ operations: await resolve([\n { operation: 'revise', name: 'acme', keepShapes: true, data: {} },\n ]) })\n ```\n- **Builders everywhere** — `commit.validate`, `commit.apply` and\n `commit.applyStreaming` accept an `OperationBuilder` as well as an array.\n- **`shapeless: true` read filter** — on `thing.head`, `thing.query`,\n `thing.count` and `live.thingHead`: only Things with no Shape. It\n cannot be combined with `shape`, `declaredShape`, `match`, a token\n restricted by paths, or `sinceRepoSeq`, and is not available on search or\n the changes feeds.\n ```ts\n await client.thing.head('acme', 'world', { shapeless: true })\n ```\n- **`warnings.shapeless?: true`** — on per-operation write results.\n- **`ThingGetManyResult.missingHints`** — for a missing reference that is an\n old `Shape/name` spelling of a Thing you can read, the text naming its new\n form.\n- **`declaredShapes` on refs items and history's `thing`** (history also\n gains `validatedShapes`).\n- **`redactedResource: true`** — may appear on `TokenCreateResult` scopes.\n- **`details.reason` values** — `'legacy-wrefs-window-ended'` (from the\n server) and `'legacy-wrefs-sdk'` (local).\n- **`DEPENDENCY_FAILED`** — exported as a constant.\n- **`LEGACY_WREFS_REFUSAL` and `WarmHubClient.clientFlags`**.\n- **Export** — `RepositoryExportErrorReason` gains `'format_mismatch'`;\n `RepositoryExportSession.lastShapeVersion`; an `onRow` option on\n `restoreRepositoryExportSession`. A resume that breaks between two versions\n of one Shape continues from the right version.\n\n### Behavior worth knowing\n\n- **`clientFlags: ['legacy-wrefs']` refuses every call.** The SDK does not\n send old-grammar requests. With the flag set, reads, writes, streaming,\n export and the compatibility check all throw `WarmHubError` with code\n `CLIENT_INCOMPATIBLE`, `details.reason: 'legacy-wrefs-sdk'`, and the\n message \"`legacy-wrefs` is set; the SDKs are v2-only. Unset it, or use the\n `wh` CLI for v1.\" Use the CLI to submit old-grammar files during the\n compatibility window.\n\n### Changed\n\n- **Local checks before sending.** `commit.apply`, `commit.validate` and\n the builder check every operation before sending when given an array or a\n builder. An iterable, an async iterable, or `commit.applyStreaming` is\n checked chunk by chunk, so a bad operation late in the source is refused\n after earlier chunks were committed (`PartialStreamSubmissionError`).\n `stream.append` checks only pinned Shapes.\n- **Content-limit error labels.**\n ```text\n Before: Field \"Content/Readme.content\" is N bytes; WarmHub content fields are limited to 65536 bytes. ...\n After: Field \"Readme.content\" is N bytes; WarmHub content fields are limited to 65536 bytes. ...\n ```\n `Agents.content` changes the same way.\n\n### Removed\n\n- **`AddOp`, `ReviseOp`, `RetractOp`, `CollectionAddOp`,\n `CollectionAddType`, `OperationBuilderAddInput`** — use `WriteOperation`\n and the builder input types.\n ```ts\n // Before\n const op: AddOp = { name: 'Deal/acme', data: {} }\n // After\n const op: WriteOperation = { operation: 'add', name: 'acme', shapes: ['Deal'], data: {} }\n ```\n- **Automatic old-grammar conversion** (`kind`, `about`, `type`/`members`,\n `Shape/name` splitting).\n- **The local \"Selector-backed revise requires a Set/<name> target wref\"\n check in `collection.revise`.** The server decides.\n"
|
|
177
177
|
}
|
|
178
178
|
]
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"version": "0.141.0",
|
|
182
|
+
"sourceSha": "798ff51d9a128c7196c419b6322115384c44d4f3",
|
|
183
|
+
"notes": []
|
|
179
184
|
}
|
|
180
185
|
]
|
|
181
186
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {z as z$2,f as f$1,b,e,g,fa,ca,Z as Z$1,_,$ as $$1,ba,B as B$1,E,C,D as D$1,F as F$1,h,I,J,p,v as v$1,u,t,x as x$1,o,s,M as M$1,i,ea,da,aa,X,q as q$1,l,A as A$1,r,N,c as c$1,d,Y,w,m,n,a}from'./chunk-AO5UO4EW.js';import {TRPCClientError,createTRPCProxyClient,splitLink,httpBatchLink,httpLink}from'@trpc/client';import {observable}from'@trpc/server/observable';import {z as z$1}from'zod';function Pt(n,e){let{childContext:t,onStringValue:r,onObjectKey:i$1}=e,o=[{value:n,context:e.rootContext}];for(;o.length>0;){let{value:s,context:a}=o.pop();if(typeof s=="string"){r(s,a);continue}if(Array.isArray(s)){for(let d=s.length-1;d>=0;d--)o.push({value:s[d],context:t(a,d)});continue}if(!i(s))continue;let u=Object.entries(s).map(([d,l])=>[d,t(a,d),l]);if(i$1)for(let[d,l]of u)i$1(d,l);for(let d=u.length-1;d>=0;d--){let l=u[d];l&&o.push({value:l[2],context:l[1]});}}}var f=class extends Error{code;status;hint;retryAfter;errorCode;backendCode;details;constructor(e,t,r,i,o,s,a){super(t),this.name="WarmHubError",this.code=e,this.status=r,this.hint=i,this.retryAfter=o,this.errorCode=s,this.backendCode=s,this.details=a;}get kind(){return this.code}};var rn=["kind","shape","wref","declaredShapes","about","type","members"];function nn(n){let e=n;for(let t of rn)if(e[t]!==void 0)return `'${t}'`;if(e.operation===void 0)return "no 'operation'";if((e.operation==="add"||e.operation==="revise")&&e.shapes===void 0&&e.keepShapes===void 0)return qt}function Lt(n){let e=nn(n);if(e!==void 0)return e===qt?an(n):`this is the v1 write form (${e}). Write it in the v2 form: ${JSON.stringify(on(n))}`}var Dt="...";function on(n){return sn(pn(n),n)}function sn(n,e){let{data:t,type:r}=e;if(!("data"in n)||t===void 0||t===null||typeof r=="string"&&r in m)return n;let i=n.data;return typeof t=="object"&&!Array.isArray(t)&&typeof i=="object"&&i!==null&&!Array.isArray(i)?{...n,data:Object.fromEntries(Object.entries(i).map(([o,s])=>[o,o in t?Dt:s]))}:{...n,data:Dt}}var qt="no 'shapes'";function an(n){let e=n,t=String(e.operation);return `${t} "${String(e.name)}" states no Shapes: pass shapes: ['Shape', ...], shapes: [] for shapeless${t==="revise"?", or keepShapes: true":""}`}function pn(n){let e=cn(n),t=["operation","name","newName","shapes","keepShapes","data"];return Object.fromEntries([...t.filter(r=>r in e).map(r=>[r,e[r]]),...Object.entries(e).filter(([r])=>!t.includes(r))])}function cn(n$1){let{kind:e,shape:t,wref:r,declaredShapes:i,about:o,type:s,members:a,...u}=n$1,d=u.operation??"add",l=typeof u.name=="string"?u.name:r,m$1={...u,operation:d,name:l};if(d==="rename"||d==="retract"||d==="reaffirm")return e==="shape"&&(m$1.name=`hub/shapes/${String(l)}`,typeof u.newName=="string"&&(m$1.newName=`hub/shapes/${u.newName}`)),m$1;if(e==="shape")return {...m$1,name:`hub/shapes/${String(l)}`,shapes:[]};if(typeof s=="string"&&s in m){let b=s;return {...m$1,shapes:[m[b]],data:n(b,Array.isArray(a)?a:[])}}let h=typeof o=="string"&&typeof u.data=="object"&&u.data!==null?{...u.data,about:o}:u.data;if(Array.isArray(i))return {...m$1,shapes:i,data:h};if(d==="revise")return {...m$1,keepShapes:true,data:h};let g=typeof l=="string"?l.indexOf("/"):-1;return typeof l=="string"&&g>0?{...m$1,name:l.slice(g+1),shapes:[l.slice(0,g)],data:h}:{...m$1,shapes:[],data:h}}function L(n){return n.keepShapes===true}var P=Symbol.for("warmhub.sdk.queuedOperations");function q(n){return typeof n=="object"&&n!==null&&typeof n[P]=="function"}function un(n){return f$1(n)}var y=class extends f{operationIndex;constructor(e,t,r="VALIDATION_ERROR"){super(r,e===void 0?t:`Invalid operation at index ${e}: ${t}`,r==="NOT_FOUND"?404:400),this.operationIndex=e;}},dn="DEPENDENCY_FAILED",Be="`shapes` takes bare Shape names; writes always certify under the Shape's head version.",ln=new Set(["add","revise","retract","restore","reaffirm","rename"]),mn=/@v\d+$/;function He(n){return mn.test(n)}function Ut(n){return typeof n=="string"&&n.length>0&&n.trim()===n&&!n.includes("/")&&!b(n)}function Mt(n,e,t){if(typeof n!="string"||n.length===0)throw new y(t,`'${e}' must be a non-empty name`);return n}function Z(n,e$1,t=false){if(typeof n!="object"||n===null)throw new y(e$1,"an operation must be an object");if(Object.hasOwn(n,"shapeless"))throw new y(e$1,"shapeless is a builder option; a raw operation states a shapeless write as shapes: []");let r=Lt(n);if(r!==void 0)throw new y(e$1,r);let i=n;if(typeof i.operation!="string"||!ln.has(i.operation))throw new y(e$1,"'operation' must be one of add, revise, retract, restore, reaffirm, rename");let o=Mt(i.name,"name",e$1);if(i.operation==="rename"){let s=Mt(i.newName,"newName",e$1);if(e(o)!==e(s))throw new y(e$1,`a Shape renames to a Shape: rename "${o}" to hub/shapes/<Name>, and a Thing to a Thing name`)}if((i.operation==="add"||i.operation==="revise")&&(hn(i,o,e$1),i.data===void 0))throw new y(e$1,`${i.operation} requires 'data'`);if(i.operation==="add"&&i.expectedVersion!==void 0)throw new y(e$1,"expectedVersion is only valid on revise, retract, restore, or reaffirm operations");if(i.operation==="revise"&&Object.hasOwn(i,"active"))throw new y(e$1,`revise no longer supports 'active' \u2014 retract "${o}" instead`);return yn(i,o,e$1),t&&i.operation==="add"?{...i,skipExisting:true}:i}function hn(n,e$1,t){if(n.keepShapes!==void 0){if(n.operation!=="revise"||n.keepShapes!==true)throw new y(t,"keepShapes applies only to a revise: an add states its shapes, or shapeless");if(n.shapes!==void 0)throw new y(t,"state Shapes one way: shapes, shapeless, or keepShapes");return}let r=n.shapes;if(!Array.isArray(r))throw new y(t,`${String(n.operation)} "${e$1}" states no Shapes: pass shapes: ['Shape', ...], shapeless, or (revise only) keepShapes`);for(let i of r){if(typeof i=="string"&&He(i))throw new y(t,Be);if(!Ut(i))throw new y(t,`shapes holds bare Shape names ('Deal'); got ${JSON.stringify(i)}`)}if(e(e$1)&&r.length>0)throw new y(t,`"${e$1}" is a Shape: write it with shapes: []`);if(r.length===0&&n.affirmedTargets!==void 0)throw new y(t,"affirmedTargets needs a Shape that composes Assertion; a shapeless write has none")}var gn=n=>`Name "${n}" contains reserved character "+". The "+" character is reserved for the historical collection auto-name namespace and is not allowed in user-supplied names.`;function yn(n,e$1,t){let r=g(e$1);if(r!==void 0){let o=typeof n.newName=="string"?g(n.newName)??n.newName:void 0,s=N({operation:n.operation,kind:"shape",name:r,...o!==void 0?{newName:o}:{}},t)[0];if(s)throw new y(t,s.message,s.code);return}if(n.operation==="restore"&&typeof n.newName=="string"&&e(n.newName)){let o=N({operation:"restore",name:e$1,newName:n.newName},t)[0];if(o)throw new y(t,o.message,o.code);return}let i=n.operation==="add"?e$1:(n.operation==="rename"||n.operation==="restore")&&typeof n.newName=="string"?n.newName:void 0;if(i!==void 0){if(c$1(i))throw new y(t,d(i),"RESERVED_NAME");if(i.includes("+"))throw new y(t,gn(i))}}function ee(n,e=0){let t=new Set;n.forEach((r,i)=>{if(r.operation==="add"){if(t.has(r.name))throw new y(e+i,`Cannot add "${r.name}" twice in the same commit`,"ILLEGAL_OP_SEQUENCE");t.add(r.name);}});}var Vt=500;function M(n){let e=new Map,t=new Set;return async(r,i=0)=>{let o=new Set,s=new Set;for(let u of r){L(u)&&!s.has(u.name)&&!t.has(u.name)&&!e.has(u.name)&&o.add(u.name);for(let d of Bt(u))s.add(d);}let a=await fn([...o],n);return r.map((u,d)=>{if(!L(u)){if(u.operation==="revise")e.set(u.name,u.shapes);else if(u.operation==="add"||u.operation==="rename")for(let b of Bt(u))t.add(b);return u}if(t.has(u.name))throw new y(i+d,`keepShapes revise "${u.name}": an earlier operation in this submission adds or renames it, so its Shapes are not known until that commits; submit it in a later request, or pass \`shapes\``);let{keepShapes:l,...m}=u,h=e.get(u.name);if(h!==void 0)return {...m,shapes:h};let g=a.get(u.name);if(g===void 0)throw new y(i+d,`keepShapes revise "${u.name}": no such Thing`,"NOT_FOUND");return e.set(u.name,g.shapes),{...m,shapes:g.shapes,expectedVersion:u.expectedVersion??g.version}})}}function Bt(n){return n.operation==="rename"?[n.name,n.newName]:n.operation==="add"||n.operation==="revise"?[n.name]:[]}async function fn(n,e){let t=new Map;for(let r=0;r<n.length;r+=Vt){let i=n.slice(r,r+Vt),o=await e(i),s=new Set(o.missing),a=i.filter(u=>!s.has(u));if(a.length!==o.items.length)throw new Error(`keepShapes read returned ${o.items.length} items for ${a.length} found targets`);a.forEach((u,d)=>{let l=o.items[d];l!==void 0&&t.set(u,{shapes:l.declaredShapes.map(m=>h(m)),version:l.version});});}return t}var Ht=new WeakSet;function Ft(n){Ht.add(n);}function V(n){return Ht.has(n)}var Wt="`legacy-wrefs` is set; the SDKs are v2-only. Unset it, or use the `wh` CLI for v1.",Rn="Remove 'legacy-wrefs' from the client's options (clientFlags: ['legacy-wrefs'] is what sets it).";function Fe(){return new f("CLIENT_INCOMPATIBLE",Wt,void 0,Rn,void 0,void 0,{reason:"legacy-wrefs-sdk"})}function te(n){return n?.includes(q$1)===true}var $t="`legacy-wrefs` is set: unset `legacy-wrefs` to run this command (WH_CLIENT_FLAGS, or the profile's client flag). Under it, wh sends only raw `wh commit submit` input, reads and sign-in.",Gt=new Set(["auth.sync"]),Kt=new Set(["stream.append","commit.validate"]),jt="`legacy-wrefs` is set, so only raw v1 input is sent: builder output and keepShapes revises are v2 payloads and are never sent under it. Unset the flag to use them.";function B(n,e){let t=n.clientFlags;if(te(t)&&V(n)){if(q(e))throw new y(void 0,jt);return "passThrough"}if(te(t))throw Fe();return "v2"}function zt(n,e){if(typeof n!="object"||n===null)throw new y(e,"an operation must be an object");if(L(n))throw new y(e,jt);return n}function H(){let n=globalThis.crypto?.randomUUID?.();if(!n)throw new Error("This runtime cannot mint a cryptographically secure UUID");return n.toLowerCase()}var bn=H;function Sn(n,e,t){let r=n.operation===void 0||n.operation==="noop"?t?.operation??"add":n.operation,i={opIndex:e,name:n.name??"",operation:r,...n.affirmations?{affirmations:n.affirmations}:{},...n.resolvedName!==void 0?{resolvedName:n.resolvedName}:{},...n.warnings?{warnings:n.warnings}:{}};return n.status==="failed"?{...i,status:"error",errors:[{code:n.error?.code??"BACKEND",message:n.error?.message??`Operation on "${n.name}" failed`,...n.error?.details?{details:n.error.details}:{},...n.retryable!==void 0?{retryable:n.retryable}:{}}],...t?.name!==void 0?{submittedName:t.name}:{}}:{...i,status:n.status==="noop"||n.operation==="noop"?"noop":"applied",...n.version!==void 0?{version:n.version}:{},...n.dataHash!==void 0?{dataHash:n.dataHash}:{}}}var F=class{receipts=[];operations=[];statusCounts={applied:0,noop:0,error:0};get allFailed(){return this.operations.length>0&&this.statusCounts.error===this.operations.length}addChunk(e){if(e.result.schemaVersion==="operation-event-receipt/v2"){e.result.results.forEach(t=>{this.statusCounts[t.status]++,this.operations.push({...t,opIndex:e.chunkStart+t.opIndex});});return}e.result.results.forEach((t,r)=>{let i=t.opIndex??r,o=e.submittedOperations[i],s=Sn(t,e.chunkStart+i,o);this.statusCounts[s.status]++,this.operations.push(s);});}addReceipt(e){this.receipts.push(e);}completedOperations(){return this.operations.filter(e=>e.status!=="error")}toResult(e){let t=this.statusCounts.error>0;return {...e.committer!==void 0?{committer:e.committer}:{},...e.createdByEmail!==void 0?{createdByEmail:e.createdByEmail}:{},message:e.message,operationCount:this.operations.length,...e.repoSeq!==void 0?{repoSeq:e.repoSeq}:{},...t?{partial:t,statusCounts:{...this.statusCounts}}:{},operations:this.operations,receipts:this.receipts}}};var Se=1e3,we=1e4,k=class extends Error{code="PARTIAL_STREAM_SUBMISSION";completedReceipts;completedOperations;submissionId;eventRequestId;chunkOrdinal;pendingOutcome;acknowledgedOperationCount;lastAcknowledgedRepoSeq;attemptedAppendOutcome;cause;constructor(e){super(e.pendingOutcome==="unknown"?`Stream submission outcome is unknown for event request ${e.eventRequestId}. Look up its immutable receipt before retrying.`:`Stream submission stopped at event request ${e.eventRequestId} after earlier chunks committed.`),this.name="WarmHubError",this.cause=e.cause,this.completedReceipts=e.completedReceipts,this.completedOperations=e.completedOperations??[],this.submissionId=e.submissionId,this.eventRequestId=e.eventRequestId,this.chunkOrdinal=e.chunkOrdinal,this.pendingOutcome=e.pendingOutcome,this.acknowledgedOperationCount=e.acknowledgedOperationCount??e.completedReceipts.length,this.attemptedAppendOutcome=e.attemptedAppendOutcome,e.lastAcknowledgedRepoSeq!==void 0&&(this.lastAcknowledgedRepoSeq=e.lastAcknowledgedRepoSeq);}},A=class extends Error{code;receipts;result;operations;statusCounts;cause;constructor(e){let t=e.operations.find(r=>r.status==="error")?.errors[0];super(t?`All ${e.operationCount} stream operations failed: ${t.message}`:`All ${e.operationCount} stream operations failed.`),this.name="WarmHubError",this.code=t&&e.operations.every(r=>r.status==="error"&&r.errors.length>0&&r.errors.every(i=>i.code===t.code))?t.code:"STREAM_ALL_OPERATIONS_FAILED",this.cause=t,this.result=e,this.receipts=e.receipts,this.operations=e.operations,this.statusCounts=e.statusCounts??{applied:0,noop:0,error:e.operationCount};}};function We(n){let e="status"in n?n.status:void 0;return e==="failed"||e==="error"?"error":e==="noop"||n.operation==="noop"?"noop":"applied"}function Jt(n){let e={applied:0,noop:0,error:0};for(let t of n)e[We(t)]++;return e}var wn={maxAttempts:3,baseDelayMs:250,maxDelayMs:8e3},Cn=10,Qt=6e4;function $e(n){if(n===false)return false;let e={};n!==void 0&&(Number.isFinite(n.maxAttempts)&&(e.maxAttempts=n.maxAttempts),Number.isFinite(n.baseDelayMs)&&(e.baseDelayMs=n.baseDelayMs),Number.isFinite(n.maxDelayMs)&&(e.maxDelayMs=n.maxDelayMs));let t={...wn,...e};return {maxAttempts:Math.min(Cn,Math.max(1,Math.trunc(t.maxAttempts))),baseDelayMs:Math.min(Qt,Math.max(0,Math.trunc(t.baseDelayMs))),maxDelayMs:Math.min(Qt,Math.max(0,Math.trunc(t.maxDelayMs)))}}var En=new Set(["BAD_REQUEST","METHOD_NOT_SUPPORTED","PARSE_ERROR","PAYLOAD_TOO_LARGE","PRECONDITION_FAILED","UNAUTHORIZED","UNPROCESSABLE_CONTENT","UNSUPPORTED_MEDIA_TYPE","UNAUTHENTICATED","FORBIDDEN","VALIDATION_ERROR","SHAPE_MISMATCH","RESERVED_NAME","ILLEGAL_OP_SEQUENCE","NOT_FOUND","KIND_MISMATCH","CONFLICT","NAME_TAKEN","TARGET_REMOVED","ALREADY_RETRACTED","ARCHIVED","RATE_LIMITED","TOO_MANY_REQUESTS","UNRESOLVED_TOKEN"]),On=new Set(["COMMIT_OUTCOME_UNKNOWN"]);function Xt(n){if(!n||typeof n!="object")return;let e=n.code;if(typeof e=="string")return e;let t=n.data,r=t?.warmhub?.code;if(typeof r=="string")return r;let i=t?.code;if(typeof i=="string")return i}function vn(n){if(!n||typeof n!="object")return;let e=n.data?.httpStatus;if(typeof e=="number")return e;let t=n.data?.warmhub?.status;if(typeof t=="number")return t;let r=n.status;return typeof r=="number"?r:void 0}function In(n){return n!==void 0&&n>=400&&n<500&&n!==408}function Zt(n){let e=Xt(n);return e!==void 0&&On.has(e)}function re(n){if(Zt(n))return false;let e=Xt(n);return e!==void 0&&En.has(e)||In(vn(n))}function Ge(n){if(Zt(n)||re(n))return false;if(Yt(n))return true;if(n instanceof TypeError||n instanceof SyntaxError)return false;let e=n?.cause;return Yt(e)?true:!(e instanceof TypeError||e instanceof SyntaxError)}function Yt(n){return n instanceof TypeError&&/fetch/i.test(n.message)}function Ke(n,e){let t=e.baseDelayMs*2**Math.max(0,n-1),r=Math.random()*e.baseDelayMs;return Math.min(e.maxDelayMs,t+r)}function je(n){return new Promise(e=>setTimeout(e,n))}var Ce=class extends Error{code;status=400;constructor(e,t="VALIDATION_ERROR"){super(e),this.code=t,this.name="WarmHubError";}},Ee=class extends Error{constructor(t){super("operation source failed");this.reason=t;}reason};async function W(n,e){let t=B(n,e.operations),r=ve(e.chunkSize),i=e.submissionId??H(),o=e.streamId??i,s=$e(e.retry),a=new F,u=[],d,l,m=0,h,g=0,b=M(async C=>{if(!n.thing)throw new Ce("A keepShapes revise needs the client to read its Thing: this stream client has no thing.getMany");return await n.thing.getMany(e.orgName,e.repoName,C)}),S=C=>new k({cause:C.cause,completedReceipts:a.receipts,completedOperations:a.completedOperations(),acknowledgedOperationCount:m,lastAcknowledgedRepoSeq:h,attemptedAppendOutcome:C.pendingOutcome==="absent"?"not_applied":"unknown",submissionId:i,eventRequestId:M$1(i,g),chunkOrdinal:g,pendingOutcome:C.pendingOutcome});try{for await(let C of xn(e.operations,r,e.skipExisting===!0,b,t)){let _=C.operations,Q=1,Y=!1;for(;;)try{let E=await n.stream.append({allocatedTokenRanges:u,chunkOrdinal:g,orgName:e.orgName,repoName:e.repoName,streamId:o,submissionId:i,componentRef:e.componentRef,committer:e.committer,message:e.message,...e.returnRepoSeq!==void 0?{returnRepoSeq:e.returnRepoSeq}:{},operations:_});a.addReceipt(E.receipt),u=E.allocatedTokenRanges,d=E.createdByEmail??d,l=E.repoSeq??l,a.addChunk({result:E,chunkStart:C.start,submittedOperations:C.operations}),m+=C.operations.length;let I=_n(E.receipt);I!==void 0&&(h=I);break}catch(E){let I=re(E);if(a.receipts.length===0&&!Y&&I)throw E;if(s!==!1&&Q<s.maxAttempts&&Ge(E)){await je(Ke(Q,s)),Q+=1,Y=!0;continue}throw S({cause:E,pendingOutcome:Y||!I?"unknown":"absent"})}g+=1;}}catch(C){throw C instanceof Ee?a.receipts.length===0?C.reason:S({cause:C.reason,pendingOutcome:"absent"}):C}if(g===0)throw new Ce("At least one operation is required for stream submission.");let w=a.toResult({committer:e.committer,createdByEmail:d,message:e.message,repoSeq:l});if(a.allFailed)throw new A(w);return w}async function*xn(n,e,t,r,i){let o=i==="passThrough";try{let s=kn(n);if(s!==void 0){let l=s.map((h,g)=>ne(h,g,t,i));o||ee(l);let m=o?l:await r(l);for(let h=0;h<m.length;h+=e)yield {operations:m.slice(h,h+e),start:h};return}let a=0,u=[],d=o?async(l,m)=>({operations:l,start:m-l.length}):async(l,m)=>await An(l,m,r);for await(let l of tr(n,t,i))u.push(l),a+=1,!(u.length<e)&&(yield await d(u,a),u=[]);u.length>0&&(yield await d(u,a));}catch(s){throw new Ee(s)}}function kn(n){if(q(n))return n[P]();if(Array.isArray(n))return n}async function An(n,e,t){let r=e-n.length;return ee(n,r),{operations:await t(n,r),start:r}}function ne(n,e,t,r="v2"){if(r==="v2")return Z(n,e,t);let i=zt(n,e);return t&&i.operation==="add"?{...i,skipExisting:true}:i}function er(n){let e=M(n),t=0;return async r=>{let i=t;return t+=r.length,await e(r.map((o,s)=>Z(o,i+s)),i)}}async function*tr(n,e,t="v2"){let r=Oe(n,e,t);try{for(;;){let i=await r.next();if(i.done)return;yield i.value;}}finally{let i=r.returnSourceOnce();i&&await i;}}function Oe(n,e,t="v2"){let r,i=0,o=false,s=false,a=()=>{if(r)return r;let u=q(n)?n[P]():n;return r=Symbol.asyncIterator in u?u[Symbol.asyncIterator]():u[Symbol.iterator](),r};return {async next(){let u=await a().next();if(u.done)return s=true,{done:true,value:void 0};let d=ne(u.value,i,e,t);return i+=1,{done:false,value:d}},returnSourceOnce(){if(o||s){o=true;return}return o=true,r?.return?.()}}}function ze(n){return Tn.encode(`${JSON.stringify(n)}
|
|
2
2
|
`)}var Tn=new TextEncoder;function _n(n){let e=n.event?.repoSeq;if(e===void 0)return;let t=Number(e);return Number.isSafeInteger(t)?t:void 0}function ve(n){return Number.isFinite(n)?Math.max(1,Math.min(we,Math.trunc(n))):Se}var Nn=1e4,Qe=4*1024*1024,$=class extends Error{code="VALIDATION_ERROR";status=400;constructor(e,t){super(`Invalid operation at index ${e}: ${t}`),this.name="WarmHubError";}};function Pn(n,e){if(typeof n.name!="string"||n.name.length===0)throw new $(e,`${String(n.operation)} requires 'name'`);return n.name}function rr(n,e,t){let r=n[t];if(typeof r!="number"||!Number.isInteger(r)||r<1)throw new $(e,`${String(n.operation)} requires a positive integer '${t}'`);return r}function Dn(n,e){let t=Pn(n,e);if(n.operation==="remove")return {operation:"remove",name:t,expectedVersion:rr(n,e,"expectedVersion")};let r=n.data;if(typeof r!="object"||r===null||Array.isArray(r))throw new $(e,"rewrite requires 'data', the complete replacement body as an object");let i=n.shapes;if(!Array.isArray(i)||i.some(o=>typeof o!="string"||o.length===0))throw new $(e,"rewrite requires 'shapes', the version's declared Shapes plus CorrectedThing");return {operation:"rewrite",name:t,version:rr(n,e,"version"),shapes:i,data:r}}var nr=n=>{let e=typeof n=="object"&&n!==null?n.operation:void 0;return e==="remove"||e==="rewrite"},Ye=n=>!nr(n);function ir(n,e,t="v2"){let i=(q(n)?n[P]():n).map((o,s)=>nr(o)?Dn(o,s):ne(o,s,e===true,t));return t==="v2"&&ee(i.filter(Ye)),i}async function Ln(n,e){let t=(await n(e.filter(Ye))).values();return e.map(r=>Ye(r)?t.next().value:r)}async function or(n,e,t,r,i,o,s){let a=B(s,i),u=ir(i,o?.skipExisting,a),d=M(e),l={...sr(t,r,[],o,a),operations:a==="passThrough"?u:await Ln(d,u)},m=pr(l);if(m>Qe)throw new f("VALIDATION_ERROR",`Commit validation request exceeds the ${Qe}-byte encoded limit (${m} bytes).`,413,"Split the preview into smaller current-commit units.");return await n.mutate(l,{signal:o?.signal})}function sr(n,e,t,r,i="v2"){return {orgName:n,repoName:e,...r?.committer!==void 0?{committer:r.committer}:{},...r?.message!==void 0?{message:r.message}:{},...r?.componentRef!==void 0?{componentRef:r.componentRef}:{},operations:ir(t,r?.skipExisting,i),...r?.includeWouldBeBody!==void 0?{includeWouldBeBody:r.includeWouldBeBody}:{}}}function ar(n){return JSON.stringify(n)}function pr(n){return new TextEncoder().encode(ar(n)).byteLength}function Ie(n){let e=new Set;return Pt(n,{rootContext:{key:null,parentKey:null,insideData:false},childContext:(t,r)=>({key:r,parentKey:t.key,insideData:t.insideData||r==="data"}),onStringValue:(t,r)=>{if(r.key==="durableId"&&r.parentKey==="metadata"&&!r.insideData)return;let i=a(t);i&&e.add(i.durableId);}}),e}function Un(n){let e={};for(let t of n)e[t.durableId]=t.canonicalWref;return e}function Je(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Vn(n){if(!Je(n))return;let e=n.decorations;return Je(e)?e:void 0}function Bn(n){let e=n instanceof Error?n:new Error(String(n));return Object.assign(e,{decorationFailure:true})}function cr(n){return ()=>({op:e,next:t})=>!n.enabled||e.type!=="query"||e.path==="thing.headVersions"?t(e):observable(r=>{let i=false,o=false,s=false,a=()=>{!i&&o&&!s&&r.complete();},u=t(e).subscribe({next:d=>{let l=d.result?.data;if(!Je(l)){r.next(d);return}let m=Ie(l);if(m.size===0){r.next(d);return}s=true,n.getClient().thing.headVersions(void 0,void 0,[...m]).then(({items:h})=>{i||r.next({...d,result:{...d.result,data:{...l,decorations:Un(h)}}});}).catch(h=>{i||r.error(TRPCClientError.from(Bn(h)));}).finally(()=>{s=false,a();});},error:d=>r.error(d),complete:()=>{o=true,a();}});return ()=>{i=true,u.unsubscribe();}})}function ur(n,e){return {create:async(t,r,i)=>{try{return await n().grant.create.mutate({orgName:t,repoName:r,...i})}catch(o){throw e(o)}},get:async(t,r,i)=>{try{return await n().grant.get.query({orgName:t,repoName:r,grantId:i})}catch(o){throw e(o)}},list:async(t,r,i)=>{try{return await n().grant.list.query({orgName:t,repoName:r,limit:i?.limit,cursor:i?.cursor})}catch(o){throw e(o)}},revoke:async(t,r,i,o)=>{try{return await n().grant.revoke.mutate({orgName:t,repoName:r,grantId:i,reason:o?.reason})}catch(s){throw e(s)}}}}function ie(n,e,t){let r=ea(e,t==="revise"?{allowUnsafeFieldNamePaths:da(e)}:void 0);return r.valid?null:`Invalid shape definition for "${n}": ${r.errors.join("; ")}`}var G=class{ops=[];shapes;submitted=false;inFlight=false;constructor(e){this.shapes=e?.shapes;}add(e,t){this.assertCanModify();let r=this.ops.length,i=this.statedShapes(t,r,"add",e);return this.queue({operation:"add",name:e,shapes:i??[],data:t.data,...t.affirmedTargets!==void 0?{affirmedTargets:[...t.affirmedTargets]}:{},...t.skipExisting===true?{skipExisting:true}:{}},t.data),this}revise(e,t){this.assertCanModify();let r=this.ops.length,i=this.statedShapes(t,r,"revise",e),o={data:t.data,...t.affirmedTargets!==void 0?{affirmedTargets:[...t.affirmedTargets]}:{},...t.expectedVersion!==void 0?{expectedVersion:t.expectedVersion}:{},...t.leaseId!==void 0?{leaseId:t.leaseId}:{}};return this.queue(i===void 0?{operation:"revise",name:e,keepShapes:true,...o}:{operation:"revise",name:e,shapes:i,...o},t.data),this}retract(e,t={}){return this.assertCanModify(),this.queue({operation:"retract",name:e,...t.reason!==void 0?{reason:t.reason}:{},...t.expectedVersion!==void 0?{expectedVersion:t.expectedVersion}:{},...t.leaseId!==void 0?{leaseId:t.leaseId}:{}}),this}restore(e,t={}){return this.assertCanModify(),this.queue({operation:"restore",name:e,...t.newName!==void 0?{newName:t.newName}:{},...t.expectedVersion!==void 0?{expectedVersion:t.expectedVersion}:{},...t.leaseId!==void 0?{leaseId:t.leaseId}:{}}),this}rename(e,t){return this.assertCanModify(),this.queue({operation:"rename",name:e,newName:t}),this}reaffirm(e,t){return this.assertCanModify(),this.queue({operation:"reaffirm",name:e,...t.add!==void 0?{add:[...t.add]}:{},...t.remove!==void 0?{remove:[...t.remove]}:{},...t.expectedVersion!==void 0?{expectedVersion:t.expectedVersion}:{},...t.leaseId!==void 0?{leaseId:t.leaseId}:{}}),this}get operations(){return Object.freeze([...this.ops])}get size(){return this.ops.length}has(e){return this.ops.some(t=>t.operation==="add"&&t.name===e)}[P](){return this.ops}validate(){let e=[],t=[],r=new Set,i=new Set;return this.ops.forEach((o,s)=>{if(o.operation==="add")r.has(o.name)&&e.push({code:"DUPLICATE_NAME",operationIndex:s,message:`Duplicate name '${o.name}' at index ${s} (already added earlier in commit)`}),r.add(o.name);else if(o.operation==="revise")i.has(o.name)?e.push({code:"REVISE_AFTER_RETRACT",operationIndex:s,message:`Revise at index ${s} targets '${o.name}' which was already retracted in this commit`}):r.has(o.name)||t.push({code:"REVISE_UNKNOWN_WREF",operationIndex:s,message:`Revise at index ${s} references '${o.name}' which was not added in this commit (assuming it exists server-side)`});else if(o.operation==="retract"){if(i.has(o.name)){t.push({code:"RETRACT_AFTER_RETRACT",operationIndex:s,message:`Retract at index ${s} targets '${o.name}' which was already retracted in this commit`});return}r.has(o.name)||t.push({code:"RETRACT_UNKNOWN_WREF",operationIndex:s,message:`Retract at index ${s} references '${o.name}' which was not added in this commit (assuming it exists server-side)`}),i.add(o.name);}else o.operation==="restore"&&i.clear();}),this.ops.length===0&&e.push({code:"EMPTY_COMMIT",operationIndex:-1,message:"OperationBuilder has no operations"}),{valid:e.length===0,errors:e,warnings:t}}async commit(e){if(this.assertNotSubmitted(),this.inFlight)throw new y(void 0,"OperationBuilder: stream submission already in flight");let t=this.validate(),[r]=t.errors;if(r!==void 0){let i=t.errors.map(o=>o.message).join("; ");throw new y(r.operationIndex<0?void 0:r.operationIndex,`OperationBuilder validation failed: ${i}`)}this.inFlight=true;try{let i=await W(e.client,{orgName:e.orgName,repoName:e.repoName,committer:e.committer,message:e.message,chunkSize:e.chunkSize,streamId:e.streamId,submissionId:e.submissionId,returnRepoSeq:e.returnRepoSeq,retry:e.retry,operations:this});return this.submitted=!0,i}catch(i){throw i instanceof k&&(this.submitted=true),i}finally{this.inFlight=false;}}statedShapes(e$1,t,r,i){let o=[e$1.shapes!==void 0,e$1.shapeless!==void 0,e$1.keepShapes!==void 0].filter(Boolean).length;if(o!==1)throw new y(t,o===0?`${r} states no Shapes: pass shapes: ['Shape', ...], shapeless: true${r==="revise"?", or keepShapes: true":""}`:"state Shapes one way: shapes, shapeless, or keepShapes");if(e$1.keepShapes!==void 0){if(r==="add"||e$1.keepShapes!==true)throw new y(t,"keepShapes applies only to a revise: an add states its shapes, or shapeless");return}if(e$1.shapeless!==void 0){if(e$1.shapeless!==true)throw new y(t,"shapeless must be true");if(e(i))throw new y(t,`"${i}" is a Shape: write it with shapes: [], not shapeless`);return []}let s=[...e$1.shapes??[]];if(s.length===0&&!e(i))throw new y(t,`${r} "${i}" with shapes: [] is the raw spelling of a shapeless write; the builder takes shapeless: true`);return s}queue(e,t){let r=this.ops.length,i=Z(e,r),o=g(i.name);if(o!==void 0&&(i.operation==="add"||i.operation==="revise")){let s=ie(o,i.data,i.operation);if(s)throw new y(r,s)}if(this.shapes&&t!==void 0&&(i.operation==="add"||i.operation==="revise")&&"shapes"in i&&i.shapes!==void 0)for(let s of i.shapes){let a=this.shapes[s];if(!a)continue;let u=fa(t,a);if(!u.valid)throw new y(r,`Shape validation failed for '${i.name}' (shape: ${s}): ${u.errors.join("; ")}`)}this.ops.push(Object.freeze(i));}assertNotSubmitted(){if(this.submitted)throw new y(void 0,"OperationBuilder: already submitted, cannot modify")}assertCanModify(){if(this.assertNotSubmitted(),this.inFlight)throw new y(void 0,"OperationBuilder: stream submission already in flight, cannot modify")}};function dr(n){return {...n,createdAt:new Date(n.createdAt),updatedAt:new Date(n.updatedAt),runStartedAt:new Date(n.runStartedAt),...n.state==="complete"||n.state==="failed"?{completedAt:new Date(n.completedAt)}:{}}}function Wn(n){return {...n,expiresAt:new Date(n.expiresAt)}}function lr(n){if(typeof n.checkpointId=="string"&&typeof n.repoSeq!="number")return {by:"id",checkpointId:n.checkpointId};if(typeof n.repoSeq=="number"&&typeof n.checkpointId!="string")return {by:"repoSeq",repoSeq:n.repoSeq};throw new TypeError("Repository checkpoint selector must contain exactly one of checkpointId or repoSeq")}function mr(n,e){return {status:async(t,r,i)=>{try{let o=await n().repo.checkpoint.status.query({orgName:t,repoName:r,selector:lr(i)});return dr(o)}catch(o){throw e(o)}},latest:async(t,r)=>{try{let i=await n().repo.checkpoint.latest.query({orgName:t,repoName:r});return i.checkpoint?dr(i.checkpoint):null}catch(i){throw e(i)}},getAccess:async(t,r,i)=>{try{let o=await n().repo.checkpoint.access.query({orgName:t,repoName:r,selector:i.checkpoint==="latest"?{by:"latest"}:lr(i.checkpoint),artifact:i.artifact==="archive"||i.artifact==="manifest"?{kind:i.artifact}:{kind:"chunk",path:i.artifact.chunkPath}});return Wn(o)}catch(o){throw e(o)}}}}var R=class extends Error{constructor(t,r){super(r??$n[t]);this.reason=t;}reason;name="RepositoryExportError"},$n={count_mismatch:"Repository export trailer record count does not match the rows read",digest_mismatch:"Repository export content digest does not match the trailer",fence_mismatch:"Repository export header and trailer disagree about atRepoSeq",format_mismatch:"Repository export delta and base use different format versions; take a fresh full export",header_invalid:"Repository export header is invalid",row_invalid:"Repository export row is invalid or not canonical",row_out_of_order:"Repository export rows are not strictly increasing by durableId (and by version within one Shape)",since_below_epoch_floor:"Repository export delta base is below the epoch floor",trailer_invalid:"Repository export trailer is invalid",truncated:"Repository export stream ended before its trailer"},oe=class{#e=ca();#i=ca();#o=0;#t;#r;#a;#s=false;#p=false;#n;get header(){return this.#t}get lastDurableId(){return this.#r?.durableId}get lastShapeVersion(){let e=this.#r;return e?.kind==="shape"&&(this.#t?.formatVersion??0)>=6?e.version:void 0}get rowCount(){return this.#e.rowCount}get segmentRowCount(){return this.#o}get contentSha256(){return this.#n}finalizeContentSha256(){return this.#n===void 0&&(this.#n=this.#e.finalize(),this.#s=true),this.#n}beginSegment(){this.assertResumable(),this.#i=ca(),this.#o=0;}markUnverifiable(){this.#p=true;}finalizeSegment(){return this.#i.finalize()}get token(){return this.#a}set token(e){this.#a=e;}get complete(){return this.#s}markComplete(){this.finalizeContentSha256();}assertResumable(){if(this.#p)throw new R("digest_mismatch","Repository export session failed verification and cannot be resumed; start a new session");if(this.#s)throw new R("header_invalid","Repository export session is already complete; start a new session")}adoptHeader(e){this.assertResumable();let t=this.#t;if(t!==void 0&&(t.repo!==e.repo||t.mode!==e.mode||t.sinceRepoSeq!==e.sinceRepoSeq||t.atRepoSeq!==e.atRepoSeq))throw new R("header_invalid","Resumed repository export header does not match the opening header");if(t!==void 0&&t.formatVersion!==e.formatVersion)throw new R("header_invalid",`Resumed repository export is format ${e.formatVersion}, but it opened as format ${t.formatVersion}. Restart the export; a resume must use the format it started with.`);this.#t=e;}recordRow(e,t){let r=this.#t,i=this.#r;if(r?.mode==="heads"&&i!==void 0&&!Z$1(i,e,r.formatVersion))throw new R("row_out_of_order",`Repository export row '${e.durableId}' v${e.version} does not follow '${i.durableId}' v${i.version}`);this.#e.update(t),this.#i.update(t),this.#o+=1,this.#r={durableId:e.durableId,kind:e.kind,version:e.version};}};function K(){return new oe}function Gn(n){return typeof n.get=="function"}function Kn(n){return Gn(n)?n.values():n}function jn(n,e){return e>=6&&n.kind==="shape"?`${n.durableId}@v${n.version}`:n.durableId}function hr(n,e,t){if(t.base>=6!=t.delta>=6)throw new R("format_mismatch",`Repository export delta is format ${t.delta} but its base is format ${t.base}; take a fresh full export instead of folding across formats`);let r=new Map;for(let[i,o]of [[n,t.base],[e,t.delta]])for(let s of Kn(i)){if(!s.active&&o>=6&&s.kind==="shape"){let u=`${s.durableId}@v`;for(let d of r.keys())d.startsWith(u)&&r.delete(d);continue}let a=jn(s,o);s.active?r.set(a,s):r.delete(a);}return r}var gr=10,zn=new TextDecoder;function Qn(n){let e=n.header;if(!e)throw new R("header_invalid","Repository export resumed without an opening header to inherit");return e}async function Yn(n,e,t){let r=await n.next();if(r.done)throw new R("truncated");let i;try{i=aa(r.value);}catch(o){Xe("header_invalid",o);}if(!X.includes(i.formatVersion)||t!==void 0&&(i.repo!==t.repo||i.mode!==t.mode||t.sinceRepoSeq!==void 0&&i.sinceRepoSeq!==t.sinceRepoSeq||t.atRepoSeq!==void 0&&i.atRepoSeq!==t.atRepoSeq))throw new R("header_invalid",t===void 0?`Repository export header declares format version ${i.formatVersion}; expected one of ${X.join(", ")}`:`Repository export header describes ${i.repo} (${i.mode}, ${i.sinceRepoSeq}..${i.atRepoSeq}); expected ${t.repo} (${t.mode}${t.sinceRepoSeq!==void 0?`, since ${t.sinceRepoSeq}`:""}${t.atRepoSeq!==void 0?`, at ${t.atRepoSeq}`:""})`);return e.adoptHeader(i),i}async function*Jn(n,e){let t=new Uint8Array(0);for await(let r of Xn(n)){let i=new Uint8Array(t.length+r.length);i.set(t),i.set(r,t.length),t=i;let o=t.indexOf(gr);for(;o!==-1;)yield t.subarray(0,o+1),t=t.subarray(o+1),o=t.indexOf(gr);}e.unterminated=t.length>0;}function Xn(n){return Symbol.asyncIterator in n?n:{async*[Symbol.asyncIterator](){let e=n.getReader();try{for(;;){let{done:t,value:r}=await e.read();if(t)return;r&&(yield r);}}finally{e.releaseLock();}}}}function Zn(n){try{let e=JSON.parse(zn.decode(n));if(e!==null&&typeof e=="object"&&"kind"in e){let t=e.kind;if(typeof t=="string")return t}}catch{}return ""}function Xe(n,e){throw e instanceof R?e:new R(n,e instanceof Error?e.message:void 0)}async function*se(n,e,t,r={}){yield*fr(n,e,t,r);}async function yr(n,e={}){let t=K(),r=fr(n,t,void 0,e);for await(let i of r)e.onRow?.(i);return t}async function*fr(n,e,t,r){let i={unterminated:false},o=Jn(n,i);try{yield*ei(o,i,e,t,r);}finally{await o.return(void 0);}}async function*ei(n,e,t,r,i){t.assertResumable();let o=i.resumed===true?Qn(t):await Yn(n,t,r),s=_(o);for(t.beginSegment();;){let a=await n.next();if(a.done){if(i.partial===true)return;throw new R("truncated")}let u=a.value;if(Zn(u)!=="trailer"){let l;try{l=$$1(u);}catch(m){Xe("row_invalid",m);}if(!l.active&&!s)throw new R("row_invalid","Repository export tombstone is not legal in a full export");t.recordRow(l,u),yield l;continue}let d;try{if(d=ba(u),d.atRepoSeq!==o.atRepoSeq)throw new R("fence_mismatch");if(d.recordCount!==t.segmentRowCount)throw new R("count_mismatch");if(d.contentSha256!==t.finalizeSegment())throw new R("digest_mismatch")}catch(l){if(t.markUnverifiable(),l instanceof R)throw l;Xe("trailer_invalid",l);}if(!(await n.next()).done||e.unterminated)throw new R("trailer_invalid","Repository export stream continues past its trailer");t.markComplete();return}}var ti="since-below-epoch-floor",ri=1e3,ni=50,ii=3;function Ze(n,e,t){let r=new URLSearchParams;for(let[o,s]of Object.entries(t))s!==void 0&&r.set(o,String(s));let i=r.toString();return `/api/repos/${encodeURIComponent(n)}/${encodeURIComponent(e)}/export${i?`?${i}`:""}`}function Rr(n){let e=n?.reason;return e instanceof Error?e:new Error("Repository export was aborted")}function oi(n){return n===void 0||!Number.isFinite(n)?ri:Math.max(n,ni)}async function si(n,e){if(e?.aborted)throw Rr(e);await new Promise((t,r)=>{let i=()=>{clearTimeout(o),r(Rr(e));},o=setTimeout(()=>{e?.removeEventListener("abort",i),t();},n);e?.addEventListener("abort",i,{once:true});});}async function ai(n,e){let t;try{t=await n.clone().json();}catch{}return (t?.code??t?.error?.code)===ti?new R("since_below_epoch_floor",t?.message):t?.code!==void 0&&t.error===void 0?await e(new Response(JSON.stringify({error:t}),{status:n.status,headers:{"content-type":"application/json"}})):await e(n)}function pi(n){let e=n;return typeof e?.url=="string"&&e.url!==""&&typeof e.expiresAt=="number"&&typeof e.atRepoSeq=="number"&&typeof e.recordCount=="number"&&typeof e.contentSha256=="string"}async function ci(n){let e;try{e=await n.json();}catch{throw new R("header_invalid","Repository export redemption did not return a JSON download envelope")}if(!pi(e))throw new R("header_invalid","Repository export download envelope must carry url, expiresAt, atRepoSeq, recordCount, and contentSha256");return e}function ui(n,e){let t=n.header?.atRepoSeq;if(t!==e.atRepoSeq)throw new R("fence_mismatch",`Repository export download is pinned to ${t}; the redemption named ${e.atRepoSeq}`);if(n.rowCount!==e.recordCount)throw new R("count_mismatch",`Repository export download carried ${n.rowCount} rows; the redemption named ${e.recordCount}`);if(n.contentSha256!==e.contentSha256)throw new R("digest_mismatch","Repository export download digest does not match the digest the redemption named")}function et(n,e,t=(r,i)=>globalThis.fetch(r,i)){let r=async(a,u)=>{let d=await n(a,{method:"GET",headers:{accept:Y},...u?{signal:u}:{}});if(!d.ok&&d.status!==202)throw await ai(d,e);return d},i=async(a,u,d={})=>{let m=await(await r(Ze(a,u,{mode:d.mode??"heads",sinceRepoSeq:d.sinceRepoSeq,atRepoSeq:d.atRepoSeq,prefer:"async"}),d.signal)).json();if(typeof m.exportToken!="string"||typeof m.atRepoSeq!="number")throw new R("header_invalid","Repository export async request did not return an exportToken and atRepoSeq");return {exportToken:m.exportToken,atRepoSeq:m.atRepoSeq}};return {prepare:i,stream:(a,u,d={})=>{let l=d.session?.lastDurableId??d.afterDurableId;if(l!==void 0&&(d.token!==void 0||d.session?.token!==void 0||d.prefer==="async"))throw new R("header_invalid",`Repository export token download cannot continue from '${l}': redemption returns the whole prepared object. Start a new session and redeem the token again.`);if(d.afterDurableId!==void 0&&d.session?.header===void 0)throw new R("header_invalid","Repository export afterDurableId needs a session carrying the opening header; reuse the session the broken stream wrote, or rebuild one with restoreRepositoryExportSession");return s(a,u,d)}};async function*s(a,u,d){let l=d.session??K(),m=l.header,h=d.signal,g=l.lastDurableId??d.afterDurableId,b={mode:m?.mode??d.mode??"heads",sinceRepoSeq:m?.sinceRepoSeq??d.sinceRepoSeq,atRepoSeq:m?.atRepoSeq??d.atRepoSeq,afterDurableId:g,afterVersion:l.lastDurableId===void 0?void 0:l.lastShapeVersion,formatVersion:g===void 0?void 0:m?.formatVersion},S={repo:`${a}/${u}`,mode:b.mode,...d.sinceRepoSeq===void 0?{}:{sinceRepoSeq:d.sinceRepoSeq},...d.atRepoSeq===void 0?{}:{atRepoSeq:d.atRepoSeq}};if(d.token!==void 0&&l.token!==void 0&&d.token!==l.token)throw new R("header_invalid",`Repository export session was redeeming token ${l.token}; resuming it with token ${d.token} would splice two exports`);let w=d.token??l.token;if(w!==void 0){l.token=w,yield*_(w);return}if(d.prefer==="async"){let E=await i(a,u,{mode:b.mode,...b.sinceRepoSeq===void 0?{}:{sinceRepoSeq:b.sinceRepoSeq},...b.atRepoSeq===void 0?{}:{atRepoSeq:b.atRepoSeq},...h?{signal:h}:{}});l.token=E.exportToken,yield*_(E.exportToken);return}let C=await r(Ze(a,u,b),h);if(!C.body)throw new R("truncated");yield*se(C.body,l,S,{resumed:b.afterDurableId!==void 0});async function*_(E){for(let I=1;;I+=1){let pe=await Y(E);try{yield*Q(pe);return}catch(Ne){if(!(!(Ne instanceof R)||Ne.reason==="truncated")||l.rowCount>0||I>=ii||h?.aborted===true)throw Ne}}}async function*Q(E){let I=await t(E.url,h?{signal:h}:{});if(!I.ok||!I.body)throw await I.body?.cancel(),new R("truncated",`Repository export download returned HTTP ${I.status}`);yield*se(I.body,l,S,{resumed:false}),ui(l,E);}async function Y(E){let I=Ze(a,u,{token:E});for(;;){let pe=await r(I,h);if(pe.status!==202)return await ci(pe);await si(oi(d.pollIntervalMs),h);}}}}var wr="warmhub/streaming-submission-manifest/v1",di=new TextEncoder,rt=z$1.string().regex(/^sha256:[0-9a-f]{64}$/),Cr={type:z$1.literal("result"),chunkOrdinal:z$1.number().int().nonnegative(),opIndex:z$1.number().int().nonnegative(),submissionIndex:z$1.number().int().nonnegative(),name:z$1.string()},li=z$1.enum(z$2),mi=z$1.enum([...z$2,"noop"]),Er=z$1.object({path:z$1.string(),message:z$1.string()}),Or=z$1.object({undeclaredFields:z$1.array(z$1.string()).optional(),undeclaredFieldsTruncated:z$1.literal(true).optional(),totalUndeclared:z$1.number().int().nonnegative().optional(),coalescedWrefs:z$1.array(z$1.object({fieldPath:z$1.string(),wref:z$1.string(),reason:z$1.string()})).optional(),coalescedWrefsTruncated:z$1.literal(true).optional(),totalCoalescedWrefs:z$1.number().int().nonnegative().optional(),deprecations:z$1.array(z$1.object({shape:z$1.string(),message:z$1.string(),removalMilestone:z$1.string()})).optional()}).optional(),vr=z$1.object({added:z$1.array(z$1.string()),removed:z$1.array(z$1.string()),ignored:z$1.array(z$1.string())}),hi=z$1.discriminatedUnion("reason",[z$1.object({reason:z$1.literal("expected_version_mismatch"),expectedVersion:z$1.number().int().positive(),currentVersion:z$1.number().int().positive()}),z$1.object({reason:z$1.literal("lease_held"),leaseExpiresAt:z$1.iso.datetime()}),z$1.object({reason:z$1.literal("validation_failed"),issues:z$1.array(Er)}),z$1.object({reason:z$1.literal("rate_limit_reset"),retryAfterSeconds:z$1.number().int().positive(),resetAt:z$1.iso.datetime()}),z$1.object({reason:z$1.literal("cursor_fence_unavailable"),cause:z$1.enum(["not_ready","below_floor","above_head"]),retryFromStart:z$1.literal(true)})]),gi=z$1.discriminatedUnion("reason",[z$1.object({reason:z$1.literal("expected_version_mismatch"),expectedVersion:z$1.number().int().nonnegative(),currentVersion:z$1.number().int().nonnegative()}).strict(),z$1.object({reason:z$1.literal("lease_held"),leaseExpiresAt:z$1.iso.datetime()}).strict(),z$1.object({reason:z$1.literal("validation_failed"),issues:z$1.array(Er.strict())}).strict(),z$1.object({reason:z$1.literal("rate_limit_reset"),retryAfterSeconds:z$1.number().nonnegative(),resetAt:z$1.iso.datetime()}).strict(),z$1.object({reason:z$1.literal("cursor_fence_unavailable"),cause:z$1.enum(["not_ready","below_floor","above_head"]),retryFromStart:z$1.literal(true)}).strict(),z$1.object({reason:z$1.literal("dependency_failed"),producerOpIndexes:z$1.array(z$1.number().int().nonnegative()).min(1)}).strict(),z$1.object({reason:z$1.literal("name_taken"),name:z$1.string().min(1),takenBy:z$1.object({durableId:z$1.string().min(1)}).loose().optional()}).loose(),z$1.object({reason:z$1.literal("target_removed"),targetDurableId:z$1.string().min(1),fieldPath:z$1.string().optional()}).loose()]),br={...Cr,operation:li,submittedName:z$1.string().optional(),resolvedName:z$1.string().optional(),warnings:Or,affirmations:vr.optional()},yi=z$1.union([z$1.looseObject({...Cr,operation:mi.optional(),version:z$1.number().optional(),dataHash:z$1.string().optional(),status:z$1.enum(["success","noop","failed"]).optional(),error:z$1.object({code:z$1.string(),message:z$1.string(),details:hi.optional()}).optional(),resolvedName:z$1.string().optional(),retryable:z$1.boolean().optional(),warnings:Or,affirmations:vr.optional()}),z$1.looseObject({...br,status:z$1.enum(["applied","noop"]),version:z$1.number().int().positive().optional(),dataHash:z$1.string().min(1).optional()}),z$1.looseObject({...br,status:z$1.literal("error"),errors:z$1.array(z$1.object({code:z$1.string().min(1),message:z$1.string(),path:z$1.string().min(1).optional(),details:gi.optional(),retryable:z$1.boolean().optional()}).strict()).min(1)})]),Ir=z$1.object({applied:z$1.number().int().nonnegative(),noop:z$1.number().int().nonnegative(),failed:z$1.number().int().nonnegative()}),fi=z$1.looseObject({type:z$1.literal("group"),chunkOrdinal:z$1.number().int().nonnegative(),eventRequestId:z$1.uuid(),requestDigest:rt,outcome:z$1.enum(["event","no_event"]),repoSeq:z$1.number().int().nonnegative().optional(),operations:Ir,manifestDigest:rt}),Ri=z$1.looseObject({type:z$1.literal("summary"),submissionId:z$1.uuid(),streamId:z$1.string().min(1),groupSize:z$1.number().int().positive(),groups:z$1.number().int().nonnegative(),operations:Ir.extend({total:z$1.number().int().nonnegative()}),repoSeq:z$1.object({first:z$1.number().int().nonnegative().nullable(),last:z$1.number().int().nonnegative().nullable()}),verdict:z$1.string().min(1),durationMs:z$1.number().nonnegative(),truncatedAt:z$1.object({lineNumber:z$1.number().int().positive(),message:z$1.string()}).optional(),manifest:z$1.object({groups:z$1.number().int().nonnegative(),digest:rt})}),bi=z$1.looseObject({type:z$1.literal("error"),code:z$1.string().min(1),message:z$1.string().optional()}),Si=z$1.union([yi,fi,Ri,bi]),tt=()=>({applied:0,noop:0,failed:0}),Sr=(n,e)=>n.applied===e.applied&&n.noop===e.noop&&n.failed===e.failed,wi=new Set(["complete","operation-limit-reached","group-limit-reached"]),T=class extends Error{constructor(t,r){super(`Streaming submission protocol error at row ${r}: ${t}`);this.rowIndex=r;this.name="StreamingSubmissionProtocolError";}rowIndex};async function xr(n){let e=di.encode(n),t=await globalThis.crypto.subtle.digest("SHA-256",e);return `sha256:${Array.from(new Uint8Array(t),r=>r.toString(16).padStart(2,"0")).join("")}`}async function Ci(n,e,t){return xr(`${wr}\0${n}\0${e}\0${t}`)}function Ei(n){return n.status==="failed"||n.status==="error"?"failed":n.status==="noop"||n.operation==="noop"?"noop":"applied"}var nt=class{index=0;groupCount=0;resultCount=0;pendingCount=0;pendingCounts=tt();totalCounts=tt();firstRepoSeq=null;lastRepoSeq=null;manifestDigest=xr(wr);terminalSeen=false;accept(e){let t=r=>{throw new T(r,this.index)};if(this.terminalSeen&&t("No row may follow the terminal row"),e.type==="result"){e.chunkOrdinal!==this.groupCount&&t(`Expected result chunkOrdinal ${this.groupCount}`),e.opIndex!==this.pendingCount&&t(`Expected result opIndex ${this.pendingCount}`),e.submissionIndex!==this.resultCount&&t(`Expected submissionIndex ${this.resultCount}`);let r=Ei(e);this.pendingCounts[r]+=1,this.totalCounts[r]+=1,this.pendingCount+=1,this.resultCount+=1,this.index+=1;return}if(e.type==="group")return e.chunkOrdinal!==this.groupCount&&t(`Expected group chunkOrdinal ${this.groupCount}`),this.pendingCount===0&&t("A group must close result rows"),Sr(this.pendingCounts,e.operations)||t("Group operation counters do not match its result rows"),this.acceptGroup(e,t);if(this.terminalSeen=true,this.pendingCount>0&&t("Terminal row cannot close a partial group"),e.type==="summary")return this.acceptSummary(e,t);this.index+=1;}async acceptGroup(e,t){this.manifestDigest=this.manifestDigest.then(r=>Ci(r,e.chunkOrdinal,e.requestDigest)),e.manifestDigest!==await this.manifestDigest&&t("Group manifest digest does not match the receipt chain"),e.repoSeq!==void 0&&(this.firstRepoSeq??=e.repoSeq,this.lastRepoSeq=e.repoSeq),this.groupCount+=1,this.pendingCount=0,this.pendingCounts=tt(),this.index+=1;}async acceptSummary(e,t){Sr(this.totalCounts,e.operations)||t("Summary operation counters do not match result rows"),(e.groups!==this.groupCount||e.manifest.groups!==this.groupCount)&&t("Summary group counters do not match group rows"),e.manifest.digest!==await this.manifestDigest&&t("Summary manifest digest does not match the receipt chain"),(e.repoSeq.first!==this.firstRepoSeq||e.repoSeq.last!==this.lastRepoSeq)&&t("Summary repo sequence does not match group rows"),(wi.has(e.verdict)?e.operations.total!==this.resultCount:e.operations.total<this.resultCount)&&t("Summary total is incompatible with its verdict"),e.verdict==="truncated-by-parse-error"!=(e.truncatedAt!==void 0)&&t("truncatedAt must appear only for a parse-truncated verdict"),this.index+=1;}finish(){if(!this.terminalSeen)throw new T("Response must end with a summary or error row",this.index)}};function Oi(n,e){let t;try{t=JSON.parse(n);}catch(i){throw new T(i instanceof Error?i.message:"Invalid JSON",e)}let r=Si.safeParse(t);if(!r.success)throw new T(r.error.issues[0]?.message??"Malformed row",e);return r.data}async function*kr(n,e){let t=n.body?.getReader();if(!t)throw new T("Missing response body",0);let r=new nt,i=new TextDecoder,o="",s=0,a=false,u,d=m=>{if(m.endsWith("\r")&&(m=m.slice(0,-1)),m.length===0)throw new T("Blank response row",s);let h=Oi(m,s);return {pending:r.accept(h),row:h}},l=m=>{if(m.type==="summary"&&e!==void 0&&(m.submissionId!==e.submissionId||m.streamId!==e.streamId||m.groupSize!==e.groupSize))throw new T("Summary identity does not match the submission handle",s);s+=1;};try{for(;;){let{done:m,value:h}=await t.read();if(m)break;for(o+=i.decode(h,{stream:!0});;){let g=o.indexOf(`
|
|
3
|
-
`);if(g===-1)break;let b=o.slice(0,g);o=o.slice(g+1);let{pending:S,row:w}=d(b);S&&await S,l(w),w.type==="summary"||w.type==="error"?u=w:yield w;}}if(o+=i.decode(),o.length>0){let{pending:m,row:h}=d(o);m&&await m,l(h),h.type==="summary"||h.type==="error"?u=h:yield h;}r.finish(),a=!0,u&&(yield u);}finally{if(!a)try{await t.cancel();}catch{}t.releaseLock();}}var D=class extends Error{code="STREAMING_SUBMISSION_OUTCOME_UNKNOWN";outcome="unknown";retryable=false;retryIdentity;cause;constructor(e,t){super(`Streaming submission outcome is unknown for ${e.submissionId}. Reconstruct the original source and copy every retryIdentity field into the next applyStreaming call.`),this.name="StreamingSubmissionOutcomeUnknownError",this.retryIdentity=e,this.cause=t;}};function xe(n){return n===void 0||n===""?void 0:n}function vi(){let n=globalThis;if(n.Bun!==void 0)return true;let e=n.process?.versions?.node;if(!e)return false;let[t=0,r=0]=e.split(".").map(Number);return t>22||t===22&&r>=2}function Ii(n){let e=new URLSearchParams({submissionId:n.submissionId,groupSize:String(n.groupSize)});return n.message!==void 0&&e.set("message",n.message),n.committer!==void 0&&e.set("committer",n.committer),`/api/repos/${encodeURIComponent(n.orgName)}/${encodeURIComponent(n.repoName)}/streams/${encodeURIComponent(n.streamId)}/submissions?${e}`}function xi(n,e,t,r){let i=Oe(n,false,r),o=r==="passThrough"?async m=>m:M(t),s=0,a=false,u=async m=>{try{await m;}catch{}},d=()=>{if(!a){a=true;try{let m=i.returnSourceOnce();m&&u(m);}catch{}}};return {stream:new ReadableStream({async pull(m){try{let h=[],g=s,b=!1;for(;;){let S=await i.next();if(a)return;if(!(!S.done&&(h.push(S.value),s+=1,b||=L(S.value),b&&s%e!==0))){for(let w of await o(h,g))m.enqueue(ze(w));S.done&&m.close();return}}}catch(h){m.error(h),d();}},cancel(){d();}}),returnSourceOnce:d}}function ki(n,e){if(!n)return ()=>{};let t=()=>e.abort(n.reason);return n.aborted?t():n.addEventListener("abort",t,{once:true}),()=>n.removeEventListener("abort",t)}function Ai(n){let e=n.options?.submissionId??H();return {orgName:n.orgName,repoName:n.repoName,streamId:n.options.streamId,submissionId:e,groupSize:ve(n.options.groupSize),...xe(n.message)!==void 0?{message:xe(n.message)}:{},...xe(n.options?.committer)!==void 0?{committer:xe(n.options?.committer)}:{}}}function Tr(n,e){if(!n.options.streamId)throw e.localError("VALIDATION_ERROR","Streaming submissions require a non-empty streamId.");let t=Ai(n),r=new AbortController,i=()=>{},o,s=false,a=async function*(){let u=false,d=false,l;try{let m=B(e.sender??{},n.operations);if(!(e.runtimeSupported??vi)())throw e.localError("VALIDATION_ERROR","Streaming submissions require Bun or Node.js 22.2 or newer.");if(i=ki(n.options.signal,r),r.signal.aborted)throw e.localError("CANCELLED","Streaming submission was aborted.");let h=await e.prepare(Ii(t));if(r.signal.aborted)throw e.localError("CANCELLED","Streaming submission was aborted.");l=xi(n.operations,t.groupSize,e.readThings,m),u=!0;let g=await h.dispatch(l.stream,r.signal);if(!g.ok)throw d=!0,await h.httpError(g);for await(let b of kr(g,t))yield b;}catch(m){throw m instanceof D?m:u&&!d?new D(t,m):e.normalizeLocalError(m)}finally{r.abort(),l?.returnSourceOnce(),i(),s=true;}};return {retryIdentity:t,[Symbol.asyncIterator](){return this},next(){return s?Promise.resolve({done:true,value:void 0}):(o??=a(),o.next())},async return(u){return r.abort(),o?o.return(u):(s=true,i(),{done:true,value:u})},async throw(u){if(r.abort(u),!o)throw s=true,i(),u;return o.throw(u)}}}var Ti="0.0.0-development";function j(n){return n===Ti}var it="0.140.0";var _r=3;function _i(n){return n===v$1?"Run: wh update --yes":n===u?"Run: npm install @warmhub/sdk-ts@latest (or your package manager's equivalent).":n===w?"Run: pip install --upgrade warmhub":`Deploy a released ${n} build that satisfies the backend compatibility contract.`}function Nr(n,e){if(typeof n?.minSupportedClients!="object"||n.minSupportedClients===null||!Number.isSafeInteger(n.writeContractVersion)||n.writeContractVersion<1)return {message:"The backend does not advertise valid per-client write compatibility data.",hint:"Upgrade the WarmHub backend before retrying this write."};let t=n.minSupportedClients[e.name],r=typeof t=="string"?I(t):null;if(!r)return {message:`The backend does not advertise a valid compatibility floor for ${e.name}.`,hint:"Upgrade the WarmHub backend or register this first-party client family before writing."};if(!j(e.version)){let i=I(e.version);if(!i)return {message:`${e.name} reported malformed version "${e.version}".`,hint:"Use a released WarmHub client with a SemVer package version."};if(J(i,r)<0)return {message:`${e.name} ${e.version} is older than the backend's minimum supported version ${r}.`,hint:_i(e.name)}}if(n.writeContractVersion<_r)return {message:`${e.name} requires write contract ${_r}, but the backend provides ${n.writeContractVersion}.`,hint:"Upgrade the WarmHub backend before retrying this write."}}function Pr(n,e){try{return new URL(n).origin===new URL(e).origin}catch{return false}}var Ni=new Set(["GET","POST","PUT","PATCH","DELETE"]),x=class extends Error{reason;constructor(e,t){super(t),this.name="CliCallVerificationError",this.reason=e;}};async function Pi(n,e,t){let r=n.method.toUpperCase();if(!Ni.has(r))throw new x("unsupported-method",`Unsupported HTTP method "${n.method}" \u2014 component CLI dispatch only emits GET, POST, PUT, or PATCH`);let i=r,o=n.headers.get(B$1);if(!o)throw new x("missing-install-repo",`Missing ${B$1} header`);let s=z(e.CLI_SIGNING_SECRET),a=z(e.CLI_BEARER_TOKEN),u=z(e.CLI_API_KEY),d=z(e.CLI_BASIC_USERNAME)&&z(e.CLI_BASIC_PASSWORD);if(!s&&!a&&!u&&!d)throw new x("no-scheme-configured","no-scheme-configured: need at least one of CLI_SIGNING_SECRET, CLI_BEARER_TOKEN, CLI_API_KEY, or CLI_BASIC_USERNAME + CLI_BASIC_PASSWORD");if(a&&d)throw new x("no-scheme-configured","unsupported-scheme-combination: CLI_BEARER_TOKEN and CLI_BASIC_USERNAME + CLI_BASIC_PASSWORD both use the Authorization header and cannot be configured together");let l=new URL(n.url),m=l.pathname,h,g,b;if(E(i)?h={}:(h=Object.fromEntries(l.searchParams.entries()),g="",b={...h}),s){let S=n.headers.get(C);if(!S)throw new x("missing-signature",`Missing ${C} header`);let w=n.headers.get(D$1);if(!w)throw new x("missing-timestamp",`Missing ${D$1} header`);let C$1=Number(w);if(!Number.isFinite(C$1)||!Number.isInteger(C$1))throw new x("invalid-timestamp",`${D$1} must be an integer unix seconds value; got "${w}"`);g=await Dr(n,i,g);let _=await F$1({secret:e.CLI_SIGNING_SECRET,method:i,path:m,query:h,installRepo:o,body:g,signature:S,timestamp:C$1,nowUnixSeconds:t?.nowUnixSeconds??Math.floor(Date.now()/1e3),toleranceSec:t?.toleranceSec});if(!_.ok)throw new x(_.reason,`HMAC verification failed: ${_.reason}`)}if(a){let S=`Bearer ${e.CLI_BEARER_TOKEN}`,w=n.headers.get("authorization")??"";if(!await ot(w,S))throw new x("invalid-bearer","invalid-bearer: bearer token mismatch")}if(u){let S=z(e.CLI_API_KEY_HEADER)?e.CLI_API_KEY_HEADER:"X-API-Key",w=n.headers.get(S)??"";if(!await ot(w,e.CLI_API_KEY))throw new x("invalid-api-key",`invalid-api-key: mismatch on header "${S}"`)}if(d){let S=`Basic ${btoa(`${e.CLI_BASIC_USERNAME}:${e.CLI_BASIC_PASSWORD}`)}`,w=n.headers.get("authorization")??"";if(!await ot(w,S))throw new x("invalid-basic","invalid-basic: basic auth mismatch")}return b===void 0&&(g=await Dr(n,i,g),b=Di(g)),{method:i,installRepo:o,args:b}}async function Dr(n,e,t){return E(e)?t!==void 0?t:n.text():""}function Di(n){let e;try{e=JSON.parse(n);}catch{throw new x("invalid-body","POST body is not valid JSON")}if(!Li(e))throw new x("invalid-body","POST body must be a JSON object of primitive args (string / number / boolean)");return e}function z(n){return typeof n=="string"&&n.length>0}function Li(n){if(typeof n!="object"||n===null||Array.isArray(n))return false;for(let e of Object.values(n))if(e!==void 0&&typeof e!="string"&&typeof e!="number"&&typeof e!="boolean")return false;return true}async function ot(n,e){let[t,r]=await Promise.all([Lr(n),Lr(e)]),i=0;for(let o=0;o<t.length;o++)i|=t[o]^r[o];return i===0}async function Lr(n){return new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n)))}function Aa(n){return h(n)}var Bi={apiUrl:true,fetch:true,accessToken:true,auth:true,functionLogs:true,client:true,clientFlags:true,decorateResponses:true},Qr=Object.keys(Bi),Hi=new Set(Qr),Fi=new Set(["token","apiKey","bearer"]);function Wi(n){if(n)for(let e of Object.keys(n)){if(Hi.has(e))continue;let t=Fi.has(e)?'; did you mean "accessToken"?':`. Valid options are: ${Qr.join(", ")}.`;throw new TypeError(`Unknown WarmHubClient option "${e}"${t}`)}}function $i(n){if(!n||n.length===0)return [];for(let e of n)if(!r(e))throw new TypeError(`Invalid client flag "${e}": expected lowercase tokens matching [a-z0-9-]+.`);return [...new Set(n)].sort()}var Mr="https://api.warmhub.ai",Gi=new Set(["commit.validate","repo.shapeInstanceCounts","thing.getMany","thing.headVersions"]),Ur=500,Vr=500,Br=1,Hr=8;function Te(n){return {...n,actionContainer:void 0,actionContainerConfig:void 0}}function Ki(n){return n.map(e=>Te(e))}function Yr(n,e,t){if(e===n||t.has(e))throw new f("VALIDATION_ERROR","Paginated result cursor did not advance")}function Fr(n){if(n===void 0)throw new f("VALIDATION_ERROR","sinceRepoSeq is required for an incremental read")}async function*Jr(n,e){let t=e,r=new Set;for(;;){t&&r.add(t);let i=await n(t);if(yield i,!i.nextCursor)return;Yr(t,i.nextCursor,r),t=i.nextCursor;}}async function*O(n,e,t){for await(let r of Jr(n,t))yield*e(r);}async function v(n,e,t,r){if(t!==void 0&&(!Number.isFinite(t)||Math.trunc(t)!==t||t<0))throw new f("VALIDATION_ERROR","max must be a nonnegative integer");let i=[];for await(let o of Jr(n,r)){let s=e(o);if(t!==void 0&&i.length+s.length>t)throw new f("VALIDATION_ERROR",`Paginated result exceeded max=${t}`);i.push(...s);}return i}function Wr(n){if(n?.slugs!==void 0)throw new f("VALIDATION_ERROR","repo.explore pagination helpers do not support slugs mode")}async function $r(n){let e=[],t,r=new Set;for(;;){t&&r.add(t);let i=await n(t);if(e.push(...i.items),!i.nextCursor){if(i.repoSeq===void 0)throw new f("VALIDATION_ERROR","Incremental read completed without repoSeq");return {items:e,repoSeq:i.repoSeq}}Yr(t,i.nextCursor,r),t=i.nextCursor;}}function ke(n,e,t){return Number.isFinite(n)?Math.max(1,Math.min(t,Math.trunc(n))):e}function Gr(n,e){let t=[];for(let r=0;r<n.length;r+=e)t.push(n.slice(r,r+e));return t}function Ae(n){return n!==void 0&&A$1.includes(n)?n:void 0}function ae(n){let[e,t,r]=n;return typeof e=="string"?{orgName:e,repoName:t,name:r}:e}function ji(n){let[e,t]=n;return typeof e=="string"?{orgName:e,repoName:t}:e}function zi(n){let[e,t,r,i]=n;return typeof e=="string"?{orgName:e,repoName:t,subscriptionName:r,credentialSetName:i}:e}function Qi(n){let[e,t,r]=n;return typeof e=="string"?{orgName:e,repoName:t,subscriptionName:r}:e}function Yi(n){let{actionContainer:e,actionContainerConfig:t,...r}=n;return r}function Ji(n){let{actionContainer:e,actionContainerConfig:t,...r}=n;return r}function ct(n){return !!n&&(!!n.shape||!!n.kind||!!n.about||!!n.match||!!n.componentRef||n.excludeComponents===true||(n.where?.length??0)>0)}function _e(n){return !!n&&(!!n.shape||!!n.about||!!n.match||!!n.componentRef||(n.where?.length??0)>0)}function Xr(n){let e=n.members;return Array.isArray(e)&&e.length>0}function Xi(n,e){if(ct(e.query)&&!_e(e.query))throw new f("VALIDATION_ERROR","Selector-backed collection sources require shape, about, match, componentRef, or where; kind and excludeComponents only narrow an existing selector.");if(e.sourceRepo&&!_e(e.query))throw new f("VALIDATION_ERROR","sourceRepo requires a selector-backed collection query");if(e.sourceRepo&&Xr(e))throw new f("VALIDATION_ERROR","sourceRepo cannot be combined with explicit members; use canonical wh:org/repo/... member wrefs or omit sourceRepo.");if(ct(e.query)&&n!=="set")throw new f("VALIDATION_ERROR","Selector-backed collection sources are only supported for set collections")}function Ta(n){return n??"off"}function Zi(n){if(n!==void 0)switch(n){case "BAD_REQUEST":case "PARSE_ERROR":case "PAYLOAD_TOO_LARGE":case "UNPROCESSABLE_CONTENT":case "UNSUPPORTED_MEDIA_TYPE":return "VALIDATION_ERROR";case "METHOD_NOT_SUPPORTED":return "NOT_FOUND";case "UNAUTHORIZED":return "UNAUTHENTICATED";case "FORBIDDEN":return "FORBIDDEN";case "NOT_FOUND":return "NOT_FOUND";case "CONFLICT":return "CONFLICT";case "PRECONDITION_FAILED":return "PRECONDITION_FAILED";case "TOO_MANY_REQUESTS":return "RATE_LIMITED";default:return}}function eo(n){if(n===void 0||n===408)return;if(n===405)return "NOT_FOUND";if(n===412)return "PRECONDITION_FAILED";if(n===422)return "VALIDATION_ERROR";let e=tn(n);return e!=="BACKEND"?e:n>=400&&n<500?"VALIDATION_ERROR":e}var to=[/\bselect\b.+?\bfrom\b/i,/\binsert\b.+?\binto\b/i,/\bupdate\b.+?\bset\b/i,/\bdelete\b.+?\bfrom\b/i,/\bparams:\s/i,/\.ts\(\d+,\d+\)/,/at\s+\S+\s+\(.*:\d+:\d+\)/,/node_modules\//,/drizzle/i];function st(n){for(let e of to)if(e.test(n))return "An internal error occurred. Please try again or contact support.";return n}function Kr(n,e){if(typeof e!="string")return;let t=l(n,e);if(t)throw new f("VALIDATION_ERROR",t)}function c(n){if(n instanceof f)return n;if(n instanceof TRPCClientError){if(n.cause instanceof f)return n.cause;let e=n.data,t=e?.warmhub?.code,r=typeof e?.code=="string"?Zi(e.code):void 0,i=eo(e?.httpStatus),o=e?.warmhub?.message??st(n.message);return new f(t??r??i??"BACKEND",o,e?.warmhub?.status??e?.httpStatus,e?.warmhub?.hint,e?.warmhub?.retryAfter??e?.retryAfter,t,e?.warmhub?.details)}if(n instanceof Error){let e=n;if(n.name==="WarmHubError"&&typeof e.code=="string"){let t=new f(e.code,st(n.message),typeof e.status=="number"?e.status:void 0,typeof e.hint=="string"?e.hint:void 0,typeof e.retryAfter=="number"?e.retryAfter:void 0,typeof e.errorCode=="string"?e.errorCode:typeof e.backendCode=="string"?e.backendCode:void 0,e.details);return ut(n)&&Object.defineProperty(t,Zr,{value:true}),t}return n.name==="AbortError"?new f("CANCELLED",n.message):n instanceof TypeError&&/fetch/i.test(n.message)?new f("NETWORK",n.message):new f("BACKEND",st(n.message))}return new f("BACKEND","Unknown SDK error")}var Zr=Symbol.for("@warmhub/sdk-ts:allStreamOperationsFailed");function ut(n){if(n instanceof A)return true;if(!(n instanceof Error))return false;let e=n;return e[Zr]===true||e.name==="WarmHubError"&&Array.isArray(e.receipts)&&Array.isArray(e.operations)}function _a(n){return ut(n)}function ro(n){return n instanceof f}function Na(n){if(n instanceof D||ut(n))return false;let e=c(n);return e.kind==="NETWORK"||e.kind==="CANCELLED"||e.kind==="BACKEND"||e.kind==="RATE_LIMITED"}var no=new Set(["ConnectionRefused","ECONNREFUSED","ENOTFOUND","ETIMEDOUT","EAI_AGAIN"]);function io(n){if(n instanceof TypeError&&/fetch/i.test(n.message))return true;if(n&&typeof n=="object"){let e=n.code;if(typeof e=="string"&&no.has(e))return true}return false}function oo(n){return `Unable to connect to ${n}. Is the computer able to access the url?`}function Pa(n,e){if(j(n))return false;let t=I(n),r=I(e);return !t||!r?false:J(t,r)<0}function en(n,e){return new f("CLIENT_INCOMPATIBLE",n,412,e)}function so(n,e){let t=Nr(n,e);if(t)throw en(t.message,t.hint)}function ao(n,e){if(!(n!=="thing.rename"||typeof e?.eventRequestId=="string"))return new f("VALIDATION_ERROR","thing.rename takes (orgName, repoName, name, newName, { eventRequestId }): name and newName are full Thing names. The v1 order (orgName, repoName, shapeName, oldName, newName, opts) is gone.")}var jr=class n{apiUrl;fetchImpl;accessToken;clientIdentity;#e;decorateResponses;functionLogMode;getToken;compatibilityCheck;overrideNoticePrinted=false;repositoryExport=et((e,t)=>this.fetchWithAuth(`${this.apiUrl.replace(/\/$/,"")}${e}`,t),e=>this.httpResponseError(e),(e,t)=>{let r=this.legacyWrefsRefusal("read");if(r)throw r;return (this.fetchImpl??globalThis.fetch)(e,t)});noteCompatibilityOverride(){this.overrideNoticePrinted||(this.overrideNoticePrinted=true,console.error(`warmhub: compatibility checks overridden by client flag ${p}; the server remains authoritative.`));}assertWriteCompatible(){return this.clientFlags.includes(p)?(this.noteCompatibilityOverride(),Promise.resolve()):j(this.clientIdentity.version)&&Pr(this.apiUrl,Mr)?Promise.reject(en(`Development client ${this.clientIdentity.name}/${this.clientIdentity.version} cannot write to production.`,"Install a released WarmHub client artifact before writing to api.warmhub.ai.")):j(this.clientIdentity.version)&&this.clientIdentity.name!==v$1?Promise.resolve():this.diagnostics.assertCompatible()}legacyWrefsRefusal(e){if(te(this.clientFlags)){if(!V(this))return Fe();if(e==="write")return new f("CLIENT_INCOMPATIBLE",$t)}}pinnedShapeRefusal(e,t){if(e!=="stream.append"||te(this.clientFlags)&&V(this))return;let r=t?.operations;if(!Array.isArray(r))return;let i=r.findIndex(o=>Array.isArray(o?.shapes)&&o.shapes.some(s=>typeof s=="string"&&He(s)));return i<0?void 0:new y(i,Be)}createLegacyWrefsLink(){return ()=>({op:e,next:t})=>{let r=this.legacyWrefsRefusal(e.type!=="mutation"?"read":Kt.has(e.path)||Gt.has(e.path)?"raw-commit":"write")??ao(e.path,e.input)??this.pinnedShapeRefusal(e.path,e.input);return r?observable(i=>{i.error(TRPCClientError.from(r));}):t(e)}}createCompatibilityLink(){return ()=>({op:e,next:t})=>e.type!=="mutation"||e.path==="commit.validate"?t(e):observable(r=>{let i=false,o;return (async()=>{try{await this.assertWriteCompatible();}catch(s){if(i)return;r.error(TRPCClientError.from(s));return}i||(o=t(e).subscribe(r));})(),()=>{i=true,o?.unsubscribe();}})}auth={getClientId:async()=>{try{return await this.trpc.auth.getClientId.query()}catch(e){throw c(e)}},sync:async()=>{try{return await this.trpc.auth.sync.mutate()}catch(e){throw c(e)}},currentUser:async()=>{try{return await this.trpc.auth.currentUser.query()}catch(e){throw c(e)}},whoami:async()=>{try{return await this.trpc.auth.whoami.query()}catch(e){throw c(e)}}};homepage={featuredLists:async()=>{try{return await this.trpc.homepage.featuredLists.query()}catch(e){throw c(e)}}};access={resolve:async e=>{try{return await this.trpc.access.resolve.query(e)}catch(t){throw c(t)}}};diagnostics={ping:async()=>{let e=await this.fetchWithAuth(`${this.apiUrl.replace(/\/$/,"")}/health`);if(!e.ok)throw new f("BACKEND",`Health request failed with status ${e.status}`,e.status);return await e.json()},capabilities:async()=>{try{return await this.trpc.diagnostics.capabilities.query()}catch(e){throw c(e)}},assertCompatible:()=>{if(this.compatibilityCheck)return this.compatibilityCheck;let e=(async()=>{let t=await this.diagnostics.capabilities();so(t,this.clientIdentity);})();return this.compatibilityCheck=e,e.catch(t=>{ro(t)&&t.code==="CLIENT_INCOMPATIBLE"||this.compatibilityCheck===e&&(this.compatibilityCheck=void 0);}),e}};component={list:async(e,t,r)=>{try{return await this.trpc.component.list.query({orgName:e,repoName:t,limit:r?.limit,cursor:r?.cursor})}catch(i){throw c(i)}},listIter:(e,t,r)=>O(i=>this.component.list(e,t,{...r,cursor:i}),i=>i.items,r?.cursor),listAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.component.list(e,t,{...o,cursor:s}),s=>s.items,i,o.cursor)},search:async(e,t)=>{try{return await this.trpc.component.search.query({query:e,limit:t?.limit,cursor:t?.cursor})}catch(r){throw c(r)}},searchIter:(e,t)=>O(r=>this.component.search(e,{...t,cursor:r}),r=>r.items,t?.cursor),searchAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.component.search(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},get:async(e,t,r)=>{try{return await this.trpc.component.get.query({orgName:e,repoName:t,componentRef:r})}catch(i){throw c(i)}},history:async(e,t,r)=>{try{return await this.trpc.component.history.query({orgName:e,repoName:t,componentRef:r?.componentRef,limit:r?.limit})}catch(i){throw c(i)}},install:async(e,t,r,i)=>{try{return await this.trpc.component.install.mutate({orgName:e,repoName:t,componentRef:r,submissionId:i.submissionId})}catch(o){throw c(o)}},uninstall:async(e,t,r,i)=>{try{return await this.trpc.component.uninstall.mutate({orgName:e,repoName:t,componentRef:r,submissionId:i.submissionId})}catch(o){throw c(o)}},registry:{register:async(e,t,r)=>{try{return await this.trpc.component.registry.register.mutate({orgName:e,componentName:t,...r})}catch(i){throw c(i)}},unregister:async(e,t)=>{try{return await this.trpc.component.registry.unregister.mutate({orgName:e,componentName:t})}catch(r){throw c(r)}},list:async e=>{try{return await this.trpc.component.registry.list.query({orgName:e})}catch(t){throw c(t)}},view:async(e,t)=>{try{return await this.trpc.component.registry.view.query({orgName:e,componentName:t})}catch(r){throw c(r)}},update:async(e,t,r)=>{try{return await this.trpc.component.registry.update.mutate({orgName:e,componentName:t,...r})}catch(i){throw c(i)}},resolve:async(e,t,r)=>await this.requestJson(`/api/component-registry/${encodeURIComponent(e)}/${encodeURIComponent(t)}/resolve`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({installRepo:r})}),setupCall:async(e,t,r)=>(await this.assertWriteCompatible(),await this.requestJson(`/api/component-registry/${encodeURIComponent(e)}/${encodeURIComponent(t)}/setup-call`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(r)}))},cli:{call:async(e,t,r,i)=>(await this.assertWriteCompatible(),await this.requestJson(`/api/component-registry/${encodeURIComponent(e)}/${encodeURIComponent(t)}/cli/${encodeURIComponent(r)}`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i)}))}};ops(e){return new G(e)}commit={validate:async(e,t,r,i)=>{try{return await or(this.trpc.commit.validate,this.thingShapesReader(e,t),e,t,r,i,this)}catch(o){throw c(o)}},apply:async(e,t,r,i,o)=>{try{return await W(this,{orgName:e,repoName:t,committer:o?.committer,message:r,componentRef:o?.componentRef,chunkSize:o?.chunkSize,skipExisting:o?.skipExisting,streamId:o?.streamId,submissionId:o?.submissionId,returnRepoSeq:o?.returnRepoSeq,retry:o?.retry,operations:i})}catch(s){throw s instanceof k||s instanceof A?s:c(s)}},applyStreaming:(e,t,r,i,o)=>Tr({orgName:e,repoName:t,message:r,operations:i,options:o},{prepare:async s=>await this.prepareStreamingSubmissionRequest(s),localError:(s,a)=>new f(s,a),normalizeLocalError:c,readThings:this.thingShapesReader(e,t),sender:this}),getReceipt:async(e,t,r)=>{try{return await this.trpc.commit.getReceipt.query({orgName:e,repoName:t,eventRequestId:r})}catch(i){throw c(i)}}};org={get:async e=>{try{return await this.trpc.org.get.query({orgName:e})}catch(t){throw c(t)}},getCallerRole:async e=>{try{return await this.trpc.org.getCallerRole.query({orgName:e})}catch(t){throw c(t)}},list:async e=>{try{return {items:await this.trpc.org.list.query({includeArchived:e?.includeArchived})}}catch(t){throw c(t)}},create:async(e,t,r)=>{try{return await this.trpc.org.create.mutate({name:e,displayName:t,description:r})}catch(i){throw c(i)}},setDescription:async(e,t)=>{try{return await this.trpc.org.setDescription.mutate({orgName:e,description:t})}catch(r){throw c(r)}},setDisplayName:async(e,t)=>{try{return await this.trpc.org.setDisplayName.mutate({orgName:e,displayName:t})}catch(r){throw c(r)}},rename:async(e,t)=>{try{return await this.trpc.org.rename.mutate({orgName:e,newName:t})}catch(r){throw c(r)}},update:async e=>{try{return await this.trpc.org.update.mutate(e)}catch(t){throw c(t)}},addMember:async(e,t,r="editor")=>{try{return await this.trpc.org.addMember.mutate({orgName:e,email:t,role:r})}catch(i){throw c(i)}},removeMember:async(e,t)=>{try{await this.trpc.org.removeMember.mutate({orgName:e,email:t});}catch(r){throw c(r)}},leave:async e=>{try{await this.trpc.org.leave.mutate({orgName:e});}catch(t){throw c(t)}},changeMemberRole:async(e,t,r)=>{try{return await this.trpc.org.changeMemberRole.mutate({orgName:e,email:t,role:r})}catch(i){throw c(i)}},setMemberScopes:async(e,t,r)=>{try{await this.trpc.org.setMemberScopes.mutate({orgName:e,email:t,scopes:r});}catch(i){throw c(i)}},clearMemberScopes:async(e,t)=>{try{await this.trpc.org.clearMemberScopes.mutate({orgName:e,email:t});}catch(r){throw c(r)}},listMembers:async(e,t)=>{try{return await this.trpc.org.listMembers.query({orgName:e,pending:t?.pending})}catch(r){throw c(r)}},archive:async e=>{try{return await this.trpc.org.archive.mutate({orgName:e})}catch(t){throw c(t)}},unarchive:async e=>{try{return await this.trpc.org.unarchive.mutate({orgName:e})}catch(t){throw c(t)}}};repo={checkpoint:mr(()=>this.trpc,c),export:(e,t,r)=>this.repositoryExport.stream(e,t,r),exportPrepare:(e,t,r)=>this.repositoryExport.prepare(e,t,r),get:async(e,t)=>{try{return await this.trpc.repo.get.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getStats:async(e,t)=>{try{return await this.trpc.repo.stats.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getStatsBatch:async(e,t)=>{try{return await this.trpc.repo.statsBatch.query({orgName:e,repoNames:t})}catch(r){throw c(r)}},getConfigureStats:async(e,t)=>{try{return await this.trpc.repo.configureStats.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getShapeInstanceCounts:async(e,t)=>{try{return await this.trpc.repo.shapeInstanceCounts.query({orgName:e,repoName:t})}catch(r){throw c(r)}},list:async(e,t)=>{try{return await this.trpc.repo.list.query({orgName:e,limit:t?.limit,cursor:t?.cursor,includeArchived:t?.includeArchived,search:t?.search,sort:t?.sort})}catch(r){throw c(r)}},listIter:(e,t)=>O(r=>this.repo.list(e,{...t,cursor:r}),r=>r.items,t?.cursor),listAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.repo.list(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},search:async(e,t)=>{try{return await this.trpc.repo.search.query({query:e,limit:t?.limit,cursor:t?.cursor})}catch(r){throw c(r)}},searchIter:(e,t)=>O(r=>this.repo.search(e,{...t,cursor:r}),r=>r.items,t?.cursor),searchAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.repo.search(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},create:async(e,t,r,i,o)=>{try{return await this.trpc.repo.create.mutate({orgName:e,repoName:t,description:r,visibility:i,displayName:o})}catch(s){throw c(s)}},setDescription:async(e,t,r)=>{try{return await this.trpc.repo.setDescription.mutate({orgName:e,repoName:t,description:r})}catch(i){throw c(i)}},setDisplayName:async(e,t,r)=>{try{return await this.trpc.repo.setDisplayName.mutate({orgName:e,repoName:t,displayName:r})}catch(i){throw c(i)}},setVisibility:async(e,t,r)=>{try{return await this.trpc.repo.setVisibility.mutate({orgName:e,repoName:t,visibility:r})}catch(i){throw c(i)}},rename:async(e,t,r)=>{try{return await this.trpc.repo.rename.mutate({orgName:e,repoName:t,newName:r})}catch(i){throw c(i)}},update:async e=>{try{return await this.trpc.repo.update.mutate(e)}catch(t){throw c(t)}},archive:async(e,t)=>{try{return await this.trpc.repo.archive.mutate({orgName:e,repoName:t})}catch(r){throw c(r)}},unarchive:async(e,t)=>{try{return await this.trpc.repo.unarchive.mutate({orgName:e,repoName:t})}catch(r){throw c(r)}},delete:async(e,t)=>{try{let r=await this.trpc.repo.delete.mutate({orgName:e,repoName:t});return {graceExpiresAt:new Date(r.graceExpiresAt)}}catch(r){throw c(r)}},listPage:async(e,t)=>{try{return await this.trpc.repo.listPage.query({orgName:e,limit:t?.limit,cursor:t?.cursor,includeArchived:t?.includeArchived,search:t?.search,sort:t?.sort})}catch(r){throw c(r)}},listPageIter:(e,t)=>O(r=>this.repo.listPage(e,{...t,cursor:r}),r=>r.items,t?.cursor),listPageAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.repo.listPage(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},listForCaller:async e=>{try{return await this.trpc.repo.listForCaller.query({limit:e?.limit,sort:e?.sort})}catch(t){throw c(t)}},explore:async e=>{try{return await this.trpc.repo.explore.query({search:e?.search,org:e?.org,activity:e?.activity,hasSubscriptions:e?.hasSubscriptions,minThings:e?.minThings,sort:e?.sort,limit:e?.limit,cursor:e?.cursor,slugs:e?.slugs})}catch(t){throw c(t)}},exploreIter:e=>(Wr(e),O(t=>this.repo.explore({...e,cursor:t}),t=>t.items,e?.cursor)),exploreAll:async e=>{Wr(e);let{max:t,...r}=e??{};return await v(i=>this.repo.explore({...r,cursor:i}),i=>i.items,t,r.cursor)},getReadme:async(e,t)=>{try{return await this.trpc.repo.getReadme.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getAgents:async(e,t)=>{try{return await this.trpc.repo.getAgents.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getLicense:async(e,t)=>{try{return await this.trpc.repo.getLicense.query({orgName:e,repoName:t})}catch(r){throw c(r)}},describe:async(e,t,r={})=>{try{return await this.trpc.repo.describe.query({orgName:e,repoName:t,includeHead:r.includeHead})}catch(i){throw c(i)}},setReadme:async(e,t,r,i)=>{try{return Kr("Readme.content",r),await this.trpc.repo.setReadme.mutate({orgName:e,repoName:t,eventRequestId:i.eventRequestId,content:r})}catch(o){throw c(o)}},setAgents:async(e,t,r,i)=>{try{return Kr("Agents.content",r),await this.trpc.repo.setAgents.mutate({orgName:e,repoName:t,eventRequestId:i.eventRequestId,content:r})}catch(o){throw c(o)}},getLlmsTxt:async(e,t)=>{try{return await this.trpc.repo.getLlmsTxt.query({orgName:e,repoName:t})}catch(r){throw c(r)}},index:{describe:async(e,t)=>{try{return await this.trpc.repo.index.describe.query({orgName:e,repoName:t})}catch(r){throw c(r)}},pin:async(e,t,r,i)=>{try{return await this.trpc.repo.index.pin.mutate({orgName:e,repoName:t,shape:r,fieldPath:i})}catch(o){throw c(o)}},unpin:async(e,t,r,i)=>{try{return await this.trpc.repo.index.unpin.mutate({orgName:e,repoName:t,shape:r,fieldPath:i})}catch(o){throw c(o)}}}};shape={list:async(e,t,r)=>{try{return await this.trpc.shape.list.query({orgName:e,repoName:t,match:r?.match,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,includeRetracted:r?.includeRetracted})}catch(i){throw c(i)}},get:async(e,t,r,i)=>{try{return await this.trpc.shape.get.query({orgName:e,repoName:t,shapeName:r,includeRetracted:i?.includeRetracted})}catch(o){throw c(o)}},create:async(e,t,r,i,o)=>{let s=ie(r,{fields:i,...o.description!==void 0?{description:o.description}:{},...o.composes!==void 0?{composes:o.composes}:{}},"add");if(s)throw new f("VALIDATION_ERROR",s);try{return await this.trpc.shape.create.mutate({orgName:e,repoName:t,shapeName:r,fields:i,eventRequestId:o.eventRequestId,description:o.description,composes:o.composes})}catch(a){throw c(a)}},revise:async(...e)=>{let[t,r,i]=e,o=e.length===5?e[3]:void 0,s=e.length===5?e[4]:e[3],a=o?ie(i,{fields:o,...s.description!==void 0?{description:s.description}:{},...s.composes!==void 0?{composes:s.composes}:{}},"revise"):void 0;if(a)throw new f("VALIDATION_ERROR",a);try{return await this.trpc.shape.revise.mutate({orgName:t,repoName:r,shapeName:i,newFields:o,eventRequestId:s.eventRequestId,description:s.description,composes:s.composes})}catch(u){throw c(u)}},remove:async(e,t,r,i)=>{try{return await this.trpc.shape.remove.mutate({orgName:e,repoName:t,shapeName:r,eventRequestId:i.eventRequestId})}catch(o){throw c(o)}},rename:async(e,t,r,i,o)=>{try{return await this.trpc.shape.rename.mutate({orgName:e,repoName:t,oldName:r,newName:i,eventRequestId:o.eventRequestId})}catch(s){throw c(s)}},history:async(e,t,r,i={})=>{try{return await this.trpc.shape.history.query({orgName:e,repoName:t,name:r,includeRetracted:i.includeRetracted,limit:i.limit,cursor:i.cursor})}catch(o){throw c(o)}},historyIter:(e,t,r,i={})=>O(o=>this.shape.history(e,t,r,{...i,cursor:o}),o=>o.versions,i.cursor),historyAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.shape.history(e,t,r,{...s,cursor:a}),a=>a.versions,o,s.cursor)}};subscription={create:async e=>{try{let t=await this.trpc.subscription.create.mutate(Yi(e));return Te(t)}catch(t){throw c(t)}},get:async(...e)=>{try{let t=await this.trpc.subscription.get.query(ae(e));return Te(t)}catch(t){throw c(t)}},reveal:async(...e)=>{try{return await this.trpc.subscription.reveal.query(ae(e))}catch(t){throw c(t)}},list:async(...e)=>{try{let t=await this.trpc.subscription.list.query(ji(e));return Ki(t)}catch(t){throw c(t)}},update:async e=>{try{let t=await this.trpc.subscription.update.mutate(Ji(e));return Te(t)}catch(t){throw c(t)}},pause:async(...e)=>{try{return await this.trpc.subscription.pause.mutate(ae(e))}catch(t){throw c(t)}},resume:async(...e)=>{try{return await this.trpc.subscription.resume.mutate(ae(e))}catch(t){throw c(t)}},remove:async(...e)=>{try{return await this.trpc.subscription.remove.mutate(ae(e))}catch(t){throw c(t)}},bindCredentials:async(...e)=>{try{return await this.trpc.subscription.bindCredentials.mutate(zi(e))}catch(t){throw c(t)}},unbindCredentials:async(...e)=>{try{return await this.trpc.subscription.unbindCredentials.mutate(Qi(e))}catch(t){throw c(t)}}};action={acquireLease:async(e,t,r,i,o,s)=>{try{return await this.trpc.action.acquireLease.mutate({orgName:e,repoName:t,subscriptionName:r,holderId:i,holderType:o,graceMs:s?.graceMs,ttlMs:s?.ttlMs})}catch(a){throw c(a)}},heartbeatLease:async(e,t,r,i,o)=>{try{return await this.trpc.action.heartbeatLease.mutate({orgName:e,repoName:t,subscriptionName:r,holderId:i,ttlMs:o})}catch(s){throw c(s)}},releaseLease:async(e,t,r,i)=>{try{return await this.trpc.action.releaseLease.mutate({orgName:e,repoName:t,subscriptionName:r,holderId:i})}catch(o){throw c(o)}},claimDelivery:async(e,t,r,i)=>{let o=typeof r=="string"?{runId:r}:r;try{return await this.trpc.action.claimDelivery.mutate({orgName:e,repoName:t,...o,holderId:i})}catch(s){throw c(s)}},completeDelivery:async(e,t,r,i)=>{let o=typeof r=="string"?{runId:r}:r;try{return await this.trpc.action.completeDelivery.mutate({orgName:e,repoName:t,...o,holderId:i})}catch(s){throw c(s)}},liveFeed:async(e,t,r,i)=>{try{return await this.trpc.action.liveFeed.query({orgName:e,repoName:t,subscriptionName:r,limit:i?.limit,cursor:i?.cursor})}catch(o){throw c(o)}},liveFeedIter:(e,t,r,i)=>O(o=>this.action.liveFeed(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),liveFeedAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.action.liveFeed(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)},listRuns:async(e,t,r)=>{try{return await this.trpc.action.listRuns.query({orgName:e,repoName:t,runId:r?.runId,subscriptionName:r?.subscriptionName,status:r?.status,outcome:r?.outcome,since:r?.since,cursor:r?.cursor,limit:r?.limit})}catch(i){throw c(i)}},listRunsIter:(e,t,r)=>O(i=>this.action.listRuns(e,t,{...r,since:i===void 0?r?.since:void 0,cursor:i}),i=>i.items,r?.cursor),listRunsAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.action.listRuns(e,t,{...o,since:s===void 0?o.since:void 0,cursor:s}),s=>s.items,i,o.cursor)},latestRuns:async(e,t)=>{try{return await this.trpc.action.latestRuns.query({orgName:e,repoName:t})}catch(r){throw c(r)}},runStats:async(e,t,r)=>{try{return await this.trpc.action.runStats.query({orgName:e,repoName:t,subscriptionName:r?.subscriptionName,since:r?.since})}catch(i){throw c(i)}},getRunAttempts:async(e,t,r)=>{try{return await this.trpc.action.getRunAttempts.query({orgName:e,repoName:t,runId:r})}catch(i){throw c(i)}},listNotifications:async(e,t,r)=>{try{return await this.trpc.action.listNotifications.query({orgName:e,repoName:t,since:r?.since,limit:r?.limit})}catch(i){throw c(i)}}};collection={create:async(e,t,r)=>{try{return Xi(r.type,r),await this.trpc.collection.create.mutate({orgName:e,repoName:t,eventRequestId:r.eventRequestId,type:r.type,name:r.name,members:r.members,from:r.from,add:r.add,remove:r.remove,replaceMembers:r.replaceMembers,query:r.query,sourceOrgName:r.sourceRepo?.orgName,sourceRepoName:r.sourceRepo?.repoName,skipExisting:r.skipExisting,message:r.message,committer:r.committer})}catch(i){throw c(i)}},members:async(e,t,r,i)=>{try{return await this.trpc.collection.members.query({orgName:e,repoName:t,wref:r,version:i?.version,limit:i?.limit,cursor:i?.cursor,shape:i?.shape})}catch(o){throw c(o)}},membersIter:(e,t,r,i)=>{let o=i?.version;return O(async s=>{let a=await this.collection.members(e,t,r,{...i,version:o,cursor:s});return o??=a.version,a},s=>s.items,i?.cursor)},membersAll:async(e,t,r,i)=>{let{max:o,...s}=i??{},a=s.version;return await v(async u=>{let d=await this.collection.members(e,t,r,{...s,version:a,cursor:u});return a??=d.version,d},u=>u.items,o,s.cursor)},contains:async(e,t,r,i,o)=>{try{return await this.trpc.collection.contains.query({orgName:e,repoName:t,wref:r,version:o?.version,members:i,position:o?.position,shape:o?.shape})}catch(s){throw c(s)}},diff:async(e,t,r,i,o)=>{try{return await this.trpc.collection.diff.query({orgName:e,repoName:t,leftWref:r,rightWref:i,leftVersion:o?.leftVersion,rightVersion:o?.rightVersion,mode:o?.mode,shape:o?.shape})}catch(s){throw c(s)}},revise:async(e,t,r,i)=>{try{if(ct(i.query)&&!_e(i.query))throw new f("VALIDATION_ERROR","Selector-backed collection sources require shape, about, match, componentRef, or where; kind and excludeComponents only narrow an existing selector.");if(i.sourceRepo&&!_e(i.query))throw new f("VALIDATION_ERROR","sourceRepo requires a selector-backed collection query");if(i.sourceRepo&&Xr(i))throw new f("VALIDATION_ERROR","sourceRepo cannot be combined with explicit members; use canonical wh:org/repo/... member wrefs or omit sourceRepo.");return await this.trpc.collection.revise.mutate({orgName:e,repoName:t,eventRequestId:i.eventRequestId,wref:r,members:i.members,add:i.add,remove:i.remove,query:i.query,sourceOrgName:i.sourceRepo?.orgName,sourceRepoName:i.sourceRepo?.repoName,message:i.message,committer:i.committer})}catch(o){throw c(o)}},stats:async(e,t,r,i)=>{try{return await this.trpc.collection.stats.query({orgName:e,repoName:t,wref:r,version:i?.version,shape:i?.shape})}catch(o){throw c(o)}}};view={evaluate:async(e,t,r,i)=>{try{return await this.trpc.view.evaluate.query({orgName:e,repoName:t,wref:r,limit:i?.limit,cursor:i?.cursor})}catch(o){throw c(o)}},evaluateIter:(e,t,r,i)=>O(o=>this.view.evaluate(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),evaluateAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.view.evaluate(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)}};grant=ur(()=>this.trpc,c);thing={head:async(e,t,r)=>{try{return await this.trpc.thing.head.query({orgName:e,repoName:t,shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,includeValidatedShapes:r?.includeValidatedShapes,kind:Ae(r?.kind),match:r?.match,dataMode:r?.dataMode,includeRetracted:r?.includeRetracted,limit:r?.limit,cursor:r?.cursor,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,excludeInfraShapes:r?.excludeInfraShapes,where:r?.where,sinceRepoSeq:r?.sinceRepoSeq})}catch(i){throw c(i)}},headIter:(e,t,r)=>O(i=>this.thing.head(e,t,{...r,cursor:i}),i=>i.items,r?.cursor),headAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.thing.head(e,t,{...o,cursor:s}),s=>s.items,i,o.cursor)},headChanges:async(e,t,r)=>(Fr(r?.sinceRepoSeq),await $r(i=>this.thing.head(e,t,{...r,includeRetracted:true,cursor:i}))),get:async(e,t,r,i,o)=>{try{return await this.trpc.thing.get.query({orgName:e,repoName:t,wref:r,version:i,includeRetracted:o?.includeRetracted,dataMode:o?.dataMode})}catch(s){throw c(s)}},getWithLease:async(e,t,r,i)=>{try{return await this.trpc.thing.getWithLease.mutate({orgName:e,repoName:t,wref:r,ttlMs:i?.ttlMs})}catch(o){throw c(o)}},releaseLease:async(e,t,r,i)=>{try{await this.trpc.thing.releaseLease.mutate({orgName:e,repoName:t,wref:r,leaseId:i});}catch(o){throw c(o)}},graph:async(e,t,r,i)=>{try{return await this.trpc.thing.graph.query({orgName:e,repoName:t,wref:r,version:i?.version,depth:i?.depth,limit:i?.limit})}catch(o){throw c(o)}},getMany:async(e,t,r,i,o)=>{try{if(r.length===0)return {requested:0,items:[],missing:[]};let s=ke(o?.chunkSize,Ur,Vr),a=ke(o?.chunkConcurrency,Br,Hr),u=async m=>await this.trpc.thing.getMany.query({orgName:e,repoName:t,wrefs:m,version:i,includeRetracted:o?.includeRetracted,dataMode:o?.dataMode});if(r.length<=s)return await u(r);let d=Gr(r,s),l=[];for(let m=0;m<d.length;m+=a){let h=d.slice(m,m+a),g=await Promise.all(h.map(u));l.push(...g);}return {requested:r.length,items:l.flatMap(m=>m.items),missing:l.flatMap(m=>m.missing)}}catch(s){throw c(s)}},headVersions:async(e,t,r,i)=>{try{if(r.length===0)return {requested:0,items:[],missing:[]};let o=ke(i?.chunkSize,Ur,Vr),s=ke(i?.chunkConcurrency,Br,Hr),a=async l=>await this.trpc.thing.headVersions.query({orgName:e,repoName:t,wrefs:l});if(r.length<=o)return await a(r);let u=Gr(r,o),d=[];for(let l=0;l<u.length;l+=s){let m=u.slice(l,l+s),h=await Promise.all(m.map(a));d.push(...h);}return {requested:r.length,items:d.flatMap(l=>l.items),missing:d.flatMap(l=>l.missing)}}catch(o){throw c(o)}},history:async(e,t,r)=>{try{return await this.trpc.thing.history.query({orgName:e,repoName:t,wref:r.wref,shape:r.shape,declaredShape:r.declaredShape,about:r.about,includeRetracted:r.includeRetracted,resolveCollections:r.resolveCollections,match:r.match,limit:r.limit,cursor:r.cursor})}catch(i){throw c(i)}},historyIter:(e,t,r)=>O(i=>this.thing.history(e,t,{...r,cursor:i}),i=>i.versions,r.cursor),historyAll:async(e,t,r)=>{let{max:i,...o}=r;return await v(s=>this.thing.history(e,t,{...o,cursor:s}),s=>s.versions,i,o.cursor)},rename:async(e,t,r,i,o)=>{try{return await this.trpc.thing.rename.mutate({orgName:e,repoName:t,name:r,newName:i,eventRequestId:o.eventRequestId})}catch(s){throw c(s)}},remove:async(e,t,r,i)=>{try{return await this.trpc.thing.remove.mutate({orgName:e,repoName:t,wref:r,expectedVersion:i.expectedVersion,eventRequestId:i.eventRequestId})}catch(o){throw c(o)}},rewrite:async(e,t,r,i)=>{try{return await this.trpc.thing.rewrite.mutate({orgName:e,repoName:t,wref:r,version:i.version,shapes:i.shapes,data:i.data,eventRequestId:i.eventRequestId})}catch(o){throw c(o)}},resolve:async(e,t,r)=>{try{return await this.trpc.thing.resolve.query({orgName:e,repoName:t,wref:r})}catch(i){throw c(i)}},about:async(e,t,r,i)=>{try{return await this.trpc.thing.about.query({orgName:e,repoName:t,wref:r,shape:i?.shape,match:i?.match,includeRetracted:i?.includeRetracted,depth:i?.depth,resolveCollections:i?.resolveCollections,role:i?.role,limit:i?.limit,cursor:i?.cursor,where:i?.where})}catch(o){throw c(o)}},aboutIter:(e,t,r,i)=>O(o=>this.thing.about(e,t,r,{...i,cursor:o}),o=>o.assertions,i?.cursor),aboutAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.thing.about(e,t,r,{...s,cursor:a}),a=>a.assertions,o,s.cursor)},query:async(e,t,r)=>{try{return await this.trpc.thing.query.query({orgName:e,repoName:t,shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,includeValidatedShapes:r?.includeValidatedShapes,about:r?.about,affirmedAbout:r?.affirmedAbout,kind:Ae(r?.kind),match:r?.match,includeRetracted:r?.includeRetracted,resolveCollections:r?.resolveCollections,role:r?.role,limit:r?.limit,cursor:r?.cursor,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,excludeInfraShapes:r?.excludeInfraShapes,where:r?.where,sinceRepoSeq:r?.sinceRepoSeq})}catch(i){throw c(i)}},queryIter:(e,t,r)=>O(i=>this.thing.query(e,t,{...r,cursor:i}),i=>i.items,r?.cursor),queryAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.thing.query(e,t,{...o,cursor:s}),s=>s.items,i,o.cursor)},queryChanges:async(e,t,r)=>(Fr(r?.sinceRepoSeq),await $r(i=>this.thing.query(e,t,{...r,includeRetracted:true,cursor:i}))),search:async(e,t,r,i)=>{try{return await this.trpc.thing.search.query({orgName:e,repoName:t,query:r,shape:i?.shape,about:i?.about,affirmedAbout:i?.affirmedAbout,kind:Ae(i?.kind),match:i?.match,includeRetracted:i?.includeRetracted,resolveCollections:i?.resolveCollections,limit:i?.limit,cursor:i?.cursor,componentRef:i?.componentRef,excludeComponents:i?.excludeComponents,excludeInfraShapes:i?.excludeInfraShapes,mode:i?.mode,nameMatch:i?.nameMatch})}catch(o){throw c(o)}},searchIter:(e,t,r,i)=>O(o=>this.thing.search(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),searchAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.thing.search(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)},count:async(e,t,r)=>{try{return await this.trpc.thing.count.query({orgName:e,repoName:t,shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,about:r?.about,affirmedAbout:r?.affirmedAbout,kind:Ae(r?.kind),match:r?.match,includeRetracted:r?.includeRetracted,resolveCollections:r?.resolveCollections,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,excludeInfraShapes:r?.excludeInfraShapes,where:r?.where,sinceRepoSeq:r?.sinceRepoSeq})}catch(i){throw c(i)}},refs:async(e,t,r,i)=>{try{return await this.trpc.thing.refs.query({orgName:e,repoName:t,wref:r,direction:i?.direction,fieldPath:i?.fieldPath,binding:i?.binding,limit:i?.limit,cursor:i?.cursor})}catch(o){throw c(o)}},refsIter:(e,t,r,i)=>O(o=>this.thing.refs(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),refsAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.thing.refs(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)}};live={thingHead:async(e,t,r,i)=>this.watchRepoQuery(e,t,r?.signal,()=>this.thing.head(e,t,{shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,includeValidatedShapes:r?.includeValidatedShapes,kind:r?.kind,match:r?.match,dataMode:r?.dataMode,limit:r?.limit,cursor:r?.cursor,includeRetracted:r?.includeRetracted,where:r?.where}),i),thingHistory:async(e,t,r,i)=>this.watchRepoQuery(e,t,r.signal,()=>this.thing.history(e,t,{wref:r.wref,shape:r.shape,declaredShape:r.declaredShape,about:r.about,resolveCollections:r.resolveCollections,match:r.match,limit:r.limit,cursor:r.cursor,includeRetracted:r.includeRetracted}),i),subscriptionLog:async(e,t,r,i,o)=>this.watchRepoQuery(e,t,i?.signal,()=>this.action.liveFeed(e,t,r,{limit:i?.limit,cursor:i?.cursor}),o),subscribe:async(e,t,r,i)=>{let o=new AbortController,s=zr(r?.signal,o),a=0,u=(async()=>{let d=await this.trpc.live.issueTicket.mutate({orgName:e,repoName:t}),l=await this.openSse(d.ticket,s,async m=>{if(m.type!=="invalidate")return;let h=m.data;a++,await i({topic:h.topic,affectedShapes:h.affectedShapes,affectedThings:h.affectedThings,affectedTargets:h.affectedTargets,hasNewCommit:h.hasNewCommit});});return await l.ready,s.aborted?{updates:a}:(await l.closed,{updates:a})})();return {close(){o.abort();},closed:u}}};token={create:async e=>{try{return await this.trpc.token.create.mutate(e)}catch(t){throw c(t)}},list:async e=>{try{return await this.trpc.token.list.query(e?.includeInactive?{includeInactive:!0}:void 0)}catch(t){throw c(t)}},get:async e=>{try{return await this.trpc.token.get.query({name:e})}catch(t){throw c(t)}},revoke:async e=>{try{return await this.trpc.token.revoke.mutate({name:e})}catch(t){throw c(t)}}};stream={append:async e=>{try{return await this.trpc.stream.append.mutate(e)}catch(t){throw c(t)}}};credential={createSet:async(e,t,r,i)=>{try{return await this.trpc.credential.createSet.mutate({orgName:e,repoName:t,name:r,scope:i?.scope??"repo",description:i?.description})}catch(o){throw c(o)}},listSets:async(e,t)=>{try{return await this.trpc.credential.listSets.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getSet:async(e,t,r)=>{try{return await this.trpc.credential.getSet.query({orgName:e,repoName:t,name:r})}catch(i){throw c(i)}},setKey:async(e,t,r,i,o)=>{try{return await this.trpc.credential.setKey.mutate({orgName:e,repoName:t,setName:r,keyName:i,value:o})}catch(s){throw c(s)}},setKeys:async(e,t,r,i)=>{try{return await this.trpc.credential.setKeys.mutate({orgName:e,repoName:t,setName:r,secrets:i})}catch(o){throw c(o)}},unsetKey:async(e,t,r,i)=>{try{return await this.trpc.credential.unsetKey.mutate({orgName:e,repoName:t,setName:r,keyName:i})}catch(o){throw c(o)}},deleteSet:async(e,t,r)=>{try{return await this.trpc.credential.deleteSet.mutate({orgName:e,repoName:t,setName:r})}catch(i){throw c(i)}},listAuditLog:async(e,t,r,i)=>{try{return await this.trpc.credential.listAuditLog.query({orgName:e,repoName:t,setName:r,limit:i?.limit})}catch(o){throw c(o)}},revokeSet:async(e,t,r,i)=>{try{return await this.trpc.credential.revokeSet.mutate({orgName:e,repoName:t,setName:r,reason:i?.reason})}catch(o){throw c(o)}}};credentials=this.credential;constructor(e,t){let r=typeof e=="string"?t:e;Wi(r);let i=typeof e=="string"?e:e?.apiUrl??Mr;if(this.apiUrl=i,this.fetchImpl=r?.fetch,this.accessToken=r?.accessToken??r?.auth?.getToken,this.functionLogMode=r?.functionLogs??"off",this.clientIdentity={name:r?.client?.name??u,version:r?.client?.version??it},this.#e=Object.freeze([...$i(r?.clientFlags)]),this.decorateResponses=r?.decorateResponses??false,typeof this.accessToken=="function"){let a=this.accessToken;this.getToken=async()=>await a();}else if(this.accessToken){let a=this.accessToken;this.getToken=async()=>a;}let o=`${i.replace(/\/$/,"")}/trpc`,s=((a,u)=>this.fetchWithAuth(a,u,"trpc"));Object.defineProperty(this,"trpc",{value:createTRPCProxyClient({links:[this.createLegacyWrefsLink(),this.createCompatibilityLink(),cr({enabled:this.decorateResponses,getClient:()=>this}),splitLink({condition:a=>Gi.has(a.path),true:httpLink({url:o,fetch:s,methodOverride:"POST"}),false:httpBatchLink({url:o,fetch:s,methodOverride:"POST"})})]}),enumerable:false,writable:false,configurable:true});}get clientFlags(){return this.#e}withAccessToken(e){let t={apiUrl:this.apiUrl,fetch:this.fetchImpl,accessToken:e,client:this.clientIdentity,clientFlags:this.clientFlags,decorateResponses:this.decorateResponses},r=new n(t);return V(this)&&Ft(r),r}actions=this.action;async openSse(e,t,r){let i=await this.fetchWithAuth(`${this.apiUrl.replace(/\/$/,"")}/sse?ticket=${encodeURIComponent(e)}`,{headers:{accept:"text/event-stream"},signal:t});if(!i.ok)throw new f("BACKEND",`SSE request failed with status ${i.status}`,i.status);let o=i.body?.getReader();if(!o)throw new f("BACKEND","SSE response body is missing");let s=()=>{},a=new Promise(d=>{s=d;}),u=(async()=>{let d=new TextDecoder,l="";try{for(;;){let{done:m,value:h}=await o.read();if(m)break;for(l+=d.decode(h,{stream:!0}).replaceAll(`\r
|
|
3
|
+
`);if(g===-1)break;let b=o.slice(0,g);o=o.slice(g+1);let{pending:S,row:w}=d(b);S&&await S,l(w),w.type==="summary"||w.type==="error"?u=w:yield w;}}if(o+=i.decode(),o.length>0){let{pending:m,row:h}=d(o);m&&await m,l(h),h.type==="summary"||h.type==="error"?u=h:yield h;}r.finish(),a=!0,u&&(yield u);}finally{if(!a)try{await t.cancel();}catch{}t.releaseLock();}}var D=class extends Error{code="STREAMING_SUBMISSION_OUTCOME_UNKNOWN";outcome="unknown";retryable=false;retryIdentity;cause;constructor(e,t){super(`Streaming submission outcome is unknown for ${e.submissionId}. Reconstruct the original source and copy every retryIdentity field into the next applyStreaming call.`),this.name="StreamingSubmissionOutcomeUnknownError",this.retryIdentity=e,this.cause=t;}};function xe(n){return n===void 0||n===""?void 0:n}function vi(){let n=globalThis;if(n.Bun!==void 0)return true;let e=n.process?.versions?.node;if(!e)return false;let[t=0,r=0]=e.split(".").map(Number);return t>22||t===22&&r>=2}function Ii(n){let e=new URLSearchParams({submissionId:n.submissionId,groupSize:String(n.groupSize)});return n.message!==void 0&&e.set("message",n.message),n.committer!==void 0&&e.set("committer",n.committer),`/api/repos/${encodeURIComponent(n.orgName)}/${encodeURIComponent(n.repoName)}/streams/${encodeURIComponent(n.streamId)}/submissions?${e}`}function xi(n,e,t,r){let i=Oe(n,false,r),o=r==="passThrough"?async m=>m:M(t),s=0,a=false,u=async m=>{try{await m;}catch{}},d=()=>{if(!a){a=true;try{let m=i.returnSourceOnce();m&&u(m);}catch{}}};return {stream:new ReadableStream({async pull(m){try{let h=[],g=s,b=!1;for(;;){let S=await i.next();if(a)return;if(!(!S.done&&(h.push(S.value),s+=1,b||=L(S.value),b&&s%e!==0))){for(let w of await o(h,g))m.enqueue(ze(w));S.done&&m.close();return}}}catch(h){m.error(h),d();}},cancel(){d();}}),returnSourceOnce:d}}function ki(n,e){if(!n)return ()=>{};let t=()=>e.abort(n.reason);return n.aborted?t():n.addEventListener("abort",t,{once:true}),()=>n.removeEventListener("abort",t)}function Ai(n){let e=n.options?.submissionId??H();return {orgName:n.orgName,repoName:n.repoName,streamId:n.options.streamId,submissionId:e,groupSize:ve(n.options.groupSize),...xe(n.message)!==void 0?{message:xe(n.message)}:{},...xe(n.options?.committer)!==void 0?{committer:xe(n.options?.committer)}:{}}}function Tr(n,e){if(!n.options.streamId)throw e.localError("VALIDATION_ERROR","Streaming submissions require a non-empty streamId.");let t=Ai(n),r=new AbortController,i=()=>{},o,s=false,a=async function*(){let u=false,d=false,l;try{let m=B(e.sender??{},n.operations);if(!(e.runtimeSupported??vi)())throw e.localError("VALIDATION_ERROR","Streaming submissions require Bun or Node.js 22.2 or newer.");if(i=ki(n.options.signal,r),r.signal.aborted)throw e.localError("CANCELLED","Streaming submission was aborted.");let h=await e.prepare(Ii(t));if(r.signal.aborted)throw e.localError("CANCELLED","Streaming submission was aborted.");l=xi(n.operations,t.groupSize,e.readThings,m),u=!0;let g=await h.dispatch(l.stream,r.signal);if(!g.ok)throw d=!0,await h.httpError(g);for await(let b of kr(g,t))yield b;}catch(m){throw m instanceof D?m:u&&!d?new D(t,m):e.normalizeLocalError(m)}finally{r.abort(),l?.returnSourceOnce(),i(),s=true;}};return {retryIdentity:t,[Symbol.asyncIterator](){return this},next(){return s?Promise.resolve({done:true,value:void 0}):(o??=a(),o.next())},async return(u){return r.abort(),o?o.return(u):(s=true,i(),{done:true,value:u})},async throw(u){if(r.abort(u),!o)throw s=true,i(),u;return o.throw(u)}}}var Ti="0.0.0-development";function j(n){return n===Ti}var it="0.141.0";var _r=3;function _i(n){return n===v$1?"Run: wh update --yes":n===u?"Run: npm install @warmhub/sdk-ts@latest (or your package manager's equivalent).":n===w?"Run: pip install --upgrade warmhub":`Deploy a released ${n} build that satisfies the backend compatibility contract.`}function Nr(n,e){if(typeof n?.minSupportedClients!="object"||n.minSupportedClients===null||!Number.isSafeInteger(n.writeContractVersion)||n.writeContractVersion<1)return {message:"The backend does not advertise valid per-client write compatibility data.",hint:"Upgrade the WarmHub backend before retrying this write."};let t=n.minSupportedClients[e.name],r=typeof t=="string"?I(t):null;if(!r)return {message:`The backend does not advertise a valid compatibility floor for ${e.name}.`,hint:"Upgrade the WarmHub backend or register this first-party client family before writing."};if(!j(e.version)){let i=I(e.version);if(!i)return {message:`${e.name} reported malformed version "${e.version}".`,hint:"Use a released WarmHub client with a SemVer package version."};if(J(i,r)<0)return {message:`${e.name} ${e.version} is older than the backend's minimum supported version ${r}.`,hint:_i(e.name)}}if(n.writeContractVersion<_r)return {message:`${e.name} requires write contract ${_r}, but the backend provides ${n.writeContractVersion}.`,hint:"Upgrade the WarmHub backend before retrying this write."}}function Pr(n,e){try{return new URL(n).origin===new URL(e).origin}catch{return false}}var Ni=new Set(["GET","POST","PUT","PATCH","DELETE"]),x=class extends Error{reason;constructor(e,t){super(t),this.name="CliCallVerificationError",this.reason=e;}};async function Pi(n,e,t){let r=n.method.toUpperCase();if(!Ni.has(r))throw new x("unsupported-method",`Unsupported HTTP method "${n.method}" \u2014 component CLI dispatch only emits GET, POST, PUT, or PATCH`);let i=r,o=n.headers.get(B$1);if(!o)throw new x("missing-install-repo",`Missing ${B$1} header`);let s=z(e.CLI_SIGNING_SECRET),a=z(e.CLI_BEARER_TOKEN),u=z(e.CLI_API_KEY),d=z(e.CLI_BASIC_USERNAME)&&z(e.CLI_BASIC_PASSWORD);if(!s&&!a&&!u&&!d)throw new x("no-scheme-configured","no-scheme-configured: need at least one of CLI_SIGNING_SECRET, CLI_BEARER_TOKEN, CLI_API_KEY, or CLI_BASIC_USERNAME + CLI_BASIC_PASSWORD");if(a&&d)throw new x("no-scheme-configured","unsupported-scheme-combination: CLI_BEARER_TOKEN and CLI_BASIC_USERNAME + CLI_BASIC_PASSWORD both use the Authorization header and cannot be configured together");let l=new URL(n.url),m=l.pathname,h,g,b;if(E(i)?h={}:(h=Object.fromEntries(l.searchParams.entries()),g="",b={...h}),s){let S=n.headers.get(C);if(!S)throw new x("missing-signature",`Missing ${C} header`);let w=n.headers.get(D$1);if(!w)throw new x("missing-timestamp",`Missing ${D$1} header`);let C$1=Number(w);if(!Number.isFinite(C$1)||!Number.isInteger(C$1))throw new x("invalid-timestamp",`${D$1} must be an integer unix seconds value; got "${w}"`);g=await Dr(n,i,g);let _=await F$1({secret:e.CLI_SIGNING_SECRET,method:i,path:m,query:h,installRepo:o,body:g,signature:S,timestamp:C$1,nowUnixSeconds:t?.nowUnixSeconds??Math.floor(Date.now()/1e3),toleranceSec:t?.toleranceSec});if(!_.ok)throw new x(_.reason,`HMAC verification failed: ${_.reason}`)}if(a){let S=`Bearer ${e.CLI_BEARER_TOKEN}`,w=n.headers.get("authorization")??"";if(!await ot(w,S))throw new x("invalid-bearer","invalid-bearer: bearer token mismatch")}if(u){let S=z(e.CLI_API_KEY_HEADER)?e.CLI_API_KEY_HEADER:"X-API-Key",w=n.headers.get(S)??"";if(!await ot(w,e.CLI_API_KEY))throw new x("invalid-api-key",`invalid-api-key: mismatch on header "${S}"`)}if(d){let S=`Basic ${btoa(`${e.CLI_BASIC_USERNAME}:${e.CLI_BASIC_PASSWORD}`)}`,w=n.headers.get("authorization")??"";if(!await ot(w,S))throw new x("invalid-basic","invalid-basic: basic auth mismatch")}return b===void 0&&(g=await Dr(n,i,g),b=Di(g)),{method:i,installRepo:o,args:b}}async function Dr(n,e,t){return E(e)?t!==void 0?t:n.text():""}function Di(n){let e;try{e=JSON.parse(n);}catch{throw new x("invalid-body","POST body is not valid JSON")}if(!Li(e))throw new x("invalid-body","POST body must be a JSON object of primitive args (string / number / boolean)");return e}function z(n){return typeof n=="string"&&n.length>0}function Li(n){if(typeof n!="object"||n===null||Array.isArray(n))return false;for(let e of Object.values(n))if(e!==void 0&&typeof e!="string"&&typeof e!="number"&&typeof e!="boolean")return false;return true}async function ot(n,e){let[t,r]=await Promise.all([Lr(n),Lr(e)]),i=0;for(let o=0;o<t.length;o++)i|=t[o]^r[o];return i===0}async function Lr(n){return new Uint8Array(await crypto.subtle.digest("SHA-256",new TextEncoder().encode(n)))}function Aa(n){return h(n)}var Bi={apiUrl:true,fetch:true,accessToken:true,auth:true,functionLogs:true,client:true,clientFlags:true,decorateResponses:true},Qr=Object.keys(Bi),Hi=new Set(Qr),Fi=new Set(["token","apiKey","bearer"]);function Wi(n){if(n)for(let e of Object.keys(n)){if(Hi.has(e))continue;let t=Fi.has(e)?'; did you mean "accessToken"?':`. Valid options are: ${Qr.join(", ")}.`;throw new TypeError(`Unknown WarmHubClient option "${e}"${t}`)}}function $i(n){if(!n||n.length===0)return [];for(let e of n)if(!r(e))throw new TypeError(`Invalid client flag "${e}": expected lowercase tokens matching [a-z0-9-]+.`);return [...new Set(n)].sort()}var Mr="https://api.warmhub.ai",Gi=new Set(["commit.validate","repo.shapeInstanceCounts","thing.getMany","thing.headVersions"]),Ur=500,Vr=500,Br=1,Hr=8;function Te(n){return {...n,actionContainer:void 0,actionContainerConfig:void 0}}function Ki(n){return n.map(e=>Te(e))}function Yr(n,e,t){if(e===n||t.has(e))throw new f("VALIDATION_ERROR","Paginated result cursor did not advance")}function Fr(n){if(n===void 0)throw new f("VALIDATION_ERROR","sinceRepoSeq is required for an incremental read")}async function*Jr(n,e){let t=e,r=new Set;for(;;){t&&r.add(t);let i=await n(t);if(yield i,!i.nextCursor)return;Yr(t,i.nextCursor,r),t=i.nextCursor;}}async function*O(n,e,t){for await(let r of Jr(n,t))yield*e(r);}async function v(n,e,t,r){if(t!==void 0&&(!Number.isFinite(t)||Math.trunc(t)!==t||t<0))throw new f("VALIDATION_ERROR","max must be a nonnegative integer");let i=[];for await(let o of Jr(n,r)){let s=e(o);if(t!==void 0&&i.length+s.length>t)throw new f("VALIDATION_ERROR",`Paginated result exceeded max=${t}`);i.push(...s);}return i}function Wr(n){if(n?.slugs!==void 0)throw new f("VALIDATION_ERROR","repo.explore pagination helpers do not support slugs mode")}async function $r(n){let e=[],t,r=new Set;for(;;){t&&r.add(t);let i=await n(t);if(e.push(...i.items),!i.nextCursor){if(i.repoSeq===void 0)throw new f("VALIDATION_ERROR","Incremental read completed without repoSeq");return {items:e,repoSeq:i.repoSeq}}Yr(t,i.nextCursor,r),t=i.nextCursor;}}function ke(n,e,t){return Number.isFinite(n)?Math.max(1,Math.min(t,Math.trunc(n))):e}function Gr(n,e){let t=[];for(let r=0;r<n.length;r+=e)t.push(n.slice(r,r+e));return t}function Ae(n){return n!==void 0&&A$1.includes(n)?n:void 0}function ae(n){let[e,t,r]=n;return typeof e=="string"?{orgName:e,repoName:t,name:r}:e}function ji(n){let[e,t]=n;return typeof e=="string"?{orgName:e,repoName:t}:e}function zi(n){let[e,t,r,i]=n;return typeof e=="string"?{orgName:e,repoName:t,subscriptionName:r,credentialSetName:i}:e}function Qi(n){let[e,t,r]=n;return typeof e=="string"?{orgName:e,repoName:t,subscriptionName:r}:e}function Yi(n){let{actionContainer:e,actionContainerConfig:t,...r}=n;return r}function Ji(n){let{actionContainer:e,actionContainerConfig:t,...r}=n;return r}function ct(n){return !!n&&(!!n.shape||!!n.kind||!!n.about||!!n.match||!!n.componentRef||n.excludeComponents===true||(n.where?.length??0)>0)}function _e(n){return !!n&&(!!n.shape||!!n.about||!!n.match||!!n.componentRef||(n.where?.length??0)>0)}function Xr(n){let e=n.members;return Array.isArray(e)&&e.length>0}function Xi(n,e){if(ct(e.query)&&!_e(e.query))throw new f("VALIDATION_ERROR","Selector-backed collection sources require shape, about, match, componentRef, or where; kind and excludeComponents only narrow an existing selector.");if(e.sourceRepo&&!_e(e.query))throw new f("VALIDATION_ERROR","sourceRepo requires a selector-backed collection query");if(e.sourceRepo&&Xr(e))throw new f("VALIDATION_ERROR","sourceRepo cannot be combined with explicit members; use canonical wh:org/repo/... member wrefs or omit sourceRepo.");if(ct(e.query)&&n!=="set")throw new f("VALIDATION_ERROR","Selector-backed collection sources are only supported for set collections")}function Ta(n){return n??"off"}function Zi(n){if(n!==void 0)switch(n){case "BAD_REQUEST":case "PARSE_ERROR":case "PAYLOAD_TOO_LARGE":case "UNPROCESSABLE_CONTENT":case "UNSUPPORTED_MEDIA_TYPE":return "VALIDATION_ERROR";case "METHOD_NOT_SUPPORTED":return "NOT_FOUND";case "UNAUTHORIZED":return "UNAUTHENTICATED";case "FORBIDDEN":return "FORBIDDEN";case "NOT_FOUND":return "NOT_FOUND";case "CONFLICT":return "CONFLICT";case "PRECONDITION_FAILED":return "PRECONDITION_FAILED";case "TOO_MANY_REQUESTS":return "RATE_LIMITED";default:return}}function eo(n){if(n===void 0||n===408)return;if(n===405)return "NOT_FOUND";if(n===412)return "PRECONDITION_FAILED";if(n===422)return "VALIDATION_ERROR";let e=tn(n);return e!=="BACKEND"?e:n>=400&&n<500?"VALIDATION_ERROR":e}var to=[/\bselect\b.+?\bfrom\b/i,/\binsert\b.+?\binto\b/i,/\bupdate\b.+?\bset\b/i,/\bdelete\b.+?\bfrom\b/i,/\bparams:\s/i,/\.ts\(\d+,\d+\)/,/at\s+\S+\s+\(.*:\d+:\d+\)/,/node_modules\//,/drizzle/i];function st(n){for(let e of to)if(e.test(n))return "An internal error occurred. Please try again or contact support.";return n}function Kr(n,e){if(typeof e!="string")return;let t=l(n,e);if(t)throw new f("VALIDATION_ERROR",t)}function c(n){if(n instanceof f)return n;if(n instanceof TRPCClientError){if(n.cause instanceof f)return n.cause;let e=n.data,t=e?.warmhub?.code,r=typeof e?.code=="string"?Zi(e.code):void 0,i=eo(e?.httpStatus),o=e?.warmhub?.message??st(n.message);return new f(t??r??i??"BACKEND",o,e?.warmhub?.status??e?.httpStatus,e?.warmhub?.hint,e?.warmhub?.retryAfter??e?.retryAfter,t,e?.warmhub?.details)}if(n instanceof Error){let e=n;if(n.name==="WarmHubError"&&typeof e.code=="string"){let t=new f(e.code,st(n.message),typeof e.status=="number"?e.status:void 0,typeof e.hint=="string"?e.hint:void 0,typeof e.retryAfter=="number"?e.retryAfter:void 0,typeof e.errorCode=="string"?e.errorCode:typeof e.backendCode=="string"?e.backendCode:void 0,e.details);return ut(n)&&Object.defineProperty(t,Zr,{value:true}),t}return n.name==="AbortError"?new f("CANCELLED",n.message):n instanceof TypeError&&/fetch/i.test(n.message)?new f("NETWORK",n.message):new f("BACKEND",st(n.message))}return new f("BACKEND","Unknown SDK error")}var Zr=Symbol.for("@warmhub/sdk-ts:allStreamOperationsFailed");function ut(n){if(n instanceof A)return true;if(!(n instanceof Error))return false;let e=n;return e[Zr]===true||e.name==="WarmHubError"&&Array.isArray(e.receipts)&&Array.isArray(e.operations)}function _a(n){return ut(n)}function ro(n){return n instanceof f}function Na(n){if(n instanceof D||ut(n))return false;let e=c(n);return e.kind==="NETWORK"||e.kind==="CANCELLED"||e.kind==="BACKEND"||e.kind==="RATE_LIMITED"}var no=new Set(["ConnectionRefused","ECONNREFUSED","ENOTFOUND","ETIMEDOUT","EAI_AGAIN"]);function io(n){if(n instanceof TypeError&&/fetch/i.test(n.message))return true;if(n&&typeof n=="object"){let e=n.code;if(typeof e=="string"&&no.has(e))return true}return false}function oo(n){return `Unable to connect to ${n}. Is the computer able to access the url?`}function Pa(n,e){if(j(n))return false;let t=I(n),r=I(e);return !t||!r?false:J(t,r)<0}function en(n,e){return new f("CLIENT_INCOMPATIBLE",n,412,e)}function so(n,e){let t=Nr(n,e);if(t)throw en(t.message,t.hint)}function ao(n,e){if(!(n!=="thing.rename"||typeof e?.eventRequestId=="string"))return new f("VALIDATION_ERROR","thing.rename takes (orgName, repoName, name, newName, { eventRequestId }): name and newName are full Thing names. The v1 order (orgName, repoName, shapeName, oldName, newName, opts) is gone.")}var jr=class n{apiUrl;fetchImpl;accessToken;clientIdentity;#e;decorateResponses;functionLogMode;getToken;compatibilityCheck;overrideNoticePrinted=false;repositoryExport=et((e,t)=>this.fetchWithAuth(`${this.apiUrl.replace(/\/$/,"")}${e}`,t),e=>this.httpResponseError(e),(e,t)=>{let r=this.legacyWrefsRefusal("read");if(r)throw r;return (this.fetchImpl??globalThis.fetch)(e,t)});noteCompatibilityOverride(){this.overrideNoticePrinted||(this.overrideNoticePrinted=true,console.error(`warmhub: compatibility checks overridden by client flag ${p}; the server remains authoritative.`));}assertWriteCompatible(){return this.clientFlags.includes(p)?(this.noteCompatibilityOverride(),Promise.resolve()):j(this.clientIdentity.version)&&Pr(this.apiUrl,Mr)?Promise.reject(en(`Development client ${this.clientIdentity.name}/${this.clientIdentity.version} cannot write to production.`,"Install a released WarmHub client artifact before writing to api.warmhub.ai.")):j(this.clientIdentity.version)&&this.clientIdentity.name!==v$1?Promise.resolve():this.diagnostics.assertCompatible()}legacyWrefsRefusal(e){if(te(this.clientFlags)){if(!V(this))return Fe();if(e==="write")return new f("CLIENT_INCOMPATIBLE",$t)}}pinnedShapeRefusal(e,t){if(e!=="stream.append"||te(this.clientFlags)&&V(this))return;let r=t?.operations;if(!Array.isArray(r))return;let i=r.findIndex(o=>Array.isArray(o?.shapes)&&o.shapes.some(s=>typeof s=="string"&&He(s)));return i<0?void 0:new y(i,Be)}createLegacyWrefsLink(){return ()=>({op:e,next:t})=>{let r=this.legacyWrefsRefusal(e.type!=="mutation"?"read":Kt.has(e.path)||Gt.has(e.path)?"raw-commit":"write")??ao(e.path,e.input)??this.pinnedShapeRefusal(e.path,e.input);return r?observable(i=>{i.error(TRPCClientError.from(r));}):t(e)}}createCompatibilityLink(){return ()=>({op:e,next:t})=>e.type!=="mutation"||e.path==="commit.validate"?t(e):observable(r=>{let i=false,o;return (async()=>{try{await this.assertWriteCompatible();}catch(s){if(i)return;r.error(TRPCClientError.from(s));return}i||(o=t(e).subscribe(r));})(),()=>{i=true,o?.unsubscribe();}})}auth={getClientId:async()=>{try{return await this.trpc.auth.getClientId.query()}catch(e){throw c(e)}},sync:async()=>{try{return await this.trpc.auth.sync.mutate()}catch(e){throw c(e)}},currentUser:async()=>{try{return await this.trpc.auth.currentUser.query()}catch(e){throw c(e)}},whoami:async()=>{try{return await this.trpc.auth.whoami.query()}catch(e){throw c(e)}}};homepage={featuredLists:async()=>{try{return await this.trpc.homepage.featuredLists.query()}catch(e){throw c(e)}}};access={resolve:async e=>{try{return await this.trpc.access.resolve.query(e)}catch(t){throw c(t)}}};diagnostics={ping:async()=>{let e=await this.fetchWithAuth(`${this.apiUrl.replace(/\/$/,"")}/health`);if(!e.ok)throw new f("BACKEND",`Health request failed with status ${e.status}`,e.status);return await e.json()},capabilities:async()=>{try{return await this.trpc.diagnostics.capabilities.query()}catch(e){throw c(e)}},assertCompatible:()=>{if(this.compatibilityCheck)return this.compatibilityCheck;let e=(async()=>{let t=await this.diagnostics.capabilities();so(t,this.clientIdentity);})();return this.compatibilityCheck=e,e.catch(t=>{ro(t)&&t.code==="CLIENT_INCOMPATIBLE"||this.compatibilityCheck===e&&(this.compatibilityCheck=void 0);}),e}};component={list:async(e,t,r)=>{try{return await this.trpc.component.list.query({orgName:e,repoName:t,limit:r?.limit,cursor:r?.cursor})}catch(i){throw c(i)}},listIter:(e,t,r)=>O(i=>this.component.list(e,t,{...r,cursor:i}),i=>i.items,r?.cursor),listAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.component.list(e,t,{...o,cursor:s}),s=>s.items,i,o.cursor)},search:async(e,t)=>{try{return await this.trpc.component.search.query({query:e,limit:t?.limit,cursor:t?.cursor})}catch(r){throw c(r)}},searchIter:(e,t)=>O(r=>this.component.search(e,{...t,cursor:r}),r=>r.items,t?.cursor),searchAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.component.search(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},get:async(e,t,r)=>{try{return await this.trpc.component.get.query({orgName:e,repoName:t,componentRef:r})}catch(i){throw c(i)}},history:async(e,t,r)=>{try{return await this.trpc.component.history.query({orgName:e,repoName:t,componentRef:r?.componentRef,limit:r?.limit})}catch(i){throw c(i)}},install:async(e,t,r,i)=>{try{return await this.trpc.component.install.mutate({orgName:e,repoName:t,componentRef:r,submissionId:i.submissionId})}catch(o){throw c(o)}},uninstall:async(e,t,r,i)=>{try{return await this.trpc.component.uninstall.mutate({orgName:e,repoName:t,componentRef:r,submissionId:i.submissionId})}catch(o){throw c(o)}},registry:{register:async(e,t,r)=>{try{return await this.trpc.component.registry.register.mutate({orgName:e,componentName:t,...r})}catch(i){throw c(i)}},unregister:async(e,t)=>{try{return await this.trpc.component.registry.unregister.mutate({orgName:e,componentName:t})}catch(r){throw c(r)}},list:async e=>{try{return await this.trpc.component.registry.list.query({orgName:e})}catch(t){throw c(t)}},view:async(e,t)=>{try{return await this.trpc.component.registry.view.query({orgName:e,componentName:t})}catch(r){throw c(r)}},update:async(e,t,r)=>{try{return await this.trpc.component.registry.update.mutate({orgName:e,componentName:t,...r})}catch(i){throw c(i)}},resolve:async(e,t,r)=>await this.requestJson(`/api/component-registry/${encodeURIComponent(e)}/${encodeURIComponent(t)}/resolve`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({installRepo:r})}),setupCall:async(e,t,r)=>(await this.assertWriteCompatible(),await this.requestJson(`/api/component-registry/${encodeURIComponent(e)}/${encodeURIComponent(t)}/setup-call`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(r)}))},cli:{call:async(e,t,r,i)=>(await this.assertWriteCompatible(),await this.requestJson(`/api/component-registry/${encodeURIComponent(e)}/${encodeURIComponent(t)}/cli/${encodeURIComponent(r)}`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i)}))}};ops(e){return new G(e)}commit={validate:async(e,t,r,i)=>{try{return await or(this.trpc.commit.validate,this.thingShapesReader(e,t),e,t,r,i,this)}catch(o){throw c(o)}},apply:async(e,t,r,i,o)=>{try{return await W(this,{orgName:e,repoName:t,committer:o?.committer,message:r,componentRef:o?.componentRef,chunkSize:o?.chunkSize,skipExisting:o?.skipExisting,streamId:o?.streamId,submissionId:o?.submissionId,returnRepoSeq:o?.returnRepoSeq,retry:o?.retry,operations:i})}catch(s){throw s instanceof k||s instanceof A?s:c(s)}},applyStreaming:(e,t,r,i,o)=>Tr({orgName:e,repoName:t,message:r,operations:i,options:o},{prepare:async s=>await this.prepareStreamingSubmissionRequest(s),localError:(s,a)=>new f(s,a),normalizeLocalError:c,readThings:this.thingShapesReader(e,t),sender:this}),getReceipt:async(e,t,r)=>{try{return await this.trpc.commit.getReceipt.query({orgName:e,repoName:t,eventRequestId:r})}catch(i){throw c(i)}}};org={get:async e=>{try{return await this.trpc.org.get.query({orgName:e})}catch(t){throw c(t)}},getCallerRole:async e=>{try{return await this.trpc.org.getCallerRole.query({orgName:e})}catch(t){throw c(t)}},list:async e=>{try{return {items:await this.trpc.org.list.query({includeArchived:e?.includeArchived})}}catch(t){throw c(t)}},create:async(e,t,r)=>{try{return await this.trpc.org.create.mutate({name:e,displayName:t,description:r})}catch(i){throw c(i)}},setDescription:async(e,t)=>{try{return await this.trpc.org.setDescription.mutate({orgName:e,description:t})}catch(r){throw c(r)}},setDisplayName:async(e,t)=>{try{return await this.trpc.org.setDisplayName.mutate({orgName:e,displayName:t})}catch(r){throw c(r)}},rename:async(e,t)=>{try{return await this.trpc.org.rename.mutate({orgName:e,newName:t})}catch(r){throw c(r)}},update:async e=>{try{return await this.trpc.org.update.mutate(e)}catch(t){throw c(t)}},addMember:async(e,t,r="editor")=>{try{return await this.trpc.org.addMember.mutate({orgName:e,email:t,role:r})}catch(i){throw c(i)}},removeMember:async(e,t)=>{try{await this.trpc.org.removeMember.mutate({orgName:e,email:t});}catch(r){throw c(r)}},leave:async e=>{try{await this.trpc.org.leave.mutate({orgName:e});}catch(t){throw c(t)}},changeMemberRole:async(e,t,r)=>{try{return await this.trpc.org.changeMemberRole.mutate({orgName:e,email:t,role:r})}catch(i){throw c(i)}},setMemberScopes:async(e,t,r)=>{try{await this.trpc.org.setMemberScopes.mutate({orgName:e,email:t,scopes:r});}catch(i){throw c(i)}},clearMemberScopes:async(e,t)=>{try{await this.trpc.org.clearMemberScopes.mutate({orgName:e,email:t});}catch(r){throw c(r)}},listMembers:async(e,t)=>{try{return await this.trpc.org.listMembers.query({orgName:e,pending:t?.pending})}catch(r){throw c(r)}},archive:async e=>{try{return await this.trpc.org.archive.mutate({orgName:e})}catch(t){throw c(t)}},unarchive:async e=>{try{return await this.trpc.org.unarchive.mutate({orgName:e})}catch(t){throw c(t)}}};repo={checkpoint:mr(()=>this.trpc,c),export:(e,t,r)=>this.repositoryExport.stream(e,t,r),exportPrepare:(e,t,r)=>this.repositoryExport.prepare(e,t,r),get:async(e,t)=>{try{return await this.trpc.repo.get.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getStats:async(e,t)=>{try{return await this.trpc.repo.stats.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getStatsBatch:async(e,t)=>{try{return await this.trpc.repo.statsBatch.query({orgName:e,repoNames:t})}catch(r){throw c(r)}},getConfigureStats:async(e,t)=>{try{return await this.trpc.repo.configureStats.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getShapeInstanceCounts:async(e,t)=>{try{return await this.trpc.repo.shapeInstanceCounts.query({orgName:e,repoName:t})}catch(r){throw c(r)}},list:async(e,t)=>{try{return await this.trpc.repo.list.query({orgName:e,limit:t?.limit,cursor:t?.cursor,includeArchived:t?.includeArchived,search:t?.search,sort:t?.sort})}catch(r){throw c(r)}},listIter:(e,t)=>O(r=>this.repo.list(e,{...t,cursor:r}),r=>r.items,t?.cursor),listAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.repo.list(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},search:async(e,t)=>{try{return await this.trpc.repo.search.query({query:e,limit:t?.limit,cursor:t?.cursor})}catch(r){throw c(r)}},searchIter:(e,t)=>O(r=>this.repo.search(e,{...t,cursor:r}),r=>r.items,t?.cursor),searchAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.repo.search(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},create:async(e,t,r,i,o)=>{try{return await this.trpc.repo.create.mutate({orgName:e,repoName:t,description:r,visibility:i,displayName:o})}catch(s){throw c(s)}},setDescription:async(e,t,r)=>{try{return await this.trpc.repo.setDescription.mutate({orgName:e,repoName:t,description:r})}catch(i){throw c(i)}},setDisplayName:async(e,t,r)=>{try{return await this.trpc.repo.setDisplayName.mutate({orgName:e,repoName:t,displayName:r})}catch(i){throw c(i)}},setVisibility:async(e,t,r)=>{try{return await this.trpc.repo.setVisibility.mutate({orgName:e,repoName:t,visibility:r})}catch(i){throw c(i)}},rename:async(e,t,r)=>{try{return await this.trpc.repo.rename.mutate({orgName:e,repoName:t,newName:r})}catch(i){throw c(i)}},update:async e=>{try{return await this.trpc.repo.update.mutate(e)}catch(t){throw c(t)}},archive:async(e,t)=>{try{return await this.trpc.repo.archive.mutate({orgName:e,repoName:t})}catch(r){throw c(r)}},unarchive:async(e,t)=>{try{return await this.trpc.repo.unarchive.mutate({orgName:e,repoName:t})}catch(r){throw c(r)}},delete:async(e,t)=>{try{let r=await this.trpc.repo.delete.mutate({orgName:e,repoName:t});return {graceExpiresAt:new Date(r.graceExpiresAt)}}catch(r){throw c(r)}},listPage:async(e,t)=>{try{return await this.trpc.repo.listPage.query({orgName:e,limit:t?.limit,cursor:t?.cursor,includeArchived:t?.includeArchived,search:t?.search,sort:t?.sort})}catch(r){throw c(r)}},listPageIter:(e,t)=>O(r=>this.repo.listPage(e,{...t,cursor:r}),r=>r.items,t?.cursor),listPageAll:async(e,t)=>{let{max:r,...i}=t??{};return await v(o=>this.repo.listPage(e,{...i,cursor:o}),o=>o.items,r,i.cursor)},listForCaller:async e=>{try{return await this.trpc.repo.listForCaller.query({limit:e?.limit,sort:e?.sort})}catch(t){throw c(t)}},explore:async e=>{try{return await this.trpc.repo.explore.query({search:e?.search,org:e?.org,activity:e?.activity,hasSubscriptions:e?.hasSubscriptions,minThings:e?.minThings,sort:e?.sort,limit:e?.limit,cursor:e?.cursor,slugs:e?.slugs})}catch(t){throw c(t)}},exploreIter:e=>(Wr(e),O(t=>this.repo.explore({...e,cursor:t}),t=>t.items,e?.cursor)),exploreAll:async e=>{Wr(e);let{max:t,...r}=e??{};return await v(i=>this.repo.explore({...r,cursor:i}),i=>i.items,t,r.cursor)},getReadme:async(e,t)=>{try{return await this.trpc.repo.getReadme.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getAgents:async(e,t)=>{try{return await this.trpc.repo.getAgents.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getLicense:async(e,t)=>{try{return await this.trpc.repo.getLicense.query({orgName:e,repoName:t})}catch(r){throw c(r)}},describe:async(e,t,r={})=>{try{return await this.trpc.repo.describe.query({orgName:e,repoName:t,includeHead:r.includeHead})}catch(i){throw c(i)}},setReadme:async(e,t,r,i)=>{try{return Kr("Readme.content",r),await this.trpc.repo.setReadme.mutate({orgName:e,repoName:t,eventRequestId:i.eventRequestId,content:r})}catch(o){throw c(o)}},setAgents:async(e,t,r,i)=>{try{return Kr("Agents.content",r),await this.trpc.repo.setAgents.mutate({orgName:e,repoName:t,eventRequestId:i.eventRequestId,content:r})}catch(o){throw c(o)}},getLlmsTxt:async(e,t)=>{try{return await this.trpc.repo.getLlmsTxt.query({orgName:e,repoName:t})}catch(r){throw c(r)}},index:{describe:async(e,t)=>{try{return await this.trpc.repo.index.describe.query({orgName:e,repoName:t})}catch(r){throw c(r)}},pin:async(e,t,r,i)=>{try{return await this.trpc.repo.index.pin.mutate({orgName:e,repoName:t,shape:r,fieldPath:i})}catch(o){throw c(o)}},unpin:async(e,t,r,i)=>{try{return await this.trpc.repo.index.unpin.mutate({orgName:e,repoName:t,shape:r,fieldPath:i})}catch(o){throw c(o)}}}};shape={list:async(e,t,r)=>{try{return await this.trpc.shape.list.query({orgName:e,repoName:t,match:r?.match,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,includeRetracted:r?.includeRetracted})}catch(i){throw c(i)}},get:async(e,t,r,i)=>{try{return await this.trpc.shape.get.query({orgName:e,repoName:t,shapeName:r,includeRetracted:i?.includeRetracted})}catch(o){throw c(o)}},create:async(e,t,r,i,o)=>{let s=ie(r,{fields:i,...o.description!==void 0?{description:o.description}:{},...o.composes!==void 0?{composes:o.composes}:{}},"add");if(s)throw new f("VALIDATION_ERROR",s);try{return await this.trpc.shape.create.mutate({orgName:e,repoName:t,shapeName:r,fields:i,eventRequestId:o.eventRequestId,description:o.description,composes:o.composes})}catch(a){throw c(a)}},revise:async(...e)=>{let[t,r,i]=e,o=e.length===5?e[3]:void 0,s=e.length===5?e[4]:e[3],a=o?ie(i,{fields:o,...s.description!==void 0?{description:s.description}:{},...s.composes!==void 0?{composes:s.composes}:{}},"revise"):void 0;if(a)throw new f("VALIDATION_ERROR",a);try{return await this.trpc.shape.revise.mutate({orgName:t,repoName:r,shapeName:i,newFields:o,eventRequestId:s.eventRequestId,description:s.description,composes:s.composes})}catch(u){throw c(u)}},remove:async(e,t,r,i)=>{try{return await this.trpc.shape.remove.mutate({orgName:e,repoName:t,shapeName:r,eventRequestId:i.eventRequestId})}catch(o){throw c(o)}},rename:async(e,t,r,i,o)=>{try{return await this.trpc.shape.rename.mutate({orgName:e,repoName:t,oldName:r,newName:i,eventRequestId:o.eventRequestId})}catch(s){throw c(s)}},history:async(e,t,r,i={})=>{try{return await this.trpc.shape.history.query({orgName:e,repoName:t,name:r,includeRetracted:i.includeRetracted,limit:i.limit,cursor:i.cursor})}catch(o){throw c(o)}},historyIter:(e,t,r,i={})=>O(o=>this.shape.history(e,t,r,{...i,cursor:o}),o=>o.versions,i.cursor),historyAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.shape.history(e,t,r,{...s,cursor:a}),a=>a.versions,o,s.cursor)}};subscription={create:async e=>{try{let t=await this.trpc.subscription.create.mutate(Yi(e));return Te(t)}catch(t){throw c(t)}},get:async(...e)=>{try{let t=await this.trpc.subscription.get.query(ae(e));return Te(t)}catch(t){throw c(t)}},reveal:async(...e)=>{try{return await this.trpc.subscription.reveal.query(ae(e))}catch(t){throw c(t)}},list:async(...e)=>{try{let t=await this.trpc.subscription.list.query(ji(e));return Ki(t)}catch(t){throw c(t)}},update:async e=>{try{let t=await this.trpc.subscription.update.mutate(Ji(e));return Te(t)}catch(t){throw c(t)}},pause:async(...e)=>{try{return await this.trpc.subscription.pause.mutate(ae(e))}catch(t){throw c(t)}},resume:async(...e)=>{try{return await this.trpc.subscription.resume.mutate(ae(e))}catch(t){throw c(t)}},remove:async(...e)=>{try{return await this.trpc.subscription.remove.mutate(ae(e))}catch(t){throw c(t)}},bindCredentials:async(...e)=>{try{return await this.trpc.subscription.bindCredentials.mutate(zi(e))}catch(t){throw c(t)}},unbindCredentials:async(...e)=>{try{return await this.trpc.subscription.unbindCredentials.mutate(Qi(e))}catch(t){throw c(t)}}};action={acquireLease:async(e,t,r,i,o,s)=>{try{return await this.trpc.action.acquireLease.mutate({orgName:e,repoName:t,subscriptionName:r,holderId:i,holderType:o,graceMs:s?.graceMs,ttlMs:s?.ttlMs})}catch(a){throw c(a)}},heartbeatLease:async(e,t,r,i,o)=>{try{return await this.trpc.action.heartbeatLease.mutate({orgName:e,repoName:t,subscriptionName:r,holderId:i,ttlMs:o})}catch(s){throw c(s)}},releaseLease:async(e,t,r,i)=>{try{return await this.trpc.action.releaseLease.mutate({orgName:e,repoName:t,subscriptionName:r,holderId:i})}catch(o){throw c(o)}},claimDelivery:async(e,t,r,i)=>{let o=typeof r=="string"?{runId:r}:r;try{return await this.trpc.action.claimDelivery.mutate({orgName:e,repoName:t,...o,holderId:i})}catch(s){throw c(s)}},completeDelivery:async(e,t,r,i)=>{let o=typeof r=="string"?{runId:r}:r;try{return await this.trpc.action.completeDelivery.mutate({orgName:e,repoName:t,...o,holderId:i})}catch(s){throw c(s)}},liveFeed:async(e,t,r,i)=>{try{return await this.trpc.action.liveFeed.query({orgName:e,repoName:t,subscriptionName:r,limit:i?.limit,cursor:i?.cursor})}catch(o){throw c(o)}},liveFeedIter:(e,t,r,i)=>O(o=>this.action.liveFeed(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),liveFeedAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.action.liveFeed(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)},listRuns:async(e,t,r)=>{try{return await this.trpc.action.listRuns.query({orgName:e,repoName:t,runId:r?.runId,subscriptionName:r?.subscriptionName,status:r?.status,outcome:r?.outcome,since:r?.since,cursor:r?.cursor,limit:r?.limit})}catch(i){throw c(i)}},listRunsIter:(e,t,r)=>O(i=>this.action.listRuns(e,t,{...r,since:i===void 0?r?.since:void 0,cursor:i}),i=>i.items,r?.cursor),listRunsAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.action.listRuns(e,t,{...o,since:s===void 0?o.since:void 0,cursor:s}),s=>s.items,i,o.cursor)},latestRuns:async(e,t)=>{try{return await this.trpc.action.latestRuns.query({orgName:e,repoName:t})}catch(r){throw c(r)}},runStats:async(e,t,r)=>{try{return await this.trpc.action.runStats.query({orgName:e,repoName:t,subscriptionName:r?.subscriptionName,since:r?.since})}catch(i){throw c(i)}},getRunAttempts:async(e,t,r)=>{try{return await this.trpc.action.getRunAttempts.query({orgName:e,repoName:t,runId:r})}catch(i){throw c(i)}},listNotifications:async(e,t,r)=>{try{return await this.trpc.action.listNotifications.query({orgName:e,repoName:t,since:r?.since,limit:r?.limit})}catch(i){throw c(i)}}};collection={create:async(e,t,r)=>{try{return Xi(r.type,r),await this.trpc.collection.create.mutate({orgName:e,repoName:t,eventRequestId:r.eventRequestId,type:r.type,name:r.name,members:r.members,from:r.from,add:r.add,remove:r.remove,replaceMembers:r.replaceMembers,query:r.query,sourceOrgName:r.sourceRepo?.orgName,sourceRepoName:r.sourceRepo?.repoName,skipExisting:r.skipExisting,message:r.message,committer:r.committer})}catch(i){throw c(i)}},members:async(e,t,r,i)=>{try{return await this.trpc.collection.members.query({orgName:e,repoName:t,wref:r,version:i?.version,limit:i?.limit,cursor:i?.cursor,shape:i?.shape})}catch(o){throw c(o)}},membersIter:(e,t,r,i)=>{let o=i?.version;return O(async s=>{let a=await this.collection.members(e,t,r,{...i,version:o,cursor:s});return o??=a.version,a},s=>s.items,i?.cursor)},membersAll:async(e,t,r,i)=>{let{max:o,...s}=i??{},a=s.version;return await v(async u=>{let d=await this.collection.members(e,t,r,{...s,version:a,cursor:u});return a??=d.version,d},u=>u.items,o,s.cursor)},contains:async(e,t,r,i,o)=>{try{return await this.trpc.collection.contains.query({orgName:e,repoName:t,wref:r,version:o?.version,members:i,position:o?.position,shape:o?.shape})}catch(s){throw c(s)}},diff:async(e,t,r,i,o)=>{try{return await this.trpc.collection.diff.query({orgName:e,repoName:t,leftWref:r,rightWref:i,leftVersion:o?.leftVersion,rightVersion:o?.rightVersion,mode:o?.mode,shape:o?.shape})}catch(s){throw c(s)}},revise:async(e,t,r,i)=>{try{if(ct(i.query)&&!_e(i.query))throw new f("VALIDATION_ERROR","Selector-backed collection sources require shape, about, match, componentRef, or where; kind and excludeComponents only narrow an existing selector.");if(i.sourceRepo&&!_e(i.query))throw new f("VALIDATION_ERROR","sourceRepo requires a selector-backed collection query");if(i.sourceRepo&&Xr(i))throw new f("VALIDATION_ERROR","sourceRepo cannot be combined with explicit members; use canonical wh:org/repo/... member wrefs or omit sourceRepo.");return await this.trpc.collection.revise.mutate({orgName:e,repoName:t,eventRequestId:i.eventRequestId,wref:r,members:i.members,add:i.add,remove:i.remove,query:i.query,sourceOrgName:i.sourceRepo?.orgName,sourceRepoName:i.sourceRepo?.repoName,message:i.message,committer:i.committer})}catch(o){throw c(o)}},stats:async(e,t,r,i)=>{try{return await this.trpc.collection.stats.query({orgName:e,repoName:t,wref:r,version:i?.version,shape:i?.shape})}catch(o){throw c(o)}}};view={evaluate:async(e,t,r,i)=>{try{return await this.trpc.view.evaluate.query({orgName:e,repoName:t,wref:r,limit:i?.limit,cursor:i?.cursor})}catch(o){throw c(o)}},evaluateIter:(e,t,r,i)=>O(o=>this.view.evaluate(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),evaluateAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.view.evaluate(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)}};grant=ur(()=>this.trpc,c);thing={head:async(e,t,r)=>{try{return await this.trpc.thing.head.query({orgName:e,repoName:t,shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,includeValidatedShapes:r?.includeValidatedShapes,kind:Ae(r?.kind),match:r?.match,dataMode:r?.dataMode,includeRetracted:r?.includeRetracted,limit:r?.limit,cursor:r?.cursor,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,excludeInfraShapes:r?.excludeInfraShapes,where:r?.where,sinceRepoSeq:r?.sinceRepoSeq})}catch(i){throw c(i)}},headIter:(e,t,r)=>O(i=>this.thing.head(e,t,{...r,cursor:i}),i=>i.items,r?.cursor),headAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.thing.head(e,t,{...o,cursor:s}),s=>s.items,i,o.cursor)},headChanges:async(e,t,r)=>(Fr(r?.sinceRepoSeq),await $r(i=>this.thing.head(e,t,{...r,includeRetracted:true,cursor:i}))),get:async(e,t,r,i,o)=>{try{return await this.trpc.thing.get.query({orgName:e,repoName:t,wref:r,version:i,includeRetracted:o?.includeRetracted,dataMode:o?.dataMode})}catch(s){throw c(s)}},getWithLease:async(e,t,r,i)=>{try{return await this.trpc.thing.getWithLease.mutate({orgName:e,repoName:t,wref:r,ttlMs:i?.ttlMs})}catch(o){throw c(o)}},releaseLease:async(e,t,r,i)=>{try{await this.trpc.thing.releaseLease.mutate({orgName:e,repoName:t,wref:r,leaseId:i});}catch(o){throw c(o)}},graph:async(e,t,r,i)=>{try{return await this.trpc.thing.graph.query({orgName:e,repoName:t,wref:r,version:i?.version,depth:i?.depth,limit:i?.limit})}catch(o){throw c(o)}},getMany:async(e,t,r,i,o)=>{try{if(r.length===0)return {requested:0,items:[],missing:[]};let s=ke(o?.chunkSize,Ur,Vr),a=ke(o?.chunkConcurrency,Br,Hr),u=async m=>await this.trpc.thing.getMany.query({orgName:e,repoName:t,wrefs:m,version:i,includeRetracted:o?.includeRetracted,dataMode:o?.dataMode});if(r.length<=s)return await u(r);let d=Gr(r,s),l=[];for(let m=0;m<d.length;m+=a){let h=d.slice(m,m+a),g=await Promise.all(h.map(u));l.push(...g);}return {requested:r.length,items:l.flatMap(m=>m.items),missing:l.flatMap(m=>m.missing)}}catch(s){throw c(s)}},headVersions:async(e,t,r,i)=>{try{if(r.length===0)return {requested:0,items:[],missing:[]};let o=ke(i?.chunkSize,Ur,Vr),s=ke(i?.chunkConcurrency,Br,Hr),a=async l=>await this.trpc.thing.headVersions.query({orgName:e,repoName:t,wrefs:l});if(r.length<=o)return await a(r);let u=Gr(r,o),d=[];for(let l=0;l<u.length;l+=s){let m=u.slice(l,l+s),h=await Promise.all(m.map(a));d.push(...h);}return {requested:r.length,items:d.flatMap(l=>l.items),missing:d.flatMap(l=>l.missing)}}catch(o){throw c(o)}},history:async(e,t,r)=>{try{return await this.trpc.thing.history.query({orgName:e,repoName:t,wref:r.wref,shape:r.shape,declaredShape:r.declaredShape,about:r.about,includeRetracted:r.includeRetracted,resolveCollections:r.resolveCollections,match:r.match,limit:r.limit,cursor:r.cursor})}catch(i){throw c(i)}},historyIter:(e,t,r)=>O(i=>this.thing.history(e,t,{...r,cursor:i}),i=>i.versions,r.cursor),historyAll:async(e,t,r)=>{let{max:i,...o}=r;return await v(s=>this.thing.history(e,t,{...o,cursor:s}),s=>s.versions,i,o.cursor)},rename:async(e,t,r,i,o)=>{try{return await this.trpc.thing.rename.mutate({orgName:e,repoName:t,name:r,newName:i,eventRequestId:o.eventRequestId})}catch(s){throw c(s)}},remove:async(e,t,r,i)=>{try{return await this.trpc.thing.remove.mutate({orgName:e,repoName:t,wref:r,expectedVersion:i.expectedVersion,eventRequestId:i.eventRequestId})}catch(o){throw c(o)}},rewrite:async(e,t,r,i)=>{try{return await this.trpc.thing.rewrite.mutate({orgName:e,repoName:t,wref:r,version:i.version,shapes:i.shapes,data:i.data,eventRequestId:i.eventRequestId})}catch(o){throw c(o)}},resolve:async(e,t,r)=>{try{return await this.trpc.thing.resolve.query({orgName:e,repoName:t,wref:r})}catch(i){throw c(i)}},about:async(e,t,r,i)=>{try{return await this.trpc.thing.about.query({orgName:e,repoName:t,wref:r,shape:i?.shape,match:i?.match,includeRetracted:i?.includeRetracted,depth:i?.depth,resolveCollections:i?.resolveCollections,role:i?.role,limit:i?.limit,cursor:i?.cursor,where:i?.where})}catch(o){throw c(o)}},aboutIter:(e,t,r,i)=>O(o=>this.thing.about(e,t,r,{...i,cursor:o}),o=>o.assertions,i?.cursor),aboutAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.thing.about(e,t,r,{...s,cursor:a}),a=>a.assertions,o,s.cursor)},query:async(e,t,r)=>{try{return await this.trpc.thing.query.query({orgName:e,repoName:t,shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,includeValidatedShapes:r?.includeValidatedShapes,about:r?.about,affirmedAbout:r?.affirmedAbout,kind:Ae(r?.kind),match:r?.match,includeRetracted:r?.includeRetracted,resolveCollections:r?.resolveCollections,role:r?.role,limit:r?.limit,cursor:r?.cursor,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,excludeInfraShapes:r?.excludeInfraShapes,where:r?.where,sinceRepoSeq:r?.sinceRepoSeq})}catch(i){throw c(i)}},queryIter:(e,t,r)=>O(i=>this.thing.query(e,t,{...r,cursor:i}),i=>i.items,r?.cursor),queryAll:async(e,t,r)=>{let{max:i,...o}=r??{};return await v(s=>this.thing.query(e,t,{...o,cursor:s}),s=>s.items,i,o.cursor)},queryChanges:async(e,t,r)=>(Fr(r?.sinceRepoSeq),await $r(i=>this.thing.query(e,t,{...r,includeRetracted:true,cursor:i}))),search:async(e,t,r,i)=>{try{return await this.trpc.thing.search.query({orgName:e,repoName:t,query:r,shape:i?.shape,about:i?.about,affirmedAbout:i?.affirmedAbout,kind:Ae(i?.kind),match:i?.match,includeRetracted:i?.includeRetracted,resolveCollections:i?.resolveCollections,limit:i?.limit,cursor:i?.cursor,componentRef:i?.componentRef,excludeComponents:i?.excludeComponents,excludeInfraShapes:i?.excludeInfraShapes,mode:i?.mode,nameMatch:i?.nameMatch})}catch(o){throw c(o)}},searchIter:(e,t,r,i)=>O(o=>this.thing.search(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),searchAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.thing.search(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)},count:async(e,t,r)=>{try{return await this.trpc.thing.count.query({orgName:e,repoName:t,shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,about:r?.about,affirmedAbout:r?.affirmedAbout,kind:Ae(r?.kind),match:r?.match,includeRetracted:r?.includeRetracted,resolveCollections:r?.resolveCollections,componentRef:r?.componentRef,excludeComponents:r?.excludeComponents,excludeInfraShapes:r?.excludeInfraShapes,where:r?.where,sinceRepoSeq:r?.sinceRepoSeq})}catch(i){throw c(i)}},refs:async(e,t,r,i)=>{try{return await this.trpc.thing.refs.query({orgName:e,repoName:t,wref:r,direction:i?.direction,fieldPath:i?.fieldPath,binding:i?.binding,limit:i?.limit,cursor:i?.cursor})}catch(o){throw c(o)}},refsIter:(e,t,r,i)=>O(o=>this.thing.refs(e,t,r,{...i,cursor:o}),o=>o.items,i?.cursor),refsAll:async(e,t,r,i)=>{let{max:o,...s}=i??{};return await v(a=>this.thing.refs(e,t,r,{...s,cursor:a}),a=>a.items,o,s.cursor)}};live={thingHead:async(e,t,r,i)=>this.watchRepoQuery(e,t,r?.signal,()=>this.thing.head(e,t,{shape:r?.shape,declaredShape:r?.declaredShape,shapeless:r?.shapeless,includeValidatedShapes:r?.includeValidatedShapes,kind:r?.kind,match:r?.match,dataMode:r?.dataMode,limit:r?.limit,cursor:r?.cursor,includeRetracted:r?.includeRetracted,where:r?.where}),i),thingHistory:async(e,t,r,i)=>this.watchRepoQuery(e,t,r.signal,()=>this.thing.history(e,t,{wref:r.wref,shape:r.shape,declaredShape:r.declaredShape,about:r.about,resolveCollections:r.resolveCollections,match:r.match,limit:r.limit,cursor:r.cursor,includeRetracted:r.includeRetracted}),i),subscriptionLog:async(e,t,r,i,o)=>this.watchRepoQuery(e,t,i?.signal,()=>this.action.liveFeed(e,t,r,{limit:i?.limit,cursor:i?.cursor}),o),subscribe:async(e,t,r,i)=>{let o=new AbortController,s=zr(r?.signal,o),a=0,u=(async()=>{let d=await this.trpc.live.issueTicket.mutate({orgName:e,repoName:t}),l=await this.openSse(d.ticket,s,async m=>{if(m.type!=="invalidate")return;let h=m.data;a++,await i({topic:h.topic,affectedShapes:h.affectedShapes,affectedThings:h.affectedThings,affectedTargets:h.affectedTargets,hasNewCommit:h.hasNewCommit});});return await l.ready,s.aborted?{updates:a}:(await l.closed,{updates:a})})();return {close(){o.abort();},closed:u}}};token={create:async e=>{try{return await this.trpc.token.create.mutate(e)}catch(t){throw c(t)}},list:async e=>{try{return await this.trpc.token.list.query(e?.includeInactive?{includeInactive:!0}:void 0)}catch(t){throw c(t)}},get:async e=>{try{return await this.trpc.token.get.query({name:e})}catch(t){throw c(t)}},revoke:async e=>{try{return await this.trpc.token.revoke.mutate({name:e})}catch(t){throw c(t)}}};stream={append:async e=>{try{return await this.trpc.stream.append.mutate(e)}catch(t){throw c(t)}}};credential={createSet:async(e,t,r,i)=>{try{return await this.trpc.credential.createSet.mutate({orgName:e,repoName:t,name:r,scope:i?.scope??"repo",description:i?.description})}catch(o){throw c(o)}},listSets:async(e,t)=>{try{return await this.trpc.credential.listSets.query({orgName:e,repoName:t})}catch(r){throw c(r)}},getSet:async(e,t,r)=>{try{return await this.trpc.credential.getSet.query({orgName:e,repoName:t,name:r})}catch(i){throw c(i)}},setKey:async(e,t,r,i,o)=>{try{return await this.trpc.credential.setKey.mutate({orgName:e,repoName:t,setName:r,keyName:i,value:o})}catch(s){throw c(s)}},setKeys:async(e,t,r,i)=>{try{return await this.trpc.credential.setKeys.mutate({orgName:e,repoName:t,setName:r,secrets:i})}catch(o){throw c(o)}},unsetKey:async(e,t,r,i)=>{try{return await this.trpc.credential.unsetKey.mutate({orgName:e,repoName:t,setName:r,keyName:i})}catch(o){throw c(o)}},deleteSet:async(e,t,r)=>{try{return await this.trpc.credential.deleteSet.mutate({orgName:e,repoName:t,setName:r})}catch(i){throw c(i)}},listAuditLog:async(e,t,r,i)=>{try{return await this.trpc.credential.listAuditLog.query({orgName:e,repoName:t,setName:r,limit:i?.limit})}catch(o){throw c(o)}},revokeSet:async(e,t,r,i)=>{try{return await this.trpc.credential.revokeSet.mutate({orgName:e,repoName:t,setName:r,reason:i?.reason})}catch(o){throw c(o)}}};credentials=this.credential;constructor(e,t){let r=typeof e=="string"?t:e;Wi(r);let i=typeof e=="string"?e:e?.apiUrl??Mr;if(this.apiUrl=i,this.fetchImpl=r?.fetch,this.accessToken=r?.accessToken??r?.auth?.getToken,this.functionLogMode=r?.functionLogs??"off",this.clientIdentity={name:r?.client?.name??u,version:r?.client?.version??it},this.#e=Object.freeze([...$i(r?.clientFlags)]),this.decorateResponses=r?.decorateResponses??false,typeof this.accessToken=="function"){let a=this.accessToken;this.getToken=async()=>await a();}else if(this.accessToken){let a=this.accessToken;this.getToken=async()=>a;}let o=`${i.replace(/\/$/,"")}/trpc`,s=((a,u)=>this.fetchWithAuth(a,u,"trpc"));Object.defineProperty(this,"trpc",{value:createTRPCProxyClient({links:[this.createLegacyWrefsLink(),this.createCompatibilityLink(),cr({enabled:this.decorateResponses,getClient:()=>this}),splitLink({condition:a=>Gi.has(a.path),true:httpLink({url:o,fetch:s,methodOverride:"POST"}),false:httpBatchLink({url:o,fetch:s,methodOverride:"POST"})})]}),enumerable:false,writable:false,configurable:true});}get clientFlags(){return this.#e}withAccessToken(e){let t={apiUrl:this.apiUrl,fetch:this.fetchImpl,accessToken:e,client:this.clientIdentity,clientFlags:this.clientFlags,decorateResponses:this.decorateResponses},r=new n(t);return V(this)&&Ft(r),r}actions=this.action;async openSse(e,t,r){let i=await this.fetchWithAuth(`${this.apiUrl.replace(/\/$/,"")}/sse?ticket=${encodeURIComponent(e)}`,{headers:{accept:"text/event-stream"},signal:t});if(!i.ok)throw new f("BACKEND",`SSE request failed with status ${i.status}`,i.status);let o=i.body?.getReader();if(!o)throw new f("BACKEND","SSE response body is missing");let s=()=>{},a=new Promise(d=>{s=d;}),u=(async()=>{let d=new TextDecoder,l="";try{for(;;){let{done:m,value:h}=await o.read();if(m)break;for(l+=d.decode(h,{stream:!0}).replaceAll(`\r
|
|
4
4
|
`,`
|
|
5
5
|
`);;){let g=l.indexOf(`
|
|
6
6
|
|
|
7
7
|
`);if(g===-1)break;let b=l.slice(0,g);l=l.slice(g+2);let S=po(b);if(S){if(S.type==="ready"){s();continue}await r(S);}}}}catch(m){if(co(m)||t.aborted)return;throw m}finally{s(),o.releaseLock();}})();return {ready:a,closed:u}}applyClientHeader(e){e.has(t)||e.set(t,x$1(this.clientIdentity.name,this.clientIdentity.version)),this.clientFlags.length>0&&!e.has(o)&&e.set(o,s(this.clientFlags));}async fetchWithAuth(e,t,r="rest"){let i=(t?.method??"GET").toUpperCase(),o=this.legacyWrefsRefusal(r==="trpc"||i==="GET"||i==="HEAD"?"read":"write");if(o)throw o;let s=this.fetchImpl??globalThis.fetch,a=new Headers(t?.headers),u=await at(this.accessToken);u&&a.set("authorization",`Bearer ${u}`),this.applyClientHeader(a);let d=async m=>{try{return await s(e,m)}catch(h){throw io(h)?new f("NETWORK",oo(this.apiUrl)):h}},l=await d({...t,headers:a});if(l.status===401&&typeof this.accessToken=="function"){let m=await at(this.accessToken);if(m&&m!==u){let h=new Headers(t?.headers);return h.set("authorization",`Bearer ${m}`),this.applyClientHeader(h),d({...t,headers:h})}}return l}async requestResponse(e,t){let r=await this.fetchWithAuth(`${this.apiUrl.replace(/\/$/,"")}${e}`,t);if(!r.ok)throw await this.httpResponseError(r);return r}thingShapesReader(e,t){return async r=>await this.thing.getMany(e,t,r)}async prepareStreamingSubmissionRequest(e){let t=this.legacyWrefsRefusal("raw-commit");if(t)throw t;let r=this.fetchImpl??globalThis.fetch,i=new Headers({accept:"application/x-ndjson","content-type":"application/x-ndjson"}),o=await at(this.accessToken);o&&i.set("authorization",`Bearer ${o}`),this.applyClientHeader(i);let s=`${this.apiUrl.replace(/\/$/,"")}${e}`;return {dispatch:async(a,u)=>await r(s,{method:"POST",headers:i,body:a,signal:u,duplex:"half"}),httpError:async a=>await this.httpResponseError(a)}}async httpResponseError(e){let t=`Request failed with status ${e.status}`,r=tn(e.status),i,o,s;try{let a=await e.json();typeof a.error?.message=="string"&&(t=a.error.message),typeof a.error?.code=="string"&&(r=a.error.code,i=a.error.code),typeof a.error?.hint=="string"&&(o=a.error.hint),typeof a.error?.retryAfter=="number"&&(s=a.error.retryAfter);}catch{}return new f(r,t,e.status,o,s,i)}async requestJson(e,t){return await(await this.requestResponse(e,t)).json()}async watchRepoQuery(e,t,r,i,o){let s=new AbortController,a=zr(r,s),u=0,d=(async()=>{let l=async()=>{let g=await i();u+=1,await o(g);},m=await this.trpc.live.issueTicket.mutate({orgName:e,repoName:t}),h=await this.openSse(m.ticket,a,async g=>{g.type==="invalidate"&&await l();});return await h.ready,a.aborted?{updates:u}:(await l(),await h.closed,{updates:u})})();return {close(){s.abort();},closed:d}}};function tn(n){switch(n){case 400:return "VALIDATION_ERROR";case 401:return "UNAUTHENTICATED";case 403:return "FORBIDDEN";case 404:return "NOT_FOUND";case 409:return "CONFLICT";case 429:return "RATE_LIMITED";default:return "BACKEND"}}async function at(n){if(n)return typeof n=="string"?n:n()}function zr(n,e){return n?n.aborted?(e.abort(),e.signal):(n.addEventListener("abort",()=>e.abort(),{once:true}),e.signal):e.signal}function po(n){let e="message",t=[];for(let i of n.split(`
|
|
8
8
|
`))if(!(!i||i.startsWith(":"))){if(i.startsWith("event:")){e=i.slice(6).trim();continue}i.startsWith("data:")&&t.push(i.slice(5).trim());}if(t.length===0)return null;let r=t.join(`
|
|
9
|
-
`);return {type:e,data:JSON.parse(r)}}function co(n){return n instanceof Error&&n.name==="AbortError"}export{R as A,oe as B,K as C,hr as D,se as E,yr as F,D as G,it as H,x as I,Pi as J,Aa as K,Mr as L,Ta as M,st as N,c as O,_a as P,ro as Q,Na as R,io as S,oo as T,Pa as U,jr as V,f as a,un as b,y as c,dn as d,Ut as e,Wt as f,H as g,bn as h,F as i,Se as j,we as k,k as l,A as m,We as n,Jt as o,re as p,W as q,er as r,Nn as s,Qe as t,sr as u,ar as v,pr as w,Ie as x,Vn as y,G as z};//# sourceMappingURL=chunk-
|
|
10
|
-
//# sourceMappingURL=chunk-
|
|
9
|
+
`);return {type:e,data:JSON.parse(r)}}function co(n){return n instanceof Error&&n.name==="AbortError"}export{R as A,oe as B,K as C,hr as D,se as E,yr as F,D as G,it as H,x as I,Pi as J,Aa as K,Mr as L,Ta as M,st as N,c as O,_a as P,ro as Q,Na as R,io as S,oo as T,Pa as U,jr as V,f as a,un as b,y as c,dn as d,Ut as e,Wt as f,H as g,bn as h,F as i,Se as j,we as k,k as l,A as m,We as n,Jt as o,re as p,W as q,er as r,Nn as s,Qe as t,sr as u,ar as v,pr as w,Ie as x,Vn as y,G as z};//# sourceMappingURL=chunk-6QNGVCSD.js.map
|
|
10
|
+
//# sourceMappingURL=chunk-6QNGVCSD.js.map
|