primitive-admin 1.1.0-alpha.7 → 1.1.0-alpha.70

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 (438) hide show
  1. package/README.md +404 -80
  2. package/assets/skill/skills/primitive-platform/SKILL.md +808 -0
  3. package/dist/bin/primitive.d.ts +2 -0
  4. package/dist/bin/primitive.js +294 -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 +138 -19
  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 +544 -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 +51 -96
  14. package/dist/src/commands/apps.js.map +1 -1
  15. package/dist/src/commands/auth.d.ts +2 -0
  16. package/dist/src/commands/auth.js +177 -7
  17. package/dist/src/commands/auth.js.map +1 -1
  18. package/dist/src/commands/blob-buckets.d.ts +2 -0
  19. package/dist/src/commands/blob-buckets.js +330 -0
  20. package/dist/src/commands/blob-buckets.js.map +1 -0
  21. package/dist/src/commands/catalog.d.ts +2 -0
  22. package/dist/src/commands/catalog.js +37 -38
  23. package/dist/src/commands/catalog.js.map +1 -1
  24. package/dist/src/commands/collection-type-configs.d.ts +2 -0
  25. package/dist/src/commands/collection-type-configs.js +92 -0
  26. package/dist/src/commands/collection-type-configs.js.map +1 -0
  27. package/dist/src/commands/collections.d.ts +2 -0
  28. package/dist/src/commands/collections.js +565 -0
  29. package/dist/src/commands/collections.js.map +1 -0
  30. package/dist/src/commands/comparisons.d.ts +2 -0
  31. package/dist/src/commands/comparisons.js +6 -6
  32. package/dist/src/commands/comparisons.js.map +1 -1
  33. package/dist/src/commands/config.d.ts +46 -0
  34. package/dist/src/commands/config.js +479 -0
  35. package/dist/src/commands/config.js.map +1 -0
  36. package/dist/src/commands/connections.d.ts +2 -0
  37. package/dist/src/commands/connections.js +100 -0
  38. package/dist/src/commands/connections.js.map +1 -0
  39. package/dist/src/commands/cron-triggers.d.ts +2 -0
  40. package/dist/src/commands/cron-triggers.js +265 -0
  41. package/dist/src/commands/cron-triggers.js.map +1 -0
  42. package/dist/src/commands/database-type-configs.d.ts +2 -0
  43. package/dist/src/commands/database-type-configs.js +171 -0
  44. package/dist/src/commands/database-type-configs.js.map +1 -0
  45. package/dist/src/commands/database-types.d.ts +2 -0
  46. package/dist/src/commands/database-types.js +471 -0
  47. package/dist/src/commands/database-types.js.map +1 -0
  48. package/dist/src/commands/databases.d.ts +65 -0
  49. package/dist/src/commands/databases.js +2140 -112
  50. package/dist/src/commands/databases.js.map +1 -1
  51. package/dist/src/commands/documents.d.ts +2 -0
  52. package/dist/src/commands/documents.js +1357 -19
  53. package/dist/src/commands/documents.js.map +1 -1
  54. package/dist/src/commands/email-templates.d.ts +2 -0
  55. package/dist/src/commands/email-templates.js +174 -0
  56. package/dist/src/commands/email-templates.js.map +1 -0
  57. package/dist/src/commands/env.d.ts +23 -0
  58. package/dist/src/commands/env.js +333 -0
  59. package/dist/src/commands/env.js.map +1 -0
  60. package/dist/src/commands/feature-flags.d.ts +14 -0
  61. package/dist/src/commands/feature-flags.js +116 -0
  62. package/dist/src/commands/feature-flags.js.map +1 -0
  63. package/dist/src/commands/group-type-configs.d.ts +2 -0
  64. package/dist/src/commands/group-type-configs.js +86 -0
  65. package/dist/src/commands/group-type-configs.js.map +1 -0
  66. package/dist/src/commands/groups.d.ts +2 -0
  67. package/dist/src/commands/groups.js +38 -99
  68. package/dist/src/commands/groups.js.map +1 -1
  69. package/dist/src/commands/guides.d.ts +223 -0
  70. package/dist/src/commands/guides.js +617 -65
  71. package/dist/src/commands/guides.js.map +1 -1
  72. package/dist/src/commands/init.d.ts +25 -0
  73. package/dist/src/commands/init.js +1605 -208
  74. package/dist/src/commands/init.js.map +1 -1
  75. package/dist/src/commands/integrations.d.ts +2 -0
  76. package/dist/src/commands/integrations.js +380 -178
  77. package/dist/src/commands/integrations.js.map +1 -1
  78. package/dist/src/commands/llm.d.ts +2 -0
  79. package/dist/src/commands/llm.js +4 -2
  80. package/dist/src/commands/llm.js.map +1 -1
  81. package/dist/src/commands/locks.d.ts +8 -0
  82. package/dist/src/commands/locks.js +160 -0
  83. package/dist/src/commands/locks.js.map +1 -0
  84. package/dist/src/commands/metadata-category-configs.d.ts +12 -0
  85. package/dist/src/commands/metadata-category-configs.js +112 -0
  86. package/dist/src/commands/metadata-category-configs.js.map +1 -0
  87. package/dist/src/commands/metadata.d.ts +2 -0
  88. package/dist/src/commands/metadata.js +281 -0
  89. package/dist/src/commands/metadata.js.map +1 -0
  90. package/dist/src/commands/prompts.d.ts +2 -0
  91. package/dist/src/commands/prompts.js +225 -584
  92. package/dist/src/commands/prompts.js.map +1 -1
  93. package/dist/src/commands/rule-sets.d.ts +3 -0
  94. package/dist/src/commands/rule-sets.js +272 -0
  95. package/dist/src/commands/rule-sets.js.map +1 -0
  96. package/dist/src/commands/scripts.d.ts +20 -0
  97. package/dist/src/commands/scripts.js +554 -0
  98. package/dist/src/commands/scripts.js.map +1 -0
  99. package/dist/src/commands/secrets.d.ts +2 -0
  100. package/dist/src/commands/secrets.js +108 -0
  101. package/dist/src/commands/secrets.js.map +1 -0
  102. package/dist/src/commands/sessions.d.ts +2 -0
  103. package/dist/src/commands/sessions.js +75 -0
  104. package/dist/src/commands/sessions.js.map +1 -0
  105. package/dist/src/commands/skill.d.ts +2 -0
  106. package/dist/src/commands/skill.js +29 -0
  107. package/dist/src/commands/skill.js.map +1 -0
  108. package/dist/src/commands/sync-app-settings.d.ts +158 -0
  109. package/dist/src/commands/sync-app-settings.js +330 -0
  110. package/dist/src/commands/sync-app-settings.js.map +1 -0
  111. package/dist/src/commands/sync.d.ts +2323 -0
  112. package/dist/src/commands/sync.js +15065 -843
  113. package/dist/src/commands/sync.js.map +1 -1
  114. package/dist/src/commands/tokens.d.ts +2 -0
  115. package/dist/src/commands/tokens.js +130 -21
  116. package/dist/src/commands/tokens.js.map +1 -1
  117. package/dist/src/commands/users.d.ts +2 -0
  118. package/dist/src/commands/users.js +532 -23
  119. package/dist/src/commands/users.js.map +1 -1
  120. package/dist/src/commands/vars.d.ts +8 -0
  121. package/dist/src/commands/vars.js +96 -0
  122. package/dist/src/commands/vars.js.map +1 -0
  123. package/dist/src/commands/waitlist.d.ts +2 -0
  124. package/dist/src/commands/waitlist.js +10 -10
  125. package/dist/src/commands/waitlist.js.map +1 -1
  126. package/dist/src/commands/webhooks.d.ts +2 -0
  127. package/dist/src/commands/webhooks.js +562 -0
  128. package/dist/src/commands/webhooks.js.map +1 -0
  129. package/dist/src/commands/workflows.d.ts +116 -0
  130. package/dist/src/commands/workflows.js +1583 -681
  131. package/dist/src/commands/workflows.js.map +1 -1
  132. package/dist/src/lib/access-rule-display.d.ts +21 -0
  133. package/dist/src/lib/access-rule-display.js +34 -0
  134. package/dist/src/lib/access-rule-display.js.map +1 -0
  135. package/dist/src/lib/api-client.d.ts +1936 -0
  136. package/dist/src/lib/api-client.js +1826 -138
  137. package/dist/src/lib/api-client.js.map +1 -1
  138. package/dist/src/lib/app-settings-descriptor.d.ts +263 -0
  139. package/dist/src/lib/app-settings-descriptor.js +575 -0
  140. package/dist/src/lib/app-settings-descriptor.js.map +1 -0
  141. package/dist/src/lib/auth-flow.d.ts +8 -0
  142. package/dist/src/lib/batch.d.ts +26 -0
  143. package/dist/src/lib/batch.js +32 -0
  144. package/dist/src/lib/batch.js.map +1 -0
  145. package/dist/src/lib/block-layout.d.ts +160 -0
  146. package/dist/src/lib/block-layout.js +451 -0
  147. package/dist/src/lib/block-layout.js.map +1 -0
  148. package/dist/src/lib/canonical-json.d.ts +12 -0
  149. package/dist/src/lib/canonical-json.js +35 -0
  150. package/dist/src/lib/canonical-json.js.map +1 -0
  151. package/dist/src/lib/channel.d.ts +30 -0
  152. package/dist/src/lib/channel.js +68 -0
  153. package/dist/src/lib/channel.js.map +1 -0
  154. package/dist/src/lib/cli-manifest.d.ts +68 -0
  155. package/dist/src/lib/cli-manifest.js +71 -0
  156. package/dist/src/lib/cli-manifest.js.map +1 -0
  157. package/dist/src/lib/codegen-shared/generatedFiles.d.ts +101 -0
  158. package/dist/src/lib/codegen-shared/generatedFiles.js +191 -0
  159. package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
  160. package/dist/src/lib/codegen-shared/prettierStable.d.ts +262 -0
  161. package/dist/src/lib/codegen-shared/prettierStable.js +610 -0
  162. package/dist/src/lib/codegen-shared/prettierStable.js.map +1 -0
  163. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +68 -0
  164. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +168 -0
  165. package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
  166. package/dist/src/lib/config-object-descriptor.d.ts +127 -0
  167. package/dist/src/lib/config-object-descriptor.js +658 -0
  168. package/dist/src/lib/config-object-descriptor.js.map +1 -0
  169. package/dist/src/lib/config-payload.d.ts +85 -0
  170. package/dist/src/lib/config-payload.js +116 -0
  171. package/dist/src/lib/config-payload.js.map +1 -0
  172. package/dist/src/lib/config-surface.d.ts +130 -0
  173. package/dist/src/lib/config-surface.js +300 -0
  174. package/dist/src/lib/config-surface.js.map +1 -0
  175. package/dist/src/lib/config-toml.d.ts +10 -0
  176. package/dist/src/lib/config-toml.js +42 -0
  177. package/dist/src/lib/config-toml.js.map +1 -0
  178. package/dist/src/lib/config.d.ts +53 -0
  179. package/dist/src/lib/config.js +92 -53
  180. package/dist/src/lib/config.js.map +1 -1
  181. package/dist/src/lib/confirm-prompt.d.ts +83 -0
  182. package/dist/src/lib/confirm-prompt.js +110 -0
  183. package/dist/src/lib/confirm-prompt.js.map +1 -0
  184. package/dist/src/lib/constants.d.ts +11 -0
  185. package/dist/src/lib/constants.js +12 -0
  186. package/dist/src/lib/constants.js.map +1 -0
  187. package/dist/src/lib/crash-handlers.d.ts +20 -0
  188. package/dist/src/lib/crash-handlers.js +49 -0
  189. package/dist/src/lib/crash-handlers.js.map +1 -0
  190. package/dist/src/lib/credentials-store.d.ts +89 -0
  191. package/dist/src/lib/credentials-store.js +330 -0
  192. package/dist/src/lib/credentials-store.js.map +1 -0
  193. package/dist/src/lib/csv.d.ts +47 -0
  194. package/dist/src/lib/csv.js +172 -0
  195. package/dist/src/lib/csv.js.map +1 -0
  196. package/dist/src/lib/data-input.d.ts +23 -0
  197. package/dist/src/lib/data-input.js +50 -0
  198. package/dist/src/lib/data-input.js.map +1 -0
  199. package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
  200. package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
  201. package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
  202. package/dist/src/lib/db-codegen/dbGenerator.d.ts +67 -0
  203. package/dist/src/lib/db-codegen/dbGenerator.js +170 -0
  204. package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
  205. package/dist/src/lib/db-codegen/dbNaming.d.ts +87 -0
  206. package/dist/src/lib/db-codegen/dbNaming.js +180 -0
  207. package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
  208. package/dist/src/lib/db-codegen/dbTemplates.d.ts +272 -0
  209. package/dist/src/lib/db-codegen/dbTemplates.js +480 -0
  210. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
  211. package/dist/src/lib/db-codegen/dbTsTypes.d.ts +73 -0
  212. package/dist/src/lib/db-codegen/dbTsTypes.js +139 -0
  213. package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
  214. package/dist/src/lib/db-codegen/dbTypeIR.d.ts +146 -0
  215. package/dist/src/lib/db-codegen/dbTypeIR.js +517 -0
  216. package/dist/src/lib/db-codegen/dbTypeIR.js.map +1 -0
  217. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.d.ts +112 -0
  218. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js +211 -0
  219. package/dist/src/lib/db-codegen/generated-operation-def-descriptor.js.map +1 -0
  220. package/dist/src/lib/env-resolver-core.d.ts +147 -0
  221. package/dist/src/lib/env-resolver-core.js +265 -0
  222. package/dist/src/lib/env-resolver-core.js.map +1 -0
  223. package/dist/src/lib/env-resolver.d.ts +84 -0
  224. package/dist/src/lib/env-resolver.js +133 -0
  225. package/dist/src/lib/env-resolver.js.map +1 -0
  226. package/dist/src/lib/fetch.d.ts +5 -0
  227. package/dist/src/lib/generated-allowlist.d.ts +28 -0
  228. package/dist/src/lib/generated-allowlist.js +277 -0
  229. package/dist/src/lib/generated-allowlist.js.map +1 -0
  230. package/dist/src/lib/generated-config-surfaces.d.ts +682 -0
  231. package/dist/src/lib/generated-config-surfaces.js +4058 -0
  232. package/dist/src/lib/generated-config-surfaces.js.map +1 -0
  233. package/dist/src/lib/generated-template-lint.d.ts +212 -0
  234. package/dist/src/lib/generated-template-lint.js +624 -0
  235. package/dist/src/lib/generated-template-lint.js.map +1 -0
  236. package/dist/src/lib/init-adopt.d.ts +16 -0
  237. package/dist/src/lib/init-adopt.js +34 -0
  238. package/dist/src/lib/init-adopt.js.map +1 -0
  239. package/dist/src/lib/init-assets.d.ts +39 -0
  240. package/dist/src/lib/init-assets.js +97 -0
  241. package/dist/src/lib/init-assets.js.map +1 -0
  242. package/dist/src/lib/init-config.d.ts +98 -0
  243. package/dist/src/lib/init-config.js +186 -0
  244. package/dist/src/lib/init-config.js.map +1 -0
  245. package/dist/src/lib/init-ios-links.d.ts +50 -0
  246. package/dist/src/lib/init-ios-links.js +153 -0
  247. package/dist/src/lib/init-ios-links.js.map +1 -0
  248. package/dist/src/lib/init-plan.d.ts +80 -0
  249. package/dist/src/lib/init-plan.js +95 -0
  250. package/dist/src/lib/init-plan.js.map +1 -0
  251. package/dist/src/lib/init-production-env.d.ts +48 -0
  252. package/dist/src/lib/init-production-env.js +59 -0
  253. package/dist/src/lib/init-production-env.js.map +1 -0
  254. package/dist/src/lib/init-schema.d.ts +74 -0
  255. package/dist/src/lib/init-schema.js +358 -0
  256. package/dist/src/lib/init-schema.js.map +1 -0
  257. package/dist/src/lib/init-xcode.d.ts +33 -0
  258. package/dist/src/lib/init-xcode.js +114 -0
  259. package/dist/src/lib/init-xcode.js.map +1 -0
  260. package/dist/src/lib/integration-request-config.d.ts +30 -0
  261. package/dist/src/lib/integration-request-config.js +145 -0
  262. package/dist/src/lib/integration-request-config.js.map +1 -0
  263. package/dist/src/lib/local-state.d.ts +55 -0
  264. package/dist/src/lib/local-state.js +167 -0
  265. package/dist/src/lib/local-state.js.map +1 -0
  266. package/dist/src/lib/log-inspection.d.ts +568 -0
  267. package/dist/src/lib/log-inspection.js +639 -0
  268. package/dist/src/lib/log-inspection.js.map +1 -0
  269. package/dist/src/lib/migration-nag.d.ts +49 -0
  270. package/dist/src/lib/migration-nag.js +163 -0
  271. package/dist/src/lib/migration-nag.js.map +1 -0
  272. package/dist/src/lib/object-status-filter.d.ts +22 -0
  273. package/dist/src/lib/object-status-filter.js +45 -0
  274. package/dist/src/lib/object-status-filter.js.map +1 -0
  275. package/dist/src/lib/output.d.ts +109 -0
  276. package/dist/src/lib/output.js +191 -8
  277. package/dist/src/lib/output.js.map +1 -1
  278. package/dist/src/lib/package-manager.d.ts +140 -0
  279. package/dist/src/lib/package-manager.js +305 -0
  280. package/dist/src/lib/package-manager.js.map +1 -0
  281. package/dist/src/lib/paginate.d.ts +83 -0
  282. package/dist/src/lib/paginate.js +95 -0
  283. package/dist/src/lib/paginate.js.map +1 -0
  284. package/dist/src/lib/platform-owned.d.ts +63 -0
  285. package/dist/src/lib/platform-owned.js +85 -0
  286. package/dist/src/lib/platform-owned.js.map +1 -0
  287. package/dist/src/lib/project-config.d.ts +97 -0
  288. package/dist/src/lib/project-config.js +217 -0
  289. package/dist/src/lib/project-config.js.map +1 -0
  290. package/dist/src/lib/query-operators.d.ts +43 -0
  291. package/dist/src/lib/query-operators.js +80 -0
  292. package/dist/src/lib/query-operators.js.map +1 -0
  293. package/dist/src/lib/record-filter.d.ts +18 -0
  294. package/dist/src/lib/record-filter.js +55 -0
  295. package/dist/src/lib/record-filter.js.map +1 -0
  296. package/dist/src/lib/refresh-admin-credentials.d.ts +65 -0
  297. package/dist/src/lib/refresh-admin-credentials.js +103 -0
  298. package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
  299. package/dist/src/lib/resolve-init-dev-port.d.ts +56 -0
  300. package/dist/src/lib/resolve-init-dev-port.js +55 -0
  301. package/dist/src/lib/resolve-init-dev-port.js.map +1 -0
  302. package/dist/src/lib/resolve-init-server.d.ts +64 -0
  303. package/dist/src/lib/resolve-init-server.js +77 -0
  304. package/dist/src/lib/resolve-init-server.js.map +1 -0
  305. package/dist/src/lib/resolve-platform.d.ts +74 -0
  306. package/dist/src/lib/resolve-platform.js +105 -0
  307. package/dist/src/lib/resolve-platform.js.map +1 -0
  308. package/dist/src/lib/run-status.d.ts +19 -0
  309. package/dist/src/lib/run-status.generated.d.ts +39 -0
  310. package/dist/src/lib/run-status.generated.js +66 -0
  311. package/dist/src/lib/run-status.generated.js.map +1 -0
  312. package/dist/src/lib/run-status.js +19 -0
  313. package/dist/src/lib/run-status.js.map +1 -0
  314. package/dist/src/lib/server-text-normalization.d.ts +51 -0
  315. package/dist/src/lib/server-text-normalization.js +90 -0
  316. package/dist/src/lib/server-text-normalization.js.map +1 -0
  317. package/dist/src/lib/server-url.d.ts +22 -0
  318. package/dist/src/lib/server-url.js +33 -0
  319. package/dist/src/lib/server-url.js.map +1 -0
  320. package/dist/src/lib/signing-secret-status.d.ts +81 -0
  321. package/dist/src/lib/signing-secret-status.js +116 -0
  322. package/dist/src/lib/signing-secret-status.js.map +1 -0
  323. package/dist/src/lib/skill-installer.d.ts +25 -0
  324. package/dist/src/lib/skill-installer.js +266 -0
  325. package/dist/src/lib/skill-installer.js.map +1 -0
  326. package/dist/src/lib/snapshots.d.ts +99 -0
  327. package/dist/src/lib/snapshots.js +357 -0
  328. package/dist/src/lib/snapshots.js.map +1 -0
  329. package/dist/src/lib/swift-codegen/dbGenerator.d.ts +113 -0
  330. package/dist/src/lib/swift-codegen/dbGenerator.js +914 -0
  331. package/dist/src/lib/swift-codegen/dbGenerator.js.map +1 -0
  332. package/dist/src/lib/swift-codegen/dbSwiftTypes.d.ts +42 -0
  333. package/dist/src/lib/swift-codegen/dbSwiftTypes.js +100 -0
  334. package/dist/src/lib/swift-codegen/dbSwiftTypes.js.map +1 -0
  335. package/dist/src/lib/swift-codegen/generator.d.ts +94 -0
  336. package/dist/src/lib/swift-codegen/generator.js +440 -0
  337. package/dist/src/lib/swift-codegen/generator.js.map +1 -0
  338. package/dist/src/lib/swift-codegen/schemaToSwift.d.ts +72 -0
  339. package/dist/src/lib/swift-codegen/schemaToSwift.js +644 -0
  340. package/dist/src/lib/swift-codegen/schemaToSwift.js.map +1 -0
  341. package/dist/src/lib/swift-codegen/siblingSymbols.d.ts +94 -0
  342. package/dist/src/lib/swift-codegen/siblingSymbols.js +155 -0
  343. package/dist/src/lib/swift-codegen/siblingSymbols.js.map +1 -0
  344. package/dist/src/lib/swift-codegen/swiftNaming.d.ts +85 -0
  345. package/dist/src/lib/swift-codegen/swiftNaming.js +198 -0
  346. package/dist/src/lib/swift-codegen/swiftNaming.js.map +1 -0
  347. package/dist/src/lib/sync-dir-selector.d.ts +21 -0
  348. package/dist/src/lib/sync-dir-selector.js +30 -0
  349. package/dist/src/lib/sync-dir-selector.js.map +1 -0
  350. package/dist/src/lib/sync-paths.d.ts +111 -0
  351. package/dist/src/lib/sync-paths.js +198 -0
  352. package/dist/src/lib/sync-paths.js.map +1 -0
  353. package/dist/src/lib/sync-resource-types.d.ts +544 -0
  354. package/dist/src/lib/sync-resource-types.js +975 -0
  355. package/dist/src/lib/sync-resource-types.js.map +1 -0
  356. package/dist/src/lib/sync-selectors.d.ts +95 -0
  357. package/dist/src/lib/sync-selectors.js +228 -0
  358. package/dist/src/lib/sync-selectors.js.map +1 -0
  359. package/dist/src/lib/template.d.ts +170 -0
  360. package/dist/src/lib/template.js +484 -68
  361. package/dist/src/lib/template.js.map +1 -1
  362. package/dist/src/lib/test-case-keys.d.ts +29 -0
  363. package/dist/src/lib/test-case-keys.js +55 -0
  364. package/dist/src/lib/test-case-keys.js.map +1 -0
  365. package/dist/src/lib/test-case-variables.d.ts +15 -0
  366. package/dist/src/lib/test-case-variables.js +29 -0
  367. package/dist/src/lib/test-case-variables.js.map +1 -0
  368. package/dist/src/lib/token-inject.d.ts +56 -0
  369. package/dist/src/lib/token-inject.js +204 -0
  370. package/dist/src/lib/token-inject.js.map +1 -0
  371. package/dist/src/lib/toml-database-config.d.ts +123 -0
  372. package/dist/src/lib/toml-database-config.js +527 -0
  373. package/dist/src/lib/toml-database-config.js.map +1 -0
  374. package/dist/src/lib/toml-metadata-config.d.ts +151 -0
  375. package/dist/src/lib/toml-metadata-config.js +476 -0
  376. package/dist/src/lib/toml-metadata-config.js.map +1 -0
  377. package/dist/src/lib/toml-native-form.d.ts +46 -0
  378. package/dist/src/lib/toml-native-form.js +78 -0
  379. package/dist/src/lib/toml-native-form.js.map +1 -0
  380. package/dist/src/lib/toml-params-validator.d.ts +129 -0
  381. package/dist/src/lib/toml-params-validator.js +298 -0
  382. package/dist/src/lib/toml-params-validator.js.map +1 -0
  383. package/dist/src/lib/toml-scalar-edit.d.ts +43 -0
  384. package/dist/src/lib/toml-scalar-edit.js +283 -0
  385. package/dist/src/lib/toml-scalar-edit.js.map +1 -0
  386. package/dist/src/lib/user-selector.d.ts +24 -0
  387. package/dist/src/lib/user-selector.js +33 -0
  388. package/dist/src/lib/user-selector.js.map +1 -0
  389. package/dist/src/lib/version-check.d.ts +35 -0
  390. package/dist/src/lib/version-check.js +241 -0
  391. package/dist/src/lib/version-check.js.map +1 -0
  392. package/dist/src/lib/watch.d.ts +121 -0
  393. package/dist/src/lib/watch.js +169 -0
  394. package/dist/src/lib/watch.js.map +1 -0
  395. package/dist/src/lib/workflow-apply.d.ts +110 -0
  396. package/dist/src/lib/workflow-apply.js +164 -0
  397. package/dist/src/lib/workflow-apply.js.map +1 -0
  398. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
  399. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
  400. package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
  401. package/dist/src/lib/workflow-codegen/generator.d.ts +96 -0
  402. package/dist/src/lib/workflow-codegen/generator.js +361 -0
  403. package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
  404. package/dist/src/lib/workflow-codegen/invokerIR.d.ts +94 -0
  405. package/dist/src/lib/workflow-codegen/invokerIR.js +76 -0
  406. package/dist/src/lib/workflow-codegen/invokerIR.js.map +1 -0
  407. package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
  408. package/dist/src/lib/workflow-codegen/naming.js +81 -0
  409. package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
  410. package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +80 -0
  411. package/dist/src/lib/workflow-codegen/schemaToTs.js +303 -0
  412. package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
  413. package/dist/src/lib/workflow-config-apply.d.ts +70 -0
  414. package/dist/src/lib/workflow-config-apply.js +137 -0
  415. package/dist/src/lib/workflow-config-apply.js.map +1 -0
  416. package/dist/src/lib/workflow-config-sidecar.d.ts +63 -0
  417. package/dist/src/lib/workflow-config-sidecar.js +96 -0
  418. package/dist/src/lib/workflow-config-sidecar.js.map +1 -0
  419. package/dist/src/lib/workflow-defaults.d.ts +29 -0
  420. package/dist/src/lib/workflow-defaults.js +41 -0
  421. package/dist/src/lib/workflow-defaults.js.map +1 -0
  422. package/dist/src/lib/workflow-fragments.d.ts +64 -0
  423. package/dist/src/lib/workflow-fragments.js +342 -0
  424. package/dist/src/lib/workflow-fragments.js.map +1 -0
  425. package/dist/src/lib/workflow-include-preserve.d.ts +76 -0
  426. package/dist/src/lib/workflow-include-preserve.js +286 -0
  427. package/dist/src/lib/workflow-include-preserve.js.map +1 -0
  428. package/dist/src/lib/workflow-payload.d.ts +98 -0
  429. package/dist/src/lib/workflow-payload.js +178 -0
  430. package/dist/src/lib/workflow-payload.js.map +1 -0
  431. package/dist/src/lib/workflow-toml-validator.d.ts +202 -0
  432. package/dist/src/lib/workflow-toml-validator.js +757 -0
  433. package/dist/src/lib/workflow-toml-validator.js.map +1 -0
  434. package/dist/src/types/index.d.ts +581 -0
  435. package/dist/src/validators.d.ts +65 -0
  436. package/dist/src/validators.js +64 -0
  437. package/dist/src/validators.js.map +1 -0
  438. package/package.json +32 -8
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from "commander";
3
- import { readFileSync } from "fs";
2
+ import { Command, CommanderError } from "commander";
3
+ import { readFileSync, writeSync } from "fs";
4
4
  import { fileURLToPath } from "url";
5
5
  import { dirname, resolve } from "path";
6
6
  import { registerInitCommand } from "../src/commands/init.js";
@@ -9,86 +9,359 @@ import { registerAppsCommands } from "../src/commands/apps.js";
9
9
  import { registerUsersCommands } from "../src/commands/users.js";
10
10
  import { registerWaitlistCommands } from "../src/commands/waitlist.js";
11
11
  import { registerIntegrationsCommands } from "../src/commands/integrations.js";
12
+ import { registerWebhooksCommands } from "../src/commands/webhooks.js";
13
+ import { registerConnectionsCommands } from "../src/commands/connections.js";
14
+ import { registerSessionsCommands } from "../src/commands/sessions.js";
15
+ import { registerCronTriggersCommands } from "../src/commands/cron-triggers.js";
16
+ import { registerLocksCommands } from "../src/commands/locks.js";
17
+ import { registerMetadataCommands } from "../src/commands/metadata.js";
12
18
  import { registerPromptsCommands } from "../src/commands/prompts.js";
19
+ import { registerScriptsCommands } from "../src/commands/scripts.js";
13
20
  import { registerWorkflowsCommands } from "../src/commands/workflows.js";
14
21
  import { registerAdminsCommands } from "../src/commands/admins.js";
22
+ import { registerFeatureFlagsCommands } from "../src/commands/feature-flags.js";
15
23
  import { registerCatalogCommands } from "../src/commands/catalog.js";
16
24
  import { registerAnalyticsCommands } from "../src/commands/analytics.js";
17
- import { registerSyncCommands } from "../src/commands/sync.js";
18
- import { registerLlmCommands } from "../src/commands/llm.js";
25
+ import { registerConfigSyncCommands } from "../src/commands/sync.js";
26
+ import { registerConfigCommands } from "../src/commands/config.js";
19
27
  import { registerComparisonsCommands } from "../src/commands/comparisons.js";
20
28
  import { registerTokensCommands } from "../src/commands/tokens.js";
21
29
  import { registerDatabasesCommands } from "../src/commands/databases.js";
22
30
  import { registerGroupsCommands } from "../src/commands/groups.js";
31
+ import { registerRuleSetsCommands } from "../src/commands/rule-sets.js";
32
+ import { registerGroupTypeConfigsCommands } from "../src/commands/group-type-configs.js";
33
+ import { registerDatabaseTypeConfigsCommands } from "../src/commands/database-type-configs.js";
23
34
  import { registerGuidesCommands } from "../src/commands/guides.js";
24
35
  import { registerDocumentsCommands } from "../src/commands/documents.js";
36
+ import chalk from "chalk";
37
+ import { registerEmailTemplatesCommands } from "../src/commands/email-templates.js";
38
+ import { registerCollectionsCommands } from "../src/commands/collections.js";
39
+ import { registerCollectionTypeConfigsCommands } from "../src/commands/collection-type-configs.js";
40
+ import { registerMetadataCategoryConfigsCommands } from "../src/commands/metadata-category-configs.js";
25
41
  import { error } from "../src/lib/output.js";
42
+ import { installGlobalCrashHandlers } from "../src/lib/crash-handlers.js";
43
+ import { buildCliManifest } from "../src/lib/cli-manifest.js";
26
44
  import { ApiError } from "../src/lib/api-client.js";
45
+ import { checkForUpdate } from "../src/lib/version-check.js";
46
+ import { loadCredentials } from "../src/lib/config.js";
47
+ import { checkSkillStatus } from "../src/lib/skill-installer.js";
48
+ import { registerSkillCommands } from "../src/commands/skill.js";
49
+ import { registerSecretsCommands } from "../src/commands/secrets.js";
50
+ import { registerVarsCommands } from "../src/commands/vars.js";
51
+ import { registerBlobBucketsCommands } from "../src/commands/blob-buckets.js";
52
+ import { registerEnvCommands } from "../src/commands/env.js";
53
+ import { setCurrentEnvName, getCurrentEnvNameSafe, getProjectConfig, } from "../src/lib/env-resolver.js";
54
+ import { ProjectConfigError, PROJECT_CONFIG_DISPLAY_NAME, findProjectConfigPath } from "../src/lib/project-config.js";
55
+ import { maybeWarnLegacyMigration } from "../src/lib/migration-nag.js";
56
+ // Install global crash handlers first thing. Without these, an error that
57
+ // escapes the top-level `.catch` below — e.g. ERR_USE_AFTER_CLOSE thrown from
58
+ // inside an inquirer event callback when stdin isn't a usable TTY — makes Node
59
+ // print only its bare `Node.js vX` banner and die with no message (issue #972).
60
+ installGlobalCrashHandlers();
27
61
  const __filename = fileURLToPath(import.meta.url);
28
62
  const __dirname = dirname(__filename);
29
63
  const pkg = JSON.parse(readFileSync(resolve(__dirname, "../../package.json"), "utf-8"));
64
+ /**
65
+ * Write a string to a file descriptor synchronously, in full, before
66
+ * returning. Handles two pitfalls of a single `fs.writeSync` on a pipe:
67
+ * - partial writes: `writeSync` may write fewer bytes than requested (e.g.
68
+ * only what fits in the OS pipe buffer), so we loop on the returned count;
69
+ * - `EAGAIN` on a non-blocking fd with a slow/full consumer: retry instead of
70
+ * throwing.
71
+ * This guarantees the whole payload reaches the kernel before the caller
72
+ * exits, with no dependency on the event loop draining stdout.
73
+ */
74
+ function writeAllSync(fd, text) {
75
+ const buf = Buffer.from(text, "utf-8");
76
+ let offset = 0;
77
+ while (offset < buf.length) {
78
+ try {
79
+ offset += writeSync(fd, buf, offset, buf.length - offset);
80
+ }
81
+ catch (err) {
82
+ // Retry on EAGAIN (non-blocking fd, consumer not ready yet). Rethrow
83
+ // anything else.
84
+ if (err.code === "EAGAIN")
85
+ continue;
86
+ throw err;
87
+ }
88
+ }
89
+ }
90
+ const isVersionFlag = process.argv.includes("--version") || process.argv.includes("-V");
91
+ const subcommand = process.argv[2];
92
+ const isJsonOutput = process.argv.includes("--json");
93
+ const skipHeader = isVersionFlag || isJsonOutput || subcommand === "login" || subcommand === "logout" || subcommand === "token";
94
+ // --env <name> is a global option that must be applied BEFORE any command
95
+ // code runs, because loadCredentials() and getServerUrl() both consult the
96
+ // active environment. Commander only parses options during .parse(), so we
97
+ // pre-extract it here via a tiny manual scan. The actual option is still
98
+ // registered on the program below so it appears in --help.
99
+ function preParseEnvFlag() {
100
+ const argv = process.argv;
101
+ for (let i = 2; i < argv.length; i++) {
102
+ const a = argv[i];
103
+ if (a === "--env" || a === "-e") {
104
+ return argv[i + 1] || null;
105
+ }
106
+ if (a.startsWith("--env="))
107
+ return a.slice("--env=".length);
108
+ }
109
+ return null;
110
+ }
111
+ const preParsedEnv = preParseEnvFlag();
112
+ if (preParsedEnv) {
113
+ setCurrentEnvName(preParsedEnv);
114
+ }
115
+ // Surface project-config errors loudly and early. A broken config file
116
+ // should fail fast with a clear message rather than producing cryptic
117
+ // "Not logged in" errors deeper in.
118
+ try {
119
+ getProjectConfig();
120
+ }
121
+ catch (err) {
122
+ if (err instanceof ProjectConfigError) {
123
+ error(err.message);
124
+ if (err.path)
125
+ error(` at ${err.path}`);
126
+ process.exit(1);
127
+ }
128
+ throw err;
129
+ }
130
+ // If the user explicitly passed --env <name>, verify it resolves to a
131
+ // real environment NOW so we don't silently fall back to legacy creds.
132
+ if (preParsedEnv) {
133
+ try {
134
+ const project = getProjectConfig();
135
+ if (!project) {
136
+ error(`--env was given but no ${PROJECT_CONFIG_DISPLAY_NAME} was found in this directory or any parent.`);
137
+ process.exit(1);
138
+ }
139
+ if (!project.environments[preParsedEnv]) {
140
+ const available = Object.keys(project.environments).join(", ") || "(none)";
141
+ error(`Environment "${preParsedEnv}" is not defined in ${PROJECT_CONFIG_DISPLAY_NAME}. Available: ${available}`);
142
+ process.exit(1);
143
+ }
144
+ }
145
+ catch (err) {
146
+ if (err instanceof ProjectConfigError) {
147
+ error(err.message);
148
+ process.exit(1);
149
+ }
150
+ throw err;
151
+ }
152
+ }
153
+ if (!skipHeader) {
154
+ const creds = loadCredentials();
155
+ // In project mode the env may declare an appId even before login.
156
+ // Show that so the header is useful during `env add` / `login` flows.
157
+ const envNameForHeader = getCurrentEnvNameSafe();
158
+ let headerAppId = creds?.currentAppId;
159
+ let headerAppName = creds?.currentAppName;
160
+ if (envNameForHeader && (!headerAppId || !headerAppName)) {
161
+ try {
162
+ const envCfg = getProjectConfig()?.environments[envNameForHeader];
163
+ headerAppId = headerAppId || envCfg?.appId;
164
+ headerAppName = headerAppName || envCfg?.appName;
165
+ }
166
+ catch {
167
+ // ignore
168
+ }
169
+ }
170
+ const appInfo = headerAppName
171
+ ? `${headerAppName} (${headerAppId})`
172
+ : headerAppId || "None set";
173
+ // Prefer the active environment's apiUrl so the header stays correct
174
+ // even before you've logged in. Only fall back to credentials' serverUrl
175
+ // in legacy mode.
176
+ let server = creds?.serverUrl;
177
+ if (envNameForHeader) {
178
+ try {
179
+ const env = getProjectConfig()?.environments[envNameForHeader];
180
+ if (env)
181
+ server = env.apiUrl;
182
+ }
183
+ catch {
184
+ // fall through
185
+ }
186
+ }
187
+ server = server || "Not configured";
188
+ const projectConfigPath = findProjectConfigPath();
189
+ const envLabel = envNameForHeader
190
+ ? ` | Env: ${envNameForHeader}`
191
+ : projectConfigPath
192
+ ? " | Env: (none selected)"
193
+ : "";
194
+ // The banner is a diagnostic, not data, so it goes to stderr alongside
195
+ // `info`/`warn`/`success`/`keyValue` (the stream-routing convention in
196
+ // `src/lib/output.ts`, issue #695). `skipHeader` already silences it under
197
+ // `--json`, but always-JSON commands with no `--json` flag — `documents
198
+ // dump` — were still emitting it above their payload, so `primitive
199
+ // documents dump <doc> | jq .` failed to parse (issue #2357).
200
+ console.error(chalk.dim(`CLI Version: ${pkg.version}${envLabel} | App: ${appInfo} | Server: ${server}`));
201
+ console.error();
202
+ }
203
+ // Nudge legacy-mode users (no .primitive/config.json, but a working
204
+ // `~/.primitive/credentials.json` + a sync marker in CWD) to migrate.
205
+ // Wholly self-contained: rate-limited to once per 24h, opt-out via
206
+ // PRIMITIVE_NO_MIGRATE_NAG=1, silent in CI / non-TTY. See #552.
207
+ maybeWarnLegacyMigration({ argv: process.argv });
30
208
  const program = new Command();
31
209
  program
32
210
  .name("primitive")
211
+ .exitOverride()
33
212
  .description(`CLI for administering Primitive applications.
34
213
 
35
214
  Manage apps, users, integrations, prompts, workflows, and more from the command line.
36
215
  Supports TOML-based configuration sync for version-controlled app settings.`)
37
216
  .version(pkg.version)
217
+ // Global --env flag. Parsed above in preParseEnvFlag too; declaring it
218
+ // here so commander shows it in help output and forwards it to
219
+ // subcommands.
220
+ .option("-e, --env <name>", "Named environment from .primitive/config.json (e.g. dev, prod)")
38
221
  .addHelpText("after", `
39
222
  Examples:
40
- $ primitive login # Authenticate via browser OAuth
41
- $ primitive use "My App" # Set working app context
42
- $ primitive users list # List users (uses current app)
43
- $ primitive integrations list --json # JSON output for scripting
44
- $ primitive sync pull --dir ./config # Export config to TOML files
223
+ $ primitive init my-app # Scaffold a new project + .primitive/config.json
224
+ $ primitive env list # Show environments
225
+ $ primitive env add prod --api-url ... # Add a new environment
226
+ $ primitive --env prod users list # Run a command against a specific env
227
+ $ primitive login # Authenticate via browser OAuth
228
+ $ primitive config pull # Pull config (auto per-env path)
229
+
230
+ Project configuration (.primitive/config.json):
231
+ In a directory with a .primitive/config.json (or any subdirectory of one),
232
+ the CLI operates in project mode: credentials and sync state live under
233
+ <projectRoot>/.primitive/ and each named environment is isolated.
234
+ Without a .primitive/config.json the CLI runs in legacy mode, reading
235
+ credentials from ~/.primitive/credentials.json.
45
236
 
46
- Authentication:
47
- Credentials are stored in ~/.primitive/credentials.json
237
+ Primitive environment selection (project mode):
238
+ 1. --env <name> flag
239
+ 2. PRIMITIVE_ENV env var
240
+ 3. This machine's selection in .primitive/local.json ('primitive env use')
241
+ 4. "defaultEnvironment" in .primitive/config.json (the committed team default)
242
+ 5. The only environment, if there's exactly one
48
243
 
49
244
  App Context:
50
- Set with 'primitive use <app>' to avoid passing --app to every command.
51
- Most commands accept --app flag to override the current context.
245
+ Bind an app to an environment via "appId" in .primitive/config.json, or
246
+ run 'primitive use <app>' to set one in credentials. Most commands accept
247
+ --app to override.
52
248
 
53
249
  Documentation:
54
- See https://primitive-labs.github.io/primitive-docs/ for full documentation.
250
+ See https://primitive-labs.github.io/primitive-docs-site/ for full documentation.
55
251
  `);
56
252
  // Register all command groups (init first, then logically grouped)
57
253
  registerInitCommand(program);
254
+ registerEnvCommands(program);
58
255
  registerAuthCommands(program);
59
256
  registerAppsCommands(program);
60
257
  registerUsersCommands(program);
61
258
  registerWaitlistCommands(program);
62
259
  registerIntegrationsCommands(program);
260
+ registerWebhooksCommands(program);
261
+ registerConnectionsCommands(program);
262
+ registerSessionsCommands(program);
263
+ registerCronTriggersCommands(program);
264
+ registerLocksCommands(program);
265
+ registerMetadataCommands(program);
63
266
  registerPromptsCommands(program);
267
+ registerScriptsCommands(program);
64
268
  registerWorkflowsCommands(program);
65
269
  registerAdminsCommands(program);
270
+ registerFeatureFlagsCommands(program);
66
271
  registerCatalogCommands(program);
67
272
  registerAnalyticsCommands(program);
68
- registerSyncCommands(program);
69
- registerLlmCommands(program);
273
+ // One noun owns the TOML configuration tree (issue #2759): `config` carries
274
+ // the local authoring verbs and the server-reconciling verbs that used to be
275
+ // the `sync` group, so the group is created once and handed on.
276
+ registerConfigSyncCommands(registerConfigCommands(program));
70
277
  registerComparisonsCommands(program);
71
278
  registerTokensCommands(program);
72
279
  registerDatabasesCommands(program);
73
280
  registerGroupsCommands(program);
281
+ registerRuleSetsCommands(program);
282
+ registerGroupTypeConfigsCommands(program);
283
+ registerDatabaseTypeConfigsCommands(program);
74
284
  registerGuidesCommands(program);
75
285
  registerDocumentsCommands(program);
286
+ registerEmailTemplatesCommands(program);
287
+ registerCollectionsCommands(program);
288
+ registerCollectionTypeConfigsCommands(program);
289
+ registerMetadataCategoryConfigsCommands(program);
290
+ registerSkillCommands(program);
291
+ registerSecretsCommands(program);
292
+ registerVarsCommands(program);
293
+ registerBlobBucketsCommands(program);
294
+ // `primitive help --json` — machine-readable command manifest (issue #983).
295
+ //
296
+ // Mechanism: a pre-parse argv guard, NOT a registered `help` subcommand.
297
+ // Commander already injects its own built-in `help [command]`; registering our
298
+ // own would risk clobbering `primitive help <command>`. By special-casing the
299
+ // invocation here — after every register*Commands() call so the full tree is
300
+ // built — we serialize commander's public accessors and exit before parseAsync.
301
+ // It is auth-free, runs offline (no project config / credentials / network),
302
+ // and `--json` already suppresses the header, skill-status nag, and update
303
+ // check (see `isJsonOutput` above), so stdout carries pure JSON.
304
+ //
305
+ // Hidden/undocumented: there is no visible `help --json` entry in human help
306
+ // output; it's discoverable for tooling/agents that know to ask for it.
307
+ if (process.argv[2] === "help" && process.argv.includes("--json")) {
308
+ // Emit the full manifest synchronously, then exit. The naive form — the
309
+ // async `json()` helper (`console.log`) followed by an immediate
310
+ // `process.exit(0)` — races the flush on the documented `primitive help
311
+ // --json | jq` pipe path: the ~365KB manifest far exceeds the 64KB OS pipe
312
+ // buffer, so exiting before the kernel drains it truncates the JSON for
313
+ // piped consumers.
314
+ //
315
+ // Robust fix: write to fd 1 with `fs.writeSync` in a loop. A single
316
+ // `writeSync` is NOT enough — on a non-blocking pipe fd it returns after a
317
+ // *partial* write (only what currently fits in the pipe buffer) without
318
+ // looping, silently dropping the tail; and on a slow consumer it can throw
319
+ // `EAGAIN`. Looping over the returned byte count and retrying on `EAGAIN`
320
+ // guarantees every byte is handed to the kernel before `process.exit(0)`,
321
+ // independent of the event loop. Output is byte-identical to `json()`: the
322
+ // same `JSON.stringify(..., null, 2)` plus a single trailing newline.
323
+ writeAllSync(1, JSON.stringify(buildCliManifest(program, pkg.version), null, 2) + "\n");
324
+ process.exit(0);
325
+ }
76
326
  // Global error handler
77
327
  program.hook("preAction", () => {
78
328
  // Reset API client state before each command
79
329
  });
330
+ // Commands that should never show post-command messages (update check, skill status)
331
+ const suppressPostMessages = isJsonOutput || subcommand === "token";
332
+ async function runPostCommandMessages() {
333
+ if (suppressPostMessages)
334
+ return;
335
+ // Claude Code skill: auto-update if installed, or show hint if not.
336
+ // Skip for `init` (handles its own prompt), `skill` (explicit management),
337
+ // and non-interactive contexts (--json, --version, token, etc.).
338
+ if (!skipHeader && subcommand !== "skill" && subcommand !== "init") {
339
+ await checkSkillStatus();
340
+ }
341
+ await checkForUpdate(pkg.version);
342
+ }
80
343
  // Parse and execute
81
- program.parseAsync(process.argv).catch((err) => {
344
+ program.parseAsync(process.argv)
345
+ .then(async () => {
346
+ await runPostCommandMessages();
347
+ })
348
+ .catch(async (err) => {
349
+ // Commander throws CommanderError for help display, version flag, etc.
350
+ // Run post-command messages then exit with the intended code.
351
+ if (err instanceof CommanderError) {
352
+ await runPostCommandMessages();
353
+ process.exit(err.exitCode);
354
+ }
82
355
  if (err instanceof ApiError) {
83
356
  error(err.message);
84
357
  if (err.statusCode === 401) {
85
358
  error("Try running 'primitive login' to authenticate.");
86
359
  }
360
+ await runPostCommandMessages();
87
361
  process.exit(err.statusCode === 401 ? 2 : 1);
88
362
  }
89
- else {
90
- error(err.message || "An unexpected error occurred");
91
- process.exit(1);
92
- }
363
+ error(err.message || "An unexpected error occurred");
364
+ await runPostCommandMessages();
365
+ process.exit(1);
93
366
  });
94
367
  //# sourceMappingURL=primitive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../bin/primitive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../bin/primitive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerAdminsCommands(program: Command): void;
@@ -1,5 +1,6 @@
1
1
  import { ApiClient } from "../lib/api-client.js";
2
2
  import { success, error, info, keyValue, formatTable, formatId, formatDate, json, divider, } from "../lib/output.js";
3
+ import { confirmPrompt } from "../lib/confirm-prompt.js";
3
4
  export function registerAdminsCommands(program) {
4
5
  const admins = program
5
6
  .command("admins")
@@ -10,6 +11,7 @@ Examples:
10
11
  $ primitive admins search user@example.com
11
12
  $ primitive admins invite newadmin@example.com --limit 5
12
13
  $ primitive admins invitations list
14
+ $ primitive admins deferred-grants list --email user@test.com --app <appId>
13
15
  `);
14
16
  // List all admins
15
17
  admins
@@ -40,7 +42,7 @@ Examples:
40
42
  { header: "LIMIT", key: "appCreationLimit" },
41
43
  { header: "DISABLED", key: "disabledAt", format: (v) => v ? "yes" : "" },
42
44
  ]));
43
- if (result.cursor) {
45
+ if (result.nextCursor) {
44
46
  info("More results available. Use --limit to see more.");
45
47
  }
46
48
  }
@@ -160,15 +162,14 @@ Examples:
160
162
  .option("-y, --yes", "Skip confirmation prompt")
161
163
  .action(async (adminId, options) => {
162
164
  if (!options.yes) {
163
- const inquirer = await import("inquirer");
164
- const { confirm } = await inquirer.default.prompt([
165
- {
166
- type: "confirm",
167
- name: "confirm",
168
- message: `Disable admin ${adminId}?`,
169
- default: false,
170
- },
171
- ]);
165
+ let confirm;
166
+ try {
167
+ confirm = await confirmPrompt(`Disable admin ${adminId}?`);
168
+ }
169
+ catch (err) {
170
+ error(err.message);
171
+ process.exit(1);
172
+ }
172
173
  if (!confirm) {
173
174
  info("Cancelled.");
174
175
  return;
@@ -240,15 +241,14 @@ Examples:
240
241
  .option("-y, --yes", "Skip confirmation prompt")
241
242
  .action(async (invitationId, options) => {
242
243
  if (!options.yes) {
243
- const inquirer = await import("inquirer");
244
- const { confirm } = await inquirer.default.prompt([
245
- {
246
- type: "confirm",
247
- name: "confirm",
248
- message: `Delete invitation ${invitationId}?`,
249
- default: false,
250
- },
251
- ]);
244
+ let confirm;
245
+ try {
246
+ confirm = await confirmPrompt(`Delete invitation ${invitationId}?`);
247
+ }
248
+ catch (err) {
249
+ error(err.message);
250
+ process.exit(1);
251
+ }
252
252
  if (!confirm) {
253
253
  info("Cancelled.");
254
254
  return;
@@ -264,5 +264,124 @@ Examples:
264
264
  process.exit(1);
265
265
  }
266
266
  });
267
+ // Deferred grants subcommand
268
+ const deferredGrants = admins
269
+ .command("deferred-grants")
270
+ .description("Inspect deferred grants (pending document/group grants for users who haven't signed up)");
271
+ deferredGrants
272
+ .command("list")
273
+ .description("List pending deferred grants for an email")
274
+ .option("--email <email>", "Filter by email address (required for efficient lookup)")
275
+ .option("--type <type>", "Filter by type: document or group")
276
+ .option("--app <appId>", "App ID (uses current app if not specified)")
277
+ .option("--limit <n>", "Page size for each server request")
278
+ .option("--cursor <cursor>", "Continuation token from a previous page")
279
+ .option("--json", "Output as JSON")
280
+ .action(async (options) => {
281
+ if (!options.email) {
282
+ error("--email is required for deferred grant lookups.");
283
+ process.exit(1);
284
+ }
285
+ const { resolveAppId } = await import("../lib/config.js");
286
+ let appId;
287
+ try {
288
+ appId = resolveAppId(undefined, options);
289
+ }
290
+ catch {
291
+ error("No app specified. Use --app <appId> or run from an app directory.");
292
+ process.exit(1);
293
+ return;
294
+ }
295
+ const client = new ApiClient();
296
+ try {
297
+ // Follow `nextCursor` to exhaustion so the listing shows every
298
+ // pending grant. The server caps a page at 100 and returns a real
299
+ // position cursor (#1316); a single request would silently stop
300
+ // after the first page.
301
+ const grants = [];
302
+ let cursor = options.cursor;
303
+ do {
304
+ const page = await client.listDeferredGrants(appId, {
305
+ email: options.email,
306
+ type: options.type,
307
+ limit: options.limit ? parseInt(options.limit, 10) : undefined,
308
+ cursor,
309
+ });
310
+ grants.push(...(page.grants ?? []));
311
+ cursor = page.nextCursor ?? undefined;
312
+ } while (cursor);
313
+ if (options.json) {
314
+ json(grants);
315
+ return;
316
+ }
317
+ if (grants.length === 0) {
318
+ info(`No pending deferred grants for ${options.email}.`);
319
+ return;
320
+ }
321
+ info(`Pending deferred grants for ${options.email}:`);
322
+ const rows = grants.map((row) => ({
323
+ ...row,
324
+ _target: row.type === "document"
325
+ ? `doc:${(row.documentId || "").slice(0, 12)}...`
326
+ : `group:${row.groupType}/${row.groupId}`,
327
+ _perm: row.permission || "-",
328
+ }));
329
+ console.log(formatTable(rows, [
330
+ { header: "ID", key: "deferredId", format: formatId },
331
+ { header: "TYPE", key: "type" },
332
+ { header: "EMAIL", key: "email" },
333
+ { header: "TARGET", key: "_target" },
334
+ { header: "PERMISSION", key: "_perm" },
335
+ { header: "CREATED", key: "createdAt", format: formatDate },
336
+ { header: "EXPIRES", key: "expiresAt", format: formatDate },
337
+ ]));
338
+ }
339
+ catch (err) {
340
+ error(err.message);
341
+ process.exit(1);
342
+ }
343
+ });
344
+ deferredGrants
345
+ .command("revoke")
346
+ .description("Revoke a deferred grant")
347
+ .argument("<deferred-id>", "Deferred grant ID to revoke")
348
+ .requiredOption("--type <type>", "Type: document or group")
349
+ .option("--app <appId>", "App ID (uses current app if not specified)")
350
+ .option("-y, --yes", "Skip confirmation prompt")
351
+ .action(async (deferredId, options) => {
352
+ const { resolveAppId } = await import("../lib/config.js");
353
+ let appId;
354
+ try {
355
+ appId = resolveAppId(undefined, options);
356
+ }
357
+ catch {
358
+ error("No app specified. Use --app <appId> or run from an app directory.");
359
+ process.exit(1);
360
+ return;
361
+ }
362
+ if (!options.yes) {
363
+ let confirm;
364
+ try {
365
+ confirm = await confirmPrompt(`Revoke deferred ${options.type} grant ${deferredId}?`);
366
+ }
367
+ catch (err) {
368
+ error(err.message);
369
+ process.exit(1);
370
+ }
371
+ if (!confirm) {
372
+ info("Cancelled.");
373
+ return;
374
+ }
375
+ }
376
+ const client = new ApiClient();
377
+ try {
378
+ await client.revokeDeferredGrant(appId, deferredId, options.type);
379
+ success(`Deferred grant ${deferredId} revoked.`);
380
+ }
381
+ catch (err) {
382
+ error(err.message);
383
+ process.exit(1);
384
+ }
385
+ });
267
386
  }
268
387
  //# sourceMappingURL=admins.js.map