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,132 @@
1
+ /**
2
+ * Which files `primitive documents ingest` reads, and in which order.
3
+ *
4
+ * Two layouts, and the directory itself says which one it is:
5
+ *
6
+ * - **plain** — `<dir>/<model>.ndjson` or `<model>.ndjson.gz`, one record per
7
+ * line. Nothing on disk promises the lines ascend, so they are sorted.
8
+ * - **export** — what `primitive documents export` wrote: a
9
+ * `snapshot/manifest.json` and its chunks, at the directory itself or under
10
+ * `documents/<document-id>/`. A snapshot's chunks ascend and are disjoint
11
+ * per model in manifest order, so an export needs no sort — it is read in
12
+ * that order and streamed straight through.
13
+ *
14
+ * A directory that is neither, or that is both, is refused naming what it
15
+ * held. Every refusal here happens before a session exists: an ingest replaces
16
+ * a live document's tables, and half of one is not something to discover from
17
+ * the server's side.
18
+ */
19
+ import fs from "fs";
20
+ import path from "path";
21
+ import { chunkAddressOf } from "./snapshot-manifest-layout.js";
22
+ /** A directory that is not an ingest input, said as what was found. */
23
+ export class IngestInputError extends Error {
24
+ constructor(message) {
25
+ super(message);
26
+ this.name = "IngestInputError";
27
+ }
28
+ }
29
+ /** Files and directories an export carries that a bulk load does not read. */
30
+ const EXPORT_IGNORED = [
31
+ "epochs",
32
+ "current.yjs",
33
+ "chain.json",
34
+ "document.yjs",
35
+ "blobs",
36
+ ];
37
+ const LINE_FILE = /^(.+)\.ndjson(\.gz)?$/;
38
+ /**
39
+ * Decide what `dir` is and list the files to read, in order.
40
+ *
41
+ * `documentId` matters only for the export layout: an export directory may
42
+ * hold several documents, and re-ingesting one document's rows into another
43
+ * is not a thing to guess at.
44
+ */
45
+ export function discoverIngestInput(dir, documentId) {
46
+ if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) {
47
+ throw new IngestInputError(`Not a directory: ${dir}`);
48
+ }
49
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
50
+ const lineFiles = entries.filter((entry) => entry.isFile() && LINE_FILE.test(entry.name));
51
+ const hasOwnSnapshot = fs.existsSync(path.join(dir, "snapshot", "manifest.json"));
52
+ const documentsDir = path.join(dir, "documents");
53
+ const hasDocuments = fs.existsSync(documentsDir) && fs.statSync(documentsDir).isDirectory();
54
+ if (hasOwnSnapshot && lineFiles.length > 0) {
55
+ throw new IngestInputError(`${dir} holds both layouts: a snapshot/manifest.json and ` +
56
+ `${lineFiles.map((entry) => entry.name).join(", ")}. ` +
57
+ "An ingest reads one directory as one layout; split them.");
58
+ }
59
+ if (hasOwnSnapshot)
60
+ return exportInput(dir, dir);
61
+ if (hasDocuments && lineFiles.length === 0) {
62
+ const mine = path.join(documentsDir, documentId);
63
+ if (fs.existsSync(path.join(mine, "snapshot", "manifest.json"))) {
64
+ return exportInput(dir, mine);
65
+ }
66
+ const others = fs
67
+ .readdirSync(documentsDir, { withFileTypes: true })
68
+ .filter((entry) => entry.isDirectory())
69
+ .map((entry) => entry.name);
70
+ throw new IngestInputError(`This export holds ${others.length === 0 ? "no documents" : others.join(", ")}` +
71
+ ` and nothing for ${documentId}. Point --input at the export of the ` +
72
+ "document being ingested, or at its documents/<document-id> directory.");
73
+ }
74
+ if (lineFiles.length === 0) {
75
+ const found = entries.map((entry) => entry.name);
76
+ if (found.length === 0) {
77
+ throw new IngestInputError(`${dir} is empty. An ingest reads <model>.ndjson[.gz] files, or an ` +
78
+ "export's snapshot/manifest.json.");
79
+ }
80
+ throw new IngestInputError(`${dir} holds nothing an ingest can read: ${found.join(", ")}. ` +
81
+ "Expected <model>.ndjson[.gz] files, or an export's snapshot/manifest.json.");
82
+ }
83
+ // A plain directory with a stray file in it is still ambiguous: the stray
84
+ // may be the model file somebody meant to name, so it is named rather than
85
+ // quietly skipped.
86
+ const strays = entries
87
+ .filter((entry) => !(entry.isFile() && LINE_FILE.test(entry.name)))
88
+ .map((entry) => entry.name);
89
+ if (strays.length > 0) {
90
+ throw new IngestInputError(`${dir} holds files an ingest cannot read: ${strays.join(", ")}. ` +
91
+ "A plain input directory holds <model>.ndjson[.gz] files and nothing else.");
92
+ }
93
+ const sources = lineFiles
94
+ .map((entry) => {
95
+ const match = LINE_FILE.exec(entry.name);
96
+ return {
97
+ model: match[1],
98
+ file: path.join(dir, entry.name),
99
+ gzip: Boolean(match[2]),
100
+ label: entry.name,
101
+ };
102
+ })
103
+ .sort((left, right) => left.model.localeCompare(right.model));
104
+ return { layout: "plain", root: dir, sources, ignored: [], presorted: false };
105
+ }
106
+ /** The sources of an export rooted at `root`, in manifest order. */
107
+ function exportInput(dir, root) {
108
+ const manifestPath = path.join(root, "snapshot", "manifest.json");
109
+ let manifest;
110
+ try {
111
+ manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8"));
112
+ }
113
+ catch (error) {
114
+ throw new IngestInputError(`${path.relative(dir, manifestPath) || manifestPath} is not readable JSON: ${error.message}`);
115
+ }
116
+ const chunks = Array.isArray(manifest?.chunks) ? manifest.chunks : null;
117
+ if (!chunks) {
118
+ throw new IngestInputError(`${path.relative(dir, manifestPath) || manifestPath} names no chunks.`);
119
+ }
120
+ const sources = chunks.map((chunk) => {
121
+ const address = chunkAddressOf(chunk);
122
+ const label = `snapshot/${address.model}/${address.index}.ndjson.gz`;
123
+ const file = path.join(root, "snapshot", address.model, `${address.index}.ndjson.gz`);
124
+ if (!fs.existsSync(file)) {
125
+ throw new IngestInputError(`The export's manifest names ${label}, which is not on disk.`);
126
+ }
127
+ return { model: address.model, file, gzip: true, label };
128
+ });
129
+ const ignored = EXPORT_IGNORED.filter((name) => fs.existsSync(path.join(root, name)));
130
+ return { layout: "export", root, sources, ignored, presorted: true };
131
+ }
132
+ //# sourceMappingURL=document-ingest-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-ingest-input.js","sourceRoot":"","sources":["../../../src/lib/document-ingest-input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * What `documents ingests get` shows an operator, as data (#3598).
3
+ *
4
+ * The rows were composed inline in the command's action, which made the only
5
+ * way to check one a spawned CLI against a live server with a session in
6
+ * exactly the right state — and #3598 adds a block of rows nobody could check
7
+ * that way without a slow load to look at. They are a pure function of the
8
+ * payload now, as `snapshot-build-rows` is; the command still owns the
9
+ * printing, and the live suite still owns "a real terminal really shows this".
10
+ *
11
+ * Label and value, in the order they print. Everything past the first block is
12
+ * optional here, because a session written before its field existed carries
13
+ * none of it and an operator inspecting an old session should see the session
14
+ * rather than a crash.
15
+ */
16
+ /** One printed row: its label and the value beside it. */
17
+ export type IngestSessionRow = [string, unknown];
18
+ /** Where one tick's time went, as the server publishes it. */
19
+ export interface IngestTickTotals {
20
+ manifestMs?: number;
21
+ readMs?: number;
22
+ decodeMs?: number;
23
+ copyMs?: number;
24
+ applyMs?: number;
25
+ reconcileMs?: number;
26
+ swapMs?: number;
27
+ sealMs?: number;
28
+ registerMs?: number;
29
+ totalMs?: number;
30
+ /**
31
+ * Ticks whose stage timers were bracketed by a clock settle (#3638).
32
+ *
33
+ * Equal to `ticks` when every tick managed it. Less means the stage
34
+ * milliseconds above are, for those ticks, the old un-bracketed figures: 0
35
+ * for every synchronous stage.
36
+ */
37
+ bracketedTicks?: number;
38
+ /** What each stage's SQL did, without asking a clock (#3638). */
39
+ counters?: Record<string, IngestStageCounters>;
40
+ }
41
+ /** One stage's clock-free counters, as the server publishes them (#3638). */
42
+ export interface IngestStageCounters {
43
+ statements?: number;
44
+ /** From the SQL cursor's own counter; `null` where the host has none. */
45
+ rowsRead?: number | null;
46
+ /** From the SQL cursor's own counter; `null` where the host has none. */
47
+ rowsWritten?: number | null;
48
+ rowsReturned?: number;
49
+ byTarget?: Record<string, IngestStageCounters>;
50
+ }
51
+ /** The payload `GET .../ingest/{sessionId}` answers with. */
52
+ export interface IngestSessionPayload {
53
+ sessionId: string;
54
+ documentId: string;
55
+ state: string;
56
+ createdBy?: string;
57
+ createdAt?: string | null;
58
+ updatedAt?: string | null;
59
+ completedAt?: string | null;
60
+ expiresAt?: string | null;
61
+ chunks: number;
62
+ rows: number;
63
+ bytes: number;
64
+ /** #3598 — decompressed bytes; null when a swept session cannot say. */
65
+ rawBytes?: number | null;
66
+ stateEnteredAt?: string | null;
67
+ progress?: {
68
+ rowsCopied?: number;
69
+ chunksApplied?: number;
70
+ rowsApplied?: number;
71
+ recordsReconciled?: number;
72
+ /** #3618 — moved-aside rows removed; the counter that moves in `registering`. */
73
+ oldRowsRemoved?: number;
74
+ };
75
+ copyStartedAt?: string | null;
76
+ discontinuityEpoch?: number | null;
77
+ buildId?: string | null;
78
+ failure?: {
79
+ code: string;
80
+ reason: string;
81
+ rows?: Array<{
82
+ model: string;
83
+ id: string;
84
+ } | string>;
85
+ } | null;
86
+ timings?: {
87
+ since?: string | null;
88
+ ticks?: number;
89
+ totals?: IngestTickTotals;
90
+ states?: Record<string, {
91
+ ms?: number;
92
+ ticks?: number;
93
+ intervalMs?: number;
94
+ }>;
95
+ longestInterval?: {
96
+ intervalMs: number;
97
+ state: string;
98
+ } | null;
99
+ } | null;
100
+ throughput?: {
101
+ pipelineMs: number;
102
+ rowsPerSecond: number;
103
+ storedBytesPerSecond: number;
104
+ rawBytesPerSecond: number | null;
105
+ } | null;
106
+ }
107
+ export declare function ingestSessionRows(session: IngestSessionPayload): IngestSessionRow[];
108
+ /**
109
+ * What the client itself spent, beside what the server did (#3598).
110
+ *
111
+ * Every phase past the build is OPTIONAL, and absent means the run never
112
+ * finished it — an upload that failed halfway, a commit that was never
113
+ * reached. A 0 there would read as a measurement of no time at all, which is
114
+ * the same mistake `rawBytes` and `throughput` refuse to make on the server
115
+ * side (finding 3598-FROZEN-02).
116
+ */
117
+ export interface IngestClientTimings {
118
+ /** Reading, checking, sorting, cutting and gzipping the artifact. */
119
+ buildMs: number;
120
+ createMs?: number;
121
+ uploadMs?: number;
122
+ /** Stored bytes put, from the plan's own chunk sizes. */
123
+ uploadedBytes?: number;
124
+ commitMs?: number;
125
+ /** Time spent polling after the commit; 0 under `--no-wait`. */
126
+ waitMs?: number;
127
+ }
128
+ /**
129
+ * The client's phases as rows, so the two sides read side by side.
130
+ *
131
+ * The wall-clock number `documents ingest` used to print covered the artifact
132
+ * build, the upload AND everything the platform then did, and could be blamed
133
+ * on either. These say which. A phase the run never finished prints `—`,
134
+ * which here means what it means everywhere else in this file: not a
135
+ * measurement.
136
+ */
137
+ export declare function ingestClientRows(timings: IngestClientTimings): IngestSessionRow[];
@@ -0,0 +1,181 @@
1
+ /**
2
+ * What `documents ingests get` shows an operator, as data (#3598).
3
+ *
4
+ * The rows were composed inline in the command's action, which made the only
5
+ * way to check one a spawned CLI against a live server with a session in
6
+ * exactly the right state — and #3598 adds a block of rows nobody could check
7
+ * that way without a slow load to look at. They are a pure function of the
8
+ * payload now, as `snapshot-build-rows` is; the command still owns the
9
+ * printing, and the live suite still owns "a real terminal really shows this".
10
+ *
11
+ * Label and value, in the order they print. Everything past the first block is
12
+ * optional here, because a session written before its field existed carries
13
+ * none of it and an operator inspecting an old session should see the session
14
+ * rather than a crash.
15
+ */
16
+ import { formatDate } from "./output.js";
17
+ /** The states a session passes through, in the order it passes through them. */
18
+ const STATES = [
19
+ "uploading",
20
+ "committed",
21
+ "validating",
22
+ "staging",
23
+ "applying",
24
+ "finalizing",
25
+ "registering",
26
+ ];
27
+ /** The per-stage rows, in the order a tick spends them. */
28
+ const STAGES = [
29
+ ["Manifest (ms)", "manifestMs"],
30
+ ["Read (ms)", "readMs"],
31
+ ["Decode (ms)", "decodeMs"],
32
+ ["Copy (ms)", "copyMs"],
33
+ ["Apply (ms)", "applyMs"],
34
+ ["Reconcile (ms)", "reconcileMs"],
35
+ ["Swap (ms)", "swapMs"],
36
+ ["Seal (ms)", "sealMs"],
37
+ ["Register (ms)", "registerMs"],
38
+ ];
39
+ const DASH = "—";
40
+ const title = (state) => state.charAt(0).toUpperCase() + state.slice(1);
41
+ /** Megabytes per second, at one decimal — the unit a load is discussed in. */
42
+ const mbPerSecond = (bytesPerSecond) => `${(bytesPerSecond / 1_000_000).toFixed(2)} MB/s`;
43
+ export function ingestSessionRows(session) {
44
+ const progress = session.progress ?? {};
45
+ const rows = [
46
+ ["Session", session.sessionId],
47
+ ["Document", session.documentId],
48
+ ["State", session.state],
49
+ ["Created by", session.createdBy],
50
+ ["Created", formatDate(session.createdAt)],
51
+ ["Updated", formatDate(session.updatedAt)],
52
+ [
53
+ "Completed",
54
+ session.completedAt
55
+ ? formatDate(session.completedAt)
56
+ : DASH,
57
+ ],
58
+ ["Chunks", session.chunks],
59
+ ["Rows", session.rows],
60
+ ["Bytes", session.bytes],
61
+ // #3598 — what the pipeline actually parsed, which is the numerator of
62
+ // any megabytes-per-second figure. `—` rather than 0 when a completed
63
+ // session's chunk descriptors were swept before timings existed.
64
+ ["Raw bytes", session.rawBytes ?? DASH],
65
+ [
66
+ "Progress",
67
+ `copied ${progress.rowsCopied ?? 0} rows, applied ` +
68
+ `${progress.chunksApplied ?? 0} chunks / ${progress.rowsApplied ?? 0} rows, ` +
69
+ `reconciled ${progress.recordsReconciled ?? 0} records, ` +
70
+ `removed ${progress.oldRowsRemoved ?? 0} moved-aside rows`,
71
+ ],
72
+ [
73
+ "Copy point",
74
+ session.copyStartedAt
75
+ ? formatDate(session.copyStartedAt)
76
+ : DASH,
77
+ ],
78
+ ["Discontinuity epoch", session.discontinuityEpoch ?? DASH],
79
+ ["Build", session.buildId ?? DASH],
80
+ ["Expires", formatDate(session.expiresAt)],
81
+ ];
82
+ // Why it stopped is the reason an operator opened this at all, so it comes
83
+ // before the profile rather than after it.
84
+ if (session.failure) {
85
+ rows.push(["Failure", session.failure.code]);
86
+ rows.push(["Reason", session.failure.reason]);
87
+ for (const row of session.failure.rows ?? []) {
88
+ rows.push([
89
+ " Row",
90
+ typeof row === "string" ? row : `${row.model} ${row.id}`,
91
+ ]);
92
+ }
93
+ }
94
+ const timings = session.timings;
95
+ rows.push(["Ticks", timings?.ticks ?? DASH]);
96
+ // One row per state the session actually recorded. A state it never entered
97
+ // gets none: a block an operator learns is usually blank is a block they
98
+ // stop reading.
99
+ for (const state of STATES) {
100
+ const window = timings?.states?.[state];
101
+ if (!window)
102
+ continue;
103
+ rows.push([
104
+ title(state),
105
+ `${window.ms ?? 0} ms / ${window.ticks ?? 0} ticks / ` +
106
+ `${window.intervalMs ?? 0} ms between ticks`,
107
+ ]);
108
+ }
109
+ for (const [label, key] of STAGES) {
110
+ rows.push([label, timings?.totals?.[key] ?? DASH]);
111
+ }
112
+ // #3638 — the clock-free half, and the flag that says whether the
113
+ // milliseconds above measure anything. A stage row reads
114
+ // `statements / rows read / rows written`, with `—` where the host had no
115
+ // cursor counter to read: an unknown, never a measured zero.
116
+ const counters = timings?.totals?.counters;
117
+ rows.push([
118
+ "Bracketed ticks",
119
+ timings?.totals?.bracketedTicks ?? DASH,
120
+ ]);
121
+ for (const [label, key] of STAGES) {
122
+ const bucket = counters?.[key.replace(/Ms$/, "")];
123
+ if (!bucket)
124
+ continue;
125
+ rows.push([
126
+ `${label.replace(" (ms)", "")} SQL`,
127
+ `${bucket.statements ?? 0} statements / ` +
128
+ `${bucket.rowsRead ?? DASH} rows read / ` +
129
+ `${bucket.rowsWritten ?? DASH} rows written`,
130
+ ]);
131
+ }
132
+ const longest = timings?.longestInterval;
133
+ rows.push([
134
+ "Longest interval",
135
+ longest ? `${longest.intervalMs} ms in ${longest.state}` : DASH,
136
+ ]);
137
+ // Stated only when the server stated it — which it does only when the
138
+ // window was measured from `uploading`. `—` here means "not a measurement",
139
+ // and that is the honest thing for it to mean.
140
+ const throughput = session.throughput;
141
+ rows.push([
142
+ "Throughput",
143
+ throughput
144
+ ? `${throughput.rowsPerSecond.toFixed(1)} rows/s, ` +
145
+ `${mbPerSecond(throughput.storedBytesPerSecond)} stored` +
146
+ (throughput.rawBytesPerSecond === null
147
+ ? ""
148
+ : `, ${mbPerSecond(throughput.rawBytesPerSecond)} raw`) +
149
+ ` over ${(throughput.pipelineMs / 1000).toFixed(1)}s`
150
+ : DASH,
151
+ ]);
152
+ return rows;
153
+ }
154
+ /**
155
+ * The client's phases as rows, so the two sides read side by side.
156
+ *
157
+ * The wall-clock number `documents ingest` used to print covered the artifact
158
+ * build, the upload AND everything the platform then did, and could be blamed
159
+ * on either. These say which. A phase the run never finished prints `—`,
160
+ * which here means what it means everywhere else in this file: not a
161
+ * measurement.
162
+ */
163
+ export function ingestClientRows(timings) {
164
+ const rows = [
165
+ ["Client build (ms)", timings.buildMs],
166
+ ["Client create (ms)", timings.createMs ?? DASH],
167
+ ["Client upload (ms)", timings.uploadMs ?? DASH],
168
+ ["Client uploaded bytes", timings.uploadedBytes ?? DASH],
169
+ ["Client commit (ms)", timings.commitMs ?? DASH],
170
+ ["Client wait (ms)", timings.waitMs ?? DASH],
171
+ ];
172
+ const { uploadMs, uploadedBytes } = timings;
173
+ if (uploadMs !== undefined && uploadMs > 0 && (uploadedBytes ?? 0) > 0) {
174
+ rows.push([
175
+ "Client upload rate",
176
+ mbPerSecond((uploadedBytes / uploadMs) * 1000),
177
+ ]);
178
+ }
179
+ return rows;
180
+ }
181
+ //# sourceMappingURL=document-ingest-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-ingest-rows.js","sourceRoot":"","sources":["../../../src/lib/document-ingest-rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Driving one bulk-load session: create, upload, commit, poll.
3
+ *
4
+ * The artifact is already built and checked by the time anything here runs
5
+ * (`document-ingest-artifact`), so every refusal this module reports comes
6
+ * from the server. What it decides is what to do about one:
7
+ *
8
+ * - a create the server refuses uploads nothing;
9
+ * - an upload that fails ABORTS the session rather than retrying a slot whose
10
+ * reservation this side cannot see — the artifact is deterministic and a
11
+ * re-run is cheap;
12
+ * - Ctrl-C during the uploads aborts too, because the session it was filling
13
+ * is not going to be committed; Ctrl-C while POLLING leaves the session
14
+ * alone, because by then the document is already being changed and giving up
15
+ * on watching is not giving up on the load;
16
+ * - a session READ that fails while polling is retried on a bounded schedule
17
+ * (#3597), for the same reason: the read failing says nothing about the load,
18
+ * and a multi-hour load will meet transient reads. When the bound is spent
19
+ * the wait stops and says the session is still running — it never reports it
20
+ * as cancelled or failed.
21
+ *
22
+ * Exit codes follow `functions runs wait`/`invoke`, as `docs/cli-design.md`
23
+ * records them: 0 completed, 1 failed or refused, 124 a wait that gave up,
24
+ * 130 Ctrl-C. Both ways of giving up on the WATCHING are 124 and both say the
25
+ * session keeps running; only the load itself failing is 1.
26
+ */
27
+ import type { IngestArtifactPlan, IngestChunkDescriptor } from "./document-ingest-artifact.js";
28
+ import type { IngestClientTimings } from "./document-ingest-rows.js";
29
+ /** A plan the operator did not confirm, or cannot be asked about. */
30
+ export declare class IngestRefusedError extends Error {
31
+ constructor(message: string);
32
+ }
33
+ /** The six calls driving a session; `ApiClient` supplies them in the verb. */
34
+ export interface IngestDriverClient {
35
+ createIngest(documentId: string): Promise<any>;
36
+ uploadIngestChunk(documentId: string, sessionId: string, chunk: IngestChunkDescriptor & {
37
+ body: Buffer;
38
+ }): Promise<any>;
39
+ commitIngest(documentId: string, sessionId: string): Promise<any>;
40
+ abortIngest(documentId: string, sessionId: string): Promise<any>;
41
+ getIngest(documentId: string, sessionId: string): Promise<any>;
42
+ }
43
+ export interface DriveIngestOptions {
44
+ client: IngestDriverClient;
45
+ documentId: string;
46
+ plan: IngestArtifactPlan;
47
+ /** Uploads in flight at once. */
48
+ concurrency?: number;
49
+ /** Poll until the session settles; `--no-wait` sets this false. */
50
+ wait?: boolean;
51
+ /** `--timeout`, in milliseconds; null waits indefinitely. */
52
+ timeoutMs?: number | null;
53
+ /** Ctrl-C. */
54
+ signal?: AbortSignal;
55
+ /** State changes and progress; stderr in the verb. */
56
+ onProgress?: (line: string) => void;
57
+ /** Where a chunk's bytes come from; the plan's own files by default. */
58
+ readChunk?: (chunk: IngestChunkDescriptor) => Promise<Buffer>;
59
+ now?: () => number;
60
+ sleep?: (ms: number) => Promise<void>;
61
+ }
62
+ /** What the run settled on. */
63
+ export interface IngestOutcome {
64
+ /** 0 complete, 1 failed or refused, 124 timed out, 130 interrupted. */
65
+ exitCode: number;
66
+ sessionId: string | null;
67
+ /** The terminal session view, when one was read. */
68
+ session: any | null;
69
+ /** The reason, for stderr. */
70
+ message?: string;
71
+ /**
72
+ * What THIS side spent, phase by phase (#3598).
73
+ *
74
+ * A bulk load's wall-clock time used to be one number covering the artifact
75
+ * build, the upload and everything the platform then did, which meant it
76
+ * could be blamed on either side. A phase the run never finished is
77
+ * ABSENT rather than 0 (finding 3598-FROZEN-02): an upload that died
78
+ * halfway has no rate, and a commit that was never reached did not take no
79
+ * time. The one exception is the wait, which is real elapsed time whether
80
+ * or not the session settled, so a poll that fails after minutes reports
81
+ * those minutes (finding 3598-FROZEN-01).
82
+ *
83
+ * `buildMs` is the verb's, not the driver's — the artifact is already built
84
+ * by the time anything here runs — and is filled in by the caller.
85
+ */
86
+ timings: Omit<IngestClientTimings, "buildMs">;
87
+ }
88
+ /** The plan summary an operator confirms, one line per row. */
89
+ export declare function summariseIngestPlan(plan: IngestArtifactPlan): string[];
90
+ /**
91
+ * Refuse a run that cannot ask, before it asks the server anything.
92
+ *
93
+ * A bulk load deletes and overwrites a live document's records with no undo,
94
+ * which is what the CLI design's destructive default is for. A pipeline that
95
+ * meant to run one says so with `-y`.
96
+ */
97
+ export declare function assertIngestConfirmable(options: {
98
+ yes: boolean;
99
+ isTTY: boolean;
100
+ }): void;
101
+ export declare function driveDocumentIngest(options: DriveIngestOptions): Promise<IngestOutcome>;