ask-cli
Version:
Alexa Skills Kit (ASK) Command Line Interfaces
416 lines (397 loc) • 13.5 kB
JavaScript
module.exports.APPLICATION_NAME = 'ask-cli';
module.exports.NPM_REGISTRY_URL_BASE = 'http://registry.npmjs.org';
module.exports.METRICS = {
ENDPOINT: '', // TODO add the official endpoint when we have it
NEW_USER_LENGTH_DAYS: 3
};
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.HOSTED_SKILL = {
DEFAULT_SKILL_NAME: 'Hello World Skill',
DEFAULT_RUNTIME: {
NodeJS: 'NODE_10_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: {
'en-US': {
name: ''
}
}
},
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'
},
GIT_HOOKS_TEMPLATES: {
PRE_PUSH: {
URL: 'https://ask-cli-static-content.s3-us-west-2.amazonaws.com/git-hooks-templates/pre-push'
}
}
};
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_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
}
},
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'
},
SKILL_CODE: {
CODE: 'code', // TODO ; replaced with LAMBDA
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'
}
};
module.exports.TEMPLATES = {
TEMPLATE_BRANCH_NAME: 'ask-cli-x',
LANGUAGE_MAP: {
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'
}
}
};
module.exports.AWS_SKILL_INFRASTRUCTURE_DEFAULT_REGION = 'us-east-1';
module.exports.ALEXA = {
REGION: {
DEFAULT: 'default',
NA: 'NA',
EU: 'EU',
FE: 'FE'
}
};
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/AWSLambdaFullAccess'
}
},
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.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',
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';
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_SCOPES: `${SCOPES_SKILLS_READWRITE} ${SCOPES_MODELS_READWRITE} ${SCOPES_SKILLS_TEST} ${SCOPES_CATALOG_READ}`
+ ` ${SCOPES_CATALOG_READWRITE} ${SCOPES_SUBSCRIPTIONS}`,
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'
};