@lamplitisles/dsh-nanocodex 0.1.0-beta.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 (276) hide show
  1. package/LICENSE +65 -0
  2. package/NOTICE +2 -0
  3. package/README.md +182 -0
  4. package/THIRD_PARTY_NOTICES.md +29 -0
  5. package/cordis.patch.yml +52 -0
  6. package/dist/index.d.ts +435 -0
  7. package/dist/index.js +3405 -0
  8. package/dist/standard-preset.d.ts +7 -0
  9. package/dist/standard-preset.js +25 -0
  10. package/engine-release.json +14 -0
  11. package/package.json +119 -0
  12. package/presets/standard/agent.cordis.yml +6 -0
  13. package/presets/standard/preset.yml +2 -0
  14. package/vendor/nanocodex/README.md +1344 -0
  15. package/vendor/nanocodex/actions/events.d.mts +10 -0
  16. package/vendor/nanocodex/actions/events.mjs +163 -0
  17. package/vendor/nanocodex/actions/index.d.mts +13 -0
  18. package/vendor/nanocodex/actions/index.mjs +35 -0
  19. package/vendor/nanocodex/actions/session.d.mts +66 -0
  20. package/vendor/nanocodex/actions/session.mjs +59 -0
  21. package/vendor/nanocodex/actions/turn.d.mts +59 -0
  22. package/vendor/nanocodex/actions/turn.mjs +37 -0
  23. package/vendor/nanocodex/actions/voice.d.mts +22 -0
  24. package/vendor/nanocodex/actions/voice.mjs +50 -0
  25. package/vendor/nanocodex/browser/Agent.d.mts +55 -0
  26. package/vendor/nanocodex/browser/Agent.mjs +11 -0
  27. package/vendor/nanocodex/browser/ChatGptSubscription.d.mts +7 -0
  28. package/vendor/nanocodex/browser/ChatGptSubscription.mjs +19 -0
  29. package/vendor/nanocodex/browser/InlineAgent.mjs +266 -0
  30. package/vendor/nanocodex/browser/Transport.d.mts +74 -0
  31. package/vendor/nanocodex/browser/Transport.mjs +61 -0
  32. package/vendor/nanocodex/browser/Voice.d.mts +71 -0
  33. package/vendor/nanocodex/browser/Voice.mjs +291 -0
  34. package/vendor/nanocodex/browser/VoiceSession.mjs +688 -0
  35. package/vendor/nanocodex/browser/WorkerAgent.d.mts +65 -0
  36. package/vendor/nanocodex/browser/WorkerAgent.mjs +1472 -0
  37. package/vendor/nanocodex/browser/agent.worker.mjs +3 -0
  38. package/vendor/nanocodex/browser/config.d.mts +36 -0
  39. package/vendor/nanocodex/browser/config.mjs +439 -0
  40. package/vendor/nanocodex/browser/engine.mjs +13 -0
  41. package/vendor/nanocodex/browser/harness.mjs +55 -0
  42. package/vendor/nanocodex/browser/host.d.mts +83 -0
  43. package/vendor/nanocodex/browser/host.mjs +555 -0
  44. package/vendor/nanocodex/browser/hostManagedWebSocket.d.mts +14 -0
  45. package/vendor/nanocodex/browser/hostManagedWebSocket.mjs +110 -0
  46. package/vendor/nanocodex/browser/index.d.mts +92 -0
  47. package/vendor/nanocodex/browser/index.mjs +23 -0
  48. package/vendor/nanocodex/browser/indexeddb-durability-store.mjs +197 -0
  49. package/vendor/nanocodex/browser/workspace.d.mts +16 -0
  50. package/vendor/nanocodex/browser/workspace.mjs +107 -0
  51. package/vendor/nanocodex/cloud/Client.d.mts +83 -0
  52. package/vendor/nanocodex/cloud/Client.mjs +231 -0
  53. package/vendor/nanocodex/cloud/Decorator.d.mts +31 -0
  54. package/vendor/nanocodex/cloud/Decorator.mjs +37 -0
  55. package/vendor/nanocodex/cloud/Dialog.d.mts +113 -0
  56. package/vendor/nanocodex/cloud/Dialog.mjs +366 -0
  57. package/vendor/nanocodex/cloud/Errors.d.mts +22 -0
  58. package/vendor/nanocodex/cloud/Errors.mjs +39 -0
  59. package/vendor/nanocodex/cloud/Principal.d.mts +26 -0
  60. package/vendor/nanocodex/cloud/Principal.mjs +88 -0
  61. package/vendor/nanocodex/cloud/RemoteProvider.mjs +88 -0
  62. package/vendor/nanocodex/cloud/Transport.d.mts +47 -0
  63. package/vendor/nanocodex/cloud/Transport.mjs +454 -0
  64. package/vendor/nanocodex/cloud/actions/account.d.mts +9 -0
  65. package/vendor/nanocodex/cloud/actions/account.mjs +19 -0
  66. package/vendor/nanocodex/cloud/actions/agent.d.mts +18 -0
  67. package/vendor/nanocodex/cloud/actions/agent.mjs +428 -0
  68. package/vendor/nanocodex/cloud/actions/connection.d.mts +133 -0
  69. package/vendor/nanocodex/cloud/actions/connection.mjs +580 -0
  70. package/vendor/nanocodex/cloud/actions/grant.d.mts +10 -0
  71. package/vendor/nanocodex/cloud/actions/grant.mjs +12 -0
  72. package/vendor/nanocodex/cloud/actions/index.d.mts +7 -0
  73. package/vendor/nanocodex/cloud/actions/index.mjs +7 -0
  74. package/vendor/nanocodex/cloud/actions/machineUsd.d.mts +23 -0
  75. package/vendor/nanocodex/cloud/actions/machineUsd.mjs +37 -0
  76. package/vendor/nanocodex/cloud/actions/model.d.mts +12 -0
  77. package/vendor/nanocodex/cloud/actions/model.mjs +50 -0
  78. package/vendor/nanocodex/cloud/actions/mpp.d.mts +28 -0
  79. package/vendor/nanocodex/cloud/actions/mpp.mjs +39 -0
  80. package/vendor/nanocodex/cloud/index.d.mts +30 -0
  81. package/vendor/nanocodex/cloud/index.mjs +9 -0
  82. package/vendor/nanocodex/cloud/internal.mjs +533 -0
  83. package/vendor/nanocodex/cloud/mercator.mjs +108 -0
  84. package/vendor/nanocodex/cloud/server/HostPrincipal.d.mts +34 -0
  85. package/vendor/nanocodex/cloud/server/HostPrincipal.mjs +202 -0
  86. package/vendor/nanocodex/cloud/server/index.d.mts +1 -0
  87. package/vendor/nanocodex/cloud/server/index.mjs +1 -0
  88. package/vendor/nanocodex/cloud/types.d.mts +211 -0
  89. package/vendor/nanocodex/cloudflare/Agent.d.mts +133 -0
  90. package/vendor/nanocodex/cloudflare/Agent.mjs +811 -0
  91. package/vendor/nanocodex/cloudflare/egress-subject.mjs +19 -0
  92. package/vendor/nanocodex/cloudflare/egress.d.mts +41 -0
  93. package/vendor/nanocodex/cloudflare/egress.mjs +119 -0
  94. package/vendor/nanocodex/cloudflare/event-socket.mjs +316 -0
  95. package/vendor/nanocodex/cloudflare/index.d.mts +7 -0
  96. package/vendor/nanocodex/cloudflare/index.mjs +6 -0
  97. package/vendor/nanocodex/host/Agent.d.mts +55 -0
  98. package/vendor/nanocodex/host/Agent.mjs +1 -0
  99. package/vendor/nanocodex/host/index.d.mts +82 -0
  100. package/vendor/nanocodex/host/index.mjs +10 -0
  101. package/vendor/nanocodex/index.d.mts +81 -0
  102. package/vendor/nanocodex/index.mjs +12 -0
  103. package/vendor/nanocodex/internal.mjs +1275 -0
  104. package/vendor/nanocodex/managed/Agent.d.mts +380 -0
  105. package/vendor/nanocodex/managed/Agent.mjs +1694 -0
  106. package/vendor/nanocodex/managed/ManagedError.d.mts +9 -0
  107. package/vendor/nanocodex/managed/ManagedError.mjs +8 -0
  108. package/vendor/nanocodex/managed/README.md +241 -0
  109. package/vendor/nanocodex/managed/Voice.mjs +202 -0
  110. package/vendor/nanocodex/managed/index.d.mts +20 -0
  111. package/vendor/nanocodex/managed/index.mjs +2 -0
  112. package/vendor/nanocodex/managed/internal.mjs +119 -0
  113. package/vendor/nanocodex/node/Agent.d.mts +50 -0
  114. package/vendor/nanocodex/node/Agent.mjs +203 -0
  115. package/vendor/nanocodex/node/ChatGptSubscription.d.mts +9 -0
  116. package/vendor/nanocodex/node/ChatGptSubscription.mjs +17 -0
  117. package/vendor/nanocodex/node/Transport.d.mts +44 -0
  118. package/vendor/nanocodex/node/Transport.mjs +46 -0
  119. package/vendor/nanocodex/node/host.mjs +731 -0
  120. package/vendor/nanocodex/node/index.d.mts +73 -0
  121. package/vendor/nanocodex/node/index.mjs +17 -0
  122. package/vendor/nanocodex/node/workspace.d.mts +10 -0
  123. package/vendor/nanocodex/node/workspace.mjs +198 -0
  124. package/vendor/nanocodex/package.json +200 -0
  125. package/vendor/nanocodex/pkg-node/nanocodex.d.ts +675 -0
  126. package/vendor/nanocodex/pkg-node/nanocodex.js +2628 -0
  127. package/vendor/nanocodex/pkg-node/nanocodex_bg.wasm.d.ts +105 -0
  128. package/vendor/nanocodex/pkg-node/package.json +1 -0
  129. package/vendor/nanocodex/pkg-web/.nanocodex-bindgen-stamp +6 -0
  130. package/vendor/nanocodex/pkg-web/nanocodex-build.json +1 -0
  131. package/vendor/nanocodex/pkg-web/nanocodex.d.ts +805 -0
  132. package/vendor/nanocodex/pkg-web/nanocodex.js +2714 -0
  133. package/vendor/nanocodex/pkg-web/nanocodex_bg.js +2615 -0
  134. package/vendor/nanocodex/pkg-web/nanocodex_bg.wasm +0 -0
  135. package/vendor/nanocodex/pkg-web/nanocodex_bg.wasm.d.ts +105 -0
  136. package/vendor/nanocodex/pkg-web/nanocodex_worker.js +9 -0
  137. package/vendor/nanocodex/pkg-web/package.json +1 -0
  138. package/vendor/nanocodex/runtime/chatgpt-subscription.mjs +212 -0
  139. package/vendor/nanocodex/runtime/cloudflare-durability-store.d.mts +26 -0
  140. package/vendor/nanocodex/runtime/cloudflare-durability-store.mjs +168 -0
  141. package/vendor/nanocodex/runtime/code-evaluator.worker.mjs +137 -0
  142. package/vendor/nanocodex/runtime/code-runtime.mjs +1 -0
  143. package/vendor/nanocodex/runtime/durability-store.d.mts +85 -0
  144. package/vendor/nanocodex/runtime/durability-store.mjs +631 -0
  145. package/vendor/nanocodex/runtime/durability.mjs +153 -0
  146. package/vendor/nanocodex/runtime/managed-transport.mjs +460 -0
  147. package/vendor/nanocodex/runtime/mcp-runtime.mjs +534 -0
  148. package/vendor/nanocodex/runtime/postgres-durability-store.d.mts +64 -0
  149. package/vendor/nanocodex/runtime/postgres-durability-store.mjs +532 -0
  150. package/vendor/nanocodex/runtime/quickjs-evaluator.d.mts +17 -0
  151. package/vendor/nanocodex/runtime/quickjs-evaluator.mjs +236 -0
  152. package/vendor/nanocodex/runtime/responses-transport.mjs +22 -0
  153. package/vendor/nanocodex/runtime/subagents.d.mts +107 -0
  154. package/vendor/nanocodex/runtime/subagents.mjs +54 -0
  155. package/vendor/nanocodex/runtime/subscription-store.d.mts +8 -0
  156. package/vendor/nanocodex/runtime/subscription-store.mjs +42 -0
  157. package/vendor/nanocodex/runtime/tempo-provider.d.mts +125 -0
  158. package/vendor/nanocodex/runtime/tempo-provider.mjs +264 -0
  159. package/vendor/nanocodex/runtime/tool-configuration.mjs +1 -0
  160. package/vendor/nanocodex/runtime/tool-router.mjs +1 -0
  161. package/vendor/nanocodex/runtime/utf8.mjs +1 -0
  162. package/vendor/nanocodex/runtime/worker-evaluator.mjs +162 -0
  163. package/vendor/nanocodex/runtime/workspace.d.mts +1 -0
  164. package/vendor/nanocodex/runtime/workspace.mjs +1 -0
  165. package/vendor/nanocodex/tools/Tools.d.mts +56 -0
  166. package/vendor/nanocodex/tools/Tools.mjs +136 -0
  167. package/vendor/nanocodex/tools/artifact.d.mts +1 -0
  168. package/vendor/nanocodex/tools/artifact.mjs +1 -0
  169. package/vendor/nanocodex/tools/attachment.mjs +1 -0
  170. package/vendor/nanocodex/tools/bash.d.mts +1 -0
  171. package/vendor/nanocodex/tools/bash.mjs +1 -0
  172. package/vendor/nanocodex/tools/browser/accountInfo.mjs +795 -0
  173. package/vendor/nanocodex/tools/browser/browserBuffer.mjs +18 -0
  174. package/vendor/nanocodex/tools/browser/browserCompiler.mjs +155 -0
  175. package/vendor/nanocodex/tools/browser/browserEgress.mjs +161 -0
  176. package/vendor/nanocodex/tools/browser/browserPython.mjs +133 -0
  177. package/vendor/nanocodex/tools/browser/browserShell.mjs +1075 -0
  178. package/vendor/nanocodex/tools/browser/browserSprintf.mjs +4 -0
  179. package/vendor/nanocodex/tools/browser/browserSsh.mjs +201 -0
  180. package/vendor/nanocodex/tools/browser/browserZlib.mjs +136 -0
  181. package/vendor/nanocodex/tools/browser/compiler.worker.mjs +160 -0
  182. package/vendor/nanocodex/tools/browser/devTunnelsSshBrowser.mjs +13 -0
  183. package/vendor/nanocodex/tools/browser/index.d.mts +209 -0
  184. package/vendor/nanocodex/tools/browser/index.mjs +174 -0
  185. package/vendor/nanocodex/tools/browser/opfsGit.mjs +248 -0
  186. package/vendor/nanocodex/tools/browser/python.worker.mjs +114 -0
  187. package/vendor/nanocodex/tools/browser/threadGit.mjs +197 -0
  188. package/vendor/nanocodex/tools/browser/unsupportedNodeRsa.mjs +5 -0
  189. package/vendor/nanocodex/tools/browser/workspace.mjs +83 -0
  190. package/vendor/nanocodex/tools/dataset.d.mts +1 -0
  191. package/vendor/nanocodex/tools/dataset.mjs +1 -0
  192. package/vendor/nanocodex/tools/datasetContract.mjs +1 -0
  193. package/vendor/nanocodex/tools/datasetEngine.mjs +1 -0
  194. package/vendor/nanocodex/tools/hostedCatalog.d.mts +1 -0
  195. package/vendor/nanocodex/tools/hostedCatalog.mjs +1 -0
  196. package/vendor/nanocodex/tools/index.d.mts +49 -0
  197. package/vendor/nanocodex/tools/index.mjs +19 -0
  198. package/vendor/nanocodex/tools/namedTool.mjs +1 -0
  199. package/vendor/nanocodex/tools/repository-workspace.d.mts +1 -0
  200. package/vendor/nanocodex/tools/repository-workspace.mjs +1 -0
  201. package/vendor/nanocodex/tools/ssh.d.mts +1 -0
  202. package/vendor/nanocodex/tools/ssh.mjs +1 -0
  203. package/vendor/nanocodex/tools/standard.mjs +1 -0
  204. package/vendor/nanocodex/tools/standardDescriptions.mjs +1 -0
  205. package/vendor/nanocodex/types.d.mts +663 -0
  206. package/vendor/nanocodex/wasm.d.mts +4 -0
  207. package/vendor/nanocodex/worker/ChatGptSubscription.d.mts +9 -0
  208. package/vendor/nanocodex/worker/ChatGptSubscription.mjs +29 -0
  209. package/vendor/nanocodex/worker/index.d.mts +18 -0
  210. package/vendor/nanocodex/worker/index.mjs +5 -0
  211. package/vendor/nanocodex-tools/README.md +65 -0
  212. package/vendor/nanocodex-tools/dist/hosted/app-tool-catalog.d.ts +7 -0
  213. package/vendor/nanocodex-tools/dist/hosted/app-tool-catalog.js +14 -0
  214. package/vendor/nanocodex-tools/dist/hosted/broker-core.d.ts +172 -0
  215. package/vendor/nanocodex-tools/dist/hosted/broker-core.js +1278 -0
  216. package/vendor/nanocodex-tools/dist/hosted/index.d.ts +3 -0
  217. package/vendor/nanocodex-tools/dist/hosted/index.js +3 -0
  218. package/vendor/nanocodex-tools/dist/hosted/protocol.d.ts +120 -0
  219. package/vendor/nanocodex-tools/dist/hosted/protocol.js +415 -0
  220. package/vendor/nanocodex-tools/dist/index.d.ts +19 -0
  221. package/vendor/nanocodex-tools/dist/index.js +14 -0
  222. package/vendor/nanocodex-tools/dist/memory.d.ts +204 -0
  223. package/vendor/nanocodex-tools/dist/memory.js +411 -0
  224. package/vendor/nanocodex-tools/dist/namespace.d.ts +87 -0
  225. package/vendor/nanocodex-tools/dist/namespace.js +338 -0
  226. package/vendor/nanocodex-tools/dist/repository-archive.d.ts +4 -0
  227. package/vendor/nanocodex-tools/dist/repository-archive.js +104 -0
  228. package/vendor/nanocodex-tools/dist/runtime.d.ts +30 -0
  229. package/vendor/nanocodex-tools/dist/runtime.js +37 -0
  230. package/vendor/nanocodex-tools/dist/session.d.ts +167 -0
  231. package/vendor/nanocodex-tools/dist/session.js +286 -0
  232. package/vendor/nanocodex-tools/dist/shell.d.ts +51 -0
  233. package/vendor/nanocodex-tools/dist/shell.js +553 -0
  234. package/vendor/nanocodex-tools/dist/ssh.d.ts +29 -0
  235. package/vendor/nanocodex-tools/dist/ssh.js +66 -0
  236. package/vendor/nanocodex-tools/dist/workspace.d.ts +45 -0
  237. package/vendor/nanocodex-tools/dist/workspace.js +237 -0
  238. package/vendor/nanocodex-tools/package.json +122 -0
  239. package/vendor/nanocodex-tools/runtime/code-runtime.mjs +817 -0
  240. package/vendor/nanocodex-tools/runtime/tool-configuration.mjs +50 -0
  241. package/vendor/nanocodex-tools/runtime/tool-router.mjs +730 -0
  242. package/vendor/nanocodex-tools/runtime/utf8.d.mts +2 -0
  243. package/vendor/nanocodex-tools/runtime/utf8.mjs +25 -0
  244. package/vendor/nanocodex-tools/tools/artifact.d.mts +69 -0
  245. package/vendor/nanocodex-tools/tools/artifact.mjs +270 -0
  246. package/vendor/nanocodex-tools/tools/attachment.mjs +603 -0
  247. package/vendor/nanocodex-tools/tools/bash.d.mts +90 -0
  248. package/vendor/nanocodex-tools/tools/bash.mjs +742 -0
  249. package/vendor/nanocodex-tools/tools/dataset.d.mts +9 -0
  250. package/vendor/nanocodex-tools/tools/dataset.mjs +47 -0
  251. package/vendor/nanocodex-tools/tools/datasetContract.mjs +54 -0
  252. package/vendor/nanocodex-tools/tools/datasetEngine.mjs +1167 -0
  253. package/vendor/nanocodex-tools/tools/execution-contract.d.mts +5 -0
  254. package/vendor/nanocodex-tools/tools/execution-contract.mjs +63 -0
  255. package/vendor/nanocodex-tools/tools/hostedCatalog.d.mts +20 -0
  256. package/vendor/nanocodex-tools/tools/hostedCatalog.mjs +67 -0
  257. package/vendor/nanocodex-tools/tools/hostedMachine.d.mts +10 -0
  258. package/vendor/nanocodex-tools/tools/hostedMachine.mjs +56 -0
  259. package/vendor/nanocodex-tools/tools/just-bash-browser.d.mts +1 -0
  260. package/vendor/nanocodex-tools/tools/just-bash-browser.mjs +1 -0
  261. package/vendor/nanocodex-tools/tools/namedTool.d.mts +3 -0
  262. package/vendor/nanocodex-tools/tools/namedTool.mjs +3 -0
  263. package/vendor/nanocodex-tools/tools/nodeProcess.d.mts +10 -0
  264. package/vendor/nanocodex-tools/tools/nodeProcess.mjs +314 -0
  265. package/vendor/nanocodex-tools/tools/processOutput.mjs +56 -0
  266. package/vendor/nanocodex-tools/tools/repository-workspace.d.mts +55 -0
  267. package/vendor/nanocodex-tools/tools/repository-workspace.mjs +397 -0
  268. package/vendor/nanocodex-tools/tools/ssh.d.mts +56 -0
  269. package/vendor/nanocodex-tools/tools/ssh.mjs +503 -0
  270. package/vendor/nanocodex-tools/tools/standard.mjs +458 -0
  271. package/vendor/nanocodex-tools/tools/standardDescriptions.mjs +3 -0
  272. package/vendor/nanocodex-tools/tools/types.d.mts +83 -0
  273. package/vendor/nanocodex-tools/tools/workspace.d.mts +25 -0
  274. package/vendor/nanocodex-tools/tools/workspace.mjs +282 -0
  275. package/vendor/nanocodex-tools/tools/x.d.mts +30 -0
  276. package/vendor/nanocodex-tools/tools/x.mjs +91 -0
@@ -0,0 +1,19 @@
1
+ const subjects = new WeakMap();
2
+ const BROKER_SUBJECT = /^[A-Za-z0-9_-]{43,128}$/;
3
+
4
+ /** @internal Scopes a shared Service Binding to one opaque Durable Object subject. */
5
+ export function scopeCloudflareEgress(binding, subject) {
6
+ if (typeof subject !== "string" || !BROKER_SUBJECT.test(subject)) {
7
+ throw new TypeError("Cloudflare Agent requires an opaque Durable Object identity");
8
+ }
9
+ const scoped = Object.freeze({
10
+ fetch: (input, init) => binding.fetch(input, init),
11
+ });
12
+ subjects.set(scoped, subject);
13
+ return scoped;
14
+ }
15
+
16
+ /** @internal Returns only subjects attached by the Cloudflare Agent adapter. */
17
+ export function cloudflareEgressSubject(binding) {
18
+ return subjects.get(binding);
19
+ }
@@ -0,0 +1,41 @@
1
+ import type {
2
+ BrowserWebSocketConnection,
3
+ BrowserWebSocketRequest,
4
+ } from "../browser/host.mjs";
5
+
6
+ /** Structural subset of a private Cloudflare Service Binding. */
7
+ export type CloudflareEgressBinding = Readonly<{
8
+ fetch(input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
9
+ }>;
10
+
11
+ export type CloudflareEgressOptions = Readonly<{
12
+ /** The managed Worker's private EGRESS Service Binding. */
13
+ binding: CloudflareEgressBinding;
14
+ /** Provider credentials are accepted only by the separately deployed broker. */
15
+ apiKey?: never;
16
+ accessToken?: never;
17
+ token?: never;
18
+ /** Broker subjects are derived privately from the owning Durable Object. */
19
+ subject?: never;
20
+ }>;
21
+
22
+ /** Exact function-backed options for `Transport.hostManaged(...)`. */
23
+ export type CloudflareEgressTransportOptions = Readonly<{
24
+ apiBaseUrl: string;
25
+ websocketUrl: string;
26
+ createWebSocket(
27
+ endpoint: string,
28
+ sessionId: string,
29
+ request: BrowserWebSocketRequest,
30
+ ): Promise<BrowserWebSocketConnection>;
31
+ }>;
32
+
33
+ /**
34
+ * Creates the brokered WebSocket seam for a managed Cloudflare Worker.
35
+ *
36
+ * The managed Worker supplies only fixed placeholders to `binding`; the
37
+ * separately deployed broker owns and injects the real provider credential.
38
+ */
39
+ export declare function cloudflareEgress(
40
+ options: CloudflareEgressOptions,
41
+ ): CloudflareEgressTransportOptions;
@@ -0,0 +1,119 @@
1
+ import { cloudflareEgressSubject } from "./egress-subject.mjs";
2
+
3
+ const OPENAI_WEBSOCKET_BETA = "responses_websockets=2026-02-06";
4
+ const BROKER_API_BASE_URL = "https://nanocodex.internal/v1";
5
+ const BROKER_WEBSOCKET_URL = `${BROKER_API_BASE_URL}/responses`;
6
+ const OPTION_NAMES = new Set(["binding"]);
7
+
8
+ /**
9
+ * Builds the function-backed endpoint options consumed by Transport.hostManaged.
10
+ * Provider credentials are deliberately not part of this boundary.
11
+ */
12
+ export function cloudflareEgress(options) {
13
+ const { binding } = validateOptions(options);
14
+ return Object.freeze({
15
+ apiBaseUrl: BROKER_API_BASE_URL,
16
+ websocketUrl: BROKER_WEBSOCKET_URL,
17
+ createWebSocket: (endpoint, sessionId, request) =>
18
+ openBrokeredWebSocket(binding, endpoint, sessionId, request),
19
+ });
20
+ }
21
+
22
+ function validateOptions(options) {
23
+ if (!options || typeof options !== "object" || Array.isArray(options)) {
24
+ throw new TypeError("Cloudflare EGRESS requires options");
25
+ }
26
+ const unexpected = Object.keys(options).find((name) => !OPTION_NAMES.has(name));
27
+ if (unexpected) {
28
+ throw new TypeError(
29
+ `Cloudflare EGRESS does not accept ${unexpected}; provider credentials belong in the private broker`,
30
+ );
31
+ }
32
+ if (!options.binding || typeof options.binding.fetch !== "function") {
33
+ throw new TypeError("Cloudflare EGRESS binding must provide fetch(input, init)");
34
+ }
35
+ return options;
36
+ }
37
+
38
+ async function openBrokeredWebSocket(
39
+ binding,
40
+ endpoint,
41
+ sessionId,
42
+ request,
43
+ ) {
44
+ if (request?.authorization !== "host_managed" && request?.authorization !== "preconnect") {
45
+ throw new Error("Cloudflare EGRESS requires Transport.hostManaged authorization");
46
+ }
47
+ if (typeof sessionId !== "string" || !sessionId) {
48
+ throw new TypeError("Cloudflare EGRESS requires a non-empty session ID");
49
+ }
50
+ const threadId = request?.threadId ?? sessionId;
51
+ if (typeof threadId !== "string" || !threadId) {
52
+ throw new TypeError("Cloudflare EGRESS requires a non-empty thread ID");
53
+ }
54
+ const url = exactWebSocketEndpoint(endpoint, BROKER_WEBSOCKET_URL);
55
+ url.protocol = "https:";
56
+ const headers = new Headers({
57
+ Authorization: "Bearer NANOCODEX_PROVIDER_CREDENTIAL",
58
+ Upgrade: "websocket",
59
+ "OpenAI-Beta": OPENAI_WEBSOCKET_BETA,
60
+ "session-id": sessionId,
61
+ "thread-id": threadId,
62
+ "x-client-request-id": threadId,
63
+ "x-openai-internal-codex-responses-lite": "true",
64
+ "x-responsesapi-include-timing-metrics": "true",
65
+ "User-Agent": "nanocodex-js/cloudflare",
66
+ });
67
+ const subject = cloudflareEgressSubject(binding);
68
+ if (subject !== undefined) headers.set("x-nanocodex-subject", subject);
69
+ if (typeof request.turnState === "string" && request.turnState) {
70
+ headers.set("x-codex-turn-state", request.turnState);
71
+ }
72
+
73
+ const response = await binding.fetch(url, { method: "GET", headers });
74
+ const socket = response?.webSocket;
75
+ if (response?.status !== 101 || !socket || typeof socket.accept !== "function") {
76
+ if (socket && typeof socket.close === "function") socket.close();
77
+ await response?.body?.cancel?.();
78
+ throw brokerRejection(response);
79
+ }
80
+ socket.binaryType = "arraybuffer";
81
+ socket.accept();
82
+ return {
83
+ socket,
84
+ status: response.status,
85
+ requestId: response.headers?.get("x-request-id") ?? undefined,
86
+ serverModel: response.headers?.get("openai-model") ?? undefined,
87
+ reasoningIncluded: response.headers?.has("x-reasoning-included") ?? false,
88
+ turnState: response.headers?.get("x-codex-turn-state") ?? undefined,
89
+ };
90
+ }
91
+
92
+ function exactWebSocketEndpoint(endpoint, expected) {
93
+ let url;
94
+ try {
95
+ url = new URL(endpoint);
96
+ } catch {
97
+ throw new TypeError("Cloudflare EGRESS received an invalid Responses WebSocket endpoint");
98
+ }
99
+ if (url.href !== expected) {
100
+ throw new Error("Cloudflare EGRESS denied an unexpected Responses WebSocket endpoint");
101
+ }
102
+ return url;
103
+ }
104
+
105
+ function brokerRejection(response) {
106
+ const status = Number.isInteger(response?.status) ? response.status : 502;
107
+ const retryAfterHeader = response?.headers?.get("retry-after") ?? null;
108
+ const retryAfter = Number(retryAfterHeader);
109
+ return Object.assign(
110
+ new Error(`Cloudflare EGRESS broker rejected the Responses WebSocket with HTTP ${status}`),
111
+ {
112
+ status,
113
+ body: "credential_broker_rejected",
114
+ ...(retryAfterHeader !== null && Number.isFinite(retryAfter) && retryAfter >= 0
115
+ ? { retryAfter }
116
+ : {}),
117
+ },
118
+ );
119
+ }
@@ -0,0 +1,316 @@
1
+ const EVENT_TAG = "nanocodex-agent-events";
2
+ const MAX_CLIENTS = 64;
3
+ const MAX_EVENT_BYTES = 2 * 1024 * 1024;
4
+ const MAX_LOG_BYTES = 64 * 1024 * 1024;
5
+ const REPLAY_PAGE_EVENTS = 16;
6
+ const REPLAY_PAGE_BYTES = MAX_EVENT_BYTES + 1024;
7
+ const REPLAY_CONTROL_RESERVE_BYTES = 256;
8
+ const MAX_CURSOR = 9_223_372_036_854_775_807n;
9
+ const encoder = new TextEncoder();
10
+
11
+ /** Durable, read-only AgentEvent fan-out for one Cloudflare Durable Object. */
12
+ export function createCloudflareEventSocket(context) {
13
+ validateContext(context);
14
+ const storage = context.storage;
15
+ initializeEventStorage(storage);
16
+ recoverSockets(context);
17
+
18
+ return Object.freeze({
19
+ connect(request) {
20
+ return connect(context, request);
21
+ },
22
+ publish(event) {
23
+ record(storage, event);
24
+ recoverSockets(context);
25
+ },
26
+ fail(error) {
27
+ const detail = error instanceof Error ? error.message : String(error);
28
+ storage.sql.exec(
29
+ "UPDATE nanocodex_cloudflare_event_meta SET stream_error = ? WHERE singleton = 1",
30
+ detail,
31
+ );
32
+ for (const socket of context.getWebSockets(EVENT_TAG)) {
33
+ try { socket.close(1011, "Nanocodex event stream failed"); } catch { /* already closed */ }
34
+ }
35
+ },
36
+ });
37
+ }
38
+
39
+ /** @internal Clears only the Cloudflare adapter's event projection. */
40
+ export function clearCloudflareEventSocket(context) {
41
+ validateContext(context);
42
+ const storage = context.storage;
43
+ initializeEventStorage(storage);
44
+ for (const socket of context.getWebSockets(EVENT_TAG)) {
45
+ close(socket, 1000, "Nanocodex Agent destroyed");
46
+ }
47
+ storage.sql.exec("DELETE FROM nanocodex_cloudflare_events");
48
+ storage.sql.exec(
49
+ `UPDATE nanocodex_cloudflare_event_meta
50
+ SET total_bytes = 0, stream_error = NULL
51
+ WHERE singleton = 1`,
52
+ );
53
+ }
54
+
55
+ function initializeEventStorage(storage) {
56
+ storage.sql.exec(`
57
+ CREATE TABLE IF NOT EXISTS nanocodex_cloudflare_events (
58
+ cursor INTEGER PRIMARY KEY AUTOINCREMENT,
59
+ event_json TEXT NOT NULL,
60
+ created_at INTEGER NOT NULL
61
+ )
62
+ `);
63
+ storage.sql.exec(`
64
+ CREATE TABLE IF NOT EXISTS nanocodex_cloudflare_event_meta (
65
+ singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
66
+ total_bytes INTEGER NOT NULL CHECK (total_bytes >= 0),
67
+ stream_error TEXT
68
+ )
69
+ `);
70
+ storage.sql.exec(`
71
+ INSERT OR IGNORE INTO nanocodex_cloudflare_event_meta
72
+ (singleton, total_bytes, stream_error)
73
+ SELECT 1, COALESCE(SUM(LENGTH(CAST(event_json AS BLOB))), 0), NULL
74
+ FROM nanocodex_cloudflare_events
75
+ `);
76
+ }
77
+
78
+ function validateContext(context) {
79
+ if (!context || typeof context !== "object") {
80
+ throw new TypeError("Cloudflare Agent requires a Durable Object context");
81
+ }
82
+ if (!context.storage?.sql || typeof context.storage.sql.exec !== "function"
83
+ || typeof context.storage.transactionSync !== "function") {
84
+ throw new TypeError("Cloudflare Agent requires Durable Object SQLite storage");
85
+ }
86
+ if (typeof context.acceptWebSocket !== "function" || typeof context.getWebSockets !== "function") {
87
+ throw new TypeError("Cloudflare Agent requires hibernatable Durable Object WebSockets");
88
+ }
89
+ }
90
+
91
+ function connect(context, request) {
92
+ if (!(request instanceof Request)) {
93
+ throw new TypeError("agent.events.connect requires a Request");
94
+ }
95
+ if (request.method !== "GET" || request.headers.get("upgrade")?.toLowerCase() !== "websocket") {
96
+ return new Response("Expected WebSocket upgrade", { status: 426 });
97
+ }
98
+ const url = new URL(request.url);
99
+ const values = url.searchParams.getAll("cursor");
100
+ const cursor = parseCursor(values.length === 0 ? null : values.length === 1 ? values[0] : undefined);
101
+ if (cursor === undefined) {
102
+ return Response.json({ error: "invalid_cursor" }, { status: 400 });
103
+ }
104
+ const streamError = eventMeta(context.storage).stream_error;
105
+ if (streamError !== null) {
106
+ return Response.json(
107
+ { error: "event_stream_failed" },
108
+ { status: 503, headers: { "retry-after": "1" } },
109
+ );
110
+ }
111
+ const latest = latestCursor(context.storage);
112
+ if (BigInt(cursor) > BigInt(latest)) {
113
+ return Response.json(
114
+ { error: "cursor_ahead", latest_cursor: latest },
115
+ { status: 409 },
116
+ );
117
+ }
118
+ if (context.getWebSockets(EVENT_TAG).length >= MAX_CLIENTS) {
119
+ return Response.json(
120
+ { error: "event_socket_limit", limit: MAX_CLIENTS },
121
+ { status: 429, headers: { "retry-after": "1" } },
122
+ );
123
+ }
124
+ if (typeof globalThis.WebSocketPair !== "function") {
125
+ throw new Error("Cloudflare WebSocketPair is unavailable in this runtime");
126
+ }
127
+ const pair = new globalThis.WebSocketPair();
128
+ const client = pair[0];
129
+ const server = pair[1];
130
+ if (!client || !server || typeof server.serializeAttachment !== "function"
131
+ || typeof server.deserializeAttachment !== "function") {
132
+ throw new Error("Cloudflare WebSocketPair returned an invalid pair");
133
+ }
134
+ server.serializeAttachment({ version: 1, cursor });
135
+ context.acceptWebSocket(server, [EVENT_TAG]);
136
+ try {
137
+ catchUp(context.storage, server);
138
+ } catch (error) {
139
+ try { server.close(1011, "Nanocodex event replay failed"); } catch { /* already closed */ }
140
+ throw error;
141
+ }
142
+ return new Response(null, { status: 101, webSocket: client });
143
+ }
144
+
145
+ function record(storage, event) {
146
+ const eventJson = JSON.stringify(event);
147
+ const bytes = encoder.encode(eventJson).byteLength;
148
+ if (bytes > MAX_EVENT_BYTES) {
149
+ throw new RangeError(`Cloudflare AgentEvent exceeds ${MAX_EVENT_BYTES} encoded bytes`);
150
+ }
151
+ return storage.transactionSync(() => {
152
+ const meta = eventMeta(storage);
153
+ if (meta.stream_error !== null) throw new Error("Cloudflare Agent event stream has failed");
154
+ if (meta.total_bytes + bytes > MAX_LOG_BYTES) {
155
+ throw new RangeError(`Cloudflare AgentEvent log exceeds ${MAX_LOG_BYTES} encoded bytes`);
156
+ }
157
+ const inserted = storage.sql.exec(
158
+ `INSERT INTO nanocodex_cloudflare_events (event_json, created_at)
159
+ VALUES (?, ?)
160
+ RETURNING CAST(cursor AS TEXT) AS cursor`,
161
+ eventJson,
162
+ Date.now(),
163
+ ).toArray()[0];
164
+ const cursor = parseCursor(inserted?.cursor);
165
+ if (cursor === undefined || cursor === "0") {
166
+ throw new Error("Cloudflare Agent failed to allocate an event cursor");
167
+ }
168
+ storage.sql.exec(
169
+ "UPDATE nanocodex_cloudflare_event_meta SET total_bytes = total_bytes + ? WHERE singleton = 1",
170
+ bytes,
171
+ );
172
+ return { cursor };
173
+ });
174
+ }
175
+
176
+ function recoverSockets(context) {
177
+ const sockets = context.getWebSockets(EVENT_TAG);
178
+ if (eventMeta(context.storage).stream_error !== null) {
179
+ for (const socket of sockets) close(socket, 1011, "Nanocodex event stream failed");
180
+ return;
181
+ }
182
+ for (const socket of sockets) catchUp(context.storage, socket);
183
+ }
184
+
185
+ function catchUp(storage, socket) {
186
+ if (socket.readyState !== 1) return;
187
+ const attachment = socketAttachment(socket);
188
+ if (attachment === undefined) {
189
+ close(socket, 1011, "Nanocodex event replay state is invalid");
190
+ return;
191
+ }
192
+ const latest = latestCursor(storage);
193
+ if (BigInt(attachment.cursor) > BigInt(latest)) {
194
+ close(socket, 1011, "Nanocodex event replay cursor is ahead");
195
+ return;
196
+ }
197
+ if (attachment.replayPaused) {
198
+ pauseReplay(socket, attachment.cursor, latest, 0);
199
+ return;
200
+ }
201
+
202
+ let cursor = attachment.cursor;
203
+ let pageBytes = 0;
204
+ let pageEvents = 0;
205
+ while (pageEvents < REPLAY_PAGE_EVENTS) {
206
+ const row = nextEventRow(storage, cursor);
207
+ if (row === undefined) return;
208
+ const encoded = `{"cursor":${JSON.stringify(row.cursor)},"event":${row.event_json}}`;
209
+ const bytes = encoder.encode(encoded).byteLength;
210
+ if (bytes > REPLAY_PAGE_BYTES - REPLAY_CONTROL_RESERVE_BYTES) {
211
+ close(socket, 1011, "Nanocodex event exceeds replay page budget");
212
+ return;
213
+ }
214
+ if (pageEvents > 0
215
+ && pageBytes + bytes > REPLAY_PAGE_BYTES - REPLAY_CONTROL_RESERVE_BYTES) {
216
+ break;
217
+ }
218
+ if (!sendEvent(socket, encoded, row.cursor)) return;
219
+ cursor = row.cursor;
220
+ pageBytes += bytes;
221
+ pageEvents += 1;
222
+ }
223
+
224
+ const replayLatest = latestCursor(storage);
225
+ if (BigInt(cursor) < BigInt(replayLatest)) {
226
+ pauseReplay(socket, cursor, replayLatest, pageBytes);
227
+ }
228
+ }
229
+
230
+ function socketAttachment(socket) {
231
+ if (typeof socket.deserializeAttachment !== "function") return undefined;
232
+ let attachment;
233
+ try {
234
+ attachment = socket.deserializeAttachment();
235
+ } catch {
236
+ return undefined;
237
+ }
238
+ if (!attachment || attachment.version !== 1
239
+ || (attachment.replayPaused !== undefined && typeof attachment.replayPaused !== "boolean")) {
240
+ return undefined;
241
+ }
242
+ const cursor = parseCursor(attachment.cursor);
243
+ return cursor === undefined
244
+ ? undefined
245
+ : { cursor, replayPaused: attachment.replayPaused === true };
246
+ }
247
+
248
+ function sendEvent(socket, encoded, cursor) {
249
+ try {
250
+ socket.send(encoded);
251
+ socket.serializeAttachment({ version: 1, cursor });
252
+ return true;
253
+ } catch {
254
+ close(socket, 1011, "Nanocodex event delivery failed");
255
+ return false;
256
+ }
257
+ }
258
+
259
+ function pauseReplay(socket, cursor, latest, pageBytes) {
260
+ const encoded = JSON.stringify({
261
+ type: "replay_paused",
262
+ cursor,
263
+ latest_cursor: latest,
264
+ });
265
+ if (pageBytes + encoder.encode(encoded).byteLength > REPLAY_PAGE_BYTES) {
266
+ close(socket, 1011, "Nanocodex replay control exceeds page budget");
267
+ return;
268
+ }
269
+ try {
270
+ // The client must observe the fence before it can continue from its cursor.
271
+ // Checkpointing first could strand a restored socket behind an unseen fence.
272
+ socket.send(encoded);
273
+ socket.serializeAttachment({ version: 1, cursor, replayPaused: true });
274
+ socket.close(1013, "Nanocodex event replay continuation required");
275
+ } catch {
276
+ close(socket, 1011, "Nanocodex event replay pause failed");
277
+ }
278
+ }
279
+
280
+ function close(socket, code, reason) {
281
+ try { socket.close(code, reason); } catch { /* already closed */ }
282
+ }
283
+
284
+ function nextEventRow(storage, after) {
285
+ return storage.sql.exec(
286
+ `SELECT CAST(cursor AS TEXT) AS cursor, event_json
287
+ FROM nanocodex_cloudflare_events
288
+ WHERE cursor > CAST(? AS INTEGER)
289
+ ORDER BY cursor
290
+ LIMIT 1`,
291
+ after,
292
+ ).toArray()[0];
293
+ }
294
+
295
+ function latestCursor(storage) {
296
+ return storage.sql.exec(
297
+ "SELECT CAST(COALESCE(MAX(cursor), 0) AS TEXT) AS cursor FROM nanocodex_cloudflare_events",
298
+ ).toArray()[0]?.cursor ?? "0";
299
+ }
300
+
301
+ function eventMeta(storage) {
302
+ return storage.sql.exec(
303
+ "SELECT total_bytes, stream_error FROM nanocodex_cloudflare_event_meta WHERE singleton = 1",
304
+ ).toArray()[0] ?? { total_bytes: 0, stream_error: null };
305
+ }
306
+
307
+ function parseCursor(value) {
308
+ if (value === null || value === "") return "0";
309
+ if (typeof value !== "string" || !/^[0-9]+$/.test(value)) return undefined;
310
+ try {
311
+ const cursor = BigInt(value);
312
+ return cursor <= MAX_CURSOR ? cursor.toString() : undefined;
313
+ } catch {
314
+ return undefined;
315
+ }
316
+ }
@@ -0,0 +1,7 @@
1
+ export * as Agent from "./Agent.mjs";
2
+ export { cloudflareEgress } from "./egress.mjs";
3
+ export type {
4
+ CloudflareEgressBinding,
5
+ CloudflareEgressOptions,
6
+ CloudflareEgressTransportOptions,
7
+ } from "./egress.mjs";
@@ -0,0 +1,6 @@
1
+ import module from "../pkg-web/nanocodex_bg.wasm";
2
+ import { bindAgent } from "./Agent.mjs";
3
+
4
+ /** Cloudflare Durable Object Agent backed by the package's compiled WASM. */
5
+ export const Agent = bindAgent(module);
6
+ export { cloudflareEgress } from "./egress.mjs";
@@ -0,0 +1,55 @@
1
+ import type {
2
+ AgentLifecycle,
3
+ AgentOptions,
4
+ CodeEvaluator,
5
+ DefaultAgent,
6
+ DurabilityStore,
7
+ ExecutionEnvironment,
8
+ McpServers,
9
+ ToolConfiguration,
10
+ } from "../types.mjs";
11
+ import type { ManagedTransport, ResponsesTransport } from "../browser/Transport.mjs";
12
+ import type { Tool as SubagentTool } from "../runtime/subagents.mjs";
13
+ import type { Workspace } from "../runtime/workspace.mjs";
14
+ import type { Tools } from "../tools/Tools.mjs";
15
+
16
+ export type Agent = DefaultAgent;
17
+ type ToolExposureOptions =
18
+ | { mcp?: false | undefined; toolMode?: "code" | "direct" | undefined }
19
+ | { mcp: McpServers; toolMode?: "code" | undefined };
20
+
21
+ /** Creates Rust/WASM in the current Web API host isolate. */
22
+ export function create(options: create.ManagedOptions): Promise<AgentLifecycle>;
23
+ export function create(options?: create.Options): Promise<create.ReturnType>;
24
+ export declare namespace create {
25
+ type ManagedOptions = Readonly<{
26
+ transport: ManagedTransport;
27
+ tools?: Tools | undefined;
28
+ }>;
29
+ type Options = AgentOptions & ToolExposureOptions & {
30
+ /** Caller-owned persistent filesystem mounted through standard workspace tools. */
31
+ filesystem?: Workspace | undefined;
32
+ /** Disable the legacy list/read/write workspace functions when a shell owns filesystem access. */
33
+ filesystemTools?: boolean | undefined;
34
+ module?: unknown;
35
+ /** Fixed workspace facts, including its AGENTS.md snapshot. */
36
+ executionEnvironment?: ExecutionEnvironment | undefined;
37
+ /** Optional CSP-compatible Code Mode evaluator, such as createQuickJsEvaluator(). */
38
+ codeEvaluator?: CodeEvaluator | undefined;
39
+ /** Defaults to the same-origin Nanocodex `/api/responses` proxy. */
40
+ transport?: ResponsesTransport | undefined;
41
+ } & (
42
+ | {
43
+ durability?: undefined;
44
+ durabilityId?: undefined;
45
+ tools?: ToolConfiguration<SubagentTool> | undefined;
46
+ }
47
+ | {
48
+ durability: DurabilityStore;
49
+ durabilityId: string;
50
+ /** The root remains durable; clean subagent children are in-memory. */
51
+ tools?: ToolConfiguration<SubagentTool> | undefined;
52
+ }
53
+ );
54
+ type ReturnType = Agent;
55
+ }
@@ -0,0 +1 @@
1
+ export { create } from "../browser/InlineAgent.mjs";
@@ -0,0 +1,82 @@
1
+ export * as Actions from "../actions/index.mjs";
2
+ export { createQuickJsEvaluator } from "../runtime/quickjs-evaluator.mjs";
3
+ export {
4
+ createTempoProvider,
5
+ createTempoProviderFromAccounts,
6
+ DEFAULT_MERCATOR_MCP_URL,
7
+ } from "../runtime/tempo-provider.mjs";
8
+ export type {
9
+ AccountsTempoProviderOptions,
10
+ AccountsWallet,
11
+ TempoProvider,
12
+ } from "../runtime/tempo-provider.mjs";
13
+ export type {
14
+ AgentActions,
15
+ AgentEvent,
16
+ AgentLifecycle,
17
+ AgentOptions,
18
+ AgentSessionContext,
19
+ CompactionInstructionContext,
20
+ CompactionInstructionResolver,
21
+ CompactionItemIdentity,
22
+ CompactionOutcome,
23
+ CompactionReplacedEventPayload,
24
+ ChatGptCredential,
25
+ ChatGptCredentialSeed,
26
+ ChatGptLoginStatus,
27
+ ChatGptSubscriptionHandle,
28
+ ChatGptSubscriptionOptions,
29
+ ChatGptSubscriptionStore,
30
+ CodeEvaluator,
31
+ CodeEvaluatorEnvironment,
32
+ CostStatus,
33
+ DefaultAgent,
34
+ EstimatedUsdCost,
35
+ EventWatcher,
36
+ ExecutionEnvironment,
37
+ ForkOptions,
38
+ HistoryContentItem,
39
+ HistoryItem,
40
+ HistorySeed,
41
+ McpClient,
42
+ McpPayment,
43
+ McpServer,
44
+ McpServers,
45
+ McpTool,
46
+ MemoryChatGptSubscriptionStore,
47
+ Model,
48
+ MppSession,
49
+ MppWebSocket,
50
+ NamedTool,
51
+ PromptInput,
52
+ PromptItem,
53
+ LifecycleTurn,
54
+ LifecycleTurnResult,
55
+ RealtimeTranscriptEntry,
56
+ ReasoningMode,
57
+ SessionSnapshot,
58
+ SubscriptionCommitRequest,
59
+ SubscriptionCommitResult,
60
+ SubscriptionRevision,
61
+ SubscriptionStoredValue,
62
+ Thinking,
63
+ CustomToolFormat,
64
+ Tool,
65
+ ToolDefinition,
66
+ ToolJson,
67
+ ToolConfiguration,
68
+ ToolContext,
69
+ SubagentToolContext,
70
+ ToolMap,
71
+ Turn,
72
+ TurnResult,
73
+ TurnUsage,
74
+ WatchEventsOptions,
75
+ } from "../types.mjs";
76
+ export * as Agent from "./Agent.mjs";
77
+ export * as Subagents from "../runtime/subagents.mjs";
78
+ export * as Transport from "../browser/Transport.mjs";
79
+ export type {
80
+ BrowserWebSocketConnection,
81
+ BrowserWebSocketRequest,
82
+ } from "../browser/host.mjs";
@@ -0,0 +1,10 @@
1
+ export * as Actions from "../actions/index.mjs";
2
+ export { createQuickJsEvaluator } from "../runtime/quickjs-evaluator.mjs";
3
+ export {
4
+ createTempoProvider,
5
+ createTempoProviderFromAccounts,
6
+ DEFAULT_MERCATOR_MCP_URL,
7
+ } from "../runtime/tempo-provider.mjs";
8
+ export * as Agent from "./Agent.mjs";
9
+ export * as Subagents from "../runtime/subagents.mjs";
10
+ export * as Transport from "../browser/Transport.mjs";