@constructive-sdk/cli 0.21.9 → 0.22.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructive-sdk/cli",
3
- "version": "0.21.9",
3
+ "version": "0.22.0",
4
4
  "author": "Constructive <developers@constructive.io>",
5
5
  "description": "Constructive CLI SDK - Auto-generated GraphQL CLI with ORM client, context management, and interactive prompts",
6
6
  "main": "index.js",
@@ -46,21 +46,21 @@
46
46
  ],
47
47
  "dependencies": {
48
48
  "@0no-co/graphql.web": "^1.1.2",
49
- "@constructive-io/graphql-query": "^3.24.1",
50
- "@constructive-io/graphql-types": "^3.9.1",
49
+ "@constructive-io/graphql-query": "^3.25.0",
50
+ "@constructive-io/graphql-types": "^3.10.0",
51
51
  "appstash": "^0.7.0",
52
- "gql-ast": "^3.9.1",
52
+ "gql-ast": "^3.10.0",
53
53
  "graphql": "16.13.0",
54
54
  "inquirerer": "^4.7.0",
55
55
  "nested-obj": "^0.2.2",
56
56
  "yanse": "^0.2.1"
57
57
  },
58
58
  "devDependencies": {
59
- "@constructive-io/graphql-codegen": "^4.41.2",
59
+ "@constructive-io/graphql-codegen": "^4.42.0",
60
60
  "@types/node": "^22.19.11",
61
61
  "makage": "^0.3.0",
62
62
  "tsx": "^4.19.0",
63
63
  "typescript": "^5.9.3"
64
64
  },
65
- "gitHead": "42ff6bf5fa2e400bb63f78745a1f5a76209677b6"
65
+ "gitHead": "50dc1d69049c207b46c237eba1e1b1cb7a5f928f"
66
66
  }
@@ -13,7 +13,7 @@ const fieldSchema = {
13
13
  databaseId: 'uuid',
14
14
  tableId: 'uuid',
15
15
  strategy: 'string',
16
- partitionKeyId: 'uuid',
16
+ partitionKeyIds: 'uuid',
17
17
  interval: 'string',
18
18
  retention: 'string',
19
19
  lookahead: 'int',
@@ -67,7 +67,7 @@ async function handleList(argv, _prompter) {
67
67
  databaseId: true,
68
68
  tableId: true,
69
69
  strategy: true,
70
- partitionKeyId: true,
70
+ partitionKeyIds: true,
71
71
  interval: true,
72
72
  retention: true,
73
73
  lookahead: true,
@@ -95,7 +95,7 @@ async function handleFindFirst(argv, _prompter) {
95
95
  databaseId: true,
96
96
  tableId: true,
97
97
  strategy: true,
98
- partitionKeyId: true,
98
+ partitionKeyIds: true,
99
99
  interval: true,
100
100
  retention: true,
101
101
  lookahead: true,
@@ -135,7 +135,7 @@ async function handleGet(argv, prompter) {
135
135
  databaseId: true,
136
136
  tableId: true,
137
137
  strategy: true,
138
- partitionKeyId: true,
138
+ partitionKeyIds: true,
139
139
  interval: true,
140
140
  retention: true,
141
141
  lookahead: true,
@@ -178,8 +178,8 @@ async function handleCreate(argv, prompter) {
178
178
  },
179
179
  {
180
180
  type: 'text',
181
- name: 'partitionKeyId',
182
- message: 'partitionKeyId',
181
+ name: 'partitionKeyIds',
182
+ message: 'partitionKeyIds',
183
183
  required: true,
184
184
  },
185
185
  {
@@ -220,7 +220,7 @@ async function handleCreate(argv, prompter) {
220
220
  databaseId: cleanedData.databaseId,
221
221
  tableId: cleanedData.tableId,
222
222
  strategy: cleanedData.strategy,
223
- partitionKeyId: cleanedData.partitionKeyId,
223
+ partitionKeyIds: cleanedData.partitionKeyIds,
224
224
  interval: cleanedData.interval,
225
225
  retention: cleanedData.retention,
226
226
  lookahead: cleanedData.lookahead,
@@ -231,7 +231,7 @@ async function handleCreate(argv, prompter) {
231
231
  databaseId: true,
232
232
  tableId: true,
233
233
  strategy: true,
234
- partitionKeyId: true,
234
+ partitionKeyIds: true,
235
235
  interval: true,
236
236
  retention: true,
237
237
  lookahead: true,
@@ -280,8 +280,8 @@ async function handleUpdate(argv, prompter) {
280
280
  },
281
281
  {
282
282
  type: 'text',
283
- name: 'partitionKeyId',
284
- message: 'partitionKeyId',
283
+ name: 'partitionKeyIds',
284
+ message: 'partitionKeyIds',
285
285
  required: false,
286
286
  },
287
287
  {
@@ -325,7 +325,7 @@ async function handleUpdate(argv, prompter) {
325
325
  databaseId: cleanedData.databaseId,
326
326
  tableId: cleanedData.tableId,
327
327
  strategy: cleanedData.strategy,
328
- partitionKeyId: cleanedData.partitionKeyId,
328
+ partitionKeyIds: cleanedData.partitionKeyIds,
329
329
  interval: cleanedData.interval,
330
330
  retention: cleanedData.retention,
331
331
  lookahead: cleanedData.lookahead,
@@ -336,7 +336,7 @@ async function handleUpdate(argv, prompter) {
336
336
  databaseId: true,
337
337
  tableId: true,
338
338
  strategy: true,
339
- partitionKeyId: true,
339
+ partitionKeyIds: true,
340
340
  interval: true,
341
341
  retention: true,
342
342
  lookahead: true,
@@ -25,6 +25,10 @@ const fieldSchema = {
25
25
  pluralName: 'string',
26
26
  singularName: 'string',
27
27
  tags: 'string',
28
+ partitioned: 'boolean',
29
+ partitionStrategy: 'string',
30
+ partitionKeyNames: 'string',
31
+ partitionKeyTypes: 'string',
28
32
  inheritsId: 'uuid',
29
33
  createdAt: 'string',
30
34
  updatedAt: 'string',
@@ -87,6 +91,10 @@ async function handleList(argv, _prompter) {
87
91
  pluralName: true,
88
92
  singularName: true,
89
93
  tags: true,
94
+ partitioned: true,
95
+ partitionStrategy: true,
96
+ partitionKeyNames: true,
97
+ partitionKeyTypes: true,
90
98
  inheritsId: true,
91
99
  createdAt: true,
92
100
  updatedAt: true,
@@ -123,6 +131,10 @@ async function handleFindFirst(argv, _prompter) {
123
131
  pluralName: true,
124
132
  singularName: true,
125
133
  tags: true,
134
+ partitioned: true,
135
+ partitionStrategy: true,
136
+ partitionKeyNames: true,
137
+ partitionKeyTypes: true,
126
138
  inheritsId: true,
127
139
  createdAt: true,
128
140
  updatedAt: true,
@@ -171,6 +183,10 @@ async function handleGet(argv, prompter) {
171
183
  pluralName: true,
172
184
  singularName: true,
173
185
  tags: true,
186
+ partitioned: true,
187
+ partitionStrategy: true,
188
+ partitionKeyNames: true,
189
+ partitionKeyTypes: true,
174
190
  inheritsId: true,
175
191
  createdAt: true,
176
192
  updatedAt: true,
@@ -293,6 +309,34 @@ async function handleCreate(argv, prompter) {
293
309
  required: false,
294
310
  skipPrompt: true,
295
311
  },
312
+ {
313
+ type: 'boolean',
314
+ name: 'partitioned',
315
+ message: 'partitioned',
316
+ required: false,
317
+ skipPrompt: true,
318
+ },
319
+ {
320
+ type: 'text',
321
+ name: 'partitionStrategy',
322
+ message: 'partitionStrategy',
323
+ required: false,
324
+ skipPrompt: true,
325
+ },
326
+ {
327
+ type: 'text',
328
+ name: 'partitionKeyNames',
329
+ message: 'partitionKeyNames',
330
+ required: false,
331
+ skipPrompt: true,
332
+ },
333
+ {
334
+ type: 'text',
335
+ name: 'partitionKeyTypes',
336
+ message: 'partitionKeyTypes',
337
+ required: false,
338
+ skipPrompt: true,
339
+ },
296
340
  {
297
341
  type: 'text',
298
342
  name: 'inheritsId',
@@ -322,6 +366,10 @@ async function handleCreate(argv, prompter) {
322
366
  pluralName: cleanedData.pluralName,
323
367
  singularName: cleanedData.singularName,
324
368
  tags: cleanedData.tags,
369
+ partitioned: cleanedData.partitioned,
370
+ partitionStrategy: cleanedData.partitionStrategy,
371
+ partitionKeyNames: cleanedData.partitionKeyNames,
372
+ partitionKeyTypes: cleanedData.partitionKeyTypes,
325
373
  inheritsId: cleanedData.inheritsId,
326
374
  },
327
375
  select: {
@@ -341,6 +389,10 @@ async function handleCreate(argv, prompter) {
341
389
  pluralName: true,
342
390
  singularName: true,
343
391
  tags: true,
392
+ partitioned: true,
393
+ partitionStrategy: true,
394
+ partitionKeyNames: true,
395
+ partitionKeyTypes: true,
344
396
  inheritsId: true,
345
397
  createdAt: true,
346
398
  updatedAt: true,
@@ -469,6 +521,34 @@ async function handleUpdate(argv, prompter) {
469
521
  required: false,
470
522
  skipPrompt: true,
471
523
  },
524
+ {
525
+ type: 'boolean',
526
+ name: 'partitioned',
527
+ message: 'partitioned',
528
+ required: false,
529
+ skipPrompt: true,
530
+ },
531
+ {
532
+ type: 'text',
533
+ name: 'partitionStrategy',
534
+ message: 'partitionStrategy',
535
+ required: false,
536
+ skipPrompt: true,
537
+ },
538
+ {
539
+ type: 'text',
540
+ name: 'partitionKeyNames',
541
+ message: 'partitionKeyNames',
542
+ required: false,
543
+ skipPrompt: true,
544
+ },
545
+ {
546
+ type: 'text',
547
+ name: 'partitionKeyTypes',
548
+ message: 'partitionKeyTypes',
549
+ required: false,
550
+ skipPrompt: true,
551
+ },
472
552
  {
473
553
  type: 'text',
474
554
  name: 'inheritsId',
@@ -501,6 +581,10 @@ async function handleUpdate(argv, prompter) {
501
581
  pluralName: cleanedData.pluralName,
502
582
  singularName: cleanedData.singularName,
503
583
  tags: cleanedData.tags,
584
+ partitioned: cleanedData.partitioned,
585
+ partitionStrategy: cleanedData.partitionStrategy,
586
+ partitionKeyNames: cleanedData.partitionKeyNames,
587
+ partitionKeyTypes: cleanedData.partitionKeyTypes,
504
588
  inheritsId: cleanedData.inheritsId,
505
589
  },
506
590
  select: {
@@ -520,6 +604,10 @@ async function handleUpdate(argv, prompter) {
520
604
  pluralName: true,
521
605
  singularName: true,
522
606
  tags: true,
607
+ partitioned: true,
608
+ partitionStrategy: true,
609
+ partitionKeyNames: true,
610
+ partitionKeyTypes: true,
523
611
  inheritsId: true,
524
612
  createdAt: true,
525
613
  updatedAt: true,
@@ -25,7 +25,6 @@ const table_1 = __importDefault(require("./commands/table"));
25
25
  const check_constraint_1 = __importDefault(require("./commands/check-constraint"));
26
26
  const field_1 = __importDefault(require("./commands/field"));
27
27
  const spatial_relation_1 = __importDefault(require("./commands/spatial-relation"));
28
- const partition_1 = __importDefault(require("./commands/partition"));
29
28
  const foreign_key_constraint_1 = __importDefault(require("./commands/foreign-key-constraint"));
30
29
  const full_text_search_1 = __importDefault(require("./commands/full-text-search"));
31
30
  const index_1 = __importDefault(require("./commands/index"));
@@ -57,6 +56,7 @@ const site_theme_1 = __importDefault(require("./commands/site-theme"));
57
56
  const cors_setting_1 = __importDefault(require("./commands/cors-setting"));
58
57
  const trigger_function_1 = __importDefault(require("./commands/trigger-function"));
59
58
  const database_transfer_1 = __importDefault(require("./commands/database-transfer"));
59
+ const partition_1 = __importDefault(require("./commands/partition"));
60
60
  const api_1 = __importDefault(require("./commands/api"));
61
61
  const site_1 = __importDefault(require("./commands/site"));
62
62
  const app_1 = __importDefault(require("./commands/app"));
@@ -248,7 +248,6 @@ const createCommandMap = () => ({
248
248
  'check-constraint': check_constraint_1.default,
249
249
  field: field_1.default,
250
250
  'spatial-relation': spatial_relation_1.default,
251
- partition: partition_1.default,
252
251
  'foreign-key-constraint': foreign_key_constraint_1.default,
253
252
  'full-text-search': full_text_search_1.default,
254
253
  index: index_1.default,
@@ -280,6 +279,7 @@ const createCommandMap = () => ({
280
279
  'cors-setting': cors_setting_1.default,
281
280
  'trigger-function': trigger_function_1.default,
282
281
  'database-transfer': database_transfer_1.default,
282
+ partition: partition_1.default,
283
283
  api: api_1.default,
284
284
  site: site_1.default,
285
285
  app: app_1.default,
@@ -456,7 +456,7 @@ const createCommandMap = () => ({
456
456
  'provision-table': provision_table_1.default,
457
457
  'provision-bucket': provision_bucket_1.default,
458
458
  });
459
- const usage = "\ncsdk <command>\n\nCommands:\n context Manage API contexts\n auth Manage authentication\n org-get-managers-record orgGetManagersRecord CRUD operations\n org-get-subordinates-record orgGetSubordinatesRecord CRUD operations\n get-all-record getAllRecord CRUD operations\n app-permission appPermission CRUD operations\n org-permission orgPermission CRUD operations\n object object CRUD operations\n app-level-requirement appLevelRequirement CRUD operations\n database database CRUD operations\n schema schema CRUD operations\n table table CRUD operations\n check-constraint checkConstraint CRUD operations\n field field CRUD operations\n spatial-relation spatialRelation CRUD operations\n partition partition CRUD operations\n foreign-key-constraint foreignKeyConstraint CRUD operations\n full-text-search fullTextSearch CRUD operations\n index index CRUD operations\n policy policy CRUD operations\n primary-key-constraint primaryKeyConstraint CRUD operations\n table-grant tableGrant CRUD operations\n trigger trigger CRUD operations\n unique-constraint uniqueConstraint CRUD operations\n view view CRUD operations\n view-table viewTable CRUD operations\n view-grant viewGrant CRUD operations\n view-rule viewRule CRUD operations\n embedding-chunk embeddingChunk CRUD operations\n secure-table-provision secureTableProvision CRUD operations\n relation-provision relationProvision CRUD operations\n session-secrets-module sessionSecretsModule CRUD operations\n identity-providers-module identityProvidersModule CRUD operations\n realtime-module realtimeModule CRUD operations\n schema-grant schemaGrant CRUD operations\n default-privilege defaultPrivilege CRUD operations\n enum enum CRUD operations\n function function CRUD operations\n api-schema apiSchema CRUD operations\n api-module apiModule CRUD operations\n domain domain CRUD operations\n site-metadatum siteMetadatum CRUD operations\n site-module siteModule CRUD operations\n site-theme siteTheme CRUD operations\n cors-setting corsSetting CRUD operations\n trigger-function triggerFunction CRUD operations\n database-transfer databaseTransfer CRUD operations\n api api CRUD operations\n site site CRUD operations\n app app CRUD operations\n api-setting apiSetting CRUD operations\n connected-accounts-module connectedAccountsModule CRUD operations\n crypto-addresses-module cryptoAddressesModule CRUD operations\n crypto-auth-module cryptoAuthModule CRUD operations\n default-ids-module defaultIdsModule CRUD operations\n denormalized-table-field denormalizedTableField CRUD operations\n emails-module emailsModule CRUD operations\n encrypted-secrets-module encryptedSecretsModule CRUD operations\n invites-module invitesModule CRUD operations\n levels-module levelsModule CRUD operations\n limits-module limitsModule CRUD operations\n membership-types-module membershipTypesModule CRUD operations\n memberships-module membershipsModule CRUD operations\n permissions-module permissionsModule CRUD operations\n phone-numbers-module phoneNumbersModule CRUD operations\n profiles-module profilesModule CRUD operations\n secrets-module secretsModule CRUD operations\n sessions-module sessionsModule CRUD operations\n user-auth-module userAuthModule CRUD operations\n users-module usersModule CRUD operations\n blueprint blueprint CRUD operations\n blueprint-template blueprintTemplate CRUD operations\n blueprint-construction blueprintConstruction CRUD operations\n storage-module storageModule CRUD operations\n entity-type-provision entityTypeProvision CRUD operations\n webauthn-credentials-module webauthnCredentialsModule CRUD operations\n webauthn-auth-module webauthnAuthModule CRUD operations\n notifications-module notificationsModule CRUD operations\n database-provision-module databaseProvisionModule CRUD operations\n app-admin-grant appAdminGrant CRUD operations\n app-owner-grant appOwnerGrant CRUD operations\n app-grant appGrant CRUD operations\n org-membership orgMembership CRUD operations\n org-member orgMember CRUD operations\n org-admin-grant orgAdminGrant CRUD operations\n org-owner-grant orgOwnerGrant CRUD operations\n org-member-profile orgMemberProfile CRUD operations\n org-grant orgGrant CRUD operations\n org-chart-edge orgChartEdge CRUD operations\n org-chart-edge-grant orgChartEdgeGrant CRUD operations\n org-permission-default orgPermissionDefault CRUD operations\n app-limit appLimit CRUD operations\n app-limit-credit appLimitCredit CRUD operations\n app-limit-credit-code-item appLimitCreditCodeItem CRUD operations\n app-limit-credit-redemption appLimitCreditRedemption CRUD operations\n org-limit orgLimit CRUD operations\n org-limit-credit orgLimitCredit CRUD operations\n org-limit-aggregate orgLimitAggregate CRUD operations\n app-step appStep CRUD operations\n app-achievement appAchievement CRUD operations\n app-level appLevel CRUD operations\n email email CRUD operations\n phone-number phoneNumber CRUD operations\n crypto-address cryptoAddress CRUD operations\n webauthn-credential webauthnCredential CRUD operations\n app-invite appInvite CRUD operations\n app-claimed-invite appClaimedInvite CRUD operations\n org-invite orgInvite CRUD operations\n org-claimed-invite orgClaimedInvite CRUD operations\n audit-log auditLog CRUD operations\n agent-thread agentThread CRUD operations\n agent-message agentMessage CRUD operations\n agent-task agentTask CRUD operations\n role-type roleType CRUD operations\n identity-provider identityProvider CRUD operations\n ref ref CRUD operations\n store store CRUD operations\n app-permission-default appPermissionDefault CRUD operations\n app-limit-credit-code appLimitCreditCode CRUD operations\n app-limit-caps-default appLimitCapsDefault CRUD operations\n org-limit-caps-default orgLimitCapsDefault CRUD operations\n app-limit-cap appLimitCap CRUD operations\n org-limit-cap orgLimitCap CRUD operations\n membership-type membershipType CRUD operations\n migrate-file migrateFile CRUD operations\n devices-module devicesModule CRUD operations\n node-type-registry nodeTypeRegistry CRUD operations\n app-limit-default appLimitDefault CRUD operations\n org-limit-default orgLimitDefault CRUD operations\n user-connected-account userConnectedAccount CRUD operations\n commit commit CRUD operations\n pubkey-setting pubkeySetting CRUD operations\n rate-limits-module rateLimitsModule CRUD operations\n usage-snapshot usageSnapshot CRUD operations\n app-membership-default appMembershipDefault CRUD operations\n org-membership-default orgMembershipDefault CRUD operations\n rls-setting rlsSetting CRUD operations\n app-limit-event appLimitEvent CRUD operations\n org-limit-event orgLimitEvent CRUD operations\n rls-module rlsModule CRUD operations\n plans-module plansModule CRUD operations\n sql-action sqlAction CRUD operations\n database-setting databaseSetting CRUD operations\n billing-module billingModule CRUD operations\n ast-migration astMigration CRUD operations\n user user CRUD operations\n org-membership-setting orgMembershipSetting CRUD operations\n webauthn-setting webauthnSetting CRUD operations\n app-membership appMembership CRUD operations\n billing-provider-module billingProviderModule CRUD operations\n hierarchy-module hierarchyModule CRUD operations\n current-user-id currentUserId\n current-user-agent currentUserAgent\n current-ip-address currentIpAddress\n require-step-up requireStepUp\n app-permissions-get-padded-mask appPermissionsGetPaddedMask\n org-permissions-get-padded-mask orgPermissionsGetPaddedMask\n steps-achieved stepsAchieved\n rev-parse revParse\n resolve-blueprint-field Resolves a field_name within a given table_id to a field_id. Throws if no match is found. Used by construct_blueprint to translate user-authored field names (e.g. \"location\") into field UUIDs for downstream provisioning procedures. table_id must already be resolved (via resolve_blueprint_table) before calling this.\n org-is-manager-of orgIsManagerOf\n app-permissions-get-mask appPermissionsGetMask\n org-permissions-get-mask orgPermissionsGetMask\n resolve-blueprint-table Resolves a table_name (with optional schema_name) to a table_id. Resolution order: (1) if schema_name provided, exact lookup via metaschema_public.schema.name + metaschema_public.table; (2) check local table_map (tables created in current blueprint); (3) search metaschema_public.table by name across all schemas; (4) if multiple matches, throw ambiguous error asking for schema_name; (5) if no match, throw not-found error.\n app-permissions-get-mask-by-names appPermissionsGetMaskByNames\n org-permissions-get-mask-by-names orgPermissionsGetMaskByNames\n app-permissions-get-by-mask Reads and enables pagination through a set of `AppPermission`.\n org-permissions-get-by-mask Reads and enables pagination through a set of `OrgPermission`.\n get-all-objects-from-root Reads and enables pagination through a set of `Object`.\n get-path-objects-from-root Reads and enables pagination through a set of `Object`.\n get-object-at-path getObjectAtPath\n steps-required Reads and enables pagination through a set of `AppLevelRequirement`.\n current-user currentUser\n send-account-deletion-email sendAccountDeletionEmail\n sign-out signOut\n accept-database-transfer acceptDatabaseTransfer\n cancel-database-transfer cancelDatabaseTransfer\n reject-database-transfer rejectDatabaseTransfer\n disconnect-account disconnectAccount\n revoke-api-key revokeApiKey\n revoke-session revokeSession\n verify-password verifyPassword\n verify-totp verifyTotp\n submit-app-invite-code submitAppInviteCode\n submit-org-invite-code submitOrgInviteCode\n check-password checkPassword\n confirm-delete-account confirmDeleteAccount\n set-password setPassword\n verify-email verifyEmail\n freeze-objects freezeObjects\n init-empty-repo initEmptyRepo\n construct-blueprint Executes a blueprint definition by delegating to provision_* procedures. Creates a blueprint_construction record to track the attempt. Seven phases: (0) entity_type_provision for each membership_type entry \u2014 provisions entity tables, membership modules, and security, (1) provision_table() for each table with nodes[], fields[], policies[], and grants (table-level indexes/fts/unique_constraints/check_constraints are deferred), (2) provision_relation() for each relation, (3) provision_index() for top-level + deferred indexes, (4) provision_full_text_search() for top-level + deferred FTS, (5) provision_unique_constraint() for top-level + deferred unique constraints, (6) provision_check_constraint() for top-level + deferred check constraints. Phase 0 entity tables are added to the table_map so subsequent phases can reference them by name. Table-level entries are deferred to phases 3-6 so they can reference columns created by relations in phase 2. Returns the construction record ID on success, NULL on failure.\n provision-new-user provisionNewUser\n reset-password resetPassword\n remove-node-at-path removeNodeAtPath\n copy-template-to-blueprint Creates a new blueprint by copying a template definition. Checks visibility: owners can always copy their own templates, others require public visibility. Increments the template copy_count. Returns the new blueprint ID.\n provision-spatial-relation Idempotent provisioner for metaschema_public.spatial_relation. Inserts a row declaring a spatial predicate between two geometry/geography columns (owner and target). Called from construct_blueprint when a relation entry has $type=RelationSpatial. Graceful: re-running with the same (source_table_id, name) returns the existing id without modifying the row. Operator whitelist and st_dwithin \u2194 param_name pairing are enforced by the spatial_relation table CHECKs. Both fields must already exist \u2014 this is a metadata-only insert.\n bootstrap-user bootstrapUser\n set-field-order setFieldOrder\n provision-check-constraint Creates a check constraint on a table from a $type + data blueprint definition. Supports: CheckOneOf (enum validation via = ANY(ARRAY[...])), CheckGreaterThan (single-column > value or cross-column), CheckLessThan (single-column < value or cross-column), CheckNotEqual (cross-column inequality). Builds AST expressions via ast_helpers and inserts into metaschema_public.check_constraint. Graceful: skips if a constraint with the same name already exists.\n provision-unique-constraint Creates a unique constraint on a table. Accepts a jsonb definition with columns (array of field names). Graceful: skips if the exact same unique constraint already exists.\n provision-full-text-search Creates a full-text search configuration on a table. Accepts a jsonb definition with field (tsvector column name) and sources (array of {field, weight, lang}). Graceful: skips if FTS config already exists for the same (table_id, field_id). Returns the fts_id.\n provision-index Creates an index on a table. Accepts a jsonb definition with columns (array of names or single column string), access_method (default BTREE), is_unique, op_classes, options, and name (auto-generated if omitted). Graceful: skips if an index with the same (table_id, field_ids, access_method) already exists. Returns the index_id.\n set-data-at-path setDataAtPath\n set-props-and-commit setPropsAndCommit\n provision-database-with-user provisionDatabaseWithUser\n insert-node-at-path insertNodeAtPath\n update-node-at-path updateNodeAtPath\n set-and-commit setAndCommit\n provision-relation Composable relation provisioning: creates FK fields, indexes, unique constraints, and junction tables depending on the relation_type. Supports RelationBelongsTo, RelationHasOne, RelationHasMany, and RelationManyToMany. ManyToMany uses provision_table() internally for junction table creation with full node/grant/policy support. All operations are graceful (skip existing). Returns (out_field_id, out_junction_table_id, out_source_field_id, out_target_field_id).\n apply-rls applyRls\n sign-in-cross-origin signInCrossOrigin\n create-user-database Creates a new user database with all required modules, permissions, and RLS policies.\n\nParameters:\n - database_name: Name for the new database (required)\n - owner_id: UUID of the owner user (required)\n - include_invites: Include invite system (default: true)\n - include_groups: Include group-level memberships (default: false)\n - include_levels: Include levels/achievements (default: false)\n - bitlen: Bit length for permission masks (default: 64)\n - tokens_expiration: Token expiration interval (default: 30 days)\n\nReturns the database_id UUID of the newly created database.\n\nExample usage:\n SELECT metaschema_public.create_user_database('my_app', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::uuid);\n SELECT metaschema_public.create_user_database('my_app', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::uuid, true, true); -- with invites and groups\n\n extend-token-expires extendTokenExpires\n create-api-key createApiKey\n send-verification-email sendVerificationEmail\n forgot-password forgotPassword\n sign-up signUp\n request-cross-origin-token requestCrossOriginToken\n sign-in signIn\n provision-table Composable table provisioning: creates or finds a table, then creates fields (so Data* modules can reference them), applies N nodes (Data* modules), enables RLS, creates grants, creates N policies, and optionally creates table-level indexes/full_text_searches/unique_constraints. All operations are graceful (skip existing). Accepts multiple nodes and multiple policies per call, unlike secure_table_provision which is limited to one of each. Returns (out_table_id, out_fields).\n provision-bucket Provision an S3 bucket for a logical bucket in the database.\nReads the bucket config via RLS, then creates and configures\nthe S3 bucket with the appropriate privacy policies, CORS rules,\nand lifecycle settings.\n\n --help, -h Show this help message\n --version, -v Show version\n";
459
+ const usage = "\ncsdk <command>\n\nCommands:\n context Manage API contexts\n auth Manage authentication\n org-get-managers-record orgGetManagersRecord CRUD operations\n org-get-subordinates-record orgGetSubordinatesRecord CRUD operations\n get-all-record getAllRecord CRUD operations\n app-permission appPermission CRUD operations\n org-permission orgPermission CRUD operations\n object object CRUD operations\n app-level-requirement appLevelRequirement CRUD operations\n database database CRUD operations\n schema schema CRUD operations\n table table CRUD operations\n check-constraint checkConstraint CRUD operations\n field field CRUD operations\n spatial-relation spatialRelation CRUD operations\n foreign-key-constraint foreignKeyConstraint CRUD operations\n full-text-search fullTextSearch CRUD operations\n index index CRUD operations\n policy policy CRUD operations\n primary-key-constraint primaryKeyConstraint CRUD operations\n table-grant tableGrant CRUD operations\n trigger trigger CRUD operations\n unique-constraint uniqueConstraint CRUD operations\n view view CRUD operations\n view-table viewTable CRUD operations\n view-grant viewGrant CRUD operations\n view-rule viewRule CRUD operations\n embedding-chunk embeddingChunk CRUD operations\n secure-table-provision secureTableProvision CRUD operations\n relation-provision relationProvision CRUD operations\n session-secrets-module sessionSecretsModule CRUD operations\n identity-providers-module identityProvidersModule CRUD operations\n realtime-module realtimeModule CRUD operations\n schema-grant schemaGrant CRUD operations\n default-privilege defaultPrivilege CRUD operations\n enum enum CRUD operations\n function function CRUD operations\n api-schema apiSchema CRUD operations\n api-module apiModule CRUD operations\n domain domain CRUD operations\n site-metadatum siteMetadatum CRUD operations\n site-module siteModule CRUD operations\n site-theme siteTheme CRUD operations\n cors-setting corsSetting CRUD operations\n trigger-function triggerFunction CRUD operations\n database-transfer databaseTransfer CRUD operations\n partition partition CRUD operations\n api api CRUD operations\n site site CRUD operations\n app app CRUD operations\n api-setting apiSetting CRUD operations\n connected-accounts-module connectedAccountsModule CRUD operations\n crypto-addresses-module cryptoAddressesModule CRUD operations\n crypto-auth-module cryptoAuthModule CRUD operations\n default-ids-module defaultIdsModule CRUD operations\n denormalized-table-field denormalizedTableField CRUD operations\n emails-module emailsModule CRUD operations\n encrypted-secrets-module encryptedSecretsModule CRUD operations\n invites-module invitesModule CRUD operations\n levels-module levelsModule CRUD operations\n limits-module limitsModule CRUD operations\n membership-types-module membershipTypesModule CRUD operations\n memberships-module membershipsModule CRUD operations\n permissions-module permissionsModule CRUD operations\n phone-numbers-module phoneNumbersModule CRUD operations\n profiles-module profilesModule CRUD operations\n secrets-module secretsModule CRUD operations\n sessions-module sessionsModule CRUD operations\n user-auth-module userAuthModule CRUD operations\n users-module usersModule CRUD operations\n blueprint blueprint CRUD operations\n blueprint-template blueprintTemplate CRUD operations\n blueprint-construction blueprintConstruction CRUD operations\n storage-module storageModule CRUD operations\n entity-type-provision entityTypeProvision CRUD operations\n webauthn-credentials-module webauthnCredentialsModule CRUD operations\n webauthn-auth-module webauthnAuthModule CRUD operations\n notifications-module notificationsModule CRUD operations\n database-provision-module databaseProvisionModule CRUD operations\n app-admin-grant appAdminGrant CRUD operations\n app-owner-grant appOwnerGrant CRUD operations\n app-grant appGrant CRUD operations\n org-membership orgMembership CRUD operations\n org-member orgMember CRUD operations\n org-admin-grant orgAdminGrant CRUD operations\n org-owner-grant orgOwnerGrant CRUD operations\n org-member-profile orgMemberProfile CRUD operations\n org-grant orgGrant CRUD operations\n org-chart-edge orgChartEdge CRUD operations\n org-chart-edge-grant orgChartEdgeGrant CRUD operations\n org-permission-default orgPermissionDefault CRUD operations\n app-limit appLimit CRUD operations\n app-limit-credit appLimitCredit CRUD operations\n app-limit-credit-code-item appLimitCreditCodeItem CRUD operations\n app-limit-credit-redemption appLimitCreditRedemption CRUD operations\n org-limit orgLimit CRUD operations\n org-limit-credit orgLimitCredit CRUD operations\n org-limit-aggregate orgLimitAggregate CRUD operations\n app-step appStep CRUD operations\n app-achievement appAchievement CRUD operations\n app-level appLevel CRUD operations\n email email CRUD operations\n phone-number phoneNumber CRUD operations\n crypto-address cryptoAddress CRUD operations\n webauthn-credential webauthnCredential CRUD operations\n app-invite appInvite CRUD operations\n app-claimed-invite appClaimedInvite CRUD operations\n org-invite orgInvite CRUD operations\n org-claimed-invite orgClaimedInvite CRUD operations\n audit-log auditLog CRUD operations\n agent-thread agentThread CRUD operations\n agent-message agentMessage CRUD operations\n agent-task agentTask CRUD operations\n role-type roleType CRUD operations\n identity-provider identityProvider CRUD operations\n ref ref CRUD operations\n store store CRUD operations\n app-permission-default appPermissionDefault CRUD operations\n app-limit-credit-code appLimitCreditCode CRUD operations\n app-limit-caps-default appLimitCapsDefault CRUD operations\n org-limit-caps-default orgLimitCapsDefault CRUD operations\n app-limit-cap appLimitCap CRUD operations\n org-limit-cap orgLimitCap CRUD operations\n membership-type membershipType CRUD operations\n migrate-file migrateFile CRUD operations\n devices-module devicesModule CRUD operations\n node-type-registry nodeTypeRegistry CRUD operations\n app-limit-default appLimitDefault CRUD operations\n org-limit-default orgLimitDefault CRUD operations\n user-connected-account userConnectedAccount CRUD operations\n commit commit CRUD operations\n pubkey-setting pubkeySetting CRUD operations\n rate-limits-module rateLimitsModule CRUD operations\n usage-snapshot usageSnapshot CRUD operations\n app-membership-default appMembershipDefault CRUD operations\n org-membership-default orgMembershipDefault CRUD operations\n rls-setting rlsSetting CRUD operations\n app-limit-event appLimitEvent CRUD operations\n org-limit-event orgLimitEvent CRUD operations\n rls-module rlsModule CRUD operations\n plans-module plansModule CRUD operations\n sql-action sqlAction CRUD operations\n database-setting databaseSetting CRUD operations\n billing-module billingModule CRUD operations\n ast-migration astMigration CRUD operations\n user user CRUD operations\n org-membership-setting orgMembershipSetting CRUD operations\n webauthn-setting webauthnSetting CRUD operations\n app-membership appMembership CRUD operations\n billing-provider-module billingProviderModule CRUD operations\n hierarchy-module hierarchyModule CRUD operations\n current-user-id currentUserId\n current-user-agent currentUserAgent\n current-ip-address currentIpAddress\n require-step-up requireStepUp\n app-permissions-get-padded-mask appPermissionsGetPaddedMask\n org-permissions-get-padded-mask orgPermissionsGetPaddedMask\n steps-achieved stepsAchieved\n rev-parse revParse\n resolve-blueprint-field Resolves a field_name within a given table_id to a field_id. Throws if no match is found. Used by construct_blueprint to translate user-authored field names (e.g. \"location\") into field UUIDs for downstream provisioning procedures. table_id must already be resolved (via resolve_blueprint_table) before calling this.\n org-is-manager-of orgIsManagerOf\n app-permissions-get-mask appPermissionsGetMask\n org-permissions-get-mask orgPermissionsGetMask\n resolve-blueprint-table Resolves a table_name (with optional schema_name) to a table_id. Resolution order: (1) if schema_name provided, exact lookup via metaschema_public.schema.name + metaschema_public.table; (2) check local table_map (tables created in current blueprint); (3) search metaschema_public.table by name across all schemas; (4) if multiple matches, throw ambiguous error asking for schema_name; (5) if no match, throw not-found error.\n app-permissions-get-mask-by-names appPermissionsGetMaskByNames\n org-permissions-get-mask-by-names orgPermissionsGetMaskByNames\n app-permissions-get-by-mask Reads and enables pagination through a set of `AppPermission`.\n org-permissions-get-by-mask Reads and enables pagination through a set of `OrgPermission`.\n get-all-objects-from-root Reads and enables pagination through a set of `Object`.\n get-path-objects-from-root Reads and enables pagination through a set of `Object`.\n get-object-at-path getObjectAtPath\n steps-required Reads and enables pagination through a set of `AppLevelRequirement`.\n current-user currentUser\n send-account-deletion-email sendAccountDeletionEmail\n sign-out signOut\n accept-database-transfer acceptDatabaseTransfer\n cancel-database-transfer cancelDatabaseTransfer\n reject-database-transfer rejectDatabaseTransfer\n disconnect-account disconnectAccount\n revoke-api-key revokeApiKey\n revoke-session revokeSession\n verify-password verifyPassword\n verify-totp verifyTotp\n submit-app-invite-code submitAppInviteCode\n submit-org-invite-code submitOrgInviteCode\n check-password checkPassword\n confirm-delete-account confirmDeleteAccount\n set-password setPassword\n verify-email verifyEmail\n freeze-objects freezeObjects\n init-empty-repo initEmptyRepo\n construct-blueprint Executes a blueprint definition by delegating to provision_* procedures. Creates a blueprint_construction record to track the attempt. Seven phases: (0) entity_type_provision for each membership_type entry \u2014 provisions entity tables, membership modules, and security, (1) provision_table() for each table with nodes[], fields[], policies[], and grants (table-level indexes/fts/unique_constraints/check_constraints are deferred), (2) provision_relation() for each relation, (3) provision_index() for top-level + deferred indexes, (4) provision_full_text_search() for top-level + deferred FTS, (5) provision_unique_constraint() for top-level + deferred unique constraints, (6) provision_check_constraint() for top-level + deferred check constraints. Phase 0 entity tables are added to the table_map so subsequent phases can reference them by name. Table-level entries are deferred to phases 3-6 so they can reference columns created by relations in phase 2. Returns the construction record ID on success, NULL on failure.\n provision-new-user provisionNewUser\n reset-password resetPassword\n remove-node-at-path removeNodeAtPath\n copy-template-to-blueprint Creates a new blueprint by copying a template definition. Checks visibility: owners can always copy their own templates, others require public visibility. Increments the template copy_count. Returns the new blueprint ID.\n provision-spatial-relation Idempotent provisioner for metaschema_public.spatial_relation. Inserts a row declaring a spatial predicate between two geometry/geography columns (owner and target). Called from construct_blueprint when a relation entry has $type=RelationSpatial. Graceful: re-running with the same (source_table_id, name) returns the existing id without modifying the row. Operator whitelist and st_dwithin \u2194 param_name pairing are enforced by the spatial_relation table CHECKs. Both fields must already exist \u2014 this is a metadata-only insert.\n bootstrap-user bootstrapUser\n set-field-order setFieldOrder\n provision-check-constraint Creates a check constraint on a table from a $type + data blueprint definition. Supports: CheckOneOf (enum validation via = ANY(ARRAY[...])), CheckGreaterThan (single-column > value or cross-column), CheckLessThan (single-column < value or cross-column), CheckNotEqual (cross-column inequality). Builds AST expressions via ast_helpers and inserts into metaschema_public.check_constraint. Graceful: skips if a constraint with the same name already exists.\n provision-unique-constraint Creates a unique constraint on a table. Accepts a jsonb definition with columns (array of field names). Graceful: skips if the exact same unique constraint already exists.\n provision-full-text-search Creates a full-text search configuration on a table. Accepts a jsonb definition with field (tsvector column name) and sources (array of {field, weight, lang}). Graceful: skips if FTS config already exists for the same (table_id, field_id). Returns the fts_id.\n provision-index Creates an index on a table. Accepts a jsonb definition with columns (array of names or single column string), access_method (default BTREE), is_unique, op_classes, options, and name (auto-generated if omitted). Graceful: skips if an index with the same (table_id, field_ids, access_method) already exists. Returns the index_id.\n set-data-at-path setDataAtPath\n set-props-and-commit setPropsAndCommit\n provision-database-with-user provisionDatabaseWithUser\n insert-node-at-path insertNodeAtPath\n update-node-at-path updateNodeAtPath\n set-and-commit setAndCommit\n provision-relation Composable relation provisioning: creates FK fields, indexes, unique constraints, and junction tables depending on the relation_type. Supports RelationBelongsTo, RelationHasOne, RelationHasMany, and RelationManyToMany. ManyToMany uses provision_table() internally for junction table creation with full node/grant/policy support. All operations are graceful (skip existing). Returns (out_field_id, out_junction_table_id, out_source_field_id, out_target_field_id).\n apply-rls applyRls\n sign-in-cross-origin signInCrossOrigin\n create-user-database Creates a new user database with all required modules, permissions, and RLS policies.\n\nParameters:\n - database_name: Name for the new database (required)\n - owner_id: UUID of the owner user (required)\n - include_invites: Include invite system (default: true)\n - include_groups: Include group-level memberships (default: false)\n - include_levels: Include levels/achievements (default: false)\n - bitlen: Bit length for permission masks (default: 64)\n - tokens_expiration: Token expiration interval (default: 30 days)\n\nReturns the database_id UUID of the newly created database.\n\nExample usage:\n SELECT metaschema_public.create_user_database('my_app', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::uuid);\n SELECT metaschema_public.create_user_database('my_app', 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'::uuid, true, true); -- with invites and groups\n\n extend-token-expires extendTokenExpires\n create-api-key createApiKey\n send-verification-email sendVerificationEmail\n forgot-password forgotPassword\n sign-up signUp\n request-cross-origin-token requestCrossOriginToken\n sign-in signIn\n provision-table Composable table provisioning: creates or finds a table, then creates fields (so Data* modules can reference them), applies N nodes (Data* modules), enables RLS, creates grants, creates N policies, and optionally creates table-level indexes/full_text_searches/unique_constraints. All operations are graceful (skip existing). Accepts multiple nodes and multiple policies per call, unlike secure_table_provision which is limited to one of each. Returns (out_table_id, out_fields).\n provision-bucket Provision an S3 bucket for a logical bucket in the database.\nReads the bucket config via RLS, then creates and configures\nthe S3 bucket with the appropriate privacy policies, CORS rules,\nand lifecycle settings.\n\n --help, -h Show this help message\n --version, -v Show version\n";
460
460
  const commands = async (argv, prompter, options) => {
461
461
  if (argv.help || argv.h) {
462
462
  console.log(usage);
@@ -13,7 +13,6 @@ export declare function getClient(contextName?: string): {
13
13
  checkConstraint: import("../orm").CheckConstraintModel;
14
14
  field: import("../orm").FieldModel;
15
15
  spatialRelation: import("../orm").SpatialRelationModel;
16
- partition: import("../orm").PartitionModel;
17
16
  foreignKeyConstraint: import("../orm").ForeignKeyConstraintModel;
18
17
  fullTextSearch: import("../orm").FullTextSearchModel;
19
18
  index: import("../orm").IndexModel;
@@ -45,6 +44,7 @@ export declare function getClient(contextName?: string): {
45
44
  corsSetting: import("../orm").CorsSettingModel;
46
45
  triggerFunction: import("../orm").TriggerFunctionModel;
47
46
  databaseTransfer: import("../orm").DatabaseTransferModel;
47
+ partition: import("../orm").PartitionModel;
48
48
  api: import("../orm").ApiModel;
49
49
  site: import("../orm").SiteModel;
50
50
  app: import("../orm").AppModel;
@@ -12,7 +12,6 @@ import { TableModel } from './models/table';
12
12
  import { CheckConstraintModel } from './models/checkConstraint';
13
13
  import { FieldModel } from './models/field';
14
14
  import { SpatialRelationModel } from './models/spatialRelation';
15
- import { PartitionModel } from './models/partition';
16
15
  import { ForeignKeyConstraintModel } from './models/foreignKeyConstraint';
17
16
  import { FullTextSearchModel } from './models/fullTextSearch';
18
17
  import { IndexModel } from './models/index';
@@ -44,6 +43,7 @@ import { SiteThemeModel } from './models/siteTheme';
44
43
  import { CorsSettingModel } from './models/corsSetting';
45
44
  import { TriggerFunctionModel } from './models/triggerFunction';
46
45
  import { DatabaseTransferModel } from './models/databaseTransfer';
46
+ import { PartitionModel } from './models/partition';
47
47
  import { ApiModel } from './models/api';
48
48
  import { SiteModel } from './models/site';
49
49
  import { AppModel } from './models/app';
@@ -192,7 +192,6 @@ export declare function createClient(config: OrmClientConfig): {
192
192
  checkConstraint: CheckConstraintModel;
193
193
  field: FieldModel;
194
194
  spatialRelation: SpatialRelationModel;
195
- partition: PartitionModel;
196
195
  foreignKeyConstraint: ForeignKeyConstraintModel;
197
196
  fullTextSearch: FullTextSearchModel;
198
197
  index: IndexModel;
@@ -224,6 +223,7 @@ export declare function createClient(config: OrmClientConfig): {
224
223
  corsSetting: CorsSettingModel;
225
224
  triggerFunction: TriggerFunctionModel;
226
225
  databaseTransfer: DatabaseTransferModel;
226
+ partition: PartitionModel;
227
227
  api: ApiModel;
228
228
  site: SiteModel;
229
229
  app: AppModel;
@@ -35,7 +35,6 @@ const table_1 = require("./models/table");
35
35
  const checkConstraint_1 = require("./models/checkConstraint");
36
36
  const field_1 = require("./models/field");
37
37
  const spatialRelation_1 = require("./models/spatialRelation");
38
- const partition_1 = require("./models/partition");
39
38
  const foreignKeyConstraint_1 = require("./models/foreignKeyConstraint");
40
39
  const fullTextSearch_1 = require("./models/fullTextSearch");
41
40
  const index_1 = require("./models/index");
@@ -67,6 +66,7 @@ const siteTheme_1 = require("./models/siteTheme");
67
66
  const corsSetting_1 = require("./models/corsSetting");
68
67
  const triggerFunction_1 = require("./models/triggerFunction");
69
68
  const databaseTransfer_1 = require("./models/databaseTransfer");
69
+ const partition_1 = require("./models/partition");
70
70
  const api_1 = require("./models/api");
71
71
  const site_1 = require("./models/site");
72
72
  const app_1 = require("./models/app");
@@ -222,7 +222,6 @@ function createClient(config) {
222
222
  checkConstraint: new checkConstraint_1.CheckConstraintModel(client),
223
223
  field: new field_1.FieldModel(client),
224
224
  spatialRelation: new spatialRelation_1.SpatialRelationModel(client),
225
- partition: new partition_1.PartitionModel(client),
226
225
  foreignKeyConstraint: new foreignKeyConstraint_1.ForeignKeyConstraintModel(client),
227
226
  fullTextSearch: new fullTextSearch_1.FullTextSearchModel(client),
228
227
  index: new index_1.IndexModel(client),
@@ -254,6 +253,7 @@ function createClient(config) {
254
253
  corsSetting: new corsSetting_1.CorsSettingModel(client),
255
254
  triggerFunction: new triggerFunction_1.TriggerFunctionModel(client),
256
255
  databaseTransfer: new databaseTransfer_1.DatabaseTransferModel(client),
256
+ partition: new partition_1.PartitionModel(client),
257
257
  api: new api_1.ApiModel(client),
258
258
  site: new site_1.SiteModel(client),
259
259
  app: new app_1.AppModel(client),