@seliseblocks/cli-os 0.1.4 → 0.2.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/AI_USAGE_GUIDE.md +328 -58
- package/README.md +84 -47
- package/dist/commands/auth/client-credentials/delete.d.ts +1 -0
- package/dist/commands/auth/client-credentials/delete.js +23 -0
- package/dist/commands/auth/client-credentials/list.d.ts +1 -0
- package/dist/commands/auth/client-credentials/list.js +14 -0
- package/dist/commands/auth/client-credentials/save.d.ts +1 -0
- package/dist/commands/auth/client-credentials/save.js +41 -0
- package/dist/commands/auth/config/get.d.ts +1 -0
- package/dist/commands/auth/config/get.js +14 -0
- package/dist/commands/auth/config/save.d.ts +1 -0
- package/dist/commands/auth/config/save.js +37 -0
- package/dist/commands/auth/idp/create.d.ts +1 -0
- package/dist/commands/auth/idp/create.js +46 -0
- package/dist/commands/auth/idp/delete.d.ts +1 -0
- package/dist/commands/auth/idp/delete.js +23 -0
- package/dist/commands/auth/idp/get.d.ts +1 -0
- package/dist/commands/auth/idp/get.js +16 -0
- package/dist/commands/auth/idp/list.d.ts +1 -0
- package/dist/commands/auth/idp/list.js +14 -0
- package/dist/commands/auth/idp/status.d.ts +1 -0
- package/dist/commands/auth/idp/status.js +27 -0
- package/dist/commands/auth/idp/update.d.ts +7 -0
- package/dist/commands/auth/idp/update.js +45 -0
- package/dist/commands/auth/oidc-clients/delete.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/delete.js +23 -0
- package/dist/commands/auth/oidc-clients/get.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/get.js +16 -0
- package/dist/commands/auth/oidc-clients/list.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/list.js +14 -0
- package/dist/commands/auth/oidc-clients/rotate-secret.d.ts +1 -0
- package/dist/commands/auth/oidc-clients/rotate-secret.js +23 -0
- package/dist/commands/auth/oidc-clients/save.d.ts +2 -0
- package/dist/commands/auth/oidc-clients/save.js +57 -0
- package/dist/commands/auth/refresh.js +1 -1
- package/dist/commands/data/config/create.d.ts +1 -0
- package/dist/commands/data/config/create.js +38 -0
- package/dist/commands/data/config/get.d.ts +1 -0
- package/dist/commands/data/config/get.js +14 -0
- package/dist/commands/data/config/update.d.ts +1 -0
- package/dist/commands/data/config/update.js +41 -0
- package/dist/commands/data/files/create-folder.d.ts +1 -0
- package/dist/commands/data/files/create-folder.js +34 -0
- package/dist/commands/data/files/delete-folder.d.ts +1 -0
- package/dist/commands/data/files/delete-folder.js +25 -0
- package/dist/commands/data/files/delete.d.ts +1 -0
- package/dist/commands/data/files/delete.js +28 -0
- package/dist/commands/data/files/dms-list.d.ts +1 -0
- package/dist/commands/data/files/dms-list.js +27 -0
- package/dist/commands/data/files/dms-upload.d.ts +6 -0
- package/dist/commands/data/files/dms-upload.js +41 -0
- package/dist/commands/data/files/get-many.d.ts +1 -0
- package/dist/commands/data/files/get-many.js +24 -0
- package/dist/commands/data/files/get.d.ts +1 -0
- package/dist/commands/data/files/get.js +21 -0
- package/dist/commands/data/files/info.d.ts +1 -0
- package/dist/commands/data/files/info.js +30 -0
- package/dist/commands/data/files/presigned-upload-url.d.ts +6 -0
- package/dist/commands/data/files/presigned-upload-url.js +34 -0
- package/dist/commands/data/files/update-additional-info.d.ts +1 -0
- package/dist/commands/data/files/update-additional-info.js +26 -0
- package/dist/commands/data/files/upload-to-local-storage.d.ts +5 -0
- package/dist/commands/data/files/upload-to-local-storage.js +55 -0
- package/dist/commands/data/files/upload-to-url.d.ts +8 -0
- package/dist/commands/data/files/upload-to-url.js +36 -0
- package/dist/commands/data/files/upload.d.ts +7 -0
- package/dist/commands/data/files/upload.js +145 -0
- package/dist/commands/data/rules/policy/delete.d.ts +1 -0
- package/dist/commands/data/rules/policy/delete.js +24 -0
- package/dist/commands/data/rules/policy/get.d.ts +1 -0
- package/dist/commands/data/rules/policy/get.js +17 -0
- package/dist/commands/data/schema/aggregation.d.ts +1 -0
- package/dist/commands/data/schema/aggregation.js +26 -0
- package/dist/commands/data/schema/change-logs.d.ts +1 -0
- package/dist/commands/data/schema/change-logs.js +14 -0
- package/dist/commands/data/schema/delete.d.ts +1 -0
- package/dist/commands/data/schema/delete.js +24 -0
- package/dist/commands/data/schema/fields.d.ts +5 -0
- package/dist/commands/data/schema/fields.js +39 -0
- package/dist/commands/data/schema/get-by-name.d.ts +1 -0
- package/dist/commands/data/schema/get-by-name.js +17 -0
- package/dist/commands/data/schema/get.d.ts +1 -0
- package/dist/commands/data/schema/get.js +17 -0
- package/dist/commands/data/schema/info/list.d.ts +1 -0
- package/dist/commands/data/schema/info/list.js +15 -0
- package/dist/commands/data/schema/info/save.d.ts +1 -0
- package/dist/commands/data/schema/info/save.js +34 -0
- package/dist/commands/data/schema/info/update.d.ts +1 -0
- package/dist/commands/data/schema/info/update.js +35 -0
- package/dist/commands/data/sync.d.ts +7 -0
- package/dist/commands/data/sync.js +46 -0
- package/dist/commands/data/validation/by-schema-field.d.ts +1 -0
- package/dist/commands/data/validation/by-schema-field.js +18 -0
- package/dist/commands/data/validation/by-schema.d.ts +1 -0
- package/dist/commands/data/validation/by-schema.js +17 -0
- package/dist/commands/data/validation/delete.d.ts +1 -0
- package/dist/commands/data/validation/delete.js +24 -0
- package/dist/commands/data/validation/get.d.ts +1 -0
- package/dist/commands/data/validation/get.js +17 -0
- package/dist/commands/data/validation/list.d.ts +1 -0
- package/dist/commands/data/validation/list.js +25 -0
- package/dist/commands/data/validation/save.d.ts +6 -0
- package/dist/commands/data/validation/save.js +44 -0
- package/dist/commands/deselect.js +12 -22
- package/dist/commands/iam/email/available.d.ts +1 -0
- package/dist/commands/iam/email/available.js +17 -0
- package/dist/commands/iam/me.js +4 -1
- package/dist/commands/iam/organizations/config-get.d.ts +1 -0
- package/dist/commands/iam/organizations/config-get.js +14 -0
- package/dist/commands/iam/organizations/config-save.d.ts +1 -0
- package/dist/commands/iam/organizations/config-save.js +34 -0
- package/dist/commands/iam/organizations/create.d.ts +1 -0
- package/dist/commands/iam/organizations/create.js +37 -0
- package/dist/commands/iam/organizations/get.d.ts +1 -0
- package/dist/commands/iam/organizations/get.js +16 -0
- package/dist/commands/iam/organizations/list.d.ts +1 -0
- package/dist/commands/iam/organizations/list.js +26 -0
- package/dist/commands/iam/organizations/my.d.ts +1 -0
- package/dist/commands/iam/organizations/my.js +14 -0
- package/dist/commands/iam/organizations/update.d.ts +1 -0
- package/dist/commands/iam/organizations/update.js +39 -0
- package/dist/commands/iam/permissions/by-severity.d.ts +1 -0
- package/dist/commands/iam/permissions/by-severity.js +14 -0
- package/dist/commands/iam/permissions/create.d.ts +1 -0
- package/dist/commands/iam/permissions/create.js +39 -0
- package/dist/commands/iam/permissions/get.d.ts +1 -0
- package/dist/commands/iam/permissions/get.js +16 -0
- package/dist/commands/iam/permissions/list.d.ts +1 -0
- package/dist/commands/iam/permissions/list.js +41 -0
- package/dist/commands/iam/permissions/update.d.ts +1 -0
- package/dist/commands/iam/permissions/update.js +40 -0
- package/dist/commands/iam/resources/features.d.ts +1 -0
- package/dist/commands/iam/resources/features.js +19 -0
- package/dist/commands/iam/resources/groups.d.ts +1 -0
- package/dist/commands/iam/resources/groups.js +14 -0
- package/dist/commands/iam/roles/assign-permissions.d.ts +1 -0
- package/dist/commands/iam/roles/assign-permissions.js +33 -0
- package/dist/commands/iam/roles/assignable.d.ts +1 -0
- package/dist/commands/iam/roles/assignable.js +14 -0
- package/dist/commands/iam/roles/create.d.ts +1 -0
- package/dist/commands/iam/roles/create.js +35 -0
- package/dist/commands/iam/roles/get.d.ts +1 -0
- package/dist/commands/iam/roles/get.js +16 -0
- package/dist/commands/iam/roles/list.d.ts +1 -0
- package/dist/commands/iam/roles/list.js +34 -0
- package/dist/commands/iam/roles/update.d.ts +1 -0
- package/dist/commands/iam/roles/update.js +35 -0
- package/dist/commands/iam/signup-settings/get.d.ts +1 -0
- package/dist/commands/iam/signup-settings/get.js +14 -0
- package/dist/commands/iam/signup-settings/save.d.ts +1 -0
- package/dist/commands/iam/signup-settings/save.js +32 -0
- package/dist/commands/iam/users/access-grant.d.ts +1 -0
- package/dist/commands/iam/users/access-grant.js +32 -0
- package/dist/commands/iam/users/access-revoke.d.ts +1 -0
- package/dist/commands/iam/users/access-revoke.js +24 -0
- package/dist/commands/iam/users/activate.d.ts +1 -0
- package/dist/commands/iam/users/activate.js +24 -0
- package/dist/commands/iam/users/create.d.ts +1 -0
- package/dist/commands/iam/users/create.js +39 -0
- package/dist/commands/iam/users/deactivate.d.ts +1 -0
- package/dist/commands/iam/users/deactivate.js +24 -0
- package/dist/commands/iam/users/exists.d.ts +1 -0
- package/dist/commands/iam/users/exists.js +17 -0
- package/dist/commands/iam/users/get.d.ts +1 -0
- package/dist/commands/iam/users/get.js +17 -0
- package/dist/commands/iam/users/list.d.ts +1 -0
- package/dist/commands/iam/users/list.js +34 -0
- package/dist/commands/iam/users/update.d.ts +1 -0
- package/dist/commands/iam/users/update.js +35 -0
- package/dist/commands/init.js +0 -12
- package/dist/commands/localization/assistant/translation-suggestion.d.ts +1 -0
- package/dist/commands/localization/assistant/translation-suggestion.js +35 -0
- package/dist/commands/localization/config/get-webhook.d.ts +1 -0
- package/dist/commands/localization/config/get-webhook.js +14 -0
- package/dist/commands/localization/config/save-webhook.d.ts +1 -0
- package/dist/commands/localization/config/save-webhook.js +47 -0
- package/dist/commands/localization/glossary/delete.d.ts +1 -0
- package/dist/commands/localization/glossary/delete.js +24 -0
- package/dist/commands/localization/glossary/get.d.ts +1 -0
- package/dist/commands/localization/glossary/get.js +17 -0
- package/dist/commands/localization/glossary/list.d.ts +1 -0
- package/dist/commands/localization/glossary/list.js +22 -0
- package/dist/commands/localization/glossary/save.d.ts +1 -0
- package/dist/commands/localization/glossary/save.js +38 -0
- package/dist/commands/localization/glossary/suggested.d.ts +1 -0
- package/dist/commands/localization/glossary/suggested.js +20 -0
- package/dist/commands/localization/key/delete-keys.d.ts +1 -0
- package/dist/commands/localization/key/delete-keys.js +28 -0
- package/dist/commands/localization/key/delete.d.ts +1 -0
- package/dist/commands/localization/key/delete.js +24 -0
- package/dist/commands/localization/key/generate-uilm-file.d.ts +1 -0
- package/dist/commands/localization/key/generate-uilm-file.js +29 -0
- package/dist/commands/localization/key/get-by-names.d.ts +1 -0
- package/dist/commands/localization/key/get-by-names.js +24 -0
- package/dist/commands/localization/key/get-language-file-generation-history.d.ts +1 -0
- package/dist/commands/localization/key/get-language-file-generation-history.js +19 -0
- package/dist/commands/localization/key/get-localization-timeline.d.ts +1 -0
- package/dist/commands/localization/key/get-localization-timeline.js +28 -0
- package/dist/commands/localization/key/get-timeline-by-operation-id.d.ts +1 -0
- package/dist/commands/localization/key/get-timeline-by-operation-id.js +21 -0
- package/dist/commands/localization/key/get-timeline.d.ts +1 -0
- package/dist/commands/localization/key/get-timeline.js +25 -0
- package/dist/commands/localization/key/get-uilm-exported-files.d.ts +1 -0
- package/dist/commands/localization/key/get-uilm-exported-files.js +22 -0
- package/dist/commands/localization/key/get-uilm-file.d.ts +1 -0
- package/dist/commands/localization/key/get-uilm-file.js +18 -0
- package/dist/commands/localization/key/get.d.ts +1 -0
- package/dist/commands/localization/key/get.js +17 -0
- package/dist/commands/localization/key/list.d.ts +1 -0
- package/dist/commands/localization/key/list.js +39 -0
- package/dist/commands/localization/key/rollback.d.ts +1 -0
- package/dist/commands/localization/key/rollback.js +24 -0
- package/dist/commands/localization/key/save.d.ts +1 -0
- package/dist/commands/localization/key/save.js +44 -0
- package/dist/commands/localization/key/translate-all.d.ts +1 -0
- package/dist/commands/localization/key/translate-all.js +30 -0
- package/dist/commands/localization/key/translate-and-export.d.ts +7 -0
- package/dist/commands/localization/key/translate-and-export.js +132 -0
- package/dist/commands/localization/key/translate-key.d.ts +1 -0
- package/dist/commands/localization/key/translate-key.js +27 -0
- package/dist/commands/localization/key/translate-keys.d.ts +1 -0
- package/dist/commands/localization/key/translate-keys.js +31 -0
- package/dist/commands/localization/key/uilm-export.d.ts +1 -0
- package/dist/commands/localization/key/uilm-export.js +33 -0
- package/dist/commands/localization/key/uilm-import.d.ts +1 -0
- package/dist/commands/localization/key/uilm-import.js +26 -0
- package/dist/commands/localization/language/delete.d.ts +1 -0
- package/dist/commands/localization/language/delete.js +24 -0
- package/dist/commands/localization/language/list-for-tenant.d.ts +1 -0
- package/dist/commands/localization/language/list-for-tenant.js +14 -0
- package/dist/commands/localization/language/list.d.ts +1 -0
- package/dist/commands/localization/language/list.js +14 -0
- package/dist/commands/localization/language/save.d.ts +1 -0
- package/dist/commands/localization/language/save.js +36 -0
- package/dist/commands/localization/language/set-default.d.ts +1 -0
- package/dist/commands/localization/language/set-default.js +24 -0
- package/dist/commands/localization/module/list-for-tenant.d.ts +1 -0
- package/dist/commands/localization/module/list-for-tenant.js +14 -0
- package/dist/commands/localization/module/list.d.ts +1 -0
- package/dist/commands/localization/module/list.js +14 -0
- package/dist/commands/localization/module/save.d.ts +1 -0
- package/dist/commands/localization/module/save.js +32 -0
- package/dist/commands/localization/module/tag-glossary.d.ts +1 -0
- package/dist/commands/localization/module/tag-glossary.js +28 -0
- package/dist/commands/login.js +32 -1
- package/dist/commands/mail/config/delete.d.ts +1 -0
- package/dist/commands/mail/config/delete.js +24 -0
- package/dist/commands/mail/config/duplicate.d.ts +1 -0
- package/dist/commands/mail/config/duplicate.js +24 -0
- package/dist/commands/mail/config/get.d.ts +1 -0
- package/dist/commands/mail/config/get.js +17 -0
- package/dist/commands/mail/config/list.d.ts +1 -0
- package/dist/commands/mail/config/list.js +14 -0
- package/dist/commands/mail/config/save.d.ts +1 -0
- package/dist/commands/mail/config/save.js +44 -0
- package/dist/commands/mail/mailbox/get.d.ts +1 -0
- package/dist/commands/mail/mailbox/get.js +17 -0
- package/dist/commands/mail/mailbox/list.d.ts +1 -0
- package/dist/commands/mail/mailbox/list.js +24 -0
- package/dist/commands/mail/send.d.ts +1 -0
- package/dist/commands/mail/send.js +40 -0
- package/dist/commands/mail/sendtoany.d.ts +1 -0
- package/dist/commands/mail/sendtoany.js +41 -0
- package/dist/commands/mail/template/clone.d.ts +1 -0
- package/dist/commands/mail/template/clone.js +33 -0
- package/dist/commands/mail/template/delete.d.ts +1 -0
- package/dist/commands/mail/template/delete.js +24 -0
- package/dist/commands/mail/template/get.d.ts +1 -0
- package/dist/commands/mail/template/get.js +17 -0
- package/dist/commands/mail/template/list.d.ts +1 -0
- package/dist/commands/mail/template/list.js +24 -0
- package/dist/commands/mail/template/save.d.ts +1 -0
- package/dist/commands/mail/template/save.js +37 -0
- package/dist/commands/mfa/backup-codes/generate.d.ts +1 -0
- package/dist/commands/mfa/backup-codes/generate.js +22 -0
- package/dist/commands/mfa/backup-codes/list.d.ts +1 -0
- package/dist/commands/mfa/backup-codes/list.js +14 -0
- package/dist/commands/mfa/backup-codes/use.d.ts +1 -0
- package/dist/commands/mfa/backup-codes/use.js +18 -0
- package/dist/commands/mfa/config-get.d.ts +1 -0
- package/dist/commands/mfa/config-get.js +14 -0
- package/dist/commands/mfa/config-save.d.ts +1 -0
- package/dist/commands/mfa/config-save.js +36 -0
- package/dist/commands/mfa/disable.d.ts +1 -0
- package/dist/commands/mfa/disable.js +22 -0
- package/dist/commands/mfa/generate.d.ts +1 -0
- package/dist/commands/mfa/generate.js +22 -0
- package/dist/commands/mfa/method-set.d.ts +1 -0
- package/dist/commands/mfa/method-set.js +20 -0
- package/dist/commands/mfa/resend.d.ts +1 -0
- package/dist/commands/mfa/resend.js +20 -0
- package/dist/commands/mfa/totp-enable.d.ts +10 -0
- package/dist/commands/mfa/totp-enable.js +52 -0
- package/dist/commands/mfa/totp-setup.d.ts +1 -0
- package/dist/commands/mfa/totp-setup.js +15 -0
- package/dist/commands/mfa/totp-verify-setup.d.ts +1 -0
- package/dist/commands/mfa/totp-verify-setup.js +17 -0
- package/dist/commands/mfa/verify.d.ts +1 -0
- package/dist/commands/mfa/verify.js +26 -0
- package/dist/commands/new/web.js +115 -15
- package/dist/commands/notification/delete.d.ts +1 -0
- package/dist/commands/notification/delete.js +24 -0
- package/dist/commands/notification/get.d.ts +1 -0
- package/dist/commands/notification/get.js +17 -0
- package/dist/commands/notification/list.d.ts +1 -0
- package/dist/commands/notification/list.js +22 -0
- package/dist/commands/notification/save.d.ts +1 -0
- package/dist/commands/notification/save.js +34 -0
- package/dist/commands/notifier/list.d.ts +1 -0
- package/dist/commands/notifier/list.js +23 -0
- package/dist/commands/notifier/mark-all-read.d.ts +1 -0
- package/dist/commands/notifier/mark-all-read.js +23 -0
- package/dist/commands/notifier/mark-read.d.ts +1 -0
- package/dist/commands/notifier/mark-read.js +24 -0
- package/dist/commands/notifier/notify.d.ts +1 -0
- package/dist/commands/notifier/notify.js +39 -0
- package/dist/commands/notifier/unread.d.ts +1 -0
- package/dist/commands/notifier/unread.js +25 -0
- package/dist/commands/projects/get.js +16 -14
- package/dist/commands/projects/list.js +2 -7
- package/dist/commands/release/builds/list.js +21 -3
- package/dist/commands/release/deploy.js +121 -30
- package/dist/commands/sdk/client.d.ts +1 -0
- package/dist/commands/sdk/client.js +99 -0
- package/dist/commands/secrets/get.d.ts +1 -0
- package/dist/commands/secrets/get.js +21 -0
- package/dist/commands/secrets/save.d.ts +1 -0
- package/dist/commands/secrets/save.js +51 -0
- package/dist/commands/skill/add.d.ts +1 -0
- package/dist/commands/skill/add.js +19 -0
- package/dist/commands/skill/list.d.ts +1 -0
- package/dist/commands/skill/list.js +15 -0
- package/dist/commands/skill/show.d.ts +1 -0
- package/dist/commands/skill/show.js +15 -0
- package/dist/commands/storage/config/delete.d.ts +1 -0
- package/dist/commands/storage/config/delete.js +24 -0
- package/dist/commands/storage/config/get.d.ts +1 -0
- package/dist/commands/storage/config/get.js +17 -0
- package/dist/commands/storage/config/list.d.ts +1 -0
- package/dist/commands/storage/config/list.js +14 -0
- package/dist/commands/storage/config/save.d.ts +1 -0
- package/dist/commands/storage/config/save.js +49 -0
- package/dist/commands/use.js +18 -3
- package/dist/index.js +965 -160
- package/dist/lib/api.d.ts +2 -1
- package/dist/lib/api.js +64 -20
- package/dist/lib/args.d.ts +3 -0
- package/dist/lib/args.js +15 -0
- package/dist/lib/auth.d.ts +6 -2
- package/dist/lib/auth.js +74 -35
- package/dist/lib/config.js +7 -7
- package/dist/lib/json-flag.d.ts +17 -0
- package/dist/lib/json-flag.js +55 -0
- package/dist/lib/project-info.d.ts +33 -0
- package/dist/lib/project-info.js +43 -0
- package/dist/lib/prompt.d.ts +2 -0
- package/dist/lib/prompt.js +28 -0
- package/dist/lib/scaffold-web/dashboard.js +1 -1
- package/dist/lib/scaffold-web/root-files.js +2 -2
- package/dist/lib/secret-store.js +7 -7
- package/dist/lib/skills.d.ts +17 -0
- package/dist/lib/skills.js +69 -0
- package/dist/lib/token.d.ts +2 -0
- package/dist/lib/token.js +12 -0
- package/dist/lib/workspace.d.ts +0 -4
- package/dist/lib/workspace.js +1 -2
- package/dist/skills/blocks-data-gateway-configuration/SKILL.md +204 -0
- package/dist/skills/blocks-data-gateway-crud/SKILL.md +223 -0
- package/dist/skills/blocks-data-storage/SKILL.md +161 -0
- package/dist/skills/blocks-frontend-local-https/SKILL.md +100 -0
- package/dist/skills/blocks-iam-access-control/SKILL.md +49 -0
- package/dist/skills/blocks-iam-access-control/flows/feature-gating.md +38 -0
- package/dist/skills/blocks-iam-access-control/flows/manage-roles-permissions.md +109 -0
- package/dist/skills/blocks-iam-account/SKILL.md +169 -0
- package/dist/skills/blocks-iam-mfa/SKILL.md +124 -0
- package/dist/skills/blocks-iam-organizations/SKILL.md +43 -0
- package/dist/skills/blocks-iam-organizations/flows/admin-mutations.md +89 -0
- package/dist/skills/blocks-iam-organizations/flows/read-and-switch.md +57 -0
- package/dist/skills/blocks-iam-sso-oidc-configuration/SKILL.md +89 -0
- package/dist/skills/blocks-iam-sso-oidc-implementation/SKILL.md +80 -0
- package/dist/skills/blocks-iam-users/SKILL.md +131 -0
- package/dist/skills/blocks-localization-configuration/SKILL.md +149 -0
- package/dist/skills/blocks-localization-implementation/SKILL.md +63 -0
- package/dist/skills/blocks-mail/SKILL.md +95 -0
- package/dist/skills/blocks-notification/SKILL.md +69 -0
- package/dist/skills/blocks-notifier/SKILL.md +107 -0
- package/dist/skills/blocks-onboarding/SKILL.md +78 -0
- package/dist/skills/blocks-release-deployment/SKILL.md +81 -0
- package/dist/skills/blocks-secrets/SKILL.md +81 -0
- package/dist/skills/blocks-storage-configuration/SKILL.md +93 -0
- package/dist/skills/lint.mjs +168 -0
- package/package.json +4 -4
package/AI_USAGE_GUIDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Blocks
|
|
1
|
+
# Blocks CLI Guide for AI Agents
|
|
2
2
|
|
|
3
|
-
This guide is for AI agents using the published `@seliseblocks/cli-os` npm package. The installed binary is `blocks
|
|
3
|
+
This guide is for AI agents using the published `@seliseblocks/cli-os` npm package. The installed binary is `blocks`.
|
|
4
4
|
|
|
5
|
-
Use `blocks
|
|
5
|
+
Use `blocks` as the control plane. If a capability exists in the CLI, call the CLI from the terminal instead of calling Blocks cloud APIs directly from ad hoc scripts or generated application code.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -15,15 +15,28 @@ npm install -g @seliseblocks/cli-os
|
|
|
15
15
|
Verify the binary:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
blocks
|
|
19
|
-
blocks
|
|
18
|
+
blocks --version
|
|
19
|
+
blocks --help
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
For local package development only, contributors may run `node bin/run.js ...` from the source repository. AI agents consuming the npm package should use `blocks
|
|
22
|
+
For local package development only, contributors may run `node bin/run.js ...` from the source repository. AI agents consuming the npm package should use `blocks ...`.
|
|
23
|
+
|
|
24
|
+
## Global Options
|
|
25
|
+
|
|
26
|
+
Namespaced commands accept either spaces or colons, e.g. `blocks data schema list` and
|
|
27
|
+
`blocks data:schema:list` are equivalent. Global options available on every command:
|
|
28
|
+
|
|
29
|
+
- `--json` - print machine-readable JSON where supported.
|
|
30
|
+
- `--api-url <url>` - override the Blocks API URL for this command.
|
|
31
|
+
- `--account <name>` - use a named account profile; default is implicit.
|
|
32
|
+
- `--project <tenantId>` - use a project tenant for project-scoped commands.
|
|
33
|
+
- `--dry-run` / `--yes` - see Operating Rules below.
|
|
34
|
+
|
|
35
|
+
Use `blocks --help` (no subcommand) as command ground truth for what exists. Do not probe an individual subcommand with `<command> --help` to check its flags - most subcommands don't recognize `--help` as special and just run their real logic with it as a no-op argument (e.g. `login --help` performs an actual login attempt; `new web <name> --help` runs real arg validation). If you need a subcommand's full flag list, read this guide's section for it or infer from `--dry-run`/error output instead.
|
|
23
36
|
|
|
24
37
|
## Operating Rules
|
|
25
38
|
|
|
26
|
-
- Use `blocks
|
|
39
|
+
- Use `blocks ...` for all supported Blocks OS, IAM, Data, Release, and scaffold operations.
|
|
27
40
|
- Prefer `--json` for automation and parsing.
|
|
28
41
|
- Use `--dry-run` before any mutating command.
|
|
29
42
|
- Do not run real mutating cloud commands unless the user explicitly approved the exact action.
|
|
@@ -37,28 +50,28 @@ For local package development only, contributors may run `node bin/run.js ...` f
|
|
|
37
50
|
Device-code login uses the packaged OS client id. It prints a verification URL and user code, opens the browser to the verification page when possible, then polls until approved:
|
|
38
51
|
|
|
39
52
|
```bash
|
|
40
|
-
blocks
|
|
53
|
+
blocks login
|
|
41
54
|
```
|
|
42
55
|
|
|
43
56
|
Check current auth state:
|
|
44
57
|
|
|
45
58
|
```bash
|
|
46
|
-
blocks
|
|
59
|
+
blocks auth status --json
|
|
47
60
|
```
|
|
48
61
|
|
|
49
62
|
If local auth state is stale or corrupted (Windows profile change, machine migration, Keychain reset), clear local auth state and log in again:
|
|
50
63
|
|
|
51
64
|
```bash
|
|
52
|
-
blocks
|
|
53
|
-
blocks
|
|
65
|
+
blocks auth remove <account>
|
|
66
|
+
blocks login
|
|
54
67
|
```
|
|
55
68
|
|
|
56
|
-
Use `blocks
|
|
69
|
+
Use `blocks logout` to revoke the current refresh token when possible and remove local session data. Use `blocks auth refresh --json` to force account token refresh, and `blocks auth refresh --project --json` after a project session already exists.
|
|
57
70
|
|
|
58
71
|
Run health checks without mutation:
|
|
59
72
|
|
|
60
73
|
```bash
|
|
61
|
-
blocks
|
|
74
|
+
blocks doctor --json
|
|
62
75
|
```
|
|
63
76
|
|
|
64
77
|
## Project Workflow
|
|
@@ -66,42 +79,60 @@ blocks-os doctor --json
|
|
|
66
79
|
List projects:
|
|
67
80
|
|
|
68
81
|
```bash
|
|
69
|
-
blocks
|
|
82
|
+
blocks projects list --json
|
|
70
83
|
```
|
|
71
84
|
|
|
72
|
-
|
|
85
|
+
`projects create` is currently disabled in this build (commented out pending a product decision) - do not tell users it's available, and do not try to work around its absence with a raw API call. Projects must already exist (created from the Blocks portal) before selecting one below.
|
|
86
|
+
|
|
87
|
+
Select a project:
|
|
73
88
|
|
|
74
89
|
```bash
|
|
75
|
-
blocks
|
|
76
|
-
blocks-os projects:create <projectName> --env dev --yes --json
|
|
90
|
+
blocks use <projectTenantId>
|
|
77
91
|
```
|
|
78
92
|
|
|
79
|
-
|
|
93
|
+
Read the selected project:
|
|
80
94
|
|
|
81
95
|
```bash
|
|
82
|
-
blocks
|
|
96
|
+
blocks projects get --json
|
|
83
97
|
```
|
|
84
98
|
|
|
85
|
-
|
|
99
|
+
If an impersonated project token has expired or failed and re-running the command doesn't
|
|
100
|
+
recover, clear the selection and reselect to force re-impersonation:
|
|
86
101
|
|
|
87
102
|
```bash
|
|
88
|
-
blocks
|
|
103
|
+
blocks deselect
|
|
104
|
+
blocks use <projectTenantId>
|
|
89
105
|
```
|
|
90
106
|
|
|
91
107
|
## Scaffold a Web App
|
|
92
108
|
|
|
93
|
-
Generate a React/Vite Blocks app:
|
|
109
|
+
Generate a React/Vite Blocks app. All of `--x-blocks-key`, `--app-domain`, and `--client-id` are optional now - they're resolved from the selected project when omitted:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
blocks use <projectTenantId> # if not already selected
|
|
113
|
+
blocks new web <appName>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This is interactive when a value isn't already known: if the project has more than one registered domain you're prompted to choose; the OIDC client is offered as a pick-list of the project's existing clients, plus "create a new one now" (prompts only for display name + redirect URI, defaulting to `https://<appDomain>/login/callback`) or "skip, register later." Do not fabricate a client id or domain value yourself.
|
|
117
|
+
|
|
118
|
+
**An AI agent running this non-interactively will hang on these prompts** - there's no stdin to answer "Choose 1-3:" from an automated process. Before running `new web`, gather the values yourself and pass them explicitly:
|
|
94
119
|
|
|
95
120
|
```bash
|
|
96
|
-
blocks
|
|
121
|
+
blocks projects get --json # see the project's domain(s) under project.applications
|
|
122
|
+
blocks auth oidc-clients list --json # see existing OIDC clients, if any
|
|
97
123
|
```
|
|
98
124
|
|
|
99
|
-
|
|
125
|
+
Then run with explicit flags so no prompt is reached:
|
|
100
126
|
|
|
101
127
|
```bash
|
|
102
|
-
blocks
|
|
128
|
+
blocks new web <appName> --x-blocks-key <projectTenantId> --app-domain <appDomainOrUrl> --client-id <publicOidcClientId>
|
|
103
129
|
```
|
|
104
130
|
|
|
131
|
+
`new web` also accepts `--blocks-api-url <url>` and `--oidc-url <url>`, same as `sdk client`
|
|
132
|
+
below. `--blocks-api-url` defaults to `https://api.seliseblocks.com` if omitted - pass a
|
|
133
|
+
different Data/IAM/Localization/OS gateway URL explicitly only if your project uses a
|
|
134
|
+
non-default one. `--oidc-url` defaults to `https://iam.seliseblocks.com`.
|
|
135
|
+
|
|
105
136
|
Validate the scaffold:
|
|
106
137
|
|
|
107
138
|
```bash
|
|
@@ -124,61 +155,166 @@ For local browser login on the real host domain:
|
|
|
124
155
|
|
|
125
156
|
The generated cert script uses the `selfsigned` Node dependency, so it works from normal PowerShell after `npm install`; do not tell Windows users to switch to Git Bash just for OpenSSL. If hosted login or secure cookies fail locally, confirm the app is opened with the HTTPS dev URL from `VITE_BLOCKS_DEV_HOST`.
|
|
126
157
|
|
|
127
|
-
##
|
|
158
|
+
## SDK Client (read-only)
|
|
128
159
|
|
|
129
|
-
|
|
160
|
+
`sdk client` answers "I want to use the Blocks SDK - show me the client." It resolves this project's `@seliseblocks/client` config (same values `new web` scaffolds an app with) and prints a ready-to-paste `createBlocksClient(...)` snippet - **it never writes a file or mutates anything**. To scaffold a full app instead, use `new web` above.
|
|
130
161
|
|
|
131
162
|
```bash
|
|
132
|
-
blocks-
|
|
163
|
+
blocks sdk client --x-blocks-key <projectTenantId> --app-domain <appDomainOrUrl> --client-id <publicOidcClientId> --blocks-api-url https://api.seliseblocks.com
|
|
133
164
|
```
|
|
134
165
|
|
|
135
|
-
|
|
166
|
+
As with `new web`, `--blocks-api-url` already defaults to `https://api.seliseblocks.com`; only pass it explicitly if your project uses a different gateway URL. Passing both `--app-domain` and `--client-id` skips the project lookup entirely, so it needs no CLI login at all - useful for a quick, non-interactive check. Omit either one and it resolves from the selected project instead (auto-picks when there's exactly one match, otherwise lists the options and asks you to pass the flag explicitly - it does not prompt or create anything, since this command is read-only). Use `--json` for the resolved values instead of the snippet.
|
|
167
|
+
|
|
168
|
+
## Skills
|
|
169
|
+
|
|
170
|
+
`skill list [--json]` / `skill show <name> [--json]` / `skill add <name> [--dir <path>]` read this package's bundled copy of `blocks-skills/*/SKILL.md` - local-only, no cloud calls. `skill add` copies a skill's **entire directory** (`SKILL.md` plus any supporting files, e.g. `flows/*.md`) into `<dir>/<name>/` (default `./blocks-skills`) in the current directory, for pulling a single skill into a project outside this monorepo. `skill list`'s human-readable output (and the "unknown skill" error from `show`/`add`) both point at the full public skill catalog, in case the locally bundled set is out of date. As with any skill file, verify command names against this guide or `blocks --help` before running them - skills are conversational context, not command ground truth.
|
|
171
|
+
|
|
172
|
+
## IAM, MFA, and Auth Admin
|
|
173
|
+
|
|
174
|
+
`iam me` reads the CLI operator's own account identity (bootstrapping, not a project resource):
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
blocks iam me --json
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Every other command below is project-scoped: it requires a project already selected (`blocks use <tenantId>`) and always calls IAM through an impersonated project token - never the account token, and never something you construct yourself. If no project is selected, the command fails with `project_not_selected`; run `blocks use <tenantId>` first (see Agent Failure Handling).
|
|
181
|
+
|
|
182
|
+
Command families (run `blocks --help` for the full flag reference on each):
|
|
183
|
+
|
|
184
|
+
- `iam users *`, `iam email available` - list/get/create/update/activate/deactivate, access grant/revoke, existence and email-availability checks.
|
|
185
|
+
- `iam roles *` - list/get/create/update, assign-permissions, assignable.
|
|
186
|
+
- `iam permissions *` - list/get/create/update, by-severity.
|
|
187
|
+
- `iam resources *` - resource groups and feature flags (read-only).
|
|
188
|
+
- `iam organizations *` - list/get/create/update, `my`, and organization config get/save.
|
|
189
|
+
- `iam signup-settings *` - get/save tenant signup policy.
|
|
190
|
+
- `mfa config *`, `mfa totp *`, `mfa generate`/`resend`/`verify`, `mfa method set`, `mfa disable`, `mfa backup-codes *` - tenant MFA policy plus enrollment/verification/backup-code flows.
|
|
191
|
+
- `mfa totp enable --mfa-type <n>` - composed TOTP enrollment: `totp setup` → prints the QR/secret → `totp verify-setup` → `method set` → `backup-codes generate`, one confirmation. Prefer this over running the individual steps. `--mfa-type` is required and not defaulted - the tenant-specific integer meaning "TOTP" isn't documented anywhere in this CLI; don't guess it, ask the user or check `mfa config get`. **Prompts interactively for the verification code unless `--code <c>` is given** - an agent running this non-interactively must supply `--code` (from wherever the user's authenticator app output is captured) or it will hang waiting on stdin. Deliberately excludes `mfa config save` (a separate tenant-wide admin policy, not part of one user's enrollment).
|
|
192
|
+
- `auth idp *` - identity provider (SSO/OIDC) configuration: list/get/create/update/delete/status.
|
|
193
|
+
- `auth config *` - AuthController tenant config (token lifetimes, lockout policy, etc.).
|
|
194
|
+
- `auth client-credentials *` - machine-to-machine client credentials: list/save/delete.
|
|
195
|
+
- `auth oidc-clients *` - OIDC client app registrations: list/get/save (upsert)/delete/rotate-secret.
|
|
196
|
+
|
|
197
|
+
Rules:
|
|
198
|
+
|
|
199
|
+
- Use `--dry-run` before any mutating command in these families, the same as Data/Localization/Release, then `--yes` only after explicit approval.
|
|
200
|
+
- Rich payloads (identity provider config, OIDC client config, user/role/permission create-update bodies, etc.) accept `--body '<json>'` or `--file <path.json>` on top of the documented convenience flags - use whichever is easier for the exact fields you need to set.
|
|
201
|
+
- `auth idp create`/`update`, `auth client-credentials save`, and `auth oidc-clients save`/`rotate-secret` can return a `client_secret` shown only once. Never print, log, commit, or otherwise persist it outside what the user explicitly asked to store; treat that response the same as any other CLI-managed secret.
|
|
202
|
+
- Do not add IAM/MFA/Auth admin behavior outside these supported CLI commands unless the CLI package is explicitly extended and tested.
|
|
136
203
|
|
|
137
204
|
## Data
|
|
138
205
|
|
|
206
|
+
Check the data-source configuration first. Most projects run on Blocks-managed storage by default, so this is usually the only `data config *` command you need:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
blocks data config get --json
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Only create/update a data source configuration after explicit user approval - it points the project's Data Gateway at a different (external) database, which is a deliberate, rare action:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
blocks data config create --connection-string "<cs>" --database-name "<name>" --dry-run --json
|
|
216
|
+
blocks data config create --connection-string "<cs>" --database-name "<name>" --yes --json
|
|
217
|
+
blocks data config update --item-id <id> --connection-string "<cs>" --dry-run --json
|
|
218
|
+
blocks data config update --item-id <id> --connection-string "<cs>" --yes --json
|
|
219
|
+
```
|
|
220
|
+
|
|
139
221
|
Validate local files:
|
|
140
222
|
|
|
141
223
|
```bash
|
|
142
|
-
blocks
|
|
224
|
+
blocks data validate --json
|
|
143
225
|
```
|
|
144
226
|
|
|
145
227
|
List schemas:
|
|
146
228
|
|
|
147
229
|
```bash
|
|
148
|
-
blocks
|
|
230
|
+
blocks data schema list --json
|
|
149
231
|
```
|
|
150
232
|
|
|
151
233
|
Pull schemas:
|
|
152
234
|
|
|
153
235
|
```bash
|
|
154
|
-
blocks
|
|
236
|
+
blocks data schema pull --json
|
|
155
237
|
```
|
|
156
238
|
|
|
157
239
|
Push schemas only after dry-run and approval:
|
|
158
240
|
|
|
159
241
|
```bash
|
|
160
|
-
blocks
|
|
161
|
-
blocks
|
|
242
|
+
blocks data schema push --dry-run --json
|
|
243
|
+
blocks data schema push --yes --json
|
|
162
244
|
```
|
|
163
245
|
|
|
164
246
|
Pull rules:
|
|
165
247
|
|
|
166
248
|
```bash
|
|
167
|
-
blocks
|
|
249
|
+
blocks data rules pull --json
|
|
168
250
|
```
|
|
169
251
|
|
|
170
252
|
Deploy rules only after dry-run and approval:
|
|
171
253
|
|
|
172
254
|
```bash
|
|
173
|
-
blocks
|
|
174
|
-
blocks
|
|
255
|
+
blocks data rules deploy --dry-run --json
|
|
256
|
+
blocks data rules deploy --yes --json
|
|
175
257
|
```
|
|
176
258
|
|
|
177
259
|
Reload Data schema configuration only after approval:
|
|
178
260
|
|
|
179
261
|
```bash
|
|
180
|
-
blocks
|
|
181
|
-
blocks
|
|
262
|
+
blocks data reload --dry-run --json
|
|
263
|
+
blocks data reload --yes --json
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**Prefer `data sync` over running validate/push/deploy/reload separately.** It composes all four (validate → `schema push` → `rules deploy` → `data reload`) behind one confirmation, and it's the only way to guarantee the reload actually happens - nothing else calls it automatically, so schema/rule changes pushed without a following `data reload` can sit staged without going live:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
blocks data sync --dry-run --json
|
|
270
|
+
blocks data sync --yes --json
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
It validates first and hard-fails with no API calls made if schemas or the rules file don't parse/validate. It prints 3 separate step outputs (one per underlying command), not one combined JSON document - parse each block in sequence if you need machine-readable results from all three.
|
|
274
|
+
|
|
275
|
+
### Raw Data API
|
|
276
|
+
|
|
277
|
+
`validate`/`schema list`/`schema pull`/`schema push`/`rules pull`/`rules deploy`/`reload` above cover the common file-oriented workflow. The rest of `/data/v4/*` is exposed directly, project-scoped with an impersonated project token only. Run `blocks --help` for the full flag reference on each; command families:
|
|
278
|
+
|
|
279
|
+
- `data schema get`/`get-by-name`/`aggregation`/`change-logs`/`delete` - single-schema lookup by id or collection name, access-level aggregation summary, unadapted change logs (cleared by `data reload`), and irreversible delete.
|
|
280
|
+
- `data schema info list`/`save`/`update` + `data schema fields` - a two-step alternative to `schema push` (create/update schema metadata, then add/update field definitions separately). Prefer the file-oriented `schema push` workflow for normal authoring; use these only for a targeted metadata or field-only change without touching the local schema JSON.
|
|
281
|
+
- `data rules policy get`/`delete` - read or delete one data-access policy without a full `rules pull`/edit/`rules deploy` round-trip.
|
|
282
|
+
- `data validation list`/`get`/`by-schema`/`by-schema-field`/`save`/`delete` - field-level validation rules. No file-oriented workflow exists for these (no local JSON file to pull/push). `save` is an upsert (omit `--item-id` to create, pass it to update) and requires a `validations` array passed via `--body`/`--file` - there's no scalar flag for it, e.g. `--body '{"validations":[{"type":1,"value":"^[0-9]+$","isActive":true}]}'`.
|
|
283
|
+
- `data files *` - DMS/storage: `get`/`get-many`/`info` (read), `presigned-upload-url` + `upload-to-url` (cloud storage, two calls) or `upload-to-local-storage` (one call, local storage), `update-additional-info`, `delete`, `dms-list`/`dms-upload` (folder browsing / registering an uploaded file into a folder), `create-folder`/`delete-folder`.
|
|
284
|
+
|
|
285
|
+
Same rules as everywhere else: `--dry-run` before any mutating command, then `--yes` only after explicit approval.
|
|
286
|
+
|
|
287
|
+
**`--file` means two different things depending on the command.** Everywhere else in this CLI (`--body '<json>'`/`--file <path.json>`), `--file` is a JSON payload file read by `jsonBodyFlag`. On the `data files *` upload commands (`upload-to-url`, `upload-to-local-storage`), `--file` is instead the local binary file to read and upload - there is no JSON payload involved. Don't conflate the two: passing a JSON path to `data files upload-to-local-storage --file` uploads the JSON text as the file's bytes, it does not set a request body.
|
|
288
|
+
|
|
289
|
+
**Prefer the composed `data files upload` over the manual steps below.** It runs presign → PUT → dms-upload for you (or the one-call local-storage path with `--local-storage`), so the file is both stored and visible in DMS afterward - no copy-pasting `uploadUrl`/`fileId` between commands:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
blocks data files upload --file ./invoice.pdf --access-modifier Public --dry-run --json
|
|
293
|
+
blocks data files upload --file ./invoice.pdf --access-modifier Public --yes --json
|
|
294
|
+
blocks data files upload --file ./invoice.pdf --local-storage --yes --json # local-storage-backed projects
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Manual cloud-storage upload, if you need the intermediate steps for some reason (two calls):
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
blocks data files presigned-upload-url --name invoice.pdf --access-modifier Public --json
|
|
301
|
+
# take the returned uploadUrl and fileId, then:
|
|
302
|
+
blocks data files upload-to-url --url "<uploadUrl>" --file ./invoice.pdf --content-type application/pdf --dry-run --json
|
|
303
|
+
blocks data files upload-to-url --url "<uploadUrl>" --file ./invoice.pdf --content-type application/pdf --yes --json
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Manual local-storage upload (one call):
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
blocks data files upload-to-local-storage --file ./invoice.pdf --access-modifier Public --dry-run --json
|
|
310
|
+
blocks data files upload-to-local-storage --file ./invoice.pdf --access-modifier Public --yes --json
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Either manual upload path only stores the bytes - it does not make the file appear in a DMS folder. Register it afterward if the user needs that (the composed `data files upload` above already does this step for you):
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
blocks data files dms-upload --file-storage-id <fileId> --artifact-name invoice.pdf --dry-run --json
|
|
317
|
+
blocks data files dms-upload --file-storage-id <fileId> --artifact-name invoice.pdf --yes --json
|
|
182
318
|
```
|
|
183
319
|
|
|
184
320
|
## Localization
|
|
@@ -213,54 +349,188 @@ Nested JSON is accepted on input and flattened before validation:
|
|
|
213
349
|
Validate first:
|
|
214
350
|
|
|
215
351
|
```bash
|
|
216
|
-
blocks
|
|
352
|
+
blocks localization validate --module common --language en --json
|
|
217
353
|
```
|
|
218
354
|
|
|
219
355
|
Push only after dry-run and approval:
|
|
220
356
|
|
|
221
357
|
```bash
|
|
222
|
-
blocks
|
|
223
|
-
blocks
|
|
358
|
+
blocks localization push --module common --language en --dry-run --json
|
|
359
|
+
blocks localization push --module common --language en --yes --json
|
|
224
360
|
```
|
|
225
361
|
|
|
226
362
|
Pull published cloud localization when local fallback files need to be refreshed:
|
|
227
363
|
|
|
228
364
|
```bash
|
|
229
|
-
blocks
|
|
365
|
+
blocks localization pull --module common --language en --json
|
|
230
366
|
```
|
|
231
367
|
|
|
232
368
|
Use Localization gateway v4 paths without `/api`: `/localization/v4/Module/Gets`, `/localization/v4/Module/Save`, `/localization/v4/Key/SaveKeys`, and `/localization/v4/Key/GetCloudUilmFile`.
|
|
233
369
|
|
|
370
|
+
### Raw Localization API
|
|
371
|
+
|
|
372
|
+
`validate`/`push`/`pull` above cover the common i18n file workflow. Every other `/localization/v4/*` endpoint is also exposed directly, project-scoped with an impersonated project token only (never the account token). Run `blocks --help` for the full flag reference on each; command families:
|
|
373
|
+
|
|
374
|
+
- `localization assistant translation-suggestion` - AI translation suggestion for a single string (`--source-text`, `--destination-language`, optional glossary/context flags).
|
|
375
|
+
- `localization config get-webhook`/`save-webhook` - tenant webhook config for localization change notifications.
|
|
376
|
+
- `localization glossary save`/`list`/`get`/`suggested`/`delete` - glossary term CRUD and AI-suggested glossary lookup.
|
|
377
|
+
- `localization key save`/`list`/`get-by-names`/`get`/`delete`/`delete-keys` - key CRUD and search beyond the bulk `push`/`pull` flow.
|
|
378
|
+
- `localization key get-timeline`/`get-localization-timeline`/`get-timeline-by-operation-id`/`rollback` - key/tenant change history and rollback.
|
|
379
|
+
- `localization key get-uilm-file`/`generate-uilm-file`/`uilm-import`/`uilm-export`/`get-uilm-exported-files`/`get-language-file-generation-history` - UILM language-file generation and import/export jobs.
|
|
380
|
+
- `localization key translate-all`/`translate-key`/`translate-keys` - trigger AI machine translation for a module or specific keys.
|
|
381
|
+
- `localization key translate-and-export --module-id <id> [--wait]` - composed: `translate-all` → `generate-uilm-file` → `uilm-export`. Prefer this over running the three by hand. `--wait` polls translation progress first via a self-generated correlation id (translation is async and has no documented "done" field, so this is a best-effort heuristic - it prints the raw response every poll); without `--wait` it just fires all three back to back like running them manually in sequence.
|
|
382
|
+
- `localization language save`/`list`/`list-for-tenant`/`delete`/`set-default` - tenant language catalog management.
|
|
383
|
+
- `localization module save`/`list`/`list-for-tenant`/`tag-glossary` - module CRUD and glossary tagging.
|
|
384
|
+
|
|
385
|
+
Same rules as everywhere else: `--dry-run` before any mutating command, then `--yes` only after explicit approval; rich payloads accept `--body '<json>'`/`--file <path.json>` on top of the documented convenience flags. `localization config save-webhook`'s `--secret` is redacted in `--dry-run` output only - treat the live response as a secret.
|
|
386
|
+
|
|
387
|
+
## Mail
|
|
388
|
+
|
|
389
|
+
Project-scoped SMTP/inbound mail configuration, templates, and mailbox reads via `/os/v4/Mail/*`:
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
blocks mail config list --json
|
|
393
|
+
blocks mail config get <name> --json
|
|
394
|
+
blocks mail config save --name <n> --host <h> --port <p> --enable-ssl \
|
|
395
|
+
--sender-name <n> --sender-address <addr> --account-password <p> --dry-run --json
|
|
396
|
+
blocks mail config save --configuration-id <id> ... --yes --json # update
|
|
397
|
+
blocks mail config delete <configurationId> --dry-run --json
|
|
398
|
+
blocks mail config duplicate <configurationId> --dry-run --json
|
|
399
|
+
|
|
400
|
+
blocks mail template list --configuration-id <id> --json
|
|
401
|
+
blocks mail template get <itemId> --json
|
|
402
|
+
blocks mail template save --configuration-id <id> --name <n> --language <l> \
|
|
403
|
+
--subject <s> --template-body <html> --dry-run --json
|
|
404
|
+
blocks mail template delete <itemId> --dry-run --json
|
|
405
|
+
blocks mail template clone <itemId> --name <n> --dry-run --json
|
|
406
|
+
|
|
407
|
+
blocks mail mailbox list --configuration-id <id> --json
|
|
408
|
+
blocks mail mailbox get <messageId> --json
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
Treat `--account-password` as a secret; the CLI redacts it in `--dry-run` output but the live response is still yours to protect.
|
|
412
|
+
|
|
413
|
+
Sending mail is a separate surface, `/logic/v4/Mail/Send` and `/logic/v4/Mail/SendToAny` (not `/os/v4`):
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
blocks mail send --to a@example.com,b@example.com --purpose welcome --language en \
|
|
417
|
+
--subject-data-context '{"firstName":"Ada"}' --dry-run --json
|
|
418
|
+
blocks mail send --to a@example.com --purpose welcome --language en --yes --json
|
|
419
|
+
|
|
420
|
+
blocks mail sendtoany --to a@example.com --purpose welcome --language en \
|
|
421
|
+
--is-test-mail --dry-run --json
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
`--project-key` defaults to the selected project's tenant id; pass it explicitly only to target a different one. `--attachments`/`--subject-data-context`/`--body-data-context` take raw JSON.
|
|
425
|
+
|
|
426
|
+
## Notification
|
|
427
|
+
|
|
428
|
+
Project-scoped notification channel configuration via `/os/v4/Notification/*`:
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
blocks notification list --json
|
|
432
|
+
blocks notification get <itemId> --json
|
|
433
|
+
blocks notification save --name <n> --channel <0|1> --type <0-3> --dry-run --json
|
|
434
|
+
blocks notification save --name <n> --channel <0|1> --type <0-3> --update --yes --json
|
|
435
|
+
blocks notification delete <itemId> --dry-run --json
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
`--channel` and `--type` are raw numeric enum values from the Blocks OS API (`NotifierTypes`, `NotificationReceiverTypes`) — the API does not publish names for them.
|
|
439
|
+
|
|
440
|
+
## Notifier
|
|
441
|
+
|
|
442
|
+
Real-time/offline notification sends and inbox reads via `/logic/v4/Notifier/*` — distinct from
|
|
443
|
+
`notification` above, which manages channel *configuration*, not sending:
|
|
444
|
+
|
|
445
|
+
```bash
|
|
446
|
+
blocks notifier notify --user-ids u1,u2 --response-key status --response-value ok --dry-run --json
|
|
447
|
+
blocks notifier notify --roles admin --denormalized-payload '{"orderId":"123"}' \
|
|
448
|
+
--save-denormalized-payload-as-object --yes --json
|
|
449
|
+
blocks notifier notify --subscription-filters '[{"context":"orders","actionName":"created","value":"*"}]' --yes --json
|
|
450
|
+
|
|
451
|
+
blocks notifier list --unread-only --page 1 --page-size 20 --json
|
|
452
|
+
blocks notifier unread --user-id <id> --context orders --action-name created --json
|
|
453
|
+
blocks notifier mark-read <notificationId> --dry-run --json
|
|
454
|
+
blocks notifier mark-all-read --dry-run --json
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
Target `notify` with at least one of `--user-ids`/`--roles`/`--subscription-filters`. `notifier unread`
|
|
458
|
+
sends its filter as query parameters even though swagger documents that endpoint as GET with a JSON
|
|
459
|
+
body, which the Fetch spec forbids — the CLI and SDK both flatten it into the query string instead.
|
|
460
|
+
|
|
461
|
+
## Secrets
|
|
462
|
+
|
|
463
|
+
Generic tenant secret storage via `/os/v4/Secrets/*` (e.g. captcha provider config):
|
|
464
|
+
|
|
465
|
+
```bash
|
|
466
|
+
blocks secrets get captcha --json
|
|
467
|
+
blocks secrets save --secret-key captcha \
|
|
468
|
+
--key-value-pairs '{"isEnable":"true","provider":"recaptcha","captchaKey":"...","captchaSecret":"..."}' \
|
|
469
|
+
--dry-run --json
|
|
470
|
+
blocks secrets save --secret-key captcha --item-id <itemId> --key-value-pairs '{...}' --yes --json
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
`--key-value-pairs` is a flat JSON object of provider-specific fields — its shape depends entirely on
|
|
474
|
+
`--secret-key` (there's no fixed schema across secrets). `save` is an upsert: omit `--item-id` to
|
|
475
|
+
create, pass it to update. Fields that look like secrets/keys are redacted in `--dry-run` output only.
|
|
476
|
+
|
|
477
|
+
## Storage
|
|
478
|
+
|
|
479
|
+
Project-scoped storage backend configuration via `/os/v4/Storage/*`:
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
blocks storage config list --json
|
|
483
|
+
blocks storage config get <name> --json
|
|
484
|
+
blocks storage config save --name <n> --strategy <s> --secret-key <k> --access-key <k> --dry-run --json
|
|
485
|
+
blocks storage config save --item-id <id> --update ... --yes --json # update
|
|
486
|
+
blocks storage config delete <name> --dry-run --json
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
`--secret-key`, `--access-key`, `--password`, and `--connection-string` are secrets; the CLI redacts them in `--dry-run` output only.
|
|
490
|
+
|
|
234
491
|
## Release
|
|
235
492
|
|
|
236
|
-
Trigger a deploy only after dry-run and approval:
|
|
493
|
+
`release deploy` needs no `--repo-id` - it resolves the repo linked to the selected project (`Project/GetAsset`) and that repo's connected branch (`Build/repo-details`) on its own, and refuses to deploy if the connected branch doesn't match the project's environment name. Trigger a deploy only after dry-run and approval:
|
|
237
494
|
|
|
238
495
|
```bash
|
|
239
|
-
blocks
|
|
240
|
-
blocks
|
|
496
|
+
blocks release deploy --dry-run --json
|
|
497
|
+
blocks release deploy --yes --json
|
|
498
|
+
blocks release deploy --domain <customDomain> --yes --json # also sets the custom deployment domain first
|
|
499
|
+
blocks release deploy --yes --wait --json # poll until the build finishes instead of returning the build id
|
|
241
500
|
```
|
|
242
501
|
|
|
502
|
+
If no repo is linked yet, the command fails with `repo_not_linked` - that requires GitHub OAuth, so it can only be done from the Blocks portal; do not attempt to link a repo from the CLI.
|
|
503
|
+
|
|
504
|
+
`--wait` polls `/release/v4/api/Build` (same data `release status` reads) every `--poll-interval` seconds (default 10) until a terminal-looking state is detected or `--timeout` elapses (default 900s). There's no documented status field/enum for this endpoint, so "terminal" is a best-effort text match (success/fail/complete/cancel/etc. anywhere in the response) - the raw JSON is printed every poll, so verify against that rather than trusting the heuristic blindly. Without `--wait`, `release deploy` returns immediately with just a build id, same as before.
|
|
505
|
+
|
|
243
506
|
Read build status:
|
|
244
507
|
|
|
245
508
|
```bash
|
|
246
|
-
blocks
|
|
247
|
-
blocks
|
|
509
|
+
blocks release status <buildId> --json
|
|
510
|
+
blocks release builds get <buildId> --json
|
|
248
511
|
```
|
|
249
512
|
|
|
250
|
-
List builds for a repository:
|
|
513
|
+
List builds for a repository (repoId is optional now - omit it to resolve from the selected project's linked repo assets, auto-picked if there's exactly one, otherwise interactively prompted, which will hang a non-interactive agent - pass `--repo-id` explicitly if you don't already know there's exactly one):
|
|
251
514
|
|
|
252
515
|
```bash
|
|
253
|
-
blocks
|
|
516
|
+
blocks release builds list --repo-id <repoId> --json
|
|
254
517
|
```
|
|
255
518
|
|
|
256
519
|
## Agent Failure Handling
|
|
257
520
|
|
|
258
|
-
- `not_logged_in`: run `blocks
|
|
259
|
-
- `refresh_token_rejected`: run `blocks
|
|
521
|
+
- `not_logged_in`: run `blocks login`, then `blocks projects list`, then `blocks use <tenantId>`.
|
|
522
|
+
- `refresh_token_rejected`: run `blocks login`.
|
|
260
523
|
- `refresh_network_error`: check the network and configured OIDC URL, then retry.
|
|
261
|
-
- `auth_repair_required`: inspect `blocks
|
|
262
|
-
- `project_not_selected`: run `blocks
|
|
263
|
-
- `api_auth_failed`: run `blocks
|
|
524
|
+
- `auth_repair_required`: inspect `blocks auth status --json`; if local storage is unreadable or stale, run `blocks auth remove <account>`, then `blocks auth status --json` and `blocks login`.
|
|
525
|
+
- `project_not_selected`: run `blocks projects list`, then `blocks use <projectTenantId>`.
|
|
526
|
+
- `api_auth_failed`: run `blocks auth status --json`, then login again. If the failure is specifically a stale/expired impersonated project token rather than the account token, `blocks deselect` followed by `blocks use <tenantId>` re-impersonates without a full re-login.
|
|
527
|
+
- `repo_not_linked` (from `release deploy`): no repo is linked to this project. This needs GitHub OAuth - tell the user to link it from the Blocks portal, do not retry from the CLI.
|
|
528
|
+
- `repo_ambiguous` (from `release deploy`): multiple repos are linked and none is named for the current environment. Tell the user to check the project's repo links in the portal.
|
|
529
|
+
- `repo_not_found` (from `release deploy`): the linked asset's repo id doesn't exist in blocks-release. Tell the user to check the project's repo link in the portal.
|
|
530
|
+
- `branch_environment_mismatch` (from `release deploy`): the connected repo's branch doesn't match this environment's name. The message states the branch found and the environment required - do not retry; the repo's connected branch must be fixed first.
|
|
531
|
+
- `build_wait_timeout` (from `release deploy --wait`): the build didn't reach a detected terminal state within `--timeout`. The deploy itself already succeeded (this only affects the wait) - check manually with `release status <buildId>` rather than assuming failure.
|
|
532
|
+
- `translation_wait_timeout` (from `localization key translate-and-export --wait`): translation didn't settle within `--timeout`. Check manually with `localization key get-timeline-by-operation-id <operationId>` (the id is printed before the wait starts), then run `generate-uilm-file`/`uilm-export` yourself once ready rather than assuming translation failed.
|
|
533
|
+
- `no_project_domain` (from `new web`): the project has no domains registered in Blocks. Add one from the portal, or pass `--app-domain` explicitly if the user already knows the intended value.
|
|
264
534
|
- HTML returned from an API command means the command endpoint path is wrong and must be fixed in the CLI.
|
|
265
535
|
|
|
266
536
|
## Local Development Checks
|
|
@@ -275,9 +545,9 @@ npm pack --dry-run
|
|
|
275
545
|
Live smoke checks after login:
|
|
276
546
|
|
|
277
547
|
```bash
|
|
278
|
-
blocks
|
|
279
|
-
blocks
|
|
280
|
-
blocks
|
|
548
|
+
blocks projects list --json
|
|
549
|
+
blocks iam me --json
|
|
550
|
+
blocks data schema list --json
|
|
281
551
|
```
|
|
282
552
|
|
|
283
553
|
## Security Boundary
|