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,32 @@
1
+ /**
2
+ * Shared helpers for the CLI's batch-import commands
3
+ * (`databases import` and `databases import-csv`).
4
+ */
5
+ /** Split an array into fixed-size chunks. */
6
+ export function chunk(items, size) {
7
+ const out = [];
8
+ for (let i = 0; i < items.length; i += size) {
9
+ out.push(items.slice(i, i + size));
10
+ }
11
+ return out;
12
+ }
13
+ /**
14
+ * Parse and validate a `--batch-size` flag value.
15
+ *
16
+ * Returns the parsed integer on success, or a human-readable error message
17
+ * on failure (non-integer, `< 1`, or over the caller's ceiling). Callers
18
+ * decide how to surface the error — typically `error(msg); process.exit(1)`.
19
+ * Validating up front means a bad `--batch-size` fails before any write, so
20
+ * there are no partial imports.
21
+ */
22
+ export function parseBatchSize(raw, opts) {
23
+ const n = Number(raw);
24
+ if (!Number.isInteger(n) || n < 1) {
25
+ return { error: "--batch-size must be a positive integer." };
26
+ }
27
+ if (n > opts.max) {
28
+ return { error: opts.overMaxMessage };
29
+ }
30
+ return { value: n };
31
+ }
32
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/lib/batch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,6CAA6C;AAC7C,MAAM,UAAU,KAAK,CAAI,KAAU,EAAE,IAAY;IAC/C,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,IAA2B;IAE3B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,0CAA0C,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Sync v2 "unified block" layout — issue #1183, Phase 3.
3
+ *
4
+ * The current (legacy) sync layout stores each managed block type in its own
5
+ * flat directory:
6
+ *
7
+ * config/
8
+ * prompts/<key>.toml
9
+ * integrations/<key>.toml
10
+ * workflows/<key>.toml
11
+ * transforms/<name>.rhai # scripts
12
+ *
13
+ * The v2 layout introduced by the unified block model groups every block type
14
+ * under one `blocks/` tree keyed by type and block key, with a single
15
+ * `block.toml` envelope per block (and a sibling `source.rhai` for scripts):
16
+ *
17
+ * config/
18
+ * blocks/
19
+ * prompts/<key>/block.toml
20
+ * integrations/<key>/block.toml
21
+ * workflows/<key>/block.toml
22
+ * scripts/<key>/block.toml
23
+ * scripts/<key>/source.rhai
24
+ *
25
+ * Per the proposal (docs/proposals/unified-block-model.md, "Phase 3: Sync v2"),
26
+ * the CLI must:
27
+ * - Read both legacy and v2 layouts.
28
+ * - Preserve the legacy layout as the default until v2 is proven.
29
+ * - Provide a migration command to convert legacy sync directories.
30
+ *
31
+ * This module is the pure, side-effect-light core of that work: the v2 path
32
+ * builders, the `block.toml` codec, layout detection, and the legacy -> v2
33
+ * migration. It stores the *verbatim* legacy TOML body under
34
+ * `[[versions]].spec`, so the transform is loss-free and a v2 block round-trips
35
+ * back to a byte-for-byte-equivalent legacy object (see `reconstructLegacyBlock`).
36
+ * That is what lets a later pass read a v2 directory through the same push path
37
+ * the legacy layout uses without re-deriving every type's field mapping.
38
+ */
39
+ export type BlockType = "prompt" | "integration" | "workflow" | "script";
40
+ export declare const BLOCK_TYPES: BlockType[];
41
+ /** The `schemaVersion` string written at the top of every v2 `block.toml`. */
42
+ export declare const BLOCK_SCHEMA_VERSION = "block/v1";
43
+ /** The filename of the script body written next to a v2 script `block.toml`. */
44
+ export declare const SCRIPT_SOURCE_FILENAME = "source.rhai";
45
+ export declare function isBlockType(value: unknown): value is BlockType;
46
+ /** `<configDir>/blocks` — the root of the v2 tree. */
47
+ export declare function v2BlocksRoot(configDir: string): string;
48
+ /** `<configDir>/blocks/<typeDir>/<key>` — a single v2 block's directory. */
49
+ export declare function v2BlockDir(configDir: string, type: BlockType, key: string): string;
50
+ /** `<configDir>/blocks/<typeDir>/<key>/block.toml`. */
51
+ export declare function v2BlockTomlPath(configDir: string, type: BlockType, key: string): string;
52
+ /** `<configDir>/blocks/scripts/<key>/source.rhai`. */
53
+ export declare function v2ScriptSourcePath(configDir: string, key: string): string;
54
+ /** `<configDir>/<legacyDir>` for a block type (flat layout). */
55
+ export declare function legacyBlockDir(configDir: string, type: BlockType): string;
56
+ export interface BlockVersionToml {
57
+ key: string;
58
+ status?: string;
59
+ contentHash?: string;
60
+ /** Verbatim type-native spec body (the legacy TOML object for this block). */
61
+ spec: Record<string, unknown>;
62
+ }
63
+ export interface BlockHeaderToml {
64
+ type: BlockType;
65
+ key: string;
66
+ displayName?: string;
67
+ description?: string;
68
+ status?: string;
69
+ activeVersion?: string;
70
+ }
71
+ export interface BlockToml {
72
+ schemaVersion: string;
73
+ block: BlockHeaderToml;
74
+ versions: BlockVersionToml[];
75
+ }
76
+ /**
77
+ * Serialize a v2 block into `block.toml` text. Key order is fixed
78
+ * (`schemaVersion`, `[block]`, `[[versions]]`) so a pull/migrate followed by a
79
+ * re-serialize is stable and produces no spurious diffs.
80
+ */
81
+ export declare function serializeBlockToml(block: BlockToml): string;
82
+ /**
83
+ * Parse `block.toml` text into a `BlockToml`. Throws with a clear message when
84
+ * the envelope is malformed (missing/invalid `[block].type`, no versions).
85
+ */
86
+ export declare function parseBlockToml(text: string): BlockToml;
87
+ /** `sha256:<hex>` content identity over the canonical JSON of a spec object. */
88
+ export declare function specContentHash(spec: unknown): string;
89
+ /**
90
+ * Wrap a parsed legacy block object into a v2 `BlockToml`. The full legacy
91
+ * object is stored verbatim as the single version's `spec`, so the transform
92
+ * loses nothing. The `[block]` header is a projection derived from the legacy
93
+ * header table for the unified vocabulary; the spec remains the source of truth
94
+ * for reconstructing the legacy file.
95
+ */
96
+ export declare function legacyObjectToBlock(type: Exclude<BlockType, "script">, legacy: Record<string, unknown>, fallbackKey: string): BlockToml;
97
+ /** Wrap a raw Rhai script body into a v2 script `BlockToml`. */
98
+ export declare function scriptSourceToBlock(key: string, source: string): BlockToml;
99
+ export interface ReconstructedLegacy {
100
+ /** For prompt/integration/workflow: the legacy `.toml` text. */
101
+ toml?: string;
102
+ /** For scripts: the raw `.rhai` body. */
103
+ rhai?: string;
104
+ }
105
+ /**
106
+ * Reverse `legacyObjectToBlock` / `scriptSourceToBlock`: rebuild the legacy
107
+ * on-disk content from a v2 block. This is the read half of dual-layout
108
+ * support — a v2 directory can be projected back to the exact legacy object a
109
+ * legacy consumer (e.g. the push path) expects. `sourceText` is required for
110
+ * scripts (the body lives in `source.rhai`, not the `block.toml`).
111
+ */
112
+ export declare function reconstructLegacyBlock(block: BlockToml, sourceText?: string): ReconstructedLegacy;
113
+ /**
114
+ * Report which layouts a config directory currently holds. A directory can
115
+ * hold both during/after a migration (legacy preserved, v2 written).
116
+ */
117
+ export declare function detectLayout(configDir: string): {
118
+ legacy: boolean;
119
+ v2: boolean;
120
+ };
121
+ export interface V2BlockRef {
122
+ type: BlockType;
123
+ key: string;
124
+ tomlPath: string;
125
+ sourcePath?: string;
126
+ }
127
+ /** Enumerate every v2 block present under `<configDir>/blocks/`. */
128
+ export declare function listV2Blocks(configDir: string): V2BlockRef[];
129
+ export interface MigratedBlock {
130
+ type: BlockType;
131
+ key: string;
132
+ tomlPath: string;
133
+ sourcePath?: string;
134
+ /** Number of test-case files copied into the v2 block's `tests/` dir. */
135
+ testsCopied: number;
136
+ }
137
+ export interface SkippedBlock {
138
+ type: BlockType;
139
+ key: string;
140
+ reason: string;
141
+ }
142
+ export interface MigrationResult {
143
+ blocks: MigratedBlock[];
144
+ skipped: SkippedBlock[];
145
+ dryRun: boolean;
146
+ }
147
+ export interface MigrateOptions {
148
+ /** Report what would happen without writing anything. */
149
+ dryRun?: boolean;
150
+ /** Overwrite an existing v2 `block.toml` instead of skipping it. */
151
+ force?: boolean;
152
+ }
153
+ /**
154
+ * Convert a legacy sync directory into the v2 `blocks/<type>/<key>/block.toml`
155
+ * layout. Non-destructive: the legacy files are left in place (the legacy
156
+ * layout stays the default until v2 is proven). Test-case directories
157
+ * (`<key>.tests/`) are copied verbatim into `blocks/<type>/<key>/tests/` so a
158
+ * tested block migrates without losing its cases.
159
+ */
160
+ export declare function migrateLegacyToV2(configDir: string, options?: MigrateOptions): MigrationResult;
@@ -0,0 +1,451 @@
1
+ /**
2
+ * Sync v2 "unified block" layout — issue #1183, Phase 3.
3
+ *
4
+ * The current (legacy) sync layout stores each managed block type in its own
5
+ * flat directory:
6
+ *
7
+ * config/
8
+ * prompts/<key>.toml
9
+ * integrations/<key>.toml
10
+ * workflows/<key>.toml
11
+ * transforms/<name>.rhai # scripts
12
+ *
13
+ * The v2 layout introduced by the unified block model groups every block type
14
+ * under one `blocks/` tree keyed by type and block key, with a single
15
+ * `block.toml` envelope per block (and a sibling `source.rhai` for scripts):
16
+ *
17
+ * config/
18
+ * blocks/
19
+ * prompts/<key>/block.toml
20
+ * integrations/<key>/block.toml
21
+ * workflows/<key>/block.toml
22
+ * scripts/<key>/block.toml
23
+ * scripts/<key>/source.rhai
24
+ *
25
+ * Per the proposal (docs/proposals/unified-block-model.md, "Phase 3: Sync v2"),
26
+ * the CLI must:
27
+ * - Read both legacy and v2 layouts.
28
+ * - Preserve the legacy layout as the default until v2 is proven.
29
+ * - Provide a migration command to convert legacy sync directories.
30
+ *
31
+ * This module is the pure, side-effect-light core of that work: the v2 path
32
+ * builders, the `block.toml` codec, layout detection, and the legacy -> v2
33
+ * migration. It stores the *verbatim* legacy TOML body under
34
+ * `[[versions]].spec`, so the transform is loss-free and a v2 block round-trips
35
+ * back to a byte-for-byte-equivalent legacy object (see `reconstructLegacyBlock`).
36
+ * That is what lets a later pass read a v2 directory through the same push path
37
+ * the legacy layout uses without re-deriving every type's field mapping.
38
+ */
39
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from "fs";
40
+ import { createHash } from "crypto";
41
+ import { basename, join } from "path";
42
+ import { parseConfigToml, stringifyConfigToml } from "./config-toml.js";
43
+ export const BLOCK_TYPES = [
44
+ "prompt",
45
+ "integration",
46
+ "workflow",
47
+ "script",
48
+ ];
49
+ /** The `schemaVersion` string written at the top of every v2 `block.toml`. */
50
+ export const BLOCK_SCHEMA_VERSION = "block/v1";
51
+ /** The filename of the script body written next to a v2 script `block.toml`. */
52
+ export const SCRIPT_SOURCE_FILENAME = "source.rhai";
53
+ /**
54
+ * The named top-level TOML table each legacy block file wraps its header in
55
+ * (`[prompt]`, `[integration]`, `[workflow]`). Scripts have no header table —
56
+ * their legacy form is a raw `.rhai` body — so they are handled separately.
57
+ */
58
+ const LEGACY_HEADER_KEY = {
59
+ prompt: "prompt",
60
+ integration: "integration",
61
+ workflow: "workflow",
62
+ };
63
+ /** Legacy per-type directory names (flat layout). */
64
+ const LEGACY_DIR = {
65
+ prompt: "prompts",
66
+ integration: "integrations",
67
+ workflow: "workflows",
68
+ script: "transforms",
69
+ };
70
+ /**
71
+ * v2 per-type directory names under `blocks/`. Note scripts move from the
72
+ * legacy `transforms/` name to `scripts/` to match the block vocabulary.
73
+ */
74
+ const V2_TYPE_DIR = {
75
+ prompt: "prompts",
76
+ integration: "integrations",
77
+ workflow: "workflows",
78
+ script: "scripts",
79
+ };
80
+ const V2_TYPE_DIR_TO_TYPE = {
81
+ prompts: "prompt",
82
+ integrations: "integration",
83
+ workflows: "workflow",
84
+ scripts: "script",
85
+ };
86
+ export function isBlockType(value) {
87
+ return (typeof value === "string" && BLOCK_TYPES.includes(value));
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // Path builders
91
+ // ---------------------------------------------------------------------------
92
+ /** `<configDir>/blocks` — the root of the v2 tree. */
93
+ export function v2BlocksRoot(configDir) {
94
+ return join(configDir, "blocks");
95
+ }
96
+ /** `<configDir>/blocks/<typeDir>/<key>` — a single v2 block's directory. */
97
+ export function v2BlockDir(configDir, type, key) {
98
+ return join(configDir, "blocks", V2_TYPE_DIR[type], key);
99
+ }
100
+ /** `<configDir>/blocks/<typeDir>/<key>/block.toml`. */
101
+ export function v2BlockTomlPath(configDir, type, key) {
102
+ return join(v2BlockDir(configDir, type, key), "block.toml");
103
+ }
104
+ /** `<configDir>/blocks/scripts/<key>/source.rhai`. */
105
+ export function v2ScriptSourcePath(configDir, key) {
106
+ return join(v2BlockDir(configDir, "script", key), SCRIPT_SOURCE_FILENAME);
107
+ }
108
+ /** `<configDir>/<legacyDir>` for a block type (flat layout). */
109
+ export function legacyBlockDir(configDir, type) {
110
+ return join(configDir, LEGACY_DIR[type]);
111
+ }
112
+ function pruneUndefined(obj) {
113
+ for (const k of Object.keys(obj)) {
114
+ if (obj[k] === undefined)
115
+ delete obj[k];
116
+ }
117
+ return obj;
118
+ }
119
+ /**
120
+ * Serialize a v2 block into `block.toml` text. Key order is fixed
121
+ * (`schemaVersion`, `[block]`, `[[versions]]`) so a pull/migrate followed by a
122
+ * re-serialize is stable and produces no spurious diffs.
123
+ */
124
+ export function serializeBlockToml(block) {
125
+ const data = {
126
+ schemaVersion: block.schemaVersion || BLOCK_SCHEMA_VERSION,
127
+ block: pruneUndefined({
128
+ type: block.block.type,
129
+ key: block.block.key,
130
+ displayName: block.block.displayName,
131
+ description: block.block.description,
132
+ status: block.block.status,
133
+ activeVersion: block.block.activeVersion,
134
+ }),
135
+ versions: block.versions.map((v) => pruneUndefined({
136
+ key: v.key,
137
+ status: v.status,
138
+ contentHash: v.contentHash,
139
+ spec: v.spec,
140
+ })),
141
+ };
142
+ return stringifyConfigToml(data);
143
+ }
144
+ /**
145
+ * Parse `block.toml` text into a `BlockToml`. Throws with a clear message when
146
+ * the envelope is malformed (missing/invalid `[block].type`, no versions).
147
+ */
148
+ export function parseBlockToml(text) {
149
+ const parsed = parseConfigToml(text);
150
+ const header = parsed?.block;
151
+ if (!header || typeof header !== "object") {
152
+ throw new Error("block.toml is missing the [block] table");
153
+ }
154
+ if (!isBlockType(header.type)) {
155
+ throw new Error(`block.toml has an invalid [block].type: ${JSON.stringify(header.type)}`);
156
+ }
157
+ if (!header.key || typeof header.key !== "string") {
158
+ throw new Error("block.toml is missing a [block].key");
159
+ }
160
+ const rawVersions = Array.isArray(parsed.versions) ? parsed.versions : [];
161
+ const versions = rawVersions.map((v, i) => {
162
+ if (!v || typeof v !== "object") {
163
+ throw new Error(`block.toml version #${i} is not a table`);
164
+ }
165
+ return {
166
+ key: typeof v.key === "string" ? v.key : String(i),
167
+ status: typeof v.status === "string" ? v.status : undefined,
168
+ contentHash: typeof v.contentHash === "string" ? v.contentHash : undefined,
169
+ spec: v.spec && typeof v.spec === "object"
170
+ ? v.spec
171
+ : {},
172
+ };
173
+ });
174
+ if (versions.length === 0) {
175
+ throw new Error("block.toml has no [[versions]]");
176
+ }
177
+ return {
178
+ schemaVersion: typeof parsed.schemaVersion === "string"
179
+ ? parsed.schemaVersion
180
+ : BLOCK_SCHEMA_VERSION,
181
+ block: {
182
+ type: header.type,
183
+ key: header.key,
184
+ displayName: typeof header.displayName === "string"
185
+ ? header.displayName
186
+ : undefined,
187
+ description: typeof header.description === "string"
188
+ ? header.description
189
+ : undefined,
190
+ status: typeof header.status === "string" ? header.status : undefined,
191
+ activeVersion: typeof header.activeVersion === "string"
192
+ ? header.activeVersion
193
+ : undefined,
194
+ },
195
+ versions,
196
+ };
197
+ }
198
+ /** `sha256:<hex>` content identity over the canonical JSON of a spec object. */
199
+ export function specContentHash(spec) {
200
+ return "sha256:" + createHash("sha256").update(canonicalJson(spec)).digest("hex");
201
+ }
202
+ function canonicalJson(value) {
203
+ if (value === null || typeof value !== "object") {
204
+ return JSON.stringify(value);
205
+ }
206
+ if (Array.isArray(value)) {
207
+ return "[" + value.map(canonicalJson).join(",") + "]";
208
+ }
209
+ const obj = value;
210
+ return ("{" +
211
+ Object.keys(obj)
212
+ .sort()
213
+ .map((k) => JSON.stringify(k) + ":" + canonicalJson(obj[k]))
214
+ .join(",") +
215
+ "}");
216
+ }
217
+ // ---------------------------------------------------------------------------
218
+ // Legacy <-> v2 conversion (loss-free)
219
+ // ---------------------------------------------------------------------------
220
+ /**
221
+ * Wrap a parsed legacy block object into a v2 `BlockToml`. The full legacy
222
+ * object is stored verbatim as the single version's `spec`, so the transform
223
+ * loses nothing. The `[block]` header is a projection derived from the legacy
224
+ * header table for the unified vocabulary; the spec remains the source of truth
225
+ * for reconstructing the legacy file.
226
+ */
227
+ export function legacyObjectToBlock(type, legacy, fallbackKey) {
228
+ const headerTable = legacy[LEGACY_HEADER_KEY[type]] ||
229
+ {};
230
+ const key = typeof headerTable.key === "string" && headerTable.key
231
+ ? headerTable.key
232
+ : fallbackKey;
233
+ const status = typeof headerTable.status === "string" ? headerTable.status : undefined;
234
+ const displayName = typeof headerTable.displayName === "string"
235
+ ? headerTable.displayName
236
+ : typeof headerTable.name === "string"
237
+ ? headerTable.name
238
+ : undefined;
239
+ const description = typeof headerTable.description === "string"
240
+ ? headerTable.description
241
+ : undefined;
242
+ const versionKey = "default";
243
+ return {
244
+ schemaVersion: BLOCK_SCHEMA_VERSION,
245
+ block: {
246
+ type,
247
+ key,
248
+ displayName,
249
+ description,
250
+ status,
251
+ activeVersion: versionKey,
252
+ },
253
+ versions: [
254
+ {
255
+ key: versionKey,
256
+ status: status || "draft",
257
+ contentHash: specContentHash(legacy),
258
+ spec: legacy,
259
+ },
260
+ ],
261
+ };
262
+ }
263
+ /** Wrap a raw Rhai script body into a v2 script `BlockToml`. */
264
+ export function scriptSourceToBlock(key, source) {
265
+ const spec = { sourceFile: SCRIPT_SOURCE_FILENAME };
266
+ return {
267
+ schemaVersion: BLOCK_SCHEMA_VERSION,
268
+ block: {
269
+ type: "script",
270
+ key,
271
+ status: "active",
272
+ activeVersion: "default",
273
+ },
274
+ versions: [
275
+ {
276
+ key: "default",
277
+ status: "active",
278
+ contentHash: specContentHash(source),
279
+ spec,
280
+ },
281
+ ],
282
+ };
283
+ }
284
+ /**
285
+ * Reverse `legacyObjectToBlock` / `scriptSourceToBlock`: rebuild the legacy
286
+ * on-disk content from a v2 block. This is the read half of dual-layout
287
+ * support — a v2 directory can be projected back to the exact legacy object a
288
+ * legacy consumer (e.g. the push path) expects. `sourceText` is required for
289
+ * scripts (the body lives in `source.rhai`, not the `block.toml`).
290
+ */
291
+ export function reconstructLegacyBlock(block, sourceText) {
292
+ const version = block.versions.find((v) => v.key === block.block.activeVersion) ||
293
+ block.versions[0];
294
+ if (block.block.type === "script") {
295
+ return { rhai: sourceText ?? "" };
296
+ }
297
+ const spec = (version?.spec ?? {});
298
+ return { toml: stringifyConfigToml(spec) };
299
+ }
300
+ // ---------------------------------------------------------------------------
301
+ // Layout detection + enumeration
302
+ // ---------------------------------------------------------------------------
303
+ function dirHasBlockFiles(dir, ext) {
304
+ if (!existsSync(dir))
305
+ return false;
306
+ try {
307
+ return readdirSync(dir).some((name) => {
308
+ if (!name.endsWith(ext))
309
+ return false;
310
+ return statSync(join(dir, name)).isFile();
311
+ });
312
+ }
313
+ catch {
314
+ return false;
315
+ }
316
+ }
317
+ /**
318
+ * Report which layouts a config directory currently holds. A directory can
319
+ * hold both during/after a migration (legacy preserved, v2 written).
320
+ */
321
+ export function detectLayout(configDir) {
322
+ const legacy = BLOCK_TYPES.some((type) => {
323
+ const dir = legacyBlockDir(configDir, type);
324
+ const ext = type === "script" ? ".rhai" : ".toml";
325
+ return dirHasBlockFiles(dir, ext);
326
+ });
327
+ const v2 = listV2Blocks(configDir).length > 0;
328
+ return { legacy, v2 };
329
+ }
330
+ /** Enumerate every v2 block present under `<configDir>/blocks/`. */
331
+ export function listV2Blocks(configDir) {
332
+ const root = v2BlocksRoot(configDir);
333
+ if (!existsSync(root))
334
+ return [];
335
+ const refs = [];
336
+ for (const typeDir of readdirSync(root)) {
337
+ const type = V2_TYPE_DIR_TO_TYPE[typeDir];
338
+ if (!type)
339
+ continue;
340
+ const typePath = join(root, typeDir);
341
+ if (!statSync(typePath).isDirectory())
342
+ continue;
343
+ for (const key of readdirSync(typePath)) {
344
+ const blockDir = join(typePath, key);
345
+ const tomlPath = join(blockDir, "block.toml");
346
+ if (!existsSync(tomlPath) || !statSync(blockDir).isDirectory())
347
+ continue;
348
+ const sourcePath = join(blockDir, SCRIPT_SOURCE_FILENAME);
349
+ refs.push({
350
+ type,
351
+ key,
352
+ tomlPath,
353
+ sourcePath: existsSync(sourcePath) ? sourcePath : undefined,
354
+ });
355
+ }
356
+ }
357
+ return refs;
358
+ }
359
+ function listLegacyBlockFiles(configDir) {
360
+ const files = [];
361
+ for (const type of BLOCK_TYPES) {
362
+ const dir = legacyBlockDir(configDir, type);
363
+ if (!existsSync(dir))
364
+ continue;
365
+ const ext = type === "script" ? ".rhai" : ".toml";
366
+ for (const name of readdirSync(dir)) {
367
+ if (!name.endsWith(ext))
368
+ continue;
369
+ const path = join(dir, name);
370
+ if (!statSync(path).isFile())
371
+ continue;
372
+ files.push({ type, key: basename(name, ext), path });
373
+ }
374
+ }
375
+ return files;
376
+ }
377
+ /**
378
+ * Convert a legacy sync directory into the v2 `blocks/<type>/<key>/block.toml`
379
+ * layout. Non-destructive: the legacy files are left in place (the legacy
380
+ * layout stays the default until v2 is proven). Test-case directories
381
+ * (`<key>.tests/`) are copied verbatim into `blocks/<type>/<key>/tests/` so a
382
+ * tested block migrates without losing its cases.
383
+ */
384
+ export function migrateLegacyToV2(configDir, options = {}) {
385
+ const dryRun = !!options.dryRun;
386
+ const blocks = [];
387
+ const skipped = [];
388
+ for (const file of listLegacyBlockFiles(configDir)) {
389
+ const tomlPath = v2BlockTomlPath(configDir, file.type, file.key);
390
+ if (existsSync(tomlPath) && !options.force) {
391
+ skipped.push({
392
+ type: file.type,
393
+ key: file.key,
394
+ reason: "v2 block.toml already exists (use --force to overwrite)",
395
+ });
396
+ continue;
397
+ }
398
+ let block;
399
+ let sourceText;
400
+ if (file.type === "script") {
401
+ sourceText = readFileSync(file.path, "utf-8");
402
+ block = scriptSourceToBlock(file.key, sourceText);
403
+ }
404
+ else {
405
+ let legacy;
406
+ try {
407
+ legacy = parseConfigToml(readFileSync(file.path, "utf-8"));
408
+ }
409
+ catch (err) {
410
+ skipped.push({
411
+ type: file.type,
412
+ key: file.key,
413
+ reason: `could not parse legacy TOML: ${err.message}`,
414
+ });
415
+ continue;
416
+ }
417
+ block = legacyObjectToBlock(file.type, legacy, file.key);
418
+ }
419
+ const blockDir = v2BlockDir(configDir, file.type, file.key);
420
+ const sourcePath = file.type === "script"
421
+ ? v2ScriptSourcePath(configDir, file.key)
422
+ : undefined;
423
+ // Copy sibling test cases: legacy `<legacyDir>/<key>.tests/` ->
424
+ // `blocks/<type>/<key>/tests/`.
425
+ const legacyTestsDir = join(legacyBlockDir(configDir, file.type), `${file.key}.tests`);
426
+ let testsCopied = 0;
427
+ const v2TestsDir = join(blockDir, "tests");
428
+ if (existsSync(legacyTestsDir) && statSync(legacyTestsDir).isDirectory()) {
429
+ testsCopied = readdirSync(legacyTestsDir).filter((n) => n.endsWith(".toml")).length;
430
+ }
431
+ if (!dryRun) {
432
+ mkdirSync(blockDir, { recursive: true });
433
+ writeFileSync(tomlPath, serializeBlockToml(block));
434
+ if (sourcePath && sourceText !== undefined) {
435
+ writeFileSync(sourcePath, sourceText);
436
+ }
437
+ if (testsCopied > 0) {
438
+ cpSync(legacyTestsDir, v2TestsDir, { recursive: true });
439
+ }
440
+ }
441
+ blocks.push({
442
+ type: file.type,
443
+ key: file.key,
444
+ tomlPath,
445
+ sourcePath,
446
+ testsCopied,
447
+ });
448
+ }
449
+ return { blocks, skipped, dryRun };
450
+ }
451
+ //# sourceMappingURL=block-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-layout.js","sourceRoot":"","sources":["../../../src/lib/block-layout.ts"],"names":[],"mappings":"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"}