UNPKG

ask-cli-x

Version:

Alexa Skills Kit (ASK) Command Line Interfaces

512 lines (511 loc) 16.7 kB
"use strict"; const path = require("path"); module.exports.APPLICATION_NAME = "ask-cli"; module.exports.NPM_REGISTRY_URL_BASE = "http://registry.npmjs.org"; module.exports.METRICS = { ENDPOINT: "https://client-telemetry.amazonalexa.com", }; module.exports.DEPLOYER_TYPE = { HOSTED: { OPTION_NAME: "Alexa-hosted skills", NAME: "@ask-cli/hosted-skill-deployer", DESCRIPTION: "Host your skill code by Alexa (free).", }, CFN: { OPTION_NAME: "AWS with CloudFormation", NAME: "@ask-cli/cfn-deployer", DESCRIPTION: "Host your skill code with AWS services and provision with AWS CloudFormation (requires AWS account)", }, LAMBDA: { OPTION_NAME: "AWS Lambda", NAME: "@ask-cli/lambda-deployer", DESCRIPTION: "Host your skill code on AWS Lambda (requires AWS account).", }, }; module.exports.DEPLOY_TARGET = { SKILL_METADATA: "skill-metadata", SKILL_INFRASTRUCTURE: "skill-infrastructure", }; module.exports.HOSTED_SKILL = { DEFAULT_SKILL_NAME: "Hello World Skill", LOCALES: [ "de-DE", "en-AU", "en-CA", "en-GB", "en-IN", "en-US", "es-ES", "es-MX", "es-US", "fr-CA", "fr-FR", "hi-IN", "it-IT", "ja-JP", "pt-BR", ], REGIONS: { "us-east-1": "US_EAST_1", "us-west-2": "US_WEST_2", "eu-west-1": "EU_WEST_1", }, DEFAULT_RUNTIME: { NodeJS: "NODE_12_X", Python: "PYTHON_3_7", }, SIGNIN_PATH: "/ap/signin", PERMISSION_ENUM: { NEW_SKILL: "newSkill", }, RESOURCES: { MANIFEST: "manifest", INTERACTION_MODEL: "interactionModel", PROVISIONING: "hostedSkillProvisioning", DEPLOYMENT: "hostedSkillDeployment", }, MANIFEST: { publishingInformation: { locales: {}, }, apis: { custom: {}, }, }, PERMISSION_CHECK_RESULT: { NEW_USER_REGISTRATION_REQUIRED: "NEW_USER_REGISTRATION_REQUIRED", RATE_EXCEEDED: "RATE_EXCEEDED", ALLOWED: "ALLOWED", }, MANIFEST_STATUS: { SUCCESS: "SUCCEEDED", FAILURE: "FAILED", IN_PROGRESS: "IN_PROGRESS", }, PROVISIONING_STATUS: { SUCCESS: "SUCCEEDED", FAILURE: "FAILED", IN_PROGRESS: "IN_PROGRESS", }, INTERACTION_MODEL_STATUS: { SUCCESS: "SUCCEEDED", FAILURE: "FAILED", IN_PROGRESS: "IN_PROGRESS", }, HIDDEN_GIT_FOLDER: { NAME: ".git", HOOKS: { NAME: "hooks", PRE_PUSH: "pre-push", }, }, RUN: { INVOCATION_INFO: { node: { skillCodeFolderName: "lambda", handlerName: "handler", skillFileName: "index" }, python: { skillCodeFolderName: "lambda", handlerName: "lambda_handler", skillFileName: "lambda_function", }, }, }, }; module.exports.SKILL = { RESOURCES: { MANIFEST: "manifest", INTERACTION_MODEL: "interactionModel", }, STAGE: { DEVELOPMENT: "development", LIVE: "live", CERTIFICATION: "certification", }, SKILL_STATUS: { SUCCEEDED: "SUCCEEDED", FAILED: "FAILED", IN_PROGRESS: "IN_PROGRESS", }, PACKAGE_STATUS: { SUCCEEDED: "SUCCEEDED", FAILED: "FAILED", IN_PROGRESS: "IN_PROGRESS", ROLLBACK_SUCCEEDED: "ROLLBACK_SUCCEEDED", ROLLBACK_FAILED: "ROLLBACK_FAILED", ROLLBACK_IN_PROGRESS: "ROLLBACK_IN_PROGRESS", }, VALIDATION_STATUS: { SUCCESS: "SUCCESSFUL", FAILURE: "FAILED", IN_PROGRESS: "IN_PROGRESS", }, SIMULATION_STATUS: { SUCCESS: "SUCCESSFUL", FAILURE: "FAILED", IN_PROGRESS: "IN_PROGRESS", }, DOMAIN: { CAN_ENABLE_DOMAIN_LIST: ["custom", "music"], }, }; module.exports.CONFIGURATION = { JSON_DISPLAY_INDENT: 2, OPEN_BROWSER_DELAY: 1000, RETRY: { GET_PACKAGE_IMPORT_STATUS: { MAX_RETRY: 50, MIN_TIME_OUT: 2000, FACTOR: 1.1, }, GET_PACKAGE_IMPORT_STATUS_FOR_AC: { MAX_RETRY: 75, MIN_TIME_OUT: 2000, FACTOR: 1.12, }, GET_PACKAGE_EXPORT_STATUS: { MAX_RETRY: 30, MIN_TIME_OUT: 2000, FACTOR: 1.1, }, GET_SIMULATE_STATUS: { MAX_RETRY: 20, MIN_TIME_OUT: 2000, FACTOR: 1.2, }, VALIDATE_SKILL_STATUS: { MAX_RETRY: 30, MIN_TIME_OUT: 1000, FACTOR: 1.2, }, CREATE_LAMBDA_FUNCTION: { BASE: 5000, FACTOR: 1.5, MAXRETRY: 3, }, WAIT_LAMBDA_FUNCTION: { BASE: 1000, FACTOR: 1.2, MAXRETRY: 10, }, MAX_RETRY_INTERVAL: 300000, }, S3: { MULTIPART_UPLOAD: { DEFAULT_PART_SIZE: 8 * 1024 * 1024, MAX_PART_COUNT: 1000, MIN_PART_SIZE: 5 * 1024 * 1024, MIN_PART_SIZE_DISPLAY: "5MB", CONCURRENCY: 10, }, VERSIONING: { NOT_FOUND_RETRY_DELAY_MS: 1000, }, }, }; module.exports.FILE_PATH = { HIDDEN_ASK_FOLDER: ".ask", ASK_STATES_JSON_CONFIG: "ask-states.json", ASK_RESOURCES_JSON_CONFIG: "ask-resources.json", SKILL_PACKAGE: { PACKAGE: "skill-package", MANIFEST: "skill.json", INTERACTION_MODEL: "interactionModels", }, SKILL_CODE: { CODE: "code", LAMBDA: "lambda", }, SKILL_INFRASTRUCTURE: { INFRASTRUCTURE: "infrastructure", }, LEGACY_PATH: ".legacy", AWS: { HIDDEN_FOLDER: ".aws", CREDENTIAL_FILE: "credentials", }, ASK: { HIDDEN_FOLDER: ".ask", PROFILE_FILE: "cli_config", METRIC_FILE: "cli_metric", AUTH_INFO: "auth_info", SCRIPTS_FOLDER: { NAME: "scripts", ASK_PRE_PUSH: "ask-pre-push", GIT_CREDENTIAL_HELPER: "git-credential-helper", }, }, }; module.exports.TEMPLATES = { TEMPLATE_BRANCH_NAME: "ask-cli-x", PROJECT_BY_CODE_LANGUAGE: { NodeJS: { TEMPLATE_INDEX: "https://ask-cli-static-content.s3-us-west-2.amazonaws.com/skill-templates/nodejs-templates.json", }, Python: { TEMPLATE_INDEX: "https://ask-cli-static-content.s3-us-west-2.amazonaws.com/skill-templates/python-templates.json", }, Java: { TEMPLATE_INDEX: "https://ask-cli-static-content.s3-us-west-2.amazonaws.com/skill-templates/java-templates.json", }, }, INTERACTION_MODEL_MAP: "https://ask-cli-static-content.s3-us-west-2.amazonaws.com/interaction-model-templates/interaction-model-templates.json", }; module.exports.AWS_SKILL_INFRASTRUCTURE_DEFAULT_REGION = "us-east-1"; module.exports.ALEXA = { REGION: { DEFAULT: "default", NA: "NA", EU: "EU", FE: "FE", }, LANGUAGES: { "en-AU": "en-AU", "de-DE": "de-DE", "en-CA": "en-CA", "en-GB": "en-GB", "en-IN": "en-IN", "en-US": "en-US", "es-ES": "es-ES", "es-MX": "es-MX", "es-US": "es-US", "fr-CA": "fr-CA", "fr-FR": "fr-FR", "hi-IN": "hi-IN", "it-IT": "it-IT", "ja-JP": "ja-JP", "pt-BR": "pt-BR", }, }; module.exports.AWS = { IAM: { USER: { NEW_USER_BASE_URL: "https://console.aws.amazon.com/iam/home?region=undefined#/users$new?", POLICY_ARN: { IAM_FULL: "arn:aws:iam::aws:policy/IAMFullAccess", CFN_FULL: "arn:aws:iam::aws:policy/AWSCloudFormationFullAccess", S3_FULL: "arn:aws:iam::aws:policy/AmazonS3FullAccess", LAMBDA_FULL: "arn:aws:iam::aws:policy/AWSLambda_FullAccess", CLOUD_WATCH_FULL: "arn:aws:iam::aws:policy/CloudWatchLogsFullAccess", }, }, ROLE: { LAMBDA_BASIC_ROLE: { POLICY_ARN: "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", POLICY: { Version: "2012-10-17", Statement: [ { Effect: "Allow", Principal: { Service: "lambda.amazonaws.com", }, Action: "sts:AssumeRole", }, ], }, }, }, }, }; module.exports.LAMBDA = { FUNCTION_STATE: { ACTIVE: "Active", INACTIVE: "Inactive", PENDING: "Pending", FAILED: "Failed", }, LAST_UPDATE_STATUS: { SUCCESSFUL: "Successful", FAILED: "Failed", IN_PROGRESS: "InProgress", }, }; module.exports.PLACEHOLDER = { ENVIRONMENT_VAR: { AWS_CREDENTIALS: "__AWS_CREDENTIALS_IN_ENVIRONMENT_VARIABLE__", PROFILE_NAME: "__ENVIRONMENT_ASK_PROFILE__", }, }; module.exports.SMAPI = { ENDPOINT: "https://api.amazonalexa.com", VERSION: { V0: "v0", V1: "v1", V2: "v2", }, API_NAME: { // Skill CREATE_SKILL: "create-skill", DELETE_SKILL: "delete-skill", LIST_SKILLS: "list-skills", GET_SKILL_STATUS: "get-skill-status", SUBMIT: "submit", WITHDRAW: "withdraw", ENABLE_SKILL: "enable-skill", DISABLE_SKILL: "disable-skill", GET_SKILL_ENABLEMENT: "get-skill-enablement", GET_SKILL_CREDENTIALS: "get-skill-credentials", LIST_VENDORS: "list-vendors", GET_METRICS: "get-metrics", // Evaluations NLU_PROFILE: "nlu-profile", // Utterance transcripts INTENT_REQUEST_HISTORY: "intent-requests-history", LIST_CERTIFICATIONS: "list-certifications", GET_CERTIFICATION: "get-certification", // Manifest GET_MANIFEST: "get-manifest", UPDATE_MANIFEST: "update-manifest", // Model GET_INTERACTION_MODEL: "get-interaction-model", SET_INTERACTION_MODEL: "set-interaction-model", HEAD_INTERACTION_MODEL: "head-interaction-model", GET_UTTERANCE_DATA: "get-utterance-data", LIST_INTERACTION_MODEL_VERSIONS: "list-interaction-model-versions", // ISP CREATE_ISP: "create-isp", GET_ISP: "get-isp", UPDATE_ISP: "update-isp", ASSOCIATE_ISP: "associate-isp", DISASSOCIATE_ISP: "disassociate-isp", LIST_ISP_FOR_SKILL: "list-isp-for-skill", LIST_ISP_FOR_VENDOR: "list-isp-for-vendor", LIST_SKILLS_FOR_ISP: "list-skills-for-isp", DELETE_ISP: "delete-isp", RESET_ISP_ENTITLEMENT: "reset-isp-entitlement", // Skill Package CREATE_UPLOAD: "create-upload", IMPORT_PACKAGE: "import-package", GET_IMPORT_STATUS: "get-import-status", EXPORT_PACKAGE: "export-package", GET_EXPORT_STATUS: "get-export-status", // Account Linking SET_ACCOUNT_LINKING: "set-account-linking", GET_ACCOUNT_LINKING: "get-account-linking", DELETE_ACCOUNT_LINKING: "delete-account-linking", // Testing SIMULATE_SKILL: "simulate-skill", INVOKE_SKILL: "invoke-skill", GET_SIMULATION: "get-simulation", MODIFY_LAST_TURN: "modify-last-turn", VALIDATE_SKILL: "validate-skill", GET_VALIDATION: "get-validation", // Beta Test CREATE_BETA_TEST: "create-beta-test", UPDATE_BETA_TEST: "update-beta-test", GET_BETA_TEST: "get-beta-test", START_BETA_TEST: "start-beta-test", END_BETA_TEST: "end-beta-test", LIST_BETA_TESTERS: "list-beta-testers", ADD_BETA_TESTERS: "add-beta-testers", REMOVE_BETA_TESTERS: "remove-beta-testers", SEND_REMINDER_TO_BETA_TESTERS: "send-reminder-to-beta-testers", REQUEST_FEEDBACK_FROM_BETA_TESTERS: "request-feedback-from-beta-testers", // Private Skill ADD_PRIVATE_DISTRIBUTION_ACCOUNT: "add-private-distribution-account", LIST_PRIVATE_DISTRIBUTION_ACCOUNTS: "list-private-distribution-accounts", DELETE_PRIVATE_DISTRIBUTION_ACCOUNT: "delete-private-distribution-account", // Catalog CREATE_CATALOG: "create-catalog", GET_CATALOG: "get-catalog", LIST_CATALOGS: "list-catalogs", UPLOAD_CATALOG: "create-catalog-upload", GET_CATALOG_UPLOAD: "get-catalog-upload", LIST_CATALOG_UPLOADS: "list-catalog-uploads", ASSOCIATE_CATALOG_WITH_SKILL: "associate-catalog-with-skill", COMPLET_CATALOG_UPLOAD: "complete-catalog-upload", // Hosted Skills CREATE_HOSTED_SKILL: "create-alexa-hosted-skill", GET_HOSTED_SKILLS_META_DATA: "get-alexa-hosted-skill", GET_GIT_CREDENTIALS: "get-git-credentials", GET_HOSTED_SKILLS_PERMISSION: "get-alexa-hosted-skill-permission", // Task GET_TASK: "get-task", SEARCH_TASK: "search-task", }, DEFAULT_MAX_RESULT_PER_PAGE: 50, }; module.exports.HTTP_REQUEST = { VERB: { GET: "GET", PUT: "PUT", POST: "POST", DELETE: "DELETE", HEAD: "HEAD", }, STATUS_CODE: { OK: 200, ACCEPTED: 202, NO_CONTENT: 204, SEE_OTHER: 303, BAD_REQUEST: 400, UNAUTHORIZED: 401, FORBIDDEN: 403, NOT_FOUND: 404, PRECONDITION_FAILED: 412, TOO_MANY_REQUESTS: 429, INTERNAL_SERVER_ERROR: 500, }, }; const SCOPES_SKILLS_READWRITE = "alexa::ask:skills:readwrite"; const SCOPES_MODELS_READWRITE = "alexa::ask:models:readwrite"; const SCOPES_SKILLS_TEST = "alexa::ask:skills:test"; const SCOPES_CATALOG_READ = "alexa::ask:catalogs:read"; const SCOPES_CATALOG_READWRITE = "alexa::ask:catalogs:readwrite"; const SCOPES_SUBSCRIPTIONS = "alexa::ask:subscriptions"; const SCOPES_SKILLS_DEBUG = "alexa::ask:skills:debug"; const DEFAULT_PUBLIC_SCOPES = `${SCOPES_SKILLS_READWRITE} ${SCOPES_MODELS_READWRITE} ${SCOPES_SKILLS_TEST} ${SCOPES_CATALOG_READ}` + ` ${SCOPES_CATALOG_READWRITE} ${SCOPES_SUBSCRIPTIONS}`; module.exports.LWA = { S3_RESPONSE_PARSER_URL: "https://ask-cli-static-content.s3-us-west-2.amazonaws.com/html/ask-cli-no-browser.html", DEFAULT_STATE: "Ask-SkillModel-ReadWrite", DEFAULT_PUBLIC_SCOPES, DEFAULT_SCOPES: `${DEFAULT_PUBLIC_SCOPES} ${SCOPES_SKILLS_DEBUG}`, SIGNIN_URL: "https://www.amazon.com/ap/signin", // Below are the details for the ask-cli's default LWA client which is used internally if another client is not provided by the users. // Use of this client outside of the CLI is unauthorized and unsupported by Amazon. // To create an LWA client for other use, please follow the documentation at https://developer.amazon.com/docs/login-with-amazon/register-web.html CLI_INTERNAL_ONLY_LWA_CLIENT: { CLIENT_ID: "amzn1.application-oa2-client.aad322b5faab44b980c8f87f94fbac56", CLIENT_CONFIRMATION: "1642d8869b829dda3311d6c6539f3ead55192e3fc767b9071c888e60ef151cf9", }, DEFAULT_AUTHORIZE_HOST: "https://www.amazon.com", DEFAULT_AUTHORIZE_PATH: "/ap/oa", DEFAULT_TOKEN_HOST: "https://api.amazon.com", DEFAULT_TOKEN_PATH: "/auth/o2/token", LOCAL_PORT: 9090, }; module.exports.REGEX_VALIDATIONS = { PROFILE_NAME: /(^[a-zA-Z0-9-_]+$)(?!__ENVIRONMENT_ASK_PROFILE__)/g, }; module.exports.ASK_DEFAULT_PROFILE_NAME = "default"; module.exports.AWS_DEFAULT_PROFILE_NAME = "ask_cli_default"; module.exports.LOCALHOST_PORT = "9090"; module.exports.FILE_PERMISSION = { USER_READ_WRITE: "0600", }; module.exports.RUN = { DEFAULT_DEBUG_PORT: "5000", NODE: { SCRIPT_LOCATION: path.join("node_modules", "ask-sdk-local-debug", "dist", "LocalDebuggerInvoker.js"), }, PYTHON: { SCRIPT_LOCATION: path.join("ask_sdk_local_debug", "local_debugger_invoker.py"), }, }; module.exports.RUNTIME = { NODE: "node", PYTHON: "python", JAVA: "java", }; module.exports.COMPILER = { ASK_COMPILER: "ask-compiler", ASK_DECOMPILER: "ask-decompiler", ACDL_PATH: "conversations", TARGETDIR: "skill-package", MANIFEST: "skill.json", }; module.exports.DEPLOYMENT_TYPE = { ALEXA_CONVERSATIONS: "alexa-conversations", INTERACTION_MODEL: "interaction-model", }; module.exports.TEN_MEGA_BYTES = 1000 * 1000 * 10;