primitive-admin 1.1.0-alpha.9 → 1.1.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 (591) hide show
  1. package/README.md +523 -109
  2. package/assets/skill/skills/primitive-platform/SKILL.md +289 -0
  3. package/dist/bin/primitive.d.ts +2 -0
  4. package/dist/bin/primitive.js +372 -21
  5. package/dist/bin/primitive.js.map +1 -1
  6. package/dist/src/commands/admins.d.ts +2 -0
  7. package/dist/src/commands/admins.js +136 -30
  8. package/dist/src/commands/admins.js.map +1 -1
  9. package/dist/src/commands/analytics.d.ts +2 -0
  10. package/dist/src/commands/analytics.js +713 -55
  11. package/dist/src/commands/analytics.js.map +1 -1
  12. package/dist/src/commands/apps.d.ts +2 -0
  13. package/dist/src/commands/apps.js +65 -100
  14. package/dist/src/commands/apps.js.map +1 -1
  15. package/dist/src/commands/auth-sessions.d.ts +7 -0
  16. package/dist/src/commands/auth-sessions.js +144 -0
  17. package/dist/src/commands/auth-sessions.js.map +1 -0
  18. package/dist/src/commands/auth.d.ts +2 -0
  19. package/dist/src/commands/auth.js +238 -108
  20. package/dist/src/commands/auth.js.map +1 -1
  21. package/dist/src/commands/blob-buckets.d.ts +2 -0
  22. package/dist/src/commands/blob-buckets.js +331 -0
  23. package/dist/src/commands/blob-buckets.js.map +1 -0
  24. package/dist/src/commands/catalog.d.ts +2 -0
  25. package/dist/src/commands/catalog.js +63 -48
  26. package/dist/src/commands/catalog.js.map +1 -1
  27. package/dist/src/commands/collection-type-configs.d.ts +2 -0
  28. package/dist/src/commands/collection-type-configs.js +85 -0
  29. package/dist/src/commands/collection-type-configs.js.map +1 -0
  30. package/dist/src/commands/collections.d.ts +2 -0
  31. package/dist/src/commands/collections.js +1282 -0
  32. package/dist/src/commands/collections.js.map +1 -0
  33. package/dist/src/commands/comparisons.d.ts +2 -0
  34. package/dist/src/commands/comparisons.js +6 -6
  35. package/dist/src/commands/comparisons.js.map +1 -1
  36. package/dist/src/commands/config.d.ts +46 -0
  37. package/dist/src/commands/config.js +465 -0
  38. package/dist/src/commands/config.js.map +1 -0
  39. package/dist/src/commands/connections.d.ts +2 -0
  40. package/dist/src/commands/connections.js +99 -0
  41. package/dist/src/commands/connections.js.map +1 -0
  42. package/dist/src/commands/cron-triggers.d.ts +2 -0
  43. package/dist/src/commands/cron-triggers.js +266 -0
  44. package/dist/src/commands/cron-triggers.js.map +1 -0
  45. package/dist/src/commands/database-type-configs.d.ts +2 -0
  46. package/dist/src/commands/database-type-configs.js +164 -0
  47. package/dist/src/commands/database-type-configs.js.map +1 -0
  48. package/dist/src/commands/database-types.d.ts +2 -0
  49. package/dist/src/commands/database-types.js +471 -0
  50. package/dist/src/commands/database-types.js.map +1 -0
  51. package/dist/src/commands/databases.d.ts +65 -0
  52. package/dist/src/commands/databases.js +1887 -243
  53. package/dist/src/commands/databases.js.map +1 -1
  54. package/dist/src/commands/documents.d.ts +60 -0
  55. package/dist/src/commands/documents.js +2888 -22
  56. package/dist/src/commands/documents.js.map +1 -1
  57. package/dist/src/commands/email-templates.d.ts +2 -0
  58. package/dist/src/commands/email-templates.js +175 -0
  59. package/dist/src/commands/email-templates.js.map +1 -0
  60. package/dist/src/commands/env.d.ts +23 -0
  61. package/dist/src/commands/env.js +395 -0
  62. package/dist/src/commands/env.js.map +1 -0
  63. package/dist/src/commands/feature-flags.d.ts +14 -0
  64. package/dist/src/commands/feature-flags.js +117 -0
  65. package/dist/src/commands/feature-flags.js.map +1 -0
  66. package/dist/src/commands/functions.d.ts +20 -0
  67. package/dist/src/commands/functions.js +1630 -0
  68. package/dist/src/commands/functions.js.map +1 -0
  69. package/dist/src/commands/group-type-configs.d.ts +2 -0
  70. package/dist/src/commands/group-type-configs.js +87 -0
  71. package/dist/src/commands/group-type-configs.js.map +1 -0
  72. package/dist/src/commands/groups.d.ts +2 -0
  73. package/dist/src/commands/groups.js +65 -113
  74. package/dist/src/commands/groups.js.map +1 -1
  75. package/dist/src/commands/guides.d.ts +223 -0
  76. package/dist/src/commands/guides.js +627 -69
  77. package/dist/src/commands/guides.js.map +1 -1
  78. package/dist/src/commands/init.d.ts +37 -0
  79. package/dist/src/commands/init.js +1693 -208
  80. package/dist/src/commands/init.js.map +1 -1
  81. package/dist/src/commands/integrations.d.ts +2 -0
  82. package/dist/src/commands/integrations.js +428 -187
  83. package/dist/src/commands/integrations.js.map +1 -1
  84. package/dist/src/commands/llm.d.ts +2 -0
  85. package/dist/src/commands/llm.js +4 -2
  86. package/dist/src/commands/llm.js.map +1 -1
  87. package/dist/src/commands/locks.d.ts +8 -0
  88. package/dist/src/commands/locks.js +175 -0
  89. package/dist/src/commands/locks.js.map +1 -0
  90. package/dist/src/commands/metadata-category-configs.d.ts +12 -0
  91. package/dist/src/commands/metadata-category-configs.js +113 -0
  92. package/dist/src/commands/metadata-category-configs.js.map +1 -0
  93. package/dist/src/commands/metadata.d.ts +2 -0
  94. package/dist/src/commands/metadata.js +288 -0
  95. package/dist/src/commands/metadata.js.map +1 -0
  96. package/dist/src/commands/prompts.d.ts +2 -0
  97. package/dist/src/commands/prompts.js +322 -634
  98. package/dist/src/commands/prompts.js.map +1 -1
  99. package/dist/src/commands/rule-sets.d.ts +3 -0
  100. package/dist/src/commands/rule-sets.js +139 -148
  101. package/dist/src/commands/rule-sets.js.map +1 -1
  102. package/dist/src/commands/scripts.d.ts +30 -0
  103. package/dist/src/commands/scripts.js +688 -0
  104. package/dist/src/commands/scripts.js.map +1 -0
  105. package/dist/src/commands/secrets.d.ts +2 -0
  106. package/dist/src/commands/secrets.js +109 -0
  107. package/dist/src/commands/secrets.js.map +1 -0
  108. package/dist/src/commands/sessions.d.ts +2 -0
  109. package/dist/src/commands/sessions.js +76 -0
  110. package/dist/src/commands/sessions.js.map +1 -0
  111. package/dist/src/commands/skill.d.ts +2 -0
  112. package/dist/src/commands/skill.js +29 -0
  113. package/dist/src/commands/skill.js.map +1 -0
  114. package/dist/src/commands/sync-app-settings.d.ts +158 -0
  115. package/dist/src/commands/sync-app-settings.js +328 -0
  116. package/dist/src/commands/sync-app-settings.js.map +1 -0
  117. package/dist/src/commands/sync.d.ts +2670 -0
  118. package/dist/src/commands/sync.js +17144 -834
  119. package/dist/src/commands/sync.js.map +1 -1
  120. package/dist/src/commands/tokens.d.ts +2 -0
  121. package/dist/src/commands/tokens.js +132 -22
  122. package/dist/src/commands/tokens.js.map +1 -1
  123. package/dist/src/commands/users.d.ts +2 -0
  124. package/dist/src/commands/users.js +542 -24
  125. package/dist/src/commands/users.js.map +1 -1
  126. package/dist/src/commands/vars.d.ts +8 -0
  127. package/dist/src/commands/vars.js +97 -0
  128. package/dist/src/commands/vars.js.map +1 -0
  129. package/dist/src/commands/waitlist.d.ts +2 -0
  130. package/dist/src/commands/waitlist.js +12 -11
  131. package/dist/src/commands/waitlist.js.map +1 -1
  132. package/dist/src/commands/webhooks.d.ts +31 -0
  133. package/dist/src/commands/webhooks.js +633 -0
  134. package/dist/src/commands/webhooks.js.map +1 -0
  135. package/dist/src/commands/workflows.d.ts +88 -0
  136. package/dist/src/commands/workflows.js +1568 -742
  137. package/dist/src/commands/workflows.js.map +1 -1
  138. package/dist/src/lib/access-rule-display.d.ts +21 -0
  139. package/dist/src/lib/access-rule-display.js +34 -0
  140. package/dist/src/lib/access-rule-display.js.map +1 -0
  141. package/dist/src/lib/api-client.d.ts +2550 -0
  142. package/dist/src/lib/api-client.js +2503 -160
  143. package/dist/src/lib/api-client.js.map +1 -1
  144. package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
  145. package/dist/src/lib/app-settings-descriptor.js +583 -0
  146. package/dist/src/lib/app-settings-descriptor.js.map +1 -0
  147. package/dist/src/lib/auth-flow.d.ts +8 -0
  148. package/dist/src/lib/batch.d.ts +26 -0
  149. package/dist/src/lib/batch.js +32 -0
  150. package/dist/src/lib/batch.js.map +1 -0
  151. package/dist/src/lib/block-layout.d.ts +160 -0
  152. package/dist/src/lib/block-layout.js +451 -0
  153. package/dist/src/lib/block-layout.js.map +1 -0
  154. package/dist/src/lib/block-selector.d.ts +58 -0
  155. package/dist/src/lib/block-selector.js +92 -0
  156. package/dist/src/lib/block-selector.js.map +1 -0
  157. package/dist/src/lib/canonical-json.d.ts +12 -0
  158. package/dist/src/lib/canonical-json.js +35 -0
  159. package/dist/src/lib/canonical-json.js.map +1 -0
  160. package/dist/src/lib/channel.d.ts +30 -0
  161. package/dist/src/lib/channel.js +68 -0
  162. package/dist/src/lib/channel.js.map +1 -0
  163. package/dist/src/lib/cli-manifest.d.ts +68 -0
  164. package/dist/src/lib/cli-manifest.js +71 -0
  165. package/dist/src/lib/cli-manifest.js.map +1 -0
  166. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
  167. package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
  168. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
  169. package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
  170. package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
  171. package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
  172. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +38 -0
  173. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +46 -0
  174. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
  175. package/dist/src/lib/collection-export.d.ts +184 -0
  176. package/dist/src/lib/collection-export.js +252 -0
  177. package/dist/src/lib/collection-export.js.map +1 -0
  178. package/dist/src/lib/config-json-field.d.ts +28 -0
  179. package/dist/src/lib/config-json-field.js +56 -0
  180. package/dist/src/lib/config-json-field.js.map +1 -0
  181. package/dist/src/lib/config-object-descriptor.d.ts +127 -0
  182. package/dist/src/lib/config-object-descriptor.js +740 -0
  183. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  184. package/dist/src/lib/config-payload.d.ts +92 -0
  185. package/dist/src/lib/config-payload.js +161 -0
  186. package/dist/src/lib/config-payload.js.map +1 -0
  187. package/dist/src/lib/config-surface.d.ts +141 -0
  188. package/dist/src/lib/config-surface.js +368 -0
  189. package/dist/src/lib/config-surface.js.map +1 -0
  190. package/dist/src/lib/config-toml.d.ts +10 -0
  191. package/dist/src/lib/config-toml.js +42 -0
  192. package/dist/src/lib/config-toml.js.map +1 -0
  193. package/dist/src/lib/config.d.ts +71 -0
  194. package/dist/src/lib/config.js +71 -68
  195. package/dist/src/lib/config.js.map +1 -1
  196. package/dist/src/lib/confirm-prompt.d.ts +83 -0
  197. package/dist/src/lib/confirm-prompt.js +110 -0
  198. package/dist/src/lib/confirm-prompt.js.map +1 -0
  199. package/dist/src/lib/constants.d.ts +11 -0
  200. package/dist/src/lib/constants.js +12 -0
  201. package/dist/src/lib/constants.js.map +1 -0
  202. package/dist/src/lib/crash-handlers.d.ts +20 -0
  203. package/dist/src/lib/crash-handlers.js +49 -0
  204. package/dist/src/lib/crash-handlers.js.map +1 -0
  205. package/dist/src/lib/credentials-store.d.ts +104 -0
  206. package/dist/src/lib/credentials-store.js +336 -0
  207. package/dist/src/lib/credentials-store.js.map +1 -0
  208. package/dist/src/lib/csv.d.ts +47 -0
  209. package/dist/src/lib/csv.js +172 -0
  210. package/dist/src/lib/csv.js.map +1 -0
  211. package/dist/src/lib/data-input.d.ts +23 -0
  212. package/dist/src/lib/data-input.js +50 -0
  213. package/dist/src/lib/data-input.js.map +1 -0
  214. package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
  215. package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
  216. package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
  217. package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
  218. package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
  219. package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
  220. package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
  221. package/dist/src/lib/db-codegen/dbNaming.js +180 -0
  222. package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
  223. package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
  224. package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
  225. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
  226. package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
  227. package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
  228. package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
  229. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
  230. package/dist/src/lib/db-codegen/dbTypeIR.js +525 -0
  231. package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
  232. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
  233. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
  234. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
  235. package/dist/src/lib/deprecation.d.ts +22 -0
  236. package/dist/src/lib/deprecation.js +43 -0
  237. package/dist/src/lib/deprecation.js.map +1 -0
  238. package/dist/src/lib/document-export-permissions.d.ts +30 -0
  239. package/dist/src/lib/document-export-permissions.js +54 -0
  240. package/dist/src/lib/document-export-permissions.js.map +1 -0
  241. package/dist/src/lib/document-ingest-artifact.d.ts +120 -0
  242. package/dist/src/lib/document-ingest-artifact.js +505 -0
  243. package/dist/src/lib/document-ingest-artifact.js.map +1 -0
  244. package/dist/src/lib/document-ingest-input.d.ts +51 -0
  245. package/dist/src/lib/document-ingest-input.js +132 -0
  246. package/dist/src/lib/document-ingest-input.js.map +1 -0
  247. package/dist/src/lib/document-ingest-rows.d.ts +137 -0
  248. package/dist/src/lib/document-ingest-rows.js +181 -0
  249. package/dist/src/lib/document-ingest-rows.js.map +1 -0
  250. package/dist/src/lib/document-ingest.d.ts +101 -0
  251. package/dist/src/lib/document-ingest.js +384 -0
  252. package/dist/src/lib/document-ingest.js.map +1 -0
  253. package/dist/src/lib/env-resolver-core.d.ts +258 -0
  254. package/dist/src/lib/env-resolver-core.js +447 -0
  255. package/dist/src/lib/env-resolver-core.js.map +1 -0
  256. package/dist/src/lib/env-resolver.d.ts +99 -0
  257. package/dist/src/lib/env-resolver.js +153 -0
  258. package/dist/src/lib/env-resolver.js.map +1 -0
  259. package/dist/src/lib/fetch.d.ts +5 -0
  260. package/dist/src/lib/function-bundle.d.ts +147 -0
  261. package/dist/src/lib/function-bundle.js +341 -0
  262. package/dist/src/lib/function-bundle.js.map +1 -0
  263. package/dist/src/lib/function-collect.d.ts +123 -0
  264. package/dist/src/lib/function-collect.js +610 -0
  265. package/dist/src/lib/function-collect.js.map +1 -0
  266. package/dist/src/lib/function-db-types.d.ts +202 -0
  267. package/dist/src/lib/function-db-types.js +870 -0
  268. package/dist/src/lib/function-db-types.js.map +1 -0
  269. package/dist/src/lib/function-document-types.d.ts +144 -0
  270. package/dist/src/lib/function-document-types.js +370 -0
  271. package/dist/src/lib/function-document-types.js.map +1 -0
  272. package/dist/src/lib/function-grants-preflight.d.ts +64 -0
  273. package/dist/src/lib/function-grants-preflight.js +105 -0
  274. package/dist/src/lib/function-grants-preflight.js.map +1 -0
  275. package/dist/src/lib/function-log-lines.d.ts +76 -0
  276. package/dist/src/lib/function-log-lines.js +160 -0
  277. package/dist/src/lib/function-log-lines.js.map +1 -0
  278. package/dist/src/lib/function-log-row.d.ts +29 -0
  279. package/dist/src/lib/function-log-row.js +73 -0
  280. package/dist/src/lib/function-log-row.js.map +1 -0
  281. package/dist/src/lib/function-log-tail.d.ts +132 -0
  282. package/dist/src/lib/function-log-tail.js +262 -0
  283. package/dist/src/lib/function-log-tail.js.map +1 -0
  284. package/dist/src/lib/function-run.d.ts +289 -0
  285. package/dist/src/lib/function-run.js +389 -0
  286. package/dist/src/lib/function-run.js.map +1 -0
  287. package/dist/src/lib/function-schema-codegen.d.ts +143 -0
  288. package/dist/src/lib/function-schema-codegen.js +420 -0
  289. package/dist/src/lib/function-schema-codegen.js.map +1 -0
  290. package/dist/src/lib/function-sync.d.ts +459 -0
  291. package/dist/src/lib/function-sync.js +1258 -0
  292. package/dist/src/lib/function-sync.js.map +1 -0
  293. package/dist/src/lib/function-trigger-listing.d.ts +27 -0
  294. package/dist/src/lib/function-trigger-listing.js +70 -0
  295. package/dist/src/lib/function-trigger-listing.js.map +1 -0
  296. package/dist/src/lib/function-typecheck.d.ts +86 -0
  297. package/dist/src/lib/function-typecheck.js +370 -0
  298. package/dist/src/lib/function-typecheck.js.map +1 -0
  299. package/dist/src/lib/function-versions.d.ts +122 -0
  300. package/dist/src/lib/function-versions.js +182 -0
  301. package/dist/src/lib/function-versions.js.map +1 -0
  302. package/dist/src/lib/generated-allowlist.d.ts +28 -0
  303. package/dist/src/lib/generated-allowlist.js +281 -0
  304. package/dist/src/lib/generated-allowlist.js.map +1 -0
  305. package/dist/src/lib/generated-config-surfaces.d.ts +2936 -0
  306. package/dist/src/lib/generated-config-surfaces.js +10569 -0
  307. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  308. package/dist/src/lib/generated-sdk-types.d.ts +12 -0
  309. package/dist/src/lib/generated-sdk-types.js +13 -0
  310. package/dist/src/lib/generated-sdk-types.js.map +1 -0
  311. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  312. package/dist/src/lib/generated-template-lint.js +624 -0
  313. package/dist/src/lib/generated-template-lint.js.map +1 -0
  314. package/dist/src/lib/init-adopt.d.ts +16 -0
  315. package/dist/src/lib/init-adopt.js +34 -0
  316. package/dist/src/lib/init-adopt.js.map +1 -0
  317. package/dist/src/lib/init-assets.d.ts +39 -0
  318. package/dist/src/lib/init-assets.js +97 -0
  319. package/dist/src/lib/init-assets.js.map +1 -0
  320. package/dist/src/lib/init-client-platforms.d.ts +14 -0
  321. package/dist/src/lib/init-client-platforms.js +71 -0
  322. package/dist/src/lib/init-client-platforms.js.map +1 -0
  323. package/dist/src/lib/init-config.d.ts +98 -0
  324. package/dist/src/lib/init-config.js +186 -0
  325. package/dist/src/lib/init-config.js.map +1 -0
  326. package/dist/src/lib/init-email-redirect-uris.d.ts +37 -0
  327. package/dist/src/lib/init-email-redirect-uris.js +46 -0
  328. package/dist/src/lib/init-email-redirect-uris.js.map +1 -0
  329. package/dist/src/lib/init-ios-links.d.ts +91 -0
  330. package/dist/src/lib/init-ios-links.js +219 -0
  331. package/dist/src/lib/init-ios-links.js.map +1 -0
  332. package/dist/src/lib/init-plan.d.ts +80 -0
  333. package/dist/src/lib/init-plan.js +95 -0
  334. package/dist/src/lib/init-plan.js.map +1 -0
  335. package/dist/src/lib/init-production-env.d.ts +48 -0
  336. package/dist/src/lib/init-production-env.js +59 -0
  337. package/dist/src/lib/init-production-env.js.map +1 -0
  338. package/dist/src/lib/init-schema.d.ts +74 -0
  339. package/dist/src/lib/init-schema.js +358 -0
  340. package/dist/src/lib/init-schema.js.map +1 -0
  341. package/dist/src/lib/init-xcode.d.ts +34 -0
  342. package/dist/src/lib/init-xcode.js +138 -0
  343. package/dist/src/lib/init-xcode.js.map +1 -0
  344. package/dist/src/lib/integration-request-config.d.ts +30 -0
  345. package/dist/src/lib/integration-request-config.js +145 -0
  346. package/dist/src/lib/integration-request-config.js.map +1 -0
  347. package/dist/src/lib/integration-selector.d.ts +42 -0
  348. package/dist/src/lib/integration-selector.js +46 -0
  349. package/dist/src/lib/integration-selector.js.map +1 -0
  350. package/dist/src/lib/ios-app-id.d.ts +34 -0
  351. package/dist/src/lib/ios-app-id.js +69 -0
  352. package/dist/src/lib/ios-app-id.js.map +1 -0
  353. package/dist/src/lib/list-options.d.ts +68 -0
  354. package/dist/src/lib/list-options.js +89 -0
  355. package/dist/src/lib/list-options.js.map +1 -0
  356. package/dist/src/lib/local-state.d.ts +55 -0
  357. package/dist/src/lib/local-state.js +167 -0
  358. package/dist/src/lib/local-state.js.map +1 -0
  359. package/dist/src/lib/local-test-cases.d.ts +63 -0
  360. package/dist/src/lib/local-test-cases.js +136 -0
  361. package/dist/src/lib/local-test-cases.js.map +1 -0
  362. package/dist/src/lib/log-inspection.d.ts +715 -0
  363. package/dist/src/lib/log-inspection.js +816 -0
  364. package/dist/src/lib/log-inspection.js.map +1 -0
  365. package/dist/src/lib/logout-admin-session.d.ts +33 -0
  366. package/dist/src/lib/logout-admin-session.js +70 -0
  367. package/dist/src/lib/logout-admin-session.js.map +1 -0
  368. package/dist/src/lib/migration-nag.d.ts +49 -0
  369. package/dist/src/lib/migration-nag.js +163 -0
  370. package/dist/src/lib/migration-nag.js.map +1 -0
  371. package/dist/src/lib/object-status-filter.d.ts +22 -0
  372. package/dist/src/lib/object-status-filter.js +45 -0
  373. package/dist/src/lib/object-status-filter.js.map +1 -0
  374. package/dist/src/lib/output.d.ts +124 -0
  375. package/dist/src/lib/output.js +219 -8
  376. package/dist/src/lib/output.js.map +1 -1
  377. package/dist/src/lib/package-manager.d.ts +140 -0
  378. package/dist/src/lib/package-manager.js +305 -0
  379. package/dist/src/lib/package-manager.js.map +1 -0
  380. package/dist/src/lib/paginate.d.ts +98 -0
  381. package/dist/src/lib/paginate.js +112 -0
  382. package/dist/src/lib/paginate.js.map +1 -0
  383. package/dist/src/lib/platform-owned.d.ts +63 -0
  384. package/dist/src/lib/platform-owned.js +85 -0
  385. package/dist/src/lib/platform-owned.js.map +1 -0
  386. package/dist/src/lib/project-config.d.ts +122 -0
  387. package/dist/src/lib/project-config.js +244 -0
  388. package/dist/src/lib/project-config.js.map +1 -0
  389. package/dist/src/lib/prompt-cost-format.d.ts +11 -0
  390. package/dist/src/lib/prompt-cost-format.js +41 -0
  391. package/dist/src/lib/prompt-cost-format.js.map +1 -0
  392. package/dist/src/lib/prompt-schema-codegen.d.ts +147 -0
  393. package/dist/src/lib/prompt-schema-codegen.js +462 -0
  394. package/dist/src/lib/prompt-schema-codegen.js.map +1 -0
  395. package/dist/src/lib/query-operators.d.ts +43 -0
  396. package/dist/src/lib/query-operators.js +80 -0
  397. package/dist/src/lib/query-operators.js.map +1 -0
  398. package/dist/src/lib/record-filter.d.ts +18 -0
  399. package/dist/src/lib/record-filter.js +55 -0
  400. package/dist/src/lib/record-filter.js.map +1 -0
  401. package/dist/src/lib/refresh-admin-credentials.d.ts +73 -0
  402. package/dist/src/lib/refresh-admin-credentials.js +123 -0
  403. package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
  404. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  405. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  406. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  407. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  408. package/dist/src/lib/resolve-init-server.js +77 -0
  409. package/dist/src/lib/resolve-init-server.js.map +1 -0
  410. package/dist/src/lib/resolve-owner.d.ts +19 -0
  411. package/dist/src/lib/resolve-owner.js +20 -0
  412. package/dist/src/lib/resolve-owner.js.map +1 -0
  413. package/dist/src/lib/resolve-platform.d.ts +74 -0
  414. package/dist/src/lib/resolve-platform.js +105 -0
  415. package/dist/src/lib/resolve-platform.js.map +1 -0
  416. package/dist/src/lib/run-status.d.ts +19 -0
  417. package/dist/src/lib/run-status.generated.d.ts +39 -0
  418. package/dist/src/lib/run-status.generated.js +66 -0
  419. package/dist/src/lib/run-status.generated.js.map +1 -0
  420. package/dist/src/lib/run-status.js +19 -0
  421. package/dist/src/lib/run-status.js.map +1 -0
  422. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  423. package/dist/src/lib/server-text-normalization.js +90 -0
  424. package/dist/src/lib/server-text-normalization.js.map +1 -0
  425. package/dist/src/lib/server-url.d.ts +22 -0
  426. package/dist/src/lib/server-url.js +33 -0
  427. package/dist/src/lib/server-url.js.map +1 -0
  428. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  429. package/dist/src/lib/signing-secret-status.js +116 -0
  430. package/dist/src/lib/signing-secret-status.js.map +1 -0
  431. package/dist/src/lib/skill-installer.d.ts +71 -0
  432. package/dist/src/lib/skill-installer.js +441 -0
  433. package/dist/src/lib/skill-installer.js.map +1 -0
  434. package/dist/src/lib/snapshot-audit-source.d.ts +45 -0
  435. package/dist/src/lib/snapshot-audit-source.js +58 -0
  436. package/dist/src/lib/snapshot-audit-source.js.map +1 -0
  437. package/dist/src/lib/snapshot-audit-store.d.ts +52 -0
  438. package/dist/src/lib/snapshot-audit-store.js +196 -0
  439. package/dist/src/lib/snapshot-audit-store.js.map +1 -0
  440. package/dist/src/lib/snapshot-audit.d.ts +207 -0
  441. package/dist/src/lib/snapshot-audit.js +431 -0
  442. package/dist/src/lib/snapshot-audit.js.map +1 -0
  443. package/dist/src/lib/snapshot-build-rows.d.ts +60 -0
  444. package/dist/src/lib/snapshot-build-rows.js +87 -0
  445. package/dist/src/lib/snapshot-build-rows.js.map +1 -0
  446. package/dist/src/lib/snapshot-build.d.ts +50 -0
  447. package/dist/src/lib/snapshot-build.js +111 -0
  448. package/dist/src/lib/snapshot-build.js.map +1 -0
  449. package/dist/src/lib/snapshot-manifest-layout.d.ts +61 -0
  450. package/dist/src/lib/snapshot-manifest-layout.js +70 -0
  451. package/dist/src/lib/snapshot-manifest-layout.js.map +1 -0
  452. package/dist/src/lib/snapshots.d.ts +98 -0
  453. package/dist/src/lib/snapshots.js +294 -0
  454. package/dist/src/lib/snapshots.js.map +1 -0
  455. package/dist/src/lib/step-run-table.d.ts +43 -0
  456. package/dist/src/lib/step-run-table.js +129 -0
  457. package/dist/src/lib/step-run-table.js.map +1 -0
  458. package/dist/src/lib/storage-pending-retry.d.ts +26 -0
  459. package/dist/src/lib/storage-pending-retry.js +42 -0
  460. package/dist/src/lib/storage-pending-retry.js.map +1 -0
  461. package/dist/src/lib/swift-codegen/agentGenerator.d.ts +42 -0
  462. package/dist/src/lib/swift-codegen/agentGenerator.js +118 -0
  463. package/dist/src/lib/swift-codegen/agentGenerator.js.map +1 -0
  464. package/dist/src/lib/swift-codegen/banners.d.ts +24 -0
  465. package/dist/src/lib/swift-codegen/banners.js +25 -0
  466. package/dist/src/lib/swift-codegen/banners.js.map +1 -0
  467. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
  468. package/dist/src/lib/swift-codegen/dbGenerator.js +926 -0
  469. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
  470. package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
  471. package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
  472. package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
  473. package/dist/src/lib/swift-codegen/functionGenerator.d.ts +139 -0
  474. package/dist/src/lib/swift-codegen/functionGenerator.js +462 -0
  475. package/dist/src/lib/swift-codegen/functionGenerator.js.map +1 -0
  476. package/dist/src/lib/swift-codegen/generator.d.ts +100 -0
  477. package/dist/src/lib/swift-codegen/generator.js +457 -0
  478. package/dist/src/lib/swift-codegen/generator.js.map +1 -0
  479. package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +87 -0
  480. package/dist/src/lib/swift-codegen/schemaToSwift.js +661 -0
  481. package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
  482. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
  483. package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
  484. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
  485. package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
  486. package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
  487. package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
  488. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  489. package/dist/src/lib/sync-dir-selector.js +30 -0
  490. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  491. package/dist/src/lib/sync-paths.d.ts +128 -0
  492. package/dist/src/lib/sync-paths.js +195 -0
  493. package/dist/src/lib/sync-paths.js.map +1 -0
  494. package/dist/src/lib/sync-resource-types.d.ts +563 -0
  495. package/dist/src/lib/sync-resource-types.js +1073 -0
  496. package/dist/src/lib/sync-resource-types.js.map +1 -0
  497. package/dist/src/lib/sync-selectors.d.ts +138 -0
  498. package/dist/src/lib/sync-selectors.js +289 -0
  499. package/dist/src/lib/sync-selectors.js.map +1 -0
  500. package/dist/src/lib/template.d.ts +170 -0
  501. package/dist/src/lib/template.js +484 -68
  502. package/dist/src/lib/template.js.map +1 -1
  503. package/dist/src/lib/test-case-file-names.d.ts +40 -0
  504. package/dist/src/lib/test-case-file-names.js +91 -0
  505. package/dist/src/lib/test-case-file-names.js.map +1 -0
  506. package/dist/src/lib/test-case-keys.d.ts +29 -0
  507. package/dist/src/lib/test-case-keys.js +55 -0
  508. package/dist/src/lib/test-case-keys.js.map +1 -0
  509. package/dist/src/lib/test-case-variables.d.ts +29 -0
  510. package/dist/src/lib/test-case-variables.js +71 -0
  511. package/dist/src/lib/test-case-variables.js.map +1 -0
  512. package/dist/src/lib/token-inject.d.ts +56 -0
  513. package/dist/src/lib/token-inject.js +204 -0
  514. package/dist/src/lib/token-inject.js.map +1 -0
  515. package/dist/src/lib/toml-database-config.d.ts +123 -0
  516. package/dist/src/lib/toml-database-config.js +544 -0
  517. package/dist/src/lib/toml-database-config.js.map +1 -0
  518. package/dist/src/lib/toml-metadata-config.d.ts +151 -0
  519. package/dist/src/lib/toml-metadata-config.js +476 -0
  520. package/dist/src/lib/toml-metadata-config.js.map +1 -0
  521. package/dist/src/lib/toml-native-form.d.ts +46 -0
  522. package/dist/src/lib/toml-native-form.js +78 -0
  523. package/dist/src/lib/toml-native-form.js.map +1 -0
  524. package/dist/src/lib/toml-params-validator.d.ts +129 -0
  525. package/dist/src/lib/toml-params-validator.js +298 -0
  526. package/dist/src/lib/toml-params-validator.js.map +1 -0
  527. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  528. package/dist/src/lib/toml-scalar-edit.js +283 -0
  529. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  530. package/dist/src/lib/user-selector.d.ts +24 -0
  531. package/dist/src/lib/user-selector.js +33 -0
  532. package/dist/src/lib/user-selector.js.map +1 -0
  533. package/dist/src/lib/version-check.d.ts +35 -0
  534. package/dist/src/lib/version-check.js +241 -0
  535. package/dist/src/lib/version-check.js.map +1 -0
  536. package/dist/src/lib/watch.d.ts +121 -0
  537. package/dist/src/lib/watch.js +169 -0
  538. package/dist/src/lib/watch.js.map +1 -0
  539. package/dist/src/lib/web-url.d.ts +40 -0
  540. package/dist/src/lib/web-url.js +76 -0
  541. package/dist/src/lib/web-url.js.map +1 -0
  542. package/dist/src/lib/webhook-deliver.d.ts +209 -0
  543. package/dist/src/lib/webhook-deliver.js +519 -0
  544. package/dist/src/lib/webhook-deliver.js.map +1 -0
  545. package/dist/src/lib/workflow-apply.d.ts +110 -0
  546. package/dist/src/lib/workflow-apply.js +164 -0
  547. package/dist/src/lib/workflow-apply.js.map +1 -0
  548. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
  549. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
  550. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
  551. package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
  552. package/dist/src/lib/workflow-codegen/generator.js +361 -0
  553. package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
  554. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
  555. package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
  556. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
  557. package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
  558. package/dist/src/lib/workflow-codegen/naming.js +81 -0
  559. package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
  560. package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
  561. package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
  562. package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
  563. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  564. package/dist/src/lib/workflow-config-apply.js +137 -0
  565. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  566. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  567. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  568. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  569. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  570. package/dist/src/lib/workflow-defaults.js +41 -0
  571. package/dist/src/lib/workflow-defaults.js.map +1 -0
  572. package/dist/src/lib/workflow-fragments.d.ts +64 -0
  573. package/dist/src/lib/workflow-fragments.js +342 -0
  574. package/dist/src/lib/workflow-fragments.js.map +1 -0
  575. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  576. package/dist/src/lib/workflow-include-preserve.js +286 -0
  577. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  578. package/dist/src/lib/workflow-payload.d.ts +98 -0
  579. package/dist/src/lib/workflow-payload.js +178 -0
  580. package/dist/src/lib/workflow-payload.js.map +1 -0
  581. package/dist/src/lib/workflow-toml-validator.d.ts +211 -0
  582. package/dist/src/lib/workflow-toml-validator.js +770 -0
  583. package/dist/src/lib/workflow-toml-validator.js.map +1 -0
  584. package/dist/src/lib/workflow-usage.d.ts +196 -0
  585. package/dist/src/lib/workflow-usage.js +310 -0
  586. package/dist/src/lib/workflow-usage.js.map +1 -0
  587. package/dist/src/types/index.d.ts +591 -0
  588. package/dist/src/validators.d.ts +65 -0
  589. package/dist/src/validators.js +64 -0
  590. package/dist/src/validators.js.map +1 -0
  591. package/package.json +34 -9
@@ -0,0 +1,196 @@
1
+ /**
2
+ * The audit's local reconstruction, over js-bao's own Node SQLite store
3
+ * (#3433, criterion 10).
4
+ *
5
+ * This is the half of the audit that must NOT be a reimplementation: the base
6
+ * is materialised by the checked-in loader and the overlays are folded by the
7
+ * client's own fold, so what the audit compares with the table is what a
8
+ * browser would have computed from the same artifacts. A hand-rolled fold here
9
+ * would make the audit agree with itself rather than with a client.
10
+ *
11
+ * Everything lives in one throwaway SQLite file, removed when the audit ends —
12
+ * including the `audit_seen` table, which is what keeps memory to one page
13
+ * plus the store: the ids the table has already shown are marked rather than
14
+ * held.
15
+ */
16
+ import { createRequire } from "node:module";
17
+ import { mkdtempSync, rmSync } from "node:fs";
18
+ import { tmpdir } from "node:os";
19
+ import { join } from "node:path";
20
+ const require_ = createRequire(import.meta.url);
21
+ /** `yjs` as the CLI resolves it. */
22
+ async function loadYjs() {
23
+ const yModule = await import(require_.resolve("yjs"));
24
+ return yModule.default ?? yModule;
25
+ }
26
+ /** `js-bao` and `yjs` as the CLI resolves them, loaded only when audited. */
27
+ async function loadRuntime() {
28
+ const baoModule = await import(require_.resolve("js-bao"));
29
+ return {
30
+ bao: baoModule.default ?? baoModule,
31
+ Y: await loadYjs(),
32
+ };
33
+ }
34
+ function hex(bytes) {
35
+ let out = "";
36
+ for (const byte of bytes)
37
+ out += byte.toString(16).padStart(2, "0");
38
+ return out;
39
+ }
40
+ /**
41
+ * The fence's reader: how far one overlay update has got, deletions included.
42
+ *
43
+ * A state vector alone is NOT that. It carries one clock per client and a Yjs
44
+ * deletion creates no struct, so removing a key leaves it exactly where it
45
+ * was — and a legacy nested-map record deleted between the audit's capture and
46
+ * its comparison would then pass the fence and be reported as a record only
47
+ * the recomputed chain holds, which is corruption's own signature (finding
48
+ * 3433-C05; the deletion shape is pinned by `large-document-snapshot-verify`'s
49
+ * E4 case). So the fingerprint is the state vector AND a digest of the
50
+ * update's delete set: every client's deleted ranges, in a fixed order.
51
+ *
52
+ * Yjs is loaded once and handed back as a synchronous function, so the audit's
53
+ * fence stays a plain comparison rather than an awaited one — and so the
54
+ * library itself never has to import Yjs.
55
+ */
56
+ export async function createChainFingerprintReader() {
57
+ const Y = await loadYjs();
58
+ return (update) => {
59
+ const vector = hex(Y.encodeStateVectorFromUpdate(update));
60
+ const clients = Y.decodeUpdate(update).ds.clients;
61
+ const deletes = Array.from(clients.entries())
62
+ .map(([client, ranges]) => {
63
+ const sorted = ranges
64
+ .map((range) => `${range.clock}+${range.len}`)
65
+ .sort();
66
+ return `${client}:${sorted.join(",")}`;
67
+ })
68
+ .sort()
69
+ .join(";");
70
+ return `${vector}/${deletes}`;
71
+ };
72
+ }
73
+ /**
74
+ * The stringset fields a base manifest records, per model.
75
+ *
76
+ * A Map rather than an object because a model's name is data: an undeclared
77
+ * model is whatever `_type` the records route was handed, so `constructor` and
78
+ * `toString` are names this can be asked for, and on a plain object either
79
+ * answers a function off the prototype rather than nothing at all (3433-C11).
80
+ * The manifest is the only record of what a model declares for a model no
81
+ * later overlay touched, which is exactly where these have to come from.
82
+ */
83
+ export function stringSetFieldsFromManifest(manifest) {
84
+ const out = new Map();
85
+ const schema = manifest.schema ?? {};
86
+ for (const [model, declared] of Object.entries(schema)) {
87
+ const fields = declared?.stringSetFields;
88
+ out.set(model, new Set(Array.isArray(fields) ? fields.map(String) : []));
89
+ }
90
+ return out;
91
+ }
92
+ const SEEN_DDL = `CREATE TABLE IF NOT EXISTS audit_seen (
93
+ model TEXT NOT NULL, id TEXT NOT NULL, PRIMARY KEY (model, id))`;
94
+ /**
95
+ * Build a local store for one audit attempt.
96
+ *
97
+ * A fresh database per attempt by design: an attempt the fence discards must
98
+ * leave nothing behind for the next one to read.
99
+ */
100
+ export async function createAuditLocalStore(documentId) {
101
+ const { bao, Y } = await loadRuntime();
102
+ const directory = mkdtempSync(join(tmpdir(), "primitive-audit-"));
103
+ const doc = new Y.Doc();
104
+ const init = await bao.initJsBao({
105
+ databaseConfig: {
106
+ type: "node-sqlite",
107
+ options: { filePath: join(directory, "audit.db") },
108
+ },
109
+ models: [],
110
+ });
111
+ await init.connectDocument(documentId, doc, "read-write", {
112
+ documentFormat: 2,
113
+ });
114
+ const sql = init.dbEngine.createFormat2Sql();
115
+ const { records } = bao.format2TableNames(documentId);
116
+ sql.exec(SEEN_DDL);
117
+ const rows = (query, ...bindings) => Array.from(sql.exec(query, ...bindings));
118
+ let stringSets = new Map();
119
+ const parse = (data) => {
120
+ try {
121
+ return JSON.parse(String(data ?? "{}"));
122
+ }
123
+ catch {
124
+ return {};
125
+ }
126
+ };
127
+ return {
128
+ async loadSnapshot(manifest, fetchChunk) {
129
+ stringSets = stringSetFieldsFromManifest(manifest);
130
+ await init.format2LoadSnapshot(documentId, manifest, (chunk) => fetchChunk(chunk), {});
131
+ },
132
+ async applyOverlay(update) {
133
+ // Each epoch's overlay is its own document, so each is folded from its
134
+ // own `Y.Doc` — and through the CLIENT's fold, which is the whole point:
135
+ // a divergence between what the room projects and what a client computes
136
+ // is invisible to every check that runs on one side of it.
137
+ const overlay = new Y.Doc();
138
+ Y.applyUpdate(overlay, update);
139
+ const store = bao.BaseModel.getFormat2Store(documentId);
140
+ if (!store) {
141
+ throw new Error(`the local record store for ${documentId} is not available, so the ` +
142
+ `chain cannot be recomputed`);
143
+ }
144
+ bao.foldFormat2Overlay(overlay, store);
145
+ // The in-process host folds inside the call above; this yields once so
146
+ // an async host's queued batch has settled before anything reads.
147
+ await new Promise((resolve) => setTimeout(resolve, 0));
148
+ },
149
+ async models() {
150
+ // The scan the SERVER may not do (criterion 5) is fine here: this table
151
+ // is the reconstruction the audit is already holding, on the operator's
152
+ // own machine, not a 2GB Durable Object's storage under an alarm budget.
153
+ return rows(`SELECT DISTINCT _type FROM ${records} ORDER BY _type`).map((row) => String(row._type));
154
+ },
155
+ async take(model, ids) {
156
+ const out = new Map();
157
+ if (ids.length === 0)
158
+ return out;
159
+ const placeholders = ids.map(() => "?").join(",");
160
+ for (const row of rows(`SELECT _id, _data FROM ${records} WHERE _type = ? AND _id IN (${placeholders})`, model, ...ids)) {
161
+ out.set(String(row._id), parse(row._data));
162
+ }
163
+ for (const id of ids) {
164
+ sql.exec(`INSERT OR IGNORE INTO audit_seen (model, id) VALUES (?, ?)`, model, id);
165
+ }
166
+ return out;
167
+ },
168
+ async remaining(model, after, limit) {
169
+ const bounded = after === null
170
+ ? rows(`SELECT _id, _data FROM ${records} r
171
+ WHERE r._type = ?
172
+ AND NOT EXISTS (SELECT 1 FROM audit_seen s WHERE s.model = r._type AND s.id = r._id)
173
+ ORDER BY r._id LIMIT ?`, model, limit)
174
+ : rows(`SELECT _id, _data FROM ${records} r
175
+ WHERE r._type = ? AND r._id > ?
176
+ AND NOT EXISTS (SELECT 1 FROM audit_seen s WHERE s.model = r._type AND s.id = r._id)
177
+ ORDER BY r._id LIMIT ?`, model, after, limit);
178
+ return bounded.map((row) => ({
179
+ id: String(row._id),
180
+ data: parse(row._data),
181
+ }));
182
+ },
183
+ stringSetFields(model) {
184
+ return stringSets.get(model) ?? new Set();
185
+ },
186
+ async close() {
187
+ try {
188
+ await bao.resetJsBao();
189
+ }
190
+ finally {
191
+ rmSync(directory, { recursive: true, force: true });
192
+ }
193
+ },
194
+ };
195
+ }
196
+ //# sourceMappingURL=snapshot-audit-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-audit-store.js","sourceRoot":"","sources":["../../../src/lib/snapshot-audit-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * `snapshot ⊕ overlays == table`, recomputed and compared (#3433, criterion 10).
3
+ *
4
+ * Per-build verification checks a base against the table it was built FROM:
5
+ * the chunks are read back, their digests match, their id sequences cover the
6
+ * ranges. What it cannot check is the other half of the contract — that
7
+ * folding the overlays onto that base, the way a CLIENT folds them, arrives at
8
+ * the document the server holds. A fold that means something slightly
9
+ * different on the two ends puts records into a client's authoritative table
10
+ * that the server never wrote, silently, because on a format-2 document there
11
+ * is no whole-document comparison left downstream to catch it.
12
+ *
13
+ * So this runs OUTSIDE the Durable Object, on the CLI:
14
+ *
15
+ * 0. Read the document's schema, which is the same permission the table pages
16
+ * need. The chain export takes the app-admin arm and the pages take the
17
+ * console arm or a read grant on the document, so a caller holding only the
18
+ * first is refused here rather than after downloading the whole chain
19
+ * (3433-C08).
20
+ * 1. Export the chain — the newest complete base, every overlay sealed after
21
+ * it, and the open epoch's overlay inline.
22
+ * 2. Load the base through the checked-in loader into a local record store,
23
+ * then fold each overlay in order with the client's own fold.
24
+ * 3. Page the authoritative table through the records API and compare it,
25
+ * record by record, with the recomputed view.
26
+ *
27
+ * Running it inside the room would need a scratch copy of up to 2 GB of rows
28
+ * and a new multi-tick state machine; running it with the SERVER's fold would
29
+ * make it agree with the room by construction.
30
+ *
31
+ * ## The fence, and why there is one
32
+ *
33
+ * The chain export captures the open overlay once (`Y.encodeStateAsUpdate` at
34
+ * one moment); each records page is an independent query of the live table
35
+ * later (3433-R03). An ordinary write in between would read as corruption. The
36
+ * export is therefore its own fence: after the last page the chain is exported
37
+ * AGAIN and the open epoch number and a fingerprint of the inline overlay are
38
+ * compared with the capture. The fingerprint is the overlay's state vector AND
39
+ * its delete set, because a Yjs deletion creates no struct and therefore never
40
+ * moves a state vector (3433-C05) — and a record deleted under the comparison
41
+ * is precisely what a divergence looks like. The epoch moves on every
42
+ * rotation, so it is checked on its own. Either moving means the document
43
+ * changed under the comparison: that attempt yields NO VERDICT and is retried
44
+ * from a fresh capture; a document that moves on every attempt is reported as
45
+ * `none` rather than as a divergence.
46
+ */
47
+ import { type ManifestChunkLike, type ManifestLike } from "./snapshot-manifest-layout.js";
48
+ /** One artifact of the chain, as the export names it. */
49
+ export interface AuditChainDownload {
50
+ path: string;
51
+ }
52
+ /** What `GET .../export/chain` answers for a large document. */
53
+ export interface AuditChainDescriptor {
54
+ documentFormat?: number;
55
+ documentId?: string;
56
+ epoch: number;
57
+ base: {
58
+ epoch: number;
59
+ buildId: string;
60
+ rows?: number;
61
+ download: AuditChainDownload;
62
+ } | null;
63
+ overlays: Array<{
64
+ epoch: number;
65
+ download: AuditChainDownload;
66
+ }>;
67
+ current: {
68
+ epoch: number;
69
+ update: string;
70
+ };
71
+ }
72
+ /** One page of the authoritative table, as the records route answers it. */
73
+ export interface AuditTablePage {
74
+ items: Array<Record<string, unknown>>;
75
+ nextCursor?: string | null;
76
+ }
77
+ /**
78
+ * Everything the audit reads from the SERVER.
79
+ *
80
+ * Injected rather than reached for, so the whole decision — the fence, the
81
+ * model union, the comparison — is gradeable against a source a test can move
82
+ * between calls, which is the one thing a live run cannot stage reliably.
83
+ */
84
+ export interface AuditSource {
85
+ /** Export the chain. Throws the server's refusal verbatim. */
86
+ chain(): Promise<AuditChainDescriptor>;
87
+ /** One artifact, by its path within the chain's grant. */
88
+ download(path: string): Promise<Uint8Array>;
89
+ /**
90
+ * Every model the authoritative table holds a row of (#3433, behavior 30).
91
+ *
92
+ * Read before the chain is exported: it comes off the schema response, which
93
+ * takes the same permission the table pages do, so it is also the audit's
94
+ * check that the caller can finish (3433-C08).
95
+ */
96
+ tableModels(): Promise<string[]>;
97
+ /** One page of a model's records, in the route's own order. */
98
+ readPage(model: string, cursor?: string): Promise<AuditTablePage>;
99
+ /**
100
+ * The stringset fields the DOCUMENT declares now, per model.
101
+ *
102
+ * The base manifest carries the declarations as they stood when it was
103
+ * built, which is the only record for a model no later overlay touched — but
104
+ * a model or a field declared AFTER the base is not in it, and a stringset
105
+ * compared as an ordered array is a divergence the moment the two sides
106
+ * added the same members in a different order (finding 3433-C06). The two
107
+ * sources are unioned; what a field MEANS is the schema's job either way.
108
+ */
109
+ stringSetFields?(): Promise<Record<string, string[]>>;
110
+ }
111
+ /**
112
+ * The local reconstruction the audit compares against.
113
+ *
114
+ * A port rather than a concrete store: the verb builds it over js-bao's Node
115
+ * SQLite engine, and the hermetic tests build it over a map, so the comparison
116
+ * is graded without a database and the database is proven separately.
117
+ */
118
+ export interface AuditLocalStore {
119
+ /** Materialise the base. `fetchChunk` is handed each manifest entry. */
120
+ loadSnapshot(manifest: ManifestLike, fetchChunk: (chunk: ManifestChunkLike) => Promise<Uint8Array>): Promise<void>;
121
+ /** Fold one overlay update — sealed or open — in chain order. */
122
+ applyOverlay(update: Uint8Array): Promise<void>;
123
+ /** Every model the reconstruction holds a row of. */
124
+ models(): Promise<string[]>;
125
+ /**
126
+ * The recomputed rows for these ids, and mark them compared.
127
+ *
128
+ * Reading and marking together is what keeps the audit's memory to one page
129
+ * plus the store: the ids the server has already shown are never held.
130
+ */
131
+ take(model: string, ids: readonly string[]): Promise<Map<string, Record<string, unknown>>>;
132
+ /** Rows of a model no page asked for, in id order, after `after`. */
133
+ remaining(model: string, after: string | null, limit: number): Promise<Array<{
134
+ id: string;
135
+ data: Record<string, unknown>;
136
+ }>>;
137
+ /** Stringset fields per model, as the base manifest's schema declares them. */
138
+ stringSetFields(model: string): ReadonlySet<string>;
139
+ close(): Promise<void>;
140
+ }
141
+ /** What one model's comparison found. */
142
+ export interface AuditModelReport {
143
+ model: string;
144
+ /** Records present on both sides and compared. */
145
+ compared: number;
146
+ /** Ids the recomputed view holds and the table does not. */
147
+ onlyRecomputed: string[];
148
+ /** Ids the table holds and the recomputed view does not. */
149
+ onlyTable: string[];
150
+ /** Records both hold, with the fields that differ. */
151
+ differing: Array<{
152
+ id: string;
153
+ fields: string[];
154
+ }>;
155
+ /** A list above was capped at `maxDivergences`. */
156
+ truncated: boolean;
157
+ }
158
+ /** What the audit decided, and what it looked at. */
159
+ export interface AuditReport {
160
+ verdict: "match" | "divergence" | "none";
161
+ /** Attempts made, including the ones the fence discarded. */
162
+ attempts: number;
163
+ /** Why there is no verdict. Absent on `match` and `divergence`. */
164
+ reason?: string;
165
+ buildId: string | null;
166
+ epoch: number | null;
167
+ models: AuditModelReport[];
168
+ }
169
+ export interface AuditOptions {
170
+ /** A fresh store per attempt: an attempt the fence discards is thrown away. */
171
+ store: () => Promise<AuditLocalStore>;
172
+ /** Ids listed per model per category before the report says `truncated`. */
173
+ maxDivergences?: number;
174
+ /** Attempts before the audit gives up on a moving document. */
175
+ retries?: number;
176
+ /** Records per page asked of the table. */
177
+ pageSize?: number;
178
+ /**
179
+ * How far one overlay update has got — its state vector AND its delete set.
180
+ *
181
+ * Injected because it is the one thing in the fence that needs Yjs, and the
182
+ * library is graded without it. `createChainFingerprintReader` is what the
183
+ * verb passes; a reader that answered with the state vector alone would miss
184
+ * a deletion (3433-C05).
185
+ */
186
+ fingerprint: (update: Uint8Array) => string;
187
+ }
188
+ /** The server refused to export a chain; there is nothing to audit. */
189
+ export declare const EXPORT_CHAIN_INCOMPLETE = "EXPORT_CHAIN_INCOMPLETE";
190
+ /**
191
+ * The stringset fields a schema response declares, per model.
192
+ *
193
+ * `GET documents/:id/schema` answers `{ schema: { models: { Note: { fields:
194
+ * { tags: { type: "stringset" } } } } } }` — the declarations the document's
195
+ * `_meta_` maps carry, which is where a field added after the base snapshot
196
+ * says what it is. A model with no stringset is left out rather than mapped to
197
+ * an empty list, so the union with the manifest's is a plain spread.
198
+ */
199
+ export declare function stringSetFieldsFromSchema(schema: any): Record<string, string[]>;
200
+ /**
201
+ * Recompute a document's chain locally and compare it with its table.
202
+ *
203
+ * Returns a verdict rather than throwing: a divergence is the answer the
204
+ * command exists to give, and "no verdict" is a third answer the validation
205
+ * child scripts on, not an error to catch.
206
+ */
207
+ export declare function auditSnapshotChain(source: AuditSource, options: AuditOptions): Promise<AuditReport>;