@intentic/sandbox-contract 1.245.0 → 1.247.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.
Files changed (247) hide show
  1. package/README.md +17 -1
  2. package/dist/batch-runs.d.ts +2 -0
  3. package/dist/batch-runs.d.ts.map +1 -1
  4. package/dist/batch-runs.js +1 -0
  5. package/dist/batch-runs.js.map +1 -1
  6. package/dist/command-classes.d.ts +6 -3
  7. package/dist/command-classes.d.ts.map +1 -1
  8. package/dist/command-classes.js +43 -18
  9. package/dist/command-classes.js.map +1 -1
  10. package/dist/contracts/{cursor.contract.d.ts → accounts.contract.d.ts} +102 -3
  11. package/dist/contracts/accounts.contract.d.ts.map +1 -0
  12. package/dist/contracts/accounts.contract.js +61 -0
  13. package/dist/contracts/accounts.contract.js.map +1 -0
  14. package/dist/contracts/agent.contract.d.ts +19 -0
  15. package/dist/contracts/agent.contract.d.ts.map +1 -1
  16. package/dist/contracts/agents.contract.d.ts +121 -0
  17. package/dist/contracts/agents.contract.d.ts.map +1 -1
  18. package/dist/contracts/agents.contract.js +4 -4
  19. package/dist/contracts/agents.contract.js.map +1 -1
  20. package/dist/contracts/ci.contract.d.ts +2 -0
  21. package/dist/contracts/ci.contract.d.ts.map +1 -1
  22. package/dist/contracts/host.contract.d.ts +35 -0
  23. package/dist/contracts/host.contract.d.ts.map +1 -1
  24. package/dist/contracts/host.contract.js +3 -2
  25. package/dist/contracts/host.contract.js.map +1 -1
  26. package/dist/contracts/personas.contract.d.ts +4 -2
  27. package/dist/contracts/personas.contract.d.ts.map +1 -1
  28. package/dist/contracts/runner.contract.d.ts +2 -2
  29. package/dist/contracts/settings.contract.d.ts +58 -20
  30. package/dist/contracts/settings.contract.d.ts.map +1 -1
  31. package/dist/contracts/system.contract.d.ts +80 -30
  32. package/dist/contracts/system.contract.d.ts.map +1 -1
  33. package/dist/contracts/system.contract.js +26 -17
  34. package/dist/contracts/system.contract.js.map +1 -1
  35. package/dist/contracts/usage.contract.d.ts +22 -0
  36. package/dist/contracts/usage.contract.d.ts.map +1 -1
  37. package/dist/contracts/usage.contract.js +19 -0
  38. package/dist/contracts/usage.contract.js.map +1 -1
  39. package/dist/definition.d.ts +20 -28
  40. package/dist/definition.d.ts.map +1 -1
  41. package/dist/documents.d.ts +0 -1
  42. package/dist/documents.d.ts.map +1 -1
  43. package/dist/documents.js +1 -2
  44. package/dist/documents.js.map +1 -1
  45. package/dist/embed.d.ts +23 -0
  46. package/dist/embed.d.ts.map +1 -0
  47. package/dist/embed.js +84 -0
  48. package/dist/embed.js.map +1 -0
  49. package/dist/events.d.ts +21 -0
  50. package/dist/events.d.ts.map +1 -1
  51. package/dist/events.js +5 -2
  52. package/dist/events.js.map +1 -1
  53. package/dist/fast-tier.js +1 -1
  54. package/dist/fast-tier.js.map +1 -1
  55. package/dist/history-state.d.ts.map +1 -1
  56. package/dist/history-state.js +2 -0
  57. package/dist/history-state.js.map +1 -1
  58. package/dist/index.d.ts +453 -306
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +7 -15
  61. package/dist/index.js.map +1 -1
  62. package/dist/model-pins.d.ts +17 -0
  63. package/dist/model-pins.d.ts.map +1 -0
  64. package/dist/{quick-model.js → model-pins.js} +18 -11
  65. package/dist/model-pins.js.map +1 -0
  66. package/dist/model-roles.d.ts +144 -0
  67. package/dist/model-roles.d.ts.map +1 -0
  68. package/dist/model-roles.js +129 -0
  69. package/dist/model-roles.js.map +1 -0
  70. package/dist/peer-dial.d.ts +33 -0
  71. package/dist/peer-dial.d.ts.map +1 -0
  72. package/dist/peer-dial.js +79 -0
  73. package/dist/peer-dial.js.map +1 -0
  74. package/dist/peer-mcp-server.d.ts +36 -0
  75. package/dist/peer-mcp-server.d.ts.map +1 -0
  76. package/dist/peer-mcp-server.js +71 -0
  77. package/dist/peer-mcp-server.js.map +1 -0
  78. package/dist/provider-specs.d.ts +38 -20
  79. package/dist/provider-specs.d.ts.map +1 -1
  80. package/dist/provider-specs.js +39 -13
  81. package/dist/provider-specs.js.map +1 -1
  82. package/dist/runtime-state.d.ts +1 -1
  83. package/dist/runtime-state.js +1 -1
  84. package/dist/runtime-state.js.map +1 -1
  85. package/dist/safety-policy.d.ts +12 -3
  86. package/dist/safety-policy.d.ts.map +1 -1
  87. package/dist/safety-policy.js +30 -5
  88. package/dist/safety-policy.js.map +1 -1
  89. package/dist/schemas/agent.d.ts +27 -8
  90. package/dist/schemas/agent.d.ts.map +1 -1
  91. package/dist/schemas/agent.js +10 -4
  92. package/dist/schemas/agent.js.map +1 -1
  93. package/dist/schemas/agents.d.ts +42 -0
  94. package/dist/schemas/agents.d.ts.map +1 -1
  95. package/dist/schemas/agents.js +25 -4
  96. package/dist/schemas/agents.js.map +1 -1
  97. package/dist/schemas/automations.d.ts +11 -2
  98. package/dist/schemas/automations.d.ts.map +1 -1
  99. package/dist/schemas/automations.js +1 -1
  100. package/dist/schemas/automations.js.map +1 -1
  101. package/dist/schemas/ci.d.ts +6 -0
  102. package/dist/schemas/ci.d.ts.map +1 -1
  103. package/dist/schemas/ci.js +3 -2
  104. package/dist/schemas/ci.js.map +1 -1
  105. package/dist/schemas/context.d.ts +30 -0
  106. package/dist/schemas/context.d.ts.map +1 -0
  107. package/dist/schemas/context.js +34 -0
  108. package/dist/schemas/context.js.map +1 -0
  109. package/dist/schemas/{computers.d.ts → devices.d.ts} +154 -60
  110. package/dist/schemas/devices.d.ts.map +1 -0
  111. package/dist/schemas/devices.js +157 -0
  112. package/dist/schemas/devices.js.map +1 -0
  113. package/dist/schemas/hosts.d.ts +12 -0
  114. package/dist/schemas/hosts.d.ts.map +1 -1
  115. package/dist/schemas/hosts.js +1 -0
  116. package/dist/schemas/hosts.js.map +1 -1
  117. package/dist/schemas/issues.d.ts +0 -5
  118. package/dist/schemas/issues.d.ts.map +1 -1
  119. package/dist/schemas/issues.js +0 -1
  120. package/dist/schemas/issues.js.map +1 -1
  121. package/dist/schemas/personas.d.ts +5 -3
  122. package/dist/schemas/personas.d.ts.map +1 -1
  123. package/dist/schemas/personas.js +3 -2
  124. package/dist/schemas/personas.js.map +1 -1
  125. package/dist/schemas/plan-limits.d.ts +20 -0
  126. package/dist/schemas/plan-limits.d.ts.map +1 -1
  127. package/dist/schemas/plan-limits.js +21 -0
  128. package/dist/schemas/plan-limits.js.map +1 -1
  129. package/dist/schemas/provider-oauth.d.ts +48 -16
  130. package/dist/schemas/provider-oauth.d.ts.map +1 -1
  131. package/dist/schemas/provider-oauth.js +22 -20
  132. package/dist/schemas/provider-oauth.js.map +1 -1
  133. package/dist/schemas/settings.d.ts +42 -16
  134. package/dist/schemas/settings.d.ts.map +1 -1
  135. package/dist/schemas/settings.js +22 -28
  136. package/dist/schemas/settings.js.map +1 -1
  137. package/dist/schemas/terminal.js +9 -9
  138. package/dist/schemas/terminal.js.map +1 -1
  139. package/dist/schemas/usage.d.ts +5 -2
  140. package/dist/schemas/usage.d.ts.map +1 -1
  141. package/dist/schemas/usage.js +5 -2
  142. package/dist/schemas/usage.js.map +1 -1
  143. package/dist/shell-regions.d.ts +4 -0
  144. package/dist/shell-regions.d.ts.map +1 -0
  145. package/dist/shell-regions.js +156 -0
  146. package/dist/shell-regions.js.map +1 -0
  147. package/dist/workspace-state.d.ts +8 -0
  148. package/dist/workspace-state.d.ts.map +1 -1
  149. package/dist/workspace-state.js +13 -5
  150. package/dist/workspace-state.js.map +1 -1
  151. package/package.json +37 -4
  152. package/src/agent-catalog.ts +2 -2
  153. package/src/arrival.ts +3 -3
  154. package/src/batch-runs.test.ts +10 -5
  155. package/src/batch-runs.ts +10 -3
  156. package/src/command-classes.test.ts +195 -71
  157. package/src/command-classes.ts +148 -46
  158. package/src/contracts/accounts.contract.ts +94 -0
  159. package/src/contracts/agents.contract.ts +4 -3
  160. package/src/contracts/exit.contract.ts +2 -2
  161. package/src/contracts/host.contract.ts +17 -5
  162. package/src/contracts/settings.contract.ts +1 -1
  163. package/src/contracts/system.contract.ts +43 -24
  164. package/src/contracts/usage.contract.ts +31 -0
  165. package/src/contracts/vpn.contract.ts +2 -2
  166. package/src/documents.test.ts +2 -1
  167. package/src/documents.ts +7 -11
  168. package/src/embed.test.ts +68 -0
  169. package/src/embed.ts +164 -0
  170. package/src/events.ts +31 -4
  171. package/src/fast-tier.test.ts +1 -1
  172. package/src/fast-tier.ts +5 -5
  173. package/src/history-state.ts +12 -3
  174. package/src/host-protocol.ts +2 -2
  175. package/src/index.ts +8 -16
  176. package/src/model-order.ts +1 -1
  177. package/src/{quick-model.test.ts → model-pins.test.ts} +73 -29
  178. package/src/model-pins.ts +183 -0
  179. package/src/model-roles.ts +224 -0
  180. package/src/peer-dial.test.ts +203 -0
  181. package/src/peer-dial.ts +163 -0
  182. package/src/peer-mcp-server.test.ts +104 -0
  183. package/src/peer-mcp-server.ts +144 -0
  184. package/src/plan-pools.ts +1 -1
  185. package/src/prompt-complexity.test.ts +1 -1
  186. package/src/prompt-complexity.ts +2 -2
  187. package/src/provider-specs.test.ts +45 -18
  188. package/src/provider-specs.ts +147 -67
  189. package/src/routes.test.ts +6 -3
  190. package/src/runner-protocol.ts +1 -1
  191. package/src/runtime-state.ts +2 -2
  192. package/src/safety-policy.test.ts +88 -0
  193. package/src/safety-policy.ts +84 -14
  194. package/src/schemas/agent.ts +83 -30
  195. package/src/schemas/agents.ts +67 -6
  196. package/src/schemas/automations.ts +6 -4
  197. package/src/schemas/capabilities.ts +4 -4
  198. package/src/schemas/ci.ts +23 -6
  199. package/src/schemas/context.ts +87 -0
  200. package/src/schemas/{computers.ts → devices.ts} +190 -107
  201. package/src/schemas/hosts.ts +5 -1
  202. package/src/schemas/issues.ts +0 -4
  203. package/src/schemas/personas.ts +8 -3
  204. package/src/schemas/plan-limits.ts +50 -0
  205. package/src/schemas/provider-oauth.ts +49 -52
  206. package/src/schemas/settings.ts +105 -140
  207. package/src/schemas/terminal.ts +12 -12
  208. package/src/schemas/usage.ts +62 -27
  209. package/src/schemas/version-seam.test.ts +0 -1
  210. package/src/shell-regions.ts +289 -0
  211. package/src/versions.ts +2 -2
  212. package/src/webext-links.ts +2 -2
  213. package/src/webext-protocol.ts +2 -2
  214. package/src/workspace-state.test.ts +48 -1
  215. package/src/workspace-state.ts +48 -11
  216. package/dist/agent-run-model.d.ts +0 -4
  217. package/dist/agent-run-model.d.ts.map +0 -1
  218. package/dist/agent-run-model.js +0 -13
  219. package/dist/agent-run-model.js.map +0 -1
  220. package/dist/contracts/claude.contract.d.ts +0 -91
  221. package/dist/contracts/claude.contract.d.ts.map +0 -1
  222. package/dist/contracts/claude.contract.js +0 -50
  223. package/dist/contracts/claude.contract.js.map +0 -1
  224. package/dist/contracts/cursor.contract.d.ts.map +0 -1
  225. package/dist/contracts/cursor.contract.js +0 -50
  226. package/dist/contracts/cursor.contract.js.map +0 -1
  227. package/dist/contracts/grok.contract.d.ts +0 -36
  228. package/dist/contracts/grok.contract.d.ts.map +0 -1
  229. package/dist/contracts/grok.contract.js +0 -31
  230. package/dist/contracts/grok.contract.js.map +0 -1
  231. package/dist/contracts/keys.contract.d.ts +0 -81
  232. package/dist/contracts/keys.contract.d.ts.map +0 -1
  233. package/dist/contracts/keys.contract.js +0 -51
  234. package/dist/contracts/keys.contract.js.map +0 -1
  235. package/dist/quick-model.d.ts +0 -15
  236. package/dist/quick-model.d.ts.map +0 -1
  237. package/dist/quick-model.js.map +0 -1
  238. package/dist/schemas/computers.d.ts.map +0 -1
  239. package/dist/schemas/computers.js +0 -135
  240. package/dist/schemas/computers.js.map +0 -1
  241. package/src/agent-run-model.test.ts +0 -76
  242. package/src/agent-run-model.ts +0 -65
  243. package/src/contracts/claude.contract.ts +0 -71
  244. package/src/contracts/cursor.contract.ts +0 -74
  245. package/src/contracts/grok.contract.ts +0 -41
  246. package/src/contracts/keys.contract.ts +0 -79
  247. package/src/quick-model.ts +0 -155
@@ -135,7 +135,7 @@ const STATE_FILES = [
135
135
  * withSecretVault keeps credential VALUES off /work entirely, the manifest holds `__intentic_vaulted__`
136
136
  * where one used to be, reads rehydrate so no caller noticed, and main.ts sweeps a hand-written value out at
137
137
  * boot. What is left is the SHAPE of a connection: a kind, a URL, a username, a purpose, which permissions a
138
- * connected computer was granted.
138
+ * connected device was granted.
139
139
  *
140
140
  * WHICH KEYS THOSE ARE IS DERIVED, not listed a second time: `echo` already answers "what of this config may
141
141
  * a browser see", and the credential keys are exactly its complement (capabilities/secret-fields.ts). A kind
@@ -149,7 +149,7 @@ const STATE_FILES = [
149
149
  * one credential apiece, the shape personas.json has had all along, for the same reason.
150
150
  *
151
151
  * `versioned`, which is the point. Connecting this sandbox to a deployment orchestrator, or granting a
152
- * connected computer shell and screen control, is the largest change anyone makes to what it can DO, and it
152
+ * connected device shell and screen control, is the largest change anyone makes to what it can DO, and it
153
153
  * left a diff nowhere. One consequence worth stating rather than discovering: an identifier that pairs with a
154
154
  * credential. Komodo's api key beside its api secret, which its own connector card calls "like a database
155
155
  * user", is echoed, and therefore lands in the diff exactly as a database username would. */
@@ -738,6 +738,12 @@ const STATE_FILES = [
738
738
  * behaves, it holds no credential, and it belongs in a pull request, which is also what makes it
739
739
  * searchable, since every versioned entry already is. */
740
740
  { path: ".intentic/config/personas/", invalidates: ["personas"], portability: "carry", versioned: true },
741
+
742
+ /* THE CONTEXT SHELVES, one JSON file per shelf (schemas/context.ts): which part of the workspace a
743
+ * conversation opened on it carries. `versioned` and `carry` on the persona card's own argument, a shelf is
744
+ * a list of item ids and holds no credential, and which repositories a session can see is exactly the kind
745
+ * of decision that belongs in a pull request. */
746
+ { path: ".intentic/config/context/", invalidates: ["context"], portability: "carry", versioned: true },
741
747
  ] as const satisfies readonly WorkspaceStateFile[];
742
748
 
743
749
  export const WORKSPACE_STATE_FILES: readonly WorkspaceStateFile[] = STATE_FILES;
@@ -955,7 +961,7 @@ export const isReportedManifest = (relPath: string): boolean => REPORTED_MANIFES
955
961
  * and all of `identity` and `secrets` is in. That is not an accident of the grouping, it is a different question
956
962
  *, "would showing the bytes hand someone something" rather than "what kind of thing is this", so it keeps an
957
963
  * explicit list, just one that now names the folder each entry lives in. */
958
- const LOCKED_STATE_ENTRIES: ReadonlySet<string> = new Set([
964
+ export const LOCKED_STATE_ENTRIES: ReadonlySet<string> = new Set([
959
965
  "identity/owner.json",
960
966
  "identity/members.json",
961
967
  "identity/control-tokens.json",
@@ -971,28 +977,59 @@ const LOCKED_STATE_ENTRIES: ReadonlySet<string> = new Set([
971
977
  "claude.json",
972
978
  ]);
973
979
 
974
- /* Whether a workspace-root-relative path lands in that control plane, and so is shown locked rather than
975
- * opened. Scoped deliberately tight, matching the guard: only the ROOT `.intentic` counts (a repo's own nested
976
- * one is ordinary content) and only these entries within it, subtrees included, so a new provider dropped under
977
- * `auth/` is covered without a second edit.
980
+ /* WHERE THE CLI'S PLAN FILES LAND, workspace-relative — and the one thing inside a locked entry that is not
981
+ * the sandbox's own state, which is why it is declared here rather than beside the card that draws it.
982
+ *
983
+ * `~/.claude/plans` is a symlink onto this directory (sessions/session-store.ts links the SDK's conversation
984
+ * state onto the workspace volume), so a plan file has a HARNESS-OWNED address: no guessing whether prose is a
985
+ * plan, no threshold on length, the path says so.
986
+ *
987
+ * What lands there is a DOCUMENT ADDRESSED TO THE READER. `records/sessions` is locked because it holds the
988
+ * provider's own conversation state; a plan is the opposite of that — the chat renders its full text into the
989
+ * card asking the reader to approve it, so opening the file publishes nothing the transcript had not. Locked
990
+ * anyway, the one link the card offers into the workspace landed on a padlock reading "it holds something only
991
+ * the sandbox itself uses", about a document the sandbox had just asked the reader to approve. */
992
+ export const PLAN_DOCUMENTS_DIR = `${STATE_DIR}/records/sessions/claude/plans`;
993
+
994
+ /* WHICH locked entry a workspace-root-relative path belongs to, or undefined for a path that is not in the
995
+ * control plane at all. Scoped deliberately tight, matching the guard: only the ROOT `.intentic` counts (a
996
+ * repo's own nested one is ordinary content) and only these entries within it, subtrees included, so a new
997
+ * provider dropped under `auth/` is covered without a second edit.
978
998
  *
979
999
  * The ROOT's own `.git` joins them. It is the pointer to the shadow history repo kept off the workspace so the
980
1000
  * agent cannot rewrite its own past; a NESTED repo's `.git` is ordinary content and stays browsable.
981
1001
  *
1002
+ * The ENTRY rather than a boolean, because the screen that reports a refusal has to say what the file holds and
1003
+ * where the thing inside it is actually managed, and it can only do that from the name of the entry the path
1004
+ * matched — never from the leaf, which is a Chromium cookie jar or a mint-fresh session id. Keeping that lookup
1005
+ * keyed on this function's answer is what stops the browser's sentences from drifting off the daemon's list, as
1006
+ * they did through the regrouping: every one of them was still keyed on `sessions` and `auth` while the rule
1007
+ * had moved to `records/sessions` and `secrets/auth`, so every locked file in the product fell through to the
1008
+ * generic sentence and lost its way out.
1009
+ *
982
1010
  * Accepts either slash so a caller holding a platform path doesn't have to normalize first. */
983
- export const isLockedWorkspacePath = (relPath: string): boolean => {
1011
+ export const lockedWorkspaceEntry = (relPath: string): string | undefined => {
984
1012
  const segments = relPath.split(/[\\/]/).filter((segment) => segment !== "" && segment !== ".");
985
1013
  if (segments[0] === ".git") {
986
- return true;
1014
+ return ".git";
987
1015
  }
988
1016
  if (segments[0] !== STATE_DIR) {
989
- return false;
1017
+ return undefined;
1018
+ }
1019
+ const rel = segments.join("/");
1020
+ if (rel === PLAN_DOCUMENTS_DIR || rel.startsWith(`${PLAN_DOCUMENTS_DIR}/`)) {
1021
+ return undefined;
990
1022
  }
991
1023
  // Two segments, which covers both spellings in the set above: a grouped entry (`secrets/auth`) matches as
992
1024
  // written, and a bare root entry (`claude.json`) joins to itself because there is no second segment to add.
993
- return LOCKED_STATE_ENTRIES.has(segments.slice(1, 3).join("/"));
1025
+ const entry = segments.slice(1, 3).join("/");
1026
+ return LOCKED_STATE_ENTRIES.has(entry) ? entry : undefined;
994
1027
  };
995
1028
 
1029
+ // Whether a path lands in that control plane, and so is refused by the file API and shown locked rather than
1030
+ // opened. The question every guard asks; the entry above is for the one screen that has to name it.
1031
+ export const isLockedWorkspacePath = (relPath: string): boolean => lockedWorkspaceEntry(relPath) !== undefined;
1032
+
996
1033
  /* THE LOCKED ENTRIES THE ROOT REPO TRACKS, refused by the file API, and diffable anyway.
997
1034
  *
998
1035
  * `capabilities.json` is the only one today and the whole reason this exists. Both of its rules are right on
@@ -1,4 +0,0 @@
1
- import { type QuickModelSource } from "./quick-model.js";
2
- import type { AgentRunPin } from "./schemas/agent.js";
3
- export declare const resolveAgentRunModels: (sources: readonly QuickModelSource[], pinned: readonly AgentRunPin[]) => readonly AgentRunPin[];
4
- //# sourceMappingURL=agent-run-model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-run-model.d.ts","sourceRoot":"","sources":["../src/agent-run-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA2CtD,eAAO,MAAM,qBAAqB,YAAa,SAAS,gBAAgB,EAAE,UAAU,SAAS,WAAW,EAAE,KAAG,SAAS,WAAW,EAoBhI,CAAC"}
@@ -1,13 +0,0 @@
1
- import { quickModelKey } from "./quick-model.js";
2
- export const resolveAgentRunModels = (sources, pinned) => {
3
- const ready = new Set(sources.filter((source) => source.ready).map((source) => source.provider));
4
- const requested = pinned.filter((pin) => ready.has(pin.provider));
5
- const chain = [];
6
- for (const pin of requested) {
7
- if (!chain.some((held) => quickModelKey(held) === quickModelKey(pin))) {
8
- chain.push(pin);
9
- }
10
- }
11
- return chain;
12
- };
13
- //# sourceMappingURL=agent-run-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-run-model.js","sourceRoot":"","sources":["../src/agent-run-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AA4CxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAoC,EAAE,MAA8B,EAA0B,EAAE;IAClI,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAIjG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAQlE,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
@@ -1,91 +0,0 @@
1
- export declare const claudeContract: {
2
- start: import("@orpc/contract").ContractProcedureBuilderWithOutput<import("@orpc/contract").Schema<unknown, unknown>, import("zod").ZodObject<{
3
- authorizeUrl: import("zod").ZodString;
4
- verifier: import("zod").ZodString;
5
- state: import("zod").ZodString;
6
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
7
- exchange: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
8
- code: import("zod").ZodString;
9
- verifier: import("zod").ZodString;
10
- state: import("zod").ZodString;
11
- label: import("zod").ZodOptional<import("zod").ZodString>;
12
- }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
13
- id: import("zod").ZodString;
14
- label: import("zod").ZodString;
15
- email: import("zod").ZodOptional<import("zod").ZodString>;
16
- organization: import("zod").ZodOptional<import("zod").ZodString>;
17
- scope: import("zod").ZodOptional<import("zod").ZodString>;
18
- connectedAt: import("zod").ZodNumber;
19
- needsReauth: import("zod").ZodOptional<import("zod").ZodBoolean>;
20
- detail: import("zod").ZodOptional<import("zod").ZodString>;
21
- usage: import("zod").ZodOptional<import("zod").ZodObject<{
22
- windows: import("zod").ZodArray<import("zod").ZodObject<{
23
- kind: import("zod").ZodString;
24
- label: import("zod").ZodOptional<import("zod").ZodString>;
25
- utilization: import("zod").ZodNumber;
26
- resetsAt: import("zod").ZodOptional<import("zod").ZodNumber>;
27
- gates: import("zod").ZodUnion<readonly [import("zod").ZodLiteral<"all">, import("zod").ZodLiteral<"none">, import("zod").ZodObject<{
28
- models: import("zod").ZodArray<import("zod").ZodString>;
29
- }, import("zod/v4/core").$strip>]>;
30
- }, import("zod/v4/core").$strip>>;
31
- measuredAt: import("zod").ZodNumber;
32
- }, import("zod/v4/core").$strip>>;
33
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
34
- accounts: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
35
- force: import("zod").ZodDefault<import("zod").ZodCodec<import("zod").ZodString, import("zod").ZodBoolean>>;
36
- }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
37
- accounts: import("zod").ZodArray<import("zod").ZodObject<{
38
- id: import("zod").ZodString;
39
- label: import("zod").ZodString;
40
- email: import("zod").ZodOptional<import("zod").ZodString>;
41
- organization: import("zod").ZodOptional<import("zod").ZodString>;
42
- scope: import("zod").ZodOptional<import("zod").ZodString>;
43
- connectedAt: import("zod").ZodNumber;
44
- needsReauth: import("zod").ZodOptional<import("zod").ZodBoolean>;
45
- detail: import("zod").ZodOptional<import("zod").ZodString>;
46
- usage: import("zod").ZodOptional<import("zod").ZodObject<{
47
- windows: import("zod").ZodArray<import("zod").ZodObject<{
48
- kind: import("zod").ZodString;
49
- label: import("zod").ZodOptional<import("zod").ZodString>;
50
- utilization: import("zod").ZodNumber;
51
- resetsAt: import("zod").ZodOptional<import("zod").ZodNumber>;
52
- gates: import("zod").ZodUnion<readonly [import("zod").ZodLiteral<"all">, import("zod").ZodLiteral<"none">, import("zod").ZodObject<{
53
- models: import("zod").ZodArray<import("zod").ZodString>;
54
- }, import("zod/v4/core").$strip>]>;
55
- }, import("zod/v4/core").$strip>>;
56
- measuredAt: import("zod").ZodNumber;
57
- }, import("zod/v4/core").$strip>>;
58
- }, import("zod/v4/core").$strip>>;
59
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
60
- rename: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
61
- id: import("zod").ZodString;
62
- label: import("zod").ZodString;
63
- }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
64
- id: import("zod").ZodString;
65
- label: import("zod").ZodString;
66
- email: import("zod").ZodOptional<import("zod").ZodString>;
67
- organization: import("zod").ZodOptional<import("zod").ZodString>;
68
- scope: import("zod").ZodOptional<import("zod").ZodString>;
69
- connectedAt: import("zod").ZodNumber;
70
- needsReauth: import("zod").ZodOptional<import("zod").ZodBoolean>;
71
- detail: import("zod").ZodOptional<import("zod").ZodString>;
72
- usage: import("zod").ZodOptional<import("zod").ZodObject<{
73
- windows: import("zod").ZodArray<import("zod").ZodObject<{
74
- kind: import("zod").ZodString;
75
- label: import("zod").ZodOptional<import("zod").ZodString>;
76
- utilization: import("zod").ZodNumber;
77
- resetsAt: import("zod").ZodOptional<import("zod").ZodNumber>;
78
- gates: import("zod").ZodUnion<readonly [import("zod").ZodLiteral<"all">, import("zod").ZodLiteral<"none">, import("zod").ZodObject<{
79
- models: import("zod").ZodArray<import("zod").ZodString>;
80
- }, import("zod/v4/core").$strip>]>;
81
- }, import("zod/v4/core").$strip>>;
82
- measuredAt: import("zod").ZodNumber;
83
- }, import("zod/v4/core").$strip>>;
84
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
85
- disconnect: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
86
- id: import("zod").ZodString;
87
- }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
88
- ok: import("zod").ZodLiteral<true>;
89
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
90
- };
91
- //# sourceMappingURL=claude.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/claude.contract.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,cAAc;IACvB,KAAK;;;;;IASL,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;IAYR,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;IAUR,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;IASN,UAAU;;;;;CASb,CAAC"}
@@ -1,50 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { AccountIdSchema, AccountListQuerySchema, AccountRenameSchema, AuthorizeChallengeSchema, OauthAccountListSchema, OauthAccountSchema, OauthExchangeSchema, } from "../schemas/provider-oauth.js";
3
- import { OkSchema } from "../schemas/shared.js";
4
- export const claudeContract = {
5
- start: oc
6
- .route({
7
- method: "POST",
8
- path: "/claude/oauth/start",
9
- summary: "Begin connecting a Claude account",
10
- description: "Hands back the address to send somebody to, and the proof this sandbox will need to finish the exchange. The sandbox holds the credential afterwards, not the browser.",
11
- })
12
- .output(AuthorizeChallengeSchema),
13
- exchange: oc
14
- .route({
15
- method: "POST",
16
- path: "/claude/oauth/exchange",
17
- summary: "Finish connecting a Claude account",
18
- description: "Trades the code from the sign-in for stored tokens and answers with the account it just connected. A sandbox can hold several Claude accounts side by side.",
19
- })
20
- .input(OauthExchangeSchema)
21
- .output(OauthAccountSchema),
22
- accounts: oc
23
- .route({
24
- method: "GET",
25
- path: "/claude/accounts",
26
- summary: "Connected Claude accounts",
27
- description: "Each connected account with how full its plan limits were when last measured. Ask for a fresh measurement and it takes one before answering, which is slower.",
28
- })
29
- .input(AccountListQuerySchema)
30
- .output(OauthAccountListSchema),
31
- rename: oc
32
- .route({
33
- method: "POST",
34
- path: "/claude/account/rename",
35
- summary: "Rename a Claude account",
36
- description: "Changes the label one account shows under, so several are tellable apart.",
37
- })
38
- .input(AccountRenameSchema)
39
- .output(OauthAccountSchema),
40
- disconnect: oc
41
- .route({
42
- method: "POST",
43
- path: "/claude/account/disconnect",
44
- summary: "Disconnect a Claude account",
45
- description: "Clears the stored tokens for one account. The others stay connected.",
46
- })
47
- .input(AccountIdSchema)
48
- .output(OkSchema),
49
- };
50
- //# sourceMappingURL=claude.contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.contract.js","sourceRoot":"","sources":["../../src/contracts/claude.contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAUhD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,KAAK,EAAE,EAAE;SACJ,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,mCAAmC;QAC5C,WAAW,EACP,wKAAwK;KAC/K,CAAC;SACD,MAAM,CAAC,wBAAwB,CAAC;IACrC,QAAQ,EAAE,EAAE;SACP,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,oCAAoC;QAC7C,WAAW,EACP,6JAA6J;KACpK,CAAC;SACD,KAAK,CAAC,mBAAmB,CAAC;SAC1B,MAAM,CAAC,kBAAkB,CAAC;IAG/B,QAAQ,EAAE,EAAE;SACP,KAAK,CAAC;QACH,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,2BAA2B;QACpC,WAAW,EACP,+JAA+J;KACtK,CAAC;SACD,KAAK,CAAC,sBAAsB,CAAC;SAC7B,MAAM,CAAC,sBAAsB,CAAC;IACnC,MAAM,EAAE,EAAE;SACL,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,2EAA2E;KAC3F,CAAC;SACD,KAAK,CAAC,mBAAmB,CAAC;SAC1B,MAAM,CAAC,kBAAkB,CAAC;IAC/B,UAAU,EAAE,EAAE;SACT,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,sEAAsE;KACtF,CAAC;SACD,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,QAAQ,CAAC;CACxB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/cursor.contract.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,cAAc;IACvB,KAAK;;;;;IASL,MAAM;;;;;IAYN,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;IAUR,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;IASN,UAAU;;;;;CASb,CAAC"}
@@ -1,50 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { AccountIdSchema, AccountListQuerySchema, AccountRenameSchema, CursorLoginCancelSchema, CursorLoginStartSchema, OauthAccountListSchema, OauthAccountSchema, } from "../schemas/provider-oauth.js";
3
- import { OkSchema } from "../schemas/shared.js";
4
- export const cursorContract = {
5
- start: oc
6
- .route({
7
- method: "POST",
8
- path: "/cursor/login/start",
9
- summary: "Begin connecting a Cursor account",
10
- description: "Hands back the page to sign in on. The sandbox finishes the handshake itself and stores the credential, so nothing has to be pasted back: watch the account list instead.",
11
- })
12
- .output(CursorLoginStartSchema),
13
- cancel: oc
14
- .route({
15
- method: "POST",
16
- path: "/cursor/login/cancel",
17
- summary: "Abandon a Cursor sign-in",
18
- description: "Stops waiting on a sign-in nobody completed. An abandoned attempt also expires on its own.",
19
- })
20
- .input(CursorLoginCancelSchema)
21
- .output(OkSchema),
22
- accounts: oc
23
- .route({
24
- method: "GET",
25
- path: "/cursor/accounts",
26
- summary: "Connected Cursor accounts",
27
- description: "Each connected account, and whether its stored key is still good. Cursor publishes no plan-wide allowance, so these rows carry no usage reading.",
28
- })
29
- .input(AccountListQuerySchema)
30
- .output(OauthAccountListSchema),
31
- rename: oc
32
- .route({
33
- method: "POST",
34
- path: "/cursor/account/rename",
35
- summary: "Rename a Cursor account",
36
- description: "Changes the label one account shows under, so several are tellable apart.",
37
- })
38
- .input(AccountRenameSchema)
39
- .output(OauthAccountSchema),
40
- disconnect: oc
41
- .route({
42
- method: "POST",
43
- path: "/cursor/account/disconnect",
44
- summary: "Disconnect a Cursor account",
45
- description: "Clears the stored key for one account. The others stay connected.",
46
- })
47
- .input(AccountIdSchema)
48
- .output(OkSchema),
49
- };
50
- //# sourceMappingURL=cursor.contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.contract.js","sourceRoot":"","sources":["../../src/contracts/cursor.contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACH,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAahD,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,KAAK,EAAE,EAAE;SACJ,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,mCAAmC;QAC5C,WAAW,EACP,2KAA2K;KAClL,CAAC;SACD,MAAM,CAAC,sBAAsB,CAAC;IACnC,MAAM,EAAE,EAAE;SACL,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,0BAA0B;QACnC,WAAW,EAAE,4FAA4F;KAC5G,CAAC;SACD,KAAK,CAAC,uBAAuB,CAAC;SAC9B,MAAM,CAAC,QAAQ,CAAC;IAIrB,QAAQ,EAAE,EAAE;SACP,KAAK,CAAC;QACH,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,2BAA2B;QACpC,WAAW,EACP,kJAAkJ;KACzJ,CAAC;SACD,KAAK,CAAC,sBAAsB,CAAC;SAC7B,MAAM,CAAC,sBAAsB,CAAC;IACnC,MAAM,EAAE,EAAE;SACL,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,yBAAyB;QAClC,WAAW,EAAE,2EAA2E;KAC3F,CAAC;SACD,KAAK,CAAC,mBAAmB,CAAC;SAC1B,MAAM,CAAC,kBAAkB,CAAC;IAC/B,UAAU,EAAE,EAAE;SACT,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,mEAAmE;KACnF,CAAC;SACD,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,QAAQ,CAAC;CACxB,CAAC"}
@@ -1,36 +0,0 @@
1
- export declare const grokContract: {
2
- start: import("@orpc/contract").ContractProcedureBuilderWithOutput<import("@orpc/contract").Schema<unknown, unknown>, import("zod").ZodObject<{
3
- url: import("zod").ZodString;
4
- code: import("zod").ZodString;
5
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
6
- accounts: import("@orpc/contract").ContractProcedureBuilderWithOutput<import("@orpc/contract").Schema<unknown, unknown>, import("zod").ZodObject<{
7
- accounts: import("zod").ZodArray<import("zod").ZodObject<{
8
- id: import("zod").ZodString;
9
- label: import("zod").ZodString;
10
- email: import("zod").ZodOptional<import("zod").ZodString>;
11
- organization: import("zod").ZodOptional<import("zod").ZodString>;
12
- scope: import("zod").ZodOptional<import("zod").ZodString>;
13
- connectedAt: import("zod").ZodNumber;
14
- needsReauth: import("zod").ZodOptional<import("zod").ZodBoolean>;
15
- detail: import("zod").ZodOptional<import("zod").ZodString>;
16
- usage: import("zod").ZodOptional<import("zod").ZodObject<{
17
- windows: import("zod").ZodArray<import("zod").ZodObject<{
18
- kind: import("zod").ZodString;
19
- label: import("zod").ZodOptional<import("zod").ZodString>;
20
- utilization: import("zod").ZodNumber;
21
- resetsAt: import("zod").ZodOptional<import("zod").ZodNumber>;
22
- gates: import("zod").ZodUnion<readonly [import("zod").ZodLiteral<"all">, import("zod").ZodLiteral<"none">, import("zod").ZodObject<{
23
- models: import("zod").ZodArray<import("zod").ZodString>;
24
- }, import("zod/v4/core").$strip>]>;
25
- }, import("zod/v4/core").$strip>>;
26
- measuredAt: import("zod").ZodNumber;
27
- }, import("zod/v4/core").$strip>>;
28
- }, import("zod/v4/core").$strip>>;
29
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
30
- disconnect: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<import("zod").ZodObject<{
31
- id: import("zod").ZodString;
32
- }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
33
- ok: import("zod").ZodLiteral<true>;
34
- }, import("zod/v4/core").$strip>, Record<never, never>, Record<never, never>>;
35
- };
36
- //# sourceMappingURL=grok.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grok.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/grok.contract.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,YAAY;IACrB,KAAK;;;;IASL,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;IAQR,UAAU;;;;;CASb,CAAC"}
@@ -1,31 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { AccountIdSchema, DeviceStartSchema, OauthAccountListSchema } from "../schemas/provider-oauth.js";
3
- import { OkSchema } from "../schemas/shared.js";
4
- export const grokContract = {
5
- start: oc
6
- .route({
7
- method: "POST",
8
- path: "/grok/oauth/start",
9
- summary: "Begin connecting a Grok account",
10
- description: "Hands back the page to open and the one-time code to type there. Nothing is pasted back afterwards: the sandbox waits for the sign-in to complete on its own, so poll the accounts call until it appears.",
11
- })
12
- .output(DeviceStartSchema),
13
- accounts: oc
14
- .route({
15
- method: "GET",
16
- path: "/grok/accounts",
17
- summary: "Connected Grok account",
18
- description: "What is signed in. A list for consistency with the other providers, though there is at most one.",
19
- })
20
- .output(OauthAccountListSchema),
21
- disconnect: oc
22
- .route({
23
- method: "POST",
24
- path: "/grok/account/disconnect",
25
- summary: "Disconnect the Grok account",
26
- description: "Clears the stored tokens.",
27
- })
28
- .input(AccountIdSchema)
29
- .output(OkSchema),
30
- };
31
- //# sourceMappingURL=grok.contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grok.contract.js","sourceRoot":"","sources":["../../src/contracts/grok.contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAWhD,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,KAAK,EAAE,EAAE;SACJ,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EACP,2MAA2M;KAClN,CAAC;SACD,MAAM,CAAC,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,EAAE;SACP,KAAK,CAAC;QACH,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,kGAAkG;KAClH,CAAC;SACD,MAAM,CAAC,sBAAsB,CAAC;IACnC,UAAU,EAAE,EAAE;SACT,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,2BAA2B;KAC3C,CAAC;SACD,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,QAAQ,CAAC;CACxB,CAAC"}
@@ -1,81 +0,0 @@
1
- import { z } from "zod";
2
- export declare const keysContract: {
3
- accounts: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
4
- provider: z.ZodEnum<{
5
- meta: "meta";
6
- zai: "zai";
7
- }>;
8
- }, z.core.$strip>, z.ZodObject<{
9
- accounts: z.ZodArray<z.ZodObject<{
10
- id: z.ZodString;
11
- label: z.ZodString;
12
- email: z.ZodOptional<z.ZodString>;
13
- organization: z.ZodOptional<z.ZodString>;
14
- scope: z.ZodOptional<z.ZodString>;
15
- connectedAt: z.ZodNumber;
16
- needsReauth: z.ZodOptional<z.ZodBoolean>;
17
- detail: z.ZodOptional<z.ZodString>;
18
- usage: z.ZodOptional<z.ZodObject<{
19
- windows: z.ZodArray<z.ZodObject<{
20
- kind: z.ZodString;
21
- label: z.ZodOptional<z.ZodString>;
22
- utilization: z.ZodNumber;
23
- resetsAt: z.ZodOptional<z.ZodNumber>;
24
- gates: z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodLiteral<"none">, z.ZodObject<{
25
- models: z.ZodArray<z.ZodString>;
26
- }, z.core.$strip>]>;
27
- }, z.core.$strip>>;
28
- measuredAt: z.ZodNumber;
29
- }, z.core.$strip>>;
30
- }, z.core.$strip>>;
31
- }, z.core.$strip>, Record<never, never>, Record<never, never>>;
32
- connect: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
33
- provider: z.ZodEnum<{
34
- meta: "meta";
35
- zai: "zai";
36
- }>;
37
- apiKey: z.ZodString;
38
- label: z.ZodOptional<z.ZodString>;
39
- }, z.core.$strip>, z.ZodObject<{
40
- id: z.ZodString;
41
- label: z.ZodString;
42
- email: z.ZodOptional<z.ZodString>;
43
- organization: z.ZodOptional<z.ZodString>;
44
- scope: z.ZodOptional<z.ZodString>;
45
- connectedAt: z.ZodNumber;
46
- needsReauth: z.ZodOptional<z.ZodBoolean>;
47
- detail: z.ZodOptional<z.ZodString>;
48
- usage: z.ZodOptional<z.ZodObject<{
49
- windows: z.ZodArray<z.ZodObject<{
50
- kind: z.ZodString;
51
- label: z.ZodOptional<z.ZodString>;
52
- utilization: z.ZodNumber;
53
- resetsAt: z.ZodOptional<z.ZodNumber>;
54
- gates: z.ZodUnion<readonly [z.ZodLiteral<"all">, z.ZodLiteral<"none">, z.ZodObject<{
55
- models: z.ZodArray<z.ZodString>;
56
- }, z.core.$strip>]>;
57
- }, z.core.$strip>>;
58
- measuredAt: z.ZodNumber;
59
- }, z.core.$strip>>;
60
- }, z.core.$strip>, Record<never, never>, Record<never, never>>;
61
- rename: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
62
- provider: z.ZodEnum<{
63
- meta: "meta";
64
- zai: "zai";
65
- }>;
66
- id: z.ZodString;
67
- label: z.ZodString;
68
- }, z.core.$strip>, z.ZodObject<{
69
- ok: z.ZodLiteral<true>;
70
- }, z.core.$strip>, Record<never, never>, Record<never, never>>;
71
- disconnect: import("@orpc/contract").ContractProcedureBuilderWithInputOutput<z.ZodObject<{
72
- provider: z.ZodEnum<{
73
- meta: "meta";
74
- zai: "zai";
75
- }>;
76
- id: z.ZodString;
77
- }, z.core.$strip>, z.ZodObject<{
78
- ok: z.ZodLiteral<true>;
79
- }, z.core.$strip>, Record<never, never>, Record<never, never>>;
80
- };
81
- //# sourceMappingURL=keys.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.contract.d.ts","sourceRoot":"","sources":["../../src/contracts/keys.contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8BxB,eAAO,MAAM,YAAY;IACrB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASR,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBP,MAAM;;;;;;;;;;IASN,UAAU;;;;;;;;;CASb,CAAC"}
@@ -1,51 +0,0 @@
1
- import { oc } from "@orpc/contract";
2
- import { z } from "zod";
3
- import { KeyProviderParamSchema } from "../schemas/agent.js";
4
- import { AccountIdSchema, AccountRenameSchema, OauthAccountListSchema, OauthAccountSchema } from "../schemas/provider-oauth.js";
5
- import { OkSchema } from "../schemas/shared.js";
6
- export const keysContract = {
7
- accounts: oc
8
- .route({
9
- method: "GET",
10
- path: "/keys/{provider}/accounts",
11
- summary: "Connected accounts for a key-based provider",
12
- description: "Which keys are connected for this provider. The keys themselves never travel: being in this list is what connected means.",
13
- })
14
- .input(KeyProviderParamSchema)
15
- .output(OauthAccountListSchema),
16
- connect: oc
17
- .route({
18
- method: "POST",
19
- path: "/keys/{provider}/connect",
20
- summary: "Connect an API key",
21
- description: "Stores an API key for this provider and answers with the account it became. A sandbox can hold several keys for one provider side by side.",
22
- })
23
- .input(KeyProviderParamSchema.extend({
24
- apiKey: z.string().min(1).describe("The key, as the provider issued it. Stored in this sandbox and never sent back out."),
25
- label: z
26
- .string()
27
- .max(80)
28
- .optional()
29
- .describe("What to call it. Blank falls back to the provider's own name, which is all a pasted key can say about itself."),
30
- }))
31
- .output(OauthAccountSchema),
32
- rename: oc
33
- .route({
34
- method: "POST",
35
- path: "/keys/{provider}/account/rename",
36
- summary: "Rename one connected key",
37
- description: "Nothing in a pasted key says whose it is, so naming it is the only way to tell two of them apart.",
38
- })
39
- .input(KeyProviderParamSchema.extend(AccountRenameSchema.shape))
40
- .output(OkSchema),
41
- disconnect: oc
42
- .route({
43
- method: "POST",
44
- path: "/keys/{provider}/account/disconnect",
45
- summary: "Disconnect one key",
46
- description: "Removes a single stored key. Any others under the same provider stay connected.",
47
- })
48
- .input(KeyProviderParamSchema.extend(AccountIdSchema.shape))
49
- .output(OkSchema),
50
- };
51
- //# sourceMappingURL=keys.contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keys.contract.js","sourceRoot":"","sources":["../../src/contracts/keys.contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAChI,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AA2BhD,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,QAAQ,EAAE,EAAE;SACP,KAAK,CAAC;QACH,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,6CAA6C;QACtD,WAAW,EAAE,2HAA2H;KAC3I,CAAC;SACD,KAAK,CAAC,sBAAsB,CAAC;SAC7B,MAAM,CAAC,sBAAsB,CAAC;IACnC,OAAO,EAAE,EAAE;SACN,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,oBAAoB;QAC7B,WAAW,EACP,4IAA4I;KACnJ,CAAC;SACD,KAAK,CACF,sBAAsB,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qFAAqF,CAAC;QACzH,KAAK,EAAE,CAAC;aACH,MAAM,EAAE;aACR,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,EAAE;aACV,QAAQ,CAAC,+GAA+G,CAAC;KACjI,CAAC,CACL;SACA,MAAM,CAAC,kBAAkB,CAAC;IAC/B,MAAM,EAAE,EAAE;SACL,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,iCAAiC;QACvC,OAAO,EAAE,0BAA0B;QACnC,WAAW,EAAE,mGAAmG;KACnH,CAAC;SACD,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SAC/D,MAAM,CAAC,QAAQ,CAAC;IACrB,UAAU,EAAE,EAAE;SACT,KAAK,CAAC;QACH,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,qCAAqC;QAC3C,OAAO,EAAE,oBAAoB;QAC7B,WAAW,EAAE,iFAAiF;KACjG,CAAC;SACD,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC3D,MAAM,CAAC,QAAQ,CAAC;CACxB,CAAC"}
@@ -1,15 +0,0 @@
1
- import type { AgentProvider } from "./schemas/agent.js";
2
- export interface QuickModelSource {
3
- readonly provider: AgentProvider;
4
- readonly ready: boolean;
5
- readonly models: readonly string[];
6
- }
7
- export interface QuickModelChoice {
8
- readonly provider: AgentProvider;
9
- readonly model: string;
10
- }
11
- export declare const quickModelKey: (choice: QuickModelChoice) => string;
12
- export declare const parsePinned: (pinned: string) => QuickModelChoice | undefined;
13
- export declare const pinnedModelLabel: (choice: QuickModelChoice) => string;
14
- export declare const resolveQuickModels: (sources: readonly QuickModelSource[], pinned: readonly string[]) => readonly QuickModelChoice[];
15
- //# sourceMappingURL=quick-model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quick-model.d.ts","sourceRoot":"","sources":["../src/quick-model.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA+BxD,MAAM,WAAW,gBAAgB;IAM7B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IAGjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;AAID,eAAO,MAAM,aAAa,WAAY,gBAAgB,KAAG,MAA8C,CAAC;AASxG,eAAO,MAAM,WAAW,WAAY,MAAM,KAAG,gBAAgB,GAAG,SAM/D,CAAC;AAOF,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,KAAG,MACyC,CAAC;AAgEtG,eAAO,MAAM,kBAAkB,YAAa,SAAS,gBAAgB,EAAE,UAAU,SAAS,MAAM,EAAE,KAAG,SAAS,gBAAgB,EAa7H,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"quick-model.js","sourceRoot":"","sources":["../src/quick-model.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"computers.d.ts","sourceRoot":"","sources":["../../src/schemas/computers.ts"],"names":[],"mappings":"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"}