@seliseblocks/cli-os 0.1.3 → 0.1.5
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 +83 -46
- 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.d.ts +1 -0
- package/dist/commands/deselect.js +31 -0
- package/dist/commands/iam/email/available.d.ts +1 -0
- package/dist/commands/iam/email/available.js +17 -0
- 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/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 +22 -2
- package/dist/commands/release/deploy.js +122 -29
- package/dist/commands/release/status.js +4 -2
- 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/index.js +959 -143
- package/dist/lib/api.d.ts +1 -1
- package/dist/lib/api.js +39 -21
- package/dist/lib/args.d.ts +3 -0
- package/dist/lib/args.js +15 -0
- package/dist/lib/auth.d.ts +5 -2
- package/dist/lib/auth.js +23 -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 +39 -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 +1 -1
- 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 +1 -4
- package/dist/lib/workspace.js +18 -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/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# Blocks
|
|
1
|
+
# Blocks CLI
|
|
2
2
|
|
|
3
3
|
CLI for SELISE Blocks Cloud.
|
|
4
4
|
|
|
5
5
|
- Package: `@seliseblocks/cli-os`
|
|
6
|
-
- Binary: `blocks
|
|
6
|
+
- Binary: `blocks`
|
|
7
7
|
|
|
8
8
|
## Setup
|
|
9
9
|
|
|
@@ -11,7 +11,7 @@ Install the npm package where you want to operate the CLI:
|
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
npm install -g @seliseblocks/cli-os
|
|
14
|
-
blocks
|
|
14
|
+
blocks --version
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Then log in (device-code flow - prints a verification URL and code, opens
|
|
@@ -19,7 +19,7 @@ your browser to the verification page when possible so you only need to
|
|
|
19
19
|
click approve, then polls until approved):
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
blocks
|
|
22
|
+
blocks login
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
For source development in this repository:
|
|
@@ -32,35 +32,72 @@ node bin/run.js --version
|
|
|
32
32
|
|
|
33
33
|
## Commands
|
|
34
34
|
|
|
35
|
+
Namespaced commands accept either spaces or colons, e.g. `blocks data schema list` and
|
|
36
|
+
`blocks data:schema:list` are equivalent.
|
|
37
|
+
|
|
38
|
+
Global options available on every command:
|
|
39
|
+
|
|
40
|
+
| Option | Description |
|
|
41
|
+
|---|---|
|
|
42
|
+
| `--version` | Print CLI version. |
|
|
43
|
+
| `--json` | Print machine-readable JSON where supported. |
|
|
44
|
+
| `--api-url <url>` | Override the Blocks API URL for this command. |
|
|
45
|
+
| `--account <name>` | Use a named account profile; default is implicit. |
|
|
46
|
+
| `--project <tenantId>` | Use a project tenant for project-scoped commands. |
|
|
47
|
+
| `--dry-run` | Show planned mutation without calling the API. |
|
|
48
|
+
| `--yes` | Skip mutation confirmation after explicit approval. |
|
|
49
|
+
|
|
35
50
|
| Command | Description |
|
|
36
51
|
|---|---|
|
|
37
|
-
| `blocks
|
|
38
|
-
| `blocks
|
|
39
|
-
| `blocks
|
|
40
|
-
| `blocks
|
|
41
|
-
| `blocks
|
|
42
|
-
| `blocks
|
|
43
|
-
| `blocks
|
|
44
|
-
| `blocks
|
|
45
|
-
| `blocks
|
|
46
|
-
| `blocks
|
|
47
|
-
| `blocks
|
|
48
|
-
| `blocks
|
|
49
|
-
| `blocks
|
|
50
|
-
| `blocks
|
|
51
|
-
| `blocks
|
|
52
|
-
| `blocks
|
|
53
|
-
| `blocks-
|
|
54
|
-
| `blocks
|
|
55
|
-
| `blocks
|
|
56
|
-
| `blocks
|
|
57
|
-
| `blocks
|
|
58
|
-
| `blocks
|
|
59
|
-
| `blocks
|
|
60
|
-
| `blocks
|
|
61
|
-
| `blocks
|
|
62
|
-
| `blocks
|
|
63
|
-
| `blocks
|
|
52
|
+
| `blocks init` | Create local Blocks workspace files: `blocks.json`, data schema/rules folders, and `.env.example`. |
|
|
53
|
+
| `blocks doctor [--json]` | Check Node.js, OIDC config, token cache, selected project, and config file locations. Does not mutate cloud resources. |
|
|
54
|
+
| `blocks login` | Device-code login. Prints a verification URL and user code, opens the browser to the verification page when possible so you only need to click approve, then polls until the device is authorized; stores account tokens and auto-refreshes later. |
|
|
55
|
+
| `blocks auth status [--json]` | Show only whether account/project access and refresh tokens are missing, valid, expired, or available. Does not print account config values. |
|
|
56
|
+
| `blocks auth refresh [--project] [--json]` | Force account token refresh, or project token refresh with `--project`. |
|
|
57
|
+
| `blocks auth remove <account>` | Clear cached tokens and stored local credentials for that account. The packaged default OS account is restored from package defaults. |
|
|
58
|
+
| `blocks logout` | Revoke the current refresh token when possible and remove local session data. |
|
|
59
|
+
| `blocks projects list [--json]` | List accessible Blocks projects via `/os/v4/Project/Gets` using the account token. Read-only. |
|
|
60
|
+
| `blocks projects get [tenantId] [--deployment] [--json]` | Read one project from `Project/Gets`. Uses selected project when `tenantId` is omitted. Pass `--deployment` to also include the environment, tenantGroupId, and linked repo assets that `release deploy` resolves internally. Read-only. |
|
|
61
|
+
| `blocks projects create` | **Currently disabled** (commented out, not deleted) - the dispatch entry, import, and help text were removed pending a product decision. Do not tell users this command is available. |
|
|
62
|
+
| `blocks use <tenantId>` | Save the selected project tenant globally and in `blocks.json` when present. Does not call cloud APIs. |
|
|
63
|
+
| `blocks deselect` | Clear the selected project tenant (globally and in `blocks.json`) and drop its cached impersonation token. Use this to recover when an impersonated project token has expired or failed, then run `blocks use <tenantId>` again to reselect and re-impersonate. |
|
|
64
|
+
| `blocks iam me [--json]` | Read the current user from IAM using the account token (CLI operator identity, not a project resource). |
|
|
65
|
+
| `blocks iam users *`, `iam email available`, `iam roles *`, `iam permissions *`, `iam resources *`, `iam organizations *`, `iam signup-settings *` | Full IAM admin surface for the selected project (users, roles, permissions, resource metadata, organizations and their config, signup settings). Project-scoped: requires a selected project and always uses an impersonated project token, never the account token. Mutating commands support `--dry-run`/`--yes`; rich payloads accept `--body '<json>'`/`--file <path>` on top of common convenience flags. Run `blocks --help` for the full command/flag list. |
|
|
66
|
+
| `blocks mfa config *`, `mfa totp *`, `mfa generate`, `mfa resend`, `mfa verify`, `mfa method set`, `mfa disable`, `mfa backup-codes *` | Project-scoped MFA admin and self-service surface (tenant MFA policy, TOTP enrollment, OTP challenge/verify, method switch, backup codes). Same project-selection and impersonation-only rules as IAM above. |
|
|
67
|
+
| `blocks mfa totp enable --mfa-type <n> [--code <c>]` | Composed TOTP enrollment: `totp setup` → prints the QR/secret → prompts for the code (or `--code` to skip the prompt) → `totp verify-setup` → `method set` → `backup-codes generate`, one confirmation. `--mfa-type` is required and not defaulted - the tenant-specific integer meaning "TOTP" isn't documented anywhere in this CLI. Deliberately excludes `mfa config save` (a separate, tenant-wide admin policy, not part of one user's enrollment). |
|
|
68
|
+
| `blocks auth idp *`, `auth config *`, `auth client-credentials *`, `auth oidc-clients *` | Auth admin surface: identity providers, AuthController tenant config, machine-to-machine client credentials, and OIDC client app registrations. Project-scoped, impersonated project token only. `idp delete`, `client-credentials save`/`delete`, and `oidc-clients save`/`delete`/`rotate-secret` return or handle secrets shown only once - treat CLI output as sensitive and never log it. |
|
|
69
|
+
| `blocks mail config *`, `mail template *`, `mail mailbox *` | Project-scoped mail admin surface via `/os/v4/Mail/*`: SMTP/inbound configuration upsert/delete/duplicate, mail template CRUD/clone, and mailbox message reads. Impersonated project token only. `mail config save`'s `--account-password` is redacted in `--dry-run` output only. |
|
|
70
|
+
| `blocks mail send [--to a,b] [--purpose <p>] [--language <c>] ...` / `mail sendtoany [same, plus --is-test-mail]` | Send an email via `/logic/v4/Mail/Send` / `/logic/v4/Mail/SendToAny`. Impersonated project token only; `--project-key` defaults to the selected project. |
|
|
71
|
+
| `blocks notification *` | Project-scoped notification channel configuration via `/os/v4/Notification/*` (list/get/save/delete). Impersonated project token only. `--channel`/`--type` are raw numeric enum values from the API. |
|
|
72
|
+
| `blocks notifier notify`, `notifier list`, `notifier unread`, `notifier mark-read`, `notifier mark-all-read` | Real-time/offline notification sends and inbox reads via `/logic/v4/Notifier/*` - distinct from `notification` above, which manages channel configuration, not sending. Impersonated project token only. `notify` targets `--user-ids`/`--roles`/`--subscription-filters`; `unread` sends its filter as query parameters even though swagger documents that endpoint as GET with a JSON body, which the Fetch spec forbids. |
|
|
73
|
+
| `blocks secrets get <secretKey>` / `secrets save --secret-key <key> --key-value-pairs '<json>'` | Generic tenant secret storage via `/os/v4/Secrets/*` (e.g. captcha provider config). Impersonated project token only. `save` is an upsert - omit `--item-id` to create, pass it to update. |
|
|
74
|
+
| `blocks storage config *` | Project-scoped storage backend configuration via `/os/v4/Storage/*` (list/get/save/delete). Impersonated project token only. `--secret-key`/`--access-key`/`--password`/`--connection-string` are redacted in `--dry-run` output only. |
|
|
75
|
+
| `blocks data validate [--json]` | Validate local `blocks/data/schemas/*.json` and `blocks/data/rules.json` before pushing. Local-only. |
|
|
76
|
+
| `blocks data schema list [--json]` | List project schemas via `/data/v4/schemas` using an impersonated project token. Read-only. |
|
|
77
|
+
| `blocks data schema pull [--json]` | Download project schemas into `blocks/data/schemas/*.json`. Writes local files only. |
|
|
78
|
+
| `blocks data schema push [--dry-run] [--yes] [--json]` | Create or update project schemas via `/data/v4/schemas/define`. Mutating; uses POST for create and PUT for update. |
|
|
79
|
+
| `blocks data rules pull [--json]` | Download data-access policies into `blocks/data/rules.json`. Writes local files only. |
|
|
80
|
+
| `blocks data rules deploy [--dry-run] [--yes] [--json]` | Apply schema security and data-access policies. Mutating; supports dry-run and confirmation. |
|
|
81
|
+
| `blocks data reload [--dry-run] [--yes] [--json]` | Reload Data schema configuration so staged schema/rule changes become live. Mutating; calls POST `/data/v4/schema-configurations/reload`. |
|
|
82
|
+
| `blocks data sync [--dry-run] [--yes] [--json]` | Composed flow: validate local schemas/rules → `data schema push` → `data rules deploy` → `data reload`, one confirmation. Use this instead of running the three separately - nothing else calls `data reload` automatically, so pushed changes can otherwise sit staged without going live. Prints 3 separate step outputs, not one combined document. |
|
|
83
|
+
| `blocks data config get/create/update` | Tenant data-source configuration via `/data/v4/configurations` - check `get` first, it defaults to Blocks-managed storage; `create`/`update` point the gateway at an external database. Impersonated project token only. |
|
|
84
|
+
| `blocks data schema get/get-by-name/aggregation/change-logs/delete/fields/info *` | Raw `/data/v4/schemas*` API beyond the file-oriented `list/pull/push` above: single-schema/by-name lookups, access-level aggregation, unadapted change logs, delete, and a metadata-first (`info *`) plus field-only (`fields`) alternative to `push`. Run `blocks --help` for the full flag reference. |
|
|
85
|
+
| `blocks data rules policy get/delete` | Single data-access policy read/delete via `/data/v4/data-access/policy/*`, alongside the bulk file-oriented `rules pull/deploy` above. |
|
|
86
|
+
| `blocks data validation list/get/by-schema/by-schema-field/save/delete` | Field-level validation rules via `/data/v4/data-validations*`. No file-oriented workflow exists for this yet; `save` is an upsert (omit `--item-id` to create) and requires a `validations` array via `--body`/`--file`. |
|
|
87
|
+
| `blocks data files upload --file <path> [--local-storage]` | Composed upload: presigned-upload-url → PUT the file → dms-upload, threading the returned `uploadUrl`/`fileId` automatically (content-type inferred from the file extension if omitted). Pass `--local-storage` for the one-call `upload-to-local-storage` path instead. Prefer this over the individual steps below. |
|
|
88
|
+
| `blocks data files *` | Full DMS/storage surface via `/data/v4/Files/*`: `get`/`get-many`/`info` (read), `presigned-upload-url` + `upload-to-url` (cloud storage, two steps) or `upload-to-local-storage` (one step, local storage), `update-additional-info`, `delete`, `dms-list`/`dms-upload` (folder browsing/file registration), `create-folder`/`delete-folder`. Here `--file <path>` is the local binary to upload/read, not a JSON payload file - see [AI_USAGE_GUIDE.md](AI_USAGE_GUIDE.md) for the distinction. |
|
|
89
|
+
| `blocks localization validate --module <name> --language <culture> [--file <path>] [--json]` | Validate a local i18n JSON dictionary. Supports nested JSON input and checks the flattened key/value set locally. |
|
|
90
|
+
| `blocks localization push --module <name> --language <culture> [--file <path>] [--route <route>] [--context <text>] [--dry-run] [--yes] [--json]` | Create or update Localization keys from local i18n JSON via `/localization/v4/Key/SaveKeys`. Creates the module first through `/localization/v4/Module/Save` when missing. |
|
|
91
|
+
| `blocks localization pull --module <name> --language <culture> [--out <path>] [--json]` | Download published cloud localization via `/localization/v4/Key/GetCloudUilmFile` and write a local JSON dictionary. |
|
|
92
|
+
| `blocks localization key translate-and-export --module-id <id> [--wait]` | Composed flow: `translate-all` → `generate-uilm-file` → `uilm-export`. With `--wait`, polls translation progress (via a self-generated correlation id) before generating/exporting, since translation runs asynchronously; without it, fires all 3 back to back. Prints one output block per step. |
|
|
93
|
+
| `blocks localization assistant translation-suggestion`, `localization config *`, `localization glossary *`, `localization key *`, `localization language *`, `localization module *` | Full raw `/localization/v4/*` API surface (AI translation suggestions, tenant webhook config, glossary CRUD, key CRUD/search/timeline/translate/UILM import-export/rollback, language CRUD, module CRUD/glossary tagging) alongside the file-oriented validate/push/pull commands above. Project-scoped, impersonated project token only. Run `blocks --help` for the full command/flag list. |
|
|
94
|
+
| `blocks release deploy [--domain <customDomain>] [--wait] [--poll-interval <s>] [--timeout <s>] [--dry-run] [--yes] [--json]` | Deploy the selected project's environment. No `--repo-id` needed - resolves the linked repo via `Project/GetAsset` and its connected branch via `Build/repo-details`, and aborts if that branch doesn't match the environment name. Pass `--domain` to also set the custom deployment domain first. Pass `--wait` to poll `release status` on the resulting build until it reaches a terminal state instead of returning immediately with just a build id. Mutating; no artifact upload is performed by this CLI. |
|
|
95
|
+
| `blocks release status <buildId> [--json]` | Read Release build status by build id. Read-only. |
|
|
96
|
+
| `blocks release builds list [repoId] [--repo-id <repoId>] [--json]` | List Release build details for a repository. When `repoId` is omitted, resolves it from the selected project's linked repo assets - auto-picked if there's exactly one, otherwise you're prompted to choose. Read-only. |
|
|
97
|
+
| `blocks release builds get <buildId> [--json]` | Alias for `release status`. Read-only. |
|
|
98
|
+
| `blocks new web <name> [--app-domain <domain>] [--client-id <oidcClientId>] [--x-blocks-key <tenantId>] [--blocks-api-url <url>] [--oidc-url <url>]` | Create a Vite React starter app that talks to Blocks exclusively through `@seliseblocks/client` (a single `createBlocksClient()` instance) using the SDK hosted IdP flow: `blocksClient.auth.idp.redirectToProvider()` on login click and `blocksClient.auth.idp.callback()` on `/login/callback`. Includes route guards, auto-refresh through `auth.oidc.refreshToken()`, live `auth`/`iam`/`data`/`localization` SDK examples, environment config, and safe `.gitignore` defaults. Uses the selected project (see `use`) unless `--x-blocks-key` overrides it. `--app-domain` and `--client-id` are resolved from the project record when omitted: the domain auto-picks if the project has exactly one, otherwise you're prompted to choose; the OIDC client is picked from the project's existing clients, or you can create a minimal one (display name + redirect URI) on the spot, or skip and register one later from the portal or `auth oidc-clients save`. `--blocks-api-url` defaults to `https://api.seliseblocks.com` if omitted - pass a different Data/IAM/Localization/OS gateway URL explicitly only if your project uses a non-default one. `--oidc-url` defaults to `https://iam.seliseblocks.com`. |
|
|
99
|
+
| `blocks skill list [--json]` / `skill show <name> [--json]` / `skill add <name> [--dir <path>]` | Local-only, no cloud calls: list/print the bundled `blocks-skills/*/SKILL.md` agent context docs, or copy a skill's entire directory (`SKILL.md` plus any supporting files) into `<dir>/<name>/` (default `./blocks-skills`) for use in a project outside this monorepo. `list`'s output and `show`/`add`'s "unknown skill" error both point at the full public skill catalog in case the bundled set is out of date. |
|
|
100
|
+
| `blocks sdk client [--app-domain <domain>] [--client-id <oidcClientId>] [--x-blocks-key <tenantId>] [--blocks-api-url <url>] [--oidc-url <url>] [--json]` | Read-only: resolves this project's `@seliseblocks/client` config (same values `new web` scaffolds with) and prints a ready-to-paste `createBlocksClient(...)` snippet. Passing both `--app-domain` and `--client-id` skips the project lookup entirely (no login required). Writes nothing - use `new web` to scaffold a full app. |
|
|
64
101
|
|
|
65
102
|
Use `--json` on commands when AI or automation needs machine-readable output. Use `--dry-run` before mutations and `--yes` only after approval.
|
|
66
103
|
|
|
@@ -68,7 +105,7 @@ For agent-specific operating rules and command sequences, see [AI_USAGE_GUIDE.md
|
|
|
68
105
|
|
|
69
106
|
### Scaffolded Web App Local HTTPS
|
|
70
107
|
|
|
71
|
-
For `blocks
|
|
108
|
+
For `blocks new web`, `--app-domain` should be the app's real Blocks domain/origin, for example `https://dbpdba.seliseblocks.com`. The generated app keeps that full value as `VITE_BLOCKS_APP_DOMAIN` and derives the local dev host without a scheme as `VITE_BLOCKS_DEV_HOST=dbpdba.seliseblocks.com`.
|
|
72
109
|
|
|
73
110
|
Browser login uses the hosted Blocks IAM IdP flow and secure cookies, so local testing on the project domain must run over HTTPS:
|
|
74
111
|
|
|
@@ -94,22 +131,22 @@ OAuth tokens use an OS-aware credential backend:
|
|
|
94
131
|
| OS | Credential backend |
|
|
95
132
|
|---|---|
|
|
96
133
|
| Windows | DPAPI-encrypted value in the CLI secret metadata file, scoped to the current Windows user. |
|
|
97
|
-
| macOS | Keychain generic password for the `seliseblocks-cli
|
|
134
|
+
| macOS | Keychain generic password for the `seliseblocks-cli` service. |
|
|
98
135
|
| Linux | Secret Service through `secret-tool` when available. |
|
|
99
|
-
| Fallback | `0600` file storage in the CLI config directory. Set `
|
|
136
|
+
| Fallback | `0600` file storage in the CLI config directory. Set `BLOCKS_SECRET_STORE=file` to force this mode for CI or minimal containers. |
|
|
100
137
|
|
|
101
|
-
Use `blocks
|
|
138
|
+
Use `blocks doctor` or `blocks auth status` to see which backend is active. Tokens are never printed by CLI status commands.
|
|
102
139
|
|
|
103
140
|
If the active OS credential backend cannot decrypt old local auth state after a Windows profile change, machine migration, Keychain reset, or corrupted token cache, clear local auth state and log in again:
|
|
104
141
|
|
|
105
142
|
```bash
|
|
106
|
-
blocks
|
|
107
|
-
blocks
|
|
143
|
+
blocks auth remove <account>
|
|
144
|
+
blocks login
|
|
108
145
|
```
|
|
109
146
|
|
|
110
147
|
## Workspace
|
|
111
148
|
|
|
112
|
-
`blocks
|
|
149
|
+
`blocks init` creates:
|
|
113
150
|
|
|
114
151
|
```text
|
|
115
152
|
blocks.json
|
|
@@ -117,20 +154,20 @@ blocks/
|
|
|
117
154
|
data/
|
|
118
155
|
schemas/
|
|
119
156
|
rules.json
|
|
120
|
-
localization/
|
|
121
|
-
release/
|
|
122
|
-
deploy.json
|
|
123
157
|
.env.example
|
|
124
158
|
```
|
|
125
159
|
|
|
126
|
-
Localization dictionaries default
|
|
160
|
+
Localization dictionaries are not created by `init` - the default path is `blocks/localization/<module>.<language>.json`, for example `blocks/localization/common.en.json`, and the `blocks/localization/` folder is created lazily the first time `blocks localization pull` writes to it. AI agents can create or update that file directly (before `push`, which only reads it), run `blocks localization validate`, then push it to the Localization service with `blocks localization push --dry-run` followed by `--yes` after approval. Gateway v4 routes do not include an `/api` segment.
|
|
161
|
+
|
|
162
|
+
`blocks use <tenantId>` updates the selected project in global CLI state and `blocks.json` when present.
|
|
127
163
|
|
|
128
|
-
`blocks-
|
|
164
|
+
`blocks release deploy` has no local config file - it needs a repo already linked to the project. Linking a repo requires GitHub OAuth, which only the Blocks portal can do; if none is linked, the command tells you so and stops.
|
|
129
165
|
|
|
130
166
|
## Boundaries
|
|
131
167
|
|
|
132
|
-
-
|
|
133
|
-
- Data covers schema/rules/reload/validate
|
|
134
|
-
- Localization covers dictionary validate/pull/push
|
|
168
|
+
- `iam me` reads the CLI operator's own account identity; every other `iam *`, `mfa *`, `auth idp *`/`auth config *`/`auth client-credentials *`/`auth oidc-clients *`, `mail *`, `notification *`, `notifier *`, `secrets *`, and `storage config *` command is project-scoped and requires a selected project (`blocks use <tenantId>`) plus an impersonated project token - none of them ever run against the account token.
|
|
169
|
+
- Data covers the tenant data-source configuration, schema/rules/reload/validate, field-level validation rules, and the DMS/storage (`data files *`) surface. Prefer the composed `data sync` and `data files upload` over their individual steps.
|
|
170
|
+
- Localization covers dictionary validate/pull/push plus the full raw `/localization/v4/*` API surface (assistant, config, glossary, key, language, module). Prefer `localization key translate-and-export` over running translate/generate/export by hand.
|
|
135
171
|
- Release covers deploy trigger and build status/read commands only.
|
|
136
172
|
- No direct artifact upload unless Blocks Release adds a confirmed artifact upload API.
|
|
173
|
+
- `projects create` is currently disabled in this build (commented out pending a product decision) - don't reference it as available.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authClientCredentialsDelete(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { booleanFlag, stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { confirmMutation } from "../../../lib/confirm.js";
|
|
4
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
5
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
6
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
7
|
+
export async function authClientCredentialsDelete(argv) {
|
|
8
|
+
const { args, flags } = parseCommand(argv);
|
|
9
|
+
const id = args[0] || stringFlag(flags, "id", { required: true });
|
|
10
|
+
if (booleanFlag(flags, "dry-run")) {
|
|
11
|
+
writeOutput({ dryRun: true, endpoint: `/iam/v4/auth/client-credentials/${id}` }, flags);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
await confirmMutation(flags, `Delete client credential '${id}'.`);
|
|
15
|
+
const projectKey = await selectedProject(flags);
|
|
16
|
+
const result = await blocksRequest(`/iam/v4/auth/client-credentials/${encodeURIComponent(id)}`, {
|
|
17
|
+
impersonatedProjectAuth: true,
|
|
18
|
+
method: "DELETE",
|
|
19
|
+
...requestContext(flags),
|
|
20
|
+
projectTenantId: projectKey
|
|
21
|
+
});
|
|
22
|
+
writeOutput(result, flags);
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authClientCredentialsList(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
2
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
3
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
4
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
5
|
+
export async function authClientCredentialsList(argv) {
|
|
6
|
+
const { flags } = parseCommand(argv);
|
|
7
|
+
const projectKey = await selectedProject(flags);
|
|
8
|
+
const result = await blocksRequest("/iam/v4/auth/client-credentials", {
|
|
9
|
+
impersonatedProjectAuth: true,
|
|
10
|
+
...requestContext(flags),
|
|
11
|
+
projectTenantId: projectKey
|
|
12
|
+
});
|
|
13
|
+
writeOutput(result, flags);
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authClientCredentialsSave(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { booleanFlag, optionalBooleanFlag, optionalIntegerFlag, stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { confirmMutation } from "../../../lib/confirm.js";
|
|
4
|
+
import { compact, jsonBodyFlag, listFlag } from "../../../lib/json-flag.js";
|
|
5
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
6
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
7
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
8
|
+
export async function authClientCredentialsSave(argv) {
|
|
9
|
+
const { flags } = parseCommand(argv);
|
|
10
|
+
const body = {
|
|
11
|
+
...(await jsonBodyFlag(flags)),
|
|
12
|
+
...compact({
|
|
13
|
+
accessTokenValidForNumberMinutes: optionalIntegerFlag(flags, "access-token-valid-minutes"),
|
|
14
|
+
isActive: optionalBooleanFlag(flags, "active"),
|
|
15
|
+
itemId: stringFlag(flags, "item-id") || undefined,
|
|
16
|
+
name: stringFlag(flags, "name") || undefined,
|
|
17
|
+
permissions: listFlag(flags, "permissions"),
|
|
18
|
+
roles: listFlag(flags, "roles")
|
|
19
|
+
})
|
|
20
|
+
};
|
|
21
|
+
if (!body.name && !body.itemId)
|
|
22
|
+
throw new Error("Provide --name (create) or --item-id (update), or set them in --body/--file.");
|
|
23
|
+
if (booleanFlag(flags, "dry-run")) {
|
|
24
|
+
writeOutput({ dryRun: true, endpoint: "/iam/v4/auth/client-credentials", request: redactSecret(body) }, flags);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
await confirmMutation(flags, `Save client credential '${body.name ?? body.itemId}'. The response's clientSecret is shown once.`);
|
|
28
|
+
const projectKey = await selectedProject(flags);
|
|
29
|
+
const result = await blocksRequest("/iam/v4/auth/client-credentials", {
|
|
30
|
+
body,
|
|
31
|
+
impersonatedProjectAuth: true,
|
|
32
|
+
...requestContext(flags),
|
|
33
|
+
projectTenantId: projectKey
|
|
34
|
+
});
|
|
35
|
+
writeOutput(result, flags);
|
|
36
|
+
}
|
|
37
|
+
function redactSecret(body) {
|
|
38
|
+
if (!body.clientSecret)
|
|
39
|
+
return body;
|
|
40
|
+
return { ...body, clientSecret: "***" };
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authConfigGet(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
2
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
3
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
4
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
5
|
+
export async function authConfigGet(argv) {
|
|
6
|
+
const { flags } = parseCommand(argv);
|
|
7
|
+
const projectKey = await selectedProject(flags);
|
|
8
|
+
const result = await blocksRequest("/iam/v4/auth/config", {
|
|
9
|
+
impersonatedProjectAuth: true,
|
|
10
|
+
...requestContext(flags),
|
|
11
|
+
projectTenantId: projectKey
|
|
12
|
+
});
|
|
13
|
+
writeOutput(result, flags);
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authConfigSave(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { booleanFlag, optionalIntegerFlag, stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { confirmMutation } from "../../../lib/confirm.js";
|
|
4
|
+
import { compact, jsonBodyFlag } from "../../../lib/json-flag.js";
|
|
5
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
6
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
7
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
8
|
+
export async function authConfigSave(argv) {
|
|
9
|
+
const { flags } = parseCommand(argv);
|
|
10
|
+
const body = {
|
|
11
|
+
...(await jsonBodyFlag(flags)),
|
|
12
|
+
...compact({
|
|
13
|
+
absoluteRefreshTokenValidForNumberMinutes: optionalIntegerFlag(flags, "absolute-refresh-token-minutes"),
|
|
14
|
+
accessTokenValidForNumberMinutes: optionalIntegerFlag(flags, "access-token-minutes"),
|
|
15
|
+
accountLockDurationInMinutes: optionalIntegerFlag(flags, "account-lock-duration-minutes"),
|
|
16
|
+
getNumberOfWrongAttemptsToLockTheAccount: optionalIntegerFlag(flags, "wrong-attempts-to-lock"),
|
|
17
|
+
isOidcEnabled: booleanFlag(flags, "oidc-enabled") || undefined,
|
|
18
|
+
logoutOnPasswordChange: booleanFlag(flags, "logout-on-password-change") || undefined,
|
|
19
|
+
passwordStrengthCheckerRegex: stringFlag(flags, "password-strength-regex") || undefined,
|
|
20
|
+
refreshTokenValidForNumberMinutes: optionalIntegerFlag(flags, "refresh-token-minutes"),
|
|
21
|
+
rememberMeRefreshTokenValidForNumberMinutes: optionalIntegerFlag(flags, "remember-me-refresh-token-minutes")
|
|
22
|
+
})
|
|
23
|
+
};
|
|
24
|
+
if (booleanFlag(flags, "dry-run")) {
|
|
25
|
+
writeOutput({ dryRun: true, endpoint: "/iam/v4/auth/config", request: body }, flags);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
await confirmMutation(flags, "Save AuthController configuration for the selected project.");
|
|
29
|
+
const projectKey = await selectedProject(flags);
|
|
30
|
+
const result = await blocksRequest("/iam/v4/auth/config", {
|
|
31
|
+
body,
|
|
32
|
+
impersonatedProjectAuth: true,
|
|
33
|
+
...requestContext(flags),
|
|
34
|
+
projectTenantId: projectKey
|
|
35
|
+
});
|
|
36
|
+
writeOutput(result, flags);
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authIdpCreate(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { booleanFlag, stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { confirmMutation } from "../../../lib/confirm.js";
|
|
4
|
+
import { compact, jsonBodyFlag, listFlag } from "../../../lib/json-flag.js";
|
|
5
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
6
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
7
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
8
|
+
export async function authIdpCreate(argv) {
|
|
9
|
+
const { flags } = parseCommand(argv);
|
|
10
|
+
const body = {
|
|
11
|
+
...(await jsonBodyFlag(flags)),
|
|
12
|
+
...compact({
|
|
13
|
+
clientId: stringFlag(flags, "client-id") || undefined,
|
|
14
|
+
clientSecret: stringFlag(flags, "client-secret") || undefined,
|
|
15
|
+
displayName: stringFlag(flags, "display-name") || undefined,
|
|
16
|
+
isActive: booleanFlag(flags, "active") || undefined,
|
|
17
|
+
issuer: stringFlag(flags, "issuer") || undefined,
|
|
18
|
+
protocol: stringFlag(flags, "protocol") || undefined,
|
|
19
|
+
provider: stringFlag(flags, "provider") || undefined,
|
|
20
|
+
providerType: stringFlag(flags, "provider-type") || undefined,
|
|
21
|
+
redirectUris: listFlag(flags, "redirect-uris"),
|
|
22
|
+
scope: stringFlag(flags, "scope") || undefined
|
|
23
|
+
})
|
|
24
|
+
};
|
|
25
|
+
if (!body.provider || !body.providerType || !body.protocol || !body.clientId) {
|
|
26
|
+
throw new Error("Provide --provider, --provider-type, --protocol and --client-id (or set them in --body/--file).");
|
|
27
|
+
}
|
|
28
|
+
if (booleanFlag(flags, "dry-run")) {
|
|
29
|
+
writeOutput({ dryRun: true, endpoint: "/iam/v4/auth/identity-providers", request: redactSecret(body) }, flags);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await confirmMutation(flags, `Create identity provider '${body.provider}' (${body.providerType}).`);
|
|
33
|
+
const projectKey = await selectedProject(flags);
|
|
34
|
+
const result = await blocksRequest("/iam/v4/auth/identity-providers", {
|
|
35
|
+
body,
|
|
36
|
+
impersonatedProjectAuth: true,
|
|
37
|
+
...requestContext(flags),
|
|
38
|
+
projectTenantId: projectKey
|
|
39
|
+
});
|
|
40
|
+
writeOutput(result, flags);
|
|
41
|
+
}
|
|
42
|
+
function redactSecret(body) {
|
|
43
|
+
if (!body.clientSecret)
|
|
44
|
+
return body;
|
|
45
|
+
return { ...body, clientSecret: "***" };
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authIdpDelete(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { booleanFlag, stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { confirmMutation } from "../../../lib/confirm.js";
|
|
4
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
5
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
6
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
7
|
+
export async function authIdpDelete(argv) {
|
|
8
|
+
const { args, flags } = parseCommand(argv);
|
|
9
|
+
const id = args[0] || stringFlag(flags, "id", { required: true });
|
|
10
|
+
if (booleanFlag(flags, "dry-run")) {
|
|
11
|
+
writeOutput({ dryRun: true, endpoint: `/iam/v4/auth/identity-providers/${id}` }, flags);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
await confirmMutation(flags, `Delete identity provider '${id}'. This also removes its OIDC client and is irreversible.`);
|
|
15
|
+
const projectKey = await selectedProject(flags);
|
|
16
|
+
const result = await blocksRequest(`/iam/v4/auth/identity-providers/${encodeURIComponent(id)}`, {
|
|
17
|
+
impersonatedProjectAuth: true,
|
|
18
|
+
method: "DELETE",
|
|
19
|
+
...requestContext(flags),
|
|
20
|
+
projectTenantId: projectKey
|
|
21
|
+
});
|
|
22
|
+
writeOutput(result, flags);
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authIdpGet(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
4
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
5
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
6
|
+
export async function authIdpGet(argv) {
|
|
7
|
+
const { args, flags } = parseCommand(argv);
|
|
8
|
+
const id = args[0] || stringFlag(flags, "id", { required: true });
|
|
9
|
+
const projectKey = await selectedProject(flags);
|
|
10
|
+
const result = await blocksRequest(`/iam/v4/auth/identity-providers/${encodeURIComponent(id)}`, {
|
|
11
|
+
impersonatedProjectAuth: true,
|
|
12
|
+
...requestContext(flags),
|
|
13
|
+
projectTenantId: projectKey
|
|
14
|
+
});
|
|
15
|
+
writeOutput(result, flags);
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authIdpList(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
2
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
3
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
4
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
5
|
+
export async function authIdpList(argv) {
|
|
6
|
+
const { flags } = parseCommand(argv);
|
|
7
|
+
const projectKey = await selectedProject(flags);
|
|
8
|
+
const result = await blocksRequest("/iam/v4/auth/identity-providers", {
|
|
9
|
+
impersonatedProjectAuth: true,
|
|
10
|
+
...requestContext(flags),
|
|
11
|
+
projectTenantId: projectKey
|
|
12
|
+
});
|
|
13
|
+
writeOutput(result, flags);
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authIdpStatus(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { booleanFlag, stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { confirmMutation } from "../../../lib/confirm.js";
|
|
4
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
5
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
6
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
7
|
+
export async function authIdpStatus(argv) {
|
|
8
|
+
const { args, flags } = parseCommand(argv);
|
|
9
|
+
const id = args[0] || stringFlag(flags, "id", { required: true });
|
|
10
|
+
if (!("active" in flags))
|
|
11
|
+
throw new Error("Provide --active or --active=false.");
|
|
12
|
+
const isActive = booleanFlag(flags, "active");
|
|
13
|
+
if (booleanFlag(flags, "dry-run")) {
|
|
14
|
+
writeOutput({ dryRun: true, endpoint: `/iam/v4/auth/identity-providers/${id}/status`, request: { isActive } }, flags);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
await confirmMutation(flags, `${isActive ? "Enable" : "Disable"} identity provider '${id}'.`);
|
|
18
|
+
const projectKey = await selectedProject(flags);
|
|
19
|
+
const result = await blocksRequest(`/iam/v4/auth/identity-providers/${encodeURIComponent(id)}/status`, {
|
|
20
|
+
body: { isActive },
|
|
21
|
+
impersonatedProjectAuth: true,
|
|
22
|
+
method: "PATCH",
|
|
23
|
+
...requestContext(flags),
|
|
24
|
+
projectTenantId: projectKey
|
|
25
|
+
});
|
|
26
|
+
writeOutput(result, flags);
|
|
27
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider, providerType, protocol and clientId are immutable on this endpoint --
|
|
3
|
+
* IAM requires them to echo the existing value when supplied, so only pass them
|
|
4
|
+
* via --provider/--provider-type/--protocol/--client-id if you're re-sending the
|
|
5
|
+
* current configuration alongside other field changes.
|
|
6
|
+
*/
|
|
7
|
+
export declare function authIdpUpdate(argv: string[]): Promise<void>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { booleanFlag, stringFlag } from "../../../lib/args.js";
|
|
2
|
+
import { blocksRequest } from "../../../lib/api.js";
|
|
3
|
+
import { confirmMutation } from "../../../lib/confirm.js";
|
|
4
|
+
import { compact, jsonBodyFlag, listFlag } from "../../../lib/json-flag.js";
|
|
5
|
+
import { writeOutput } from "../../../lib/output.js";
|
|
6
|
+
import { requestContext } from "../../../lib/request-context.js";
|
|
7
|
+
import { parseCommand, selectedProject } from "../../../lib/workspace.js";
|
|
8
|
+
/**
|
|
9
|
+
* Provider, providerType, protocol and clientId are immutable on this endpoint --
|
|
10
|
+
* IAM requires them to echo the existing value when supplied, so only pass them
|
|
11
|
+
* via --provider/--provider-type/--protocol/--client-id if you're re-sending the
|
|
12
|
+
* current configuration alongside other field changes.
|
|
13
|
+
*/
|
|
14
|
+
export async function authIdpUpdate(argv) {
|
|
15
|
+
const { args, flags } = parseCommand(argv);
|
|
16
|
+
const id = args[0] || stringFlag(flags, "id", { required: true });
|
|
17
|
+
const body = {
|
|
18
|
+
...(await jsonBodyFlag(flags)),
|
|
19
|
+
...compact({
|
|
20
|
+
clientId: stringFlag(flags, "client-id") || undefined,
|
|
21
|
+
displayName: stringFlag(flags, "display-name") || undefined,
|
|
22
|
+
isActive: booleanFlag(flags, "active") || undefined,
|
|
23
|
+
issuer: stringFlag(flags, "issuer") || undefined,
|
|
24
|
+
protocol: stringFlag(flags, "protocol") || undefined,
|
|
25
|
+
provider: stringFlag(flags, "provider") || undefined,
|
|
26
|
+
providerType: stringFlag(flags, "provider-type") || undefined,
|
|
27
|
+
redirectUris: listFlag(flags, "redirect-uris"),
|
|
28
|
+
scope: stringFlag(flags, "scope") || undefined
|
|
29
|
+
})
|
|
30
|
+
};
|
|
31
|
+
if (booleanFlag(flags, "dry-run")) {
|
|
32
|
+
writeOutput({ dryRun: true, endpoint: `/iam/v4/auth/identity-providers/${id}`, request: body }, flags);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
await confirmMutation(flags, `Update identity provider '${id}'.`);
|
|
36
|
+
const projectKey = await selectedProject(flags);
|
|
37
|
+
const result = await blocksRequest(`/iam/v4/auth/identity-providers/${encodeURIComponent(id)}`, {
|
|
38
|
+
body,
|
|
39
|
+
impersonatedProjectAuth: true,
|
|
40
|
+
method: "PUT",
|
|
41
|
+
...requestContext(flags),
|
|
42
|
+
projectTenantId: projectKey
|
|
43
|
+
});
|
|
44
|
+
writeOutput(result, flags);
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function authOidcClientsDelete(argv: string[]): Promise<void>;
|