@lepsto/sdk-app 84.0.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 (183) hide show
  1. package/README.md +233 -0
  2. package/dist/_types/gen/analytics/index.d.ts +2 -0
  3. package/dist/_types/gen/analytics/queryOptions.gen.d.ts +74 -0
  4. package/dist/_types/gen/bindings.gen.d.ts +3 -0
  5. package/dist/_types/gen/brain/index.d.ts +2 -0
  6. package/dist/_types/gen/brain/queryOptions.gen.d.ts +166 -0
  7. package/dist/_types/gen/client.gen.d.ts +1087 -0
  8. package/dist/_types/gen/consent/index.d.ts +2 -0
  9. package/dist/_types/gen/consent/queryOptions.gen.d.ts +62 -0
  10. package/dist/_types/gen/content/index.d.ts +2 -0
  11. package/dist/_types/gen/content/queryOptions.gen.d.ts +126 -0
  12. package/dist/_types/gen/deployment/index.d.ts +2 -0
  13. package/dist/_types/gen/deployment/queryOptions.gen.d.ts +438 -0
  14. package/dist/_types/gen/mail/index.d.ts +2 -0
  15. package/dist/_types/gen/mail/queryOptions.gen.d.ts +206 -0
  16. package/dist/_types/gen/manifest.gen.d.ts +4 -0
  17. package/dist/_types/gen/observe/index.d.ts +2 -0
  18. package/dist/_types/gen/observe/queryOptions.gen.d.ts +142 -0
  19. package/dist/_types/gen/organization/index.d.ts +2 -0
  20. package/dist/_types/gen/organization/queryOptions.gen.d.ts +362 -0
  21. package/dist/_types/gen/realtime/index.d.ts +2 -0
  22. package/dist/_types/gen/realtime/queryOptions.gen.d.ts +114 -0
  23. package/dist/_types/gen/support/index.d.ts +2 -0
  24. package/dist/_types/gen/support/queryOptions.gen.d.ts +206 -0
  25. package/dist/_types/gen/tracking/index.d.ts +2 -0
  26. package/dist/_types/gen/tracking/queryOptions.gen.d.ts +150 -0
  27. package/dist/_types/gen/types.gen.d.ts +126011 -0
  28. package/dist/_types/gen/users/index.d.ts +2 -0
  29. package/dist/_types/gen/users/queryOptions.gen.d.ts +182 -0
  30. package/dist/_types/gen/waitlist/index.d.ts +2 -0
  31. package/dist/_types/gen/waitlist/queryOptions.gen.d.ts +30 -0
  32. package/dist/_types/gen/workflow/index.d.ts +2 -0
  33. package/dist/_types/gen/workflow/queryOptions.gen.d.ts +166 -0
  34. package/dist/_types/index.d.ts +11 -0
  35. package/dist/_types/package.json +1 -0
  36. package/dist/_types/react/index.d.ts +33 -0
  37. package/dist/_types/runtime/access-reason.d.ts +27 -0
  38. package/dist/_types/runtime/access.d.ts +40 -0
  39. package/dist/_types/runtime/compositions.d.ts +16 -0
  40. package/dist/_types/runtime/connectStream.d.ts +15 -0
  41. package/dist/_types/runtime/createLesslyApp.d.ts +10 -0
  42. package/dist/_types/runtime/csrf.d.ts +1 -0
  43. package/dist/_types/runtime/errors.d.ts +18 -0
  44. package/dist/_types/runtime/name.d.ts +26 -0
  45. package/dist/_types/runtime/operations.d.ts +13 -0
  46. package/dist/_types/runtime/permission-match.d.ts +62 -0
  47. package/dist/_types/runtime/request.d.ts +9 -0
  48. package/dist/_types/runtime/types.d.ts +129 -0
  49. package/dist/analytics/index.cjs +96 -0
  50. package/dist/analytics/index.cjs.map +1 -0
  51. package/dist/analytics/index.d.cts +1 -0
  52. package/dist/analytics/index.d.ts +1 -0
  53. package/dist/analytics/index.js +77 -0
  54. package/dist/analytics/index.js.map +1 -0
  55. package/dist/brain/index.cjs +211 -0
  56. package/dist/brain/index.cjs.map +1 -0
  57. package/dist/brain/index.d.cts +1 -0
  58. package/dist/brain/index.d.ts +1 -0
  59. package/dist/brain/index.js +169 -0
  60. package/dist/brain/index.js.map +1 -0
  61. package/dist/consent/index.cjs +81 -0
  62. package/dist/consent/index.cjs.map +1 -0
  63. package/dist/consent/index.d.cts +1 -0
  64. package/dist/consent/index.d.ts +1 -0
  65. package/dist/consent/index.js +65 -0
  66. package/dist/consent/index.js.map +1 -0
  67. package/dist/content/index.cjs +161 -0
  68. package/dist/content/index.cjs.map +1 -0
  69. package/dist/content/index.d.cts +1 -0
  70. package/dist/content/index.d.ts +1 -0
  71. package/dist/content/index.js +129 -0
  72. package/dist/content/index.js.map +1 -0
  73. package/dist/deployment/index.cjs +551 -0
  74. package/dist/deployment/index.cjs.map +1 -0
  75. package/dist/deployment/index.d.cts +1 -0
  76. package/dist/deployment/index.d.ts +1 -0
  77. package/dist/deployment/index.js +441 -0
  78. package/dist/deployment/index.js.map +1 -0
  79. package/dist/index.cjs +12565 -0
  80. package/dist/index.cjs.map +1 -0
  81. package/dist/index.d.cts +1 -0
  82. package/dist/index.d.ts +1 -0
  83. package/dist/index.js +12557 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/mail/index.cjs +261 -0
  86. package/dist/mail/index.cjs.map +1 -0
  87. package/dist/mail/index.d.cts +1 -0
  88. package/dist/mail/index.d.ts +1 -0
  89. package/dist/mail/index.js +209 -0
  90. package/dist/mail/index.js.map +1 -0
  91. package/dist/observe/index.cjs +181 -0
  92. package/dist/observe/index.cjs.map +1 -0
  93. package/dist/observe/index.d.cts +1 -0
  94. package/dist/observe/index.d.ts +1 -0
  95. package/dist/observe/index.js +145 -0
  96. package/dist/observe/index.js.map +1 -0
  97. package/dist/organization/index.cjs +456 -0
  98. package/dist/organization/index.cjs.map +1 -0
  99. package/dist/organization/index.d.cts +1 -0
  100. package/dist/organization/index.d.ts +1 -0
  101. package/dist/organization/index.js +365 -0
  102. package/dist/organization/index.js.map +1 -0
  103. package/dist/react/index.cjs +29 -0
  104. package/dist/react/index.cjs.map +1 -0
  105. package/dist/react/index.d.cts +1 -0
  106. package/dist/react/index.d.ts +1 -0
  107. package/dist/react/index.js +26 -0
  108. package/dist/react/index.js.map +1 -0
  109. package/dist/realtime/index.cjs +146 -0
  110. package/dist/realtime/index.cjs.map +1 -0
  111. package/dist/realtime/index.d.cts +1 -0
  112. package/dist/realtime/index.d.ts +1 -0
  113. package/dist/realtime/index.js +117 -0
  114. package/dist/realtime/index.js.map +1 -0
  115. package/dist/support/index.cjs +261 -0
  116. package/dist/support/index.cjs.map +1 -0
  117. package/dist/support/index.d.cts +1 -0
  118. package/dist/support/index.d.ts +1 -0
  119. package/dist/support/index.js +209 -0
  120. package/dist/support/index.js.map +1 -0
  121. package/dist/tracking/index.cjs +191 -0
  122. package/dist/tracking/index.cjs.map +1 -0
  123. package/dist/tracking/index.d.cts +1 -0
  124. package/dist/tracking/index.d.ts +1 -0
  125. package/dist/tracking/index.js +153 -0
  126. package/dist/tracking/index.js.map +1 -0
  127. package/dist/users/index.cjs +231 -0
  128. package/dist/users/index.cjs.map +1 -0
  129. package/dist/users/index.d.cts +1 -0
  130. package/dist/users/index.d.ts +1 -0
  131. package/dist/users/index.js +185 -0
  132. package/dist/users/index.js.map +1 -0
  133. package/dist/waitlist/index.cjs +41 -0
  134. package/dist/waitlist/index.cjs.map +1 -0
  135. package/dist/waitlist/index.d.cts +1 -0
  136. package/dist/waitlist/index.d.ts +1 -0
  137. package/dist/waitlist/index.js +33 -0
  138. package/dist/waitlist/index.js.map +1 -0
  139. package/dist/workflow/index.cjs +211 -0
  140. package/dist/workflow/index.cjs.map +1 -0
  141. package/dist/workflow/index.d.cts +1 -0
  142. package/dist/workflow/index.d.ts +1 -0
  143. package/dist/workflow/index.js +169 -0
  144. package/dist/workflow/index.js.map +1 -0
  145. package/docs/README.md +89 -0
  146. package/docs/recipes/access.md +781 -0
  147. package/docs/recipes/federation.md +285 -0
  148. package/docs/recipes/local-dev.md +111 -0
  149. package/docs/recipes/sdk-usage.md +194 -0
  150. package/docs/rules.md +522 -0
  151. package/package.json +212 -0
  152. package/src/gen/analytics/index.ts +3 -0
  153. package/src/gen/analytics/queryOptions.gen.ts +124 -0
  154. package/src/gen/bindings.gen.ts +11330 -0
  155. package/src/gen/brain/index.ts +3 -0
  156. package/src/gen/brain/queryOptions.gen.ts +278 -0
  157. package/src/gen/client.gen.ts +2288 -0
  158. package/src/gen/consent/index.ts +3 -0
  159. package/src/gen/consent/queryOptions.gen.ts +102 -0
  160. package/src/gen/content/index.ts +3 -0
  161. package/src/gen/content/queryOptions.gen.ts +202 -0
  162. package/src/gen/deployment/index.ts +3 -0
  163. package/src/gen/deployment/queryOptions.gen.ts +707 -0
  164. package/src/gen/mail/index.ts +3 -0
  165. package/src/gen/mail/queryOptions.gen.ts +331 -0
  166. package/src/gen/manifest.gen.ts +780 -0
  167. package/src/gen/observe/index.ts +3 -0
  168. package/src/gen/observe/queryOptions.gen.ts +235 -0
  169. package/src/gen/organization/index.ts +3 -0
  170. package/src/gen/organization/queryOptions.gen.ts +578 -0
  171. package/src/gen/realtime/index.ts +3 -0
  172. package/src/gen/realtime/queryOptions.gen.ts +185 -0
  173. package/src/gen/support/index.ts +3 -0
  174. package/src/gen/support/queryOptions.gen.ts +331 -0
  175. package/src/gen/tracking/index.ts +3 -0
  176. package/src/gen/tracking/queryOptions.gen.ts +249 -0
  177. package/src/gen/types.gen.ts +119506 -0
  178. package/src/gen/users/index.ts +3 -0
  179. package/src/gen/users/queryOptions.gen.ts +295 -0
  180. package/src/gen/waitlist/index.ts +3 -0
  181. package/src/gen/waitlist/queryOptions.gen.ts +50 -0
  182. package/src/gen/workflow/index.ts +3 -0
  183. package/src/gen/workflow/queryOptions.gen.ts +274 -0
package/README.md ADDED
@@ -0,0 +1,233 @@
1
+ # @lessly/sdk-app
2
+
3
+ The Lessly SDK for App is a TypeScript SDK that provides runtime bindings and type-safe generated code for interacting with Lessly Platform APIs and services. This package generates type definitions and client bindings from API catalogs, enabling developers to build applications that consume Lessly platform services with full type safety and autocompletion.
4
+
5
+ **Note:** The `src/gen` directory contains generated SDK code and should not be edited by hand. Generated files are produced by running `npm run generate` with an API catalog.
6
+
7
+ The committed `src/gen` is a **convenience snapshot** — it lets the repo type-check, test, and build offline. It is **not** the source of truth: canonical generation happens **at publish time**, when Cloud Build regenerates `src/gen` from the live catalog before publishing. The catalog is **mid-migration**, so the committed snapshot's namespaces (currently `organization` and `playground`) will **grow as platform extensions migrate to `@lessly-platform/tools`** — a namespace only appears once its tools carry a REST binding (tools without one are excluded until migrated). Regenerate the snapshot with `npx tsx scripts/generate.ts <catalog.json> src/gen && npm run sync-exports` against the live catalog (`https://api.lessly.dev/catalog/tools`).
8
+
9
+ ## Usage
10
+
11
+ Create a client with `createLesslyApp`, then call operations through the Proxy namespace tree:
12
+
13
+ ```ts
14
+ import { createLesslyApp } from '@lessly/sdk-app';
15
+
16
+ const sdk = createLesslyApp({
17
+ baseUrl: 'https://api.lessly.dev', // or a page-relative '/api' in the browser
18
+ productId: 'prod_123',
19
+ // getCsrfToken defaults to reading the `lessly_csrf` cookie; override for SSR/tests.
20
+ });
21
+
22
+ const connectors = await sdk.organization.connectors.list({ productId: 'prod_123' });
23
+ await sdk.organization.product.create({ name: 'Acme' });
24
+ ```
25
+
26
+ The available namespaces track the live catalog and grow as platform extensions migrate; check
27
+ `package.json` `exports` (or `src/gen/manifest.gen.ts`) for what a given version exposes.
28
+
29
+ ### Operation identity on every method
30
+
31
+ Every generated REST method is a callable that also carries its own catalog identity, typed as
32
+ `((input: X) => Promise<Y>) & Operation`:
33
+
34
+ ```ts
35
+ sdk.mail.domain.create.operationKey; // 'mail_domain_create' — the catalog tool name
36
+ sdk.mail.domain.create.level; // 'admin' — one of 'read' | 'write' | 'admin'
37
+ ```
38
+
39
+ `level` comes verbatim from the platform catalog — the SDK transports it and never infers it from
40
+ `readOnly` or the HTTP method. Read both off the method rather than rebuilding a tool name from the
41
+ accessor path: a hyphenated resource (`sdk.tracking['event-names'].list`) joins several id
42
+ segments, so the path is a lossy view of the name. The properties are own properties of the
43
+ function, so they survive destructuring (`const { list } = sdk.organization.connectors`).
44
+
45
+ `src/gen/manifest.gen.ts` additionally exports `operations`, the whole tool-name -> level table,
46
+ for callers that need a level without holding a client.
47
+
48
+ ### Composer steps: `compositions`
49
+
50
+ A catalog tool may declare a **composition** — the contract a workflow builder needs to offer that
51
+ operation as a **step**. `src/gen/manifest.gen.ts` exports the whole table, re-exported from the
52
+ package root:
53
+
54
+ ```ts
55
+ import { compositions } from '@lessly/sdk-app';
56
+
57
+ if ('mail_domain_create' in compositions) {
58
+ const step = compositions['mail_domain_create'];
59
+ step.label; // 'Add a domain' — how a builder names the step
60
+ step.completion_event; // 'mail.domain.added' — the event that settles an async step
61
+ step.options; // Record<string, string> — builder-level knobs
62
+ step.pii; // input fields carrying personal data
63
+ step.secrets; // input fields carrying secrets
64
+ }
65
+ ```
66
+
67
+ **Presence is the whole signal.** A key is in the map exactly when the catalog gave that tool a
68
+ composition, and the value may legitimately be `{}` ("composable, nothing further to say"). Ask
69
+ `name in compositions`; a truthiness test on `label` would drop a perfectly composable step.
70
+
71
+ Every member is optional and the SDK reads none of them — the object is carried **verbatim** from
72
+ the catalog into the generated map, so a key the platform adds reaches your App even before this
73
+ SDK's `ToolComposition` type names it. Unlike `operations`, the map is **not** restricted to REST
74
+ tools: composability is a property of the operation, not of its transport, so a ws-bound step is
75
+ listed too.
76
+
77
+ A tool gaining, losing or re-declaring a composition ships as a **minor** — the map only ever gains
78
+ or loses a key, and no exported symbol appears or disappears with it.
79
+
80
+ Streaming (`<tool>Connect`) factories carry neither field: a socket is neither a read nor a write,
81
+ and the catalog declares no level for a ws-only tool.
82
+
83
+ Errors are surfaced as a typed `LesslyApiError` (`status`, `code`, `body`). Mutating calls
84
+ without the `lessly_csrf` cookie fail before the network with `status: 0` and
85
+ `code: 'csrf_cookie_missing'` — no retry, no hidden refresh.
86
+
87
+ ### TanStack Query
88
+
89
+ Each namespace subpath (`@lessly/sdk-app/<namespace>`) also ships framework-agnostic
90
+ query/mutation **option factories** — plain objects, not hooks — usable with any
91
+ TanStack Query adapter (React, Solid, Vue, Svelte). You pass the `sdk` instance
92
+ explicitly:
93
+
94
+ ```ts
95
+ // React example — works the same with any @tanstack/*-query adapter.
96
+ import { useQuery, useMutation } from '@tanstack/react-query';
97
+ import {
98
+ organizationConnectorsListQueryOptions,
99
+ organizationProductCreateMutationOptions,
100
+ } from '@lessly/sdk-app/organization';
101
+
102
+ function Connectors() {
103
+ const { data } = useQuery(organizationConnectorsListQueryOptions(sdk, { productId: 'prod_123' }));
104
+ const create = useMutation(organizationProductCreateMutationOptions(sdk));
105
+ // create.mutate({ name: 'Acme' })
106
+ }
107
+ ```
108
+
109
+ The factories return `{ queryKey, queryFn }` (and `{ mutationKey, mutationFn }`),
110
+ so they also work directly with `queryClient.ensureQueryData(...)` and friends.
111
+ This package has **no runtime dependencies** — bring your own TanStack Query adapter.
112
+
113
+ ## Publishing
114
+
115
+ This repo holds source only — **humans push code to GitHub, builds run in dev-console
116
+ via Cloud Build, and the published package lives on npmjs.** Nothing commits or pushes back to
117
+ this repo automatically; the catalog snapshot and changelog are stored in GCS, not in git.
118
+
119
+ Cloud Build clones the repo read-only and drives the runner-agnostic pipeline CLI:
120
+
121
+ ```sh
122
+ npm run ci -- --channel <next|latest> --catalog-url <URL> [--baseline <path>]
123
+ ```
124
+
125
+ - `--channel` — the npm dist-tag to publish under (`next` for staging, `latest` for production).
126
+ - `--catalog-url` — the public catalog endpoint, fetched with an anonymous GET
127
+ (staging `https://api.lessly.dev/catalog/tools`, production `https://api.lessly.com/catalog/tools`).
128
+ - `--baseline` — path to the previous catalog snapshot (downloaded from GCS) used for the
129
+ content-hash gate and the semver diff-classifier. **Omit it for the first publish.**
130
+
131
+ The very first publish on the (empty) npmjs registry is floored at **`0.2.0`**, not `0.1.0`,
132
+ so it lands strictly above the legacy GAR `0.1.x` line that existing consumers pinned (e.g.
133
+ `^0.1.1`). This mirrors the `@lessly/ui` migration (GAR `0.1.0` → npmjs `0.2.0`). Once a version
134
+ exists on a channel's dist-tag, normal semver bumping (and the recovery patch-bump) takes over.
135
+ The floor is keyed off the **registry**, not the flag: if the channel's dist-tag resolves to
136
+ nothing (empty npmjs), the run takes the first-publish path even when Cloud Build passes a stored
137
+ (GAR-era) baseline — the baseline is ignored and the freshly-fetched catalog ships as the `0.2.0`
138
+ initial release. So Cloud Build may keep passing the stored baseline through the migration without
139
+ erroring.
140
+
141
+ Because npm versions are immutable **package-wide** (not per-dist-tag), a missing channel tag does
142
+ not by itself mean an empty registry. The pipeline therefore also checks the package-wide max
143
+ version: if a tag is absent but the package already carries versions under another tag (e.g. `next`
144
+ published `0.2.0` and a first production run finds `latest` absent), it force-publishes a **fresh
145
+ patch bumped past that max** so `npm publish --tag <channel>` seeds the tag without a 409 on the
146
+ already-published version. The genuine `0.2.0` first-publish floor applies only when the package
147
+ has **no versions anywhere**.
148
+
149
+ The CLI fetches the catalog, regenerates `src/gen`, and compares against the baseline. When
150
+ the generated output changed it bumps the version in `package.json` (base version resolved
151
+ from `npm view @lessly/sdk-app dist-tags` against the configured registry, per channel —
152
+ see "Registry: public npmjs" below), appends `CHANGELOG.md`, and writes:
153
+
154
+ - `out/result.json` — `{ publish_needed, level, version }` (always written).
155
+ - `out/new-snapshot.json` — the new snapshot (written only when a publish is needed; see
156
+ "Snapshot shape" below).
157
+
158
+ The CLI performs **no git, gcloud, or npm-publish operations** — it is pure Node. Cloud Build
159
+ reads `out/result.json`, then runs `npm publish` and uploads the new snapshot + changelog to
160
+ GCS itself.
161
+
162
+ ### Registry: public npmjs
163
+
164
+ The package now publishes to **public npmjs**, not GAR: `package.json` sets
165
+ `publishConfig.registry = https://registry.npmjs.org/` and `publishConfig.access = public`.
166
+ Cloud Build publishes each channel under its own dist-tag — `next` for staging, `latest` for
167
+ production.
168
+
169
+ **Scope split (#493):** `@lessly` is **public-only** (npmjs); internal packages live in GAR under
170
+ `@lessly-platform`. The repo `.npmrc` encodes exactly that — `@lessly` -> npmjs,
171
+ `@lessly-platform` -> GAR (with `always-auth`). `@lessly/sdk-app` is **never** published to GAR
172
+ again. `scripts/npmrc.test.ts` guards both mappings.
173
+
174
+ **Scope-override gotcha:** a scoped `.npmrc` registry entry **outranks** both
175
+ `publishConfig.registry` and a bare `--registry` flag for npm's own resolution — that is how an
176
+ early run leaked a lookup to GAR. So every scripted npm call pins the scope explicitly, and the
177
+ `rebuild_sdk` Cloud Build step MUST publish via the canonical script (or the identical command):
178
+
179
+ ```sh
180
+ npm run publish:npmjs
181
+ # == npm publish --registry https://registry.npmjs.org/ --@lessly:registry=https://registry.npmjs.org/
182
+ ```
183
+
184
+ Base-version resolution (the `npm view` lookups inside the pipeline CLI — both the per-channel
185
+ version and the package-wide max-version probe) follows the same rule, and in **two** steps:
186
+ it reads the registry from `package.json`'s `publishConfig.registry` first (falling back to the
187
+ `.npmrc` `@lessly:registry` value if absent), **and** passes that registry as an explicit CLI
188
+ scope override (`--@lessly:registry=<registry>`) on every `npm view`. The `--registry` flag alone
189
+ is not enough: because the package is scoped `@lessly`, the `.npmrc` `@lessly:registry=<GAR>` entry
190
+ would otherwise outrank it and silently resolve the lookup against GAR — which is exactly how an
191
+ early run read GAR's `0.1.x` line instead of the empty npmjs registry and skipped the `0.2.0`
192
+ floor. This requires no change to the CLI's `--channel`/`--catalog-url`/`--baseline` contract.
193
+
194
+ ### Runtime changes: `runtime-bump.json`
195
+
196
+ The catalog diff only classifies **generated** code. The hand-written runtime (`src/runtime`, plus
197
+ `src/react` when present) is gated separately: the pipeline content-hashes those trees into
198
+ `runtimeHash` and stores it in the snapshot, so a runtime-only change publishes on its own instead
199
+ of waiting for an unrelated catalog change.
200
+
201
+ A runtime change ships at least a **PATCH**. To publish it at a higher level, commit the marker at
202
+ the repo root:
203
+
204
+ ```json
205
+ { "level": "minor" }
206
+ ```
207
+
208
+ - `runtime-bump.json` — `{ "level": "none" | "patch" | "minor" | "major" }`; a missing file reads as
209
+ `none`. Any other value fails the run.
210
+ - The marker applies **only while `runtimeHash` differs from the snapshot's**. The pipeline never
211
+ commits, so it is not reset after use — it simply goes inert once that publish is snapshotted and
212
+ the hashes match again. Set it in the same commit as the runtime change and leave it at that
213
+ value; set it back to `"none"` whenever you like.
214
+ - The published level is the **highest** of: the catalog diff (only when the generated output
215
+ changed), the runtime level (`max(marker, patch)` when the runtime changed), and `patch` when the
216
+ shipped docs changed. A `major` catalog diff therefore outranks a `minor` marker, and vice versa.
217
+ - A legacy snapshot with no `runtimeHash` publishes **one seeding PATCH** (when a runtime is
218
+ present) to record the hash, after which detection is fully hash-based — the same two-mode shape
219
+ as `docsHash`.
220
+
221
+ ### Snapshot shape
222
+
223
+ `out/new-snapshot.json` is now a wrapper, `{ catalog, docsHash, runtimeHash }`, rather than a bare
224
+ catalog —
225
+ `docsHash` is the content hash of the **shipped** guide (the `docs/*.md` + `docs/recipes` files,
226
+ matching the `files` globs; internal `docs/superpowers/` is excluded), added so a docs-only change
227
+ (no catalog diff) still triggers a PATCH publish; `runtimeHash` covers `src/runtime` + `src/react`
228
+ (see "Runtime changes" above). The file remains an **opaque blob** to Cloud
229
+ Build: store it in GCS exactly as written and pass it back verbatim as `--baseline` on the next
230
+ run. Older, bare-catalog baselines from before this change are still accepted: because such a
231
+ baseline predates in-package docs, the first run against it publishes a **one-time migration
232
+ PATCH** (when shipped docs are present) that ships the guide and seeds the wrapper snapshot —
233
+ after which docs-change detection is fully hash-based.
@@ -0,0 +1,2 @@
1
+ export * from './queryOptions.gen.js';
2
+ export type { AnalyticsCatalogGetInput, AnalyticsCatalogGetOutput, AnalyticsDashboardCreateInput, AnalyticsDashboardCreateOutput, AnalyticsDashboardDeleteInput, AnalyticsDashboardDeleteOutput, AnalyticsDashboardGetInput, AnalyticsDashboardGetOutput, AnalyticsDashboardListInput, AnalyticsDashboardListOutput, AnalyticsDashboardRunInput, AnalyticsDashboardRunOutput, AnalyticsDashboardUpdateInput, AnalyticsDashboardUpdateOutput, AnalyticsFunnelRunInput, AnalyticsFunnelRunOutput, AnalyticsInsightCreateInput, AnalyticsInsightCreateOutput, AnalyticsInsightDeleteInput, AnalyticsInsightDeleteOutput, AnalyticsInsightGetInput, AnalyticsInsightGetOutput, AnalyticsInsightListInput, AnalyticsInsightListOutput, AnalyticsInsightRunInput, AnalyticsInsightRunOutput, AnalyticsInsightUpdateInput, AnalyticsInsightUpdateOutput, AnalyticsMetricQueryInput, AnalyticsMetricQueryOutput, AnalyticsPersonTimelineInput, AnalyticsPersonTimelineOutput, AnalyticsQueryRunInput, AnalyticsQueryRunOutput, AnalyticsRetentionRunInput, AnalyticsRetentionRunOutput } from '../types.gen.js';
@@ -0,0 +1,74 @@
1
+ import type { GeneratedClient } from '../client.gen.js';
2
+ import type { AnalyticsCatalogGetInput, AnalyticsCatalogGetOutput, AnalyticsDashboardCreateInput, AnalyticsDashboardDeleteInput, AnalyticsDashboardGetInput, AnalyticsDashboardGetOutput, AnalyticsDashboardListInput, AnalyticsDashboardListOutput, AnalyticsDashboardRunInput, AnalyticsDashboardRunOutput, AnalyticsDashboardUpdateInput, AnalyticsFunnelRunInput, AnalyticsFunnelRunOutput, AnalyticsInsightCreateInput, AnalyticsInsightDeleteInput, AnalyticsInsightGetInput, AnalyticsInsightGetOutput, AnalyticsInsightListInput, AnalyticsInsightListOutput, AnalyticsInsightRunInput, AnalyticsInsightRunOutput, AnalyticsInsightUpdateInput, AnalyticsMetricQueryInput, AnalyticsMetricQueryOutput, AnalyticsPersonTimelineInput, AnalyticsPersonTimelineOutput, AnalyticsQueryRunInput, AnalyticsQueryRunOutput, AnalyticsRetentionRunInput, AnalyticsRetentionRunOutput } from '../types.gen.js';
3
+ export declare const analyticsCatalogGetQueryOptions: (sdk: GeneratedClient, input: AnalyticsCatalogGetInput) => {
4
+ queryKey: readonly ["analytics", "catalog", "get", AnalyticsCatalogGetInput];
5
+ queryFn: () => Promise<AnalyticsCatalogGetOutput>;
6
+ };
7
+ export declare const analyticsDashboardCreateMutationOptions: (sdk: GeneratedClient) => {
8
+ mutationKey: string[];
9
+ mutationFn: (input: AnalyticsDashboardCreateInput) => Promise<import(".").AnalyticsDashboardCreateOutput>;
10
+ };
11
+ export declare const analyticsDashboardDeleteMutationOptions: (sdk: GeneratedClient) => {
12
+ mutationKey: string[];
13
+ mutationFn: (input: AnalyticsDashboardDeleteInput) => Promise<import(".").AnalyticsDashboardDeleteOutput>;
14
+ };
15
+ export declare const analyticsDashboardGetQueryOptions: (sdk: GeneratedClient, input: AnalyticsDashboardGetInput) => {
16
+ queryKey: readonly ["analytics", "dashboard", "get", AnalyticsDashboardGetInput];
17
+ queryFn: () => Promise<AnalyticsDashboardGetOutput>;
18
+ };
19
+ export declare const analyticsDashboardListQueryOptions: (sdk: GeneratedClient, input: AnalyticsDashboardListInput) => {
20
+ queryKey: readonly ["analytics", "dashboard", "list", AnalyticsDashboardListInput];
21
+ queryFn: () => Promise<AnalyticsDashboardListOutput>;
22
+ };
23
+ export declare const analyticsDashboardRunQueryOptions: (sdk: GeneratedClient, input: AnalyticsDashboardRunInput) => {
24
+ queryKey: readonly ["analytics", "dashboard", "run", AnalyticsDashboardRunInput];
25
+ queryFn: () => Promise<AnalyticsDashboardRunOutput>;
26
+ };
27
+ export declare const analyticsDashboardUpdateMutationOptions: (sdk: GeneratedClient) => {
28
+ mutationKey: string[];
29
+ mutationFn: (input: AnalyticsDashboardUpdateInput) => Promise<import(".").AnalyticsDashboardUpdateOutput>;
30
+ };
31
+ export declare const analyticsFunnelRunQueryOptions: (sdk: GeneratedClient, input: AnalyticsFunnelRunInput) => {
32
+ queryKey: readonly ["analytics", "funnel", "run", AnalyticsFunnelRunInput];
33
+ queryFn: () => Promise<AnalyticsFunnelRunOutput>;
34
+ };
35
+ export declare const analyticsInsightCreateMutationOptions: (sdk: GeneratedClient) => {
36
+ mutationKey: string[];
37
+ mutationFn: (input: AnalyticsInsightCreateInput) => Promise<import(".").AnalyticsInsightCreateOutput>;
38
+ };
39
+ export declare const analyticsInsightDeleteMutationOptions: (sdk: GeneratedClient) => {
40
+ mutationKey: string[];
41
+ mutationFn: (input: AnalyticsInsightDeleteInput) => Promise<import(".").AnalyticsInsightDeleteOutput>;
42
+ };
43
+ export declare const analyticsInsightGetQueryOptions: (sdk: GeneratedClient, input: AnalyticsInsightGetInput) => {
44
+ queryKey: readonly ["analytics", "insight", "get", AnalyticsInsightGetInput];
45
+ queryFn: () => Promise<AnalyticsInsightGetOutput>;
46
+ };
47
+ export declare const analyticsInsightListQueryOptions: (sdk: GeneratedClient, input: AnalyticsInsightListInput) => {
48
+ queryKey: readonly ["analytics", "insight", "list", AnalyticsInsightListInput];
49
+ queryFn: () => Promise<AnalyticsInsightListOutput>;
50
+ };
51
+ export declare const analyticsInsightRunQueryOptions: (sdk: GeneratedClient, input: AnalyticsInsightRunInput) => {
52
+ queryKey: readonly ["analytics", "insight", "run", AnalyticsInsightRunInput];
53
+ queryFn: () => Promise<AnalyticsInsightRunOutput>;
54
+ };
55
+ export declare const analyticsInsightUpdateMutationOptions: (sdk: GeneratedClient) => {
56
+ mutationKey: string[];
57
+ mutationFn: (input: AnalyticsInsightUpdateInput) => Promise<import(".").AnalyticsInsightUpdateOutput>;
58
+ };
59
+ export declare const analyticsMetricQueryQueryOptions: (sdk: GeneratedClient, input: AnalyticsMetricQueryInput) => {
60
+ queryKey: readonly ["analytics", "metric", "query", AnalyticsMetricQueryInput];
61
+ queryFn: () => Promise<AnalyticsMetricQueryOutput>;
62
+ };
63
+ export declare const analyticsPersonTimelineQueryOptions: (sdk: GeneratedClient, input: AnalyticsPersonTimelineInput) => {
64
+ queryKey: readonly ["analytics", "person", "timeline", AnalyticsPersonTimelineInput];
65
+ queryFn: () => Promise<AnalyticsPersonTimelineOutput>;
66
+ };
67
+ export declare const analyticsQueryRunQueryOptions: (sdk: GeneratedClient, input: AnalyticsQueryRunInput) => {
68
+ queryKey: readonly ["analytics", "query", "run", AnalyticsQueryRunInput];
69
+ queryFn: () => Promise<AnalyticsQueryRunOutput>;
70
+ };
71
+ export declare const analyticsRetentionRunQueryOptions: (sdk: GeneratedClient, input: AnalyticsRetentionRunInput) => {
72
+ queryKey: readonly ["analytics", "retention", "run", AnalyticsRetentionRunInput];
73
+ queryFn: () => Promise<AnalyticsRetentionRunOutput>;
74
+ };
@@ -0,0 +1,3 @@
1
+ import type { BindingsMap, WsBindingsMap } from '../runtime/types.js';
2
+ export declare const bindings: BindingsMap;
3
+ export declare const wsBindings: WsBindingsMap;
@@ -0,0 +1,2 @@
1
+ export * from './queryOptions.gen.js';
2
+ export type { BrainBackupCreateInput, BrainBackupCreateOutput, BrainBackupRestoreInput, BrainBackupRestoreOutput, BrainBackupStatusInput, BrainBackupStatusOutput, BrainBackupsListInput, BrainBackupsListOutput, BrainClickupChannelsListInput, BrainClickupChannelsListOutput, BrainClickupConnectionsListInput, BrainClickupConnectionsListOutput, BrainClickupListsListInput, BrainClickupListsListOutput, BrainClickupSpacesListInput, BrainClickupSpacesListOutput, BrainCognitionDigestInput, BrainCognitionDigestOutput, BrainCognitionStatusInput, BrainCognitionStatusOutput, BrainCognitionSweepInput, BrainCognitionSweepOutput, BrainConnectorBranchesListInput, BrainConnectorBranchesListOutput, BrainConnectorConnectionsListInput, BrainConnectorConnectionsListOutput, BrainConnectorReposListInput, BrainConnectorReposListOutput, BrainDaemonBatchStatusInput, BrainDaemonBatchStatusOutput, BrainDaemonCreateInput, BrainDaemonCreateOutput, BrainDaemonGetInput, BrainDaemonGetOutput, BrainDaemonReingestInput, BrainDaemonReingestOutput, BrainDaemonRemoveInput, BrainDaemonRemoveOutput, BrainDaemonRunInput, BrainDaemonRunItemsInput, BrainDaemonRunItemsOutput, BrainDaemonRunOutput, BrainDaemonRunsInput, BrainDaemonRunsOutput, BrainDaemonStatusInput, BrainDaemonStatusOutput, BrainDaemonUpdateInput, BrainDaemonUpdateOutput, BrainDaemonsListInput, BrainDaemonsListOutput, BrainGdriveConnectionsListInput, BrainGdriveConnectionsListOutput, BrainKnowledgeEntityMemoriesInput, BrainKnowledgeEntityMemoriesOutput, BrainKnowledgeGraphInput, BrainKnowledgeGraphOutput, BrainKnowledgeNeighborhoodInput, BrainKnowledgeNeighborhoodOutput, BrainKnowledgeRelationsInput, BrainKnowledgeRelationsOutput, BrainKnowledgeSearchInput, BrainKnowledgeSearchOutput, BrainMemoryAddInput, BrainMemoryAddOutput, BrainMemoryDeleteInput, BrainMemoryDeleteOutput, BrainMemoryGetInput, BrainMemoryGetOutput, BrainMemoryListInput, BrainMemoryListOutput, BrainMemorySearchInput, BrainMemorySearchOutput, BrainMemoryStatsInput, BrainMemoryStatsOutput, BrainMemoryUpdateInput, BrainMemoryUpdateOutput, BrainProductSharedMemoryResetInput, BrainProductSharedMemoryResetOutput, BrainRestoreStatusInput, BrainRestoreStatusOutput, BrainUsageReportInput, BrainUsageReportOutput } from '../types.gen.js';
@@ -0,0 +1,166 @@
1
+ import type { GeneratedClient } from '../client.gen.js';
2
+ import type { BrainBackupCreateInput, BrainBackupRestoreInput, BrainBackupStatusInput, BrainBackupStatusOutput, BrainBackupsListInput, BrainBackupsListOutput, BrainClickupChannelsListInput, BrainClickupChannelsListOutput, BrainClickupConnectionsListInput, BrainClickupConnectionsListOutput, BrainClickupListsListInput, BrainClickupListsListOutput, BrainClickupSpacesListInput, BrainClickupSpacesListOutput, BrainCognitionDigestInput, BrainCognitionStatusInput, BrainCognitionStatusOutput, BrainCognitionSweepInput, BrainConnectorBranchesListInput, BrainConnectorBranchesListOutput, BrainConnectorConnectionsListInput, BrainConnectorConnectionsListOutput, BrainConnectorReposListInput, BrainConnectorReposListOutput, BrainDaemonBatchStatusInput, BrainDaemonBatchStatusOutput, BrainDaemonCreateInput, BrainDaemonGetInput, BrainDaemonGetOutput, BrainDaemonReingestInput, BrainDaemonRemoveInput, BrainDaemonRunInput, BrainDaemonRunItemsInput, BrainDaemonRunItemsOutput, BrainDaemonRunsInput, BrainDaemonRunsOutput, BrainDaemonStatusInput, BrainDaemonStatusOutput, BrainDaemonUpdateInput, BrainDaemonsListInput, BrainDaemonsListOutput, BrainGdriveConnectionsListInput, BrainGdriveConnectionsListOutput, BrainKnowledgeEntityMemoriesInput, BrainKnowledgeEntityMemoriesOutput, BrainKnowledgeGraphInput, BrainKnowledgeGraphOutput, BrainKnowledgeNeighborhoodInput, BrainKnowledgeNeighborhoodOutput, BrainKnowledgeRelationsInput, BrainKnowledgeRelationsOutput, BrainKnowledgeSearchInput, BrainKnowledgeSearchOutput, BrainMemoryAddInput, BrainMemoryDeleteInput, BrainMemoryGetInput, BrainMemoryGetOutput, BrainMemoryListInput, BrainMemoryListOutput, BrainMemorySearchInput, BrainMemorySearchOutput, BrainMemoryStatsInput, BrainMemoryStatsOutput, BrainMemoryUpdateInput, BrainProductSharedMemoryResetInput, BrainRestoreStatusInput, BrainRestoreStatusOutput, BrainUsageReportInput, BrainUsageReportOutput } from '../types.gen.js';
3
+ export declare const brainBackupCreateMutationOptions: (sdk: GeneratedClient) => {
4
+ mutationKey: string[];
5
+ mutationFn: (input: BrainBackupCreateInput) => Promise<import(".").BrainBackupCreateOutput>;
6
+ };
7
+ export declare const brainBackupRestoreMutationOptions: (sdk: GeneratedClient) => {
8
+ mutationKey: string[];
9
+ mutationFn: (input: BrainBackupRestoreInput) => Promise<import(".").BrainBackupRestoreOutput>;
10
+ };
11
+ export declare const brainBackupStatusQueryOptions: (sdk: GeneratedClient, input: BrainBackupStatusInput) => {
12
+ queryKey: readonly ["brain", "backup", "status", BrainBackupStatusInput];
13
+ queryFn: () => Promise<BrainBackupStatusOutput>;
14
+ };
15
+ export declare const brainBackupsListQueryOptions: (sdk: GeneratedClient, input: BrainBackupsListInput) => {
16
+ queryKey: readonly ["brain", "backups", "list", BrainBackupsListInput];
17
+ queryFn: () => Promise<BrainBackupsListOutput>;
18
+ };
19
+ export declare const brainClickupChannelsListQueryOptions: (sdk: GeneratedClient, input: BrainClickupChannelsListInput) => {
20
+ queryKey: readonly ["brain", "clickup-channels", "list", BrainClickupChannelsListInput];
21
+ queryFn: () => Promise<BrainClickupChannelsListOutput>;
22
+ };
23
+ export declare const brainClickupConnectionsListQueryOptions: (sdk: GeneratedClient, input: BrainClickupConnectionsListInput) => {
24
+ queryKey: readonly ["brain", "clickup-connections", "list", BrainClickupConnectionsListInput];
25
+ queryFn: () => Promise<BrainClickupConnectionsListOutput>;
26
+ };
27
+ export declare const brainClickupListsListQueryOptions: (sdk: GeneratedClient, input: BrainClickupListsListInput) => {
28
+ queryKey: readonly ["brain", "clickup-lists", "list", BrainClickupListsListInput];
29
+ queryFn: () => Promise<BrainClickupListsListOutput>;
30
+ };
31
+ export declare const brainClickupSpacesListQueryOptions: (sdk: GeneratedClient, input: BrainClickupSpacesListInput) => {
32
+ queryKey: readonly ["brain", "clickup-spaces", "list", BrainClickupSpacesListInput];
33
+ queryFn: () => Promise<BrainClickupSpacesListOutput>;
34
+ };
35
+ export declare const brainCognitionDigestMutationOptions: (sdk: GeneratedClient) => {
36
+ mutationKey: string[];
37
+ mutationFn: (input: BrainCognitionDigestInput) => Promise<import(".").BrainCognitionDigestOutput>;
38
+ };
39
+ export declare const brainCognitionStatusQueryOptions: (sdk: GeneratedClient, input: BrainCognitionStatusInput) => {
40
+ queryKey: readonly ["brain", "cognition", "status", BrainCognitionStatusInput];
41
+ queryFn: () => Promise<BrainCognitionStatusOutput>;
42
+ };
43
+ export declare const brainCognitionSweepMutationOptions: (sdk: GeneratedClient) => {
44
+ mutationKey: string[];
45
+ mutationFn: (input: BrainCognitionSweepInput) => Promise<import(".").BrainCognitionSweepOutput>;
46
+ };
47
+ export declare const brainConnectorBranchesListQueryOptions: (sdk: GeneratedClient, input: BrainConnectorBranchesListInput) => {
48
+ queryKey: readonly ["brain", "connector-branches", "list", BrainConnectorBranchesListInput];
49
+ queryFn: () => Promise<BrainConnectorBranchesListOutput>;
50
+ };
51
+ export declare const brainConnectorConnectionsListQueryOptions: (sdk: GeneratedClient, input: BrainConnectorConnectionsListInput) => {
52
+ queryKey: readonly ["brain", "connector-connections", "list", BrainConnectorConnectionsListInput];
53
+ queryFn: () => Promise<BrainConnectorConnectionsListOutput>;
54
+ };
55
+ export declare const brainConnectorReposListQueryOptions: (sdk: GeneratedClient, input: BrainConnectorReposListInput) => {
56
+ queryKey: readonly ["brain", "connector-repos", "list", BrainConnectorReposListInput];
57
+ queryFn: () => Promise<BrainConnectorReposListOutput>;
58
+ };
59
+ export declare const brainDaemonBatchStatusQueryOptions: (sdk: GeneratedClient, input: BrainDaemonBatchStatusInput) => {
60
+ queryKey: readonly ["brain", "daemon-batch", "status", BrainDaemonBatchStatusInput];
61
+ queryFn: () => Promise<BrainDaemonBatchStatusOutput>;
62
+ };
63
+ export declare const brainDaemonCreateMutationOptions: (sdk: GeneratedClient) => {
64
+ mutationKey: string[];
65
+ mutationFn: (input: BrainDaemonCreateInput) => Promise<import(".").BrainDaemonCreateOutput>;
66
+ };
67
+ export declare const brainDaemonGetQueryOptions: (sdk: GeneratedClient, input: BrainDaemonGetInput) => {
68
+ queryKey: readonly ["brain", "daemon", "get", BrainDaemonGetInput];
69
+ queryFn: () => Promise<BrainDaemonGetOutput>;
70
+ };
71
+ export declare const brainDaemonReingestMutationOptions: (sdk: GeneratedClient) => {
72
+ mutationKey: string[];
73
+ mutationFn: (input: BrainDaemonReingestInput) => Promise<import(".").BrainDaemonReingestOutput>;
74
+ };
75
+ export declare const brainDaemonRemoveMutationOptions: (sdk: GeneratedClient) => {
76
+ mutationKey: string[];
77
+ mutationFn: (input: BrainDaemonRemoveInput) => Promise<import(".").BrainDaemonRemoveOutput>;
78
+ };
79
+ export declare const brainDaemonRunMutationOptions: (sdk: GeneratedClient) => {
80
+ mutationKey: string[];
81
+ mutationFn: (input: BrainDaemonRunInput) => Promise<import(".").BrainDaemonRunOutput>;
82
+ };
83
+ export declare const brainDaemonRunItemsQueryOptions: (sdk: GeneratedClient, input: BrainDaemonRunItemsInput) => {
84
+ queryKey: readonly ["brain", "daemon-run", "items", BrainDaemonRunItemsInput];
85
+ queryFn: () => Promise<BrainDaemonRunItemsOutput>;
86
+ };
87
+ export declare const brainDaemonRunsQueryOptions: (sdk: GeneratedClient, input: BrainDaemonRunsInput) => {
88
+ queryKey: readonly ["brain", "daemon", "runs", BrainDaemonRunsInput];
89
+ queryFn: () => Promise<BrainDaemonRunsOutput>;
90
+ };
91
+ export declare const brainDaemonStatusQueryOptions: (sdk: GeneratedClient, input: BrainDaemonStatusInput) => {
92
+ queryKey: readonly ["brain", "daemon", "status", BrainDaemonStatusInput];
93
+ queryFn: () => Promise<BrainDaemonStatusOutput>;
94
+ };
95
+ export declare const brainDaemonUpdateMutationOptions: (sdk: GeneratedClient) => {
96
+ mutationKey: string[];
97
+ mutationFn: (input: BrainDaemonUpdateInput) => Promise<import(".").BrainDaemonUpdateOutput>;
98
+ };
99
+ export declare const brainDaemonsListQueryOptions: (sdk: GeneratedClient, input: BrainDaemonsListInput) => {
100
+ queryKey: readonly ["brain", "daemons", "list", BrainDaemonsListInput];
101
+ queryFn: () => Promise<BrainDaemonsListOutput>;
102
+ };
103
+ export declare const brainGdriveConnectionsListQueryOptions: (sdk: GeneratedClient, input: BrainGdriveConnectionsListInput) => {
104
+ queryKey: readonly ["brain", "gdrive-connections", "list", BrainGdriveConnectionsListInput];
105
+ queryFn: () => Promise<BrainGdriveConnectionsListOutput>;
106
+ };
107
+ export declare const brainKnowledgeEntityMemoriesQueryOptions: (sdk: GeneratedClient, input: BrainKnowledgeEntityMemoriesInput) => {
108
+ queryKey: readonly ["brain", "knowledge-entity", "memories", BrainKnowledgeEntityMemoriesInput];
109
+ queryFn: () => Promise<BrainKnowledgeEntityMemoriesOutput>;
110
+ };
111
+ export declare const brainKnowledgeGraphQueryOptions: (sdk: GeneratedClient, input: BrainKnowledgeGraphInput) => {
112
+ queryKey: readonly ["brain", "knowledge", "graph", BrainKnowledgeGraphInput];
113
+ queryFn: () => Promise<BrainKnowledgeGraphOutput>;
114
+ };
115
+ export declare const brainKnowledgeNeighborhoodQueryOptions: (sdk: GeneratedClient, input: BrainKnowledgeNeighborhoodInput) => {
116
+ queryKey: readonly ["brain", "knowledge", "neighborhood", BrainKnowledgeNeighborhoodInput];
117
+ queryFn: () => Promise<BrainKnowledgeNeighborhoodOutput>;
118
+ };
119
+ export declare const brainKnowledgeRelationsQueryOptions: (sdk: GeneratedClient, input: BrainKnowledgeRelationsInput) => {
120
+ queryKey: readonly ["brain", "knowledge", "relations", BrainKnowledgeRelationsInput];
121
+ queryFn: () => Promise<BrainKnowledgeRelationsOutput>;
122
+ };
123
+ export declare const brainKnowledgeSearchQueryOptions: (sdk: GeneratedClient, input: BrainKnowledgeSearchInput) => {
124
+ queryKey: readonly ["brain", "knowledge", "search", BrainKnowledgeSearchInput];
125
+ queryFn: () => Promise<BrainKnowledgeSearchOutput>;
126
+ };
127
+ export declare const brainMemoryAddMutationOptions: (sdk: GeneratedClient) => {
128
+ mutationKey: string[];
129
+ mutationFn: (input: BrainMemoryAddInput) => Promise<import(".").BrainMemoryAddOutput>;
130
+ };
131
+ export declare const brainMemoryDeleteMutationOptions: (sdk: GeneratedClient) => {
132
+ mutationKey: string[];
133
+ mutationFn: (input: BrainMemoryDeleteInput) => Promise<import(".").BrainMemoryDeleteOutput>;
134
+ };
135
+ export declare const brainMemoryGetQueryOptions: (sdk: GeneratedClient, input: BrainMemoryGetInput) => {
136
+ queryKey: readonly ["brain", "memory", "get", BrainMemoryGetInput];
137
+ queryFn: () => Promise<BrainMemoryGetOutput>;
138
+ };
139
+ export declare const brainMemoryListQueryOptions: (sdk: GeneratedClient, input: BrainMemoryListInput) => {
140
+ queryKey: readonly ["brain", "memory", "list", BrainMemoryListInput];
141
+ queryFn: () => Promise<BrainMemoryListOutput>;
142
+ };
143
+ export declare const brainMemorySearchQueryOptions: (sdk: GeneratedClient, input: BrainMemorySearchInput) => {
144
+ queryKey: readonly ["brain", "memory", "search", BrainMemorySearchInput];
145
+ queryFn: () => Promise<BrainMemorySearchOutput>;
146
+ };
147
+ export declare const brainMemoryStatsQueryOptions: (sdk: GeneratedClient, input: BrainMemoryStatsInput) => {
148
+ queryKey: readonly ["brain", "memory", "stats", BrainMemoryStatsInput];
149
+ queryFn: () => Promise<BrainMemoryStatsOutput>;
150
+ };
151
+ export declare const brainMemoryUpdateMutationOptions: (sdk: GeneratedClient) => {
152
+ mutationKey: string[];
153
+ mutationFn: (input: BrainMemoryUpdateInput) => Promise<import(".").BrainMemoryUpdateOutput>;
154
+ };
155
+ export declare const brainProductSharedMemoryResetMutationOptions: (sdk: GeneratedClient) => {
156
+ mutationKey: string[];
157
+ mutationFn: (input: BrainProductSharedMemoryResetInput) => Promise<import(".").BrainProductSharedMemoryResetOutput>;
158
+ };
159
+ export declare const brainRestoreStatusQueryOptions: (sdk: GeneratedClient, input: BrainRestoreStatusInput) => {
160
+ queryKey: readonly ["brain", "restore", "status", BrainRestoreStatusInput];
161
+ queryFn: () => Promise<BrainRestoreStatusOutput>;
162
+ };
163
+ export declare const brainUsageReportQueryOptions: (sdk: GeneratedClient, input: BrainUsageReportInput) => {
164
+ queryKey: readonly ["brain", "usage", "report", BrainUsageReportInput];
165
+ queryFn: () => Promise<BrainUsageReportOutput>;
166
+ };