primitive-admin 1.1.0-alpha.4 → 1.1.0-alpha.41

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 (219) hide show
  1. package/README.md +325 -31
  2. package/assets/skill/skills/primitive-platform/SKILL.md +281 -0
  3. package/dist/bin/primitive.d.ts +2 -0
  4. package/dist/bin/primitive.js +268 -16
  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 +123 -18
  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 +464 -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 +55 -13
  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 +422 -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 +34 -35
  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 +178 -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 +515 -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/cron-triggers.d.ts +2 -0
  34. package/dist/src/commands/cron-triggers.js +357 -0
  35. package/dist/src/commands/cron-triggers.js.map +1 -0
  36. package/dist/src/commands/database-types.d.ts +2 -0
  37. package/dist/src/commands/database-types.js +471 -0
  38. package/dist/src/commands/database-types.js.map +1 -0
  39. package/dist/src/commands/databases.d.ts +2 -0
  40. package/dist/src/commands/databases.js +1462 -83
  41. package/dist/src/commands/databases.js.map +1 -1
  42. package/dist/src/commands/documents.d.ts +2 -0
  43. package/dist/src/commands/documents.js +518 -11
  44. package/dist/src/commands/documents.js.map +1 -1
  45. package/dist/src/commands/email-templates.d.ts +2 -0
  46. package/dist/src/commands/email-templates.js +281 -0
  47. package/dist/src/commands/email-templates.js.map +1 -0
  48. package/dist/src/commands/env.d.ts +12 -0
  49. package/dist/src/commands/env.js +260 -0
  50. package/dist/src/commands/env.js.map +1 -0
  51. package/dist/src/commands/group-type-configs.d.ts +2 -0
  52. package/dist/src/commands/group-type-configs.js +181 -0
  53. package/dist/src/commands/group-type-configs.js.map +1 -0
  54. package/dist/src/commands/groups.d.ts +2 -0
  55. package/dist/src/commands/groups.js +48 -45
  56. package/dist/src/commands/groups.js.map +1 -1
  57. package/dist/src/commands/guides.d.ts +159 -0
  58. package/dist/src/commands/guides.js +449 -35
  59. package/dist/src/commands/guides.js.map +1 -1
  60. package/dist/src/commands/init.d.ts +17 -0
  61. package/dist/src/commands/init.js +811 -201
  62. package/dist/src/commands/init.js.map +1 -1
  63. package/dist/src/commands/integrations.d.ts +2 -0
  64. package/dist/src/commands/integrations.js +533 -46
  65. package/dist/src/commands/integrations.js.map +1 -1
  66. package/dist/src/commands/llm.d.ts +2 -0
  67. package/dist/src/commands/llm.js +4 -2
  68. package/dist/src/commands/llm.js.map +1 -1
  69. package/dist/src/commands/metadata.d.ts +2 -0
  70. package/dist/src/commands/metadata.js +194 -0
  71. package/dist/src/commands/metadata.js.map +1 -0
  72. package/dist/src/commands/prompts.d.ts +2 -0
  73. package/dist/src/commands/prompts.js +50 -52
  74. package/dist/src/commands/prompts.js.map +1 -1
  75. package/dist/src/commands/rule-sets.d.ts +3 -0
  76. package/dist/src/commands/rule-sets.js +388 -0
  77. package/dist/src/commands/rule-sets.js.map +1 -0
  78. package/dist/src/commands/scripts.d.ts +2 -0
  79. package/dist/src/commands/scripts.js +667 -0
  80. package/dist/src/commands/scripts.js.map +1 -0
  81. package/dist/src/commands/secrets.d.ts +2 -0
  82. package/dist/src/commands/secrets.js +108 -0
  83. package/dist/src/commands/secrets.js.map +1 -0
  84. package/dist/src/commands/skill.d.ts +2 -0
  85. package/dist/src/commands/skill.js +29 -0
  86. package/dist/src/commands/skill.js.map +1 -0
  87. package/dist/src/commands/sync.d.ts +175 -0
  88. package/dist/src/commands/sync.js +4412 -233
  89. package/dist/src/commands/sync.js.map +1 -1
  90. package/dist/src/commands/tokens.d.ts +2 -0
  91. package/dist/src/commands/tokens.js +122 -19
  92. package/dist/src/commands/tokens.js.map +1 -1
  93. package/dist/src/commands/users.d.ts +2 -0
  94. package/dist/src/commands/users.js +440 -22
  95. package/dist/src/commands/users.js.map +1 -1
  96. package/dist/src/commands/waitlist.d.ts +2 -0
  97. package/dist/src/commands/waitlist.js +10 -10
  98. package/dist/src/commands/waitlist.js.map +1 -1
  99. package/dist/src/commands/webhooks.d.ts +2 -0
  100. package/dist/src/commands/webhooks.js +391 -0
  101. package/dist/src/commands/webhooks.js.map +1 -0
  102. package/dist/src/commands/workflows.d.ts +49 -0
  103. package/dist/src/commands/workflows.js +1009 -123
  104. package/dist/src/commands/workflows.js.map +1 -1
  105. package/dist/src/lib/api-client.d.ts +1283 -0
  106. package/dist/src/lib/api-client.js +1129 -83
  107. package/dist/src/lib/api-client.js.map +1 -1
  108. package/dist/src/lib/auth-flow.d.ts +8 -0
  109. package/dist/src/lib/block-layout.d.ts +160 -0
  110. package/dist/src/lib/block-layout.js +451 -0
  111. package/dist/src/lib/block-layout.js.map +1 -0
  112. package/dist/src/lib/cli-manifest.d.ts +60 -0
  113. package/dist/src/lib/cli-manifest.js +70 -0
  114. package/dist/src/lib/cli-manifest.js.map +1 -0
  115. package/dist/src/lib/config.d.ts +53 -0
  116. package/dist/src/lib/config.js +92 -53
  117. package/dist/src/lib/config.js.map +1 -1
  118. package/dist/src/lib/confirm-prompt.d.ts +83 -0
  119. package/dist/src/lib/confirm-prompt.js +110 -0
  120. package/dist/src/lib/confirm-prompt.js.map +1 -0
  121. package/dist/src/lib/constants.d.ts +2 -0
  122. package/dist/src/lib/constants.js +3 -0
  123. package/dist/src/lib/constants.js.map +1 -0
  124. package/dist/src/lib/crash-handlers.d.ts +20 -0
  125. package/dist/src/lib/crash-handlers.js +49 -0
  126. package/dist/src/lib/crash-handlers.js.map +1 -0
  127. package/dist/src/lib/credentials-store.d.ts +79 -0
  128. package/dist/src/lib/credentials-store.js +307 -0
  129. package/dist/src/lib/credentials-store.js.map +1 -0
  130. package/dist/src/lib/csv.d.ts +48 -0
  131. package/dist/src/lib/csv.js +177 -0
  132. package/dist/src/lib/csv.js.map +1 -0
  133. package/dist/src/lib/db-codegen/dbFingerprint.d.ts +10 -0
  134. package/dist/src/lib/db-codegen/dbFingerprint.js +17 -0
  135. package/dist/src/lib/db-codegen/dbFingerprint.js.map +1 -0
  136. package/dist/src/lib/db-codegen/dbGenerator.d.ts +111 -0
  137. package/dist/src/lib/db-codegen/dbGenerator.js +371 -0
  138. package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -0
  139. package/dist/src/lib/db-codegen/dbNaming.d.ts +45 -0
  140. package/dist/src/lib/db-codegen/dbNaming.js +104 -0
  141. package/dist/src/lib/db-codegen/dbNaming.js.map +1 -0
  142. package/dist/src/lib/db-codegen/dbTemplates.d.ts +97 -0
  143. package/dist/src/lib/db-codegen/dbTemplates.js +159 -0
  144. package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -0
  145. package/dist/src/lib/db-codegen/dbTsTypes.d.ts +78 -0
  146. package/dist/src/lib/db-codegen/dbTsTypes.js +112 -0
  147. package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -0
  148. package/dist/src/lib/env-resolver.d.ts +62 -0
  149. package/dist/src/lib/env-resolver.js +121 -0
  150. package/dist/src/lib/env-resolver.js.map +1 -0
  151. package/dist/src/lib/fetch.d.ts +5 -0
  152. package/dist/src/lib/generated-allowlist.d.ts +28 -0
  153. package/dist/src/lib/generated-allowlist.js +220 -0
  154. package/dist/src/lib/generated-allowlist.js.map +1 -0
  155. package/dist/src/lib/init-config.d.ts +59 -0
  156. package/dist/src/lib/init-config.js +113 -0
  157. package/dist/src/lib/init-config.js.map +1 -0
  158. package/dist/src/lib/migration-nag.d.ts +49 -0
  159. package/dist/src/lib/migration-nag.js +163 -0
  160. package/dist/src/lib/migration-nag.js.map +1 -0
  161. package/dist/src/lib/output.d.ts +86 -0
  162. package/dist/src/lib/output.js +150 -8
  163. package/dist/src/lib/output.js.map +1 -1
  164. package/dist/src/lib/paginate.d.ts +33 -0
  165. package/dist/src/lib/paginate.js +42 -0
  166. package/dist/src/lib/paginate.js.map +1 -0
  167. package/dist/src/lib/project-config.d.ts +97 -0
  168. package/dist/src/lib/project-config.js +209 -0
  169. package/dist/src/lib/project-config.js.map +1 -0
  170. package/dist/src/lib/query-operators.d.ts +43 -0
  171. package/dist/src/lib/query-operators.js +80 -0
  172. package/dist/src/lib/query-operators.js.map +1 -0
  173. package/dist/src/lib/refresh-admin-credentials.d.ts +65 -0
  174. package/dist/src/lib/refresh-admin-credentials.js +103 -0
  175. package/dist/src/lib/refresh-admin-credentials.js.map +1 -0
  176. package/dist/src/lib/resolve-platform.d.ts +45 -0
  177. package/dist/src/lib/resolve-platform.js +43 -0
  178. package/dist/src/lib/resolve-platform.js.map +1 -0
  179. package/dist/src/lib/skill-installer.d.ts +23 -0
  180. package/dist/src/lib/skill-installer.js +135 -0
  181. package/dist/src/lib/skill-installer.js.map +1 -0
  182. package/dist/src/lib/snapshots.d.ts +99 -0
  183. package/dist/src/lib/snapshots.js +357 -0
  184. package/dist/src/lib/snapshots.js.map +1 -0
  185. package/dist/src/lib/sync-paths.d.ts +72 -0
  186. package/dist/src/lib/sync-paths.js +130 -0
  187. package/dist/src/lib/sync-paths.js.map +1 -0
  188. package/dist/src/lib/template.d.ts +97 -0
  189. package/dist/src/lib/template.js +336 -62
  190. package/dist/src/lib/template.js.map +1 -1
  191. package/dist/src/lib/token-inject.d.ts +56 -0
  192. package/dist/src/lib/token-inject.js +204 -0
  193. package/dist/src/lib/token-inject.js.map +1 -0
  194. package/dist/src/lib/toml-database-config.d.ts +152 -0
  195. package/dist/src/lib/toml-database-config.js +600 -0
  196. package/dist/src/lib/toml-database-config.js.map +1 -0
  197. package/dist/src/lib/toml-metadata-config.d.ts +139 -0
  198. package/dist/src/lib/toml-metadata-config.js +427 -0
  199. package/dist/src/lib/toml-metadata-config.js.map +1 -0
  200. package/dist/src/lib/toml-params-validator.d.ts +129 -0
  201. package/dist/src/lib/toml-params-validator.js +298 -0
  202. package/dist/src/lib/toml-params-validator.js.map +1 -0
  203. package/dist/src/lib/version-check.d.ts +10 -0
  204. package/dist/src/lib/version-check.js +172 -0
  205. package/dist/src/lib/version-check.js.map +1 -0
  206. package/dist/src/lib/workflow-apply.d.ts +66 -0
  207. package/dist/src/lib/workflow-apply.js +117 -0
  208. package/dist/src/lib/workflow-apply.js.map +1 -0
  209. package/dist/src/lib/workflow-fragments.d.ts +41 -0
  210. package/dist/src/lib/workflow-fragments.js +121 -0
  211. package/dist/src/lib/workflow-fragments.js.map +1 -0
  212. package/dist/src/lib/workflow-toml-validator.d.ts +95 -0
  213. package/dist/src/lib/workflow-toml-validator.js +323 -0
  214. package/dist/src/lib/workflow-toml-validator.js.map +1 -0
  215. package/dist/src/types/index.d.ts +520 -0
  216. package/dist/src/validators.d.ts +64 -0
  217. package/dist/src/validators.js +63 -0
  218. package/dist/src/validators.js.map +1 -0
  219. package/package.json +18 -4
@@ -0,0 +1,515 @@
1
+ import { ApiClient } from "../lib/api-client.js";
2
+ import { resolveAppId } from "../lib/config.js";
3
+ import { success, error, info, keyValue, result as printResult, formatTable, formatId, formatDate, json, } from "../lib/output.js";
4
+ import { confirmPrompt } from "../lib/confirm-prompt.js";
5
+ export function registerCollectionsCommands(program) {
6
+ const collections = program
7
+ .command("collections")
8
+ .description("Create and manage document collections and their access")
9
+ .addHelpText("after", `
10
+ Examples:
11
+ $ primitive collections list
12
+ $ primitive collections create "Sprint 12"
13
+ $ primitive collections get <collection-id>
14
+ $ primitive collections docs list <collection-id>
15
+ $ primitive collections docs add <collection-id> <document-id>
16
+ $ primitive collections access <collection-id>
17
+ $ primitive collections share <collection-id> --group team/engineering --permission read-write
18
+ $ primitive collections members add <collection-id> <user-id> --permission reader
19
+ $ primitive collections for-document <document-id>
20
+ `);
21
+ // List collections
22
+ collections
23
+ .command("list")
24
+ .description("List collections in an app. By default shows only collections " +
25
+ "you're a direct member of. Use --all to see every collection (admin only).")
26
+ .argument("[app-id]", "App ID (uses current app if not specified)")
27
+ .option("--app <app-id>", "App ID")
28
+ .option("--all", "List every collection in the app (admin-only). Default is collections you're a direct member of.")
29
+ .option("--json", "Output as JSON")
30
+ .action(async (appId, options) => {
31
+ const resolvedAppId = resolveAppId(appId, options);
32
+ const client = new ApiClient();
33
+ try {
34
+ const result = options.all
35
+ ? await client.listAllCollections(resolvedAppId)
36
+ : await client.listCollections(resolvedAppId);
37
+ const list = Array.isArray(result) ? result : result?.items ?? [];
38
+ if (options.json) {
39
+ json(result);
40
+ return;
41
+ }
42
+ if (list.length === 0) {
43
+ info("No collections found.");
44
+ return;
45
+ }
46
+ const columns = [
47
+ { header: "ID", key: "collectionId", format: formatId },
48
+ { header: "NAME", key: "name" },
49
+ { header: "DESCRIPTION", key: "description", format: (v) => v || "—" },
50
+ { header: "DOCS", key: "documentCount" },
51
+ { header: "CREATED", key: "createdAt", format: formatDate },
52
+ ];
53
+ // `permission` is only returned by the default list() endpoint
54
+ if (!options.all) {
55
+ columns.splice(4, 0, { header: "PERMISSION", key: "permission", format: (v) => v || "—" });
56
+ }
57
+ console.log(formatTable(list, columns));
58
+ if (result?.nextCursor) {
59
+ info(`More results available. Use --json to get the cursor for pagination.`);
60
+ }
61
+ }
62
+ catch (err) {
63
+ // Friendly message when --all is used by a non-admin
64
+ if (options.all && /403|forbidden|insufficient permissions/i.test(err.message || "")) {
65
+ error("--all requires admin role on this app. Omit the flag to see collections you're a member of.");
66
+ process.exit(1);
67
+ }
68
+ error(err.message);
69
+ process.exit(1);
70
+ }
71
+ });
72
+ // Create collection
73
+ collections
74
+ .command("create")
75
+ .description("Create a new collection")
76
+ .argument("<name>", "Collection name")
77
+ .option("--description <description>", "Collection description")
78
+ .option("--app <app-id>", "App ID")
79
+ .option("--json", "Output as JSON")
80
+ .action(async (name, options) => {
81
+ const resolvedAppId = resolveAppId(undefined, options);
82
+ const client = new ApiClient();
83
+ try {
84
+ const data = { name };
85
+ if (options.description)
86
+ data.description = options.description;
87
+ const result = await client.createCollection(resolvedAppId, data);
88
+ if (options.json) {
89
+ json(result);
90
+ return;
91
+ }
92
+ success("Collection created.");
93
+ keyValue("Collection ID", result.collectionId);
94
+ keyValue("Name", result.name);
95
+ if (result.description)
96
+ keyValue("Description", result.description);
97
+ }
98
+ catch (err) {
99
+ error(err.message);
100
+ process.exit(1);
101
+ }
102
+ });
103
+ // Get collection
104
+ collections
105
+ .command("get")
106
+ .description("Get collection details")
107
+ .argument("<collection-id>", "Collection ID")
108
+ .option("--app <app-id>", "App ID")
109
+ .option("--json", "Output as JSON")
110
+ .action(async (collectionId, options) => {
111
+ const resolvedAppId = resolveAppId(undefined, options);
112
+ const client = new ApiClient();
113
+ try {
114
+ const result = await client.getCollection(resolvedAppId, collectionId);
115
+ if (options.json) {
116
+ json(result);
117
+ return;
118
+ }
119
+ printResult("Collection ID", result.collectionId);
120
+ printResult("Name", result.name);
121
+ printResult("Description", result.description || "—");
122
+ printResult("Documents", result.documentCount);
123
+ printResult("Created", formatDate(result.createdAt));
124
+ }
125
+ catch (err) {
126
+ error(err.message);
127
+ process.exit(1);
128
+ }
129
+ });
130
+ // Update collection
131
+ collections
132
+ .command("update")
133
+ .description("Update a collection")
134
+ .argument("<collection-id>", "Collection ID")
135
+ .option("--name <name>", "New collection name")
136
+ .option("--description <description>", "New collection description")
137
+ .option("--app <app-id>", "App ID")
138
+ .option("--json", "Output as JSON")
139
+ .action(async (collectionId, options) => {
140
+ const resolvedAppId = resolveAppId(undefined, options);
141
+ const client = new ApiClient();
142
+ const data = {};
143
+ if (options.name)
144
+ data.name = options.name;
145
+ if (options.description)
146
+ data.description = options.description;
147
+ if (Object.keys(data).length === 0) {
148
+ error("Provide at least --name or --description to update.");
149
+ process.exit(1);
150
+ }
151
+ try {
152
+ const result = await client.updateCollection(resolvedAppId, collectionId, data);
153
+ if (options.json) {
154
+ json(result);
155
+ return;
156
+ }
157
+ success(`Collection ${collectionId} updated.`);
158
+ }
159
+ catch (err) {
160
+ error(err.message);
161
+ process.exit(1);
162
+ }
163
+ });
164
+ // Delete collection
165
+ collections
166
+ .command("delete")
167
+ .description("Delete a collection (documents are preserved)")
168
+ .argument("<collection-id>", "Collection ID")
169
+ .option("--app <app-id>", "App ID")
170
+ .option("-y, --yes", "Skip confirmation prompt")
171
+ .action(async (collectionId, options) => {
172
+ const resolvedAppId = resolveAppId(undefined, options);
173
+ if (!options.yes) {
174
+ let confirm;
175
+ try {
176
+ confirm = await confirmPrompt(`Delete collection ${collectionId}? This revokes all collection-granted permissions but does NOT delete documents.`);
177
+ }
178
+ catch (err) {
179
+ error(err.message);
180
+ process.exit(1);
181
+ }
182
+ if (!confirm) {
183
+ info("Cancelled.");
184
+ return;
185
+ }
186
+ }
187
+ const client = new ApiClient();
188
+ try {
189
+ await client.deleteCollection(resolvedAppId, collectionId);
190
+ success(`Collection ${collectionId} deleted.`);
191
+ }
192
+ catch (err) {
193
+ error(err.message);
194
+ process.exit(1);
195
+ }
196
+ });
197
+ // ---- Access command ----
198
+ collections
199
+ .command("access")
200
+ .description("View groups and members with access to a collection")
201
+ .argument("<collection-id>", "Collection ID")
202
+ .option("--app <app-id>", "App ID")
203
+ .option("--json", "Output as JSON")
204
+ .action(async (collectionId, options) => {
205
+ const resolvedAppId = resolveAppId(undefined, options);
206
+ const client = new ApiClient();
207
+ try {
208
+ const result = await client.getCollectionAccess(resolvedAppId, collectionId);
209
+ if (options.json) {
210
+ json(result);
211
+ return;
212
+ }
213
+ const groups = result.groups || [];
214
+ const members = result.members || [];
215
+ if (groups.length === 0 && members.length === 0) {
216
+ info("No groups or members have access to this collection.");
217
+ return;
218
+ }
219
+ if (groups.length > 0) {
220
+ console.log("\nGroups:");
221
+ console.log(formatTable(groups, [
222
+ { header: "TYPE", key: "groupType" },
223
+ { header: "ID", key: "groupId" },
224
+ { header: "PERMISSION", key: "permission" },
225
+ { header: "GRANTED", key: "grantedAt", format: formatDate },
226
+ ]));
227
+ }
228
+ if (members.length > 0) {
229
+ console.log("\nMembers:");
230
+ console.log(formatTable(members, [
231
+ { header: "USER_ID", key: "userId", format: formatId },
232
+ { header: "PERMISSION", key: "permission" },
233
+ ]));
234
+ }
235
+ }
236
+ catch (err) {
237
+ error(err.message);
238
+ process.exit(1);
239
+ }
240
+ });
241
+ // ---- Share / unshare (group permissions) ----
242
+ collections
243
+ .command("share")
244
+ .description("Grant a group access to a collection")
245
+ .argument("<collection-id>", "Collection ID")
246
+ .requiredOption("--group <group>", "Group in format type/id (e.g. team/engineering)")
247
+ .requiredOption("--permission <permission>", "Permission level (reader or read-write)")
248
+ .option("--app <app-id>", "App ID")
249
+ .option("--json", "Output as JSON")
250
+ .action(async (collectionId, options) => {
251
+ const resolvedAppId = resolveAppId(undefined, options);
252
+ const client = new ApiClient();
253
+ const parts = options.group.split("/");
254
+ if (parts.length !== 2) {
255
+ error("Group must be in format type/id (e.g. team/engineering).");
256
+ process.exit(1);
257
+ }
258
+ const [groupType, groupId] = parts;
259
+ try {
260
+ const result = await client.grantCollectionGroupPermission(resolvedAppId, collectionId, {
261
+ groupType,
262
+ groupId,
263
+ permission: options.permission,
264
+ });
265
+ if (options.json) {
266
+ json(result);
267
+ return;
268
+ }
269
+ success(`Granted ${options.permission} access to ${groupType}/${groupId} on collection.`);
270
+ }
271
+ catch (err) {
272
+ error(err.message);
273
+ process.exit(1);
274
+ }
275
+ });
276
+ collections
277
+ .command("unshare")
278
+ .description("Revoke a group's access to a collection")
279
+ .argument("<collection-id>", "Collection ID")
280
+ .requiredOption("--group <group>", "Group in format type/id (e.g. team/engineering)")
281
+ .option("--app <app-id>", "App ID")
282
+ .option("-y, --yes", "Skip confirmation prompt")
283
+ .action(async (collectionId, options) => {
284
+ const resolvedAppId = resolveAppId(undefined, options);
285
+ const parts = options.group.split("/");
286
+ if (parts.length !== 2) {
287
+ error("Group must be in format type/id (e.g. team/engineering).");
288
+ process.exit(1);
289
+ }
290
+ const [groupType, groupId] = parts;
291
+ if (!options.yes) {
292
+ let confirm;
293
+ try {
294
+ confirm = await confirmPrompt(`Revoke ${groupType}/${groupId} access to collection ${collectionId}?`);
295
+ }
296
+ catch (err) {
297
+ error(err.message);
298
+ process.exit(1);
299
+ }
300
+ if (!confirm) {
301
+ info("Cancelled.");
302
+ return;
303
+ }
304
+ }
305
+ const client = new ApiClient();
306
+ try {
307
+ await client.revokeCollectionGroupPermission(resolvedAppId, collectionId, groupType, groupId);
308
+ success(`Revoked ${groupType}/${groupId} access from collection.`);
309
+ }
310
+ catch (err) {
311
+ error(err.message);
312
+ process.exit(1);
313
+ }
314
+ });
315
+ // ---- Documents subcommand group ----
316
+ const docs = collections
317
+ .command("docs")
318
+ .description("Manage documents in a collection");
319
+ // List documents
320
+ docs
321
+ .command("list")
322
+ .description("List documents in a collection")
323
+ .argument("<collection-id>", "Collection ID")
324
+ .option("--app <app-id>", "App ID")
325
+ .option("--json", "Output as JSON")
326
+ .action(async (collectionId, options) => {
327
+ const resolvedAppId = resolveAppId(undefined, options);
328
+ const client = new ApiClient();
329
+ try {
330
+ const result = await client.listCollectionDocuments(resolvedAppId, collectionId);
331
+ const list = Array.isArray(result) ? result : result?.items ?? [];
332
+ if (options.json) {
333
+ json(result);
334
+ return;
335
+ }
336
+ if (list.length === 0) {
337
+ info("No documents in this collection.");
338
+ return;
339
+ }
340
+ console.log(formatTable(list, [
341
+ { header: "DOCUMENT_ID", key: "documentId", format: formatId },
342
+ { header: "ADDED", key: "addedAt", format: formatDate },
343
+ ]));
344
+ if (result?.nextCursor) {
345
+ info(`More results available. Use --json to get the cursor for pagination.`);
346
+ }
347
+ }
348
+ catch (err) {
349
+ error(err.message);
350
+ process.exit(1);
351
+ }
352
+ });
353
+ // Add document
354
+ docs
355
+ .command("add")
356
+ .description("Add a document to a collection")
357
+ .argument("<collection-id>", "Collection ID")
358
+ .argument("<document-id>", "Document ID")
359
+ .option("--app <app-id>", "App ID")
360
+ .option("--json", "Output as JSON")
361
+ .action(async (collectionId, documentId, options) => {
362
+ const resolvedAppId = resolveAppId(undefined, options);
363
+ const client = new ApiClient();
364
+ try {
365
+ const result = await client.addCollectionDocument(resolvedAppId, collectionId, {
366
+ documentId,
367
+ });
368
+ if (options.json) {
369
+ json(result);
370
+ return;
371
+ }
372
+ success(`Document ${documentId} added to collection.`);
373
+ }
374
+ catch (err) {
375
+ error(err.message);
376
+ process.exit(1);
377
+ }
378
+ });
379
+ // Remove document
380
+ docs
381
+ .command("remove")
382
+ .description("Remove a document from a collection")
383
+ .argument("<collection-id>", "Collection ID")
384
+ .argument("<document-id>", "Document ID")
385
+ .option("--app <app-id>", "App ID")
386
+ .option("-y, --yes", "Skip confirmation prompt")
387
+ .action(async (collectionId, documentId, options) => {
388
+ const resolvedAppId = resolveAppId(undefined, options);
389
+ if (!options.yes) {
390
+ let confirm;
391
+ try {
392
+ confirm = await confirmPrompt(`Remove document ${documentId} from collection? Collection-sourced permissions will be revoked.`);
393
+ }
394
+ catch (err) {
395
+ error(err.message);
396
+ process.exit(1);
397
+ }
398
+ if (!confirm) {
399
+ info("Cancelled.");
400
+ return;
401
+ }
402
+ }
403
+ const client = new ApiClient();
404
+ try {
405
+ await client.removeCollectionDocument(resolvedAppId, collectionId, documentId);
406
+ success(`Document ${documentId} removed from collection.`);
407
+ }
408
+ catch (err) {
409
+ error(err.message);
410
+ process.exit(1);
411
+ }
412
+ });
413
+ // ---- List collections for a document (reverse lookup) ----
414
+ collections
415
+ .command("for-document")
416
+ .description("List collections that a document belongs to")
417
+ .argument("<document-id>", "Document ID")
418
+ .option("--app <app-id>", "App ID")
419
+ .option("--json", "Output as JSON")
420
+ .action(async (documentId, options) => {
421
+ const resolvedAppId = resolveAppId(undefined, options);
422
+ const client = new ApiClient();
423
+ try {
424
+ const result = await client.listCollectionsForDocument(resolvedAppId, documentId);
425
+ const list = Array.isArray(result) ? result : result?.items ?? [];
426
+ if (options.json) {
427
+ json(result);
428
+ return;
429
+ }
430
+ if (list.length === 0) {
431
+ info("Document is not in any collections.");
432
+ return;
433
+ }
434
+ console.log(formatTable(list, [
435
+ { header: "COLLECTION_ID", key: "collectionId", format: formatId },
436
+ { header: "NAME", key: "name" },
437
+ { header: "ADDED", key: "addedAt", format: formatDate },
438
+ ]));
439
+ if (result?.nextCursor) {
440
+ info(`More results available. Use --json to get the cursor for pagination.`);
441
+ }
442
+ }
443
+ catch (err) {
444
+ error(err.message);
445
+ process.exit(1);
446
+ }
447
+ });
448
+ // ---- Members subcommand group ----
449
+ const members = collections
450
+ .command("members")
451
+ .description("Manage individual user access to a collection");
452
+ // Add member
453
+ members
454
+ .command("add")
455
+ .description("Add a user to a collection")
456
+ .argument("<collection-id>", "Collection ID")
457
+ .argument("<user-id>", "User ID")
458
+ .requiredOption("--permission <permission>", "Permission level (reader or read-write)")
459
+ .option("--app <app-id>", "App ID")
460
+ .option("--json", "Output as JSON")
461
+ .action(async (collectionId, userId, options) => {
462
+ const resolvedAppId = resolveAppId(undefined, options);
463
+ const client = new ApiClient();
464
+ try {
465
+ const result = await client.addCollectionMember(resolvedAppId, collectionId, {
466
+ userId,
467
+ permission: options.permission,
468
+ });
469
+ if (options.json) {
470
+ json(result);
471
+ return;
472
+ }
473
+ success(`User ${userId} added to collection with ${options.permission} access.`);
474
+ }
475
+ catch (err) {
476
+ error(err.message);
477
+ process.exit(1);
478
+ }
479
+ });
480
+ // Remove member
481
+ members
482
+ .command("remove")
483
+ .description("Remove a user from a collection")
484
+ .argument("<collection-id>", "Collection ID")
485
+ .argument("<user-id>", "User ID")
486
+ .option("--app <app-id>", "App ID")
487
+ .option("-y, --yes", "Skip confirmation prompt")
488
+ .action(async (collectionId, userId, options) => {
489
+ const resolvedAppId = resolveAppId(undefined, options);
490
+ if (!options.yes) {
491
+ let confirm;
492
+ try {
493
+ confirm = await confirmPrompt(`Remove user ${userId} from collection ${collectionId}?`);
494
+ }
495
+ catch (err) {
496
+ error(err.message);
497
+ process.exit(1);
498
+ }
499
+ if (!confirm) {
500
+ info("Cancelled.");
501
+ return;
502
+ }
503
+ }
504
+ const client = new ApiClient();
505
+ try {
506
+ await client.removeCollectionMember(resolvedAppId, collectionId, userId);
507
+ success(`User ${userId} removed from collection.`);
508
+ }
509
+ catch (err) {
510
+ error(err.message);
511
+ process.exit(1);
512
+ }
513
+ });
514
+ }
515
+ //# sourceMappingURL=collections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../src/commands/collections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerComparisonsCommands(program: Command): void;
@@ -1,7 +1,7 @@
1
1
  import chalk from "chalk";
2
2
  import { ApiClient } from "../lib/api-client.js";
3
3
  import { resolveAppId } from "../lib/config.js";
4
- import { error, info, keyValue, formatTable, formatId, formatDate, formatDuration, json, divider, } from "../lib/output.js";
4
+ import { error, info, result as printResult, formatTable, formatId, formatDate, formatDuration, json, divider, } from "../lib/output.js";
5
5
  export function registerComparisonsCommands(program) {
6
6
  const comparisons = program
7
7
  .command("comparisons")
@@ -27,8 +27,8 @@ Examples:
27
27
  json(result);
28
28
  return;
29
29
  }
30
- keyValue("Comparison Group", result.comparisonGroup);
31
- keyValue("Total Runs", result.runs?.length || 0);
30
+ printResult("Comparison Group", result.comparisonGroup);
31
+ printResult("Total Runs", result.runs?.length || 0);
32
32
  if (!result.runs || result.runs.length === 0) {
33
33
  info("No runs found in this comparison group.");
34
34
  return;
@@ -37,10 +37,10 @@ Examples:
37
37
  const passed = result.runs.filter((r) => r.verificationPassed === true).length;
38
38
  const failed = result.runs.filter((r) => r.verificationPassed === false).length;
39
39
  const pending = result.runs.filter((r) => r.verificationPassed === null || r.verificationPassed === undefined).length;
40
- keyValue("Passed", chalk.green(passed));
41
- keyValue("Failed", failed > 0 ? chalk.red(failed) : "0");
40
+ printResult("Passed", chalk.green(passed));
41
+ printResult("Failed", failed > 0 ? chalk.red(failed) : "0");
42
42
  if (pending > 0) {
43
- keyValue("Pending", chalk.dim(pending));
43
+ printResult("Pending", chalk.dim(pending));
44
44
  }
45
45
  divider();
46
46
  info("Runs:");
@@ -1 +1 @@
1
- {"version":3,"file":"comparisons.js","sourceRoot":"","sources":["../../../src/commands/comparisons.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comparisons.js","sourceRoot":"","sources":["../../../src/commands/comparisons.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare function registerCronTriggersCommands(program: Command): void;